From 71841a5d95551ef1b09d2937b1febe5e88253ca4 Mon Sep 17 00:00:00 2001 From: Cris Ewing Date: Tue, 27 Nov 2012 07:44:53 -0800 Subject: [PATCH 001/114] Create gh-pages branch via GitHub --- index.html | 41 ++++++ javascripts/scale.fix.js | 17 +++ params.json | 1 + stylesheets/pygment_trac.css | 69 ++++++++++ stylesheets/styles.css | 255 +++++++++++++++++++++++++++++++++++ 5 files changed, 383 insertions(+) create mode 100644 index.html create mode 100644 javascripts/scale.fix.js create mode 100644 params.json create mode 100644 stylesheets/pygment_trac.css create mode 100644 stylesheets/styles.css diff --git a/index.html b/index.html new file mode 100644 index 00000000..747662b8 --- /dev/null +++ b/index.html @@ -0,0 +1,41 @@ + + + + + + Training.python web by cewing + + + + + + + +
+
+

Training.python web

+

Lecture and training materials for the 2013 Internet Programming with Python course from UW PCE

+ +

View the Project on GitHub cewing/training.python_web

+ + + +
+
+

Internet Programming with Python

+
+
+

This project is maintained by cewing

+

Hosted on GitHub Pages — Theme by orderedlist

+
+
+ + + + \ No newline at end of file diff --git a/javascripts/scale.fix.js b/javascripts/scale.fix.js new file mode 100644 index 00000000..87a40ca7 --- /dev/null +++ b/javascripts/scale.fix.js @@ -0,0 +1,17 @@ +var metas = document.getElementsByTagName('meta'); +var i; +if (navigator.userAgent.match(/iPhone/i)) { + for (i=0; i Date: Tue, 27 Nov 2012 07:52:28 -0800 Subject: [PATCH 002/114] does this work? --- index.rst | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 index.rst diff --git a/index.rst b/index.rst new file mode 100644 index 00000000..51eab14f --- /dev/null +++ b/index.rst @@ -0,0 +1,91 @@ +.. Internet Programming with Python documentation master file, created by + sphinx-quickstart on Sat Nov 3 13:22:19 2012. + +`UW Certificate Program in Python Programming +`_ + +================================ +Internet Programming with Python +================================ + +.. sidebar:: Table of Contents + + .. toctree:: + :maxdepth: 2 + + self + outline + +Winter Term, 2013 - (10 Sessions) + +Tuesdays, 6-9 pm, January 8 through March 10 + +Minutiae +-------- + +:Objectives: + + This course emphasizes distributed programs and web applications - how + they work and how to program them in Python. Students will explore the + underlying principles and their expression in Python libraries. Students + will learn contrasting approaches in creating applications: programming + with the low-level libraries versus using highly integrated frameworks. + All topics will be presented with a focus on solving real problems with + simple, pragmatic code. + + +:Prerequisites: + + Students should have previously completed `Programming in Python + `_ + or have an equivalent level of experience. Contact the instructor prior to + registering if not in the `certificate program + `_ + + +:Requirements: + + This course does not provide a computer laboratory. Students will be + required to have access to a computer in order to complete the coursework. + As in-class laboratories are an important part of the experience, students + should have a portable computer they can bring to each session. Networking + in the classroom is provided via WiFi. Students should be able to + configure their computers to connect to the network. + + +:Assessment: + + The course is graded Pass/Fail, based on satisfactory completion of + required programming assignments and classroom presentations. Attendance + is required; more than two unexcused absences will result in a Fail. + + +:Accommodation: + + The University of Washington is committed to providing access and + reasonable accommodation in its services, programs, activities, education + and employment for individuals with disabilities. For information or to + request disability accommodation contact: Disability Services Office: + 206.543.6450/V, 206.543.6452/TTY, 206.685.7264 (FAX), or e-mail at + dso@u.washington.edu. + + +References +---------- + +`Python 2.6.5 Documentation `_: +Complete documentation of the language. + +`Python 2.6.5 Quick Reference `_: +Dense and complete. Good for jogging your memeory, but don't start here. + +`Python Standard Library - Internet Protocols and Support +`_: All the supported internet +protocols as implemented in Python. + +`Python Module of the Week `_: A +fantastic reference for any module in python. Examples and usage are provided +throughout. + +`Weekly Lecture Presentations `_: Slides from the +classroom presentations. From bd1b3f7d42ae21f89ba5b0a2631ca345f00b0664 Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 27 Nov 2012 07:56:54 -0800 Subject: [PATCH 003/114] deleting auto-generated stuff --- index.html | 41 ------ index.rst | 91 ------------- javascripts/scale.fix.js | 17 --- params.json | 1 - stylesheets/pygment_trac.css | 69 ---------- stylesheets/styles.css | 255 ----------------------------------- 6 files changed, 474 deletions(-) delete mode 100644 index.html delete mode 100644 index.rst delete mode 100644 javascripts/scale.fix.js delete mode 100644 params.json delete mode 100644 stylesheets/pygment_trac.css delete mode 100644 stylesheets/styles.css diff --git a/index.html b/index.html deleted file mode 100644 index 747662b8..00000000 --- a/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - Training.python web by cewing - - - - - - - -
-
-

Training.python web

-

Lecture and training materials for the 2013 Internet Programming with Python course from UW PCE

- -

View the Project on GitHub cewing/training.python_web

- - - -
-
-

Internet Programming with Python

-
-
-

This project is maintained by cewing

-

Hosted on GitHub Pages — Theme by orderedlist

-
-
- - - - \ No newline at end of file diff --git a/index.rst b/index.rst deleted file mode 100644 index 51eab14f..00000000 --- a/index.rst +++ /dev/null @@ -1,91 +0,0 @@ -.. Internet Programming with Python documentation master file, created by - sphinx-quickstart on Sat Nov 3 13:22:19 2012. - -`UW Certificate Program in Python Programming -`_ - -================================ -Internet Programming with Python -================================ - -.. sidebar:: Table of Contents - - .. toctree:: - :maxdepth: 2 - - self - outline - -Winter Term, 2013 - (10 Sessions) - -Tuesdays, 6-9 pm, January 8 through March 10 - -Minutiae --------- - -:Objectives: - - This course emphasizes distributed programs and web applications - how - they work and how to program them in Python. Students will explore the - underlying principles and their expression in Python libraries. Students - will learn contrasting approaches in creating applications: programming - with the low-level libraries versus using highly integrated frameworks. - All topics will be presented with a focus on solving real problems with - simple, pragmatic code. - - -:Prerequisites: - - Students should have previously completed `Programming in Python - `_ - or have an equivalent level of experience. Contact the instructor prior to - registering if not in the `certificate program - `_ - - -:Requirements: - - This course does not provide a computer laboratory. Students will be - required to have access to a computer in order to complete the coursework. - As in-class laboratories are an important part of the experience, students - should have a portable computer they can bring to each session. Networking - in the classroom is provided via WiFi. Students should be able to - configure their computers to connect to the network. - - -:Assessment: - - The course is graded Pass/Fail, based on satisfactory completion of - required programming assignments and classroom presentations. Attendance - is required; more than two unexcused absences will result in a Fail. - - -:Accommodation: - - The University of Washington is committed to providing access and - reasonable accommodation in its services, programs, activities, education - and employment for individuals with disabilities. For information or to - request disability accommodation contact: Disability Services Office: - 206.543.6450/V, 206.543.6452/TTY, 206.685.7264 (FAX), or e-mail at - dso@u.washington.edu. - - -References ----------- - -`Python 2.6.5 Documentation `_: -Complete documentation of the language. - -`Python 2.6.5 Quick Reference `_: -Dense and complete. Good for jogging your memeory, but don't start here. - -`Python Standard Library - Internet Protocols and Support -`_: All the supported internet -protocols as implemented in Python. - -`Python Module of the Week `_: A -fantastic reference for any module in python. Examples and usage are provided -throughout. - -`Weekly Lecture Presentations `_: Slides from the -classroom presentations. diff --git a/javascripts/scale.fix.js b/javascripts/scale.fix.js deleted file mode 100644 index 87a40ca7..00000000 --- a/javascripts/scale.fix.js +++ /dev/null @@ -1,17 +0,0 @@ -var metas = document.getElementsByTagName('meta'); -var i; -if (navigator.userAgent.match(/iPhone/i)) { - for (i=0; i Date: Tue, 27 Nov 2012 07:58:44 -0800 Subject: [PATCH 004/114] replace autogenerated stuff with the sphinx generated html site --- .gitignore | 1 + _sources/index.txt | 100 +++ _sources/outline.txt | 163 +++++ _static/ajax-loader.gif | Bin 0 -> 673 bytes _static/basic.css | 540 ++++++++++++++ _static/comment-bright.png | Bin 0 -> 3500 bytes _static/comment-close.png | Bin 0 -> 3578 bytes _static/comment.png | Bin 0 -> 3445 bytes _static/default.css | 256 +++++++ _static/doctools.js | 247 +++++++ _static/down-pressed.png | Bin 0 -> 368 bytes _static/down.png | Bin 0 -> 363 bytes _static/file.png | Bin 0 -> 392 bytes _static/jquery.js | 154 ++++ _static/minus.png | Bin 0 -> 199 bytes _static/plus.png | Bin 0 -> 199 bytes _static/pygments.css | 62 ++ _static/searchtools.js | 560 ++++++++++++++ _static/sidebar.js | 151 ++++ _static/underscore.js | 23 + _static/up-pressed.png | Bin 0 -> 372 bytes _static/up.png | Bin 0 -> 363 bytes _static/websupport.js | 808 +++++++++++++++++++++ genindex.html | 95 +++ index.html | 199 +++++ objects.inv | Bin 0 -> 228 bytes outline.html | 260 +++++++ presentations/index.html | 48 ++ presentations/ui/default/blank.gif | Bin 0 -> 49 bytes presentations/ui/default/framing.css | 25 + presentations/ui/default/iepngfix.htc | 42 ++ presentations/ui/default/opera.css | 8 + presentations/ui/default/outline.css | 16 + presentations/ui/default/pretty.css | 120 +++ presentations/ui/default/print.css | 24 + presentations/ui/default/s5-core.css | 11 + presentations/ui/default/slides.css | 10 + presentations/ui/default/slides.js | 558 ++++++++++++++ presentations/ui/uw_pce_theme/blank.gif | Bin 0 -> 49 bytes presentations/ui/uw_pce_theme/framing.css | 25 + presentations/ui/uw_pce_theme/iepngfix.htc | 42 ++ presentations/ui/uw_pce_theme/opera.css | 8 + presentations/ui/uw_pce_theme/outline.css | 16 + presentations/ui/uw_pce_theme/pretty.css | 120 +++ presentations/ui/uw_pce_theme/print.css | 24 + presentations/ui/uw_pce_theme/s5-core.css | 11 + presentations/ui/uw_pce_theme/slides.css | 10 + presentations/ui/uw_pce_theme/slides.js | 558 ++++++++++++++ presentations/week1.html | 205 ++++++ presentations/week2.html | 44 ++ search.html | 99 +++ searchindex.js | 1 + 52 files changed, 5644 insertions(+) create mode 100644 .gitignore create mode 100644 _sources/index.txt create mode 100644 _sources/outline.txt create mode 100644 _static/ajax-loader.gif create mode 100644 _static/basic.css create mode 100644 _static/comment-bright.png create mode 100644 _static/comment-close.png create mode 100644 _static/comment.png create mode 100644 _static/default.css create mode 100644 _static/doctools.js create mode 100644 _static/down-pressed.png create mode 100644 _static/down.png create mode 100644 _static/file.png create mode 100644 _static/jquery.js create mode 100644 _static/minus.png create mode 100644 _static/plus.png create mode 100644 _static/pygments.css create mode 100644 _static/searchtools.js create mode 100644 _static/sidebar.js create mode 100644 _static/underscore.js create mode 100644 _static/up-pressed.png create mode 100644 _static/up.png create mode 100644 _static/websupport.js create mode 100644 genindex.html create mode 100644 index.html create mode 100644 objects.inv create mode 100644 outline.html create mode 100644 presentations/index.html create mode 100644 presentations/ui/default/blank.gif create mode 100644 presentations/ui/default/framing.css create mode 100644 presentations/ui/default/iepngfix.htc create mode 100644 presentations/ui/default/opera.css create mode 100644 presentations/ui/default/outline.css create mode 100644 presentations/ui/default/pretty.css create mode 100644 presentations/ui/default/print.css create mode 100644 presentations/ui/default/s5-core.css create mode 100644 presentations/ui/default/slides.css create mode 100644 presentations/ui/default/slides.js create mode 100644 presentations/ui/uw_pce_theme/blank.gif create mode 100644 presentations/ui/uw_pce_theme/framing.css create mode 100644 presentations/ui/uw_pce_theme/iepngfix.htc create mode 100644 presentations/ui/uw_pce_theme/opera.css create mode 100644 presentations/ui/uw_pce_theme/outline.css create mode 100644 presentations/ui/uw_pce_theme/pretty.css create mode 100644 presentations/ui/uw_pce_theme/print.css create mode 100644 presentations/ui/uw_pce_theme/s5-core.css create mode 100644 presentations/ui/uw_pce_theme/slides.css create mode 100644 presentations/ui/uw_pce_theme/slides.js create mode 100644 presentations/week1.html create mode 100644 presentations/week2.html create mode 100644 search.html create mode 100644 searchindex.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..106a1525 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.buildinfo diff --git a/_sources/index.txt b/_sources/index.txt new file mode 100644 index 00000000..51a92133 --- /dev/null +++ b/_sources/index.txt @@ -0,0 +1,100 @@ +.. Internet Programming with Python documentation master file, created by + sphinx-quickstart on Sat Nov 3 13:22:19 2012. + +`UW Certificate Program in Python Programming +`_ + +================================ +Internet Programming with Python +================================ + +.. sidebar:: Table of Contents + + .. toctree:: + :maxdepth: 2 + + self + outline + +Winter Term, 2013 - (10 Sessions) + +Tuesdays, 6-9 pm, January 8 through March 10 + +Minutiae +-------- + +:Objectives: + + This course emphasizes distributed programs and web applications - how + they work and how to program them in Python. Students will explore the + underlying principles and their expression in Python libraries. Students + will learn contrasting approaches in creating applications: programming + with the low-level libraries versus using highly integrated frameworks. + All topics will be presented with a focus on solving real problems with + simple, pragmatic code. + + +:Prerequisites: + + Students should have previously completed `Programming in Python + `_ + or have an equivalent level of experience. Contact the instructor prior to + registering if not in the `certificate program + `_ + + +:Requirements: + + This course does not provide a computer laboratory. Students will be + required to have access to a computer in order to complete the coursework. + As in-class laboratories are an important part of the experience, students + should have a portable computer they can bring to each session. Networking + in the classroom is provided via WiFi. Students should be able to + configure their computers to connect to the network. + + +:Assessment: + + The course is graded Pass/Fail, based on satisfactory completion of + required programming assignments and classroom presentations. Attendance + is required; more than two unexcused absences will result in a Fail. + + +:Accommodation: + + The University of Washington is committed to providing access and + reasonable accommodation in its services, programs, activities, education + and employment for individuals with disabilities. For information or to + request disability accommodation contact: Disability Services Office: + 206.543.6450/V, 206.543.6452/TTY, 206.685.7264 (FAX), or e-mail at + dso@u.washington.edu. + + +References +---------- + +`Python 2.6.5 Documentation `_: +Complete documentation of the language. + +`Python 2.6.5 Quick Reference `_: +Dense and complete. Good for jogging your memeory, but don't start here. + +`Python Standard Library - Internet Protocols and Support +`_: All the supported internet +protocols as implemented in Python. + +`Python Module of the Week `_: A +fantastic reference for any module in python. Examples and usage are provided +throughout. + +`Weekly Lecture Presentations `_: Slides from the +classroom presentations. + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/_sources/outline.txt b/_sources/outline.txt new file mode 100644 index 00000000..2ff01afe --- /dev/null +++ b/_sources/outline.txt @@ -0,0 +1,163 @@ +Course Outline +============== + +Each week will have in-class lectures, lab time, and lightning talks. There +will be recommended reading, additional reading for the curious, and an +assignment to be completed. + +Week 1 - Introduction and Sockets +--------------------------------- + +**Date**: Jan. 8, 2013 + +In this class, we will discuss the fundamental concepts and structures that +underly the internet and networked computing. We will learn about the TCP/IP +stack (Internet Protocol Suite) and gain insight into how that model is +manifested in real life. We will learn about sockets and how to use them to +communicate between processes on a single machine or across a network. + +Our class laboratory will focus on creating a small server-client program that +demonstrates the use of sockets. We will install the server on our Virtual +Machines, and accomplish our first networked communication. + +The class assignment will focus on extending our use of sockets to support a +more complex use-case. + +Reading +******* + +* `Wikipedia - Internet Protocol Suite + `_ +* `Kessler - TCP/IP (sections 1 and 2) + `_ +* `Wikipedia - Domain Name System + `_ +* `Wikipedia - Internet Sockets + `_ +* `RFC 5321 - SMTP (Appendix D only) + `_ + +References +********** + +* `Python Library - socket + `_ +* `Socket Programming How-to + `_ +* `Python Library - smtplib + `_ + +Further Reading +*************** + +* `Wikipedia - Berkeley socket interface + `_ +* `RFC 821 - SMTP (initial) `_ +* `RFC 5321 - SMTP (latest) `_ + +Bonus +***** + +`ZeroMQ Guide, Chapter 1 `_: ZeroMQ is a +modern, advanced implementation of the socket concept. Read this to find out +what sockets can get up to these days. + +Week 2 - Web Protocols +---------------------- + +**Date**: Jan. 15, 2013 + +In this class we will discuss the various languages of the Internet. What +differentiates one protocol from another? How are they similar? How can you +use the inherent qualities of each to determine which is appropriate for a +given purpose? + +The class laboratory will cover creating a simple web server. Using the HTTP +protocol and information we learned in week one about sockets, we'll create a +simple web server that allows us to look at files and directories on our own +computers. + +The class assignment will be to extend the simple web server, adding the +ability to run dynamic processes and return the results to the client. + +Reading +******* + +Read through the list of Python Internet Protocols. If you don't know what a +protocol is for, look it up online. Think about their relationship to each +other, which are clients? Which are servers? Which clients talk to which +servers? + +`Python Standard Library Internet Protocols +`_ + +An introduction to the HTTP protocol: +`HTTP Made Really Easy `_ + +References +********** + +Skim these before class, you'll need them for lab and your assignment: + +* `ftplib `_ +* `httplib `_ +* `urllib `_ +* `urllib2 `_ + +Bonus +***** + +httplib2_ - A comprehensive HTTP client library that supports many features +left out of other HTTP libraries. + +.. _httplib2: http://code.google.com/p/httplib2/ + +Skim these four documents from different phases of HTTP's life. Get a feel for +how the specification has changed (and how it hasn't!). + +* `HTTP/0.9 `_ +* `HTTP - as defined in 1992 ` +* `Hypertext Transfer Protocol -- HTTP/1.0 + ` +* `Hypertext Transfer Protocol -- HTTP/1.1 + ` + +Week 3 - +-------- + +**Date**: Jan. 22, 2013 + +Week 4 - +-------- + +**Date**: Jan. 29, 2013 + +Week 5 - +-------- + +**Date**: Feb. 5, 2013 + +Week 6 - +-------- + +**Date**: Feb. 12, 2013 + +Week 7 - +-------- + +**Date**: Feb. 19, 2013 + +Week 8 - +-------- + +**Date**: Feb. 26, 2013 + +Week 9 - +-------- + +**Date**: Mar. 5, 2013 + +Week 10 - +--------- + +**Date**: Mar. 12, 2013 diff --git a/_static/ajax-loader.gif b/_static/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..61faf8cab23993bd3e1560bff0668bd628642330 GIT binary patch literal 673 zcmZ?wbhEHb6krfw_{6~Q|Nno%(3)e{?)x>&1u}A`t?OF7Z|1gRivOgXi&7IyQd1Pl zGfOfQ60;I3a`F>X^fL3(@);C=vM_KlFfb_o=k{|A33hf2a5d61U}gjg=>Rd%XaNQW zW@Cw{|b%Y*pl8F?4B9 zlo4Fz*0kZGJabY|>}Okf0}CCg{u4`zEPY^pV?j2@h+|igy0+Kz6p;@SpM4s6)XEMg z#3Y4GX>Hjlml5ftdH$4x0JGdn8~MX(U~_^d!Hi)=HU{V%g+mi8#UGbE-*ao8f#h+S z2a0-5+vc7MU$e-NhmBjLIC1v|)9+Im8x1yacJ7{^tLX(ZhYi^rpmXm0`@ku9b53aN zEXH@Y3JaztblgpxbJt{AtE1ad1Ca>{v$rwwvK(>{m~Gf_=-Ro7Fk{#;i~+{{>QtvI yb2P8Zac~?~=sRA>$6{!(^3;ZP0TPFR(G_-UDU(8Jl0?(IXu$~#4A!880|o%~Al1tN literal 0 HcmV?d00001 diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 00000000..43e8bafa --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,540 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox input[type="text"] { + width: 170px; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + width: 30px; +} + +img { + border: 0; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable dl, table.indextable dd { + margin-top: 0; + margin-bottom: 0; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- general body styles --------------------------------------------------- */ + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.field-list ul { + padding-left: 1em; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.field-list td, table.field-list th { + border: 0 !important; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, .highlighted { + background-color: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.refcount { + color: #060; +} + +.optional { + font-size: 1.3em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +tt.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +tt.descclassname { + background-color: transparent; +} + +tt.xref, a tt { + background-color: transparent; + font-weight: bold; +} + +h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/comment-bright.png b/_static/comment-bright.png new file mode 100644 index 0000000000000000000000000000000000000000..551517b8c83b76f734ff791f847829a760ad1903 GIT binary patch literal 3500 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 A2LJ#7 literal 0 HcmV?d00001 diff --git a/_static/comment.png b/_static/comment.png new file mode 100644 index 0000000000000000000000000000000000000000..92feb52b8824c6b0f59b658b1196c61de9162a95 GIT binary patch literal 3445 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 Xn!ZpXD%P(H00000NkvXXu0mjf= 0 && !jQuery(node.parentNode).hasClass(className)) { + var span = document.createElement("span"); + span.className = className; + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this); + }); + } + } + return this.each(function() { + highlight(this); + }); +}; + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated == 'undefined') + return string; + return (typeof translated == 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated == 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) == 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this == '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/_static/down-pressed.png b/_static/down-pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7ad782782e4f8e39b0c6e15c7344700cdd2527 GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6U4S$Y z{B+)352QE?JR*yM+OLB!qm#z$3ZNi+iKnkC`z>}Z23@f-Ava~9&<9T!#}JFtXD=!G zGdl{fK6ro2OGiOl+hKvH6i=D3%%Y^j`yIkRn!8O>@bG)IQR0{Kf+mxNd=_WScA8u_ z3;8(7x2){m9`nt+U(Nab&1G)!{`SPVpDX$w8McLTzAJ39wprG3p4XLq$06M`%}2Yk zRPPsbES*dnYm1wkGL;iioAUB*Or2kz6(-M_r_#Me-`{mj$Z%( literal 0 HcmV?d00001 diff --git a/_static/down.png b/_static/down.png new file mode 100644 index 0000000000000000000000000000000000000000..3003a88770de3977d47a2ba69893436a2860f9e7 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6U4S$Y z{B+)352QE?JR*yM+OLB!qm#z$3ZNi+iKnkC`z>}xaV3tUZ$qnrLa#kt978NlpS`ru z&)HFc^}^>{UOEce+71h5nn>6&w6A!ieNbu1wh)UGh{8~et^#oZ1# z>T7oM=FZ~xXWnTo{qnXm$ZLOlqGswI_m2{XwVK)IJmBjW{J3-B3x@C=M{ShWt#fYS9M?R;8K$~YwlIqwf>VA7q=YKcwf2DS4Zj5inDKXXB1zl=(YO3ST6~rDq)&z z*o>z)=hxrfG-cDBW0G$!?6{M<$@{_4{m1o%Ub!naEtn|@^frU1tDnm{r-UW|!^@B8 literal 0 HcmV?d00001 diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..d18082e397e7e54f20721af768c4c2983258f1b4 GIT binary patch literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP$HyOL$D9)yc9|lc|nKf<9@eUiWd>3GuTC!a5vdfWYEazjncPj5ZQX%+1 zt8B*4=d)!cdDz4wr^#OMYfqGz$1LDFF>|#>*O?AGil(WEs?wLLy{Gj2J_@opDm%`dlax3yA*@*N$G&*ukFv>P8+2CBWO(qz zD0k1@kN>hhb1_6`&wrCswzINE(evt-5C1B^STi2@PmdKI;Vst0PQB6!2kdN literal 0 HcmV?d00001 diff --git a/_static/jquery.js b/_static/jquery.js new file mode 100644 index 00000000..7c243080 --- /dev/null +++ b/_static/jquery.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
"; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..da1c5620d10c047525a467a425abe9ff5269cfc2 GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1SHkYJtzcHoCO|{#XvD(5N2eUHAey{$X?>< z>&kweokM_|(Po{+Q=kw>iEBiObAE1aYF-J$w=>iB1I2R$WLpMkF=>bh=@O1TaS?83{1OVknK< z>&kweokM`jkU7Va11Q8%;u=xnoS&PUnpeW`?aZ|OK(QcC7sn8Z%gHvy&v=;Q4jejg zV8NnAO`-4Z@2~&zopr02WF_WB>pF literal 0 HcmV?d00001 diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 00000000..1a14f2ae --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,62 @@ +.highlight .hll { background-color: #ffffcc } +.highlight { background: #eeffcc; } +.highlight .c { color: #408090; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #007020; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #007020 } /* Comment.Preproc */ +.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #303030 } /* Generic.Output */ +.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0040D0 } /* Generic.Traceback */ +.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #007020 } /* Keyword.Pseudo */ +.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #902000 } /* Keyword.Type */ +.highlight .m { color: #208050 } /* Literal.Number */ +.highlight .s { color: #4070a0 } /* Literal.String */ +.highlight .na { color: #4070a0 } /* Name.Attribute */ +.highlight .nb { color: #007020 } /* Name.Builtin */ +.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ +.highlight .no { color: #60add5 } /* Name.Constant */ +.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #007020 } /* Name.Exception */ +.highlight .nf { color: #06287e } /* Name.Function */ +.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ +.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #bb60d5 } /* Name.Variable */ +.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #208050 } /* Literal.Number.Float */ +.highlight .mh { color: #208050 } /* Literal.Number.Hex */ +.highlight .mi { color: #208050 } /* Literal.Number.Integer */ +.highlight .mo { color: #208050 } /* Literal.Number.Oct */ +.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ +.highlight .sc { color: #4070a0 } /* Literal.String.Char */ +.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ +.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ +.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ +.highlight .sx { color: #c65d09 } /* Literal.String.Other */ +.highlight .sr { color: #235388 } /* Literal.String.Regex */ +.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ +.highlight .ss { color: #517918 } /* Literal.String.Symbol */ +.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ +.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ +.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ +.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 00000000..663be4c9 --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,560 @@ +/* + * searchtools.js_t + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilties for the full-text search. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words, hlwords is the list of normal, unstemmed + * words. the first one is used to find the occurance, the + * latter for highlighting it. + */ + +jQuery.makeSearchSummary = function(text, keywords, hlwords) { + var textLower = text.toLowerCase(); + var start = 0; + $.each(keywords, function() { + var i = textLower.indexOf(this.toLowerCase()); + if (i > -1) + start = i; + }); + start = Math.max(start - 120, 0); + var excerpt = ((start > 0) ? '...' : '') + + $.trim(text.substr(start, 240)) + + ((start + 240 - text.length) ? '...' : ''); + var rv = $('
').text(excerpt); + $.each(hlwords, function() { + rv = rv.highlightText(this, 'highlighted'); + }); + return rv; +} + + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + + +/** + * Search Module + */ +var Search = { + + _index : null, + _queued_query : null, + _pulse_status : -1, + + init : function() { + var params = $.getQueryParameters(); + if (params.q) { + var query = params.q[0]; + $('input[name="q"]')[0].value = query; + this.performSearch(query); + } + }, + + loadIndex : function(url) { + $.ajax({type: "GET", url: url, data: null, success: null, + dataType: "script", cache: true}); + }, + + setIndex : function(index) { + var q; + this._index = index; + if ((q = this._queued_query) !== null) { + this._queued_query = null; + Search.query(q); + } + }, + + hasIndex : function() { + return this._index !== null; + }, + + deferQuery : function(query) { + this._queued_query = query; + }, + + stopPulse : function() { + this._pulse_status = 0; + }, + + startPulse : function() { + if (this._pulse_status >= 0) + return; + function pulse() { + Search._pulse_status = (Search._pulse_status + 1) % 4; + var dotString = ''; + for (var i = 0; i < Search._pulse_status; i++) + dotString += '.'; + Search.dots.text(dotString); + if (Search._pulse_status > -1) + window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something + */ + performSearch : function(query) { + // create the required interface elements + this.out = $('#search-results'); + this.title = $('

' + _('Searching') + '

').appendTo(this.out); + this.dots = $('').appendTo(this.title); + this.status = $('

').appendTo(this.out); + this.output = $(' diff --git a/outline.html b/outline.html index f59d4715..076795f7 100644 --- a/outline.html +++ b/outline.html @@ -97,6 +97,10 @@

Bonus modern, advanced implementation of the socket concept. Read this to find out what sockets can get up to these days.

+
+

Assignment¶

+

To be completed once I decide the right format.

+

Week 2 - Web Protocols¶

@@ -147,37 +151,172 @@

Bonus¶

-
-

Week 3 -¶

+
+

Week 3 - APIs and Mashups¶

Date: Jan. 22, 2013

+

In this class we will explore some of the ways that you can consume and +explore the data provided by other websites. Online data can be provided in +ways intended for consumption. But you can also use scraping techniques to get +at data the original author may not have considered valuable enough to present +as consumable.

+

We’ll explore the use of tools like BeautifulSoup to help make sense of the +truly horrible HTML that can be found in the wild. We will also look at “Web +Services” formats like XMLRPC and REST so we can understand the ways in which +we can find data, or present it ourselves. Finally, we’ll look at some “Web +Service APIs” to help understand how to read them, and how to use them to get +at the data they provide.

+ +
+

References¶

+
+

Python Standard Libraries:¶

+ +
+
+

External Eibraries:¶

+
    +
  • BeautifulSoup - “You didn’t write that awful page. You’re just trying to +get some data out of it. Right now, you don’t really care what HTML is +supposed to look like. Neither does this parser.”
  • +
  • httplib2 - A comprehensive HTTP client library that supports many features +left out of other HTTP libraries.
  • +
  • restkit - an HTTP resource kit for Python. It allows you to easily access +to HTTP resource and build objects around it.
  • +
+
+
+

SOAP¶

+
    +
  • rpclib - a simple, easily extendible soap library that provides several +useful tools for creating, publishing and consuming soap web services
  • +
  • Suds - a lightweight SOAP python client for consuming Web Services.
  • +
  • the SOAP specification
  • +
+
+
+
+

Bonus¶

+
    +
  • Wikipedia on REST +<http://en.wikipedia.org/wiki/Representational_State_Transfer>
  • +
  • Original REST disertation +<http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm>
  • +
+
+
+

Assignment¶

+

To be completed once I decide the right format.

+
-
-

Week 4 -¶

+
+

Week 4 - CGI and WSGI¶

Date: Jan. 29, 2013

+
+

Reading¶

+
    +
  • CGI tutorial - Read the following sections: Hello World, Debugging, Form. +Other sections optional. Follow along, hosting CGI scripts either via Apache +on our VMs, or locally using CGIHTTPServer.
  • +
  • WSGI tutorial - Follow along, hosting WSGI scripts either via Apache on our +VMs, or locally using wsgiref.
  • +
+
+

Prepare for class:¶

+ +

(https://github.com/briandorsey/uwpython_web/tree/master/week05/cgi_example)

+
+
+
+

References¶

+ +
+

Alternate WSGI introductions:¶

+ +
-
-

Week 5 -¶

+
+

Assignment¶

+

To be completed once I decide the right format.

+
+
+
+

Week 5 - Small Frameworks¶

Date: Feb. 5, 2013

+
+

Assignment¶

+

To be completed once I decide the right format.

-
-

Week 6 -¶

+
+
+

Week 6 - Django I / Relational DBs¶

Date: Feb. 12, 2013

+
+

Assignment¶

+

To be completed once I decide the right format.

+
-
-

Week 7 -¶

+
+

Week 7 - Django II¶

Date: Feb. 19, 2013

+
+

Assignment¶

+

To be completed once I decide the right format.

-
-

Week 8 -¶

+
+
+

Week 8 - Pyramid / SqlAlchemy¶

Date: Feb. 26, 2013

+
+

Assignment¶

+

To be completed once I decide the right format.

+
-
-

Week 9 -¶

+
+

Week 9 - Pyramid - ZODB¶

Date: Mar. 5, 2013

+
+

Assignment¶

+

To be completed once I decide the right format.

-
-

Week 10 -¶

+
+
+

Week 10 - Plone¶

Date: Mar. 12, 2013

+
+

Assignment¶

+

To be completed once I decide the right format.

+
@@ -195,6 +334,7 @@

Table Of Contents

  • References
  • Further Reading
  • Bonus
  • +
  • Assignment
  • Week 2 - Web Protocols
  • -
  • Week 3 -
  • -
  • Week 4 -
  • -
  • Week 5 -
  • -
  • Week 6 -
  • -
  • Week 7 -
  • -
  • Week 8 -
  • -
  • Week 9 -
  • -
  • Week 10 -
  • +
  • Week 3 - APIs and Mashups +
  • +
  • Week 4 - CGI and WSGI +
  • +
  • Week 5 - Small Frameworks +
  • +
  • Week 6 - Django I / Relational DBs +
  • +
  • Week 7 - Django II +
  • +
  • Week 8 - Pyramid / SqlAlchemy +
  • +
  • Week 9 - Pyramid - ZODB +
  • +
  • Week 10 - Plone +
  • diff --git a/searchindex.js b/searchindex.js index 5ee88847..6742a887 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{explor:0,all:0,code:0,protocol:[0,1],from:[0,1],wikipedia:1,hypertext:1,insight:1,tty:0,tcp:1,weekli:0,four:1,bring:0,session:0,through:[0,1],abil:1,edu:0,find:1,languag:[0,1],previous:0,web:[0,1],versu:0,educ:0,easi:1,configur:0,activ:0,should:0,kessler:1,grade:0,offic:0,program:[0,1],comprehens:1,mail:0,smtplib:1,pce:[],real:[0,1],applic:0,them:[0,1],good:0,march:0,thei:[0,1],get:1,python:[0,1],washington:0,express:0,unexcus:0,initi:1,framework:0,httplib2:1,guid:1,part:0,discuss:1,requir:0,introduct:[0,1],term:0,name:1,specif:1,level:0,list:1,html:1,bonu:1,server:1,rfc:1,accommod:0,slide:0,integr:0,each:[0,1],small:1,januari:0,where:[],page:0,underli:[0,1],certif:0,domain:1,work:0,laboratori:[0,1],individu:0,dens:0,realli:1,satisfactori:0,learn:[0,1],result:[0,1],pass:0,fail:0,our:1,stack:1,manifest:1,skim:1,out:1,index:0,what:1,accomplish:1,network:[0,1],section:1,advanc:1,abl:0,urllib:1,access:0,dso:0,dynam:1,internet:[0,1],"import":0,experi:0,approach:0,across:1,contrast:0,refer:[0,1],machin:1,ftplib:1,hasn:1,run:1,extend:1,berkelei:1,think:1,http2:1,usag:0,onli:1,here:0,standard:[0,1],quick:0,reason:0,base:0,prerequisit:0,jog:0,solv:0,org:1,other:1,between:1,addit:1,chapter:1,search:0,purpos:1,socket:[0,1],via:0,www:1,latest:1,technolog:[],prior:0,commit:0,implement:[0,1],principl:0,assign:[0,1],first:1,softwar:[],own:1,feel:1,curiou:1,modul:0,inher:1,qualiti:1,rfc2616:1,system:1,assess:0,phase:1,pragmat:0,seattl:[],instal:1,tuesdai:0,throughout:0,fantast:0,your:[0,1],highli:0,jan:1,differ:1,feb:1,commun:1,transfer:1,support:[0,1],univers:0,regist:0,two:0,"class":[0,1],start:0,interfac:1,low:0,recommend:1,presentations_:[],zeromq:1,memeori:0,project:[],life:1,relationship:1,emphas:0,given:1,suit:1,about:1,ani:0,downtown:[],thi:[0,1],appendix:1,gain:1,httplib:1,rfc1945:1,further:1,instructor:0,than:0,present:0,must:[],"case":1,topic:0,made:1,look:1,provid:0,servic:0,outlin:[0,1],focu:[0,1],structur:1,exampl:0,employ:0,defin:1,can:[0,1],absenc:0,fundament:1,"return":1,problem:0,more:[0,1],similar:1,connect:0,featur:1,comput:[0,1],have:[0,1],creat:[0,1],process:1,request:0,modern:1,smtp:1,fax:0,indic:0,lectur:[0,1],autumn:[],content:0,file:1,tabl:0,need:1,onlin:1,minutia:0,doe:0,concept:1,differenti:1,cours:[0,1],variou:1,equival:0,anoth:1,virtual:1,contact:0,how:[0,1],complex:1,read:1,librari:[0,1],which:1,you:1,document:[0,1],simpl:[0,1],singl:1,complet:[0,1],week:[0,1],criteria:[],mar:1,http:1,distribut:0,attend:0,object:0,urllib2:1,lab:1,dai:1,befor:1,student:0,mani:1,date:1,chang:1,demonstr:1,winter:0,classroom:0,appropri:1,don:[0,1],directori:1,coursework:0,wifi:0,cover:1,know:1,disabl:0,lightn:1,inform:[0,1],client:1,allow:1,determin:1,time:1,model:1,portabl:0,order:0,talk:1,left:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:0,code:0,queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,string:1,util:1,veri:1,unexcus:0,level:0,list:1,"try":1,small:[0,1],cgi:[0,1],work:0,representational_state_transf:1,htm:1,restkit:1,pass:0,further:1,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],contrast:0,hasn:1,berkelei:1,learn:[0,1],here:0,inher:1,along:1,search:0,technolog:[],prior:0,zodb:[0,1],implement:[0,1],ourselv:1,via:[0,1],extra:[],activ:0,modul:[0,1],api:[0,1],seattl:[],instal:1,plone:[0,1],highli:0,jan:1,from:[0,1],commun:1,univers:0,regist:0,two:0,websit:1,recommend:1,memeori:0,relat:[0,1],downtown:[],appendix:1,must:[],topic:0,valuabl:1,prepar:1,outlin:[0,1],focu:[0,1],can:[0,1],http2:1,purpos:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1],winter:0,anoth:1,write:1,how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,lab:1,befor:1,date:1,data:1,demonstr:1,classroom:0,github:1,author:1,django:[0,1],inform:[0,1],allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,through:[0,1],dynam:1,grade:0,offic:0,html:1,comprehens:1,mail:0,pce:[],them:[0,1],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,realli:1,connect:0,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],advanc:1,given:1,pub:1,standard:[0,1],quick:0,reason:0,base:0,org:1,care:1,principl:0,assign:[0,1],first:1,origin:1,softwar:[],feel:1,onc:1,qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:1,top:1,system:1,master:1,zeromq:1,"final":1,option:1,relationship:1,tool:1,"short":1,pars:1,mostli:1,eibrari:1,than:0,provid:[0,1],tree:1,structur:1,project:[],consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1],tabl:0,need:1,techniqu:1,equival:0,contact:0,also:1,client:1,take:1,which:1,soap:1,singl:1,distribut:0,object:[0,1],phase:1,"class":[0,1],don:[0,1],dens:0,cover:1,doe:[0,1],part:0,determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:0,find:1,onli:1,explain:1,configur:0,apach:1,should:0,kessler:1,disert:1,suppos:1,smtplib:1,local:1,variou:1,get:1,express:0,rest:1,requir:0,truli:1,rfc:1,integr:0,where:[],wiki:1,certif:0,result:[0,1],fail:0,wikipedia:1,urllib:1,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:1,extend:1,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:1,overview:1,rfc2616:1,tuesdai:0,throughout:0,uci:1,compon:1,json:1,presentations_:[],life:1,emphas:0,understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,servic:[0,1],employ:0,defin:1,wild:1,pyramid:[0,1],briandorsei:1,lightweight:1,minutia:0,sever:1,minim:1,make:1,format:1,complex:1,document:[0,1],complet:[0,1],week:[0,1],http:1,kit:1,student:0,extern:1,stack:1,appropri:1,coursework:0,exampl:[0,1],thi:[0,1],model:1,portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,virtual:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:1,easi:1,armin:1,build:1,real:[0,1],applic:0,march:0,around:1,xmlrpc:1,week05:1,read:1,httplib:1,know:1,world:1,uwpython_web:1,like:1,specif:1,manifest:1,either:1,page:[0,1],underli:[0,1],www:1,right:1,often:1,some:1,satisfactori:0,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,refer:[0,1],machin:1,cgi_exampl:1,run:1,usag:0,host:1,dissert:1,prerequisit:0,januari:0,feb:1,chapter:1,about:1,socket:[0,1],constraint:1,commit:0,disabl:0,own:1,curiou:1,washington:0,assess:0,chang:1,your:[0,1],wai:1,transfer:1,support:[0,1],why:1,start:[0,1],interfac:1,low:0,suit:1,form:1,criteria:[],rpclib:1,sqlalchemi:[0,1],gain:1,rfc1945:1,made:1,url:1,absenc:0,fundament:1,problem:0,more:[0,1],similar:1,featur:1,creat:[0,1],request:0,pragmat:0,parser:1,lectur:[0,1],file:1,mashup:[0,1],scrape:1,field:1,other:1,test:1,ignor:1,you:1,intend:1,urllib2:1,consid:1,wife:1,directori:1,wifi:0,xmlrpclib:1,htmlparser:1,time:1,hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file From 755c8bd3b152dc5e9f806d75dad61d94c2433b50 Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 11 Dec 2012 15:39:49 -0800 Subject: [PATCH 007/114] * update index and outline prior to intro talk --- _sources/outline.txt | 76 ++++++++++++++++++++++++++++------------- index.html | 8 ++--- outline.html | 80 +++++++++++++++++++++++++++----------------- searchindex.js | 2 +- 4 files changed, 108 insertions(+), 58 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index b6e43074..ed6b7c61 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -65,7 +65,7 @@ what sockets can get up to these days. Assignment ********** -To be completed once I decide the right format. +To Be Decided Week 2 - Web Protocols ---------------------- @@ -121,11 +121,11 @@ Skim these four documents from different phases of HTTP's life. Get a feel for how the specification has changed (and how it hasn't!). * `HTTP/0.9 `_ -* `HTTP - as defined in 1992 ` +* `HTTP - as defined in 1992 `_ * `Hypertext Transfer Protocol -- HTTP/1.0 - ` + `_ * `Hypertext Transfer Protocol -- HTTP/1.1 - ` + `_ Week 3 - APIs and Mashups ------------------------- @@ -214,13 +214,24 @@ Bonus Assignment ********** -To be completed once I decide the right format. +To Be Decided Week 4 - CGI and WSGI --------------------- **Date**: Jan. 29, 2013 +In this class we will explore ways of moving data from HTTP requests into the +dynamic scripts that process data. We will begin by looking at the original +specification for passing data, CGI (Common Gateway Interface). We'll look at +the benefits and drawbacks of the specification, and use it to create some +simple interactions. + +Then we will investigate a more modern take on the same problem, WSGI (Web +Services Gateway Interface). We'll see the ways in which WSGI is similar to +CGI, and look at the ways in which it differs. We'll create a simple interaction +using WSGI and see what benefits and drawbacks it confers. + Reading ******* @@ -273,57 +284,76 @@ Alternate WSGI introductions: Assignment ********** -To be completed once I decide the right format. +To Be Decided Week 5 - Small Frameworks ------------------------- **Date**: Feb. 5, 2013 -Assignment -********** +In this class we learn about using frameworks to help us reach our goals. We +will learn what makes up a framework and some criteria for evaluating which is +the right one for you. -To be completed once I decide the right format. +This week we will also learn about the final project for the class and students +will begin to think about what they wish to do to complete the project. -Week 6 - Django I / Relational DBs ----------------------------------- +In our class lab we will explore using a specific framework (Flask) to create +a simple web application. We'll learn how to install the framework, how to +read the documentation for it, how to build a simple dynamic application, and +how to push further on. -**Date**: Feb. 12, 2013 +For our assignment we will extend our knowledge by trying out a different +framework. We will have the chance to repeat the class lab, or create another +dynamic system using one of the many other python web frameworks available to +us. Assignment ********** -To be completed once I decide the right format. +To Be Decided -Week 7 - Django II ------------------- +Week 6 - Django +--------------- **Date**: Feb. 19, 2013 + + Assignment ********** -To be completed once I decide the right format. +To Be Decided -Week 8 - Pyramid / SqlAlchemy ------------------------------ +Week 7 - Django +--------------- **Date**: Feb. 26, 2013 Assignment ********** -To be completed once I decide the right format. +To Be Decided -Week 9 - Pyramid - ZODB ------------------------ +Week 8 - Pyramid +---------------- **Date**: Mar. 5, 2013 Assignment ********** -To be completed once I decide the right format. +To Be Decided + +Week 9 - The Cloud +------------------ + +**Date**: Feb. 12, 2013 + +Assignment +********** + +To Be Decided Week 10 - Plone --------------- @@ -333,4 +363,4 @@ Week 10 - Plone Assignment ********** -To be completed once I decide the right format. +To Be Decided \ No newline at end of file diff --git a/index.html b/index.html index 0d231491..1c9180a5 100644 --- a/index.html +++ b/index.html @@ -61,10 +61,10 @@

    Internet Programming with PythonWeek 3 - APIs and Mashups
  • Week 4 - CGI and WSGI
  • Week 5 - Small Frameworks
  • -
  • Week 6 - Django I / Relational DBs
  • -
  • Week 7 - Django II
  • -
  • Week 8 - Pyramid / SqlAlchemy
  • -
  • Week 9 - Pyramid - ZODB
  • +
  • Week 6 - Django
  • +
  • Week 7 - Django
  • +
  • Week 8 - Pyramid
  • +
  • Week 9 - The Cloud
  • Week 10 - Plone
  • diff --git a/outline.html b/outline.html index 076795f7..7469a08d 100644 --- a/outline.html +++ b/outline.html @@ -99,7 +99,7 @@

    Bonus

    Assignment¶

    -

    To be completed once I decide the right format.

    +

    To Be Decided

    @@ -143,11 +143,9 @@

    Bonus¶ how the specification has changed (and how it hasn’t!).

    @@ -222,12 +220,21 @@

    Bonus¶

    Assignment¶

    -

    To be completed once I decide the right format.

    +

    To Be Decided

    Week 4 - CGI and WSGI¶

    Date: Jan. 29, 2013

    +

    In this class we will explore ways of moving data from HTTP requests into the +dynamic scripts that process data. We will begin by looking at the original +specification for passing data, CGI (Common Gateway Interface). We’ll look at +the benefits and drawbacks of the specification, and use it to create some +simple interactions.

    +

    Then we will investigate a more modern take on the same problem, WSGI (Web +Services Gateway Interface). We’ll see the ways in which WSGI is similar to +CGI, and look at the ways in which it differs. We’ll create a simple interaction +using WSGI and see what benefits and drawbacks it confers.

    Reading¶

      @@ -267,47 +274,60 @@

      Alternate WSGI introductions:

      Assignment¶

      -

      To be completed once I decide the right format.

      +

      To Be Decided

    Week 5 - Small Frameworks¶

    Date: Feb. 5, 2013

    +

    In this class we learn about using frameworks to help us reach our goals. We +will learn what makes up a framework and some criteria for evaluating which is +the right one for you.

    +

    This week we will also learn about the final project for the class and students +will begin to think about what they wish to do to complete the project.

    +

    In our class lab we will explore using a specific framework (Flask) to create +a simple web application. We’ll learn how to install the framework, how to +read the documentation for it, how to build a simple dynamic application, and +how to push further on.

    +

    For our assignment we will extend our knowledge by trying out a different +framework. We will have the chance to repeat the class lab, or create another +dynamic system using one of the many other python web frameworks available to +us.

    Assignment¶

    -

    To be completed once I decide the right format.

    +

    To Be Decided

    -
    -

    Week 6 - Django I / Relational DBs¶

    -

    Date: Feb. 12, 2013

    +
    +

    Week 6 - Django¶

    +

    Date: Feb. 19, 2013

    Assignment¶

    -

    To be completed once I decide the right format.

    +

    To Be Decided

    -
    -

    Week 7 - Django II¶

    -

    Date: Feb. 19, 2013

    +
    +

    Week 7 - Django¶

    +

    Date: Feb. 26, 2013

    Assignment¶

    -

    To be completed once I decide the right format.

    +

    To Be Decided

    -
    -

    Week 8 - Pyramid / SqlAlchemy¶

    -

    Date: Feb. 26, 2013

    +
    +

    Week 8 - Pyramid¶

    +

    Date: Mar. 5, 2013

    Assignment¶

    -

    To be completed once I decide the right format.

    +

    To Be Decided

    -
    -

    Week 9 - Pyramid - ZODB¶

    -

    Date: Mar. 5, 2013

    +
    +

    Week 9 - The Cloud¶

    +

    Date: Feb. 12, 2013

    Assignment¶

    -

    To be completed once I decide the right format.

    +

    To Be Decided

    @@ -315,7 +335,7 @@

    Week 10 - Plone

    Assignment¶

    -

    To be completed once I decide the right format.

    +

    To Be Decided

    @@ -371,19 +391,19 @@

    Table Of Contents

  • Assignment
  • -
  • Week 6 - Django I / Relational DBs
      +
    • Week 6 - Django
    • -
    • Week 7 - Django II
        +
      • Week 7 - Django
      • -
      • Week 8 - Pyramid / SqlAlchemy
          +
        • Week 8 - Pyramid
        • -
        • Week 9 - Pyramid - ZODB
            +
          • Week 9 - The Cloud
          • diff --git a/searchindex.js b/searchindex.js index 6742a887..b9777940 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:0,code:0,queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,string:1,util:1,veri:1,unexcus:0,level:0,list:1,"try":1,small:[0,1],cgi:[0,1],work:0,representational_state_transf:1,htm:1,restkit:1,pass:0,further:1,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],contrast:0,hasn:1,berkelei:1,learn:[0,1],here:0,inher:1,along:1,search:0,technolog:[],prior:0,zodb:[0,1],implement:[0,1],ourselv:1,via:[0,1],extra:[],activ:0,modul:[0,1],api:[0,1],seattl:[],instal:1,plone:[0,1],highli:0,jan:1,from:[0,1],commun:1,univers:0,regist:0,two:0,websit:1,recommend:1,memeori:0,relat:[0,1],downtown:[],appendix:1,must:[],topic:0,valuabl:1,prepar:1,outlin:[0,1],focu:[0,1],can:[0,1],http2:1,purpos:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1],winter:0,anoth:1,write:1,how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,lab:1,befor:1,date:1,data:1,demonstr:1,classroom:0,github:1,author:1,django:[0,1],inform:[0,1],allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,through:[0,1],dynam:1,grade:0,offic:0,html:1,comprehens:1,mail:0,pce:[],them:[0,1],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,realli:1,connect:0,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],advanc:1,given:1,pub:1,standard:[0,1],quick:0,reason:0,base:0,org:1,care:1,principl:0,assign:[0,1],first:1,origin:1,softwar:[],feel:1,onc:1,qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:1,top:1,system:1,master:1,zeromq:1,"final":1,option:1,relationship:1,tool:1,"short":1,pars:1,mostli:1,eibrari:1,than:0,provid:[0,1],tree:1,structur:1,project:[],consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1],tabl:0,need:1,techniqu:1,equival:0,contact:0,also:1,client:1,take:1,which:1,soap:1,singl:1,distribut:0,object:[0,1],phase:1,"class":[0,1],don:[0,1],dens:0,cover:1,doe:[0,1],part:0,determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:0,find:1,onli:1,explain:1,configur:0,apach:1,should:0,kessler:1,disert:1,suppos:1,smtplib:1,local:1,variou:1,get:1,express:0,rest:1,requir:0,truli:1,rfc:1,integr:0,where:[],wiki:1,certif:0,result:[0,1],fail:0,wikipedia:1,urllib:1,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:1,extend:1,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:1,overview:1,rfc2616:1,tuesdai:0,throughout:0,uci:1,compon:1,json:1,presentations_:[],life:1,emphas:0,understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,servic:[0,1],employ:0,defin:1,wild:1,pyramid:[0,1],briandorsei:1,lightweight:1,minutia:0,sever:1,minim:1,make:1,format:1,complex:1,document:[0,1],complet:[0,1],week:[0,1],http:1,kit:1,student:0,extern:1,stack:1,appropri:1,coursework:0,exampl:[0,1],thi:[0,1],model:1,portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,virtual:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:1,easi:1,armin:1,build:1,real:[0,1],applic:0,march:0,around:1,xmlrpc:1,week05:1,read:1,httplib:1,know:1,world:1,uwpython_web:1,like:1,specif:1,manifest:1,either:1,page:[0,1],underli:[0,1],www:1,right:1,often:1,some:1,satisfactori:0,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,refer:[0,1],machin:1,cgi_exampl:1,run:1,usag:0,host:1,dissert:1,prerequisit:0,januari:0,feb:1,chapter:1,about:1,socket:[0,1],constraint:1,commit:0,disabl:0,own:1,curiou:1,washington:0,assess:0,chang:1,your:[0,1],wai:1,transfer:1,support:[0,1],why:1,start:[0,1],interfac:1,low:0,suit:1,form:1,criteria:[],rpclib:1,sqlalchemi:[0,1],gain:1,rfc1945:1,made:1,url:1,absenc:0,fundament:1,problem:0,more:[0,1],similar:1,featur:1,creat:[0,1],request:0,pragmat:0,parser:1,lectur:[0,1],file:1,mashup:[0,1],scrape:1,field:1,other:1,test:1,ignor:1,you:1,intend:1,urllib2:1,consid:1,wife:1,directori:1,wifi:0,xmlrpclib:1,htmlparser:1,time:1,hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:0,code:0,queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,string:1,util:1,veri:1,unexcus:0,level:0,list:1,"try":1,small:[0,1],cgi:[0,1],work:0,representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],contrast:0,hasn:1,berkelei:1,learn:[0,1],here:0,inher:1,along:1,search:0,technolog:[],prior:0,zodb:[],implement:[0,1],chanc:1,ourselv:1,via:[0,1],extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1],commun:1,univers:0,regist:0,two:0,websit:1,recommend:1,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,valuabl:1,prepar:1,outlin:[0,1],focu:[0,1],can:[0,1],http2:[],purpos:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1],winter:0,anoth:1,write:1,how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,lab:1,befor:1,date:1,data:1,demonstr:1,goal:1,classroom:0,github:1,author:1,django:[0,1],inform:[0,1],allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,through:[0,1],dynam:1,grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,realli:1,connect:0,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:0,reason:0,base:0,org:1,care:1,lucumr:[],principl:0,assign:[0,1],first:1,origin:1,softwar:[],feel:1,onc:[],qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:1,top:1,system:1,master:1,zeromq:1,"final":1,pocoo:[],option:1,relationship:1,tool:1,"short":1,pars:1,mostli:1,eibrari:1,than:0,provid:[0,1],tree:1,structur:1,project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1],tabl:0,need:1,techniqu:1,equival:0,contact:0,also:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,object:[0,1],reach:1,phase:1,"class":[0,1],don:[0,1],dens:0,cover:1,doe:[0,1],part:0,determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:0,find:1,onli:1,explain:1,configur:0,apach:1,should:0,kessler:1,disert:1,suppos:1,smtplib:1,local:1,move:1,variou:1,get:1,express:0,rest:1,requir:0,truli:1,rfc:1,integr:0,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,wikipedia:1,urllib:1,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:1,extend:1,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:1,overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,evalu:1,compon:1,json:1,presentations_:[],life:1,emphas:0,understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,servic:[0,1],employ:0,defin:1,wild:1,pyramid:[0,1],briandorsei:1,lightweight:1,minutia:0,sever:1,minim:1,make:1,format:1,same:1,complex:1,document:[0,1],complet:[0,1],week:[0,1],http:1,kit:1,student:[0,1],extern:1,stack:1,appropri:1,coursework:0,exampl:[0,1],thi:[0,1],model:1,portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,virtual:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:1,easi:1,drawback:1,armin:1,build:1,real:[0,1],applic:[0,1],march:0,around:1,xmlrpc:1,week05:1,read:1,httplib:1,know:1,world:1,uwpython_web:1,like:1,specif:1,manifest:1,benefit:1,either:1,page:[0,1],underli:[0,1],www:1,right:1,often:1,interact:1,some:1,satisfactori:0,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,refer:[0,1],machin:1,cgi_exampl:1,investig:1,run:1,usag:0,confer:1,host:1,dissert:1,prerequisit:0,januari:0,feb:1,chapter:1,about:1,socket:[0,1],constraint:1,commit:0,disabl:0,own:1,curiou:1,washington:0,assess:0,chang:1,your:[0,1],wai:1,transfer:1,support:[0,1],why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,form:1,criteria:1,rpclib:1,sqlalchemi:[],gain:1,rfc1945:[],made:1,wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1],request:[0,1],pragmat:0,parser:1,lectur:[0,1],file:1,mashup:[0,1],scrape:1,field:1,other:1,test:1,ignor:1,you:1,repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:1,wifi:0,xmlrpclib:1,htmlparser:1,time:1,push:1,hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file From 170f27008d8fb8b98942475e99a182853ac80b51 Mon Sep 17 00:00:00 2001 From: cewing Date: Thu, 13 Dec 2012 08:27:47 -0800 Subject: [PATCH 008/114] fix ups for presentation index, and styles for the presentations --- presentations/index.html | 30 +++++++++------ presentations/ui/uw_pce_theme/pretty.css | 48 +++++++++++++++++++++++- 2 files changed, 66 insertions(+), 12 deletions(-) diff --git a/presentations/index.html b/presentations/index.html index 33b4105b..2cd0364b 100644 --- a/presentations/index.html +++ b/presentations/index.html @@ -5,20 +5,20 @@ -Individual Course Presentations - +Course Presentations + - - + - - - @@ -29,18 +29,26 @@
  • diff --git a/presentations/ui/uw_pce_theme/pretty.css b/presentations/ui/uw_pce_theme/pretty.css index 1cede72d..ab1e8c58 100644 --- a/presentations/ui/uw_pce_theme/pretty.css +++ b/presentations/ui/uw_pce_theme/pretty.css @@ -52,10 +52,11 @@ div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; #slide0 {padding-top: 1.5em} #slide0 h1 {position: static; margin: 1em 0 0; padding: 0; color: #000; - font: bold 2em sans-serif; white-space: normal; background: transparent;} + font: bold 1.5em sans-serif; white-space: normal; background: transparent;} #slide0 h2 {font: bold italic 1em sans-serif; margin: 0.25em;} #slide0 h3 {margin-top: 1.5em; font-size: 1.5em;} #slide0 h4 {margin-top: 0; font-size: 1em;} +#slide0 h1.title {text-align: center; margin-bottom: 0.5em;} ul.urls {list-style: none; display: inline; margin: 0;} .urls li {display: inline; margin: 0;} @@ -118,3 +119,48 @@ tt.docutils {background-color: white;} li:after {content: " [" attr(class) "]"; color: #F88;} div:before {content: "[" attr(class) "]"; color: #F88;} */ + +/* My additions */ +img.align-left, .figure.align-left, object.align-left { + clear: left ; + float: left ; + margin-right: 1em } + +img.align-right, .figure.align-right, object.align-right { + clear: right ; + float: right ; + margin-left: 1em } + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.intro-blurb { + font-size: 80%; + border: 1px solid black; + background-color: #eee; + padding: 1em; +} +.big-centered { + font-size: 1.5em; + text-align: center; + margin-top: 3em; +} +div#footer {background: #005 url(../../img/by-nc-sa.png) 99% 90% no-repeat;} +#footer :link, #footer :visited {text-decoration: none; color: #aae;} + +div.figure p.caption { + margin-top: 5px; +} + +p.image-credit { + font-size: 60%; + border: 1px solid red; + position: absolute; + bottom: 0.5em; + left: 1em; + margin: 1em 0em 0em 0em; + z-index: 10; +} From a2eb05059155a8e44dec27532ad3053412961eee Mon Sep 17 00:00:00 2001 From: cewing Date: Thu, 13 Dec 2012 08:28:38 -0800 Subject: [PATCH 009/114] adding all presentations --- presentations/week01.html | 205 ++++++++++++++++++++++++++++++++++++++ presentations/week02.html | 44 ++++++++ presentations/week03.html | 44 ++++++++ presentations/week04.html | 44 ++++++++ presentations/week05.html | 44 ++++++++ presentations/week06.html | 44 ++++++++ presentations/week07.html | 44 ++++++++ presentations/week08.html | 44 ++++++++ presentations/week09.html | 44 ++++++++ presentations/week10.html | 44 ++++++++ 10 files changed, 601 insertions(+) create mode 100644 presentations/week01.html create mode 100644 presentations/week02.html create mode 100644 presentations/week03.html create mode 100644 presentations/week04.html create mode 100644 presentations/week05.html create mode 100644 presentations/week06.html create mode 100644 presentations/week07.html create mode 100644 presentations/week08.html create mode 100644 presentations/week09.html create mode 100644 presentations/week10.html diff --git a/presentations/week01.html b/presentations/week01.html new file mode 100644 index 00000000..81e6a5b3 --- /dev/null +++ b/presentations/week01.html @@ -0,0 +1,205 @@ + + + + + + + +Internet Programming with Python + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    Internet Programming with Python

    + +../../../img/python.png +

    Week 1: Networking and Sockets

    +

    Wherein we learn about the basic structure of the internet and explore the +building blocks that make it possible.

    + +
    +
    +

    But First

    +

    Mumbo-Jumbo

    +
    +
    +

    But First

    +

    Class presentations are available online for your use

    +

    http://github.com/cewing/training.python_web

    +

    Licensed with Creative Commons BY-NC-SA

    +
      +
    • You must attribute the work
    • +
    • You may not use the work for commercial purposes
    • +
    • You have to share your versions just like this one
    • +
    +

    If you find mistakes, or see improvements, feel free to make a pull request

    +
    +
    +

    But First

    +

    Classroom Mechanics

    +
    +
    +

    But First

    +
      +
    • ~1 hour of Lecture and Discussion
    • +
    • 10 minute break
    • +
    • ~1 hour of Lab Time
    • +
    • 10 minute break
    • +
    • ~30 minutes of Lightning Talks
    • +
    +
    +
    +

    But First

    +

    I'll spend a lot of time talking

    +

    Don't make the mistake of thinking this means I know everything

    +

    Each of us has domain expertise, share it

    +
    +
    +

    But First

    +

    Introductions

    +
    +
    +

    Finally

    +

    And now, let us begin!

    +
    +
    +

    Questions From the Reading?

    +

    do you have any?

    +
    +
    +

    Computer Communications

    +../../../img/network_topology.png +
      +
    • processes can communicate
    • +
    • inside one machine
    • +
    • between two machines
    • +
    • among many machines
    • +
    +

    image: http://en.wikipedia.org/wiki/Internet_Protocol_Suite

    +
    +
    +

    Computer Communications

    +../../../img/data_in_tcpip_stack.png +
      +
    • We divide the process into 'layers'
    • +
    • 'Layers' are mostly arbitrary descriptions
    • +
    • Different descriptions have different layers
    • +
    • Most common is the 'TCP/IP Stack'
    • +
    +

    image: http://en.wikipedia.org/wiki/Internet_Protocol_Suite

    +
    + +
    +

    The TCP/IP Stack - Internet

    +

    Moving up, we have the 'Internet Layer'

    +
      +
    • Deals with addressing and routing
        +
      • Where are we going?
      • +
      • What path do we take to get there?
      • +
      +
    • +
    • Agnostic as to physical medium (IP over Avian Carrier - IPoAC)
    • +
    • Makes no promises of reliability
    • +
    • Two addressing systems
        +
      • IPv4 (current, limited '192.168.1.100')
      • +
      • IPv6 (future, 3.4 x 10^38 addresses, '2001:0db8:85a3:0042:0000:8a2e:0370:7334')
      • +
      +
    • +
    +
    +
    +

    The TCP/IP Stack - Internet

    +

    That's 4.3 x 10^28 addresses per person alive today

    +
    +
    +

    The TCP/IP Stack - Transport

    +

    Next up is the 'Transport Layer'

    +
      +
    • Deals with transmission and reception of data
        +
      • error correction, flow control, congestion management
      • +
      +
    • +
    • Common protocols include TCP & UDP
        +
      • TCP: Tranmission Control Protocol
      • +
      • UDP: User Datagram Protocol
      • +
      +
    • +
    • Not all Transport Protocols are 'reliable'
        +
      • TCP ensures that dropped packets are resent
      • +
      • UDP makes no such assurance
      • +
      • Reliability is slow and expensive
      • +
      +
    • +
    +
    +
    +

    The TCP/IP Stack - Transport

    +

    The 'Transport Layer' also establishes the concept of a port

    +
      +
    • IP Addresses designate a specific machine on the network
    • +
    • A port provides addressing for individual applications in a single host
    • +
    • 192.168.1.100:80 (the :80 part is the port)
    • +
    +

    This means that you don't have to worry about information intended for your +web browser being accidentally read by your email client.

    +
    +
    +

    The TCP/IP Stack - Application

    +

    The topmost layer is the 'Application Layer'

    +
      +
    • Deals directly with data produced or consumed by an application
    • +
    • Reads or writes data using a set of understood, well-defined protocols
        +
      • HTTP, SMTP, FTP etc.
      • +
      +
    • +
    • Does not know (or need to know) about lower layer functionality
        +
      • The exception to this rule is endpoint data (or IP:Port)
      • +
      +
    • +
    +
    +
    +

    The TCP/IP Stack - Application

    +

    this is where we live and work

    +
    +
    + + diff --git a/presentations/week02.html b/presentations/week02.html new file mode 100644 index 00000000..59bc7070 --- /dev/null +++ b/presentations/week02.html @@ -0,0 +1,44 @@ + + + + + + + +This is week 2 + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    This is week 2

    + +
    +
    + + diff --git a/presentations/week03.html b/presentations/week03.html new file mode 100644 index 00000000..6e73c2cd --- /dev/null +++ b/presentations/week03.html @@ -0,0 +1,44 @@ + + + + + + + +This is Week 3 + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    This is Week 3

    + +
    +
    + + diff --git a/presentations/week04.html b/presentations/week04.html new file mode 100644 index 00000000..ceee0525 --- /dev/null +++ b/presentations/week04.html @@ -0,0 +1,44 @@ + + + + + + + +This is Week 4 + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    This is Week 4

    + +
    +
    + + diff --git a/presentations/week05.html b/presentations/week05.html new file mode 100644 index 00000000..d6d8df79 --- /dev/null +++ b/presentations/week05.html @@ -0,0 +1,44 @@ + + + + + + + +This is Week 5 + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    This is Week 5

    + +
    +
    + + diff --git a/presentations/week06.html b/presentations/week06.html new file mode 100644 index 00000000..b19617b2 --- /dev/null +++ b/presentations/week06.html @@ -0,0 +1,44 @@ + + + + + + + +This is Week 6 + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    This is Week 6

    + +
    +
    + + diff --git a/presentations/week07.html b/presentations/week07.html new file mode 100644 index 00000000..5719b2d8 --- /dev/null +++ b/presentations/week07.html @@ -0,0 +1,44 @@ + + + + + + + +This is Week 7 + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    This is Week 7

    + +
    +
    + + diff --git a/presentations/week08.html b/presentations/week08.html new file mode 100644 index 00000000..21c30174 --- /dev/null +++ b/presentations/week08.html @@ -0,0 +1,44 @@ + + + + + + + +This is Week 8 + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    This is Week 8

    + +
    +
    + + diff --git a/presentations/week09.html b/presentations/week09.html new file mode 100644 index 00000000..212657f4 --- /dev/null +++ b/presentations/week09.html @@ -0,0 +1,44 @@ + + + + + + + +This is Week 9 + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    This is Week 9

    + +
    +
    + + diff --git a/presentations/week10.html b/presentations/week10.html new file mode 100644 index 00000000..baa12287 --- /dev/null +++ b/presentations/week10.html @@ -0,0 +1,44 @@ + + + + + + + +This is Week 10 + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    This is Week 10

    + +
    +
    + + From 550221ffa5f821dab0a36fe0f3d6b420a8f5d5dd Mon Sep 17 00:00:00 2001 From: cewing Date: Thu, 13 Dec 2012 08:29:34 -0800 Subject: [PATCH 010/114] remove badly named weekly presentation files --- presentations/week1.html | 205 --------------------------------------- presentations/week2.html | 44 --------- 2 files changed, 249 deletions(-) delete mode 100644 presentations/week1.html delete mode 100644 presentations/week2.html diff --git a/presentations/week1.html b/presentations/week1.html deleted file mode 100644 index e07d0540..00000000 --- a/presentations/week1.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - -Internet Programming with Python - - - - - - - - - - - - -
    -
    -
    - - -
    -
    -
    -

    Internet Programming with Python

    - -../../../img/python.png -

    Week 1: Networking and Sockets

    -

    Wherein we learn about the basic structure of the internet and explore the -building blocks that make it possible.

    - -
    -
    -

    But First

    -

    Mumbo-Jumbo

    -
    -
    -

    But First

    -

    Class presentations are available online for your use

    -

    http://github.com/cewing/training.python_web

    -

    Licensed with Creative Commons BY-NC-SA

    -
      -
    • You must attribute the work
    • -
    • You may not use the work for commercial purposes
    • -
    • You have to share your versions just like this one
    • -
    -

    If you find mistakes, or see improvements, feel free to make a pull request

    -
    -
    -

    But First

    -

    Classroom Mechanics

    -
    -
    -

    But First

    -
      -
    • ~1 hour of Lecture and Discussion
    • -
    • 10 minute break
    • -
    • ~1 hour of Lab Time
    • -
    • 10 minute break
    • -
    • ~30 minutes of Lightning Talks
    • -
    -
    -
    -

    But First

    -

    I'll spend a lot of time talking

    -

    Don't make the mistake of thinking this means I know everything

    -

    Each of us has domain expertise, share it

    -
    -
    -

    But First

    -

    Introductions

    -
    -
    -

    Finally

    -

    And now, let us begin!

    -
    -
    -

    Questions From the Reading?

    -

    do you have any?

    -
    -
    -

    Computer Communications

    -../../../img/network_topology.png -
      -
    • processes can communicate
    • -
    • inside one machine
    • -
    • between two machines
    • -
    • among many machines
    • -
    -

    image: http://en.wikipedia.org/wiki/Internet_Protocol_Suite

    -
    -
    -

    Computer Communications

    -../../../img/data_in_tcpip_stack.png -
      -
    • We divide the process into 'layers'
    • -
    • 'Layers' are mostly arbitrary descriptions
    • -
    • Different descriptions have different layers
    • -
    • Most common is the 'TCP/IP Stack'
    • -
    -

    image: http://en.wikipedia.org/wiki/Internet_Protocol_Suite

    -
    - -
    -

    The TCP/IP Stack - Internet

    -

    Moving up, we have the 'Internet Layer'

    -
      -
    • Deals with addressing and routing
        -
      • Where are we going?
      • -
      • What path do we take to get there?
      • -
      -
    • -
    • Agnostic as to physical medium (IP over Avian Carrier - IPoAC)
    • -
    • Makes no promises of reliability
    • -
    • Two addressing systems
        -
      • IPv4 (current, limited '192.168.1.100')
      • -
      • IPv6 (future, 3.4 x 10^38 addresses, '2001:0db8:85a3:0042:0000:8a2e:0370:7334')
      • -
      -
    • -
    -
    -
    -

    The TCP/IP Stack - Internet

    -

    That's 4.3 x 10^28 addresses per person alive today

    -
    -
    -

    The TCP/IP Stack - Transport

    -

    Next up is the 'Transport Layer'

    -
      -
    • Deals with transmission and reception of data
        -
      • error correction, flow control, congestion management
      • -
      -
    • -
    • Common protocols include TCP & UDP
        -
      • TCP: Tranmission Control Protocol
      • -
      • UDP: User Datagram Protocol
      • -
      -
    • -
    • Not all Transport Protocols are 'reliable'
        -
      • TCP ensures that dropped packets are resent
      • -
      • UDP makes no such assurance
      • -
      • Reliability is slow and expensive
      • -
      -
    • -
    -
    -
    -

    The TCP/IP Stack - Transport

    -

    The 'Transport Layer' also establishes the concept of a port

    -
      -
    • IP Addresses designate a specific machine on the network
    • -
    • A port provides addressing for individual applications in a single host
    • -
    • 192.168.1.100:80 (the :80 part is the port)
    • -
    -

    This means that you don't have to worry about information intended for your -web browser being accidentally read by your email client.

    -
    -
    -

    The TCP/IP Stack - Application

    -

    The topmost layer is the 'Application Layer'

    -
      -
    • Deals directly with data produced or consumed by an application
    • -
    • Reads or writes data using a set of understood, well-defined protocols
        -
      • HTTP, SMTP, FTP etc.
      • -
      -
    • -
    • Does not know (or need to know) about lower layer functionality
        -
      • The exception to this rule is endpoint data (or IP:Port)
      • -
      -
    • -
    -
    -
    -

    The TCP/IP Stack - Application

    -

    this is where we live and work

    -
    -
    - - diff --git a/presentations/week2.html b/presentations/week2.html deleted file mode 100644 index cb97f8f7..00000000 --- a/presentations/week2.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - -This is week 2 - - - - - - - - - - - - -
    -
    -
    - - -
    -
    -
    -

    This is week 2

    - -
    -
    - - From b7e44ba25023093e70d98c3a21ad96d229a0a453 Mon Sep 17 00:00:00 2001 From: cewing Date: Thu, 27 Dec 2012 16:59:56 -0800 Subject: [PATCH 011/114] add images for presentations --- presentations/img/by-nc-sa.png | Bin 0 -> 4811 bytes presentations/img/data_flow.png | Bin 0 -> 27152 bytes presentations/img/data_in_tcpip_stack.png | Bin 0 -> 11078 bytes presentations/img/network_topology.png | Bin 0 -> 27152 bytes presentations/img/python.png | Bin 0 -> 90835 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 presentations/img/by-nc-sa.png create mode 100644 presentations/img/data_flow.png create mode 100644 presentations/img/data_in_tcpip_stack.png create mode 100644 presentations/img/network_topology.png create mode 100644 presentations/img/python.png diff --git a/presentations/img/by-nc-sa.png b/presentations/img/by-nc-sa.png new file mode 100644 index 0000000000000000000000000000000000000000..3350de590c19ff3fe78955247f2aa019591c034b GIT binary patch literal 4811 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 KNLGp)1pW`#IK1Ql literal 0 HcmV?d00001 diff --git a/presentations/img/data_in_tcpip_stack.png b/presentations/img/data_in_tcpip_stack.png new file mode 100644 index 0000000000000000000000000000000000000000..42fde385ea0171251a1eab284c6f5775413ef970 GIT binary patch literal 11078 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 literal 0 HcmV?d00001 diff --git a/presentations/img/network_topology.png b/presentations/img/network_topology.png new file mode 100644 index 0000000000000000000000000000000000000000..24a8494ca20a4a3b3cb219ab1fd186272551780f GIT binary patch literal 27152 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 KNLGp)1pW`#IK1Ql literal 0 HcmV?d00001 diff --git a/presentations/img/python.png b/presentations/img/python.png new file mode 100644 index 0000000000000000000000000000000000000000..23a4c6e3a5b50e9114d5b8f01a2b8bc9cca8e451 GIT binary patch literal 90835 zcmV)oK%BpcP)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00009 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 z 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 Date: Thu, 27 Dec 2012 17:00:14 -0800 Subject: [PATCH 012/114] updates --- _sources/outline.txt | 10 ++++- outline.html | 9 +++- presentations/ui/uw_pce_theme/pretty.css | 1 + presentations/week01.html | 56 +++++++++++++++++++++--- searchindex.js | 2 +- 5 files changed, 66 insertions(+), 12 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index ed6b7c61..f7d55c5a 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -50,6 +50,8 @@ References Further Reading *************** +* `Python Module of the Week - socket + `_ * `Wikipedia - Berkeley socket interface `_ * `RFC 821 - SMTP (initial) `_ @@ -58,6 +60,7 @@ Further Reading Bonus ***** + `ZeroMQ Guide, Chapter 1 `_: ZeroMQ is a modern, advanced implementation of the socket concept. Read this to find out what sockets can get up to these days. @@ -112,10 +115,13 @@ Skim these before class, you'll need them for lab and your assignment: Bonus ***** -httplib2_ - A comprehensive HTTP client library that supports many features -left out of other HTTP libraries. +* httplib2_ - A comprehensive HTTP client library that supports many features + left out of other HTTP libraries. +* requests_ - "... an Apache2 Licensed HTTP library, written in Python, for + human beings." .. _httplib2: http://code.google.com/p/httplib2/ +.. _requests: http://docs.python-requests.org/en/latest/ Skim these four documents from different phases of HTTP's life. Get a feel for how the specification has changed (and how it hasn't!). diff --git a/outline.html b/outline.html index 7469a08d..a58175a3 100644 --- a/outline.html +++ b/outline.html @@ -86,6 +86,7 @@

    References

    Further Reading¶

    But First

    @@ -94,7 +94,7 @@

    Questions From the Reading?

    Computer Communications

    -../../../img/network_topology.png +img/network_topology.png
    • processes can communicate
    • inside one machine
    • @@ -105,10 +105,10 @@

      Computer Communications

    Computer Communications

    -../../../img/data_in_tcpip_stack.png +img/data_in_tcpip_stack.png
      -
    • We divide the process into 'layers'
    • -
    • 'Layers' are mostly arbitrary descriptions
    • +
    • Process divided into 'layers'
    • +
    • 'Layers' are mostly arbitrary
    • Different descriptions have different layers
    • Most common is the 'TCP/IP Stack'
    @@ -181,6 +181,29 @@

    The TCP/IP Stack - Transport

    This means that you don't have to worry about information intended for your web browser being accidentally read by your email client.

    +
    +
    +

    The TCP/IP Stack - Transport

    +

    Ports are grouped into a few different classes

    +
      +
    • Ports numbered 0 - 1023 are reserved
    • +
    • Ports numbered 1024 - 65535 are open
    • +
    • Ports numbered 49152 - 65535 are generally considered ephemeral
    • +
    +

    The TCP/IP Stack - Application

    The topmost layer is the 'Application Layer'

    @@ -196,10 +219,29 @@

    The TCP/IP Stack - Application

    -
    +

    The TCP/IP Stack - Application

    this is where we live and work

    +
    +

    Sockets

    +

    Think back for a second to what we just finished discussing, the TCP/IP stack.

    +
      +
    • The Internet layer gives us an IP Address
    • +
    • The Transport layer establishes the idea of a port.
    • +
    • The Application layer doesn't care about what happens below...
    • +
    • Except for endpoint data (IP:Port)
    • +
    +

    A Socket is the software representation of that endpoint.

    +

    Opening a socket creates a kind of transceiver that can send and/or +receive data at a given IP address and Port.

    +
    +
    +

    Sockets in Python

    +

    Python provides a standard library module which provides socket functionality. +It is called socket. Let's spend a few minutes getting to know this +module.

    +
    diff --git a/searchindex.js b/searchindex.js index b9777940..c661b3cb 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:0,code:0,queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,string:1,util:1,veri:1,unexcus:0,level:0,list:1,"try":1,small:[0,1],cgi:[0,1],work:0,representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],contrast:0,hasn:1,berkelei:1,learn:[0,1],here:0,inher:1,along:1,search:0,technolog:[],prior:0,zodb:[],implement:[0,1],chanc:1,ourselv:1,via:[0,1],extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1],commun:1,univers:0,regist:0,two:0,websit:1,recommend:1,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,valuabl:1,prepar:1,outlin:[0,1],focu:[0,1],can:[0,1],http2:[],purpos:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1],winter:0,anoth:1,write:1,how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,lab:1,befor:1,date:1,data:1,demonstr:1,goal:1,classroom:0,github:1,author:1,django:[0,1],inform:[0,1],allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,through:[0,1],dynam:1,grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,realli:1,connect:0,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:0,reason:0,base:0,org:1,care:1,lucumr:[],principl:0,assign:[0,1],first:1,origin:1,softwar:[],feel:1,onc:[],qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:1,top:1,system:1,master:1,zeromq:1,"final":1,pocoo:[],option:1,relationship:1,tool:1,"short":1,pars:1,mostli:1,eibrari:1,than:0,provid:[0,1],tree:1,structur:1,project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1],tabl:0,need:1,techniqu:1,equival:0,contact:0,also:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,object:[0,1],reach:1,phase:1,"class":[0,1],don:[0,1],dens:0,cover:1,doe:[0,1],part:0,determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:0,find:1,onli:1,explain:1,configur:0,apach:1,should:0,kessler:1,disert:1,suppos:1,smtplib:1,local:1,move:1,variou:1,get:1,express:0,rest:1,requir:0,truli:1,rfc:1,integr:0,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,wikipedia:1,urllib:1,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:1,extend:1,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:1,overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,evalu:1,compon:1,json:1,presentations_:[],life:1,emphas:0,understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,servic:[0,1],employ:0,defin:1,wild:1,pyramid:[0,1],briandorsei:1,lightweight:1,minutia:0,sever:1,minim:1,make:1,format:1,same:1,complex:1,document:[0,1],complet:[0,1],week:[0,1],http:1,kit:1,student:[0,1],extern:1,stack:1,appropri:1,coursework:0,exampl:[0,1],thi:[0,1],model:1,portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,virtual:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:1,easi:1,drawback:1,armin:1,build:1,real:[0,1],applic:[0,1],march:0,around:1,xmlrpc:1,week05:1,read:1,httplib:1,know:1,world:1,uwpython_web:1,like:1,specif:1,manifest:1,benefit:1,either:1,page:[0,1],underli:[0,1],www:1,right:1,often:1,interact:1,some:1,satisfactori:0,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,refer:[0,1],machin:1,cgi_exampl:1,investig:1,run:1,usag:0,confer:1,host:1,dissert:1,prerequisit:0,januari:0,feb:1,chapter:1,about:1,socket:[0,1],constraint:1,commit:0,disabl:0,own:1,curiou:1,washington:0,assess:0,chang:1,your:[0,1],wai:1,transfer:1,support:[0,1],why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,form:1,criteria:1,rpclib:1,sqlalchemi:[],gain:1,rfc1945:[],made:1,wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1],request:[0,1],pragmat:0,parser:1,lectur:[0,1],file:1,mashup:[0,1],scrape:1,field:1,other:1,test:1,ignor:1,you:1,repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:1,wifi:0,xmlrpclib:1,htmlparser:1,time:1,push:1,hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:0,code:0,queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,string:1,util:1,veri:1,unexcus:0,level:0,list:1,"try":1,small:[0,1],cgi:[0,1],work:0,representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],contrast:0,hasn:1,berkelei:1,learn:[0,1],here:0,inher:1,along:1,search:0,technolog:[],prior:0,zodb:[],implement:[0,1],chanc:1,ourselv:1,via:[0,1],extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1],commun:1,univers:0,regist:0,two:0,websit:1,recommend:1,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,valuabl:1,prepar:1,outlin:[0,1],focu:[0,1],can:[0,1],http2:[],purpos:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1],winter:0,anoth:1,write:1,how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,lab:1,befor:1,date:1,data:1,demonstr:1,goal:1,classroom:0,github:1,author:1,django:[0,1],inform:[0,1],allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,through:[0,1],dynam:1,grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,realli:1,connect:0,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:0,reason:0,base:0,org:1,care:1,lucumr:[],principl:0,assign:[0,1],first:1,origin:1,softwar:[],feel:1,onc:[],qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:1,top:1,system:1,master:1,zeromq:1,"final":1,pocoo:[],option:1,relationship:1,tool:1,"short":1,pars:1,mostli:1,eibrari:1,than:0,provid:[0,1],tree:1,structur:1,project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1],tabl:0,need:1,techniqu:1,equival:0,contact:0,also:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,object:[0,1],reach:1,phase:1,"class":[0,1],don:[0,1],dens:0,cover:1,doe:[0,1],part:0,determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:0,find:1,onli:1,explain:1,configur:0,apach:1,written:1,should:0,kessler:1,disert:1,suppos:1,smtplib:1,local:1,move:1,variou:1,get:1,express:0,rest:1,requir:0,truli:1,rfc:1,integr:0,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,wikipedia:1,urllib:1,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:1,extend:1,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:1,overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,evalu:1,compon:1,json:1,presentations_:[],life:1,emphas:0,understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,servic:[0,1],employ:0,defin:1,wild:1,pyramid:[0,1],briandorsei:1,lightweight:1,minutia:0,sever:1,minim:1,make:1,format:1,same:1,complex:1,document:[0,1],complet:[0,1],week:[0,1],http:1,kit:1,student:[0,1],extern:1,stack:1,appropri:1,coursework:0,exampl:[0,1],thi:[0,1],model:1,portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,virtual:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:1,easi:1,drawback:1,apache2:1,armin:1,build:1,real:[0,1],applic:[0,1],march:0,around:1,xmlrpc:1,week05:1,read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:1,like:1,specif:1,manifest:1,benefit:1,either:1,page:[0,1],underli:[0,1],www:1,right:1,often:1,interact:1,some:1,satisfactori:0,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,refer:[0,1],machin:1,cgi_exampl:1,investig:1,run:1,usag:0,confer:1,host:1,dissert:1,prerequisit:0,januari:0,feb:1,chapter:1,about:1,socket:[0,1],constraint:1,commit:0,disabl:0,own:1,curiou:1,washington:0,assess:0,chang:1,your:[0,1],wai:1,transfer:1,support:[0,1],why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,form:1,criteria:1,rpclib:1,sqlalchemi:[],gain:1,rfc1945:[],made:1,wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1],request:[0,1],pragmat:0,parser:1,lectur:[0,1],file:1,mashup:[0,1],scrape:1,field:1,other:1,test:1,ignor:1,you:1,repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:1,wifi:0,xmlrpclib:1,htmlparser:1,time:1,push:1,hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file From e3175b92fabc6f98968242ddc95670a016971854 Mon Sep 17 00:00:00 2001 From: cewing Date: Wed, 2 Jan 2013 23:30:25 -0800 Subject: [PATCH 013/114] update week 1 presentation and outline in prep for first class --- _sources/outline.txt | 10 +- outline.html | 5 +- presentations/ui/uw_pce_theme/pretty.css | 2 +- presentations/week01.html | 435 +++++++++++++++++++++++ searchindex.js | 2 +- 5 files changed, 449 insertions(+), 5 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index f7d55c5a..573d5c9f 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -23,6 +23,8 @@ Machines, and accomplish our first networked communication. The class assignment will focus on extending our use of sockets to support a more complex use-case. +`Class Presentation `_ + Reading ******* @@ -60,7 +62,6 @@ Further Reading Bonus ***** - `ZeroMQ Guide, Chapter 1 `_: ZeroMQ is a modern, advanced implementation of the socket concept. Read this to find out what sockets can get up to these days. @@ -68,7 +69,12 @@ what sockets can get up to these days. Assignment ********** -To Be Decided +You can read the assignment at + +http://github.com/cewing/training.python_web/blob/master/assignments/week01/athome/assignment.txt + +Please complete the assignment by noon on Sunday, January 13, 2012. + Week 2 - Web Protocols ---------------------- diff --git a/outline.html b/outline.html index a58175a3..bc5238fa 100644 --- a/outline.html +++ b/outline.html @@ -65,6 +65,7 @@

    Week 1 - Introduction and SocketsClass Presentation

    Reading¶

      @@ -100,7 +101,9 @@

      Bonus

    Assignment¶

    -

    To Be Decided

    +

    You can read the assignment at

    +

    http://github.com/cewing/training.python_web/blob/master/assignments/week01/athome/assignment.txt

    +

    Please complete the assignment by noon on Sunday, January 13, 2012.

    diff --git a/presentations/ui/uw_pce_theme/pretty.css b/presentations/ui/uw_pce_theme/pretty.css index 84451939..53cac844 100644 --- a/presentations/ui/uw_pce_theme/pretty.css +++ b/presentations/ui/uw_pce_theme/pretty.css @@ -17,7 +17,7 @@ blockquote p {margin: 0;} kbd {font-weight: bold; font-size: 1em;} sup {font-size: smaller; line-height: 1px;} -.slide pre {padding: 0; margin-left: 0; margin-right: 0; font-size: 90%;} +.slide pre {padding: 0; margin-left: 0; margin-right: 0; font-size: 80%;} .slide ul li {font-size: 90%;} .slide ul ul li {list-style: square;} .slide img.leader {display: block; margin: 0 auto;} diff --git a/presentations/week01.html b/presentations/week01.html index c61827d1..52c674fc 100644 --- a/presentations/week01.html +++ b/presentations/week01.html @@ -241,6 +241,441 @@

    Sockets in Python

    Python provides a standard library module which provides socket functionality. It is called socket. Let's spend a few minutes getting to know this module.

    +

    We're going to do this next part together, so open up a terminal and start +python.

    +
    +
    +

    Sockets in Python

    +

    The sockets library provides tools for finding out information about hosts on +the network. For example, you can find out about the machine you are currently +using:

    +
    +>>> import socket
    +>>> socket.gethostname()
    +'heffalump.local'
    +>>> socket.gethostbyname(socket.gethostname())
    +'10.211.55.2'
    +>>> socket.gethostbyname_ex(socket.gethosthame())
    +('heffalump.local', [], ['10.211.55.2', '10.37.129.2', '192.168.1.102'])
    +
    +
    +
    +

    Sockets in Python

    +

    You can also find out about machines that are located elsewhere, for example:

    +
    +>>> socket.gethostbyname_ex('google.com')
    +('google.com', [], ['173.194.33.9', '173.194.33.14',
    +                    ...
    +                    '173.194.33.6', '173.194.33.7',
    +                    '173.194.33.8'])
    +>>> socket.gethostbyname_ex('www.rad.washington.edu')
    +('elladan.rad.washington.edu', # <- canonical hostname
    + ['www.rad.washington.edu'], # <- any aliases
    + ['128.95.247.84']) # <- all active IP addresses
    +
    +
    +
    +

    Sockets in Python

    +

    To create a socket, you use the socket method of the socket library:

    +
    +>>> foo = socket.socket()
    +>>> foo
    +<socket._socketobject object at 0x10046cec0>
    +
    +
    +
    +

    Sockets in Python

    +

    A socket has some properties that are immediately important to us. These +include the family, type and protocol of the socket:

    +
    +>>> foo.family
    +2
    +>>> foo.type
    +1
    +>>> foo.proto
    +0
    +
    +
    +
    +

    Socket Families

    +

    Think back a moment to our discussion of the Internet layer of the TCP/IP +stack. There were a couple of different types of IP addresses:

    +
      +
    • IPv4 ('192.168.1.100')
    • +
    • IPv6 ('2001:0db8:85a3:0042:0000:8a2e:0370:7334')
    • +
    +

    The family of a socket corresponds to the type of address you use to make a +connection to it.

    +
    +
    +

    A quick utility method

    +

    Let's explore these families for a moment. To do so, we're going to define +a method we can use to read contstants from the socket library. It will +take a single argument, the shared prefix for a defined set of constants:

    +
    +>>> def get_constants(prefix):
    +...     """mapping of socket module constants to their names."""
    +...     return dict( (getattr(socket, n), n)
    +...                  for n in dir(socket)
    +...                  if n.startswith(prefix)
    +...                  )
    +...
    +>>>
    +
    +
    +
    +

    Socket Families

    +

    Families defined in the socket library are prefixed by AF_:

    +
    +>>> families = get_constants('AF_')
    +>>> families
    +{0: 'AF_UNSPEC', 1: 'AF_UNIX', 2: 'AF_INET',
    + 11: 'AF_SNA', 12: 'AF_DECnet', 16: 'AF_APPLETALK',
    + 17: 'AF_ROUTE', 23: 'AF_IPX', 30: 'AF_INET6'}
    +
    +

    Your results may vary

    +

    Of all of these, the ones we care most about are 2 (IPv4) and 30 (IPv6).

    +
    +
    +

    Unix Domain Sockets

    +

    When you are on a machine with an operating system that is Unix-like, you will +find another generally useful socket family: AF_UNIX, or Unix Domain +Sockets. Sockets in this family:

    +
      +
    • connect processes on the same machine
    • +
    • are generally a bit slower than IPC connnections
    • +
    • have the benefit of allowing the same API for programs that might run on one +machine __or__ across the network
    • +
    • use an 'address' that looks like a pathname ('/tmp/foo.sock')
    • +
    +
    +
    +

    Socket Families

    +

    What is the default family for the socket we created just a moment ago?

    +

    (remember we bound the socket to the symbol foo)

    +
    +
    +

    Socket Types

    +

    The socket type determines how the socket handles connections. Socket type +constants defined in the socket library are prefixed by SOCK_:

    +
    +>>> types = get_constants('SOCK_')
    +>>> types
    +{1: 'SOCK_STREAM', 2: 'SOCK_DGRAM',
    + ...}
    +
    +

    In general, the only two of these that are widely useful are 1 +(representing TCP type connections) and 2 (representing UDP type +connections).

    +
    +
    +

    Socket Types

    +

    What is the default type for our generic socket, foo?

    +
    +
    +

    Socket Protocols

    +

    A socket also has a designated protocol. The constants for these are +prefixed by IPPROTO:

    +
    +>>> protocols = get_constants('IPPROTO_')
    +>>> protocols
    +{0: 'IPPROTO_IP', 1: 'IPPROTO_ICMP',
    + ...,
    + 255: 'IPPROTO_RAW'}
    +
    +

    The choice of which protocol to use for a socket is determined by the type of +activity the socket is intended to support. What messages are you needing to +send?

    +
    +
    +

    Socket Protocols

    +

    What is the default protocol used by our generic socket, foo?

    +
    +
    +

    Address Information

    +

    When creating a socket, you can provide family, type and protocol +as arguments to the constructor:

    +
    +>>> bar = socket.socket(socket.AF_INET,
    +...                     socket.SOCK_STREAM,
    +...                     socket.IPPROTO_IP)
    +...
    +>>> bar
    +<socket._socketobject object at 0x1005b8b40>
    +
    +
    +
    +

    Address Information

    +

    But how do you find out the right values?

    +

    You ask.

    +
    +
    +

    A quick utility method

    +

    Create the following function:

    +
    +>>> def get_address_info(host, port):
    +...     for response in socket.getaddrinfo(host, port):
    +...         fam, typ, pro, nam, add = response
    +...         print 'family: ', families[fam]
    +...         print 'type: ', types[typ]
    +...         print 'protocol: ', protocols[pro]
    +...         print 'canonical name: ', nam
    +...         print 'socket address: ', add
    +...         print
    +...
    +>>>
    +
    +
    +
    +

    On Your Own Machine

    +

    Now, ask your own machine what services are available on 'http':

    +
    +>>> get_address_info(socket.gethostname(), 'http')
    +family:  AF_INET
    +type:  SOCK_DGRAM
    +protocol:  IPPROTO_UDP
    +canonical name:
    +socket address:  ('10.211.55.2', 80)
    +
    +family:  AF_INET
    +...
    +>>>
    +
    +

    What answers do you get?

    +
    +
    +

    On the Internet

    +
    +>>> get_address_info('www.google.com', 'http')
    +>>> get_address_info('www.google.com', 'http')
    +family:  AF_INET
    +type:  SOCK_STREAM
    +protocol:  IPPROTO_TCP
    +canonical name:
    +socket address:  ('74.125.129.105', 80)
    +
    +family:  AF_INET
    +...
    +>>>
    +
    +

    Try a few other servers you know about.

    +
    +
    +

    First Steps

    +

    Let's put this to use

    +
    +
    +

    Client Connections

    +

    The information returned by a call to socket.getaddrinfo is all you need +to make a proper connection to a socket on a remote host. The value returned +is a tuple of

    +
      +
    • socket family
    • +
    • socket type
    • +
    • socket protocol
    • +
    • canonical name
    • +
    • socket address
    • +
    +
    +
    +

    Construct a Socket

    +

    We've already made a socket foo using the generic constructor without any +arguments. We can make a better one now by using real address information from +a real server online:

    +
    +>>> all = socket.getaddrinfo('www.google.com', 'http')
    +>>> info = all[0]
    +>>> info
    +(2, 1, 6, '', ('173.194.79.104', 80))
    +>>> google_socket = socket.socket(*info[:3])
    +
    +
    +
    +

    Connecting a Socket

    +

    Once the socket is constructed with the appropriate family, type and +protocol, we can connect it to the address of our remote server:

    +
    +>>> google_socket.connect(info[-1])
    +>>>
    +
    +
      +
    • a successful connection returns None
    • +
    • a failed connection raises an error
    • +
    • you can use the type of error returned to tell why the connection failed.
    • +
    +
    +
    +

    Sending a Message

    +

    We can send a message to the server on the other end of our connection:

    +
    +>>> msg = "GET / HTTP/1.1\r\n\r\n"
    +>>> google_socket.sendall(msg)
    +>>>
    +
    +
      +
    • the transmission continues until all data is sent or an error occurs
    • +
    • success returns None
    • +
    • failure to send raises an error
    • +
    • you can use the type of error to figure out why the transmission failed
    • +
    • you cannot know how much, if any, of your data was sent
    • +
    +
    +
    +

    Receiving an Reply

    +

    Whatever reply we get is received by the socket we created. We can read it +back out:

    +
    +>>> response = google_socket.recv(4096)
    +>>> response
    +'HTTP/1.1 200 OK\r\nDate: Thu, 03 Jan 2013 05:56:53
    +...
    +
    +
      +
    • The sole required argument is a buffer size, it should be a power of 2 and +smallish
    • +
    • the returned value will be a string of buffer size (or smaller if less data +was received)
    • +
    +
    +
    +

    Cleaning Up

    +

    When you are finished with a connection, you should always close it:

    +
    +>>> google_socket.close()
    +
    +
    +
    +

    Putting it all together

    +
    +>>> all = socket.getaddrinfo('google.com', 'http')
    +>>> info = all[0]
    +>>> gs = socket.socket(*info[:3])
    +>>> gs.connect(info[-1])
    +>>> msg = "GET / HTTP/1.1\r\n\r\n"
    +>>> gs.sendall(msg)
    +>>> response = gs.recv(4096)
    +>>> response
    +... 'HTTP/1.1 200 OK\r\n...
    +>>> gs.close()
    +
    +
    +
    +

    Server Side

    +

    What about the other half of the equation?

    +
    +
    +

    Construct a Socket

    +

    Again, we begin by constructing a socket. Since we are actually the server +this time, we get to choose family, type and protocol:

    +
    +>>> server_socket = socket.socket(
    +...     socket.AF_INET,
    +...     socket.SOCK_STREAM,
    +...     socket.IPPROTO_IP)
    +...
    +>>> server_socket
    +<socket._socketobject object at 0x100563c90>
    +
    +
    +
    +

    Bind the Socket

    +

    Our server socket needs to be bound to an address. This is the IP Address and +Port to which clients must connect:

    +
    +>>> address = ('127.0.0.1', '50000')
    +>>> server_socket.bind(address)
    +
    +
    +
    +

    Listen for Connections

    +

    Once our socket is created, we use it to listen for attempted connections:

    +
    +>>> server_socket.listen(1)
    +
    +
      +
    • the argument to listen is the backlog
    • +
    • the backlog is the maximum number of connections that the socket will queue
    • +
    • once the limit is reached, the socket refuses new connections
    • +
    +
    +
    +

    Accept Incoming Messages

    +

    When a socket is listening, it can accept incoming messages:

    +
    +>>> connection, client_address = server_socket.accept()
    +>>> connection.recv(16)
    +
    +
      +
    • the connection returned by a call to accept is a new socket
    • +
    • you do not need to know what port it uses, this is managed
    • +
    • the client_address is a two-tuple of IP Address and Port (very familiar)
    • +
    • backlog represents the maximum number of connection sockets that a +server can spin off
    • +
    • close a connection socket to accept a new connection one the max is +reached
    • +
    +
    +
    +

    Send a Reply

    +

    You can use the connection socket spun off by accept to send a reply +back to the client socket:

    +
    +>>> connection.sendall("messasge received")
    +
    +
    +
    +

    Clean Up

    +

    Once a transaction between the client and server is complete, the +connection socket should be closed so that new connections can be made:

    +
    +>>> connection.close()
    +
    +
    +
    +

    Lab Time

    +

    For our class lab time today, let's explore what we've learned. First, we'll +need the samples:

    + +
    +
    +

    Lab Time

    +

    In the repository you've just cloned, you'll find a directory called +assignments. This is where all our class lab and take-home assignments +will be located.

    +
      +
    • Find assignments/week01/lab
    • +
    • Open echo_server.py and echo_client.py
    • +
    • Using what you've learned today, complete the server and client by replacing +comments with real code
    • +
    • Start the server on your local machine, run the client and send some messages
    • +
    • Copy the server to your Blue Box VM. Run it and use the client to send it +some messages
    • +
    • What do you have to change to make that work?
    • +
    +
    +
    +

    Assignment

    +

    Using what you've learned, expand on the client/server relationship. Create a +server which accepts two numbers, adds them, and returns the result to the +client.

    +
    +
    +

    Submitting the Assignment

    +
      +
    • Add sum_server.py and sum_client.py to the +assignments/week01/athome/ directory of your fork of the class +repository.
    • +
    • When you are satisfied with your code, make a pull request
    • +
    • I should be able to run the server and client scripts on my local machine +and get results.
    • +
    • For bonus points, set the server running on your VM. I should be able to run +your client script from my local machine and get the expected reply.
    • +
    • Due by Sunday morning if you want me to review it :)
    • +
    diff --git a/searchindex.js b/searchindex.js index c661b3cb..7b304e60 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:0,code:0,queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,string:1,util:1,veri:1,unexcus:0,level:0,list:1,"try":1,small:[0,1],cgi:[0,1],work:0,representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],contrast:0,hasn:1,berkelei:1,learn:[0,1],here:0,inher:1,along:1,search:0,technolog:[],prior:0,zodb:[],implement:[0,1],chanc:1,ourselv:1,via:[0,1],extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1],commun:1,univers:0,regist:0,two:0,websit:1,recommend:1,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,valuabl:1,prepar:1,outlin:[0,1],focu:[0,1],can:[0,1],http2:[],purpos:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1],winter:0,anoth:1,write:1,how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,lab:1,befor:1,date:1,data:1,demonstr:1,goal:1,classroom:0,github:1,author:1,django:[0,1],inform:[0,1],allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,through:[0,1],dynam:1,grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,realli:1,connect:0,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:0,reason:0,base:0,org:1,care:1,lucumr:[],principl:0,assign:[0,1],first:1,origin:1,softwar:[],feel:1,onc:[],qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:1,top:1,system:1,master:1,zeromq:1,"final":1,pocoo:[],option:1,relationship:1,tool:1,"short":1,pars:1,mostli:1,eibrari:1,than:0,provid:[0,1],tree:1,structur:1,project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1],tabl:0,need:1,techniqu:1,equival:0,contact:0,also:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,object:[0,1],reach:1,phase:1,"class":[0,1],don:[0,1],dens:0,cover:1,doe:[0,1],part:0,determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:0,find:1,onli:1,explain:1,configur:0,apach:1,written:1,should:0,kessler:1,disert:1,suppos:1,smtplib:1,local:1,move:1,variou:1,get:1,express:0,rest:1,requir:0,truli:1,rfc:1,integr:0,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,wikipedia:1,urllib:1,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:1,extend:1,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:1,overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,evalu:1,compon:1,json:1,presentations_:[],life:1,emphas:0,understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,servic:[0,1],employ:0,defin:1,wild:1,pyramid:[0,1],briandorsei:1,lightweight:1,minutia:0,sever:1,minim:1,make:1,format:1,same:1,complex:1,document:[0,1],complet:[0,1],week:[0,1],http:1,kit:1,student:[0,1],extern:1,stack:1,appropri:1,coursework:0,exampl:[0,1],thi:[0,1],model:1,portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,virtual:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:1,easi:1,drawback:1,apache2:1,armin:1,build:1,real:[0,1],applic:[0,1],march:0,around:1,xmlrpc:1,week05:1,read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:1,like:1,specif:1,manifest:1,benefit:1,either:1,page:[0,1],underli:[0,1],www:1,right:1,often:1,interact:1,some:1,satisfactori:0,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,refer:[0,1],machin:1,cgi_exampl:1,investig:1,run:1,usag:0,confer:1,host:1,dissert:1,prerequisit:0,januari:0,feb:1,chapter:1,about:1,socket:[0,1],constraint:1,commit:0,disabl:0,own:1,curiou:1,washington:0,assess:0,chang:1,your:[0,1],wai:1,transfer:1,support:[0,1],why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,form:1,criteria:1,rpclib:1,sqlalchemi:[],gain:1,rfc1945:[],made:1,wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1],request:[0,1],pragmat:0,parser:1,lectur:[0,1],file:1,mashup:[0,1],scrape:1,field:1,other:1,test:1,ignor:1,you:1,repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:1,wifi:0,xmlrpclib:1,htmlparser:1,time:1,push:1,hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:0,code:0,queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,string:1,util:1,veri:1,unexcus:0,level:0,list:1,"try":1,small:[0,1],pleas:1,cgi:[0,1],outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],contrast:0,hasn:1,berkelei:1,learn:[0,1],here:0,inher:1,along:1,search:0,technolog:[],prior:0,zodb:[],implement:[0,1],chanc:1,ourselv:1,via:[0,1],extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1],commun:1,univers:0,regist:0,two:0,websit:1,recommend:1,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,valuabl:1,prepar:1,work:0,focu:[0,1],can:[0,1],http2:[],purpos:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1],winter:0,anoth:1,write:1,how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,sundai:1,lab:1,befor:1,date:1,data:1,demonstr:1,goal:1,classroom:0,github:1,author:1,django:[0,1],inform:[0,1],allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,through:[0,1],dynam:1,grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:1,framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,realli:1,connect:0,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:0,reason:0,base:0,org:1,care:1,lucumr:[],principl:0,assign:[0,1],first:1,origin:1,softwar:[],feel:1,onc:[],qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:1,top:1,system:1,master:1,zeromq:1,"final":1,pocoo:[],option:1,relationship:1,tool:1,"short":1,pars:1,mostli:1,eibrari:1,than:0,provid:[0,1],tree:1,structur:1,project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1],tabl:0,need:1,techniqu:1,equival:0,contact:0,also:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,object:[0,1],reach:1,phase:1,"class":[0,1],don:[0,1],dens:0,cover:1,doe:[0,1],part:0,determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:0,find:1,onli:1,explain:1,configur:0,apach:1,written:1,should:0,kessler:1,disert:1,suppos:1,smtplib:1,local:1,move:1,variou:1,get:1,express:0,rest:1,requir:0,truli:1,rfc:1,integr:0,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,wikipedia:1,urllib:1,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:1,extend:1,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:1,overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,evalu:1,compon:1,json:1,presentations_:[],life:1,emphas:0,athom:1,understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,servic:[0,1],employ:0,defin:1,wild:1,python_web:1,pyramid:[0,1],briandorsei:1,lightweight:1,minutia:0,sever:1,minim:1,make:1,format:1,same:1,complex:1,document:[0,1],complet:[0,1],week:[0,1],http:1,kit:1,student:[0,1],extern:1,stack:1,appropri:1,coursework:0,exampl:[0,1],thi:[0,1],model:1,portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,virtual:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:1,easi:1,drawback:1,apache2:1,armin:1,blob:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,xmlrpc:1,week05:1,read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:1,like:1,specif:1,manifest:1,benefit:1,either:1,page:[0,1],underli:[0,1],www:1,right:1,often:1,interact:1,some:1,satisfactori:0,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,noon:1,refer:[0,1],machin:1,cgi_exampl:1,investig:1,run:1,usag:0,confer:1,host:1,dissert:1,prerequisit:0,januari:[0,1],feb:1,chapter:1,about:1,socket:[0,1],constraint:1,commit:0,disabl:0,own:1,curiou:1,washington:0,assess:0,chang:1,your:[0,1],wai:1,transfer:1,support:[0,1],why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,form:1,criteria:1,rpclib:1,sqlalchemi:[],gain:1,rfc1945:[],made:1,wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1],request:[0,1],pragmat:0,parser:1,lectur:[0,1],file:1,mashup:[0,1],scrape:1,field:1,other:1,test:1,ignor:1,you:1,repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:1,wifi:0,xmlrpclib:1,train:1,htmlparser:1,time:1,push:1,hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file From 460b8e96d8cc245d100c7105f4378ab968287922 Mon Sep 17 00:00:00 2001 From: cewing Date: Sat, 5 Jan 2013 22:05:37 -0800 Subject: [PATCH 014/114] * minor update to week 1 presentation * major updates to week 2 presentation * add images for week 2 presentation --- presentations/img/icup.png | Bin 0 -> 73513 bytes presentations/img/protocol.png | Bin 0 -> 43048 bytes presentations/img/protocol_sea.png | Bin 0 -> 73233 bytes presentations/week01.html | 53 ++-- presentations/week02.html | 448 ++++++++++++++++++++++++++++- 5 files changed, 471 insertions(+), 30 deletions(-) create mode 100644 presentations/img/icup.png create mode 100644 presentations/img/protocol.png create mode 100644 presentations/img/protocol_sea.png diff --git a/presentations/img/icup.png b/presentations/img/icup.png new file mode 100644 index 0000000000000000000000000000000000000000..bc1548104c2a4e65c7bc80a3734c893c12da27b1 GIT binary patch literal 73513 zcmeGDWl&sE*ENb_2~H9`XmEG;Ai{0HRqUPtPWR{mq10rLxO^WLY0yfQ-*?qk%oeTUPbr_`R2Xa zOak(O=pd=-3eLxMO$WIw4LMNnkbJ3%^I!Y2v}dhUHcxRs{dkZfdu_ejVq)D>+|EgY z6EjHjbngXTz{)+B&V0)_M@^s{saEW{LH*wTdWDSTx`|G+yIvD}9ga-tKIowMi))Oc zl~O-aq?i%!f--dvZ=ly-jbCO*VLJaw@yCZAWZnKqL+A+_4dDKNyP()O!~C?QU0d_u zqP{x6?;UtcjP8AMBma}sGCqkwbE0CKZ)q9I3@>awKHJr@_8^_M)k2749GTQUO^(9;#PSJepHb^N~i_uNm= zru3&6NDGMC-D;+Ib_O3wK0< zL)T=3h>6nZbBHVwO7MsU${uxlYc9%z)H=kt-hZmwIRUYs`^jU-huRDp`$#!ybj!+X zNuKmYA1jfMuOckbXCuX)4sb^vKTdw(Q>dVybBEZ+q$lS3s@K2jWl3w_`Ac}k8O5My zGJ{*vYeCWeG%GB{kUW>fsbEr>(RBXKpAXv^7(d7P6vxwd$qnizFXCpSPXi<)90fjs zCX>INvM)n|RRo6fAx^ELc`RsD+MF*nw4Fib@|s-Ryt;rc)YhVO#^&hH-$!BV+HOLZTW&L-YZ^fFvL7)3wqz8Yr zF4_G?Mqfve*E#b?1=r#MM_NrX@4ALD-W|8%oZ{>ccdMvZX<(9P$E7fnX{E>+0Zp|_SV@BB*hfGKOWA1Zo z?$<>Ha_lKpcSDi&hK*QLHY+*#9xuT+~5Rk(uUGd@ZjM;6Aazk91j5M&1#+K-f6%EtO(h zgz#uws?c>U?j^~*z0+Yo=qYz7$(Cn2X6__|VnImu@`*Qf?Vx$iNHb5e*XcvvS@tE* z#-N(zY2u6jK>KLtWuFVmUT~f*Uo?@+7Co#p=p&e~%$9%170eqq?5=51xk|15@|2PQ zs{71h4vl;uR)%w@#tjszb(17)rC?7A3qv3!B~1dNRS6K|;SF%VuWDNjj48_;FIlIx zN;7PJC&eDDGmtN{0)UBq)86+$8{Bv@iy?U`TfXB;+}(%8*?S;DhJ(lnBwsUmxB+~s z)pB^$EwW#=>OZa%q~|__h=0bw5Dk*fIj*E^IFT_wJ1}~;ru4_c#p?_B;7kCQc`T~~ zsE&v6l<+tZvdg{?GO}Z`<;nXzkN4m;=M`LubGd~JfAgJ!0d`4WkmK*PcJ|WK?|f1- z&#JKK=r7LL0HSXZg_aL z_vu-~3HwoDs_D;PS`8Yh8@!h6c>R?Jr<8~Q4aptxCbr+TL0vkY+~zk@puP`tdAhWo{#o_yO;L}j1vzFA2=o7rqtE8s@{~xU-HpR%pprLtIKISZs!Hhng>tL zUe3VU)t;RSJ?Rv9|8edbhC;zNX!WI9@hVwbRi1Lv@k9l${e59XzZ{58jjllZm?jVABQ^WcNDusiuP_so zFqs$D!ft0K?K|f}ws9j>Ffre22`Hin)Pw3FZ<|jSE4}eMk14&K?8&y? zrz(uGxN`-B2_u624jHgWuYOZ9?oNN>4HTDKO4+;>t{qK$j zwdWP?i9~gn`Bj#%BT#6!V76wvww6L5C>FiT{tXA8GI|^^6tfy{H`FedRs7M0JI|3&gxNc zT9p4-OfLdIH(^+_e%T=`oJIO9x3`w>Xu{%nZXWy*4Rx#C>$Wweh)ZJaX$z$cpE`cB z6#hE>Gv}|Dz<1Rn;xDr8cj{gshdMlag#?Na%HE1G;XeyHD$^F}J)PK0lw`8IKb3~t0SBn^C$lhjREjkbE&_W%so_ox9i+c zDs&@tCaI#cYLFpa#P_n3sDb4Rjev|3Vp=m;tj?ggOq*Dv4n*Vb>#`8u)^wS{0sD{iUVx@ zr{+_`mZ!X9p(q4JloXgi*uMQ^qvN8#jvF-DcReLH>Y3brC%PdY${ulHY527N1Wi2U zeH9pDF)anAF~jw*97JyKHX z7^9EtuZwOJw#3)m+N$T(1(C}DkGJkE5}4<^I_0MLoBX}VC)nk)g~o86_+zBZ^B>GJ(S|K<8%r9JrmQsGcgQh({izDE zHb#aSi~9T6xuH!vHg?;@fnb8@0|XZGD?P?u~E$8%8=_(%F4p9D&VV2noGWAM-S5Gj~NQ^-(-tk*P| zSqkWv9ax*ZADDZ9t5vJCRG+=UGIddUP2^oX5^P(HDRd}HMRen6XgZhFTx}%dGrK<` zMo>3P*^fS}2hNPff-qCW&ql|cTibyeS-`8^k!rs-B;wC*iIn&1OcbZ8)rBn9u{$5L zeh)mi9JQ56Tfm&FH2p1-yEjzcx(>xsSCH0Xw3|>mA$Ex!OLysq-F28b~+XJ4iboR}aVLWW2*FyQL1%Nxesf;#pW|`t9tDvV!Tg`-mI!qwuc>#Ff zajQ%^&U%uxWU6i{ucwdo1DVPKe>c ziv&X#qJ9~>%4kmTb_-{aWCG=2^>--RQ;&2xtbbEFG;SWRGN@D= zNpjz-{G#}9=)6aU8ZRnZFu)bwvMVvOICJJ>NZk{)s2gL~J*GoRg7=YSPyxFhvWGi# zrvlENZg&zs-nZIE-7Mq9;NUZ7MkgKk0V8PE!))Sf6QMfO z>MrGm9;cn{kH;fody1ps(@AD;wiN4+K=9 z&F11b_MNX-= zIIUD+_fan%*f0d*_;YpCG2AC~$1&Ha`<3qIE5{vIw~M&920J1n-9~O{lYJ{SvKh5a zQ!Ts<#$Z%amnnOZtH2vo>WR$?67HB}L)5F1V$av)-Pg2(%h=Kj2cfx-L%#1yGF0c$ zI_KY1zs1Vq9i(d{m<<*BCb=jPJDpU*!Ru$Z%NmH$A0NhkF5%=VCxQ-~6EMXi!JQF! z{S=Be&EdCKdIPxV7FZ`9QH3GXLG=if;%y7;@SYF10+$2h8y6i(N8^o^%sgii1*4R; z8Hz|wYdh8f6T|Tz#KnCjy$UiRHL&5|a(~CrF=`p(KdTx5w>jT!w4D^5HJl?4_+w~8 zrmYiaO#?9$=YaZ6okp~YZ8G}XgGZ)F$+TTFavTCtui3f#4sLI1^TG!@EX@E>-D+z% z{p?4fBsX-2Ax``gJcU;Y4gou4^)(g5U(>-+$&u?dQv4eZ4V#3G53?>gwVWfouh?1~ zeP38k`IQIjKjoThsNbneoprdYJJkHXJ>RhrZsd~w1iQ!=>ygtED0@6{qn|@UGkImw z-Mhs@PQ)X+Urzqv>nx8;zZXaBP5XRmu*}AOe>gdC;zw{;8k~IAdjdRGz-q{}X>TBt z5pSY=|22=i9vmF2xhKrAIj!fFFcshGeRn3)Bms#aWq)-lax^J2GyUlg+DQ6q?n%z1 z)>G(gtSR)61t z{2<)W-x7n@6Im56aeOC&VbC=zW}><(!J%)kP;&0=m01z#-kTgP845=E$)82$h49&m zAE~(gNHYUooONJUo2^HRWl}Ac%K3cZ*Cczlgm2HEz}o9(q4iNODniPNRfjwKz$RPJ z7u(p4hr0{WSosMR|A8x47qlk*FPQFo{0gy6{4=Rohu6k-g652RA6IAZ+BY6P;Yr5I z%W-pBaVlr|NA&L~GwOBzFd0ABtMBD4B)Z*r24PoA7A1SD=bc z1Xy5dLN(@7ZZ<@wLR)|UbY1WdY}0m@fJ#r!genHq#@{cArPS1n)o0pW&#V>(LK(BN z_~?cCNd+pwn5kMXADW7HT?KF*ME$+^Uh<4Y5vPB?jmcX22?l={I;ym30=sry5wpe- zF|2-Hzat*1!rhQC1O+0@(g`JjU~~%E74!Z@1axXC2xmMfFmBpLF#Zrs)YUPaqyOOJ zO74v1wu2V6GFq=r$sQP#5Ryj`di@_Vxk+PI=mo=FaMxp%ueV=fnDaM#!f=7GUVEx|MuO$0;NO2Zy@k>4<*%_kSG0_>sQ+?H^|L&Zn4yMAs(nR9P3RqPg3e60~xV7 z?saUUn&Q|{gZwg@jP zh1606Y}<9ybAEQw%!~^dS!b^yaw&I> zJ@D)M*mWyE_!iX`V;C7VQQvrMdDc-)-~F_h#^tc)mG`jVS?U&5trf@~s@q;@edt>s z#8t{@(&LXwOyNJkwdo^ovnMI2#hYEkZwxC*7tfByIIc9y>Lm^Jq@c`g?RvXBN%)x= zTPQ(ll&+S?j*+|HuPF%S;zQGiUTqcENgF~XsSM;=y}!;!(<5sqyQ_DEKCjbmb{CGG zfMfhsO8UnI6jJXr{oQ}V($W8WT72aS85So>^PNTaBa)nbYEDxZ-f$MvBb-JXKe|6L zQ)g#WRAdAR+@BuE_K^Y(6_2jL+GWF?eru#urZrh|6NpE~zI@PF1{|79G=Gq||K&!@ zWmy@E`*1!7XZGQPnvgZo?iCA)T0+2^@%wQm7B!6$CJ3HL!q?i&zyU-p9I=N}o zBdab7+T&=pq!go4Ji5(sN(nl8BsbHdIXi_+AwwY{nRJ5UIV`6+00S!qY;DVQa#!aU zfdE6f%+ zU^P-N*JjivPvx?k8krQJtfUo3sup@2B;TTii9muv7HtHw z@{cvy?CD_JpE(K!V^}gSy!n}5sg#kWe^}n#@yZaQlwXOIB4f~ShNF_|m0~!Smkup@ z^5$zd04ag6m98RO_S)H=+LJ)^0*xx7T8#E9nZb=yBSUJs&mgraOx|pHn+ZSd!6(cGbZuW~m8j#Jc>sQ|{~JSwHMo1~;VzH<_J5K-WtDUe#+> zR_%my{Bou)y)?4&;B{SvCqX1<#OW-nQdXBb{p_*W@-Pa8HK0J*CbJZyec#(U2Gd5{ zB%X`0_(0>nBweI55~DQhR>j)8TsyX5R;S+9HEsHMI1<*B@%FL(?6592ndYQ@T=kiQ z+tOP}K*BO(j3CRXUJKIJRV4#JBZ~pR_^B~TeOD!;VUyEgvwX%jZQ12}+ePcrJ-+QK zk1-fsMi*eV{5(L5HV84%x~!5rl8q?oA+;32c7$&$HZ@}6a&r+U^`CWKg`<8>O@bd+ zjQMlXINrdZ&m|}d}U>d4u4@pV{p=t)DR zcv&U2GN$L8UpW1msR4p1U#MJo_rp`$v~e`YxK_wN-&DXB^Ac_b2oJ{AI_;<)TJyHi zXpgJJPiSg>=tx;UFm3B~8pv!@#pIn+waS`4#zwSOHMQ4eOtER`Dc9O0(3x=*_esMg zwjUiy&r0qm0^i;>BR;qPT(`JSStV$J`xq$(80F}2kQhF>i3FG}r5uVe332o2Yw4QV z*`|jiap%uXG}ZUGUVr%dzs>@jMzdKz=fIAkRRJ1Wq-7L^Hk{^Kj`C#(W0%4`wHtNI z?5n$|ml}T#Mz<_PSNbkC3z}70yPqy;g7}b305&=0H_Jhci@qbT zfLt0@l#lh+%@n^t8Tr`I=@kLw*~=-FdmMOZ5Zv(}n{%(74^4Yh_3Z>^>3ZTw0Ej5I zJ|SO1A8`a&9zC7}<N%k+CKZ<}_hyIKxg zW*8oeh_Ii~`TXN5QQP5{rb?qW1D6TLwfOq>@ev|iof{!@uTgg=y{QX&(|Z7Iqc7id zjA5RtJFDXtlzp@iGkObue=GJ;Q^KlG(I)+`LR82WnP=m`T?cZp0tn5pWseI<9BTXp&1Jf z7P>%sa8I*6`a-QbT{Q(b{;$^G2)%SK*nM>;iR2BgRlvRW^zka^|)`_dA{StRP8{GcALM|xr?d{(e;w^>d#I|zG(?CX#*br@wpeKo?JoeV8eYI^c6 z`*V@Wq4(DwTC@_%D$6&M${TtgNM`Ugz6#DO1v^NLOzyE~I`&nZSYx;zTloJ0M#`)D zdzs-d9u=K?N_e%M?7d(mvtp^MH@nstO+<@D1^4(T4#Aed9;HW2+QVUyZTD>Mv$XHZ zPm81PA-_~91MraUnDL|Y%DcDQEEU`|{??zs5a`zG<(S*r|A2o+96RHiZ+qmj?6F<# zHV&Nw!1u&iU~hWolwvcP4W%h~vJ7sJnVos!hwbI`P2iBL&H-$-#iQ{k0!#F1%FD}t z{`@&l_h|{o!6FpnxYYc34*9p#;KKqXYU`n4T31q!O=w&)3#0kTIskq;(OXos`anEG zD#|ZtfMlSxxE44IeR*?5$V`(W$`n({9 z?d#rATV}VC$C`X=IO*~0i^Zt3;k=-Hi&+oWG8(3XrlUc9- z@Iq9WdB7jzvOvd{(ZVP+EJQl8C1ixM9j}m>iaBws+TqFRLp?U-dcG?=S#zg@zBf)e zOe27q_`}MMhb&}K@CmHqt|TeZ*}2w&tl&_RD%gFv4GZsOJ?9X)&fvjv5`TP@`xF;s z{EQg3`s*X^)iilZHRzA`srlY1)fF_sWMXZglfYf4=MtQs<|B>2lE1WK%51Qp8gW*0 zSK&kD^DlgoZGX%(QQKAev&ysS(QEMviaTwEXZe!AZsTZc+l!He;_ayE?>_Uw2aM4s zT5)n=O(3=~=TXrn@-dm*cByTQvn5K}Ht(Z5gjBTyE{QT@fXHn0>r& zMs>(XyBB^ZnTMLn0-KK5h>+2&$uT_>lh&(oe>19-#%l)!)g>-BSj(J#7OX{t23RPy z@~u7{s>v}EcwX%4rLst8uSmV=JlRqvuFTBUz6TebVO>`YU))R3yS{3pQ;4&r0i|TL z`ex6Xm)I?PT$R=TKF3h(gBo*{FZgnre3O5Xk#3UGexI5xucWRbyG;)Sd!8h}w_z1= zVOMK4_k%#0oVKffHfwLy_1C=eh?wv7G*XA=w=!)MEIwX-MWy|$@#t6` z1tB*Tdbo?S`)71Tjpou<@)lCia>hG$E50=*-n!!Qxobp2G3c&{QEHIFCXJn zxZJYy*QU8J&r=+1gjio`WTd=yTo}6C@qf03QW5V5VZ}N|Mhh;0E01kVnIi7y(eDmA zqGm)q<99nxr%_zaw2%lXS?{mAfxtO$9HXbY}B1@P|t(;VAXG1R5jM%j66CGA+qj%5gS1vu~n*8r(8 zDqVS5=By9_<+I!l$X5G1}MLQ{UwIzGX#0dy(IfsSAX^{CZC+C@gad+w2_O$u9U{ zb?VFxzLDhd338PYBHfz8uOoJG>7hTo=37iojm6#^#(nrZn^$hkP;;Wm@IRAC6_2b9 zY|EG5chwf38grDfuQ*z{PK7Jbd+%I1@MM=2pf9_t4=M0#(6XubGi5jJaV@>TEn|lf z6ntnW`7R3R5}Td1B>An(wvFF^h%a090Ae+ht@gT5fSR#hD(kEO4EY=&08{LG{gv67 z1W!y%H3fhPk~TBws?GG;q*riE_QWqRC9@LZ{OIALT8K)q6CeEK(k5^x@+`yDkr>M9 zAq3PTYGP_?Xiv|zNSs==7K_`d#{C)S@QR?A&3sZ(QSmznV0%1Q`YD^weHaAl5G0ks zi+jH4$%R~3oEPr>5v+)JKe6iU#4}kg9!jQw@Hq+MBy@C<9T(l13FyGT_gXD>6LBP> ztv8c=h=_=Wf8t1PFE(@C&Q^IwrDhWxjlH4%hXq?WU2Tp`NI>UxJsGUhY;3*gerCo+ zdD$g?-^vdqBK`L5S3H>nItIqTl+gRy+Kx28Soc!gzeB2nun`dvP-%Sbj1Xu2m{(8` zKeSe3ngNeH8rI=+|G`s z^I?6T?{2AKwGl_LS&$xS@Py z4cdG?cfUPdX&gGUr1&qT_w(VnG&d~DTfXd|nvTa$(uIxTOJUHMC;}=0_ zXlS5jVk-52e{(ro#j0)J%(UG8sixLoG=yYiY<$KU)OiK~dF+H!JwPlV`FwwtDJ7!4 zNAN$C;ZJG?h7VgI_;y<(#QuASx&9@st!a=M3qGH+y**C(&lbzz5P9x>nVp+En^ms` zJe@X9c^u`3O3KJort*h}hyNS*OrgYFqq%}z_oEp$y+-fBL?%8xuC;9U`;QZxk zgjloHfyDRewr^wvzHsJGFftAT0z$6|tCFH(uY%C4n1Ml_+|yjC0&Gf~Os?M(q)l1F zL4+YD%#OkLx4%MA09%kaWHtVbkDH9d5OzYmMyJgwxaaMzw)0^plIU?LRGwoA6AP=}6o_3=SorvQ;Xegr>KV`CaXwnC)@~eS_^b5q zO!H`M%F}tF%iW1;LPCN@n-hgZERib1$kI}3RTX`^`-Ppe&)du6zkZ=yPM71y$7P@H zz=sK^rSjQ3kxbpa2F%mlzTRH9M|};ZK<3N|6I0U_oysM!=fid=kM9#ZWYEqu?<;2!#Kn*7XK)tf1iF_}p9t1A}kGK9|2Gpi9;yAnfqV3G>O6 zvYKUohcA^+vlGZd>Sngx)%xE`1R-K@d*9RV@9#r!Q3wPQv0BcOV>9WEV<_+oLu_># zK>iD2f~6M$&uf#^K=NOy`hMwuH@ss(b{)}>J>hgRPa{i-Vb+-5vgw!kcyqV}=b=@d zveD)3e0!t>**r&crLo#~^WZy(7l%TO<-8ls#cDB~_c8nD>q%v;6J!#Q7%F3AL@Fp4 z^Xvv0IbL*#-|JI+PR``(-_5BQLcWtb&Pf%W%tDiKa$f4Nyi1NO)iyDI4?+mLCPsBI zuU&SXK;VP~1ZPjxLOYKNN1g`;Xrz|dPj>>@b|GZeXuT8l)SAVe``J}ViQUQ~z+ha4 zl$tt=oolbc-YYciMgtvla9DPU)dtbcmO)en(Aex-u9x^9ZtgsTIlWw^l+{xNL0I@k zieE?BSnw=KL)pq5mf6@(~UrE~?2s>!6jdeZW5M_t|A?3QHO8C`Dm zab!yR-Ar&12>PVm-nzJ*uZ?aGghKW?ITKUt?5wii(=ip)VvR2F{dM!bP1Q_Kj|gG` z$kx8P2if1eJzrqp;EXg*2?FO7geKfKea)R;lj+p|E!sfnC-;YYneczh5lZA0_VD0g zHkC7>>%Kme`~G6y{dj=ia;-$l!;|j5;RzotKA>&iwa+dI)9P_W3RyZz4vu854Ua%b zTr82x6nArT>)Ln3!P%rv=Z05&`0@_)%#wg#sxFGx#m9i+cJD6O5XpwnzHL?e)6Rt_ z*-OpxT05-w@L~KgttH@`c%i_e9>ZF;9{ z+_X~;`n5tz><=R=%*WWcFj${$5z;1CV@oimwFB$fbKkqMCcp}E`!B0gVR-x67o0Zo zppd6Ka|u>1pRRe3v{4@r72>mgUER&5pHbKdn=Z-`4i#^der(DQ!9 zybWR$+iRQk)$5o6ULg{=p`jrtomK~EeJWz7nzFKQ6coXcI83wUDpZiI>T%w7sL|!c zk(``tVrJIhd1F>kPymS%E;4r3jJoZE{lUo49{b7axEx~~?@P_r>O?-5!cf?ZI+B{2 zU+L7U46b&DY(RhsV^99RAyxYgm$E1DKoQw}sZ6)2wd>_7;7!E!@=g@gW=fB2qZei3 zUp->4!z}vxdb~eZM^>!Yb$&RVAKSJt(!47tyxw4I+h?S+fd_maXN04M*iJ*^FQff` zeA5}w$Y8#L`^x$7<9g*;fo*IPhdBCEx1VUZ&#S)Jqj3MMLS3g!xjsIpeKvlrP)ioz z<&4>GjhmH??QuJl_~9n^9i=x>L2xvK19G6a0!z2uWgC(JjZT;AgF-@_UhkGVbcY|V zc6nTmK5J@f7L}GZ`aZj9HCqiy5c>{>V^G-~JTzG?L^vN#&OibPBo-cnT51P6-|uSu z9sjPo-#}6mIx(?AC>kLo9gs0FL__jDo7FruB-BV78j?T)m`e7pv7D9`9(bwN9CDe( z>x%RXk_hADVgb7}akGcztT!>{K7D3m~R8U;7KFGT)CO@3-=A8Tw53YI`KzXU9jAte-8J06N zr;Rj2C59nr{eegPgX1kvRU}&NC?BsOvE?XOBR&oGX@EZaT`Su~JV9Sudgls7FOwrT z+Y^wEhn$!$1WXXuWHhY^MXK0Gh}9Ea)dVgaG{S3Mt;$cP6xCCD!3Z~^Q@4;e#0&8A z{w63^UmGUSL+*)eLC$voqC*JxZ;flotQb6<_JkM}cYpioK`2^Ky#m+&3uh^7U-%Qj=!#Yk0JHi>1H^lew2g)P^1#Pa;gm^zVWU~z{z_N<#FhwMK57}MTCY%3ZfiR4 zuQ9o0b8l!*Rl83-Ef}HgbZb)*UJo}wwtD}Mi>$6vm`AaW6(xjOP5FUd%PXBb&1x7Z zYt8V@4XRI#RMacOJe6J?X4+CVZEsKDuiOp>6P<-UFZ)d6*?c%8aC0ScySuSMW}Dr< zFVCCrB{HduM9DJ{soAdcN<0J=KO{GoSiM$nKbmX9U?2pQUZd`px}ImSD|qqhyyGGv zC1tqN^9GVQi|2f_TkPZ@l^!I0e1c>*2ts1{mw+LOA;TKwBkae(-=V~QX~5KlO?5qp zzDlQFQ|EDIbbWKf<93S6)bqj$Nm}NRZTX8L>~y`OMS>UV^8S8!YAP1ux{k-Q6cCp} z*hWe&CzXZpz$$2A`w%L6LdK>i8QJ) z+C4!*!g4i)AMSZsio%$)<;Np8DUhUPemFK07~%&Dhtcv>>}jD>0nR3{DOGATY9POT z*e5N{`$l-ts*HjhyFmKBx3?EY?DrrHWd!k> zyD=5SEy6Q(}Dm%D=K%Iy-=fembJrCh1A_1+_jjoOZ9Se&x zD7bHsJa*wZ6#N+y|Ii^h9j98m1zYI#HW7II--8Xl&4A2x{D6#Rqn>H>BS`6HJ|F*nn*mD6hAP=ef75d;#}oq@rJ2b6tj zTV06!^@DV2b@ZoMnCHT8(mCno^4=mwq1Bop^EEFt@ zM?osY+PBc>+U@NOvt7g%wVwMnf<+@Et{W|5xK^eA(Mb)LR<>@3AOly2@aY&Nt)Kd!Xpi+N1|F_qdoPe+W)^3J3uvcbuGbA zAMctga?QSxXvu(Rx8=S5f=U@dOIg$|o37UeXR zU+VV$ygW0%8@-a0I!v@4we)k|UOq!vg4Y`14^0)Cj;E~3c=oM`&H5a3t-AqFw#ovS zMGIEe_gp6nmFk7be<5X@1EgM~rK202m>AmJB!;|F)e>oDYIOPj0qDgl%>i|N-{77e zA?u}@{on9J2G@I|XhIa|5L6C1@H;v-X0%YDTBX;O0m(SK`};$qiB!;GQBg$@P*dUA z8qjC31&ITB3b}%EZ@8FbgH zzK)HFdVBISB$JiXoO+tm*w+Tc9idjC5T68myEiUQr6bh!577~LfZhTUzw@SCnrcsn zj?|f-xxKt~{?>yMtO2^-JHRC7YQg&%hi5ra89J9-J*-TOzj;IcAvC|Ueos1``u6%H zJmF!_^!Bv$o%hyBaAvBRm1&jZLj+v}Xean))H7#(4(3Ykrae*7VGMU9rH8)gjG}V;ByBr*u>%!tAMHogYlD2+>=Zs${;MwK+zW`5DZXULGqQ@ep)&`kq>=B}lL;zG{m0 zY>gmlaAvw=_>Y{6FtF@0m>$@~95BE;X+B@(#$NoAsweQOUxb=Ghn0aUI4$f1-9vdf z*;|yU>Y1Sz5^p>FVIJo3G~AX-zbiHzyEU38o0}23BS9Rw$N1a~jmo@}FGa82690F3 z>d%V84lMiOBEy|+ZU{XXdjwex({WKP#$nOC1K{X`Q5~E8u;#-=LSA=!W+Ld#QWR4q z4tU=L=VebK;J{d#-%SJB_V%;{>^C@m>#O;Vp>Un`m7`^QY1?~2y>BE+NP1*v2gsl$ zK#6%S`4{UrKg8?vK^Tq#{T{z2`^}tOe*mtfara#r+IMz5RLBjZoxyO_gxVFGl7@x^ z2m{gHB|SAV658{6W)C5)W^46@+Fg!C6*sNAKTK~@;<8yg!&m)_Lfl78%r z#h%dn<0pv5CY#2bZ^m_TvQ<`B7Z-^G?pX+y$WL*b|4FIz=YCH_#E249{qySoR#aKi zuiZat?}MN%B@ZNHvZb2Az)tuu zy@)TjNdl+%XXIUO0HO^c{}XiRODmn0Q1;7@{d}&UcyEml^D8U9Q{n7Y6#rjpMa{8( ziyXN8$Br)#K|)=Cx$Aig#>2~lq0a7}I6iyTO_44)lA>qRf~S;sRq`85pl48WBb%$kzF zO}UXR<)|Gg^8po@exn~-i4OpwqADR4fqGLsRd}$I>DdRLPR$evq z69x{7RWzE33-odgcg^Sb9JD@3xN?G5TFyTR3ImIjy4C>j=BDaBWZ@PsuI-lQMn_=UUm$xZyNf%B?nHUbC?3^JC39O=?o#$HR zg<>MvzpV(V4v&}X$%>1MIW`L`nan4%@*yD@!nq9><`4WU-XRs}WHz4!q}V7gt2?bc zvKY#u!;Kb4M@K)JEk?fRdH0k1yi_8G&+Bs33yJn$L@pt<2~0}W>>5-pjMSSJ4iBwCiI5)6jD@)$^QvkX!jp)E*AT4Si7K$1@|@+8P}nnW`>a2 z*S%=o1eOz7lP~ec1LvAfH+?@9zE(0Weq=T!@6^4*ZTY#d*=|$U9L%-RP23u9hh*xi z>^bWOIrMvG3}PYxsx8$JCab=&QG->xP|WYI9uJi`Szk8czsw)4O64+4Rq3zfc3FdJ zTxVj!$RBh4I@?WX8V8m%v%gA>hwKNTHFFxld$}opa?VdCh*+`;_qx#?wt!x1f-m)( za)PZspOQw2jxx6eEqPe2=m<9Op5veoNyw1REbbXu4X=!O8XOS5M zyzh%3mE5m=ZHM6C;Gm!&sCkqwEF2saJw3g~rPNUqPpiB8`vXXl&l2*_fiPToz5Mn1tyf7bf0^*mc=xC;0d$`?tyW`u7Cp(_p1iEh>%4oCQI$q<- z_)sJcL^4Lzss@<-kw*>e>&+7me1Mdz{7(pH5L9`2b+rxYhm)6Z(H~(%;68)yM z=Jcu=Wj1Z$Ti(%=(WVo-VKFST8@O01U(1QllF>D7VS|w_gVu1;#sBuQQ>gaWU!eAb z+&4BW*b51?YH7Wg?zJ$8Fr;Q^%=Nm>A?tC15+16iHlgdJ#5nZixxHICq*-O43iH(H zMf~({|8%N0aRt%wF{Vt2m+EKB8?!@9nziB2m(@4BGP3bN=uh?cY~7Bozh*> zEuCjQ?|Z)g|K`luGdiOJ``LG_xMB&lwm@W;@s!IJzt9b zVr3|ogx`7Z7xaKvb)ha#hUmg~w%q`*eh30o108VzAVz<=wH|N*Qc_ZhK!iNtcm5U; z(E|9k(^9Mh5JP$6Jg73g1Vlt_H^^Ln0l5^(YMK(78{#>)FOuUVej<{0v(W)g#jz4I+(7;VLKGm9-mMOJL-?CA`w1-v z5;TDZDmAuk(Q`lk43G@DXGYZ1*q9jYV&%|Ox2!Q=fEUcx8pSHk+ zO{d`y~Ko^KNS@7FiX*P7rovtjw|ln75HKOOmLlD89?Hzm3h!Xiv?D7!ZyK zVVabcl>ro?0u0c{=N8Cd#3Ute!nJMe=)g$s`#Nf|2zxk>Y&5{&@L<=Nn3&Me&|a&R zl5)TGWYjLhh9$KupKQhwJo^RrD~jKRW2^cw&Ky(i3-Cry0aSE#bJMJHWWIOro}-f! zwA@XsJ$wyt&Dz@95`n4Ht#;mlOUSBUe-)lqMqKt^Vc{#CFLrt4un1g z4I}pd^I{gx9}<%QZ@a=^-3EdPQ40%(9{xj}uEJlxgdjKxTwEO1+CnsgqF2<(i5o%P z7Gtc9fg)wlEb?56bGZYZj#9|DQPOTeUy#MXDqy&nPvFCzbR zL{wI@9>V9)EbC-h=eL;?z1aRD*!$DgB;WzR^x9DFPuF7>5ZBZLGGDn_@eewW;B>Q{ zK)`KJI!xQFk1#7l*Ls;VDWa8#(Cj+Ti9U^C%rBpGWXvVH-@WvuoOGEfe0=)ss3*)FCV| zv;#lh{<+oG7XH%!0g!=z&1>VNqPmtq{R0)*G(eOo1qI__xwc^~id+t@0G^hxx90%* z3X02_KYzpk(EoHD(_o}Pe|@?(o_F&{GW8`=oH2_yWzX)EkL78S8nhCQZ1;XwjwiCblsiE9}mzG-Y`3f4*BNKSrUw+ zvhxv*j__f^M;~XQ-Uhku5BsO{Z|*F)qgFjX{maL%uvtA^Id%AAOLxg=!)`?`Ucha8 zcXzJYpTu>qPXg(I6a;uizYEQncgF`x;!yi9>B&cPZ z0X+awV;)wB&8*)Ou6}Z#DMR;h7FKP$s8nE#_Ix)PfcEgp{Bw5vH)HU%&Wjg2hlk}y zepUj?0A(TkXJ22RsJQrBIEHz8wE+PB0;DUJ+_ydR32PVV+$&>F@_@KdGBRSmN4;{L zu&t}D4OJ+ZGI`C)$_fc$3k$D|yQ0OQ!gGS0871f;Q0=^*l$Pd2Ef>8FO~5xG2_fvF z{QC9b%03HZ^s6t~^m#csBcM`1^32DNA3Hhn@3X(g+ZZoj0%^e#mdDYR1pe(I#VrUT z+sGEaYQ;VW657SzpMXFyObRv)lzzZK?+Y^@fhv~8_2>-(O#nZ_xXS+W7s~b9ghIfo5D^iHC#&ATdXNH`I^SNe z$cZ_P{PzU-F4=g2$zU!N5IG=<3rLqJ2~}110p1cijmpW$XkGqGF0?gOeGC^P@~J-B zC2-uwTOOAkyjxWbkkyvQO0(TPGhyjtIIWA!ho3C=#0N^JCP7X|;z?4{qvW5OoYqqd zfRH@oY- zwWkUi|N%!dOabe+8+Hx3#or^?)fFu$|EZ#0mhggB`{ap40O3IqmN=f#j`7sst@ zQ{gFqzHXN69xXPZd;FM!jcwp{a7r>f?R-n%m1YX*;k*|OJv}|91IwLJtbQb%-Dy?v z9v4xN&6g$KL~~l_O>`b#p8Mq)=ZIWZOp7@cdx1*+_(lAnJ$nCUCY0?w-N5SI+*UZc; zB{j7#U4aZlXj$=|FJ8QmgBsImAxI)4CnqIE)TLes3d+{Dw!Y!PM3Ec7VKoB>-x9@Y z;<#SeA}K4o06!5AAAf8=gnvQ7`rkWGo$;I=mKdGTql`tA^AX#-WySQsyKUXwfNq%-d#7KRN;fya(Ao?L}-7UYB+Cm8!yV^=Tx|yiJCnGK0iBo^_kVg9d zevr_Jh_#4w?eR+q2fk*=vEOxHr1Gv_eR`^sN^;J89z-ClsH?lVZS%0gpIO3>P=7B| zF1e48)Hz!%+s46xGkU_(XVx?z&u>$Oz%*hVgFGW6-cj))+zv9SRJ=>hpw*f!bkTzB7t zf(A}y+U4_6?EhW-AC;ABA!O#2_LsoQyx+e|qYcdA%H=d$TZP>k{`*k@A-G@EOiVqq zPMmafbnka)u}wqbAdM(qTEF102(u6Gm9rT3w+9Ipqy($wkjD-V4q9avnbVuUzQNnA z(x~cHI}e)9oxs)~@BLQjY6l`ysMhdj09-v>9GrUS3Xuqp(2xpzJ6BazRYSwVb_6f~ z3L+We#}6*hTQon;ud0V$A!lrX_H7a+1@bZ!M)nEav$Th^g6#6-{=@8XM(3GdAB?>f zpe}hodQ$<8I;YjdQ)#vwa?cs4(ow|!MtNdGTpTqG?QCkgMnFISAt$$8g+2_HVSXi( z|CY|7x7?xidtk3tmh6c7L11*A#U3Ut=8JE4L*(*kK2W^Hm(6l4H19=al3KQutSnnd zD(@}va^Wqw!$`g8cb_{Lx`sli>Few3k9s^V8bBhjpZpQCu23|SCCus8wObgMUD`WT z$6@>G2_+AGbI$rtFy5r)?RC-O)t%|Yud@AQP@^6Bp2ujB<>378rcVNs8H0@UZwjTW zqRO{I(hR44&ik(ute$T`n(NJ9hQNeK$d@2?BD?Wjzzr#|JmDCS47xzch{$>% zc{)Nk87Vdiyf`bXjG#sR^Xo{AWVB)*qvmK1qh{pf8W~fx^xKK+AMqQ9PFtS1bg-ql zh3Q|`i6`f{H_@xULQ^gE(2QK!xRXKr)1luTr#acuB;ocN`Pt*Nlnb$q7J2^hiVqd0 z^u#rFQQQta_&-!Q*!^=o=xIne4y1MQ0t`W#5 zE%%5z?(XjH?n#7dL=&XMELc|D>iYd##bf9@e^yqOB7K;nqa&fER#Z$(2ebhGWf&;i zfB*g_OE>U_l2GOO^G2ww_TS1njDRSI6EXr@2$aiY-QT$zpiJK0-tHYIASLaByu1P^ z01*0UC2iqfzT7Zu_Djsk@dI5PWZ!N?yaydVA|LRkiA#XI?dNwJ>0nq5n{Q`jXOGsn z@xqVg99OMM8}yzQ7FVO?Rzs+ge7bl^Dos=l6(MfwxrbF4`%$I}_r!HJ7chs3xF zQL7tEmx2Ye445%``F-lIG-9<|Z0_?KyHFJ9VTD`fU>&Ng6Rstln`fGB9MBN^H_ru+ zp2nQ^d5x(G@UXKHXMB-Am|N^FGnyZH=|8QeXJZZVqAyUK&|SAbF@|XX@I&82OB=|q z)fO@`yZJgl(O#C6LDjkg$$O_?hG{e>8Jba~Zu@lwi_l*Km`4nCb@k%DERccy z1$KBFnmw(v&2IN}`+k8N17SLZTJ8}&y$@6^Z(#QZ zUbCAI<)FTV>g0r58@jevCwnV=JB_$|Yr}}lff;IrWJ`4DPa~mlj*E-qJDjj>Y;4q+ zsLd>VV-*lQ#)rA>?s^qvP)tJeZdqXc$LB*|t|#2|9tvPlUBo5f$ltVm(Tg)zEd3rW zNkqiaTw8#uFY)T&#TJ< zO4qT=SO=YPRHJ3~g0b;@^r3_jR$Hf>$6xkTUEDO%eG@q(c<^d`SD{TRyfZsQMf?3x z0ac@M*jSil@l-#V@Yalscjac$@ zPaDW5z2$u;R>GpDjHb)XBd`E6gvZlvhorE(P=xFP z+yR2?7HFmjIj!!0!6Lg}@^~MSS3)BQZ3GRk!{&fTS$1ZoK3p}~7!H3Z_zFSc1*Mv; zLBdF|3a}t^TZQFi_Gd-k0*j4yHtx3KpH2ds9e3u9DGouW(2YC-~AJ z=$n&RhR@%|fYLhQV9L9;2OlM+r17-zWrTOJ2)w1tgfq)_T+^g);yN|8-!C+@O!!9W z5v0M;xfv6#o+^ee70sZmdPmc8?$dK-&EQ6p^diRPT>SRO(uqU-(LXgMgDL9|({83J z)Ab*iyA?ZH$6c#aZ`6{4ch(9DO~-4090kJ=6NVx_#C(>%nJ9fKE7||bM%YN9%}Rg>s`DYpP3M{{&M~UjES{*$r+S6Oxkb*9uxn@Hfr~7EPe^ z{(1LQEKZp&Zz1*T_RQGQpfrZ%OXZ1z+>PaQ=}{e$$`1w-(s8s;x^a2KZ`_i)g-2KV zhd?Iy+s6hm={RLty9&wRn`e9Pqn;4BPZ?;((H-ou7NlNmD3aTEhIy9oJ=3$C3b>|4 zQXjH6%u;?8L+Ta*LI3*5%i(nVlPi@r1|(s+G*Y7L3b^eCsgg3iL#z%m(Fa7@%pxaSy?G5nE|Sf zJRLd|L}p_Ha2O(&`3fDXFVw+frFtz;Vtvki-lFEZ{Dw>ERyZa3H70@>PKmEDyz}ne zyHD_Y_6dS1y=S_lgu~L@oCq3Ut@{4i7^YT|5@#~9{6c!4g5DF`?Cytp!AD(*OFf!Z z`FOJz!Cxim%Cu_=m~m2{=e`lCmQzag#E{Z@c>8aAXXGD)9sIvbVcxU&JO{V#vJO90 z%KAMXZqactd@M08o+da%e|I)tF4Ur}%uXSyKuxkAP5-_Xx4{QW@2_}aA{^1mLB%3h zPx9}n-_B3{j3MRID`;JedE3=kLGZB3fT%>+j4qhzfh>P6|`n|_ka zznkLtRMyv)G)~7uRKEWh`W2vcd1{WUksI$T=2=U**!*g&v`#6W_~6Dt`-lh)E8jD- zcQ0bL8L^{Y>vJ}LE+FMhJ0w~Cax(Ig>AKU(15|$Kkgoc2 zwK7h<1N7{;;rET1BE#RP>+*R5vrdrZ=ISwfyq7vjm`5B!|n zc(NB?Dc;UNwaO-SzDR01ovPa3U`A1<*cddq;4iHqT(y+$c#urkC7b5|yw_#fvDuHX zbH)U}uz!4FGD4p0EW949&u{+HMU}nMF01VpOkD}Lw7Fq5{<{*7WZw(5 z!0p`monCzmdu7|*hv$wQINhT+XZkE373vXubACfp>E8Y5F-0sz8_^7__N8Ag$I}I6 z@d~+fU83u~F>$e&-OqQI>r9z)_2{MlzC1&#AmWJs!i2nGc7;ZSy5M=qh?U3q##3I$ z`_)lxb)C``b_x{qqrU8g*`xSuUvRHob~G;1ct80N*0cA~T*6{(CbGNv{6jTM@#$gt z45^AMA-NNY9??FFZuZcdY#at_3=M+$mx5N`%{op-UyWaPDYSlkUHW(6nvvF~!rI9d zqH!R|9`xq%6_?QGN`+7(NIK9qa5^llhD?2|TDG8+iHiNB29+MD`-ucxe>BN4fVsj9 z)K8M~@?}mIK2Xj*c<|r^eFS>a^oojTgl2#%tj)k`(0CJgi3T8BG%Ma^_EkgoRP<(6 zSm0>p3fy|Ba;wR`_{N+*Xsm&w6*4xaW;O1d0ZilSLk8YU-W+uNn59Op49rHVACW9u{9CgyeBV^`cCl##K;ew`nz&%r5A8?)+| z8^SA#%P(}*Q_)1Pcv-A8Rd2QJ;1%wk!x#R`Zvam|mC|OWn94%qTCzy82GJ{hi9!6u zX{VU-0v4whuXUkN(fhovWJoddIRY|U z*BoE(%?lrgs-3BNFWCJu1C*7hy$}8v@mvhJ#!hp$2{fAf%-h_~M1r_t9(_LFYp$Gp3;@8r+v?r25P5R|>D)F^=qZ6#;^ z<=yRb-ET5gSBezIeyGo0Jna3zj7tNQ%k$G|O6mFXZIx%Ae{-Pe@D>v^=g(@a^BC8% z1l65a_SMk6ul!Bws=|9RI{%?8mi$Td^M-9Eskz#=-a4rl#98sV97V%-W||Ws(v@+} zJwz{UA6J`THC$P~oO28=w^-B*k|2C)dpm$ZH#bm$WbBR>i)0&f9NmlHqIg$68`}me zKTeMQ;eTZBVE$E9BGsbl?);!$qHp!C+Dt8zAZGS1@@DkZDsY{Wvu>-Wf zw7SQUs_McNOfju*;{3s$N?PiPga;3rZf>Xhf}2-$&fxKREZ+0iLMqa$-S-&0S>L^m zohp0fP(Du<*zL9~C!n__pNi8Px`=x`go82>Q!yGk+1y+`HE%N0V6TfYE|IAAl%`gv zwSwZ<&#@@RkRy5)-R6{AQ}Gt``ug`nDQ)=5pG=kvUH1}LGm;Q=yNi3b0$paH#++Qp?e(1Mn98_U%_dd3DAM z#se-?=z9DXG|383nJKFwzDL7saZ>(4?VEZqz&^STFV8OgSn64xS8D| zY6BDB19w-vO0TA880f^+&pe!VlW3=ibI!%5^G;Q;tNq>|b%{2%j5$q>*Sj$pdsKPX z>7taa{a$dmTG2b!yL$g#*!x&4pZ7cOe`ZddV_w|e;&OiC8?adLdXZ9X<%zTZ;{0+% z*QM6s_Iz^gW6h^_=pl3JEAcN%Oj)wa1_b)cW9e?W<~>I_XRg;i< zyd8eye9MVn>E7ed%9(idrJrL~Zz(Ay+MhXnI=yGVsr`7GR-<=(xhzYAHcVP6hhhjrtXI#UzY%_!e}`pFF`tDTQ;?WXyxJq*Ny{hg|Q25 z)GjDFF@zXiR1B=L0u5>asuVPAV14cho8o>+NO<_gZg2;%XBFT_eL&Ea-Z3;V@D+HN zTW}@{!LoPv{(T0(F(|Aievn`6r3<19$;R>wzCH$vqX^0)9-gt43K9yXw^k-rL{ZZe zQ_061tNds3`G#XDDB?G+7SeZz^!oRy3FNm9U_qF1@mq1rvZe z0+iqp=ttxM-A7n)uy;ZMWP5gGbB8y%-4Q(eFnSC1xt;Z_mM9&%>Zs&hS7e^ZDwf-px8daGhp8+{lq% z970GW4(lmdI8{Wv_Bn%BEGyrw)WfYs5Zs>tX952{2PE!EgC(gxFr^b!P9aWz7rAws zzd=VX6f@D(*!UF85Y;-QErDd^8u+U?snBn(skctbEr?2qHxo@vY;S*aNC*l#&VA(B zyLJ3`yJ4v8X|5r7Do_xMF!%y_pSJ)zl%=N@9}<#Wo2Q(41XVxSx9m+jP=T;6v!0em zo{!b|HbD45n|uNnEhM$qrEvU{%MsQWpHWLuRn^GW990C#Q2@b%B7dRo2C4Q?>ik@j zFN1Cs5`!Rf)_Yw1C38MlM>p+B8ZR*mxflhF(lXW+jz5Jh4-CNygh-qG2$}2YNQtlf zY>D`Xw$4n=%0fJlsAK%@>&!sKgJm0Gf-4=ijNu5{cf4Ea{|t3*C|o8LMaA;;FkfE` z;40XxrzYm8Bf`NLf(@*q0U)=C1OWL}V%ql+#H4;z|ww@LMw0e7g{|_S5fI9R(NWnml zvCQfI&J%=m2wwtXx@M3Fwt_A}1gyV%2Si17YicM{Zig>!-MYo)dh`@hiQ(DN&YeL! zPMf>+?YfKqa+$Sn!S|KBDYY;+SKpf`!tJ=7;4ZKD>=`Nm^2wk)2R(phEprkhWGW{Z zjesI4EnURTtl0uqe8ds zd;(TiUjwBA-7&C?fzbRSj0p6pj@_|z5Wg)ZeguK)1^fPeSw+Qfeak^~(y76a3X_#H z5v>S(?7hv&7;u~wg2%bC(v7#_hs`{q1sOEdwrKit$0-2rJG^8W)$?=`fl-E)hitl} z7zL`ZzXK`?sAGm)_w~W1a^g9I5UL5JX2eflqCmGToT@x1;$m3e(4dq(=nDP^wGhf) z_p#Nn(#IgYU)(64HiqdX5JXf4}f zl4AmmoFnr=zXdCdna0MC_W4m{yv!Ea&(v$0ul|^0s4Z@aCf{i~AHh0g9ju1hc@`fPh6r>7yKs5#I~!tQLtV zKsG3GvXC)Rk(TSt49ex!<+&hI9)PSA@b^a`xa0zzdb-QuCK4JEeUe}`CK1ck_Yn73 zKzdnowkv~7UqO6MPL% z?fC3(4^&`uP+UL`sh!$=hm54y-F*vc?AIKZ*`P{Av}a*qMs{?U)pP2lvnl`3r5u|z z!Q=JgH}bOGB~lmS_HM58!>9v< zP6p}?QRcvvyG_jY6^`|8i{M4!)PaPAL@`u~fPdV)bH{4N+K0K~%A0iACK(k++jdhCR{F!8xZyvbJ7gM%Usa#}pq4*$csR&P>UT0H4p zrZ`cxO5kTJ1L5C^M>*6^ARP+_;GxK{6sGwQhb8}}k#4ZYgN!h8#t{aVu%}dH>7d|H z+A@Z4&jqq4I3fLwpX1Ay&r2w%6z~X^yh%H*e1-?aga2$Gj1rAXs?&djX*X2bhKfnd z^M;J@tqF$b_zQG{m^nQ}f*HPITK(?1msd)6na*{V2xK<0ix#sdGs`URYE9z*7s*-k zjq)yGkg~R3f}}E0Y3Nt@W87QSMug#XtPN^yEDip)xQU&n%8gfho%vzoe>25+k8Ob| z{vaHDCT38GomJ9hCx9=U(!?+{MjAprQ14BMV{ae~JnpDPrGM90-xRNj!qh$JuRRxP z)wD09)4pmx$Y4~-4v9kN7|$AkQF~0NDX8KIC*2gWtKny?c{?|G#Q!ZM#Bl$?LkM~FY{dQ-W8f}$h%yVJ-C_%oC^oZT zlt$2G`K>yH78S7o-}S_5y5@y7>2vxpqyR%0Qpf#4^`=CTFRP3l4`4nL&U;YrM-Q5m zSxwTT6awigp6!4P7EsHYmn7j0r%g5E4g4Bvki6!^i+>Y1MwUUl9)_=N1Jml%IroA~ zgb1^PDDWkLkyKjgXk2(cFc^mSgpzJ#S>mCsZNWFR@~_#~Nt5WQbhI5l*V!_6G|e%Z z*{`ve_b~qqm-M}fcX79ZY+TFbHiml2*I!!GstfDbA1=(B?tR+5XErMw{AiCfC$Y+F zXeo!xGXq;2tyC&AN{^u=pI>jZh>Av>gqPck-$5)oGFv88HaKXESj^L7BhY%|obrWa z7Hg9Z2J`D>n(-ZN6Z5Hyrsks0*uu18KWf#y)N~6ZRWchdO2^3hB1o7UQ!5cN!db%hKRAqte@qTv>w_VT-}TY8z^$*BP~I^JJBl$}y&^=juV!A4y%m zFrE(WILsfuFZNcpw=Y8=j`v*9PLcMlK;Z{`HJ8)w0%>LgJ~ubF0Tg|6U<^o(WHku@ zx55l*{@(^HLA>{foHR$^F9^bK3RRu$cKEAV8&XQk`(+Q`#la<) zl`Xw?$r~?EPxhBy(}S^ zxXxE0M|rS@ri``uYPd)9l~IZB@Tl2Z5>w^K`dWvyLV?LQv?bC}{$+OpV?QNck ztWWX(bZJjNxRSs|`tVa!vc#1cc6ZEY?sizbxFP|Kp1B+xO|uT&TAkkou2x@)>Luge z%nRAh4|1)hf-dLSPrbhJM(tOaL;c!zoZv~01} zL?)6)pHRl&H)+oBEsg~quWK%^>G+8J4fZG(EzZ!#_8)EU*W#AG<;x&0I%sir!`%JE zetYe8L4M~(UXfF0kKJ48jPttf#neNu;6f`BDpRfk<~#AnO#OYYHE+zTe^JLMMz4r& zm!|mZCjOGs{1Zky=~XjVI6nD8<*lw~!gVLB{T zo8fuzu8^Ht&NYM{S99akL`a8d*dLK{^be0B%L=IK>LEvatLd3)C8AS?ae&unpf$7F z7LW)~)X|ZJDg{QL!B`ul9giN?^El6=LXsB3<^ccmdvU=LM8bfdiGYBX0L*5OE4V-6 zQb-e}EQR(@=Wi-x28W(6%zKv}>&i`%UFCUdJSY0eDS+5OL~n6nxrK1#XPnj*O+Bw& zsljYl9=E5HCs@>`C)x{}w~bb_$Q<=+Hk{+j3fud_Cu*-BkABZL3p6)5s6S%AuYFQ- zp*8#LsSFwky30lRpBoYdOOLhrddpZv#Y0YN6@Kd-wzx>)T*`Uf3H+q}dyI?qo$RwG zJHPhEJWlvnKTUNQ7ttNub#Fa12&&EHAq||qF(z=cZ@g7&kF9#|Q2NO66$+>NMT7$n z+EIa{6!tm)LxTgQMTV&Em$m$Uo6C#OZ;$$-o1{PH+>13Io+L=BrBGn)`(-bQ@PC>Q z>TFVSiG>YMG7^hc=gB0d8g%DP=1XTS?a4NTLZ2}Vm-ENEaK5^2V`nE8ObLyK82Blm zg9V^9rEei$yF4H|n%E1AtQ!&pv0NS%B4P%?ISg`3ff5ufs88L`j(D}wslc6puw_86 zHBU|+Wa&!#< zK5Tj8WwqTcF6v<|7L~Wv?}OWU9?SBMR}^e}{y6{6KzmJ&>Ze30F83pF2U$PN(I_abDWd2-8+oWKdv19?>Y_9JoR(0Fb z+GM7wY7fnBE|u14^pG^LDqWcZ7J39yZM{Dwr-m5bK6J;l*f=;Nx&1K845OB^_W6}) zoIBz*9rjg(f*G4zZzl!boTq!#uTN1iM3wls`WG`VXvk^=(iyJqcN4Y#B|0b?IyiJt zR?I||qs!z~FQDv>wzkR1m0c^r)o$h(+X?c{*;~fOBiGX!JuB3|$P4ti{~9-+=J>Cv z#^C{dvPPb@3(tjBt45NW%ZBL-5YYq7?N7}KHpJy+Qz4h@+J@9G(+FSm8a_V(6;1DLf^ z9{Oif+*RCkH3wN(z8rbv=3T=0-Q&&W)7>1w1b4|~JVK;nGkfALbNg~FF<5I&nXMkX z)D)TdYICYR2>64Qt+q4!Ju`HsX+exc)7IvZfbj4CXaO)uvIl1R;vES5O~$gg8}onT z6Fs%#n8&hY?YC3xwHT@J%w!Vu-^bkFXvq)C{cnaYvD=!=+Ms|SRF`A_Gr@08@o#L- zcQ6DVUTgzhw%ONane^ zI*bU=1!sg^vg?CNw^I(_HN;bBiO=ydvV%9;Y>R4mS3JnqkJ^3mRv&vC z9PcvLJCe#5YCM*D0WB7Dp<>nD`Ib0e>_Gq zvN*QeZXhuS|<^y4;ui1#oqI7_oqvcljjWSw%?+y~M)1ygaq=p7xK~KO2(?$NXwk z<$LuNJp1{>WjepV@Nd7V4`GBsH39P63_Wcpn<czEFY6_;fi2pwn%Sa zTG(1TrAup=WjEI|lZ6#*#F`rCpAIb+VhYhX~FxizW?aKkr2w*QB9$o!BQ?i;IhYCIbWhchc~7i|Wq#LNbvyGWn`aMwSfQ&m z!n<|N<9to;7@!VsUtfwR-Htd~V7h}jdJjPY&j#KB%9@%QHfvo6oe=TlSs1nJ3RbI} z7nS($fe!#4bxM5l&I~-*KMx21NM|&=ui*KLf`3Jfy-1%a+Zi;h?++MwC3?C^;D;u} zn%D_aN7_W-5>oik$UB&ClC4z35qawK$L?(QmX zM4(&-ilErJH!t_7m;92YZNg<@;`>=BEl@qSODluf1PHv@9!dukSwf%b4|qZV1OV#u z0&hQJNd_kYFv#LYlarH9;LO%6dL@VQ@CI1Y(t%EKP?R}s6;$|_KCp+@q-k=J6ehgEGyo!&S2v4IdeTx-Jb_Pr z1EzRBK0Z^x39$IKQNRVU0El%N(+D~gUqV7cD4^5V?@y8Pr$3c{0|RqWz?b@c_j6?> zuLo=-C~fA!$9c%7RPk5)WBb3RK=Ga3-6W683m9ng0lbcXJ6U_cZ2U`HAsFj z^QooKxa?(l^%ToFgIVFrP~U?pFH^}b3v2i5zXU<2n>6@^z%>5=W~a=8Po*|rtzp1Yf)eU!UM4PGn<>;fV;S}OW_E; zeoYVKHXNOuk*PfC9l$6=13qPQu&xRJtDxfzws-gc_uG?T0uOZ8-#`Fg_g*E zU-fM?V#pl3_W>@ZV)ZKoo&&hk7KQ+y2TUIR*PH9lH~S-~Afi00b~(JD521uJ0}L4| zI8n{31K$$?qmjT*v8DSckhblgHJdO*d~v|;W#;7>gB}H_?_=HU=hk=bbNvGSDGG7u z@`_qzYDx;5kM6#hd?*ZqgV*L=Xe$hXNJPv#plf*QusI>l?RltM1gZs;Xb#JEsP|SG zm*8Nh0;NSsMKuY-4;`x5*^YUYXg^9aR{v(7)Rx95YHhE*^v~%$-zfQ#*t2z`66{Ti zv>%Uu-hD?aH$6dHw0_(~6uT7`xOQsAp0*K?@E?f$AxmkBF3YB|?D$`E!x0L@SO7q$ zoYxrP#&}Xn0haIy80>lVcuMf`A@%hULiSceBB2|Ct!kjvs|L1wW5m)+ARHx&X z+CBDISE~JVZR>xYNFKHwgqaW7*g}D(DhBhfuG_xq`Ln88`~LoZE{Dzg;I?=DBp&i^ z*`7TxFwnXn=j1JcK=n_O;gr5#ZtqO>4Ez4Yj}OSImQ2T!Grt_@5&JLJ@QC&i`MJ4o zZM-VZvUSlGEi`!q7H|tD= z(MlQ$Zi%7j^Q!crgnob3R`s-q9y30VQosVeP_sh+g~F2u(-Nld(V7atvVxj399B+4 zmhdmg>+%oC%W|LjNf(u~)Yl95R-f3E^k$q21De!;Rnz1Hk&PRSFR@a-P;K7g_ef@~)bGk1b=zIGMmPDioT3ojNj4QrShx%2%M zmhD)!#v$QQ(2ICvioT=y`8rkx*Uq%5Fy1XtXdA!u&E2KCGi@!YJ;spTGO;wOdS}Fl zDd2V?F6+N=wS@jN`ZbX&ik_k>p_LI%bz>}LhT`e+d@>*LuAk)4l=e<&8UDxoGWVHA z6Ne=*_Ik7FtvfixMIZIrEl*SXg-kX+UvCaT)gs%VJb%SN?o+|R?tEx@!rd}g`A5TV zWVpOPrCQCi>Fw@IN>rW~BK4Atv=80gVg=Cv0_SvFqA$LQLEPr$+B#hp2_HE{&z{4* z-uuTDX3J4^`x6F?gYPw_54KX(=2IIJ&ev9cPZL5uK|&3T&w~jR9YB(}he+WdDr95~ z0XX$7@SK40N(FHml$LB9L;DPVAJyF~34ZE@dtj zhb{c|u|X~+dYeb?!9|$t-C{mPZIc<}M4bA(fP+=VRExY)a>aGYHr%ErCxezoi&IVC`T)1$=%QBzUxaRC0RH7h)RJj)QRp9pT=6qudjH#Cok?X z+ftD;PFYj3*yK{C{N(jCQx(>^Ykp1z&x4O1r7l{?BC)PPLQC1EM~RQ|>7d}HZ+lf$ z7MBA2B?Aa?n4{<`4@vsNIXZ}se@`qCxR)75OmeX_Tj`{WF3LFm9Hz&Ru;{-N6Vl=BgIR2%@ufRhjD0m;2hJ-sUw??5-#qv;7ZG$<$ zp)|H8;hBIX7y{qsOkHV&vh}lg@=pr8cs?g(&>@JxAO>*=!=p^wBtogm-p~WEXUTea zc=SO|LcDnC$c!bm5otSwEdPQ-r7Hd7TgtUZ#Yvl5#+`2q9c2Juw=C;b$`bXgeWH}* zrimLW&QcnCiWZbv#;EsyJslR(0SFrZNQ^2Jv4W)Bx?B8fTcV{5Hotci+c4v$n9t2n z%DX|z44&AJ7#}GfNocr_+8UIUEfU&`-!n7Fd!qEV^~;AxnLiG~c~m;tGsaug99+&HEoCWk0dlwfXbA z(Z99-Ds)*o=aWeAyZ$q!*oai9C#}4WIkv*RG0`!-)0U5Fx`ki2BN`_nWhbrIjHAr-{X@9&mx{K{Ik7T=ZWqV_MmELq;!RR;{fqt2LAVGHz})4F_xv&hl0 zUy)@1*tmrox%lmu4y)6Wtp9GFwW5&*2eSc4jptxa1}@x2JfIMf=A&=n@&UKqYACow z56DV{0CTqE}nAD)`^N@(&<;o&JBF6<-n# zP11}<)W{iSA63C_lq}MV$%lZ#}|iGixDH zN=H%l4lpCl(rd z#X3ws!avJt5ZBY^7XRKiTwjc@-c&hkd(W?U$51R?YrXm1r)e6D$W?=Eri`*AkK~iR zDfqt^{ttC;85C!iuHiNiAh^2*f_rec;F93(5Zv9}o!~A(f|OHLLYDI;^Da@-^$3V?7z!S^7LrmEtBl(&C`5RK}emczPcN2|F&5g?S0V3Oqnb zC}Lr7nnWmSB%0U5r$91JAqVqJL1IxrEhnhQtCLj@Mvl>6V;<=&mXoeQ5OQcHWdOY( z>-IL9yL&mMk>5Dz-4@VRHfr_JYi;iF`tsRptkpTFrnVB}sB=t*GkVMDV4v@bn!fj* z4>#nO$7JX_!v#V&6Xw$_?dg8kyToqYuZjG4-lRThwy(P*l?xVa-kdhh>|58r)jaNR zxP9T;`(4DD5L;GZN|D*VLSYbWDfWdV0#(YvxzZSkz4T&FyQQ#v(pdMQ0lV(b#E=;- zZPy|!(#e(F3U0a0UOSNjdoU4D_x}CNx6A%n4pQw7C0@Mi9FE|OuXJs3MawVep#ug# zj{M>gwv|n=y2G3!4@&$A!aQ`AlI%)QoU^PsYHOf z?_zGAEi_H6dKiH2HYyv>*8}}|n4|XHBxpj`y)2_#G-T<$A{Q>cvkYU}?AbSfy%?0s*r{thn_9-Z9 z97#0iw(2gLywkml|0U%YkqA^!)nzBF0}{suJ_myP>=rgA`q!B+j3gM%_9G_Tib#B| z*dM-p!V+J-Dq4@8G)T5_2V;o-b^Rp=f!weHX4yaP7uk`U3!_65RCN9M0Nw8%cEv^O zFp@+`SK@lt_t%Z-TIvQzVhYki{g<#=hrPD}+xFi$#}@)$B-q!lI~JA#BJ(otH6*|{jB?>bvM*?u2>z@=DRh7mL2lyA_eyQzIx zAlehR`y758=V_FcJMw$=z1{r_p4`h_h?1=NdBSo!hFNqxJ?Lez3pFP>Kak%7^~d+Z zF|+_mX2R0b@oVbq4M4>imE-#P_mR=7ai7BEX1Rj~yYLkszNCISlb%xkh#l!tOpCWf zs_OPOi(gSfZdD84+5y~3jL^2x!N-X*y*|A?~qMKLhX{?dm@rZ*Ve+(M+| z9Cq7E3u&QnwNLS>v=(-!PJaGV)H@5;UDr}pu#;EiDv=8}T`4t)n^Ku~F-4PvBD4t? z0$qw#W8O}N{?%I4OoDe(&hci0V8g z>@sSRgK{*Edyk@0WcZSEBn|0(*K0lx_67D3DoCVNNc?*Xyfy;E?=6IVK#{G_Y213l zV2mH?*PRv?=Qj7&7u^tz78dP4|2hT;ZH00GjRdC~6PtB=!ZJ-;GwkYzN21#bpDMcRHpsAwwNW*ap(( z#uaJMr{`U|(mqrlILcZH*|D^D9)oBe`^bxlD$%@ux!RtNak) zRM8poSpmEy?^?Bwxv$!i{rqnAmxerd1QkfcWP4#k|n`i`tyrAD-nl zzUA2Fzkw#m9wq`pxuz0y=o7n$fQI1I7&#YM1nW8y3@hnN!uv&)OMCHj$DIL;kGW5w zwz4!2lDDdpMI#t0sD)FZhABiNPm@V)0ieTt(s|u6=QPn?N^QKn2tloGsBd=}UC@qA zZ`Ci*p)0n)vU>Wu#m^C-a3};Q)r8Pk7A5a>H<2(I^bQTxNZW%E8!g5}(Tk=_m*s<; zo~%L~61J|Sbo>(|iPi1az4Tqhol|*Jlo@Ef$tX!r9n>JTf5hWQ*t2!kz8tMlZoe@@ zN@n5@qm(8uk|YJ(+sW7mdP84h^v7PP`WMKc64TmEJZ*s00u%l*2^snSGYKJVqTwP( zS9W@{5X2wALSY4!uK&Zcrk&x53Iau)^+07xP$IUg{duX~cdLP>4AnMJRp0$}UQaa< zVE=%6PcEVlrEQwr@0)eheS^Q|>GGq)>#Fj~APc#LsMX&S13`SW&fruS#Y-cQn4USP z;a#$V-C073B_vt7+1plaAf1WzW{)#nHeqy(#`l@S9wGqK#4%@@iy3oqv+KTY+c5lZDn>rI7)W59Ss(z4k6Usnc zBS-SykGQQ8R8xQg`34nr1pU}MqF3RmF%fDZJTgDx_nUA-9UTBRi+P*;8Dh*(&>V@- z`Ljua#@K_EIL7w~58CgvZPE-`3VV_AZR9%Q`%-HGn7Q6AV#uIx-`OVobsf;9a7^+( z|9R{Kgk`*t4H9dY{_pPQ6PmJ6uVrCJDPiX}qI*oZYD9-%)pNGiafC^D zr=Ou|G4Y^s75ljt;F^2E!+ZT6!1#{tB$0>G6$hiqzCYrs(R!{3UsoE=Y}s!@`Q2#> z;E_qtYneilbT!yv_(&x;cezD4J>zx*?nb{|1rN`kvRe1wtijW0db)a4l=ts+Umid+ z#WIgKA@Nc{ns9jGzuJfi&7UU_-*8f85J{2U)>aoiXs7Tp32N4k*RPh7z)RrSygVhm z@Wx1_b4>eR^&d5y419Qc03CH{f%wGfV-)%=dAGdT?}3hv_uXdT>s`qN5E9-^YRW&B z-6ffQIedEC5J31OHh!M4VYjnAIpBHRqpZX5^jjFMiAA>XQnEzABU2C8HqxQWj;5bO z_Rg5@r%}{T*FJ26ONBjE*K@DgN$vj9^!6`==6uevRSQhY87jlFkt0yQ(+E!WdtGNN z3=^5yxJT8C!?6tQXYFQLKjqPLXXBU9RE0U18c3H`|JB)snb;4xJrlNL8vApck9+oaSUnuy%yxZ>t{PdSadKWs z)Uh>=oK5B@dNG164jTJm=G~$ZLwuE?0&If_EyGAMS6XI;%B9qLosibMMdY=Tdm$_UEr!EH%W3uG<-CY1`bQ)CkO2WtHMoiTvQ>6 z&05WH;TuHmxWXN~J}xa}=LIGlS!0!}oGY1>^+`haH*)nE%?9>I5r>3K)XCXhGtu-{ zZ8p)f@v-*OM{%oK683YHd>yA3%d1c=D_vn4{r0U-?a`~GQn%@wniNxi!$mo9>|QZv zA4dHzSEpDdW4nkUT4Q5T`cHGi9Of06VeLje`6OvfZ2WyU_V`<$Zhy6%Q?aqG?rE?T zFEqr{Q9t*7KR*g#bULPjPD@SI_t$ca*y2$3GSj?m=z3`TZ9Loi=xY!hU|sJ4To3ovW@`deaQzLh7t7<4QH=K-#Tw(8Mg(+~UZ zcCceObug{cs4Z2?SE2=79jqnm9c<$=qrK7F>Q(It+cn~}6s6x8flu4XwJnLYSvW9D zs+5Q8$+7WFc@z{gyEuW7aU8c8K;_8-Oi;<%Ej(UJ0 zJP$$;xk_+K)YPdoLyfs)LFBx#Q@zjDu??nlqCO;qk8gx4IblmR!=P`@%E*(st?nL0 z`N$malp4tjjUE$oxdoFgpTzx8nsuuIl@0U9IX2A(hw|S0Ec)q(a0-K@yhK|~iSfd& z*u>}37T2%04PHbuoPO{|TgPNw*q4V*2a{U8)&_K44F;PtHcl}ZV!z~4xw=1bMzJzP z9Oy^RuFG8LW+WKRB1me}&+3dQ&!j7cWTX-%aZ@~374tGKe2AV*K%PF3{0w0 zo3+?UuAQ(}IID6ydCwJ3xh$hNB`6t`nXZ^+9M2}Xc&NNspqrrtJku=eAvZ|`WeeFI z&DvmZrKBAw3nEbkdvIl${tizq+rLX~8m{0rG6?_d!dLjNu@e}Rwj7HD4+hcTDE~b2Z z-uM6zSlZ}rn4R-DuFcAZ?iklN%>nIRJb+pIf>Z`~CDX9QXPAw=bXrAB#*25m){1F< zO4r@_83O9i+#!-i7b-~~md}1oIhnfT>?ib{v&i}%YW~Q4U))w$ep>)a`JU<3WCcd_QNT=WsD1_Zs3|4P#GJvTDR;)VVG49P#z<{Kt46RfXRnrU1PY#zCcqe#{v#30z z3SJdo(gcB^Rxl06D4I&1r}$1E3|z->`+WihDssTbHhX6Fl4%_n3NO!Xa9!EXg@QZ| zAa}Ec8my0A%Uv;=X39H`;z-r0`UcvkUb6S-V!wOcq3R)C4$EKU8<~ZjRmiAc#Um37g%!rMv!?t#qWkY zJh0`6M|Nvb-LSLVnKq1P9Pi+3(}xFdcctvpeJ1YAjHRF~tWpuXMfG{un~nuNF{_;t zmop~MEm(L1li|pk>5hJZ)rmkD+ThOY@+BmP{qnwR8Wpf>8EhAQ-pMDTvwOZ42e5{F zjl~_>`3Y~-6~>&yd#p-6!}1e8UBO;^3Z_=q=x?rOZQ@S?oD>QAx1>t_#8UN-Cse4v}dH?<1TudljPV z!8BlFzA4VhM4y;3F&XoR!NVKu`D5%8+H`T+;NFz>Gr+xeLSj8wOyooGK^LZ zguIA9ut>G^G1PDU`vET;Ui{QgMX0Y6A6=q*swpOQc*_Slf1-20HjxzegC>#xI*>nc z1YxVVf)o<%?sy0S`Lk@c*Ox#>D^1;ehrod=BJ&vuQ|4TyU}79DJ9)><*cdX_sKohT zE&2y1A{}184N)3IBCn)PO zQKFJ`&JbA2aRE5%=QBMmV&uX&M3%kh(Dq#}16GaCB!^|yD(5UK!)o-!2DWJo;#L}4 zk}L~W@J~);1G5n48qhtP}{au!O z>SYF|@y>YP>T0?oi$s<<;*j_Es0IoqWSkNLNg)J4JwwFg)qei zrV)3;ZP3baPB|2X{9p9CKg$=5D}@;phI=OD8+7YJ(hKzMH}{eIzByP|yz@i_?A@ zt{{u^EsWB)b%U774tX-F5nn9T*1u8V(NIL}AQodsd~(sli{Qs+1Q_y z0jQ`klnh_}rCaMj=VdkrjE<7-3-Tbo4m~&QaA9fl%KNb;f2}n|VV3~tG9IdCCs-;C z;q=a%j&EJ;e$-`5jVY=uz>9zpXA%8H+(+!3J1dy7??EWgXvHcqt_V6&EDPopgI`GF z$psP!x~Cj9(zd&tKJOD8m6!!?u^J)kn5Np|xfJ{c0# z?cHS}5JTSN1sf3}p}flp&{G2+J~+QJ{``KET6ivxeUrKuh(X98a)BQNVmjh-{eK~q ze_s~#+e0AI+Z6mmZvUIO{`@DgVK!)y@kU_*@PEPId%qapKRgF|?9;et=%0%SLCN5e z{e!xeClGcs@q70_#|xDU4KT=c-IA{93(oplUAKMeq3$<`bT1-IEOn!0s(nLAM$qSs zE8jCQxqs_i3&D~%Gd`M{3fgwkKKAhgYY^C3#>jrOjTlM^z7F~wO&Q<~Be6h*us1+@ zMNgiiSyBjnBd79q`dsshZvzYyjG<`3ZZR*(1UT4z6*`WhloWgg>LOyFdXa8L_=Fo zJF48_4?H9~5dy~SZ@oJ3Q(rje7_iuka=T*QJV9XF(fn4%!#k6`&DEa+t8tp{-ZigR zy|68HmY-F>HDRZ=z>IC_#!kK|9=ha^``!*$n2|~Bni*si&bD=Lg64G!{!r!%;8D7VX zH>wLCHL8XZqaS{q9>%e5D~}OLJTA+!C~bG^t3iWs`3Zsm`vu(x25#=>Zk1#PWv{r( zQ*J5yLRGxoIKKco8|pj3{UFm0*7;#jL;=6Qs;OL%jg`3ZMCrQvQqW2 z`Uy(eq7Bk(V;dEBMyeC_qilDy1WCq}>?3Hbj4wC8Pdo%_8P24DsA6a#B{qDRm3efr zIDai@@Ne7+d@kWu^@x5^V5GF3b4*9hDQ+C@f09 zjov?uG4~}~+s9JTqGJUTmePMW=%phquAW(ZeyEQahDtRi7#_4O9c4oMc6y}B{fmBo zgPUD-h@)IqwNi1r(Iea{OXuq8JxwAG4Q_jca{_cUDJ2Q*p(~vQn_+rYB5LdrWVdRS zcOH7R8nR7QleAu}eD%;y5r&;0%f9%Km-5M)c=*>T_rbljxI`2QZ#qWDAR{|`b8YPD zUfeR@k#s^G*t(r6!K83UCAe_6AzcAM-s+m&==rvv_O+;Z@76e8BI6`if6n>}MO^hT zEV?O73zI?TRmBp&CqZ>+0oUtW(bPXnd93SFR15sV+hN=-4DhMz4z?|;cwRK;7ew;O zsb3YAQ^);-5CFi`nzaBdtgTaz|Mn8}giU8a@$73LT3v>V`vr_eTRD*okImWYj7z(W z8XNS^P4Fz30Bl>`AokZ)7wAvY9XcOrS;?(Mfz}jEHgyo~?#}3W-NO5gjPS|fpIf(g z$bMLLVNP$E%u#Armi0M|!DtGw-4vvJn0;ZKT`rrMRk_Jzd4OH~eRxs0D+@ zo*AgpvuA6~Co(|E+02p^#O@QCJ8GuaLz-%$gTh^HANTp#LC2Rh{Jw&F`}J6e(e$9P z6L4*>rO;D)euQLLU5R%uKS;PobBvCp#vgLK9K6xkPRgN&4=6#O?W#lzegsqfU++LC zdgOm(KzY4#;Iep>^{G$TsLjh@ZF^v@o)>(xBOjTDB<8B5R^#TJw2kZ%b(X~>R z$oT_0tj(zMwr5W`N7y#&1Y$(m?&aWO)V}cU5QvNN-M!QY&njy$y)K*}mw*MZhaF`j z=v7-=FdC8vz;E@cWQZ@7t|Z-kZCFj$6FYeJ?mL;3$5(wsz4>;RTR=*`cp=u+X0*W& z585fj!JaP5xtKLM<_9)u+4+<*5cWDJhUSZx)}fyOqNq73=rdE>!6H6r1KXaIj`b`y z$=N{4*@Nb4C5&@q!dKJijUMg{LdDju_%>iksvhlQf4YyY?1}?w@KVG-?X{{N8>Jj$b z16bzb*cDJMUG}}ksa>=ELNxo}o#@c4K`mumlmZ3dl5H6ob>+=o9;Pv#^|<}G=Rdmi zbU6UGxvU2WYx?N~0=~;SKu~_IGQUbD7#p?h9)p`D;k2Z)fOKC!swAzyPQvgT$xZ$leI?Eg2HOuD-=z*9)UkLc_B$_-jO)MNvb8i8=$5x-`)^!BME%{`a2sAf#RL-ydEzA@7VtUl&(g);6(Xw@H@|l>)Cnki_n`>R!|PV#uT;z9{3qs30F2Yg&_m_QE&|B!au6b& z<97j5nDLg6@A4bf;EZK(oYFnIZhtP+K#j4_pWAHkSy(LXo%-e$E0^BV73j1*Hw#Sh z89K7(mN#RV!u(ytIfr-0`$3J z5Jxq!^&g9vFrR`GXL~lH{A6iF=GDZE#Unj0?}V=8UEDR%=-QDSR5(~&)oMr4ganhc zoS+eK#4h_TG`5)WrLkm!}4_sT%_dR{;#97;rqP3XP248&Kvx3xKk;ok-;WaDxLH;TE)9 zoQ7}u$spuwLV~5B(Jxi8z!rrPv_R~Y%kKp3k8 z^1F>asR*WmJ@ATP=+m1&_E6BQ_}njRmkDkiN`WLIhbCnXB6<#B08(2M2}UJ#!0wSR z-CL~0A12Tzehl6ciO!xxkGs8OpAry3=3a#BsC1Y}e)fxae`?4;?S0T=;7)|f>-RTz zc>Qw|>hz{Vm!?TRW82I{^O%H$t2x&{EFfcT5RHKK4Plj>C09 zQLrSUsKMI}kI=z7{=H*M3!3NiX?EKt@|h}xwu?z<%V(|?grPpzvR5+4^eMLCP8+w43BxiR{l)mApkHK%6jGvPwpb&AJv z<_-Su;ExlM^Rq?fjq%5CIx3{shfPvP5#+;SRcgj4VBRbgbUW&gny@WwgBAq=Sh zuL$#(ka{OL0CGWpe&F8?6zB?|um39#{r~-9<8^Wu@Wdc+E15z&7dZJX7a`k#6&0L% zp;txVud#t!RvmvP>i|L}J>ocDeINHC6ig|?)yU4faJ}$UhTdbsy`9^9=V~mca7fH> z$ZH6X@$(IDZ{=UsE5eRU;oUpr)6hBlp%d~~{+Vu3Zl#n!CV8#vC_JvHI~S_HGc$n- z9R}l7Z7TiN**-homh}CmysN!0q-&J_q(lxBqz;Uf`YuDN_4_OTkiHPQBz+PiCJVXC z{Du{7_j^yye^+zkwxjhY02>&4+-+=?^2ufApD2g^U$1&hs2&8r@b(7{0GYV7YNP*c z0N$(GUYN#Zkt1#{oJ=Oi*kz_es3VLcTJ<*RsrO?Yv9EsYP}T9F(YgWol1G+umqs?t zj9%$-92ah_jMyxNU*EYfUO*vT2D!(kro(smzrN>^?YqCkW0m;y(Xs>d4@|kaUXp3( zjlbrh&8@9klU_@>ABBja7h4-){~EYQWlc(!TRY3Y;?mlYTaJ_zJ>QzQO(@d30u_FW z;ybb$Ajb}n&i$Pk%}YVv!M>n3#P1^)jn^MW6LT@|$#_rioM|cKmDua-iD||K^^r|Z zz8dfsj!w)6GcnS&L#CZr_tIQFYGRo(+ zeU4WEJ$z>mhFRgVDj|j0h4Y5PfPvZAXLhHZxqv%W z2~46Be-Ky0UgW=E2R;aDtibSbex35oc~Rch0Dndbe}MCpHE^>71RtwaZnMKg&l=gQ zlS7jh$C^5Nn-O2QP3(O+=5s}z;fE)@MS7(`7M5uogx+gvJ)nhZ0@`LfDvrW@Vx`)4 zG8Y$gPbctQR{mL%{WSlg@RX)rM%g3({g`W))Yg)6D2ma#d%3ha>T~?w)FzmsevaZ; zYSIX-=2)&7n5DL-D8E@jFTs)bk))$+vK%ipHAt ztn{^A#$;R9kEjYS<@#=*`HhpC*)Fybq$J%P3AZ?+Y9ksHmy|3g@=6Rf<2|4Iozrmo zZ6mfy|3_S!3sAJSDGsOMu+7i)-hcpJ4Wt7vTTAOz9G2M!R=sckl8dNq87a61$1}=( zwkb!;@CN0Aayl5iT2Z1#+!+0-Ms&USTZ7Gh(!44oOyvz)B(ktfuNAlcp5yET-*O{j z=aEu@QB1pb({uxteCz`S-wNi}aW*tcF)9XLHL-ArD}a;qH4| zf_*K9a$=?hN|}tG-|$ts`us+ts!*d09NUyUD@O-E0inn$oH@;K`V%T+7djgMI7GFk zcGcN8w*IF4D_q|Z+8n2UCX`Lm)na@{Uu#Avw;mqqXgt?FhDNau?w3qF_LkPp+e^SO z5c#XLHQ7K@8}6~4`dERw?sIO5yr$3+q>f#w2tK8p)&6z9+v`94VTI0FRg-n0s%1fT zT0_NRgPBut^bGbgAAeVv(V-X}#kXz`+ZF{LJT&^iP`Wt{_A0g96lHVcFG{?b3${JO=j}dg<-^M{glW!GfR#`Kfcnc z1;NC^s+ar=;h)OWPb?T)_u|nyI8#aWzi6>*H5JkfrWb4bgnniUTTa)_+Lhi6$Cpa; zUY^O5kRu_l5fOp|Y6$ou%suzYTW`>=0N8FoUQnD=j}Y+kiNV#gi{SPHMBuzvG$hr* zLc{Axt*W~<4kEc^2}Poj^lHTHnymi11+>@g38iRo@VLDmHX~MOIku>tC={S0UJFvA z*fd8Z{6xPdl47La;4in?V;tFV8Vjy?g5Q^=xahiEY$8Re?w}MF?%@8$_>{QYh=$2N z?E>u#GmmQ@T2wjrh}Q7z@C6p@L+39CT>(Ds;*SkTWeRl)mbAKPb=ibs&7$XimaGNt zvg_d0RqS*;%4VEQ{?LY&H+dAI`d70AApMDI;eX#&#;Bycp@3u)UNHv3cE@?FQg1_6 z)U#)S)} zmz_N3#s_E0`k6Z@Hgb>!ZM9-fUZwLsHilYaq#;czKEXA7-{b1M(WA#O4;{-Jri0q!x^Bsb^VJzD?(Ax6 zt*81&+BD?HADip<%=1j^9o$iTEjOBwQHtO=H&FOB`PAB6D{BFf%|I}FE?B}Ayjih2 z-To^k^cR-9X1HB=ZpqVEW~ZdY&5p&SN_J8zl9k#hif~i48pb2Ye_X7 z)0|SARE+z2>0FZBo(v^w+oc{7#pQ*oq`0Ljb2fy4Yw2Edx8+gyxW&#M${ zQZ6pB7Wq=V?Kr!jnP|na{x3_KvnSL)Yp(N-6&2k$5cv9_5_<0OS&ISo#p43VWid@) zU+WSKpUS@WWcHr5S^LhCb;CE=3Cz~EP*yk3pQ}3MhTX9@bkW8q zzq=@)b-KRiYK1K}tZ8Gcs6sQx>9#pT%imyZ-p^{B9|ph}rA*>^)uuP-p|rE)wx0ws zvFwVfo2^s8x`<(sS8Co2(WxIjs)~6Z;KJN_1rJ^qmBc{^s z0GE}0e&sM>UbKcsZr=))OClM++W_kcmH*^L1CQQe#MJ&5ghzbJnw*5q6p@3C4ojDm zcJZBA;AS}>+=fBef`q~h^S(S~{%01z6;a@#K+G14Uf2DANxGpGz=O@D<=?;LvYlwS ziAR0>(%O_x7kfyJh1Ga7p7}yVHx864d)E3eM~6>yKRdK#@vHy}Brcf8`8}8ssEo?a zQ~^5vW`-kTnkV3jb^^ScV6Fuz)eS!0__sBoeZ;3)j{McOyz$RewO*HGqf{g^G zTEAz)%xIM?=6LIYXC*{su6Qp%WG-; zymf^By28~kaRk1O(R}<~de(*f?Bu~k<+@AbX5-XUrt0R|wbPDyXrVDYr=mk*z-{e= z2aU;wI*s`$H)#uRmRkQRkp;XPXCzZ!^3aEtVb!I6Y=hz^Xr??K?R{X=<<_wvgUe`C z7R;rQqx*WkOukbRl*ZLzF@DneO=dkP{gnXSjy?XdAj^272KT^DW!E* z-d|sbFEH6KrYS!1D;>j)2|lx;9=YcOg)fOiihv@kS#Ep2UIeu(Z6<| zdugZkN)B)MoC;>CpUc<_%7UKPY>MH2TV6N8jv@6WTa*=z1y`j-_b^S8Xjrd8aZB>f zUG2HrG`rEp138C9XKL#}0%WGNwNX>KAk)=_>YS_(JA9>X2+k|DpVkLYI+QVpUmy@9 zL77TB=ZXqq z@8Y2%t?+L?nCIHr5Y2SbYvY>hTw}tio$v4Uk1~!#b{H~TEKY@U`|)_pXw|T(%{t&9 z?M{6}74RM^lu8ozcf03D89H;X_sX#8fFZLyNmfa9S}MF^m9uWVJTCQpwH{1cXr%fr zpfG9I5ckB~E8-yyB3Lx*dSGyTd(4@uK(gwWb(32fRkRm;U)5r1=kDq%@B$0&zdP4K zS*&8&Hoxmn(E$utDh6d9gxPMh{iw^$C_Q_4r(&nNIwBBpzmDhK6QrO15v#>WRpi(C z_-#EQ$QA$YH=o5A=Qei=sFu*J;_>~RW=8FWtIwetk%JgWX>Nx5%+c_ms)voSz1N2k z{#QLf|5nWQt-b(Ksh|F(QbFm||BtnSN)tS?+ph$)i99X9sKC;`6QqyZ&Zb1BeH<6r*HlEkiK$pRqh? zA=?=ipU_!Ed1=+ILkvTDZxl>gL!yyhAAhBKq5<*4XHSMu=4d1oU(UJYtg5nY#T&FO zN2i(RXhkqB^9(f`VLQl%d!;w?lO<3uaeR)d^FUqjDt9v#pI@U?Ht`l;8M$)6#tMlv zO)*%Q{*AD&yx~oM&UU$vELA6c~P*{s(383t8VkDq$3VNnvidFUem$(L?mMPn&$yQ%pDxz7_s!jn+x{Ox*GJ^c|< zfR{Z2DskC@cEpCe9=O+Yjj0@du1j1c}TM|}IPIA;FGdfx+mTng3j8pLt zne@|c-#K8QAbMK9iE!nM3aR#8I9V#SnkIkXY&i5QibHzDi84r4#FITgmax!gY=^K{A1q*K#>iVaTIqn3ckMZUeRjv4wqIL9y z+Ra}e=~7NRtBBD3ud2cAE}$c@UdK$Rt=A89qz&Z34$4Bdv1TU`0rsJ_NE_L>4!->Y zS6o@7&9fM<lw@Nj}I~$@q3!D+M$>h>Iz-!X% zi%F{mgW$ofKX9*0*JhQnmzbr0dKc`TE3Qf-Ah8AB*N#4b(fy-@#RAzlGkQeKp8dct+1-)J>gltFD2jt+PKn<&0epY{3{Fapol&tV1U zzSNsMG_h}9U+vV-k(PpEeEe7j0;%B*{fNeg|Llpe4az&A-qNu?;Z+MLg3AA5@2>fs z!oJ#M)ZtS99gz3s1;wTB)!4Z4?%2n$4UR}kMz=xuJ~|qqX;=>O(b^erqoE_EmuTJ- z4*oi=Qu2iA^lh6Y4foXGv8>BQQ-TyPB~=egY_t-@inD!!eY^j;I`E?<4-@OycCH}H zywbH($5G4Q!t7fZLMDnKIy(~VrjkX>MWd98Ealx(`>L_OryQ|`& zz18$Fb^a?=2Q$S>ok)_W7Xr{wk%Ps^@@*6{Ir7LD51J|Ktri z3EX1+LJj(t9e#=ZaOFak)3=e*Z&)Ie#(y9>kPeYvj1H9ICC6l)tjhk=gr0M)K*f#G+ZR(;0wP1fI1KTNi%%Oq0p|9OlfA zTPbFJwqzEx;{Hs^T_7Wl!Ut2_D`LJ}dwAt)&zprIPQ8i_18C8vqQXF4I1nICy@a7omM^U!VvXiCmrFmsLA4;xY+vAQEO4$^~ zWsVLH-l;&4M8j%w3r<;kMo-5A;?v2BTm&Lg&R!RzE z!6nZMJ+&?K(1X#llLrL@0G7c>Tk1MXwR2v6gaBdd*5KS478rz`EfO)C25^?;4QxbN+0ci+Fm^&2Dpx$tY`V9c;sBk~4p=%8c*cW4en6@FZeU zSf@G8Uyh?0Ms*iKxm$nt5aL-tSg89v^YAKB&5Po$&4~mkuI2Er7?{T#el%lM{ei#s zFaMpbLLOOZAqj03IG29?paYtIz{i6sisPslxAVc-=&N~O?1tc)XqsV&!F$}ywH%Y* zQduSmO^UxPv$gYhnNooUTSR38{XE&u`>GdBrs1Av9yytX^5$7ix$~5s0ZfF9;a{lQ z@NFgPJe%5K@SNu$b{)`pT-ZyaEjptP3@D#|_S_QvcUSGGVGGkyJGTPxX9A0>uun@2 z{vb=aP?lYx^xXrdU7}4EIof>de*(t0TK}~1-y{4kY-7n;P8P4xjx-5Z z4Hm7?y!a}0oy-{oIlDOOIdT>yD<*AJkx zWm3Nm>ByXGVG@zwHW}q&a4a^I+$&8NH4@h5VnS$b9cDBOO(Z9ct0uwLiCBD5eEZ8( zliqd=H$(_=%?!#m%`*&w?umKEP_FMCMfhuL zq0#crwNw3LVOe0AE>b#y)3$P37}0{fp3p~ev7?6sc5oRAM)f+v5|KJ?*$lw&l1(@3 zp^l-_g|nZ1_Vq4|k=8 z&%B&DxC#kj4G-pm1kYQD2I3!f?4{-C{ zOTnfu*v}z$?!4Ywf(zCRmYX@nqkZSNeKERL!c8{I*!HkxyU=v(8Re4 z@GoAcueu0x=IJu@8~V4p?ROZg!>rH!;~!f9 zJS}Lg6}Nx_3`PL9*|5Kn3JptZPet{T?CKTeNf)FA18)#aJ(dr&aH08`3tsec+;HF+ zsic1VRVy#*eYG?D-r39%0b?El(p-994Kn2w5vZFx6K46D;J%`1sFy6afo6a2R7K~` zAl(s`D8Xeycvyt0RnU^ zUi-uuss09e)F||m#K^|!dG)RBIi0dscA=$Kp3zzUK(^$VR&t5fSu%a>uRP-gneBt; ztQAYt`{&;grQKS5<|2KgAd2?k;S0xJAD+##i|h3I4^{_160e5k<2J|1T|_ZndVyJQ$^{S5u6h z-z>YneF>%}fzwL~BoH>zL!^EdlE!f zeM{1ym-3~LW^}d+!wk=t>MZu2A74TtYAQ0`d)rWP8w;&zqW#9r zX8l6C^QOFOf6ZacGw(etsbUxbT9m z%P1Q2QT^%oeEJpwUF^a85T{IXH|_7TqkJFvYQdoYJGLbmv}D>8lI+h z;y_0BlBd#ex{Hvr=^(Uc@AWoa)>HMjp(iq-oK-5puh z2%6qx_`<}+=vU=>FrY?^MOD@V`z}h)Sb>Vzz3{9%2f?HYYE^snNyE* z9VXW77!-cNiqyR5X2 zb#-^5H{f&x%m>c8eLBD+91^sj8{CxC>=(k${=y7FSzqH^?)9y}@32*{ZJIbTw)-7l zy=gA!z+UlZw~0Eo6lYDF+A*3f?u+=jKctVR3qN=g6^F|Y7q0OJ&Ypabc?L*VKITYuT&-fuf&<3msnZNWAN_H7$$OK6m*Tpw&g@|+^& zJql4EDmiUs0oBh3Y04;v+5$+UPf=FoUG5X59TY zr5foy?Ati4$JATG1r#9s8HkMx4}kDGSoVXMBtyOnwsogUl2%7sAG?2$?Nfo!S(ThY zsYB_>;^x=Tt`)k5*AysFSH?%&Vmq4_JBk~8Jo$vvjD$JUqFQh~XQHk_Zx8T5;K*Pb z3|i^ht-jW@{>$3yniqaCN3G$>Fz9{iF)>jicj0lh2D*3OU>bF#Cx?8r$0c+n!Ad@B zbwr`yaTBk9g)M`=)xCU}S$AI?4|TxzHe#4fMvFDk_NP#fCMB@sz<8J~=?s`=1;)U4 zv~2K|YJCrDZxoHeK_Vr*(*qmViWYn|%KX6M2o4!tI>#O*K35qmU$E{}MF(}~2!>4I z@ay$Z#6p%Cw9lo%CE5<70l0N*f61d{z%4VDkAvY#T2N2V=O5qDH&kvc*2l7_p?hLN zYFN!+#p)=IM@F89#=$ATVGa*7cj&0@C z{uE~+BXRUZQ6HML-4G`gRbn^F;i416U*0dT$~hZ)zQDk!KZ}Fj=CstQ+WJiYHElaQUuSyVHSyTpRrvBJ?|ZuZce1F7k!$H1D!0GX z+oJekDZrL`wuy%(?%ok`Q2#>EJs@h73UfLKBoIq=0eHt&k)^+NN$#_SpMw-&0I>Fc z(0J}Y3rI8fdJ~YMB)Lgy(JnrxTnwNq>Ypf=Ythw+Jjg_A@Ub|OVg7)BuPP#Cg5MCo zem-(*8ThjrHp>m**&M2e{>=~okX}%#%!k@O98>aa!^*?F4EQl~CmToD47v@4^nRWS z}e)_Jk;>Da82L3r1-^Dmc8sBRF;dxeHCk!46rH`6=8p7U>OD1$+jW$=|J#8^@z;%sv8@W?TfW;$TOSJj@RsBJ z&Hgo~X-SFt;4w=32bXFQMhFRIoljUsZ?+1@{u@oSJrkD}+eLhXf>mlYEw1j81p z%&x2d3C}eKN-Eh377E7SFYU|kI-lW$rpqDe?H9SE7W<>G&@ng59^0|4kzuTI6WkTwC^_W^W14wAA2Sz?pY$UsM)gpf9r7N zzHW>PexmU2BZLJz{&j?KRqEI6qn0)YlNqyjPS(GRq|85}91$&W@Xfj75iK0&kO}yG z63H+d-z<)_yZSxx#4M$_+hXM8j8kBc3Ni%#fUyPC#LtNL?CSfxj2 zqTPR!!)AmUBotTgAIoG_in`Cj&AK-sX;vdO&& z9#CJ%x!ZlW{o6h}jh;5KXyb(YUR`vh+aqaA$Yo{m-*&Yi{4)4c`~*T?-C$ zq-n6>*s4m+YSed_MORCA7o(0~S6|}21XD@nh0KIoPfneBAAjn>XpO@y#~aC`#>wSr z{E^w=1{=bIfGaHoN6rvZ^f#zH}5$tp!Nk8+%~$?l$Mr`%Jbup5p!QZ6-#GSzoz*B_5YK z`gtjtd9T~^UUO~7o!O2^HW%^4tS`r2zZQM|WQ)wB9~aJOcsDlpt>tCUD~uE6Hhp!* zK5k&lE*|2pGt;XMXi2s@%Y-R{&V~TPTXobm^~@e!EIww!amjd1Ie{&ccVT&5{)#&%Wq;q2%4LDHC&Ou~TB3xLlaKMr zPl&F$~Q z!s+R|gPgPc$)3_L*zMk2$)EJK!_cw&rI;vnagzVrJ$!`M(h8hADn+8N!TsI{6r0=h0z*2G7UuqnCRrTZHkPHOf$}d57zA1y}--i1H;21 zaFcj}yQB5=^l+&_SV_q)Tp@j=za%?*{q5Vg;|>eJHJOUInUJ8$e|-RV9E*sGs=~Ue zElrgQF2!=rt;G5B=M6+y77J2w{W5vsb!1c&-}S@1urM|=i-dXI*Rin-)exH3Z{Hq* zKNhYCZmaS4gL4J-=FOXj{N&DlVp&*N7&;yDA_%t&JC~W2S5&0q-{XUVjl{x?^TM>V zF2kdgi;Kf~Wc|Oj09*sp)AV6#6cy&1@#nVg`7e{nckV>t9meNHt+Sr zarf?RiP4~f!&|(aiL+FHU6Y^O&v8d3azSA>hA5$fE^s}`gZs9 ze95e@6zupm`NfMD6tcJJX+kLABqP+=?JS3z4>{MZTQ^j^Q$k{$fyd^tuV2F(+nbtj z2jb?T-zR_fWlP~6b@DUnYI$z!Ucu1 z{dPsKAa(v12|G_PFf)hXj&T+K>(9Ho*i;Us@y9p0{~SGnS@iMqdxZy!;gr8}=ME7Pu79HigPg542g~1g7uVcm}Bkc7K>@HcXWh*C>7SS^T%w) zZF|nF&oZQwmzRgj=MDjZOv@=c0{6Z*;FhJ!p`q0OtQ0I-xTmV)GICsikEL7hk2}1D zZ`GEUv*Ye~cHHFs?EJS4mODMI;`p`|TR?`rsk!+jt_iQ_EXD28 zKDu{ypS}W9xHOmt&YQi*MeR1Y;*z|E8jf)kMk$qQ((#xLEZMty!ZX9)zQq_9n7!!f zF*RTO)vj-cx5WCntdXILiydw4?5-yytb<(+E;Z+ulG=iahL7;X#Dx3#^H=incETcL zaBz@*uP*;C<8Du`iTeBdJA8#6CHme< zNN9s^Y*R~1%d`_LZI5Cs&l5{w>E3JZF6q}iaHsFO!m7<91UW(hRs;aD=oM>~5A~Q1u`l|idw#Crk59~Fb<15?Xy_UMzFoVR5zct|%PT8~;Uz>m zfNJaL*hsSz1iT6xvHRn0-=-thuV1eMYtq)o4mt?jSjrq^KFI69iVA^=z*o<`*i_eV z+_=2FdpTM>A9rl5l;bO;e%O*su^u61;#rhBsReWToWc#mKR4@VS8MxC!qu9&KIP! zEQYXH7nas4Fs&Ly+JLFYOKWLf5s~#+gokx>LfV`|k&zH8=RTb-#7G@ea(ngiB^jJh zyc4W}-?2TyYHJT*vIYhQ2wGZNXSr<{S8U{$co1X+*!l?1^jB{zFy2^Z7W4J1J=cK% zE~4oCH#6N-rHXfrkA>zhR@=q$a?+fdW;C{{EfQPPhChnvH{7|8*PU*wQM`N2?8%u^ zKUzFTniJI3e__jffRBPcfzWrf^la}QGZ+M){roI}iHS*E((2SHQN*Me!T=5{IhmQ6 zdh@!65A%}#^eN{?-=rhDovd1ed&iMU4n{^**udk8>+y~gR)Vk|4G0J*MWQf!>bf04 z;u?G`T#j?Z-?))&QF)#^2+js>XIT#&Sosxiq9-gYY*u+*!okVuWL2P#Pq~)G0o+W> z&##CO2(Q>s!rhKX* zjprU8yX9_4w+1(KwVs|HBRGt${pqTG{rU6Vl#~=_T*_JMF|1)$;2>ZoX=UZR zzKb(Qh;iJ(SN80huzo7b$z@<4f7p54Oigv2TZO^KGp+4bnDq}+^IpRZo3`ycFRqnk zIEfHKj*xMou7u;X+7IyH9NlHE- zz0Zj_bIFG=bvG#s1T^~n=TD@=7JB-8CLj17SAFtbnCyr`-jG<$&(0R1R6%qt&5gc{ zF9)Z{_-@v7Bh9RN3$ZaVf)VQcw*uj2a{S4~k%SYu1yiJvG)>5hq4$4a??o5X(HN3F z)R!!6bD3S`%%{?(+!f^2oRd#oZF{P#tMjPe`7KQ6JV^}>4!(K)y3L#u<~0U87ZX;O z`yH0h`)n_yKYc0>NM%|j#ds9f>^_o2+U)GC*ym^P@USfN=Gx^Leca-dT5H9n-=2BR z&Z3)da=USf6f5S$Zfry}t+)Dc@#00}?`sX5Zb|0md4B~Jy~YhZRzm5RMc~~)#1$46 z9%mauVar7PnJ#&sFFDpz;#AK$`67h2pnnZ^!pA8u`yrWFn8PYwI2nd4OMl?r4LS{8YnoD1*veGi|yO3$Ij$jCS})z@bp zbzll6FSa|cmceFdLST$v!$L)~hA)6_2i z*k~`yK}khb>7Mnm zFF8eJ(ebe{ryq)fg7shLfgp-(>o*)0V4|j_9Zs|gpdjSj`nfVRW49hVV3Hx(_z|&; zDS{f|fnC|RwBv7OW#y~3wxe8{iMMV!KDK24OKlY0sI9Nxn7sS+z~p2k7Siy>`)O5^_Zt#k6Vu}Q2lG=c=?&BdiKr*ng(V`lm zV-^~~OxIstw~>L1E4sVeMBKcb0f3v2kB@Yv0n!Kontb`?3lET@vA;1ecg6CFsbE z?M%WOl$M`LPua~QQZfP!0qBG!CbA(0$H0l+22&u^+ce?{zZ;HIr%u69KG-m)RPit+ z?-L&c@0Lk_L^2A(;+a>muholq{rwSu38Y~V&!t%k+-aU6)~l|r&WjBDX3hTW070Op zafS~T#w*=8Zx9|yb2aJ$`H+PePi6VEfO_QG}m6Hednj4w_`r?B>u1f zzStpn#ULZ68Hr69o#0cob8*Q{>icM@rgOsLrye6C_8Hz&CSciT85_r>%136al;xSn zpOI8!U%pf$%crDH!6Nu2aS*%*4tyE1=9iS*Ote;-t2^C{;#VD!WbWfJeX?d4?<(X$ zA#r-;OoaMnjhJl|MUU>#WIM+&O}d=IwMlV7udZ&{Au382xH8YSP0pFXGa^VQD?d<2 z=oShuv_L(devnpa{^K#SM)RGYT&JnoXm+5tsYy$>U&Max$xU}|lOKCk>i5DU%+kEV za~+BykT|!s+QHY|aQH>J>l?jYLU{S!4lze*XK~Pdv|s+KCCs z7i?nW6Bec=#9cpY9XV1TOhp@quLtOKILi?Jtl<)kqeh!k0Sg%5y!ObV@;(f>eP$}g z#5ed(Pfxd^aH*@WPlqcOm7sC$ncWJJ%AZyz1~hDf9>>QYD`=W6HIwjP8ob)Ee>+tW z){&M_e1yJ^D9eTo>({3NLmz|5MAQ5Cu?U=bN6vH?oRlXsSiy+I&YcJEf`#79?j5*pj*SIvbVtFWVNN6Y}{ghpkdBU{QLT6K(a3VReNK&_THe` z!mW$Z5)u}E=n{L%+M1UvwmM(@0ce56;9;=@v-#Ki7$d0i5Z%nDo;=jMdml;fq?c}% zp=iakXNF&D{7=EPoTLUu`bKfA7f=@jmY7@#&f`O zYT=9j;`Y6Yie_Ho-@bioYHYj;w`y%Hk%vJ+1d=2FZCzsrE4Y=JRr~J7>pIM?G{p-u z6Ol17W!cv{2VV5W%DW!5-GkAhO|xZiJt83izYa1aGcq$%`T6eRsWsOIOoYK-#^X=%}+9yyAz^zoxn%DxMm$=wdj&;}PcY?p!R z#r}hZmesiuSIs3g;RaR&1PgzN&rTc`lV}F z)MQEI>gozpwXmyKuPVF^dtn_^U9F6jRp+XTgc+j|0;GXR%!kcJM@QFP?I#Zlyik0& z9hexOvAY*$|4bF$IjhCoV0afcbSr=6OR`f{>TiN$p+S{0Gc)7(6bS6q-|w}tUjo;* z6Vk4I3i#6GCnJc?{`$p2>o7I%i;{t4*kBWCJEehIg{1G=C*ZRijSIf9n)zg9nULFF zbr;*s!G+BlnSou-*`RC$MXAqZ&O-)P)-Y5g9xj|Z>m{_0B+JQE#(=|mcrPFl90-%j zp{^;wl}M6H!YAWnoV$zoK(o}@iN!b7-I7dS1>vB0cQeuv=)3x|(_KY@YXPWdY1eRR zb&>05#WyK?nb%eqYu`RuB@1a{w%4up_(XHQ9;U}gjFtG>V%!VtCEl40+(*`avE6D-X5i*_J%8u*>%+wf&adP6 z=2!C`m6s>!r6}+TJ)l-W)#>;YrR94%Vg+V|TLU$0Y|@jcn#^TiqH3S~RF;=i=m->V zWNGQ@?eB6UIawP#57X3Mw|=FPUdx(Gw}T>cr1JSPRlyeQh|xIqZ4XxOkQ|$`@2@m? z{g}>kl(kKGfwI#iooJ?>xqaDR(i@1?O&x^fYCGq|PERullR%0z{NAYYh@~a>CT=B@ zGcuo^dGAcPb<51+UNU^&S^+ugZY9G+^7h+!ufGdtZyXkYGo-q2bxr4@o{kRl$xCkq zH&%O&Y$$`v9bo_)zq_8%9d*{yt(YR+8^(_;t3ORI&~E19CFB6@eI;lapNc5YfQk41 zp)bXSa3g!?z?Jdubyo@J7nj#!@!%(Z;dXV?j~N z!dFxko^t>shcq=$RK6vtnxNtukF;MtdG|!KI7)8BaUL!(KEaV@ZftyoW0xaAAi+m( z*}nt|d-oy}Cq2#AuU}O%+5k700Wh~F9ukVTftO>_z6+AB{Z*pp13$Oa*ROm2<@1$W z;A0so({nkws%>7;U?3%)e0K0v z@tGc37FJdp+}_{ex8+nmmZ6W24?!R#OknwnK>tA9H>>-+n;QQ5wJ|Ng17%F~RD9Y`=o4Gef6 z9L=5vozQ@Jp8KF9WrGy9Rau00*?;uwS6+GfuE)(Q_rS~9foVZRGbyrGE$dz1XgDrw zpWolDXlNJvAn?z|sl_jWY$bF3y%w{dFMMGnHh=>2ZVtPAnG$(3PT@e(?9LN8Mjx_| zW{g87vNcguN-7o}mrb8PSAWX?0OnMXD0LrHi~15Do{daSou(~+Ohe;J_om|~*>0ld z0}Ad{5yVy91m837DGh+LVzKrm6ozy}fmLlyvm)P=7a)E9q@-bvkw9V#xWuTB zE@e%MgIzU=iHSX~dsUAfWkg}y79~|9a()Cvz>Ss>IqT;^+bTcIz}8SBJv|+?W!_s! z|Ji{Tie+l+sjhC}*?;D7Ra%-#%Gx&|`LY^)TU&mA)E1crA|y3|{)~@%?a*-Sjd3T=bIk$ngFRK53O4RkJZy<7%O8oBzB!$| z>L4QyqP}I};xZRxkBNz4ZDcUrWt@w+i@<&G+O=y4^17XL^5tMxI+nN*Fy;_*s=D}deYT>0iZtIWeAZ6Wo1gRa ztoup1)^$i&i9^_{e#87zFSWs;A=?dbklL~(R*d47^yusM_V)Y2Jez2!aDXO8fJrN1 zW?=8RQ4=qExPXeh^H?85(nH!=H&9rwqos{%0idyn3Rwo_hjEhg{Q6pKD%ABOFu3V2 z%gzCn{~&t;eFw_}RunJ#`rZIx(zI;;a-BcO`rR}4Zr)TU$T=rXeL+xq!9tZ%OsHx% zJG~c*R~hTazlz6E(|CG$fu%?jWA@o_t_39CtK4TbD+|5ULFZ@sPCdSarPa|NF4jIZ zk9^NdsS+=&|KLl&-x$=G2eAOZe*dnIAPGmyy2cJHKUa^Pajm&t-;=ham$`wMFzzV% z(S5gh*c1Jsi#|SNLWl`I0ZIvfi8B(*irxPw9M69k$eTI{Fk3^NRo=>mcOFeZSC0ym zb%%3|jBiirt`7k4b~$bl#=F=eRV!yI`Q{)jM=Q21-jj9MK#>NP^#g$QIQmg?z`hu; z%nldPefv&|15|w`f4nt8Cuw{UZ@b4dH7<^qrt=n!pjwpW2#+|vzS_ZqS~*6Y?C#+F z!LHq{n{y^1DPDUW2LhBR9#jPV@~!p>d9p`8YS#Yvh}8fp^h_f$QE~D72LG_ML+dx(&&bH}Tb%hi zHKl`>F3fz^sjsik?3$`K7S;)Q33?YB1v~P{twNLH%S5a2y-T*ol_SC(-=$~~<7DJZ zw5aer#C6juer058~ez-LJdeA7QS^96SufGrn6>xR)mLN z!Sw#PeT#{EPxhq{d3O4bWv5TLpjM7~kvnTdD(WJ#`NKJ|_m^JTpqpdclEy#;{%8{3 zx+$M6Rf*(Gn|`1+WF~xnk0eSw%3z>(?JiO^7g~;EY<7JIo=b;tM*XL5)K<^Iz@Q>= z@`*r}p%$68@9Jr~lqF*|h|lB-@SD{JC{v_?Tu&Ac1jm=}s``Y5Ry$Un`_0=kFVT7Q z|MQE2kfD;ET?{SUy(y?;YJO>D@e65mNKHdyi%v}v*31*PFW1V;707Nc*z11^d|&{e zL0X{7zl-0WW}kU^Qw+`5p~tA@QvCqw`d>HkW=Z#`|M#Fy3 zS_ZCoqtB+a@~a()d4x69ew|N}c~!`TGmRTH651i@2e0y@A_tY}gDLg^3ydO;3dYlFNc1wNJ_wMY z{GVO|`DKfL6btarnQSn9&55|e-Z9%xZ(hytqPrHx3L$Px4lV+CT3$(LEL=LCOw-}9;|?`qK@rTQ_g2fTe3`*$8jjP$RK=4CQ9v8QnX3Ho?YQ-PczUy-3mkmuxa>XMMQ; z`*~=D;m)phBsclAXK&c0l-~N_sXT7avKXJ0myXfcq4(SuKL`yCwH~UAK>M@d73f2jXwcR3{N}on)^v5#e*Z9b1z+*Qe5%iut1_D;x$vlqTCSy#eMHJ1BZ}OftEz6 zsNgi|Sktree}s-CKgY!F*g=IX4)AtZU!Se(z~AW-pPz5#+n$^~si2?$=TcK8r`rY( zo9D$vL>Pp3E}$`!oBI4qfrr!kRMyz523^U`g4Yj|%|g)1A>na%@5W%1<8N*tn=`H8 z=gIaYx?C!6$Fv;OPFs#lkE53e#@4y((cO-7Apk*2zrV)Y8qYS*=bv4b=WF){8ONS) z>`DQ)<@pIK|1e}JvXzgQVc<(emRN<(f~hYqueK~?dw=Tm<5+pb6zwb~42!ylM{(1$ zPoqD6f?fpbwXxwNx!D^xnBs2@qkoVAuX5-9stR_(%vb!_v11fTPbg7444~{q3xnZg z3j2R-49O=6fg>B)-hL8l-VPIW(A8H#)Yza4sNnxcj@-;B5YqDV>F>z9ZLNF~I>9Pl z5ww++br3Zjp&PjSo}%{#qRv?SG#Du~LvQO|66>pT*?5yw5D;Vo)$x7mCSv?c?E$10 zbW+_{moKVoXxNUoriaJG9KvJNJLu}_QWNo8x51tpT-jYu*VdE@fYqAcxN(>Y+f>6w=BM z5aelyQs=gp_dApQ=q{FprX9(4I;*OV-Y@nz*?}eL7nMVww}8z6b%>6s9k4(9ZWk6n z4|kB}|GZd5ZG6L-w)SyNW{40AdCuO2pVB_x?`f#<5ht&4e_`r7qU4 zg|#`?!A1UhTpWQ=173I#_U-J7ULs&7>7M_nl^8TJ-oF6oLCKhoI!cL8GVcNzspfwD z3WZ1qOQZV_Z(mB-jMOLpNwZK_i9uUQ>Ybyd=p(yT&u<0E zbq$IPJ`lU;l*pxC9OXbSd@$!>sv0;4kegwow;UmD{hWwu7ASqZ-djvcsuAsR3L~$! zkDaoH+u`~P#-3k7;>ejM=4VHD#{SNIm!=v*ZVHk&`Cj#NGZIHErZ)qQ(d##FZU|@G zf%1gM*TEqa^{RlkOx4awTPF*7iT zJ05%kgA3LWEyns=27^_sW{=)nTB$14BcX$wyL9V29jsLV(wrTg4OhnO3LA=3s0awL1}d`;KN^yD+XDdHahg&q($q(LC}ucZd=PXV z8gHbR8ae?YVqzrU>ps;fp{}Vp41iB=u?-tH0?<=Jol^XddI$<26?=ODu>Er{H%eKf zQXo|U(DjHovaEu^fxC7w2q_tpoO}o_kZ#n^oDs*~Dt3C$owDD58x#^R*Zu~sZ9&n& zE@MmWdF~t|S~*fRFjkYi+>AvJ5PlMwUp2?b7HlZ_9RMvt$H$$y_FrNr1#m4R-~m}H z7tupTgTP~UKot;c0|Z@5=&ZJ3mm$B)xqMs?iV~>mRY%?lbegTKUxv~REeeogIfyLC zw`_l?Ka3h@3EkoJ4i_2UU(VegIXl8@I^=Oz*eEw8MQsyuLphy!--Qugxl zV-~HrM67O`6=*;_hT<>?Pe#rF*;)k8N79rexewq}hi{JQ4MvJOc~fxN5*3|Eg{L4U zo(9vwwbzrn@!Ix-hK5Y!@M6r1b>4pd{P}AYsk|WrB>=suWTG9|BzA;OXg)Am8$rtt zkO3)zS(p^QRQ;W)w2ewoNfMApBgE-l$_r#!k{y6O9vf(Jbx6%-XDYwj_B?hVg3tnO zxX-hZGD4jaDbVA`IL)SQydXRg@#`QRAh}JnB1uWzhA>J%5L*sGCOU8nL4Yo#QVUDn zZ;u7PI0J~7#H8aex3GDOJM^YUHXOoi&udu1oxY53L;r+55J7I!w~tT zq4(U1zI9!bPTpT(aJSz#8fUUe3zN2kz7v8`liQe>)U5pH6SVYFA@Gt(A4N=Z#u@w09puX+5GwJ)LEWQvq$M$` z7o<1_>ps})8)y#I{Y-lnsGVh)BFCA1@yBprWIL5ozkqrIjh?h)Iu@U=-?PlBDlX87 zJBNmc+W@vnc!up33Ty@$4T%MZK%U#4Cj0KQ&}f8PXrN(7HvcwrDe$gd=0WcBU6_vG zJ9veZB!a&O#qyLP$3$2pye#z2W#7 zRvw;MG=uIVog?IHKuJc*Q2`gtYc6q+8w*j+_46~d&NLzYFz0GCgmxBN(GF>>+-Hs- z8eXj9Xncz_aAC-vw1hSKQDp1*8rNQ1SxGTOX9!8ukwg(ARMo>HBVPiQK=?&s#C)?d zZ7!=H`Y1fy$QY;SJsC<0RMA=i=?}G*ZC)o72#}yLqIZT!umgQ!l|zbG3Tyss0D;UH z+l8_KI816cZO6yZMD-z7|@-HJJEsfrBt1GrssZYvARNMi1AIMmE z(31lO-QpZ{PYB%=>mNJZY~Z$dvJ{q(lA?R?3OyeIvNG>Y zNml!W$i97*+6xY-IQ7E#mO1hC+m(D;&z!djd7%PC_n^DG+idJko*QcSnx&zQ#rf!2 z$e!ASvAcQio<0Ed@yFs)rjP3~Q=zxKj~P1#wNg)hcUPg+Ltrt}l$DD8;1_gKXz8<) zos9~+j-mOLa7xKb(IUY(4_E@d%*=fkW|Gb-SGW&ePMV%oCG|^Kolz1OU@U8xka-iI z4K*BeWp(zyu>tZ*6(mg`hl0#`+c^yN-mgZUKog}EEq?>#SzCRg)Mw5%ejbz%P|W8V z|H|esA7N&yJGq1=R_lc?{+h_Vj%%w>u8pIA50dHo$-C5j_kZ~et3-4}6i9OUR$IPV z%{LGc5fXaP@NE-KNYW`z;_dBS4?i^><u2_FaRw7?rQQf;w6{VMpwa18p%!cVH)0R((uKukxJxqa!ke^l-VDCabk z6yrB$=Et&(oi}tO^BG6`I&`5hw{*mjd;3?e)5VFMB%3X~ATYPRF9hQr^`!|Lm&clJ zsu5YPZtfsp#jeWF7;duN8Wg#AdFHP3k_|M8d*;4BdT`2dW<>@(G&VoH_`Exh{>*#&@a8J2zVg0I-}+@ma8OlxDAU zEyuPpnz+o*kCs%Pk1m^}xpRnN=N6j>e&>SK4GnK7nCue}2nA3(YtS4x`fAGo7TSv^ z*uG*(8cau4U2uJNHKw5O!kZ`m^qQp26|e@h(hV4hWM#iSpQ|p$L#`?)DA-nds=bbL z5)|(li;sb1;|ejY{>~`&UQSU_9B|qx6dtxZh6u~t<4HIFs%9A;MJ%i*mQb~2wmG9) z5<`04&m|$fd<%}UzK0z_qH4KKYcL^XXgCFRW2{Z1{2Am^dX zB3iL;MfmuFL6@Sn*#?!51a}L9tI{utv@NgZuk~yuc}DJA8yi7+>T=W8F1F2TR&=Dx zCTJfDq201|YGiPbk0#<}Ql_TzVJ7ouUJ;a(lyA7(C)yt#D7BF56v6($Dms#%2$?oI z?U98cmoIbo@M^)!*YU>8^Y-?5d)eDfNtsub5A*x_Ji72^kAgCh7k_oaqX(T`)PzH% z@(9hm0YEZRHZ_uHr2*yS8H+04jIJpX-!3DRlJa?wTtLsXWXrp(%QDZ~EJ8B^MKBTy z*%5-wT>+sD=nP>qy52OGhZSu>5>zAkhd|asRzAReNl>S(soyvVy(}5GA%qK$jlF6l zb_n5)tOuaUN!M#{RC3J`vETAXvW|5WbHkUGJ z9oCKoTYE#Aj6cW-XDx32)kvZ$l58LD{_x7T+HOn3E1u?Ej$vyfcXS=fj!6Hl{pzvz zLF~bxwd{3=qbZa`CI2}wWBNai&?sp{;Czw)!>%ch`N`uc2Lic4WsLV%S1MfJWw&M5 z=9@Th^Z5kG#YU%l{#Sr@;zy9?8=zmK1Cr%Th%WwwcFC&n*O8GyV2*N+VH&_yQWcN? zkSWnl*o@)Wh9qe}Wh=YTZHf)rAMp3=T$!#AnBVQtJx5?sK?X(vB0vKfi20_PsvCTKTcTC}z z5SXce_#mG5_HtrAdHI3N2C%81;UWmA*?_e96&3$ne@(qyj-KI5MC51;OS1R{99Y3$ z=)p{*yS^EO?~|i+x3g|ZT8PnT0en4&T3`bNBahrZWYUr45*Q-uZ=cE_`I93lC=k9U zS#K9l_IOdUF1&s`-=~Q-2*`9gqNlgF9T7A4jR9J=YN#gD0CBEEq(+ej(ZgpALC4)P z?DTRMX3XRFenxT@<>x0ANDhyyfN?U7^Uhk>8;4*u-hT7eNp9O)*Sz)#&^Q;VgHVVe z)qJJ6^-=aoO}|X<5SbMuq__}R2j&OyJ!e7yqJBKu5%I zEB{eti8mcb$HJCi0Uk%u-r<^pn_hwVFWp;A%fs zUT}-=R3*sX5CU`QDP}TXY-xV|y2ybw_uow_=93l*NWx@?lQ2Lly1dU?+5pRSJuxym zYFt^UoyCtLh|<7rCySpuPHRY>PY2zRD!1)O!dXxNIi;mWmy`onFHvG0*`U?IWA9-q zfe88g?_V?%Ko8cB09`UsWdO^60G1II6bu6fUr((39=m5R%|3qHDV2{X1;XO&ypMIs z?Ur);jF!{xUsBWuUX?8ojcf3@1c9%b_xUL>*LY_ECo%A2q-C+TC|?6%WT~rm zbsgAP^pi+E4d`AC2qnN77rAtZAtN&`lbMgSHp8tX= zq2lHBD`cl!UI*4H#q;|EWH&7wx+HwJ`ceu|0EC!XIESCfY|m?M4mEe?ZQIPgh2aoa zB|%`lmV9p`7v|a9XGyLF69=5@GZ@BJH&Rnm(_QYdqv6_iQo^y(Foy*}@)f?!kp&*~ z^@1V^F=64c;9GZZ3zt&wf$+HD8w3^+;C)%atR$g_Rc`J)w|iU6VqsjgX#|zv!s~MX zzk7%@;MI;twHJR15ziYN8>jvHo_TL1T5J6O`busuxgt&D01>?H&daQ~hQt#HOGQBsJRP z;6t%S_EUg#49v{LTz6bQTz4n;;lr^IQMtV1?(Wh-wUq;6yP%&acjv?ThRdi@$Z`*H zwX|su8YR?(N1VLf7Ai8rA7l?P`hCT;rJ6C*L6}Tp0N+>9;tTKXtMTUq&JBjjW7}?*U(cK0xoqX;-b_GQb)@WbFMh>% zlJ>R^#e3lBNM;|^J%xeH-zsZp_J|-Tu#|(CcIiMB^5)(F9*_j}WU2&-4Wt(} z+={c9vpCQ|vVDj3^sbl{TzU9Vxc}16Bg;6=$BtGr2~jz_E*JZCD+~(ysrT?7JB#)g z-VVnVp1K%*1WJvH&lw#X`_jlHs}r+*-z}mQg?Mg0#Ed2hrzAC^+4;CDtpa`@O8IlY zs%lx4?XKwnR74E1cacXWES{Bqs;x%rg*@7k)b!UTg&{F~*SP~T0_tV-)7JUhz-7!X zE(Q+V`-{4Ch!iGcYM~icE9vEk(I7?g*qBQgAyPAs^1HH`+4#*K)Ikwwe56~|1}Fgg zCCr26AWy!fcTJJ=NJ^_gx#7J@B7&q*l9G~Kn4=zFJqQ9CkV=@_3XDzk_I+Ey{T@DY z1Wm-Ma#xUg9YWXrO}Zz28@ZXDT>IFa(PUg(WO(dYeMRO2lwnx1ws~p@^{7)L_pdFV zBNcf|QAi-g*mq9xKORr!7>RjYdkRb!wIC`cb|2hgD$$BkXyzQ9sXrL-hhX4Zu@+6T z5)6dm+jOL=)v<`nyk$<;OQ3fR>8ZDEicFL;pTI#C+090hKQ#ftNvQLCe5Sv}R~-ASe{tyb;|6+th0UR-lwCHGrO>G#j>ywwZSa7lpWaWMA5$(lVfkv z>$*d%r>3@-NNm1oa#u;5?OJ}mxV?h|dB7V{;OpM|+%hP5NHQ5+jxd~|+i~DPZSx+q zH_7t=WW2^+>rT5l?Xg&7{ypg|d9FQFiYtFVq6~zIylAZ8s4!TP%ji^-Z2;tgsJ*4^ zCF^SXmHW$Al4TsvLEsAh^3pEbXl1YRdzZ-r@NekL8)cs;r8Dal&8Sp`^H9~2Rn zJKIkvo*M1L&z26s*CL4?-7-RcQ@59QcOPyuFPZoF-5l&8JMHj6`a(E}!meoKHpH+W z=W#*Rtim_}oH>l&aS%6T#Aa37#8D9egg4!Hcc`A8*(w$R0=ZNYQS;Y0guzSVeiR`V zD1vrA6Q(~2#ToHYkdOi;0s;dALwiN?Z~;VkX*RnxA~n4>o+36lpj(K-N5^L0^wiSI zYUb!Vis&Qy8$@B-tu3n0@80?U(fgb-{DO`M4}{xvAo&a+0`S5he26Z3T20jt)WBTr z0;SuVLnj_>uq?0P!*^aJk&cb?01DJi4KeW1`M(YKU8H!1?A%JZLg|b~d3`|vlhA8I zJUmo5%Tt*nUG!U`_jtKAiZkQm*+(-HVq(aMh^BS?fByV&CPHlQ-p3Ng>8V5O25?Xb zJM(AE>)KKa3kyTeM=??LgmzaCo^Tp0kEb!9l^DGniTvrMA0=3Hu5&k`JxmzwoQMuB~k@6imuf0JPJoT;&)7kYzfHw&1iW6RoVa0kFRcGL zSAaJb!Pdj7!Ydk7KSI3Soijik*0Nt?2^XJSa&=`tA%=$kZ1#-#b-QrP z`{&g!!7$^+J(oI&?0b3bzr%g{LGEFy^fv$vS23@DEahDrv|rYSSPZ9!!ygOO-UD$gm5lWA{dq+i#%DTsniVm9Hvgo7xP2I{w2Td+;Yw_)I3 zn$KV=1BP&bLzQwO^! z*FFM1(=Pd1N*E+sx3kV8qfpFxI#A0yVJbz~LOf5! ztgEmmfRK40I-_~g|JU#Ng&Nw2rCLRcI*oGiQUyvzXOWN0nNK+zVcsIkG7~vo-!Ko^ z`gaK4uHaDVDIGhVe-d7HuQM+fURi(#8kcAE$3-lBKtFzTAV4H*&LviCt9O@oWIH*{ z2c2pP#dy-M#b^X&GgR@(TgOXlS}2KLZ$F;gj=VG&7)$=TyK>u+sgc0U5b>iBr-T@9 zjF!LY>oD+YxFBdae!Ba0eR6E_a(_Fw8~GaU7s&Q81H>~icbt%PZVr*XOfzB7u+RP4 z$oO*6o3Bjm+(i!EZfQ78#UIR7@z~DXr>1>e-4S4ABLL2Vy=2CQv5}VJXZwxrlio>{ zVl9xQK(`Y?tx#LZHFfNt7u%0 z>0BWV9hZ<(YRhs1@2reQ8?LT8thbyBxf z-Fh%VI8OayDmz*7n&RXH#GwVTZd$$?IE5eyfb2K!#>OhO6E3oDW|KSwmM#u0fzFkV zrRpPc4}pc}k&Ac2K97?Ca2U6=`=Oi%F`s~>*|n)C$DSEfi!OL%f!WLIas|N8e#PUwePQzhS+3VjCwa6v8g+Z35^hS z%tIG$_fX9HEI;rfCY=G;;L#NDH<@Ji zMfabxgCi}WXr#xenYSd zS`*C++`N0sK(5WY@aC~8xVNc5y;{^34V!R!1er(lW$|_H`DK#+lFs`2{SY$Z!YfGK z&#~>H8%`blxQ3^Y&7__;4Gt332qu}{30QC5&do2fYO0XOwwDl;FW$%wr=q)fnGLJW#8d zS9N+euteTY28ao__l@RaU$9cExNS<-VEIlo@IU_@>xvxtN`8XY>{JEP?#13~vGM%q zWi2%H%;G%fvhQ<-L>Ik6Mp>0q8s}A&N6b~v2L7W;5PNnv*whDhdCses!36X_xvbo- zU%$y8-Az6KGgq{njTB|+Mo4O0cY1zee_ZpBsM+j&J5>-hvh1tO#m)%9$arczv}ykc zJ{|Wec!MIFo`fgBJ^AK-G!~SJcfqvuTSJ2fG08UTeVgJ)EM137TWrhOmi}dUxVH0S zW{zS7TSrLj1H#!`O>g{>Ox&Z*(E#CZQ#mi;J%WzM0cbIltDl1tXPq&9eo<7Zn52^I z+%wq{Yzux|)OagHOOKVcKMOa`K_)Pti=fAM6W!tY3_itMX&#?2>=~yszX3g|7vT0? z(*6vqR|ypVfIO~4Yh$kLSR3}#!(7l5XxqnxE`PfwP72&f!6QJgm`G3RlsWQjyw;zM z&?juy<3O1{RYe7P*ZZoxpz(n3DeR+Tj`|+YCf9J6suhE3?H_9m#ylPmNpHw|<2GLd z5otB1c9Sb;irtRobtcynL*(}}ae|=Z2cPgq0k6`@YvaJb*ru!3vum=B;V|I*X>Ki>>B z>CfW1Ytwna7-+A9kwY~XIoN2B8tN^eJ&UwS`96(@6hO$X zc$sS_;_%_7vq&7nvU+k^-CJwOs}c1d?Yraw;!M8d!Jq7MCV%4A+80S}k)&B83_opu zJRjU{!re-Gq7hY9JwvDfZ7;MKPy_H4N+9ntVXwLG0NbetGdDB5PvQBI7plhn{K_W- zJxg;{nOR|VsP-F)m)kT^^B7cQ|Ceda#L;%L&I-Z5D-^?Be|QnyuG+ z-4bJKo~l0DNnAs-aV$QNn#T))QtZ}ef-wOcIz-2jM}eihSJABsE38hvQ_@A3cTIT~ zyL4JpcX@uj8NSwD+f3xYhC5FG+=TCqHn87PA~ue@H=!V`svl5*kkhsg%JLRjy1z6c zL=$fGWLHWvsv{L7@#4{4;J;Sa|Me{1%n%71Ustg2Nu-p`8#HNWpNeFl>nsBv<>IEV zyx89PZ5tXF;rpY3-4UU4xT&TW=K%=??u3xvs*I3eEFIpblh`K9N|t#ySeI~o##RMI zh|lQaBQS!A39t%$QP}^M`Y6Vzh1cG86=DooF$P~5p8!7Nb`xC4@3T>!5a5SVmPV&V zN#=^A3HceG);HL+L-t#9e>{ZcoMMq#1Wcd;K{`ShLh{-Q8Y?ApM{u2U4JfE*NP4wL zlff*umSZLW{?pU5VZxi5V( zaTX&WDk>Cp9~scm-Hf`(pmvBTVT$@gy=?G<_w`IaaXFZU{No}b;L33+U=ddRBwhtt zjC?tM)MS>I!N!8+a^HZT{_@Y!WgW@{1>Wv6!d&&sg5l|fDi3+;6@S`vG`<5)7@ zuyh6H;cT-kK=_7V1LOB-ra1}@w^J-3PHG2T&$9twDqvss*2nc&%`49BoB=Bu2f^z4 z+8o$2{*KoizYDiz(@5HUDobzaO%u-8+sT_o3|wVY=I@3`#bxtaK$TY}=cCT!{CeKR zfv(ePX+a4$rF(G%-ve;ng?>U+Ano(>L z_s>+AP*4$Z>H{RH1}@$6Xb)^@u|I9j3-UajYdA*s(X|}b+7vP51oUoSMm!E?ICVff zNv9`*N5!>O#iywq9A_8W6U1LY>M9pILGdB9oSClHk0zIX$ce>mp7mvCQ!9Ya@$vEJ zd-VngWhTknt1IYKUjVQ7*Q>*b+cln?s;?^rvobD%=nWagC_a@3dA&Y`1Ff+ceAKUe z{;m-KJoMqx?azGRY#kJeCy2-HZEebtZgI!zmB#4N>C7QOVSMp%Zj$f4=}qj!M=+P6 z_a1s}26yrPp(XeIX$J_5)%MI29FNCtol02#`0Vt(e2Px?<#A0WB!hFt&W-jR$5#xu zgx0pwa;cnGS$vqLa}SXjY@F73Ja|IO>E~Lz`@RDXZ%*AWnz(&WdQYJzW#XUBkPk}_ z;efUzTy~?fl`dID-Pp?q^4pBvx|E|2o_a3Gbh;#jKrM%MYc9lG;A%&9j~C8u5cYU1 zlurDm8+-M@qdOJNM&eh=NVgRNq1aVP2J}FXQX9F z#J`6jE|(O)74}Ihfs{aQkw)?sk7yf`tLU(y#p^R}Ht||$YF1BYK=vII9P9IJKYnBF7r35+Pts&$fyOy>MK>(|7mu z<^0^^)U$d|sB@Y(>uv#0Xy2lx5;OI3J1kIJ`Nj3Ld`@81iNbyr;kKXKhBs(bomEuz zatwRT<8&xYWn*4bl{u{V&OmYWNS*xj-g>k;Vu_YZv$T}a^W{g}dw})o2EZKxK}*%n z12axfFtneP%5v|vz|U=`;Wh>kS9WoX8mV2}Lr9;*ps4ptz>e9g$#U)_o{d|JT5a=5ryh``ASwMv{nUP(BA` z66oFu->Z98h=I$Ij~Vsii#;IQ>DMs%{))`72K{L_ikw_Fm5@>2z0B>nO;wXhtccdft#h(%>mneO*14fQe}+r2HhPZ@l8qtRh zOT%e1NAa9SxiI;niG2(Mv?ShCFB|BB?OOPdN#!1u)7;xUF7_UI?LAI#hlAaO;ydZW zMn_vY3LpO^qi_&1l%GC_sx4N&n!_>k+Wp!)^at&e!fA+b4GY^W-}7T@lU z24qV(9L^Vf6@8(_KorIi#9bcgdUk2Mn`=R~7KerW&Nfp^T*Y7^KS2~DeLo6R81+UO*|Fde8x~rp_ zo{*4`jSV;}E9;LQ4l1I6fU`$GyssYN2o)>{)K@9MJP+q^aSVZ2Ti5c+s_wzA^*=ZE z|Iv^Cb46UU8L)0qAp6&G(W=7npqMiKNAz=96I~I`7#27AjNu<%UNV$HO!Vn`H>KC(7Y%`q4!^$ zFGS}l+3?Dhd+ zCaAr}duvz5jlxJN#)2YPH^M|u|F);SJtfQeSKqtu7jz5V@sno9-J zNi=eq$F_rd>~8!>X&W{{Ef)Ize|96KiYD1rW^78$J06>kb|W_+1uc|<*c7(bgWCts zzoK5XSrucozn6!rPzt3gy5dxHoSnOce{Q2JQdC9rNE3xx$}V8SXCGNrRIJ$##-9(m z7I)JnH)}GVEFd178qy-y;&-_11`K*Gqp-rQ(6%RLSfsr?krt9U6BGKhs8%EXzvoj050nU}`t7S`0%^z>}~bH25SoF^X1LIv@WIj^Oz@CYKms-=k;VCm3#8%I8|k4g|kMq~%yVoX1fz z^}tQMaWaYe&Eu47*D&n%lu7YP?^szgb)@abg%Jy|J}8L(vwc%u8dO;K&1Zbt>0wx~ zU4gv;;S4RE{drY_rawr;B~!7Q-*Tll>dTtV+=w#{Pw7qi$6|QL!%;FxrXou6`;`c_ z;zIowY~F7&KEfvK+V>T!>2La11O!iHL&tyL%{>-H)n-3FHkTmHK_8+ga2`x$RoZUd zSa4#hjr$_>@^D3FT;49XZPH{38p{6hwX4Z;XXO(s>#%Qj9-M!*N_)ZfyVY)pv$&G{%f`J~9fyaD>JDska&f}7j^v!VY*(;JQsW1AHxUpQ*^-dq} z;T4>IXHV0)nKT@5aw0>&Kl)NxoL$%6Yje^1Hzm%qSu@qS!vPYj<5JN3ls7-UklXy5 zHAizn4QyVfT;dLA6`lJvj|;T(_q}ovmQT+8j}g!qyb!2{Y~}4x>L~1V`SiJW9uL%} zvM*<=v|+o>LWcyXinsUZx~*=7Iy(y0n8zzKvR`U2{d%x*kmU$X-ih@~8L{8|W)uOS zJ73-aAw_()MPjHzgl_%a?~MgDTReLVbgO=RJZB5PI7dIj4fE(Pl$D^ zyoT7&c{^EAu`Z-RcYPgCkW5Zp9p{zlPsn*AtB$9=!zT4!I&&5d`RAb~^`s|o?!1@n z+^f5xqi}@BGu#`E#l9aoP6Ox}Zk-W?T&MkrMFYwY7cYsjuhowHia^n~x-HY8eOdMezjp&4@SkF&|+8Hv|Ur+m$F z2!K4>?2~T3nDWa;77N{Y^NZwg+#4;)K43+T(Xlcma+T_ZYn4WYqaFbAbG8aPsW0hz z2|$pw-N;sc9+gFH<5dH!+c-730HlE2(l;WB6lx+XE5{{C*JV9sHp@;DerL=yaZ=D| zxh^u#Z+M?HKr74AHs$CoxAIxZDfOY(gUv;htMle&Yvl@{%r%eA-vd9Z-){Pv2kCc- z!b6&!7ONJe3xbc1#v0JQj;%Xq0C#_xitF&fhYntedpKl$ygMCRhj8H+))ULgt2TDi z8NlbJkLA@i?~SRNhJ$x>h-eoD$y;uYS3U>!!CTb|f6abNl_L0zzuR~XOokN81LJws z-)x!OIw8!K$cv8(w$t1FSygRxy|k>$=4ac%r}04Sr!4?j5znYgP*_3$#38!I6&^@Y zHR&_Fk##1A%YpjI{2n*Sx~HpcX;I_21QM2?QoiS||1kU!BA$mkoVv$JSAQhuHC6$ur0;v&byR#ck{-h)G<%GWbn5^E#Byf4;ZZ61;nBpLg2IJgWwz1%_EEn=wtWNqf7LCZnCZa-G`Xf>Vwv}U{Eck#PM5N)Oqg`||! zrw;G^oZx*_QaigI{J4RiN_0*qud>!FS66i=_U&Mizna5@wPhRc95pYn&}*FMo4v{H zEOar->xLF9HZThBYmuBWixijdDLBaM6`DmWtR_#I;4&MQjfMnee?m$=waX1=bIv4$;|un&Af5jv!Jx;9ghBI8|O zXW4Qt@gGSR3`I^tu^R%BTy)H);ZW6W<5(8|1o{7jKoHXQh{-7J7SSs$5s%zi?ew3< z4x^wg_{}ATfm`@|c8bTtFSBzc7}vV0?bo`3y2@ZTa@w=P15UeDolUkyWft;?)YmO9 zT5VWiqW!BpA6~^1H7f&@7~*rJIY*zD%($wc>uBN39mF8FEmFrhqE95r-)UI;AQ|My z0{5Cz2`XNi4n2o!7LT8g1DIamZ4Y46dwZR~esX3e87Yv5tB2e|^@nwZC_}syC7Y9Q zhM&iOqUQzMk9z<4$zNNUfX4gmCKnaxyE*kn6d_)PE)}fqTGy7;`JkxJuaKg}SS{Y* zN>gub8cgX_FBjr}zU@p@U*z?^d;SJ>qu~44xJHj+M42YYTIm%D#6%m`$iIo( zg%i5HuYiRPwO{D6LWuVSYNxST>CC~?4FGBr({;03-kl^etDZ|eTs4MY^xu2lvQs>O zV!yDzXgD68mBSmlb(_>LaJQ7w(0dPztJ~-P++DfMl1b!}IzQ08K-a!`9R=DhFhe&< zok>xwTx(3D>_@?vj_Gx5w(ukT0-MLKMuU5V6^tM@Ezh+)n*-mq_dgz~Oud&P|1T|o zzec%A>5N{sN@+_=%j4}w)R^6+9Vbs6%I$X*$fPOkjoBx(Fu%e`vU;{(OLzGfT!Ar*CQ!xv=kKC4GnW+V`F-( zu$=JHQi+>@MAvWmg9scns3*1P!<>eAhK|V@?gLuysA2xm$>ArWbq37qeU={Ng%#3> zW*w(!G#shr2@WBaJe?_v&qQBe7jLbNx)nxIRM4z>Kb}0@Un0Q6PxmhIyqrs&U4q{m zCyJ(Zc6LInmjr!9e*E|a%g?tb4E(%Zc8C@QQwi4hM4;F6+rO|a>0c7K)4X}ZOXvBR zhJ8xU9dp@WUj@d27e4nWPMm5ZU;}A>@tV1~;xYqIAm+$XXkWw!)}cnDSt~0m{n6wo zm8LN}oKWQ^9p-q+j5!z4_o~Agv%TK${RckzA49N2q8%~ErS};&?hx?Drg3{_dQ91G z>c8AhXW(dA;sl9*TzkxWq3SqqJ9l3CQjazl@vXofr%OULTa1K^NKacZmC*QjUk?x# z_Kxch4i)RVk!=x7jRhX-J!{6EXdEA+Ft-paWzF2ZtX&y*kXAAqYC5pIx1M`Dv{qZs z(~7cqt<0VlN67M(nk_;pLN@yJSPA9Gu^X**I!Wo;Bc$Zdf|_mPC=4Rxt{gL8-`Pmq zJ%)-)T&;EXu%e=)u@cI78%*rWE5wW!NlbyLaGz*e&vjD$16ps%kb&>>cdOq3pVLiR zRc7x=&(BX2b!OOCS48V?2-hF%U(-U2^n>*GHxglt6Dt)*bA9(1?k@^s5hQrw`NK8h zgp$OM@B{_CMG0o}-RDWr@C7EexNQ_RLv?-D z^qw=LX1ib)j-zPD?eu((hUvdr_ZoRdlhKUR4#RI?LWoVq@FAA+GuDX3Gtb-|7UULHv}CikM7Dok8eS7be(|CGA?hZx26%_6}+ z!NRv?CPo>H|9@EgpEw#CtgdFK7bir4gF0EFguqE=Mp$cJu8+ECn_WI%SC`*xrN@@a z(14G}usk=Z*2KWc>7poXR}+kn)k)#`Lbs_-68t5EY>e7KOpl4dYkxdvaPXVMidnhJ z5Nm`En3E8L#)I9-V=C^=qdVcV1_{RCZK>W^NWVYVBFY5s7gztR!7ElfJ%Lh{QfyKl$Nlm579I_A zT@MvgY2kx>LwDD`O=f0h?-qJjwS>ZHESJ^Qni-8Nts2k6J70JB4v|U2`}v}B9w8CY z3$BJZd0b<3vsMQxq`QH-c?Cc6*TiM~xfi&)iEv$x&NIYm)Ax6|LzBf8Xv_#KI6wGS zP*}`2hG4{>gk`hV?&YvRU9T&<7`t2>fav?rcCSCr+LSl&{nk-#6=0%j(3?udgB_QY zTyW1$(RP=x@@8M+r0R*Mqqp8o;==N-}|7y}1sw!LUL>+(l*U|j41@m{G1loxY9TXLu zr#0HY*G2Z4NgY|#EgG13)JF1Fk37GMowP4?eKy{G_w5S`DY5OlY^&vjv>3e`dMhuf zx-R~P0i3M4QF{gT__#VF8#fu5jMi4xcS6Q7nfip{DOni60XHwh&mHb!Kw*cd zX!W7l3D{(l-f?oO&Q$_J-K@T>#3W}XCB-G^R_H5{_q?~xi-1*JtHc5(T@r_OsxO|L zLWK+hWA!bUY>7IJDi8gs)eH`fgcN1@e5SkXQ?yhvJD8hnfQ-nW1QlfrGAO??RW)=p zfmeN zR)N58ZkcY&>BnY+@V}Ckb>^mLDTbs`Dy`SE@~i`5SA^4$wUF6=_993!GbRl&e7l^) z%~IZo(y8FOuzt2Tf1V@NklR-!-Bm3mVT zlXMk+sc_7(DTz5@T2xm{&dNmnkQ!I_SrGT!Eiu0^W)I5(z zW|M@)+LN)^T^(Lx#yBnAIP4FD@ey7$PWnLUpLBIKvxB3u(FIB7jZ~&k$>AhTiRtHZ zi(?Wq@ZW>Szn?JjsDmh-z7=Go>d1c=pQ$&Rz9?5Za)5UGMt}uA`*@eVS<}KvT-s`6pw?If^ zG#4zW*ZuHQ`la%(oj%DPPs!)5JsafMDK-LaPHF&nD(m~IM*TfG162z$2|U-gc_H}u zZli5Dk2GH)U*_>riHIyDJUqY+u=S~3nO>zQ))0={O$Pp1{xC)|Rxvs%IXW?Z3%_4? zn1Fv+UGNJcgwzl^6B^t$lxKuTB z$bu%#%ViLl5j?&8eYYF;pXollZYoV;i{c~kE&bi}M1f(7kfd;FhmxefDySDq)oEB_ z+do&)GGd~#-E}V92TkqsXS8G$`Z<1^y5?ws`72qJhjm7iZBx}s{1AVqzKBF1q{IP* zld8QHdS|5%{2*@yZSh)Ce(){hwS6F?{xMxx{lVmzq1KkTfC2w=ZdvePeW$#K+ga{ST)XZ&`c*y3Bs5%E!}i&0Vj zw#voa5l<8!=|+I=e$#)9;_4$VEUsy-?xW?E8#W7G?R#v3F*lELgO#-PCYI#}Dobhl zu@!wcZ+hUvUJd&krlxl|&vE!X zxnufacgPY^!$w7_?8j#(-YNZ>DXZuV`~to;V@=&A>UW`E9=j0ktoKkA;K=-kx>`58=RoY1KmVJ~2g8$SazQM; ziQKP=TU7Mu*n$a7Xy~(padCeQvM80 zu*}H@Tz6t%Myc#MQ~hr4l@|25+)Qfsn}*c81>RIlTjlzpD#$F7L>$Hq^+98)-g$|? z1P+NBc+O(nKbxCNxqiyigA7GEgV@z`}m` zZNqGRdzJZNv%w|JNkQBaCs-T0H9!4I-A&eWqNLZNv~GO%G`ZPvrbo9;Q&m+l^RhHk z+k?dvkbNJyz$pRNT57J>Vg|d?(yd3VrCO2NvT~;Q}k?R_xgasy>jKye;!R zT!)z@u6Jb*9eb~xRXT>f-@pQX?Yw4p59F}Fxw8rT$Nr&9O{km(HcSk{3U#AXUyqooQ1{-%y zI*?m%qM9|+Y0k_2dgW1~VG3f}Zm*8Y|LkJ=kXmuc7wY_< z;Feyi*Dv&HR7aWEeiRiPK@LoeZKrZ>r38W=z%nbDgHpb!AF z4-VvSdVhVkb93_WC}h_BQH#&2`bUE^YAN|W8NDBc_h$@`-aNPx*(U7)nbN~?LW)GObVauX0#aivjqi$dZfZ{ZxOBXfQnk1ME-bUC@Mi9Y**5wL5HSK($0- z((wnXI`Qr&mfS@`lx@#`R*bxu-kehoIX+k$dGR}N=Who$rqop97dT6|h7wXIpURka zFjXb)en^qxq?rwe(q`%u>^IWh9D)YU70f^G4!i7i{e9DQ>;7bg=F6IIK6%aCOUD&zSZ z1Rv9`J{a2!87%J~3lnsaNeQvyZ18%%!b~8y>1l3r57H-G5TP4w?byg5k5`qttDF#w zY&!3pD#atc?a_hCEwFwUX{b3H?$`B(KvJG5fyv~mUBmMUT+iM3=N<{-@UXDK!EO7d z)-uz_MOyqKt8!zjMTdj4o0BEZByEF7(rl&y8EHvavK0m??+u}|?l&uD%685g;x~oM z5&vifhEEy`mfYdM}_<42?yzDl#F{ZzwX=L zzs!}AvV-%=%9>47yizbML!`5)|6mn5=mzDj^DFMGi}dQ(VT zVGt{^jl#R$u6ek{0|sgf1ilnZ9uic+3-n1?)tIQ+B}{6DUl{+Bzu-E5WTj1>g6pfe zn9RJ&XG#4@^=dkt=YnX%d^qh@^FNd?*d1prL{}t=K6{#f`}R%Yn{)Z>PIlFUfq&Z> zQ4F!+-!X~N_tk+MB#Q>^nf7A+G4EeBzqx*FD5R!_8A4b@LHs7l*uT4In6aNPAIPErwPvQd4={-1I;D3{!rA4nF+^{thpx>&U0Z5n=1u#I3rMgdVuLajW0& z5Eas)3mK@mX)9{_GqR9&HY3A^zzm9X<1fG>%=MeTGc%0oCSiOSipR){r-pa?JmmOe@Y1K} z6*UNSvQeq4u9}KP!4Ix&t<5bgmulzaCzBjuU}9lmN~pu;GL34VN9ogP)HM7%^v}o{ zea9Q?Cv*~y>7Jyi*-LrF42YE#m8}&Og`PJ0=AI?Jyhlaf|2sWK#q~&?t}k!*z+$y> zHI?nm3=^^bm-K3H=+H5D0uKhfR)%3do_mp*jfFXE+lnpwZ)8?Yd-NpMvp4YYVKCPB zs*7moylnE>`N9+6F5tj);^1(?tj;)kxTy2OuTL4Qk6mK0fAAY&jp*COGa-oNBNx)o z2wEbLpn50XMBQ|1QQXFdE4k8@sC&22ck;OdQq2c^mGKf~7(@BRqFSADGAUdHC$FKS z)~+?*PB*8X!$+ z-FHrlcx`uXK#1I^yTMIGoy}i3+hei&;IC0zv5WEvxB?)yU+I}m`^|K4za+dMaDIpD=o*tS zJxw%tNnK68?I`9h!3gjf7Fnoi2w+G}dyf{4ap|&hzWfIY`1FMNdsru$i+)>mZI7t2 zyPl1>Q%;L%{@Qdx7tCZb)8wCqtGnv`RL=_h#$N3>C$%p3o;_HcLS*dtG}{!~E`dg| z7Y=oi;7ONnx%unx!FSh-roj`f<-RKYZcmjzmV|{xdbl{5Gh~PtW{PH_l2dv3uU7QZ znG-sE>d1UuH}`u-dTTyHYv}1m$8nYpQavtww)xFyc5Eln9`K+?-)FiWm+`W8j2z5X zLe~&v)PAANl9I;Uttfm31e6sr`Ry(6soRs2XmIYq6-ZFK(%xwK;wEWtfgL7I_*#^T zVOK>71Z6Tib9=d?9PHw3LT0#UOvb>qG-Hu+!`RqZi&(%>sl5_dCg zA;M7RXt|{l`y50!shQ|+GmGrtWJZJkE?mt2M4Tw=2^3m)v2i*qxti8J;FuIL;5OmR z{b0?5wY&TsmP*MOV**kvspY*lj!CCo*x(W#_;3>MelL3_q@iqm&GgZqm#|b z<1F?fo?w~{*Gq~`Jq!VN;+CQ&Jv=%e|y3}lExp>cON`@n8 zq(S0Sx@0TMb72xq+ zSR8)3Krw`#{0uW#vy3w;pwH5+E6F#J*Y~E$t~Hj!Z_~1c1ygq0BHW<*D87viI8og`v~l!)s4fYj#oP7{@!KGvQ^J5oz1|H6Cv z8fN+8a892fPMLsp$DgC@^ba(Z4h56f0wLYq1n48w3tLH6AIqlr$ap)SvE`8Ws&hmq z^nE@uejawRdB(a)naTO_?x~xS)UZ&QPDuk~mhWiVx@XcMyp%H`{Q)Yq zf9S*Q=Ir7^F6d42ANs-mV9qsQvJ$R80Gtljz2t#pq`^-S`^`-T33MRjv80M3&<+5p zf*SR31DX)xT)c=s&5WvopmhS+|1((bOX(lQxZ|eYU5PFr<32*@8qN^6UO@YWccT0_zf5>JybNiw8fk z21%c23by|A{#YYyLHPSDzH0My?>0lvgT7bUKUjHnoA$>W8`Ir16a{sPO%xOoL_!#rX zzX-o^X06))uyX4kD%t31uOtMUYl~_*SM@U`hcZ7u1uU}?~s zmM(**5+_Wv84ea!#LJPBYU6G#tx+BA`RuUDb2>TB*JpY((Y8UH=qP!|;bYZv$>@Iy zPJUY={}^e=CCXN@_C64EEo0=nx$7pb0N??f(5t=a&qFqX-KyZMyX&L9RnHq&*a@C7 zo=3Mt_}rv}BP;{mhDIAz)ma_h=dA_C2^*!DwBAs6|AJF~T9=pXvZtrvF@t|6py=|f z%?&r6p1irlAL#m5NAStL``(=i*ir?*+_k8%KkXd*NB;%g{7upDFIV=d_qbi6-Rm9f zG6cDv5ft5K*j5DXs+%$Hz1A$78BTu{{?4-0>Ad1=UxO@>rWdOOS2zk*AsC_Ta)f{8 z#%Kh&)(WS0hwpqsekJ=GX|vc;BLipmvD>%BhgfqYt>)dbxu;L6YDo0-kAl0_N|z4& zaVu=0NZ9@yre&p@`tvdK26Tw3^Qx%K-Zp7E0}Z(va*(b({ZBKzSoK4tct{{FGJFTE zLIXnatd8~lYY+#4`vd`>Cp+WreyR%#*>B4cZRNN44z>9UJ**E;EzvZoOZ&=4hEYLG zWpw2#Gs+xAy(E~L&h;aOr-v?SM#@YU_+*&j+(h`7TTxKeZ-Ts}_zvtRHOw_(n+>uy z3q`++l?SkOTq$-<=fg+bgUm{-)!WWY=Syk|P~H|iE-jsuDVQ+v5#c*{_WzM}Gde0X zi5m4f3A8?ZKDeU@Ph}aOOC7ouS;)rY-kx6G+bMDEr239)5l}^S7T| zz^PfKDaVCUQLbc+5<#VqbXqQaKWW5Cm)Y~O--TrY1o#e)5*fXK*GW@lvSA{lW@g+~ z3mkkJ)uT=P#4%H!) z=~3Gnc6^CYrq#DI%iynlEwV%sUaTf+@v!l7^u8{|#=5wk&Z2MVOLX{<+iqTXWwYkt zFE(_B9XH^Wm5R7KRH&kA-)c-6F}C3&jM4up`fhu2Z%J_o$|kLF4y=v{BMn92wy|I= z5vk|?Ld?!BTu_jgdG?eqFR9;$xtidOvfsPBhOIm5BFtgJfwvu3Xz=u7hsR=wsBmlN zUSCh1`cXy@ny+Yr+jD{U58)ZC&>|ilZ&FQ;z04XU>XL9(LNowX4Cvek_P;ZVKfZ!n z9Zb!+8|z<+x$Ek-t1PzL zrQJLiiQO&6l&neR4xtE2FQ}PrEW_*ZNY&OiU)%4v$)<8v^AF{3d_Bvg1!1 zUq`#>{W9dBeCFX8(^DVmsB#C(_KeM{X3l-dGS|%VMnY|Oi83ntzesz_@Hm<-O|xW? zZILZTiy15^FI0;%*@Qp%*@P87SopBuX|>?2exN7|LIa?RzzfE#);*z&1B^Pm!OJPpWX5rP4*8DkV7LV3O-Lu1^ zuT{;7P0l~ld0}p})W2_ZzX=o)YLy1Wxa~R(j1oH1eyZ+f+*noi@bA#NYgAJoXTrzB zoR$lG)g&n>rz|SBDy>+LON)+H8`@w_Nio-D`aH9Tv(PRZkcJiV?B^yo7U4kVrXQV? zk`85dsd7&iaCWSYAH=!G!l^MFENHD^ST$*Xsjd?Gm<^gs#)t^)Q&7A2m#4w0exgOf zKQprf(&RVij?+xkBjgmBiPhADROF`&9mTaOPY)qIEMn&lp32`qy>!eMa3^l{T=E7- zEv2rv)j2vytW>o7X=gKTr9TWRs;V4rf0QUHrrh1HDVgthd1f0F{FQ2nCF)Pb7@k-_ zN~T^2RS&aVHW>l>?w)qo0f5rudc{Wz%*LZ)nn(M_r zf+fz24Gr+N@7uF+#W-21I#aNGwS|_*Kl+CqeMPNLg&7M|61Z`c63~&F#+>%JOsVpS z2a)o#@4j zQY?o<%CC-72}nc~s(|3piPA;#v@PVQRsF3Z?vE9Urz*VtUAIg$U-1O^Mcmi#o3TAz z*k1L&zusBCU6uY_50g)xw9DhbZ#O3JYN$8oZf?iYRkLktnPAy691RW=5paiV5I}2O z_r;Gk6TAE=K&WpFmOOhNezVKQ zkD#(Kj97<%^RBsnl$XutLwV3_}>4wSZYqbE-ZNT9%CB22G{u zKNZZorO^>i@KLvy-W;^}9uPZsbj5f4J;QCwUpZZkryoB-+R{sJt~$@Fq=Ug^>d%l) zyYYCuAg?UTnz|1asrK2+6b?27Uq#O!X7+t?keS+s3bTVoRhQW2s>{p>OU0XUM;@Tt z=f#LMAuI{QW3FTq84U6Rw%n2@8XHOBh^_bMdvjN|0RSorute|rf+V&NQ+)gjfp46e znw;OI?~Ba|-bv+SSn_`9&`$1sM{9YL5*_cWK#M9f*;lspOx>?+782LRie@}+cMog^MBRL zaD6ne!uh9s%pXaxqV<1~%JctCDCl`~*HN^X8=~X>K}I%;D^f=f9$Rl64Y(5NH^aAI z&~WHn)vphc!*fdK%c^o~47rRI90B{oWzc<}eH+dWdomTxL_!%#flBAYV`FOyKUcX> z9hbv-kv8hk{%%DY5PWpkovDcgILD#z0~p|*pTc1QlAk_drV^aJ{W>j!#eQBtrmj(@ zU2$`@W(>rUlGrPr^I|Kxs>d^|RlFgQ8`7fUIx)u&FZtndm3#up8AQ$Sx4((wW|$!$>h`D!-TUKwbbG`#BOGK znz1@W(cEa_U+jLq!SkyquDKz;B?&|qpI=48SS3MnrHzr!Q8ng-E2rNMm3HBaGx7Y{ z920!cAUdLuV%OW%!9j}_RQy9wARhy(V-H*7Z|C932&OLB@A^8AcXcJK<_RNvwvTt@ z`|swwYTwSA?46(Q&QeC`*k7rp(T#YURS_R=iYO^5#VD8RR3E_8{~}%LME)PtZ*bzX z-(C;48qI+J1XF(Tkuu%)*9t1ljCxPAp*OrH6G}>xlMqEZ4pSVbJwuYjIj~czND06v zV$qe1YPVB+iWjD8SyjCJi`lSBjN0=a@r${oYKNDZYBb0c%+C?;w0^zRvAHBfX+)+( zk$_bIF|3wiQ)(xD@_(#U24hMgxU!Y!r%^dl%Wrf|&?)na5d~R1tfU4aWyMw`!86hG z3#Op%E@sznEujD4wkot~j?MZ6vp z)ML2(S)+CW424lEVIxc5p>JemPZJnr96!z4eUI8olu)0)e(H360bzF0d*E`|7gkqS zx3r|_VE&KBIn0QuK{*J()zKrfloXo($tX;&WfW&a+#cx%K6lNQnIf{s^*_!8%wQhg zTB|TWPSHRD$>%yg{#SLS@>XaH&`Hdv0R(~e9HcA|s$1;=C)g^Za{J_v0OXmQYuoDU z5$04poa$`|5)80?3N6p&==Vgi_8*56K(A5!@X4{hP!Rz6W|^&bzZX)JmL_4yVDIrH z+DAVrdTJK!gNm|>CRoXBZ=h%9srzxHpM#^i*d{SS9X)hs*q;)})mB-XT}uxK#`*|7 zVDamT0MQ1=z)=IYU!GC|>RLbEn_|xe?ADrQ$34wq#bk|h$U6c|--wS$P@68N607`A z9x>9%)18T9H^cSu>)`3sS!aM-${+A$wLirtuE3*)_yi=csTSze)&*N^vu_XW+JCH? zVYBo2^5CVA|VtfD!9&a8ANt=AHI&d6hBW-fp#bUHA_+sE1lFFmdZlO=MUkDrwllKo^BF2$jUv)9bJ=dVF2vV6fUC@bz(oXW8hiZeG(! zY+ZzB!|q@_jmzbFcPJ+5%HXg&wQt~t3;&)hra!68uZk%PY@CJvltMpoBU^&5Dv|FL zNULf*Eu75*2T&uxz5@XgQ{RHTH}DfL@9GOG3c0$`X@SBAs~52-Jv>Z+6faAg9UGog zX2?p|ne;~*08KmnSSf9!Ex~yMK-G$kJ8cc;v;2tg6V2}7^iYybN^}{M3E4?rDV@L& zIsVv5H|6_Hyl;BjqhC_P_K$7;js=~Ix+NMI+Dy_`mznGD$ej4Mw%%R)6W`>uX+IYv z?^|ewf|#N|%X~?D*+!+Ss?Ce_9Ga|D(S{G zTh=At>AvXpizX{3p)6QVf4Im9Q<_!yQ2Ba>0y%_XYQ`?@M2FjF+U>YdjFvI@qAttN zQXWSneb%bmy4dD>iUxn>n3s*PlWI z4nx}}&NpNe+>%E@P*VoDlH<0M)vO)#gz8u9hJk8I zmh2y_1LiHfu8*(*g}JfJgzrREkZ4q$+&l=Sahtiwa&l6)@jvH^u*Cey4MGK#58^S! zDJ6pDylW-MnC0kYr>oqpiiB;!ebw)sqvl2m;2I6vz`K5wl$wr>W4>?(6RK6D{B?BQ znG<${JHpAezd!um$wR6Jr!WjMYO4o93U5G!9A!8;*^COJR6{oHApH;MvoN_$B7H`o z>b(nXcycq0$Up#W3;x3C_^O8Bye)|(k&)G#j$9F7^V#X(>T0OU=iGx8xDu3cY4SJ` z(SR;MjyoVS&@T*of7F1;-*97BQZq1WN88&*s>ED%d7YD@Wdn9^pmqGpRcEXXqF5Ji z);>si&l5AW(%riE_b6(y!KM^M{06h6M<#8wV>zjd)^D;#nEA-`1eVhLxyod&p;ArbhqG1^U;1*LfziUeB5{c8Q%S%ZJ^w4&w7H?lWHc>G z!TGU>x|!`Do{e`R7LNakRG^GB`|pFDUE$v+aNb@CZks+^Mf+2+Tv6-oyc$>?rPFLx z0fCZ4Nl-ucp(*dWYbsHoCh`WUkYHCR6$QTw5PeMv>n{Os68$B6iE5_&s#O)8b9+(r zqLwJG5y=e;j8J|SpUgs&1&v9IAS)ho#7!E05RX#@5=R?>*mR?gL`%gL3x=OD?7M8g z)HGP@2pbmY6&A~5JZ(x2dG$*w>z!4RU2MiAi;_^OX56U46*punN>Oo9>g}tsOji&z zfpdR|OoZb*>-flL6mCRWCTFN>h9Ny>sBJg+8eQ74 zDByp?!{nq^(v5;&=zD$+IxxOn6y&9FOqlS(>^d5a#_0SP<*CuGE>C((9q6%wF-5y9 zUWyF{McmF11q$5AqaEYh!c$q)!z zUGIOIgotVFxCcGLp`K}Id|i&$(6T0!$i&*XUaMBM=KM*fcBz}tvW^|GjFIS|;3^;z zg^qf!f+KZMBkWz~dbS<6TqN`$#BM8hA7DHrLNqtn(S2zi*|Gtugo?l;SEp&eKB#45 zLD<4**W6qwM0=KFBpEUQ0ps$_Y@-$M1EA{aZFJ&MbkYTGcPNSyPAq#5K9c4$ECBOt zX<>1ix!{(?qczV)`c(Q&RWz0{hm-w67X?M1nnsRXVj?UO{gbL!?V>-!=Wu;md)ux3 z-OGG#J2;UMc%cB^JV_1Md z#mK=;GtJp@ZF#5yEloBc8C4NDGH09P-re<$<`ce3eOoJz!z?)16O)7g`WBU82Ze5olLJn}5iyzb5 z5RjQQ&<~9fkeLu{W~mV?Y~Hy8q@V+-auQX?z&r!rRe$*f8M#}B{yb=VC9f$nLXcbJ zss2!KStJ3DRIYS+Iu3}foKJBEU6f*nj4Qg$nrVNuCOU^lLse6bi-`n_FX%i-;_E)R zaS#Gle6|i_7)=_^SLyrm*e0dH;@&Nf9M!IgsI)ZIfMh5|V34a*qKABWC8prqfpN8l zUoK_EyD4>j$MwmD=de|vOSacqv%|B-PO|bTecc9GszUYn3Kz+g{_pNQ#;&@QDu)P< zQkRnFXMxRDBuf$m>Y_V>G4Ob%2=cQei>9e_H*jsSQL1`v!;!?= z?zt+VH(OIaR*hM8E66s|%r;yAP40la-6rk=sxfXggLW$tx!j@-w(EW9Sn*VA zWFs_E6SP8Pw8$g~Au0se4q*}X+nsM04(qJ8AJ4{f`CSc3h5+a;%zJIv9$rw57d2k+ zpt-u=H0x_k(V}`q!27xnNNbfl)=o}FYBR%SZZ)j8dB!?lp(k?-vq>onoya9rXncP| z0+;A?r;jaL)ZiX6mmD^P`Cd1@m^xt(zpV=v*AqFcSGOWZ333t>;-KcWaID!0KLof> z@~qL^)!s&%AjzesdR2*G=o1quPtbm+eSd8BD~@mFLk>4LuEKH;y!(dx!)inWnvs|a zl46Q`c`nxVwl~tq+}3t==COC4(3+FSi5qYLp(9S_`7ao%AK@_!2a8U-j6Bz6lBmuD zOj)YKb}@Hd(ve!~23N_5d9wWQ)?c9>(d;wO#Jy;6a3WWs3co*%C84W3e?YIqC*l~ z91XqUjtJWDXsOclT0kx)CMJ}4>z{0|l588vk(ZJbK!N530@r2|*lKezndKiVgk?v# zv*tfPa)c(f%!!FCt6s)pM{etj1xsZ^3MG=pq@Ys@kvjPVd*lAFCqw;=M)R;;PL_VK zGi6Nyj8PVrD>3^<<4eaSvr2{l2%j-w227e3cuwlk$ovxi=@5&7rDUFf7b2@6anFgI zx1Im&rCsDoYk%i^h<-CO;K*W$+IG{e;@F#=!I*>#PFO;uu@yY4@7a*mgSRX!txc+mucd1Jl;Eoo`Ut(!fcK)^wykkwRdt2MTJSJC z)!I|d)^#bgxU!GhfxDu6s94dge<^X&af4 z1g-L|gu0wep{kM!erT6A4P^W^)0}uQ8ri*la6qE|SshKTi4I!i?8x**bS@G&E0Inf z{dFjwboz6Qo2!0eDWMXdTi9-yAT146u_f}KE=>6Ty%BzA7O`^FrQY;-QV^1bgu-*yBezPy@v80U@g!p0L&Z+; zFnS;YCoSixjO+B@W5PRgbH&9!+z6`%&4F2^N@(9Gul@+qHQiX-6yR4)2;#mj%sn{2Jig;2s za8$yB=pM@B#DKs6<68ywi0Pnn+s~=SvJSHRjtLJ#411?9@gGB$|H1_N-$gtBg;P-< z-M0k6{tdF&VbeI^7IEmBfMyH*I?*dr21+DA;QB@MPHjXriwYu?;i{A8cE!-EB9G$00VR z_RD18nfY6zs^9UbiPGh+Ak zWzk6@>#SqBXk^8|JZH)quRc|47rU- zdx=l4nMqSMf|GwkV;gD~H@E(#cJ=oMfRBDM52Fbi)%$N37qcg~w0N%uCKq$eb)Ch* zwvrm~!*zkK7UO3pF&&EKzZ`|a9uoaG)9}AJpD*Yfk09exX!Czqf)g3Nb>mJ58Mv!9A|A24vQae$fo&kmQg8JD4Ud5d+7~3xC8CPnmF;?Fuu`E!M?0P&UN)Q2=du#}uEmC`YtQ=UbICc>hGSA0?i|y)^cl!+GPg?0wUv;ghrqSDVA95S$@i2tO=m47 z)B0>u&&W zRSF!rKzdMTLF6k*o5dy%#RjB~?cFq`8A1YuS@Dr-At!4&Jbb(t${{nE1D(?ke8DS8 z+SuN$i$=U7od*MK7@$^InE*5SG8qA|OfE`Cy1}eE)<)MblRE>jhT2KmnZzD7jG5XF zmV+0DWC5J9C=+Ztv72**jpOC}@l|5Ew12w|Y!#C!rIax@kpYJPOr5}ssnw>xZEmBB zLG&KS*n4~s4YVc$%L{fnm|J@5qt_y^iA&yr{>k#Vv6gauG$YDg$pjQjhl`X5&ygmba^8~~vM3HM*=PyHO*I3~28@ z48&&|fca6xADa&7N!K3t>&Bs@jE@hmKA)_t+?w0=Ck&^4=-uU?xw3a^-xP%7q=7V} z5c0!U+On*HX7q$mSyJf{Twbi_aP>qJjJ0 zaTv%cZT3K4eyG?lcgz0U2&$3IrOZAJ1*IwF{qm2L-O5Fa(oC&hpyqN_ZF^HV*jyUw z1bJaV7Uajh?hRZdC{i%lDo9kb8@~6 z3BVq2G?U+0_vHb^TI5kVteG;;{Tvyl6#{@f{J3(r;EB#L~wlTW$=1d6n;UsAU); zY4u_W{%5z+{6ezJZ(oOa6#}5!PZh9>ZUhp55(UhsKEa8ERAmR$XFej%B%~WADOky! zkduR_<~~tHcNUb1P_CbPudAYhI>ct*MVcr3V~e=Wy%E)fKW{hr6`?oM_o#7M02*tV zEQ#01_m1EfPL=3_%^I(~48>h1M~PppO?rCVoGTk1)jLxY>y7zDJWPK=x^}OQOW-zO z*gc5YRZe)Wrq7BOgMED60t$Ua{yQ;L(d-hI&S3ixW@fl6%?t=#K>X$!u1)Ak2)`&Z zk?HC1*7Xyr@B_F6+6L~2Z$&?eJioHN@;^BXjXNiXBdn__)AM99dT74<_yXQp;819O zMJWE}v7aZBAvP)vyWzPYg_|~3e_3O(o62^4F4Sb06=TrO;g!1-gmc3P>&Nn4` z*$)0s1U6eVF0IwlhsW|MaqKt2Kh%@mC+xE5I1ILo8K!SCyl_;G2XRMwU1KzOXQ@b? zDVn-T`EFPkY24bjF?c>$U%ms~*?BLa0O~?da(t<<+wwJq?<4>PZD!RK(nm+oiBXCF5p>#UNp@_-T?9W~SvuP?e5C%naa1eJd&pMIgOu zXvjw907WgZ^Xy^uwwqyzm;9YT*5up_`dhQkz}ETsczu4H+Wm*RZoZ)M{C)1bXe0Ac zJ9lRm!u?!Pbr;qZ`m_F3dLf0mZrxb`T6joLB<= z#vQmhIfiHEP;l`9RwKSCrwlh!!ZN5|Kr@GKBzT;QzY#6586#Hs;3En5XSLc*+xzj~ zFgYmU=8$FR%CXqLCJlEVTWsEMc%sRdH8(=7CByv-6C|uS|6V{Ej?avKiKc9~#ST^3 zm(I>m&Pioe?0R}vHM03I)*mH8wlPyqS-h8#fx_fA2A{J`9NLWVZ%81H1bTD5a_0i- znSYb^MB@jC1Quf#(qvWz>CUVkm#pWatF{+K`G4}yMlZeAV?2w_IEjyMiPuH1V`s29 zp8^A!2J)n$-l@+@k%^qNRJv}8WZwQ?87Y{MB8QP8|5PfPWqkK#XXH%di&K?aRE{$v z2gm=P9Cg8fv{sGkdQuo!tcz0h+L37~ z_xvuNyBtc8V2R=n$Y}U}FlvR0rE*w*%>D8?^0$y7@h8PJ)%j}@T?PZi<4_+DgcYRo zk5|t@Ui*<6QoV*bSI4GB;mF&_b$lB3Pu)RMwDp;Np{Y3ERcOS7uk{KPigK~?(j}Nh zua(YSA%3Sl(_?pJtLBYjMLrm_^eZb3O7s@*IYcvQY@EX$Sa&z z9&^YaC%zaId(07y1E#{_GelTJTiaOhecRr0dC|KVQv??AziQxQm5Pk3es6NSKhL-E zgwOcP;Nx9q&Ar(zn?`BKDGj+QlVN`SSC@toUDt_)`Xv~n@j3IvNwE@K%k_O@cl?!F zkCRKl%qB1SE&_X)dd?K^Tm9iL^AefeA7U%&%$C~bF5(a ztlz!q=nY?`SQ9Som7uxrw7;^nHR;YjGc7%f0O|N2xDo2_vA*G>6Hm)Zlc$0a} z2R1;vwf~n`@jtt#q3WY<33)iWtCpm5{MT|xO;TZ4S45{TMRL&_6l_m5^Z5FaVg zM)KjlOVKtSCsX@S4{y!wX3@5Ef!PcDeA@V$rD-pe2b3u|XB?C%QW>QKzoTbafnW^d|6^*hy26d?_ABFbhs?(Gl0zf7 z$n;MN?BwPMnY{7ep$>INXn#M|xKoiq%wzmj^ksy}%Kav3X5;y8a2R1dZpD4ABRD@C z-+8Bn_pxV_H_Yqx>&61o3*83-$G1MCb(N;B7F*x@5HAKEuCzCdgvG}UkN2@LoK|Yq zmnWYN=jT0E-7i?~bnd$q(E}picp_cLzj?TCYazB?ja|sR>}Wm8ou`GOGnvrscue2| zaCyzect2;vtA!#tp5Wksdyt(~m6u~A{-B&&eb?ip#fuh-rV_&STO!7&SYTt?rm-fE z!C+W`k(qNoE>$9H(&>++VS=ED^6_eaeESxIjEqRm4{(Q*mz!sLe#;I#akkg5z;1lg zke8R&lOIqaTA?OjSz1_%9ui?L9fG3+`YUADJMqC26H$j@e4nM|E<4(KY7`$y3X3X!)MLWLmb?1|{A zCtxHMlnlwf(;z0>V@eH%kWt2qw4Q9qAKw-%dtR>Wr1RRdAQg~G$_>n|yzg8heds5i zkuBbxW#7Rom^~43m3H5}dD*&bkY2lUGBPe!;_}M60f+0iIo#xi?maUa&rA~=IbkwQ zRnPdIC*RV~&3W=Pd5=Se(}27&EO?nU29$_Vb`nuFBLcrjG{&WQXFrJ5eu#GJKBTxd=WC|x^NBidSH!7Y`(H+-S*S|EmeUj(?;6T%yt{Cn%HGA|46!ZB9qFU|b z(g$ceiK*WsIh7=#86VK9oo-c04eqIP^$Ft-}^E+?8oQ_k$@7C&8du=?P^1U z1^g`rdTAZM08Y=xH}Nq{C#w;n-Dlu zG+4p=VH?GytK^5T%O-L3kF>(i^Xm4>^W$L&940)&W~`<*y1?0JrRuEx_|mT;Gm2=D zpb)Oy?_q`L8}5SBKP$6Eqm6Z=o!Iq^b#3G)c&gw4*1KNz$C|Fk(m`O8C(SVx!EXq0 zg<7@6knoRXhS8I;pWxsiHOFbT*Vtv-*nUMO6y~ZRQo(oJy#=v$>sk4=KZniq6uvCi z$09FF-cbbqj605xivW1Ng;gbNu-&geEM;)-xNSZ&&33VtH{v8Xy1T93C_VIcNOKLR zL7-m!pi)_~%*~ErDx!}oW@bCS9QEK2k5>B{*2vXMdUSn5D|=QJiJqYz1?0yblqDw& z-V72g91{{j3kmsCSGvTRdn5dq*|yexUtZtNU;`fC;kM5dy54eVXXxkIF(4)}!PrlE zA0ajC|3Y?mtwbt3VYKUPldip`Iv#hb93t=|#SytY7wlxgdplQ~t7u9gWJ|^I7`W!7 zPXmwtjfT)5)O_UpB($eB`fJ3W)!2<=o`ZCC?U$mB{Yfvb35F{kEnook3M|{wIp};= z1maaIY2PO2pKpe20z~Zbsi|6`U?aBc%!=6B@1{3AVd-CnKbTq39ceZafSYs%Feu z-ThAaAT*hlg7miuqLHXA4-f%*T$w*Lh$(TCcTum{T&(9575q7pT$LEf#)O-$yf~I4 z%)JiPv@RXERWrDRM=ZWpJ492|0;B65_DQ3K%P3^UfRyZ%LEE@rLCQXjn3=I+7~9#@ z$V0<^aEi4O(FPB~F%jGKYt&u}GVAB9p&*Y72&aqN_q+2${p`1=yvERkAat!I9bNAP zZb_$bFnSOVTEz=8xWWAd=Aex<|0Q})(?^#|Y7&B^-tLMKXEOC$T~M^maQEYYx9A3=W8uS_itDJU#W0Ucvq)9T60}wTIc)D z&M!qh<4Ja|b&edi)Wu5J!>U(zT(Ff!e39WYiyZBtrLejFJbVRZ;1JKu*k;Jq{k>=k z-PYq3VJ$g+*Lj;B|2GNFwUM(UI4zB7uPOvYJcxTgC1?`enwo@H`Cd#AjUh%n8Cm|Q z;-?XMC-p)dQnKdBUEn}nAEqGpyDfBATHFHs!G1#B>h1ci) zN^K|4BS^q^_B-bFAi@f^_#m3>pyvVWxa8xT#+i)0;`-v}b(Vft%gj>ekZ)))>l8jt z1|Z3gXaF9!z{0q3+#jVRBO*zY&ZL(r2?@+>`7i)PL!DSWt^k`WH);9#!X5*Bp=|H~ zdgfJd)RWj?+S?U06eZAkXK?}$+<2K9Ru!6Qr<=eOLy53?jB;sSCORA!LqQpduN_8L zO5&uOtwhFH_%*N1k`ju(P&@It^H7re>$Jfv0H$NpBm%XGC7CGR8XXQ0!_ws_WMnT7HF;>eVCtui=^UF* zG%Q$+x?-DUJns)F4GHjFI$ympdEC?(2B9AlbjdKk$AI}ip;Ld&cU|dVtySL+xPKOrdojEdW0wzSY&5(rC zd6J`Qo;=s6yZ-<;cy$F}C`Aalauw|ed9h(yC5x?fJ*29{lLn3DPPAPgUYYki@Sb8N z5|XckoAw;z-o|^0vxj`6l?mOr=ZAEz{atnDvgEksm=}eWd;h_)#a#aSQT&>oBX2#8 z&Kf&FuD6#YszisBuDos=1w>xl=*U!mUKPP?<>2M@G4;MH?8k{<6APN+kpx?a>%mMv z_dO6virX>pVn8Izfm=O;6Mdt)&@N^D-f`j-^9dhH8YDpS^_qa~1Y>%oFN^iGlLgR~faFuNp5el= z_CWm|GF3Ar-Z)tEBV-kuH{}2XzR^-XG9Js@FoU<53qe8iA&c*K{0~M;M2o#jO6m@Z z4zz&Orpnb0eDKdaq2dQo#MK7GDcH~gyr1sU$i~w5McBfuM9pli$ky8khw3~~fI>9g z^|l&2Ic02>?`~=LVYok9Zlrytall=oYtBQCiztDnL;gNB=Tr}Wy^)CRfcMJ35|85u zkvep@OT5ycQBnSDv~`R!K}h6yhMzb-r-cslM8BW=439YXa^Qzq~2k>XWVriVt#hFnOOJc zXS@_R8|D02NJja_hZq3HC|R0VJqRQLj-NB0=)mb zc<#<=jw`Yv`QJ6qocJ`M9aR7yJBjU!``1IlvXpd156TI#C-kxQ^e({Ho+ zsYGlKyv}Fh^(!zt(mJSfI-A2xi?C3D76|~X#p4`EYdtRsZ;D<>^wiYMq_>BwIpR%$ zB3R}LpPoMf^l~mF!z03F28?^&4)e=8r@$94$S>&UdbJ39+Nn`U>5>-!G|+Op=|3!) zSuIX;Da@Q)2kyMs$((D`J}{EkuvW1>cl-DC+LDwR^B$P0jESNwB-{0tL7z#ZPR#5r zQv|Ejf?7EMFlzJRhB^?yZB(Lbo2%V0PFQ}fF!a=oGlaYbQYQX>~z5< zyh^Ll9P+xw^qoHk45rf)hp4DqFfKJpjd<>1C18!Xi2MQv5%J%^7NYodI})&C}+N*!#i7%M_y>m8+tFu#%)@09eZfggk-RuJ=*Y>MhrrZ=-UELs*Zx znU0Q5PEWa3=XixsbF_*{bPse#hPSdom7;p-?dLvIOaAn)S0oI3N9V^GZ_cp>EFp{j z)Kv2T08d-C;T2h&xOrts&hta=>P-Lh%Djb#F}T9Ko8tw31f8E=9uaHj;^n@n;%&`& zb#pC6EaP-5QP97%UAm~cM|oS{5N?S-_v!m<&l?)k3sb*-26$}EkmG9LJ^fW^VLT=- zfi|PgUIm&JR!4^sH1Wz8FPEKm9f%`bl>bC5oZDb8jcCpVOi@ z!MV0*wKorqJRkmE?4P}~2H2I>!E^b$Y6i+LDYA4D;6)7sI%Z4$6kTgHMvG!vv5LwE#H zVCMAj11QghU*B*7PZq-d7#&d4{EKVi+5Ak^*MLrduz`PM=|xAJ0La-5$U&4Z8DgMB z#v3Cw)xG&>WNvB?<11|>ZV(4lw$Z6q!;?-C13L~J-4c&29CK%X7p@zYCLERes6osW)OUOWDZ-E zYx=bu>YiSm2h}zJ)iXavq(wmOin@>Y#$M$Ski#kQ;4$;7_x#~!C;=4B8VJ5;s0rBr zL75!O0Dd!u%`|a%`T$X(0n2BGc;(Kv2?Wq5rqLCwe0OI`qBjLtvm{I$I3^=ZVy^ui zIqCKbOvyIOijiE%%p0M{%83u1yV5S;_zJ?8R~*65P~?mD?xX80{&ldR2$PVQxn@7v zGDPR($@OC^okR=zWOL6SNpu{tT9}$8{o2NCRIA5RQ4>Am^?jm2okj8VsC_#KvtPdp zt58ld3@5eg-P*$E6^ww3sg?y}ANh=K$nlc22>19~SWHS#fF^)LbGnL&lj>T#Qn>GO z82dCl=?9OEtRRQfB?(MUl+WN@#FwH^H(>GK*R!H$-K+)#ugWK3JYNL2a*p7i^9Y;v z-;xR-!OAcfew}GnT_n%MwfmwOjP`{4PZd32 z;X^Sokyr;XLIBU^+oS2F9M~T!OCt6k_bt@k_*dQwRt zec1RZJEhNrka*bd?K1CH+~EDd%^D~((AS`4!ugIwHzrH@c{K^(&2%fA*vBc>Ds?bp zVd@x-T=B=aNij8{>xUrtim{|tEVodmB(Ir*X9;TB``C%4+VDD5UiymO4Z=nT(SM%G)R^aBjg9>(4l@1{Ubh(t=K7=*S0_y0Cfi!zFJwW^Tb^{&)pit)rj&sh@ zrEb0+mTqP6#4EQ(&5(!l?IdG0$s+)E>U;y!iKQ}2-TovceDfe<;KXx(j>|CjILvx_ zHf#_2SE|9yiZB#_YKRqP8>8Es8x^7$KybIh8t5%T^*NW$W&UsaLA+J*)A913i2r0% z)StbA%l3&po%|4chD=!{V=?YA5vm1sY6XpQixUe##u!IWMT}DX`tM!|T7>vmY67oOQCB;0>;OCxf?Ko>8b`p7s5H(faagT+C zA()*nBLFtr$L3H1G+P0Ht`NTjD!{|rnv1);t$C)~2Ey1~6YJ7x)Bh~C)tSyDsQR2O z9J|2;4v-H7M%>o{54n$AaX9{)mUfR5QY@tkS@{YU`*#1#E^4<}vTDDGd-zlcl1yy> z2c__vjl5B{^u&{ZjzGxRCTH#a<`-ABb8#FDI6qx--cBauY?NdoG8SIPF^{rN0oGHt z)wQ*y`C8i(&CL2q^_$P~T$fDQ;HMjzaG!o4xo~2-O!n;ee8+EoB2vm+c0mu~-Q)fh z_J?zq))^)i$JUM$v*b0tvwrn>E1o7B-SThlSDD|HIIomSo(?a1V_nRl@0kzm)Ai|6_4M z`gs$mFJ<5;{X1owam7ORd%`lkRQur^1pQ()t1hL_&$C?^OqVyy)%Vs4ZTlbcwY~cl za^Nffo12q4MsZmE22P&FXDLc9M&O1eVih-7jd(T@-i)Yf=0vMkd(mj9`3kMxb~4|| zX&jS=04=S{&~WlRH<83)|bH-C^`~(CPn`x$bN<($6_^=C2T+ z&=5KTf9L+6(g^+!#=4l1Ryc`C+>oZ{W>{f?Ul}1eP^$V8KL;&s1dmBz+O3cEC4@t) z-W*gI<0Yl(%oyKCS~n-6RNS-IT><$Eg0Mn}b4LC8?=%jG1%1X22I<>)EM|b17ECJ_ z@Y3Sl#@xn;y|Dc%;Gv1y)FCdu;~w?R8N5~idk?sBhu}o8Ly+@a|YBgVw4 zpjuMy?J^qLv{;*07YJ1R1WQDJg$}k?<-G^(hW0A{zuFMC8i#8>GJxn6?LD--i$tPwXpozjjSvlfrbvngiq!Qv3w_Y)LCI3N*t&z!f)qd9m+)Bl8cS`7)y z=>%l1zkP@U7!EWqCr29{ak`Sp^N2j%AKg13!Qa^*rzHP*ej@(;=VGS8-ac=7ZgHBG zYyarTSmAGP1a*84-@nJivQgOMnKy8BW8#wsCCaYTo$#e8qKEK-rHRX&|eEI z8YvW`&e{u50N)~a!j>Pw)=+bGABgm#Nk-ODzZRur*sE22_5?aG7JW9C^ZQInIr~XT zGJjOnQ$4nLuv`oaT1#a_I=^4rQu=oSrmr`cX7-(Q1O2Ik!$ILc6|a4AVNxS1xd!BFcl0YL+oAAa!{_BT_gG-QwGirW37%=H z6ZY4C68SW$lFa=muH$`ybMdAm_lpC`4b2_AP~*>=!qb(|vqaRHA4QZka)Lsq zVj?l12`R1sq~Z-|1)H$mrP5>!xJwc;NGOWz#Jj_#d+E{(?((R(0+bIwR2{1gkPhlM z;Iwo@bwOYZjaIHeg2zM}Nos}G@dXNOrwMrQ*Fp&s4ERK3#STeArE8GY?ol9CQ}Fmz zdIx7Zc{N4I5-UzAghtB7)rkmI^oJ&@9O|e(_^YwL3Z+TvvI)^}Gmon4kCg8D3zY@i zK@a>!bBCbibg2$>IS5wQ4b29%w%CCOxi}m|8z9XF-tUKnA)e1z;r+5aI8d4i{UWp; zeUm?1PC~6~@Ty+mHvVxV5^1?0#R}t7S*@x*2rH)eqX=ho1nv-HRAz9zCAC~vM7}f` zZ7Ndv7o7M&=fuasSkOp>#IJp|uh8F%4V3*(b;5ZFZG`*Xhfbwvy6^piJ}aZ*)y!Iy z135$pX#Sth&N?WLwoUhgg%BVR2$JAVa6)ho?ruSYySqam34;X)5Fl6x5ZoCUWbojw zK{B|zGr(-~?zdH^_Uw16_RN1%)m{B`SI<1RT)*o!k6?;!wz7-UAgZeN>T{o*1w@LS z&g{1Q9-3dZquES*RTF8y!yoHdDi>R(eU@Jg%%2Bq9nqB}Dd5=1CaUL3M?%ThfV(B5 z){{}C=zn$9@y`3T6`sdAmIBY~h~7mKjt?u(G?o=}EQtS4)kEYHuQzFIiM{jW?nG4u zkA$Wj#m%s#sTS24_{xFXMBU9NC{m);sa7rsPs7=+U!nc+3%H_OJ!!h-hKqrsPA~IS z2R45Nm;lyAs!t4-(_yKr%*Vnr5&4j-Pp)399dX0>@|j?kG$2gyC{u2!yaNgB>U9}% zfgZHjwlV0Jw$oEy`Oo3Gj5M52`Xm{SDO*MLp!=Jih0)+&ipFy8a^?cBQ%xS7LfGF?p=2cSPG5kaH6{q6>DdS>~*>lVZvj@yflh#LW zr8+nc9muTN{QhS(|9?x%ORm0bMTK}g5K&i2f+CvcO^`4+= zd1$J5$7WIHyWs59SWuw*k~eXz(Wg`)>`kYIiLt@ElSPb5WwTPGtK8*rqW55zgYm+_ z)A-&R$rnn*(~$~;QqB%zMDrU;QOW)E_-R=jXTY3x;M{c<+Y)+_!5VbsOZR}A4!zVf zWatMexi-<<{JU%$T0UVz&+!-7gXX)#&pb<{BPyR@7b%dXkRCdwYsE&ZTx)^mvhz<&gdqGE`*!vV{4Y^LXMIC9Z2CHa1aU4s-|%fAPOKg!U7!7D_5R5ZjlY6I z8K5uU#FoZ?9a56+Z7&qM*b9jWBrE&Aeh>aw(1~UtQT-g|3p(1rR@KtVYqg-3C4U6^ z_VVCwq01mEXa(N2)=OiCsP_UcdAKd_UubJP$)xo%=v0o?fk*`b6|orbomsDDIQ6WH z45?;NfE4H8>(bEhDs*<3u$x^JSUPuzdE7Kc%M3UvXp0O~(`lVV)Ba9HbHh>Lju+5} zbE&K=ueg7~!f4jDIPn9&%bVinPSP04UC-W=&4OqJvubvTxXH1CYK0knvn~whWO3hPUPWT3D3`ErRidQNoICA1p+<#Fs`8aI zml?kssPvwBt9)zR9D=|4UTDZ6V8?LJ#B2GsUEky8UjjTKNt7%<)0WKW5wUhlusJi_lqhY3i%(gh}oYj8TiEI7&2%)j^_Bu=%f$GOKlGRJHKamsz1U~*Fv#lFNK>28sJxKX}vF+sYgaT9qs2P+^^&m7x%8i793VwBdp zaMpwNNWupD$c+k90?l<=fC}OkI%XiSiMlLSHus+24kdO-X*?e&CvIl$hfXI3OU2AL z{6qrJC5LxNlt*X{fNj(uCk^pRdN~8X(rP5gh}}`S)>XwO zsF5q9ma;#S0r=ZAGcnh+5Nyt+ICKq&qV#7R&4|f095fk&PxKI-HmAX-5N4L?h3f8; z=p1r3f32uqxH8pL?7|t#15y{)da_$J zV^ZBIGUoE>PH?8-kVshB6k6sw>=B6oI#{(f!VsUwWh0_c0~I&#om9;BpgZjC{h3iR zZ|X=o;8Q2BZod65)! z2tM$sO|)7DL!z$Fa(wR68CDN{m#bdug>{I+!deb3h7yB@jm-Z3H6UQCJ}_!^*6GWi zV%9E2F`>f!5lmN2gnRmh4Z@)I@LX{EIISoY;y59~>OEhGPJ2IioZW3H+R7}=83fr3 zP$OfDG-k%AYMmP2leDEds)9`D1=-WJHcHb5 zwNkN$NAeVg?b;V>!Q$=);y>m1`L_shd)-o-DLBK&KV_abqm>r*oojb(hVU_y%yYFn~$M7 z?)g)npHu4A9h|-+2MnR(;&Ac2#mnb1%fPxZ3n}C%5J%y02G}q6K!efW_|H$JajeNz z7qs=URK)tH&STZQV!Lb@$*0-tjW0_L{Q~MYvVh;f-r4k`H-z{|vSzn6HuR<)X&s6; zD%z~Tz`3bVn*muwZ1IR?EN>l@-Ef5e`ZKw;3tFN&1_1kj8=;C8hl-x9K*u~5f!F9; z^$P;PB%|Q^X9DAh@uR)H+QN#}6k|Eh>AYC4&-cNoZL?d#fMRxag8NUUIMj~SwRShM zy=c3LTP?&e@BWHy%KB&$zs;#h17ncV*?w>DQh8W5tgDensx2tQ2p5#FY*W$lUg=a_ zrDA|8?sP=7@k1S)K^n+wpLuS6hU#cWRQ`HvuldOeJ5}oaqV8B&$4FieDksA*>*riAG>ismzX2}FnenK)XNwx zCuq#}+^S^sduLGX{Y1K!bfKD}MYXz&%G{7H`!J=S~h#A-q zTY{~eFU@g*F-2Q8>b>!m`%n8$3pG(4XC@B*;&NCLLvj^<<^P5R{J&y{e_`wYk9_mr z67QT0<_Sf8eaC%8^2!%!|ElY|f`Pz=87NjhGyjn3FXOeJ?zQWz4=JdBH#R5ExOvu4 znCI8Dx*vH0h#}ZWqf33C3of1BYWyxaL{~%0Zgtzea6wM-?_hK^tlniJOMGfK3O?Px zN8U*%RLmXE5msc2`%ES8x)eJ#obUV`-mguMcQj)cGJUL+D*OPBw+r{)Pyg zosvk^lZ1qyUY8c__YQ% zRs59V_56hLLduq))sL|mWQOyxZD|6au17-WxVS(Xo~!<*c5j!m&{0==+I(v^n!@Ry zYJm+$- zZL=zL@xcuT*Dhu9PZv&SV5fn;cNTw22oEtBnsRd(?ck=SK>@y(Ssxxnmq=nz-_tnT z^EB3%8&YIn?7{a-GZgbEJ&&Dgw%4_ShK z2cUv-f^ORKW=c@bH|{=&xUDhXRl(x~Sc<2@QyEP&yU`qy*hxWObAz8e{Zj&swx~3L&{6|O)noW-E?2c#XB{)->&1=o0b%z zn*WmNxE;JIQ0#KWs$;!JsOBFn(36Ovo2N#=R9jg(ai1JRj4mvkO{bqt-Ko{7#a;)x zApJLt)`Zx(UOz*LNNXhh*s~XO&^H7+aIAbvzIZZHp}f>&@nO~x;9IdOKMNBS#n;zm z|Ki}PR5XV8pYKe0b?APmX}^Mc>HPeVY=Ft)(sYn`cK$ zm@EAD$nbQsAm zu;aZU4_f0^!>d1q^(H*Wd&=}k_!MFNT;tui{_M#o)&nTFA7WSY`PB*1NcfhY5P4P- zud9n9(MeZw)Pb-#RH2eSM}y=aBu3^2{_xxXfLFSBT~{ZJR5q3o)RVVXlPM>oom{L{ zKfI)k%W)ez;`9=|oJ>*+M(mOg58^6ynO8|qZ}?gLN!>!wwFPD0t)fl~%$+i5wx zx2-SFbv~sU-a}l^p@&NE*&x)^7MkrRc;^a@H+@&ePvevto`8z^jOK%lEi=6BPYFZ5 zo|7Q*x3{JDjA-3Co<$wkdPH`igkn<9#FEo?-h3=5zhAXjUCqn7uWvd$kwm1OvuJ~k z?wU@ouGVHHE?ddc_tVsxqx$Z_J3I4uttnO9p60zge1d`p+kxi0_ze`1r}UPArZfeDtv=z&-pwMrbb8`agog6nWCHiq$x}o*`4(SIA(dO zp?39@uE*(p)XKbbakDJv>!^gTAWva+I00IHOFMhO$IpMyJuf3DD*C&<6a)z&T1 zj=Xmpo(6^VjVeI)< ziI0rqSSn>%KQ9-V!mpjlZkv>Lv%z>}ts%NOk&$e1@z<|W&F1T!`c|#37?Y|Md6A47 zI{DB4s2fYo@#-6aeWVQXHTAH>I{^6m8q>lhJ+5PIDJvD-D!Dk0*9;)k+gsJ3B1O>S zZzHgRtRr3m00wV1GxkmU@kbw4b;JyOU3;%~`u=}mZS(&VBm7U{1^BQdPt@t3ZDgxS zR%z=C8-Z5VLHWI1VqA@*R+UH9*UWECfcEcA?HA|XtRDi5qCuINnV$e8Trq*xt(rjJ zTx(9_t80o3U6Tm-JS5?XEbV|BQOcWt-+u3F=P^<0LAAL!v7!Ym)L#1NTgp$`albPr z#K4hhIR`0M90MKy1gZ11Y^8Ns%IZSq@P|UU^vhJ7zhGLXuxhnogFGWGL5+wF9;LZ& ztnn)~wWJty$$n*ZlY;cd^-9S~&l4-MfDyrf`5VyE9*p7KsX013-e7Nv7I0~XX;sWX zJkR97X~_~^D(scTZ#@Tv#YK)5DmpQ6Ud>SM)Coc=)b4c~pZMtYs~>$`k)?Dm{G!%z zx+-Ps(*>luEk2JKWR#SgQP&e|WCaV{^VCNiQrx-qC{KIGJ4j+IHz3ml37&H%9M8uh znS@(?Qz^L4|KPkHX+CPwi>DOzx7_mi39~jw%LD`vYm9RLl*dWC6)j6kR33`&;2w&Q zJ9705KCZcm1d(#vNuQ@`OriQAzh}G=@cF!l;W&;vq|qAI8q>j72fKygKVM;4%PjVu z*TMe9K4?4??9-v5T8U`!{}jZ%DV!Y?GXso#IY4IKrL2Oo{~!@PAhXiLHV$FeN)I_L z3&VI*YEEX}`PC1LH$9JlsKVCPaeGT)-?57kA!L{+mvM%8BwKh&D6a~bJGH-L*ic@V zqxr`07uT*&!5_d${!1LnbgPfQ4HRj%w-nipER_BpeJd=?dsxwP6{p3dG|xVk_>Oy} z)+g@7N$^hJ5IGCr7=4!Ne{mGY-}F_+_1Ky81T_YEG{zO*DiQ$tGPUk;Z+ecimv2Cx z#8e}go*>ZhO460&qQf+5Xpe}LFSjHAi?XMwf2ocd9mzv=1HN;y*^Yxo=Zs9UXRPct zLBnK#`2LF^MmnoP?k;z2TJfQw?z3Z4 zZ2%>^mNXCm+45dO7gUo}(b}HHY^q9nyz(k>RZwTKj$%g^{Kb7_(> zb7=omh`sN-0}e4HBz%(lG-^2FLBJ$EU@x+DDYVzZm(iVrQ5#`R0T>|8q881q1Y_r% zf7JS|qKcGmJH%7=4Va&(BLYMVLw?!R!->Z09^w;&;|usV4r6bV=J@0PA+NDHSbiu8 zZpv!$Y(SzbXK>mm*J?f)1isgV%UI7_UViKtEB#;%;zKSZ_!?=BZ#`RYOwT0WQF_i# z&&cHXpp+d?N?P5CnMb#sK-`ZFDxC~Sfsq)yJTn^h^+@E!Fmr9$Zp>;3CYG^X%kbn6 z;=SkZpy3(aEQT*|mtGeW%Szc<_4NPI|F}T|p8vF>KK(_)*r=d>*CgD4mPHhqSFnCde6dOQYQN@kb!=b@+a%ANv6kPqh4YKQ3#A_eJNo0GV>5| zRr=jy45qK`jEDO8W4MH^tu8KJ6QfFXK~(aFu(W6x0Y?;Zr#(sebwx4FWs;8~)y>mK ztR$(%@GZ%_{MJ|#cJTCK zjj<74)@!ltS<~!_#&5 zZL%Jb=kx!he=_ITzMg20oUIp|R^80{Z$E((&qR5vxe;`Iih&Ih!FnAj49<8%{wdg6`L-~|iIb<8dC(}MNJ_8bZi)8S!GCW3*gi95_qd_Tkt z#Y>Nm*cIMUer9Zkcrsy~zh#N1r(sH6sxps4b7z`{s%eP#2ghwjF0(RCO;{TOTjfMR z7yIWaY#-^E$~k~>OdO_S^Yg;h)C6x;n#@{C;sa?>u|Uk>F2L} zmZz7*pJ)vc^zFU2b`?T?LE0_E(8l(f#Oqsz=3_rQs^XiP_F6~&+Mi4vQ|)nsf5ldsE za#oW?QBJ{T3~^#cH?x;np82UieKtJ#g1J4Bxm;NWMH!1iTrhqrXu00JO8?z%EE&HM z$4nR+W}uiUN9w7s2(ZDHl{t-24qdL-*YmxJRkjz!eg)@8u%xP#**r-Ur=DpIOICP= zk*b%HzhfBbsMr_KvL5|ISGjP#NyA`tc3?l%pTy!2ljlV@s|Qu>a$?F`dr_Ux0ji^D zHN~c2tx~a*XlG1Ba zc%x_8qxQOkT}-Vt)5K`g@I0~r182hD zv|)ywn8nrU;jD}S4ipXsHJ^tPdxLobQ9AkYAkx_N?ZZ1AcoYYw-$^r{h;7%Bp=;z~ zIB5D`Xx@6;K(>|i%bs{G7tm7pZw3_xQGd37SH-wqe!x)}WJ`NCkOIv3RefvxF!4y? z7d9cfqyU!Jd%y;rDVIYTFpQ_4jKm73{vHA48k4^k3#Trv&NLPvBNGk?4tBy++sYwg z(r7gm5OUr43!VtZ?<%)6gkkd=DcJ{f6;b+Qv5`Uj&?Vo1opw9w-f6P!bJhzGX~jf~ z=AIJh*GCS|+MAVzITDgn@F{iJMouLxEkzgW8+h+4A_ocy4dTd})3CxTrPpVs*pSuv zGWHB``?J!96>Vj1j-?1yMYAb(Pu;vnx;$ST!iy}dHAvZ8NKs{{bP87UibG?4s~?*~ zCX5yv{h_Y0DPK)S`sF2~*?YRvM>ViYWwA1KUQJF(M_D|aX+Wwn=CuqqOV77_)>U56 z2=zE`AH^@3u2}(V`N7sdyHzo2iwn?(O)=-zutY*t7bUWy#=SD*(p28RiDUetUM;kP zh*S-q4RS=d6d$j5U$K~cG&k}->rZD0)2SFu%YBO{>`W=< zoADT!{e|8*{4pK!_z@T^0fa+;Nv7=-xNBjvE82kxZ$4mUCbm_xd-iCcS>UXFGuy2+ zm>Md9#>or(>QNUkK(E@JJBE6oo|r4Uv6PeQiTYa&0msvLG6EO04=?JpRv~52Fc`69 z5TyPgF{z#QI^0$UENtwfDq#}yO0}D4)&7UcivjQ#^c0F*9?3`{Ey6)B147xPwNQHh z-sy+qXK_bKNTc5h!A)zwC$d;9}s)TQ{@zkksr@gtJdNf;l8 cyCx#hINteSdGItlgMg2MjH-0`TeI;003>FQ_y7O^ literal 0 HcmV?d00001 diff --git a/presentations/img/protocol_sea.png b/presentations/img/protocol_sea.png new file mode 100644 index 0000000000000000000000000000000000000000..bae9960c58dc8f3aa1c2b327e0d991999692d4a3 GIT binary patch literal 73233 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 Zl{e0Tz!Ug!8ExC4R^ItDiktP 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 First

    But First

    -

    Classroom Mechanics

    -
    -
    -

    But First

    +

    Class Structure

      -
    • ~1 hour of Lecture and Discussion
    • +
    • ~20 minutes of Review and Discussion
    • +
    • 5 minute break
    • +
    • ~1 hour of Lecture and Exercises
    • 10 minute break
    • ~1 hour of Lab Time
    • -
    • 10 minute break
    • -
    • ~30 minutes of Lightning Talks
    • +
    • 5 minute break
    • +
    • ~20 minutes of Lightning Talks
    -
    +

    But First

    I'll spend a lot of time talking

    Don't make the mistake of thinking this means I know everything

    Each of us has domain expertise, share it

    -
    +

    But First

    Introductions

    @@ -103,7 +102,7 @@

    Computer Communications

    image: http://en.wikipedia.org/wiki/Internet_Protocol_Suite

    -
    +

    Computer Communications

    img/data_in_tcpip_stack.png
      @@ -145,7 +144,7 @@

      The TCP/IP Stack - Internet

    -
    +

    The TCP/IP Stack - Internet

    That's 4.3 x 10^28 addresses per person alive today

    @@ -170,7 +169,7 @@

    The TCP/IP Stack - Transport

    -
    +

    The TCP/IP Stack - Transport

    The 'Transport Layer' also establishes the concept of a port

      @@ -181,7 +180,7 @@

      The TCP/IP Stack - Transport

      This means that you don't have to worry about information intended for your web browser being accidentally read by your email client.

    -
    +

    The TCP/IP Stack - Transport

    There are certain ports which are commonly understood to belong to given applications or protocols:

    @@ -195,7 +194,7 @@

    The TCP/IP Stack - Transport

    (see http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers)

    -
    +

    The TCP/IP Stack - Transport

    Ports are grouped into a few different classes

      @@ -219,7 +218,7 @@

      The TCP/IP Stack - Application

    -
    +

    The TCP/IP Stack - Application

    this is where we live and work

    @@ -244,7 +243,7 @@

    Sockets in Python

    We're going to do this next part together, so open up a terminal and start python.

    -
    +

    Sockets in Python

    The sockets library provides tools for finding out information about hosts on the network. For example, you can find out about the machine you are currently @@ -259,7 +258,7 @@

    Sockets in Python

    ('heffalump.local', [], ['10.211.55.2', '10.37.129.2', '192.168.1.102'])
    -
    +

    Sockets in Python

    You can also find out about machines that are located elsewhere, for example:

    @@ -274,7 +273,7 @@ 

    Sockets in Python

    ['128.95.247.84']) # <- all active IP addresses
    -
    +

    Sockets in Python

    To create a socket, you use the socket method of the socket library:

    @@ -283,7 +282,7 @@ 

    Sockets in Python

    <socket._socketobject object at 0x10046cec0>
    -
    +

    Sockets in Python

    A socket has some properties that are immediately important to us. These include the family, type and protocol of the socket:

    @@ -323,7 +322,7 @@

    A quick utility method

    >>>
    -
    +

    Socket Families

    Families defined in the socket library are prefixed by AF_:

    @@ -349,7 +348,7 @@ 

    Unix Domain Sockets

  • use an 'address' that looks like a pathname ('/tmp/foo.sock')
  • -
    +

    Socket Families

    What is the default family for the socket we created just a moment ago?

    (remember we bound the socket to the symbol foo)

    @@ -368,7 +367,7 @@

    Socket Types

    (representing TCP type connections) and 2 (representing UDP type connections).

    -
    +

    Socket Types

    What is the default type for our generic socket, foo?

    @@ -387,7 +386,7 @@

    Socket Protocols

    activity the socket is intended to support. What messages are you needing to send?

    -
    +

    Socket Protocols

    What is the default protocol used by our generic socket, foo?

    @@ -404,12 +403,12 @@

    Address Information

    <socket._socketobject object at 0x1005b8b40>
    -
    +

    Address Information

    But how do you find out the right values?

    You ask.

    -
    +

    A quick utility method

    Create the following function:

    @@ -563,7 +562,7 @@ 

    Putting it all together

    Server Side

    What about the other half of the equation?

    -
    +

    Construct a Socket

    Again, we begin by constructing a socket. Since we are actually the server this time, we get to choose family, type and protocol:

    @@ -641,7 +640,7 @@

    Lab Time

  • clone your fork to your local machine
  • -
    +

    Lab Time

    In the repository you've just cloned, you'll find a directory called assignments. This is where all our class lab and take-home assignments diff --git a/presentations/week02.html b/presentations/week02.html index 59bc7070..47ee6ad7 100644 --- a/presentations/week02.html +++ b/presentations/week02.html @@ -5,7 +5,7 @@ -This is week 2 +Internet Programming with Python @@ -29,15 +29,457 @@

    -

    This is week 2

    +

    Internet Programming with Python

    +img/protocol.png +

    Week 2: Web Protocols

    +

    Wherein we learn about the languages that the internet speaks and how to +choose the right one for our message

    + +
    +
    +

    But First

    +

    Review from the Assignment

    +
    +
    +

    And Second

    +

    Questions from the Reading?

    +
    +
    +

    And Now...

    +img/protocol_sea.png +

    image exerpted from: http://xkcd.com/802/

    +
    +
    +

    What is a Protocol?

    +

    a set of rules or conventions

    +

    governing communications

    +
    +
    +

    Protocols IRL

    +

    Life has lots of sets of rules for how to do things.

    +
      +
    • What do you do on a first date?
    • +
    • What do you do in a job interview?
    • +
    • What do (and don't) you talk about at a dinner party?
    • +
    • ...?
    • +
    +
    + +
    +

    Protocols In Computers

    +

    Digital life has lots of rules too:

    +
      +
    • how to identify yourself
    • +
    • how to find a partner
    • +
    • how to ask for information
    • +
    • how to provide answers
    • +
    • how to say goodbye
    • +
    +
    +
    +

    Real Protocol Examples

    +

    What does this look like in practice?

    +
    +
    +

    Real Protocol Examples

    + +
    +
    +

    What does SMTP look like?

    +

    SMTP (Identify yourself and find a partner):

    +
    +S: 220 foo.com Simple Mail Transfer Service Ready
    +C: EHLO bar.com
    +S: 250-foo.com greets bar.com
    +S: 250-8BITMIME
    +S: 250-SIZE
    +S: 250-DSN
    +S: 250 HELP
    +
    +
    +
    +

    What does SMTP look like?

    +

    SMTP (Ask for information, provide answers):

    +
    +C: MAIL FROM:<Smith@bar.com>
    +S: 250 OK
    +C: RCPT TO:<Jones@foo.com>
    +S: 250 OK
    +C: RCPT TO:<Green@foo.com>
    +S: 550 No such user here
    +C: DATA
    +S: 354 Start mail input; end with <CRLF>.<CRLF>
    +C: Blah blah blah...
    +C: ...etc. etc. etc.
    +C: .
    +S: 250 OK
    +
    +
    +
    +

    What does SMTP look like?

    +

    SMTP (Say goodbye):

    +
    +C: QUIT
    +S: 221 foo.com Service closing transmission channel
    +
    +
    +
    +

    What does POP3 look like?

    +

    POP3 (Identify yourself and find a partner):

    +
    +C: <client connects to service port 110>
    +S: +OK POP3 server ready <1896.6971@mailgate.dobbs.org>
    +C: USER bob
    +S: +OK bob
    +C: PASS redqueen
    +S: +OK bob's maildrop has 2 messages (320 octets)
    +
    +
    +
    +

    What does POP3 look like?

    +

    POP3 (Ask for information, provide answers):

    +
    +C: STAT
    +S: +OK 2 320
    +C: LIST
    +S: +OK 2 messages (320 octets)
    +S: 1 120
    +S: 2 200
    +S: .
    +
    +
    +
    +

    What does POP3 look like?

    +

    POP3 (Ask for information, provide answers):

    +
    +C: RETR 1
    +S: +OK 120 octets
    +S: <the POP3 server sends the text of message 1>
    +S: .
    +C: DELE 1
    +S: +OK message 1 deleted
    +C: RETR 2
    +S: +OK 200 octets
    +S: <the POP3 server sends the text of message 2>
    +S: .
    +C: DELE 2
    +S: +OK message 2 deleted
    +
    +
    +
    +

    What does POP3 look like?

    +

    POP3 (Say goodbye):

    +
    +C: QUIT
    +S: +OK dewey POP3 server signing off (maildrop empty)
    +C: <client hangs up>
    +
    +
    +
    +

    What does IMAP look like?

    +

    IMAP (Identify yourself and find a partner):

    +
    +C: <client connects to service port 143>
    +S: * OK example.com IMAP4rev1 v12.264 server ready
    +C: A0001 USER "frobozz" "xyzzy"
    +S: * OK User frobozz authenticated
    +
    +
    +
    +

    What does IMAP look like?

    +

    IMAP (Ask for information, provide answers [connect to an inbox]):

    +
    +C: A0002 SELECT INBOX
    +S: * 1 EXISTS
    +S: * 1 RECENT
    +S: * FLAGS (\Answered \Flagged \Deleted \Draft \Seen)
    +S: * OK [UNSEEN 1] first unseen message in /var/spool/mail/esr
    +S: A0002 OK [READ-WRITE] SELECT completed
    +
    +
    +
    +

    What does IMAP look like?

    +

    IMAP (Ask for information, provide answers [Get message sizes]):

    +
    +C: A0003 FETCH 1 RFC822.SIZE
    +S: * 1 FETCH (RFC822.SIZE 2545)
    +S: A0003 OK FETCH completed
    +
    +
    +
    +

    What does IMAP look like?

    +

    IMAP (Ask for information, provide answers [Get first message header]):

    +
    +C: A0004 FETCH 1 BODY[HEADER]
    +S: * 1 FETCH (RFC822.HEADER {1425}
    +<server sends 1425 octets of message payload>
    +S: )
    +S: A0004 OK FETCH completed
    +
    +
    +
    +

    What does IMAP look like?

    +

    IMAP (Ask for information, provide answers [Get first message body]):

    +
    +C: A0005 FETCH 1 BODY[TEXT]
    +S: * 1 FETCH (BODY[TEXT] {1120}
    +<server sends 1120 octets of message payload>
    +S: )
    +S: * 1 FETCH (FLAGS (\Recent \Seen))
    +S: A0005 OK FETCH completed
    +
    +
    +
    +

    What does IMAP look like?

    +

    IMAP (Say goodbye):

    +
    +C: A0006 LOGOUT
    +S: * BYE example.com IMAP4rev1 server terminating connection
    +S: A0006 OK LOGOUT completed
    +C: <client hangs up>
    +
    +
    +
    +

    Notice Any Difference?

    +

    POP3 Commands:

    +
      +
    • STAT
    • +
    • LIST
    • +
    • RETR 1
    • +
    • DELE 1
    • +
    • QUIT
    • +
    +
    +
    +

    Notice Any Difference?

    +

    IMAP Commands:

    +
      +
    • A0001 USER "frobozz" "xyzzy"
    • +
    • A0002 SELECT INBOX
    • +
    • A0003 FETCH 1 RFC822.SIZE
    • +
    • A0004 FETCH 1 BODY[HEADER]
    • +
    • A0005 FETCH 1 BODY[TEXT]
    • +
    • A0006 LOGOUT
    • +
    +
    +
    +

    Notice Any Difference?

    +

    Sequence Identifiers allow the client to send commands without waiting for +responses.

    +
    +
    +

    Re-ordered IMAP Interaction

    +
    +C: A0001 USER "frobozz" "xyzzy"
    +S: * OK User frobozz authenticated
    +C: A0002 SELECT INBOX
    +S: ...
    +S: A0002 OK [READ-WRITE] SELECT completed
    +C: A0003 FETCH 1 RFC822.SIZE
    +C: A0004 FETCH 1 BODY[HEADER]
    +C: A0005 FETCH 1 BODY[TEXT]
    +S: * 1 FETCH (RFC822.SIZE 2545)
    +S: A0003 OK FETCH completed
    +...
    +...
    +C: A0006 LOGOUT
    +...
    +
    +
    +
    +

    Which Protocol do you Choose?

    +

    Stacking commands is more efficient, but would it work for POP3?

    +

    Why not?

    +
    +
    +

    What does HTTP look like?

    +

    HTTP (Ask for information):

    +
    +GET /index.html HTTP/1.1
    +Host: www.example.com
    +\r\n
    +
    +
    +
    +

    What does HTTP look like?

    +

    HTTP (Provide answers):

    +
    +HTTP/1.1 200 OK
    +Date: Mon, 23 May 2005 22:38:34 GMT
    +Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
    +Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
    +Etag: "3f80f-1b6-3e1cb03b"
    +Accept-Ranges:  none
    +Content-Length: 438
    +Connection: close
    +Content-Type: text/html; charset=UTF-8
    +\r\n
    +<438 bytes of content>
    +
    +
    +
    +

    Protocols in Python

    +

    Let's try this out for ourselves!

    +
    +
    +

    Protocols in Python

    +

    Fire up a Python interpreter

    +
    +
    +

    SMTP in Python

    +

    Start by importing smtplib (part of the standard library):

    +
    +>>> import smtplib
    +>>> dir(smtplib)
    +['CRLF', 'LMTP', 'LMTP_PORT', 'OLDSTYLE_AUTH',
    + 'SMTP', 'SMTPAuthenticationError', 'SMTPConnectError',
    + 'SMTPDataError', 'SMTPException', 'SMTPHeloError',
    + 'SMTPRecipientsRefused', 'SMTPResponseException',
    + 'SMTPSenderRefused', 'SMTPServerDisconnected',
    + 'SMTP_PORT', 'SMTP_SSL', 'SMTP_SSL_PORT', 'SSLFakeFile',
    + '__all__', '__builtins__', '__doc__', '__file__',
    + '__name__', '__package__', '_have_ssl', 'base64', 'email',
    + 'encode_base64', 'hmac', 'quoteaddr', 'quotedata', 're',
    + 'socket', 'ssl', 'stderr']
    +
    +
    +
    +

    SMTP in Python

    +

    Let's make a connection to a server. We'll use one I've set up in advance to +avoid needing to create one of our own:

    +
    +>>> server = smtplib.SMTP('smtp.webfaction.com', 587)
    +>>> server.set_debuglevel(True) # to see interaction
    +>>> server.ehlo()
    +send: 'ehlo heffalump.local\r\n'
    +reply: '250-smtp.webfaction.com\r\n'
    +reply: '250-PIPELINING\r\n'
    +reply: '250-SIZE 20971520\r\n'
    +reply: '250-VRFY\r\n'
    +reply: '250-ETRN\r\n'
    +reply: '250-STARTTLS\r\n'
    +...
    +
    +
    +
    +

    SMTP in Python

    +

    Does our server support TLS (secure transmissions?):

    +
    +>>> server.has_extn('STARTTLS')
    +True
    +
    +

    What other extensions are available?:

    +
    +>>> server.esmpt_features.keys()
    +['enhancedstatuscodes', 'etrn', 'starttls',
    + 'auth', 'dsn', '8bitmime', 'pipelining',
    + 'size', 'vrfy']
    +
    +
    +
    +

    SMTP in Python

    +

    Some SMTP servers require authentication. This is one such server. Before +passing our username and password, though, we should turn on TLS for the sake +of security:

    +
    +>>> server.starttls()
    +>>> server.ehlo() # re-identify after TLS begins
    +>>> server.login(username, password)
    +
    +
    +
    +

    SMTP in Python

    +

    Let's prepare a message to be sent to our server:

    +
    +>>> from_addr = "YOUR NAME <fill in this address>"
    +>>> to_addrs = "testbox@crisewing.com"
    +>>> subject = "this is a test"
    +>>> message = "a message from python smtplib"
    +
    +
    +
    +

    SMTP in Python

    +

    Email sent via SMTP requires certain formatting. It's part of the Protocol. In +particular, note that the headers are separated by CRLF sequences. This is +very common across internet protocols:

    +
    +>>> template = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n"
    +>>> headers = template % (from_addr, to_addrs, subject)
    +
    +
    +
    +

    SMTP in Python

    +

    A message is the headers, plus the body of the message:

    +
    +>>> email_body = headers + message
    +
    +

    Sending the email is accomplished by calling the sendmail method on our +server object, after which we should close the connection:

    +
    +>>> server.sendmail(from_addr, [to_addrs, ], email_body)
    +>>> server.close()
    +
    +
    +
    +

    Putting it all Together

    +
    +>>> from_addr = "YOUR NAME <fill in this address>"
    +>>> to_addrs = "testbox@crisewing.com"
    +>>> subject = "this is a test"
    +>>> message = "a message from python smtplib"
    +>>> template = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n"
    +>>> headers = template % (from_addr, to_addrs, subject)
    +
    +
    +
    +

    Putting it all Together

    +
    +>>> server = smtplib.SMTP('smtp.webfaction.com', 587)
    +>>> server.set_debuglevel(True)
    +>>> server.ehlo()
    +>>> server.starttls()
    +>>> server.ehlo() # re-identify after TLS begins
    +>>> server.login(username, password)
    +>>> email_body = headers + message
    +>>> server.sendmail(from_addr, [to_addrs, ], email_body)
    +>>> server.close()
    +
    +
    +
    +

    Python Means Batteries Included

    +

    So in fact we have a module in the standard library for email support:

    +
    +>>> import email.utils
    +>>> from email.mime.text import MIMEText
    +>>> from_addr = "addr@host.com"
    +>>> to_addrs = "other@another.com"
    +>>> msg = MIMEText("This is an email message")
    +>>> msg['From'] = email.utils.formataddr(("Name", from_addr))
    +>>> msg['To'] = email.utils.formataddr(("Name", to_addrs))
    +>>> msg['Subject'] = "Simple Test"
    +>>> server.sendmail(from_addr, [to_addrs, ], msg.as_string())
    +
    From 9b39bdbe7fbd108fedcf975c90b31b8418a803de Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 6 Jan 2013 21:52:20 -0800 Subject: [PATCH 015/114] Update documentation, especially week02 presentation. --- _sources/outline.txt | 11 ++- outline.html | 7 +- presentations/week02.html | 166 +++++++++++++++++++++++++++++++++++++- searchindex.js | 2 +- 4 files changed, 181 insertions(+), 5 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index 573d5c9f..abc71737 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -113,7 +113,8 @@ References Skim these before class, you'll need them for lab and your assignment: -* `ftplib `_ +* `smtplib `_ +* `imaplib `_ * `httplib `_ * `urllib `_ * `urllib2 `_ @@ -139,6 +140,14 @@ how the specification has changed (and how it hasn't!). * `Hypertext Transfer Protocol -- HTTP/1.1 `_ +If you have more curiosity about other Python Standard Library implementations +of internet protocols, you should read Doug Hellmann's Python Module Of The +Week on `Internet Protocols and Support`_. His entries on these libraries are +clear and concise and have some great code examples. + +.. _Internet Protocols and Support: http://www.doughellmann.com/PyMOTW/internet_protocols.html + + Week 3 - APIs and Mashups ------------------------- diff --git a/outline.html b/outline.html index bc5238fa..073bd9cc 100644 --- a/outline.html +++ b/outline.html @@ -133,7 +133,8 @@

    Reading

    References¶

    Skim these before class, you’ll need them for lab and your assignment:

    +

    If you have more curiosity about other Python Standard Library implementations +of internet protocols, you should read Doug Hellmann’s Python Module Of The +Week on Internet Protocols and Support. His entries on these libraries are +clear and concise and have some great code examples.

    diff --git a/presentations/week02.html b/presentations/week02.html index 47ee6ad7..1efbc9a3 100644 --- a/presentations/week02.html +++ b/presentations/week02.html @@ -413,7 +413,7 @@

    SMTP in Python

    Let's prepare a message to be sent to our server:

     >>> from_addr = "YOUR NAME <fill in this address>"
    ->>> to_addrs = "testbox@crisewing.com"
    +>>> to_addrs = "demo@crisewing.com"
     >>> subject = "this is a test"
     >>> message = "a message from python smtplib"
     
    @@ -445,7 +445,7 @@

    SMTP in Python

    Putting it all Together

     >>> from_addr = "YOUR NAME <fill in this address>"
    ->>> to_addrs = "testbox@crisewing.com"
    +>>> to_addrs = "demo@crisewing.com"
     >>> subject = "this is a test"
     >>> message = "a message from python smtplib"
     >>> template = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n"
    @@ -481,6 +481,168 @@ 

    Python Means Batteries Included

    >>> server.sendmail(from_addr, [to_addrs, ], msg.as_string())
    +
    +

    IMAP in Python

    +

    Let's read that email we just sent

    +
    +
    +

    IMAP in Python

    +

    Again, begin by importing the module from the Python Standard Library:

    +
    +>>> import imaplib
    +>>> dir(imaplib)
    +['AllowedVersions', 'CRLF', 'Commands',
    + 'Continuation', 'Debug', 'Flags', 'IMAP4',
    + 'IMAP4_PORT', 'IMAP4_SSL', 'IMAP4_SSL_PORT',
    + 'IMAP4_stream', 'Int2AP', 'InternalDate',
    + 'Internaldate2tuple', 'Literal', 'MapCRLF',
    + 'Mon2num', 'ParseFlags', 'Response_code',
    + 'Time2Internaldate', 'Untagged_response',
    + 'Untagged_status', '_Authenticator', ...]
    +
    +
    +
    +

    IMAP in Python

    +

    We set up a client object. WebFaction requires SSL for connecting to IMAP +servers, so let's initialize an IMAP4_SSL client and authenticate:

    +
    +>>> conn = imaplib.IMAP4_SSL('mail.webfaction.com')
    +  57:04.83 imaplib version 2.58
    +  57:04.83 new IMAP4 connection, tag=FNHG
    +>>> conn.login(username, password)
    +('OK', ['Logged in.'])
    +
    +
    +
    +

    IMAP in Python

    +

    Let's set up debugging here too, so that we can see the communication back and +forth between client and server:

    +
    +>>> conn.debug = 4 # >3 prints all messages
    +
    +

    We can start by listing the mailboxes we have on the server:

    +
    +>>> conn.list()
    +  00:41.91 > FNHG3 LIST "" *
    +  00:41.99 < * LIST (\HasNoChildren) "." "INBOX"
    +  00:41.99 < FNHG3 OK List completed.
    +('OK', ['(\\HasNoChildren) "." "INBOX"'])
    +
    +
    +
    +

    IMAP in Python

    +

    We can find out about the mail on our server. We do this by querying for +status. IMAP provides a few different status values, let's ask for them +all:

    +
    +>>> vals = '(MESSAGES RECENT UIDNEXT'
    +>>> vals += ' UIDVALIDITY UNSEEN)'
    +>>> conn.status('INBOX', vals)
    +  12:03.91 > FNHG4 STATUS INBOX (MESSAGES RECENT UIDNEXT UIDVALIDITY UNSEEN)
    +  12:04.01 < * STATUS "INBOX" (MESSAGES 2 RECENT 0 UIDNEXT 3 UIDVALIDITY 1357449499 UNSEEN 1)
    +  12:04.01 < FNHG4 OK Status completed.
    +('OK', ['"INBOX" (MESSAGES 2 RECENT 0
    +                  UIDNEXT 3 UIDVALIDITY 1357449499
    +                  UNSEEN 1)'])
    +
    +
    +
    +

    IMAP in Python

    +

    To interact with our email, we must select a mailbox from the list we received +earlier:

    +
    +>>> conn.select('INBOX')
    +  00:00.47 > FNHG2 SELECT INBOX
    +  00:00.56 < * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
    +  00:00.56 < * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
    +  00:00.56 < * 2 EXISTS
    +  00:00.57 < * 0 RECENT
    +  00:00.57 < * OK [UNSEEN 2] First unseen.
    +  00:00.57 < * OK [UIDVALIDITY 1357449499] UIDs valid
    +  00:00.57 < * OK [UIDNEXT 3] Predicted next UID
    +  00:00.57 < FNHG2 OK [READ-WRITE] Select completed.
    +('OK', ['2'])
    +
    +
    +
    +

    IMAP in Python

    +

    We can search our selected mailbox for messages matching one or more criteria. +The return value is a string list of the UIDs of messages that match our +search:

    +
    +>>> conn.search(None, '(FROM "IPIP")')
    +  18:25.41 > FNHG5 SEARCH (FROM "IPIP")
    +  18:25.54 < * SEARCH 1 2
    +  18:25.54 < FNHG5 OK Search completed.
    +('OK', ['1 2'])
    +>>>
    +
    +
    +
    +

    IMAP in Python

    +

    Once we've found a message we want to look at, we can use the fetch +command to read it from the server. IMAP allows fetching each part of +a message independently:

    +
    +>>> conn.fetch('2', '(BODY[HEADER])')
    +...
    +>>> conn.fetch('2', '(BODY[TEXT])')
    +...
    +>>> conn.fetch('2', '(FLAGS)')
    +
    +
    +
    +

    IMAP in Python

    +

    It is even possible to download an entire message in raw format, and load that +into a python email message object:

    +
    +>>> import email
    +>>> typ, data = conn.fetch('2', '(RFC822)')
    +  28:08.40 > FNHG8 FETCH 2 (RFC822)
    +  ...
    +>>> for part in data:
    +...   if isinstance(part, tuple):
    +...     msg = email.message_from_string(part[1])
    +...
    +>>>
    +
    +
    +
    +

    IMAP in Python

    +

    Once we have that, we can play with the resulting email object:

    +
    +>>> msg['to']
    +'demo@crisewing.com'
    +>>> print msg.get_payload()
    +This is an email message
    +
    +
    +
    +

    IMAP in Python

    +

    Neat, huh?

    +
    +
    +

    What Have We Learned?

    +
      +
    • Protocols are just a set of rules for how to communicate

      +
    • +
    • A given protocol has a set of commands it knows

      +
    • +
    • If we properly format requests to a server, we can get answers

      +
    • +
    • Python supports a number of these protocols

      +
      +
        +
      • So we don't have to remember how to format the commands ourselves
      • +
      +
        +
      • But in every case we've seen so far, we could do this with a socket and +some strings
      • +
      +
      +
    • +
    +
    diff --git a/searchindex.js b/searchindex.js index 7b304e60..ce29be64 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:0,code:0,queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,string:1,util:1,veri:1,unexcus:0,level:0,list:1,"try":1,small:[0,1],pleas:1,cgi:[0,1],outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],contrast:0,hasn:1,berkelei:1,learn:[0,1],here:0,inher:1,along:1,search:0,technolog:[],prior:0,zodb:[],implement:[0,1],chanc:1,ourselv:1,via:[0,1],extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1],commun:1,univers:0,regist:0,two:0,websit:1,recommend:1,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,valuabl:1,prepar:1,work:0,focu:[0,1],can:[0,1],http2:[],purpos:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1],winter:0,anoth:1,write:1,how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,sundai:1,lab:1,befor:1,date:1,data:1,demonstr:1,goal:1,classroom:0,github:1,author:1,django:[0,1],inform:[0,1],allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,through:[0,1],dynam:1,grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:1,framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,realli:1,connect:0,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:0,reason:0,base:0,org:1,care:1,lucumr:[],principl:0,assign:[0,1],first:1,origin:1,softwar:[],feel:1,onc:[],qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:1,top:1,system:1,master:1,zeromq:1,"final":1,pocoo:[],option:1,relationship:1,tool:1,"short":1,pars:1,mostli:1,eibrari:1,than:0,provid:[0,1],tree:1,structur:1,project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1],tabl:0,need:1,techniqu:1,equival:0,contact:0,also:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,object:[0,1],reach:1,phase:1,"class":[0,1],don:[0,1],dens:0,cover:1,doe:[0,1],part:0,determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:0,find:1,onli:1,explain:1,configur:0,apach:1,written:1,should:0,kessler:1,disert:1,suppos:1,smtplib:1,local:1,move:1,variou:1,get:1,express:0,rest:1,requir:0,truli:1,rfc:1,integr:0,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,wikipedia:1,urllib:1,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:1,extend:1,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:1,overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,evalu:1,compon:1,json:1,presentations_:[],life:1,emphas:0,athom:1,understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,servic:[0,1],employ:0,defin:1,wild:1,python_web:1,pyramid:[0,1],briandorsei:1,lightweight:1,minutia:0,sever:1,minim:1,make:1,format:1,same:1,complex:1,document:[0,1],complet:[0,1],week:[0,1],http:1,kit:1,student:[0,1],extern:1,stack:1,appropri:1,coursework:0,exampl:[0,1],thi:[0,1],model:1,portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,virtual:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:1,easi:1,drawback:1,apache2:1,armin:1,blob:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,xmlrpc:1,week05:1,read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:1,like:1,specif:1,manifest:1,benefit:1,either:1,page:[0,1],underli:[0,1],www:1,right:1,often:1,interact:1,some:1,satisfactori:0,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,noon:1,refer:[0,1],machin:1,cgi_exampl:1,investig:1,run:1,usag:0,confer:1,host:1,dissert:1,prerequisit:0,januari:[0,1],feb:1,chapter:1,about:1,socket:[0,1],constraint:1,commit:0,disabl:0,own:1,curiou:1,washington:0,assess:0,chang:1,your:[0,1],wai:1,transfer:1,support:[0,1],why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,form:1,criteria:1,rpclib:1,sqlalchemi:[],gain:1,rfc1945:[],made:1,wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1],request:[0,1],pragmat:0,parser:1,lectur:[0,1],file:1,mashup:[0,1],scrape:1,field:1,other:1,test:1,ignor:1,you:1,repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:1,wifi:0,xmlrpclib:1,train:1,htmlparser:1,time:1,push:1,hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:0,code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,string:1,util:1,veri:1,unexcus:0,level:0,list:1,"try":1,imaplib:1,small:[0,1],pleas:1,machin:1,outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,index:0,what:1,sud:1,section:1,lightn:1,brief:1,access:[0,1],contrast:0,hasn:1,berkelei:1,learn:[0,1],here:0,inher:1,along:1,search:0,technolog:[],prior:0,base:0,implement:[0,1],chanc:1,ourselv:1,via:[0,1],extra:[],apach:1,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,kessler:1,from:[0,1],commun:1,univers:0,regist:0,two:0,websit:1,recommend:1,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,valuabl:1,prepar:1,work:0,focu:[0,1],can:[0,1],http2:[],purpos:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1],winter:0,anoth:1,write:1,concis:1,simpl:[0,1],mar:1,resourc:1,attend:0,sundai:1,lab:1,befor:1,mai:1,data:1,demonstr:1,goal:1,classroom:0,"short":1,minim:1,assign:[0,1],inform:[0,1],allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,move:1,through:[0,1],dynam:1,how:[0,1],grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:1,framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,realli:1,connect:0,doug:1,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],integr:0,advanc:1,given:1,pub:1,standard:[0,1],quick:0,reason:0,zodb:[],org:1,care:1,lucumr:[],principl:0,think:1,first:1,origin:1,softwar:[],feel:1,onc:[],qualiti:1,date:1,restkit_:[],horribl:1,fantast:0,differ:1,script:1,top:1,system:1,master:1,zeromq:1,"final":1,low:0,option:1,relationship:1,tool:1,part:0,pars:1,mostli:1,eibrari:1,than:0,provid:[0,1],tree:1,structur:1,exampl:[0,1],project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1],tabl:0,need:1,django:[0,1],techniqu:1,equival:0,also:1,contact:0,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,object:[0,1],reach:1,phase:1,"class":[0,1],don:[0,1],dens:0,clear:1,cover:1,doe:[0,1],determin:1,left:1,wsgi:[0,1],abl:0,beautifulsoup:1,bring:0,session:0,find:1,onli:1,explain:1,configur:0,activ:0,written:1,should:[0,1],jan:1,disert:1,suppos:1,smtplib:1,local:1,insight:1,variou:1,get:1,express:0,tcp:1,requir:0,truli:1,rfc:1,common:1,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,wikipedia:1,urllib:1,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:1,overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,creat:[0,1],hellmann:1,compon:1,json:1,presentations_:[],life:1,emphas:0,great:1,athom:1,understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,servic:[0,1],employ:0,defin:1,wild:1,python_web:1,pyramid:[0,1],briandorsei:1,lightweight:1,minutia:0,sever:1,author:1,make:1,week05:1,same:1,complex:1,document:[0,1],complet:[0,1],week:[0,1],http:1,kit:1,student:[0,1],extern:1,stack:1,appropri:1,entri:1,coursework:0,client:1,thi:[0,1],model:1,portabl:0,latest:1,protocol:[0,1],just:1,rest:1,weekli:0,scrape:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:1,easi:1,drawback:1,apache2:1,armin:1,blob:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,xmlrpc:1,format:1,read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:1,like:1,specif:1,manifest:1,benefit:1,either:1,page:[0,1],underli:[0,1],www:1,right:1,often:1,interact:1,some:1,satisfactori:0,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,noon:1,refer:[0,1],cgi:[0,1],cgi_exampl:1,investig:1,run:1,usag:0,confer:1,host:1,dissert:1,prerequisit:0,januari:[0,1],feb:1,chapter:1,about:1,socket:[0,1],constraint:1,commit:0,disabl:0,own:1,curiou:1,washington:0,curios:1,assess:0,chang:1,your:[0,1],wai:1,transfer:1,support:[0,1],why:1,avail:1,start:[0,1],interfac:1,pocoo:[],suit:1,form:1,criteria:1,github:1,rpclib:1,sqlalchemi:[],gain:1,rfc1945:[],made:1,wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,evalu:1,request:[0,1],pragmat:0,parser:1,lectur:[0,1],file:1,mashup:[0,1],virtual:1,field:1,other:1,test:1,htmlparser:1,you:1,repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:1,wifi:0,xmlrpclib:1,train:1,ignor:1,time:1,push:1,hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file From 1818e69c39ef9b3e9a2fbb8f7cac8801ba643226 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 7 Jan 2013 11:07:20 -0800 Subject: [PATCH 016/114] add image --- presentations/img/socket_interaction.png | Bin 0 -> 17331 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 presentations/img/socket_interaction.png diff --git a/presentations/img/socket_interaction.png b/presentations/img/socket_interaction.png new file mode 100644 index 0000000000000000000000000000000000000000..69b9ac86095e7b5d06b25f7493464368f9cff822 GIT binary patch literal 17331 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 literal 0 HcmV?d00001 From 3c3958d9d0da552ef51f64f7795552125cbc3e2f Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 7 Jan 2013 11:07:31 -0800 Subject: [PATCH 017/114] update with fixes for typos and such --- _sources/outline.txt | 12 +++++++++--- outline.html | 12 +++++++++--- presentations/week01.html | 25 ++++++++++++++++--------- presentations/week02.html | 8 ++++++-- searchindex.js | 2 +- 5 files changed, 41 insertions(+), 18 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index abc71737..6451c59e 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -49,6 +49,12 @@ References * `Python Library - smtplib `_ +For our in-class lab and our homework, you'll be forking a github repository +and making pull requests. You can read up on how this is accomplished here: + +* `Fork a Repo `_ +* `Using Pull Requests `_ + Further Reading *************** @@ -62,9 +68,9 @@ Further Reading Bonus ***** -`ZeroMQ Guide, Chapter 1 `_: ZeroMQ is a -modern, advanced implementation of the socket concept. Read this to find out -what sockets can get up to these days. +`ZeroMQ Guide, Chapter 1 `_: +ZeroMQ is a modern, advanced implementation of the socket concept. Read this +to find out what sockets can get up to these days. Assignment ********** diff --git a/outline.html b/outline.html index 073bd9cc..ea6f0d84 100644 --- a/outline.html +++ b/outline.html @@ -83,6 +83,12 @@

    ReferencesSocket Programming How-to
  • Python Library - smtplib
  • +

    For our in-class lab and our homework, you’ll be forking a github repository +and making pull requests. You can read up on how this is accomplished here:

    +

    Further Reading¶

    @@ -95,9 +101,9 @@

    Further Reading

    Bonus¶

    -

    ZeroMQ Guide, Chapter 1: ZeroMQ is a -modern, advanced implementation of the socket concept. Read this to find out -what sockets can get up to these days.

    +

    ZeroMQ Guide, Chapter 1: +ZeroMQ is a modern, advanced implementation of the socket concept. Read this +to find out what sockets can get up to these days.

    Assignment¶

    diff --git a/presentations/week01.html b/presentations/week01.html index 2e60160b..edb89d10 100644 --- a/presentations/week01.html +++ b/presentations/week01.html @@ -446,7 +446,6 @@

    On Your Own Machine

    On the Internet

     >>> get_address_info('www.google.com', 'http')
    ->>> get_address_info('www.google.com', 'http')
     family:  AF_INET
     type:  SOCK_STREAM
     protocol:  IPPROTO_TCP
    @@ -564,6 +563,7 @@ 

    Server Side

    Construct a Socket

    +

    For the moment, stop typing this into your interpreter.

    Again, we begin by constructing a socket. Since we are actually the server this time, we get to choose family, type and protocol:

    @@ -581,7 +581,7 @@ 

    Bind the Socket

    Our server socket needs to be bound to an address. This is the IP Address and Port to which clients must connect:

    ->>> address = ('127.0.0.1', '50000')
    +>>> address = ('127.0.0.1', 50000)
     >>> server_socket.bind(address)
     
    @@ -599,9 +599,10 @@

    Listen for Connections

    Accept Incoming Messages

    -

    When a socket is listening, it can accept incoming messages:

    +

    When a socket is listening, it can receive incoming messages:

     >>> connection, client_address = server_socket.accept()
    +... # note that nothing happens here until a client sends something
     >>> connection.recv(16)
     
      @@ -610,7 +611,7 @@

      Accept Incoming Messages

    • the client_address is a two-tuple of IP Address and Port (very familiar)
    • backlog represents the maximum number of connection sockets that a server can spin off
    • -
    • close a connection socket to accept a new connection one the max is +
    • close a connection socket to accept a new connection once the max is reached
    @@ -630,17 +631,23 @@

    Clean Up

    >>> connection.close()
    +
    +

    Putting it all together

    +

    Open a second terminal next to your first, and let's try out the full +connection:

    +img/socket_interaction.png +

    Lab Time

    For our class lab time today, let's explore what we've learned. First, we'll need the samples:

    -
    +

    Lab Time

    In the repository you've just cloned, you'll find a directory called assignments. This is where all our class lab and take-home assignments @@ -651,8 +658,8 @@

    Lab Time

  • Using what you've learned today, complete the server and client by replacing comments with real code
  • Start the server on your local machine, run the client and send some messages
  • -
  • Copy the server to your Blue Box VM. Run it and use the client to send it -some messages
  • +
  • If you complete that, then copy the server to your Blue Box VM. Run it +remotely and use the client to send it some messages
  • What do you have to change to make that work?
  • @@ -668,7 +675,7 @@

    Submitting the Assignment

  • Add sum_server.py and sum_client.py to the assignments/week01/athome/ directory of your fork of the class repository.
  • -
  • When you are satisfied with your code, make a pull request
  • +
  • When you are satisfied with your code, make a pull request
  • I should be able to run the server and client scripts on my local machine and get results.
  • For bonus points, set the server running on your VM. I should be able to run diff --git a/presentations/week02.html b/presentations/week02.html index 1efbc9a3..31d2238d 100644 --- a/presentations/week02.html +++ b/presentations/week02.html @@ -636,13 +636,17 @@

    What Have We Learned?

  • So we don't have to remember how to format the commands ourselves
    • -
    • But in every case we've seen so far, we could do this with a socket and -some strings
    • +
    • But in every case we've seen so far, we could do the same thing with a +socket and some strings
    +
    +

    HTTP in Python

    +

    HTTP is no different

    +
    diff --git a/searchindex.js b/searchindex.js index ce29be64..0c8c805f 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:0,code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,string:1,util:1,veri:1,unexcus:0,level:0,list:1,"try":1,imaplib:1,small:[0,1],pleas:1,machin:1,outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,index:0,what:1,sud:1,section:1,lightn:1,brief:1,access:[0,1],contrast:0,hasn:1,berkelei:1,learn:[0,1],here:0,inher:1,along:1,search:0,technolog:[],prior:0,base:0,implement:[0,1],chanc:1,ourselv:1,via:[0,1],extra:[],apach:1,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,kessler:1,from:[0,1],commun:1,univers:0,regist:0,two:0,websit:1,recommend:1,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,valuabl:1,prepar:1,work:0,focu:[0,1],can:[0,1],http2:[],purpos:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1],winter:0,anoth:1,write:1,concis:1,simpl:[0,1],mar:1,resourc:1,attend:0,sundai:1,lab:1,befor:1,mai:1,data:1,demonstr:1,goal:1,classroom:0,"short":1,minim:1,assign:[0,1],inform:[0,1],allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,move:1,through:[0,1],dynam:1,how:[0,1],grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:1,framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,realli:1,connect:0,doug:1,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],integr:0,advanc:1,given:1,pub:1,standard:[0,1],quick:0,reason:0,zodb:[],org:1,care:1,lucumr:[],principl:0,think:1,first:1,origin:1,softwar:[],feel:1,onc:[],qualiti:1,date:1,restkit_:[],horribl:1,fantast:0,differ:1,script:1,top:1,system:1,master:1,zeromq:1,"final":1,low:0,option:1,relationship:1,tool:1,part:0,pars:1,mostli:1,eibrari:1,than:0,provid:[0,1],tree:1,structur:1,exampl:[0,1],project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1],tabl:0,need:1,django:[0,1],techniqu:1,equival:0,also:1,contact:0,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,object:[0,1],reach:1,phase:1,"class":[0,1],don:[0,1],dens:0,clear:1,cover:1,doe:[0,1],determin:1,left:1,wsgi:[0,1],abl:0,beautifulsoup:1,bring:0,session:0,find:1,onli:1,explain:1,configur:0,activ:0,written:1,should:[0,1],jan:1,disert:1,suppos:1,smtplib:1,local:1,insight:1,variou:1,get:1,express:0,tcp:1,requir:0,truli:1,rfc:1,common:1,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,wikipedia:1,urllib:1,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:1,overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,creat:[0,1],hellmann:1,compon:1,json:1,presentations_:[],life:1,emphas:0,great:1,athom:1,understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,servic:[0,1],employ:0,defin:1,wild:1,python_web:1,pyramid:[0,1],briandorsei:1,lightweight:1,minutia:0,sever:1,author:1,make:1,week05:1,same:1,complex:1,document:[0,1],complet:[0,1],week:[0,1],http:1,kit:1,student:[0,1],extern:1,stack:1,appropri:1,entri:1,coursework:0,client:1,thi:[0,1],model:1,portabl:0,latest:1,protocol:[0,1],just:1,rest:1,weekli:0,scrape:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:1,easi:1,drawback:1,apache2:1,armin:1,blob:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,xmlrpc:1,format:1,read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:1,like:1,specif:1,manifest:1,benefit:1,either:1,page:[0,1],underli:[0,1],www:1,right:1,often:1,interact:1,some:1,satisfactori:0,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,noon:1,refer:[0,1],cgi:[0,1],cgi_exampl:1,investig:1,run:1,usag:0,confer:1,host:1,dissert:1,prerequisit:0,januari:[0,1],feb:1,chapter:1,about:1,socket:[0,1],constraint:1,commit:0,disabl:0,own:1,curiou:1,washington:0,curios:1,assess:0,chang:1,your:[0,1],wai:1,transfer:1,support:[0,1],why:1,avail:1,start:[0,1],interfac:1,pocoo:[],suit:1,form:1,criteria:1,github:1,rpclib:1,sqlalchemi:[],gain:1,rfc1945:[],made:1,wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,evalu:1,request:[0,1],pragmat:0,parser:1,lectur:[0,1],file:1,mashup:[0,1],virtual:1,field:1,other:1,test:1,htmlparser:1,you:1,repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:1,wifi:0,xmlrpclib:1,train:1,ignor:1,time:1,push:1,hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:0,code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,string:1,util:1,veri:1,unexcus:0,level:0,list:1,"try":1,imaplib:1,small:[0,1],pleas:1,cgi:[0,1],outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],contrast:0,hasn:1,berkelei:1,learn:[0,1],here:[0,1],inher:1,along:1,search:0,technolog:[],prior:0,zodb:[],implement:[0,1],chanc:1,ourselv:1,via:[0,1],prerequisit:0,extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1],commun:1,univers:0,regist:0,two:0,websit:1,recommend:1,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,valuabl:1,prepar:1,work:0,focu:[0,1],can:[0,1],http2:[],purpos:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1],winter:0,anoth:1,write:1,how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,sundai:1,lab:1,befor:1,date:1,data:1,demonstr:1,goal:1,classroom:0,"short":1,author:1,django:[0,1],inform:[0,1],allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,through:[0,1],dynam:1,concis:1,grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:1,framework:[0,1],hateoa:1,httplib2:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,realli:1,connect:0,doug:1,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:0,reason:0,base:0,org:1,care:1,lucumr:[],principl:0,assign:[0,1],first:1,origin:1,softwar:[],feel:1,onc:[],qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:1,top:1,system:1,stack:1,master:1,zeromq:1,"final":1,pocoo:[],option:1,relationship:1,tool:1,part:0,pars:1,mostli:1,eibrari:1,than:0,provid:[0,1],tree:1,structur:1,project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1],tabl:0,need:1,techniqu:1,equival:0,contact:0,also:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,object:[0,1],reach:1,phase:1,"class":[0,1],don:[0,1],dens:0,clear:1,cover:1,doe:[0,1],determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:0,find:1,onli:1,explain:1,configur:0,apach:1,written:1,should:[0,1],kessler:1,disert:1,suppos:1,smtplib:1,local:1,move:1,variou:1,get:1,express:0,repo:1,rest:1,requir:0,truli:1,rfc:1,integr:0,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,wikipedia:1,urllib:1,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:1,overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,evalu:1,hellmann:1,compon:1,json:1,presentations_:[],life:1,emphas:0,great:1,athom:1,understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,servic:[0,1],employ:0,defin:1,wild:1,python_web:1,pyramid:[0,1],briandorsei:1,lightweight:1,minutia:0,sever:1,minim:1,make:1,format:1,same:1,complex:1,document:[0,1],complet:[0,1],week:[0,1],http:1,kit:1,student:[0,1],extern:1,studi:1,appropri:1,entri:1,coursework:0,exampl:[0,1],thi:[0,1],model:1,portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,virtual:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:1,easi:1,drawback:1,apache2:1,armin:1,blob:1,homework:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,xmlrpc:1,week05:1,read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:1,like:1,specif:1,manifest:1,benefit:1,either:1,page:[0,1],underli:[0,1],www:1,right:1,often:1,interact:1,some:1,satisfactori:0,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,noon:1,refer:[0,1],machin:1,cgi_exampl:1,investig:1,run:1,usag:0,confer:1,host:1,dissert:1,repositori:1,januari:[0,1],feb:1,chapter:1,about:1,socket:[0,1],constraint:1,commit:0,disabl:0,own:1,curiou:1,washington:0,curios:1,assess:0,chang:1,your:[0,1],wai:1,transfer:1,support:[0,1],why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,fork:1,form:1,criteria:1,github:1,rpclib:1,sqlalchemi:[],gain:1,rfc1945:[],pull:1,made:1,wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1],request:[0,1],pragmat:0,parser:1,lectur:[0,1],file:1,mashup:[0,1],scrape:1,field:1,other:1,test:1,ignor:1,you:1,repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:1,wifi:0,xmlrpclib:1,train:1,htmlparser:1,time:1,push:1,hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file From b9fd9786a3213926915053999d85c9e4bfa94159 Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 13 Jan 2013 13:08:53 -0800 Subject: [PATCH 018/114] * update week 2 to have complete version of slides * update outline for week 2 to include direct link to slides * update css for presentations * add new images for week 3 presentation --- outline.html | 100 ++++--- presentations/img/granny_mashup.png | Bin 0 -> 226117 bytes presentations/img/scream.jpg | Bin 0 -> 629018 bytes presentations/ui/uw_pce_theme/pretty.css | 3 +- presentations/week02.html | 359 ++++++++++++++++++++++- 5 files changed, 411 insertions(+), 51 deletions(-) create mode 100644 presentations/img/granny_mashup.png create mode 100644 presentations/img/scream.jpg diff --git a/outline.html b/outline.html index ea6f0d84..340e5393 100644 --- a/outline.html +++ b/outline.html @@ -125,6 +125,7 @@

    Week 2 - Web Protocols

    The class assignment will be to extend the simple web server, adding the ability to run dynamic processes and return the results to the client.

    +

    Week 2 Presentation

    Reading¶

    Read through the list of Python Internet Protocols. If you don’t know what a @@ -167,6 +168,12 @@

    Bonus¶ Week on Internet Protocols and Support. His entries on these libraries are clear and concise and have some great code examples.

    +
    +

    Assignment¶

    +

    You can read the assignment at

    +

    http://github.com/cewing/training.python_web/blob/master/assignments/week02/athome/assignment.txt

    +

    Please complete the assignment by noon on Sunday, January 13, 2012.

    +

    Week 3 - APIs and Mashups¶

    @@ -177,13 +184,17 @@

    Week 3 - APIs and Mashups -

    Reading¶

    +

    In our class lab sessions we will practice scraping a website and using a +documented web service API.

    +

    For our class assignment, students will choose two sources of information +online and combine them in a mashup.

    + -
    -

    References¶

    +
    +

    References¶

    Python Standard Libraries:¶

      @@ -206,8 +217,8 @@

      Python Standard Libraries:json

    -
    -

    External Eibraries:¶

    +
    +

    External Libraries:¶

    • BeautifulSoup - “You didn’t write that awful page. You’re just trying to get some data out of it. Right now, you don’t really care what HTML is @@ -228,8 +239,8 @@

      SOAP¶

    -
    -

    Bonus¶

    +
    +

    Bonus¶

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    @@ -254,8 +265,8 @@

    Week 4 - CGI and WSGI -
    -

    Reading¶

    +
    +

    Reading¶

    -
    -

    References¶

    +
    +

    References¶

    @@ -312,48 +323,48 @@

    Week 5 - Small Frameworks -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    Week 6 - Django¶

    Date: Feb. 19, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    Week 7 - Django¶

    Date: Feb. 26, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    Week 8 - Pyramid¶

    Date: Mar. 5, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    Week 9 - The Cloud¶

    Date: Feb. 12, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    Week 10 - Plone¶

    Date: Mar. 12, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    @@ -380,54 +391,55 @@

    Table Of Contents

  • Reading
  • References
  • Bonus
  • +
  • Assignment
  • Week 3 - APIs and Mashups
  • What is a Protocol?

    -

    a set of rules or conventions

    -

    governing communications

    +

    a set of rules or conventions

    +

    governing communications

    Protocols IRL

    @@ -74,7 +74,7 @@

    Protocols IRL

    @@ -82,7 +82,7 @@

    Protocols In Computers

    Digital life has lots of rules too:

    • how to identify yourself
    • -
    • how to find a partner
    • +
    • how to find a conversation partner
    • how to ask for information
    • how to provide answers
    • how to say goodbye
    • @@ -643,10 +643,357 @@

      What Have We Learned?

    -
    -

    HTTP in Python

    +
    +

    HTTP

    HTTP is no different

    +
    +

    HTTP

    +

    We are concerned with two things in HTTP:

    +
      +
    • Requests (Asking for information)
    • +
    • Responses (Providing answers)
    • +
    +
    +
    +

    HTTP Req/Resp Format

    +

    Both share a common basic format:

    +
      +
    • Line separators are <CRLF>
    • +
    • An required initial line
    • +
    • A (mostly) optional set of headers, one per line
    • +
    • A blank line
    • +
    • An optional body
    • +
    +

    "Be strict in what you send and tolerant in what you receive"

    +
    +
    +

    HTTP Requests

    +

    In HTTP 1.0, the only required line in an HTTP request is this:

    +
    +GET /path/to/index.html HTTP/1.0
    +<CRLF>
    +
    +

    As virtual hosting grew more common, that was not enough, so HTTP 1.1 adds a +single required header, Host:

    +
    +GET /path/to/index.html HTTP/1.1
    +Host: www.mysite1.com:80
    +<CRLF>
    +
    +
    +
    +

    HTTP Verbs

    +

    GET /path/to/index.html HTTP/1.1

    +
      +
    • Every HTTP request must start with a verb

      +
    • +
    • There are four main HTTP verbs:

      +
      +
        +
      • GET
      • +
      • POST
      • +
      • PUT
      • +
      • DELETE
      • +
      +
      +
    • +
    +
      +
    • There are others, notably HEAD, but you won't see them too much
    • +
    +
    +
    +

    HTTP Verbs

    +

    These four verbs are mapped to the four basic steps of a CRUD content management +cycle:

    +
      +
    • POST = Create
    • +
    • GET = Read
    • +
    • PUT = Update
    • +
    • DELETE = Delete
    • +
    +
    +
    +

    Verbs: Safe <--> Unsafe

    +

    HTTP verbs can be categorized as safe or unsafe, based on whether they +might change something on the server:

    +
      +
    • +
      Safe HTTP Verbs
      +
        +
      • GET
      • +
      +
      +
      +
    • +
    • +
      Unsafe HTTP Verbs
      +
        +
      • POST
      • +
      • PUT
      • +
      • DELETE
      • +
      +
      +
      +
    • +
    +

    This is a normative distinction, which is to say be careful

    +
    +
    +

    Verbs: Idempoent <--> ???

    +

    HTTP verbs can be categorized as idempotent, based on whether a given +request will always have the same result:

    +
      +
    • +
      Idempotent HTTP Verbs
      +
        +
      • GET
      • +
      • PUT
      • +
      • DELETE
      • +
      +
      +
      +
    • +
    • +
      Non-Idempotent HTTP Verbs
      +
        +
      • POST
      • +
      +
      +
      +
    • +
    +

    Again, normative. The developer is responsible for ensuring that it is true.

    +
    +
    +

    HTTP Requests: URI

    +

    GET /path/to/index.html HTTP/1.1

    + +
    +
    +

    HTTP Responses

    +

    In both HTTP 1.0 and 1.1, a proper response consists of an intial line, +followed by optional headers, a single blank line, and then optionally a +response body:

    +
    +HTTP/1.1 200 OK
    +Content-Type: text/plain
    +<CRLF>
    +this is a pretty minimal response
    +
    +
    +
    +

    HTTP Response Codes

    +

    HTTP/1.1 200 OK

    +

    All HTTP responses must include a response code indicating the outcome of +the request.

    +
      +
    • 1xx (HTTP 1.1 only) - Informational message
    • +
    • 2xx - Success of some kind
    • +
    • 3xx - Redirection of some kind
    • +
    • 4xx - Client Error of some kind
    • +
    • 5xx - Server Error of some kind
    • +
    +

    The text bit makes the code more human-readable

    +
    +
    +

    Common Response Codes

    +

    There are certain HTTP response codes you are likely to see (and use) most +often:

    +
      +
    • 200 OK - Everything is good
    • +
    • 301 Moved Permanently - You should update your link
    • +
    • 304 Not Modified - You should load this from cache
    • +
    • 404 Not Found - You've asked for something that doesn't exist
    • +
    • 500 Internal Server Error - Something bad happened
    • +
    +

    Do not be afraid to use other, less common codes in building good RESTful +apps. There are a lot of them for a reason. See +http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

    +
    +
    +

    HTTP Headers

    +

    Both requests and responses can contain headers of the form Name: Value

    +
      +
    • HTTP 1.0 has 16, 1.1 has 46
    • +
    • Any number of spaces or tabs may separate the name from the value
    • +
    • If a header line starts with spaces or tabs, it is considered part of the +value for the previous header
    • +
    • Header names are not case-sensitive, but values may be
    • +
    +

    read more about HTTP headers: http://www.cs.tut.fi/~jkorpela/http.html

    +
    +
    +

    Content-Type Header

    +

    A very common header used in HTTP responses is Content-Type. It tells the +client what to expect.

    +
      +
    • uses mime-type (Multi-purpose Internet Mail Extensions)
    • +
    • foo.jpeg - Content-Type: image/jpeg
    • +
    • foo.png - Content-Type: image/png
    • +
    • bar.txt - Content-Type: text/plain
    • +
    • baz.html - Content-Type: text/html
    • +
    +

    There are many mime-type identifiers: +http://www.webmaster-toolkit.com/mime-types.shtml

    +
    +
    +

    HTTP Debugging

    +

    When working on applications, it's nice to be able to see all this going back +and forth. There are several apps that can help with this:

    + +

    These tools can show you both request and response, headers and all. Very +useful.

    +
    +
    +

    Lab Time

    +

    For this lab, we'll be building a basic HTTP server.

    +
      +
    • update your fork of the class repository by pulling from the upstream remote

      +
    • +
    • find the folder assignments/week02/lab and open echo_server.py

      +
      +
        +
      • this is a canonical example of what we built last week
      • +
      +
      +
    • +
    • We'll move in steps to turn this into an HTTP server.

      +
    • +
    +
    +
    +

    Lab Time - Step 1

    +

    First, echo an HTTP request

    +
      +
    • Run echo_server.py in a terminal
    • +
    • Point your browser at http://localhost:5000, what do you get back?
    • +
    • Save the script as http_serve1.py, then edit it to make it return the +HTML you find in tiny_html.html
    • +
    • What does this look like?
    • +
    +
    +
    +

    Lab Time - Step 2

    +

    Return a proper HTTP response:

    +
      +
    • Save the file as http_serve2.py
    • +
    • Add a new method that takes a string 'body' and returns a proper 200 OK +HTTP response. Call the method ok_response.
    • +
    • Bonus Points: add a GMT Date: header in the proper format (RFC-1123). +hint: see email.utils.formatdate in the python standard library
    • +
    • How does the returned HTML look now?
    • +
    +
    +
    +

    Lab Time - Step 3

    +

    Parse an incoming request to get the URI:

    +
      +
    • Save the file as http_serve3.py
    • +
    • Add a new method called parse_request that takes a request and returns a +URI. Have the server print the URI to the console (rudimentary logging).
    • +
    • Make sure that the method validates that the incoming request is HTTP and +that the verb is GET. If either is not true, it should raise a +ValueError
    • +
    • Bonus points: add an client_error_response method that returns an +appropriate HTTP code if the validation from parse_request fails. What +is the right response code?
    • +
    +
    +
    +

    Lab Time - Step 4

    +

    Serve directory listings:

    +
      +
    • Save the file as http_serve4.py * Add a method called resolve_uri +which takes as an argument the URI returned from our previous step and +returns an HTTP response. The method should start from a given directory +('web') and check the URI:

      +
      +
        +
      • If the URI names a directory, return the content listing as a 200 OK
      • +
      • If the URI names a file, raise a NotImplementedError (coming soon)
      • +
      • If the URI does not exist, raise a ValueError
      • +
      +
      +
    • +
    • Bonus points: add a notfound_response method that returns a proper 404 +Not Found response to the client. Use it when appropriate. (where is +that?)

      +
    • +
    +
    +
    +

    Lab Time - Step 5

    +

    Serve different types of files:

    +
      +
    • Save the file as http_serve5.py
    • +
    • Update the resolve_uri method. If the URI names a file, return it as the +body of a 200 OK response.
    • +
    • You'll need a way to return the approprate Content-Type: header.
    • +
    • Support at least .html, .txt, .jpeg, and .png files
    • +
    • Try it out.
    • +
    +

    You've now got a reasonably functional HTTP web server. Congratulations!

    +
    +
    +

    Assignment

    +

    Using what you've learned this week, take your new webserver to the next +level. Accomplish as many of the following as you can:

    +
      +
    • If you were unable to complete the first five steps in class, circle back +and finish them
    • +
    • Complete the 'Bonus point' parts from the first five steps, if you haven't +already done so
    • +
    • Format your directory listing as HTML
    • +
    • In the HTML directory listing, make the files clickable links
    • +
    • Add a new, dynamic endpoint. If the URI /time-page is requested, return an +HTML page with the current time displayed.
    • +
    +
    +
    +

    Submitting the Assignment

    +
      +
    • Copy your final html server into the assignments/week02/athome +directory in your fork of the repository.
    • +
    • Copy the assignments/week02/lab/web directory into +assignments/week02/at_home
    • +
    • Make a new plain-text file at the top level of the web directory. Tell me +what you did in it.
    • +
    • Make a new pull request for the week02 assignments.
    • +
    • I should be able to run the server on my local machine, open your plain text +file in my browser, and evaluate your work from there.
    • +
    • For bonus points, set the server running on your VM, with the web home +directory. I should be able to load http://yourserver.bluboxgrid.com:50000 +in my web browser and evaluate your results.
    • +
    +
    +
    +

    Lightning Talks

    +

    Ready, Steady, GO!

    +
    From e79ac87f4263199dc5724576b4be90f3bef45133 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 14 Jan 2013 22:11:29 -0800 Subject: [PATCH 019/114] Update reading urls for week 3 complete main body of week 3 slides --- outline.html | 2 +- presentations/week03.html | 1057 ++++++++++++++++++++++++++++++++++++- 2 files changed, 1055 insertions(+), 4 deletions(-) diff --git a/outline.html b/outline.html index 340e5393..22c1b87c 100644 --- a/outline.html +++ b/outline.html @@ -202,7 +202,7 @@

    Reading
  • json overview and spec (short)
  • How I Explained REST to My Wife (Tomayko 2004)
  • A Brief Introduction to REST (Tilkov 2007)
  • -
  • Why HATEOAS - *a simple case study on the often ignored REST constraint*
  • +
  • Why HATEOAS - *a simple case study on the often ignored REST constraint*
  • diff --git a/presentations/week03.html b/presentations/week03.html index 6e73c2cd..d31a3a94 100644 --- a/presentations/week03.html +++ b/presentations/week03.html @@ -5,7 +5,7 @@ -This is Week 3 +Internet Programming with Python @@ -29,15 +29,1066 @@
    -

    This is Week 3

    +

    Internet Programming with Python

    +img/granny_mashup.png +

    Week 3: Scraping, APIs and Mashups

    +

    Wherein we learn how to make order from the chaos of the wild internet.

    +

    image: Paul Downey http://www.flickr.com/photos/psd/492139935/ - CC-BY

    + +
    +
    +

    But First

    +

    Review from the Assignment

    +
    +
    +

    And Second

    +

    Questions from the Reading?

    +
    +
    +

    And Now...

    +

    HTML

    +
    +
    +

    Ideally

    +
    +<!DOCTYPE html>
    +<html>
    +  <head>
    +  </head>
    +  <body>
    +    <p>A nice clean paragraph</p>
    +    <p>And another nice clean paragraph</p>
    +  </body>
    +</html>
    +
    +
    +
    +

    Yeah, Right

    +

    Is it ever actually like that?

    +
    +
    +

    HTML... IRL

    +
    +<html>
    + <form>
    +  <table>
    +   <td><input name="input1">Row 1 cell 1
    +   <tr><td>Row 2 cell 1
    +  </form>
    +  <td>Row 2 cell 2<br>This</br> sure is a long cell
    + </body>
    +</html>
    +
    +
    +
    +

    FFFFFFFFFUUUUUUUUUUUUU

    +img/scream.jpg +

    Photo by Matthew via Flickr (http://www.flickr.com/photos/purplemattfish/3918004964/) - CC-BY-NC-ND

    +
    +
    +

    The Law of The Internet

    +

    "Be strict in what you send and tolerant in what you receive"

    +
    +
    +

    But What If...

    +

    You have some information you want to get from online.

    +

    You really want to organize this information in some interesting way

    +

    You really really don't want to spend the next three weeks cutting and +pasting

    +
    +
    +

    Web Scraping

    +

    Let Python do the job for you. Fire up your interpreter!

    +
    +
    +

    First Steps

    +

    First, you need to get a web page. Let's use this one (a list of recent +blog posts about Django and PostgreSQL):

    +

    http://crisewing.com/cover/++contextportlets++ContentWellPortlets.BelowPortletManager3/open-source-posts/full_feed

    +
    +
    +

    First Steps - Get Source

    +

    Let's start by grabbing the page we want. We use the Python Standard Library +urllib2 to handle this task (note that we've shortened the URL):

    +
    +>>> import urllib2
    +>>> page = urllib2.urlopen('http://tinyurl.com/osfeeds')
    +>>> page
    +<addinfourl at 4302170088 whose fp = <socket._fileobject object at 0x1005c6410>>
    +>>> page.code
    +200
    +>>> page.headers['content-type']
    +'text/html;charset=utf-8'
    +>>> page.headers['content-length']
    +'373447'
    +
    +
    +
    +

    First Steps - Read Source

    +

    We can take the page we just opened, and read it. The object is file-like, so +it supports standard file read operations:

    +
    +>>> html = page.read()
    +>>> len(page)
    +373447
    +>>> print page
    +
    +<!DOCTYPE html PUBLIC
    +  "-//W3C//DTD XHTML 1.0 Transitional//EN"
    +  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    +
    +<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
    +...
    +</html>
    +
    +
    +
    +

    Now What?

    +

    Goal: Sort the blog post titles and URLs into two lists, one for Django +and one for PostgreSQL

    +

    What tools do we have to do this job?

    +
      +
    • String Methods?
    • +
    • Regular Expressions?
    • +
    +
    +
    +

    Brief Interlude

    +

    "Some people, when confronted with a problem, think 'I know, I'ʹll use regular +expressions.' Now they have two problems."

    +
    + +
    +

    But Really

    +

    So what do we use?

    +

    Special-purpose Parsers

    +

    Enter BeautifulSoup

    +
    +
    +

    Step Back for a Moment

    +

    This is going to take some preparation, so let's set aside our html page in a +way that will allow us to come back to it:

    +
    +>>> fh = open('bloglist.html', 'w')
    +>>> fh.write(html)
    +>>> fh.close()
    +
    +

    Now the page is saved to a file in your current working directory.

    +

    Quit your interpreter

    +
    +
    +

    Virtualenv

    +

    We are about to install a non-standard library.

    +
      +
    • As a real-world developer you need to do this a lot
    • +
    • As a web developer you need to install different versions of the same +library
    • +
    • For every non-standard library installed into a System Python, the gods kill +a kitten
    • +
    • Use Virtualenv...
    • +
    • Always
    • +
    +
    +
    +

    Getting Virtualenv

    +

    Three options for installing virtualenv (this is the exception to the above +rule):

    +
      +
    • pip install virtualenv
    • +
    • easy_install virtualenv
    • +
    +

    These both demand that you first install something else. If you haven't +already got pip or easy_install try this way instead:

    +
      +
    • download https://raw.github.com/pypa/virtualenv/master/virtualenv.py
    • +
    • remember where it goes. You'll need it
    • +
    +
    +
    +

    Creating a Virtualenv

    +

    Creating a new virtualenv is very very simple:

    +
    +$ python virtualenv.py [options] <ENV>
    +
    +

    <ENV> is just the name of the environment you want to create. It's arbitrary. +Let's make one for our BeautifulSoup install:

    +
    +$ python virtualanv.py --distribute soupenv
    +New python executable in fooenv/bin/python2.6
    +Also creating executable in fooenv/bin/python
    +Installing distribute........................
    +.............................................
    +...done.
    +
    +
    +
    +

    What Happened?

    +

    When you ran that file, a couple of things took place:

    +
      +
    • A new directory with your requested name was created
    • +
    • A new Python executable was created in <ENV>/bin
    • +
    • The new Python was cloned from the Python used to run the file
    • +
    • The new Python was isolated from any libraries installed in the old Python
    • +
    • Distribute (a newer, better setuptools) was installed so you have easy_install
    • +
    • Pip was installed so you have pip
    • +
    +

    Cool, eh? Learn more at http://www.virtualenv.org

    +
    +
    +

    Using Virtualenv

    +

    To install new libraries into a virtualenv, the easiest process is to first +activate the env:

    +
    +$ source soupenv/bin/activate
    +(soupenv)$ which python
    +/path/to/soupenv/bin/python
    +
    +

    Or, on Windows:

    +
    +> \path\to\soupenv\Scripts\activate
    +
    +

    If you use Powershell, read the note here: +http://www.virtualenv.org/en/latest/#activate-script

    +
    +
    +

    Install BeautifulSoup

    +

    Once the virtualenv is activated, you can simply use pip or easy_install to +install the libraries you want:

    +
    +(soupenv)$ pip install beautifulsoup4
    +
    +
    +
    +

    Choose a Parsing Engine

    +

    BeautifulSoup is built to use the Python HTMLParser.

    +
      +
    • Batteries Included. It's already there
    • +
    • It kinda sucks, especially before Python 2.7.3
    • +
    +

    BeautifulSoup also supports using other parsers. Let's install one. There are +two decent choices: lxml and html5lib.

    +

    lxml is better, but harder to install. Let's use html5lib today.

    +
    +
    +

    Install a Parsing Engine

    +

    Again, this is pretty simple:

    +
    +(soupenv)$ pip install html5lib
    +
    +

    Once that is installed, BeautifulSoup will choose it instead of the standard +library module.

    +
    +
    +

    Parsing HTML

    +

    Okay, we're all set here. Let's load up our HTML page and get ready to scrape +it:

    +
    +(soupenv)$ python
    +>>> fh = open('bloglist.html', 'r')
    +>>> from bs4 import BeautifulSoup
    +>>> parsed = BeautifulSoup(fh)
    +>>>
    +
    +

    And that's it. The document is now parsed and ready to scrape.

    +
    +
    +

    Scraping HTML

    +

    The next step is to figure out what it is from the HTML page that you want to +scrape.

    +

    Goal: Sort the blog post titles and URLs into two lists, one for Django +and one for PostgreSQL

    +

    What tools do we have to allow us to look at the source and find our targets?

    +
    +
    +

    HTML Inspection Demo

    +

    We can use the developer tools that come in Safari, Chrome and IE, or use the +Firebug extension to FireFox.

    +

    So, we need to find <div> elements with the class feedEntry.

    +
    +
    +

    Searching Your Soup

    +

    BeautifulSoup has parsed our document

    +
      +
    • A parsed document acts like a tag
    • +
    • A tag can be searched using the find_all method
    • +
    • The find_all method searches the descendents of the tag on which it is +called.
    • +
    • The find_all method takes arguments which act as filters on the search +results
    • +
    +
    +
    like so:
    +

    +
    tag.find_all(name, attrs, recursive, text, limit, **kwargs)
    +
    +
    +
    +

    Searching by CSS Class

    +

    The items we are looking for are div tags which have the CSS class +feedEntry:

    +
    +>>> entries = parsed.find_all('div', class_='feedEntry')
    +>>> len(entries)
    +106
    +
    +
    +
    If you pass a simple string as the sole value to the attrs argument, that +string is treated as a CSS class:
    +

    +
    parsed.find_all('div', 'feedEntry')
    +
    +
    +
    +

    Find a Single Match

    +

    What bits of an entry have the details we need to meet our goals?

    +
      +
    • A tag also has a find method which returns only the first match
    • +
    • tag.find(name, attrs, recursive, text, **kwargs)
    • +
    • In each entry, the first <a> has title and URL
    • +
    • In each entry, the first <p> with the class discreet has the source +of the feed (Planet Django or Planet PostgreSQL)
    • +
    +
    +
    +

    Testing it out

    +
    +>>> for e in entries:
    +...     anchor = e.find('a')
    +...     paragraph = e.find('p', 'discreet')
    +...     title = anchor.text.strip()
    +...     url = anchor.attrs['href']
    +...     print title
    +...     print url
    +...     try:
    +...         print paragraph.text.strip()
    +...     except AttributeError:
    +...         print 'Uncategorized'
    +...     print
    +...
    +>>>
    +
    +
    +
    +

    Lab 1 - 20 mins

    +
      +
    • Write a function, take a BeautifulSoup object as the sole argument
    • +
    • find all the 'feedEntry' divs in the page
    • +
    • Get the title and url of the entry and put them in a dictionary
    • +
    • Categorize an entry as pgsql, django or other
    • +
    • It should return three lists of categorized entries
    • +
    +
    +
    Call it like so:
    +

    +
    +
    pgsql, django, other = my_function(parsed_page)
    +
    +
    +

    GO

    +
    +
    +

    Another Approach

    +

    Scraping web pages is inherently brittle

    +

    The owner of the website updates their layout, your code breaks

    +

    But there is another way to get information from the web in a more normalized +fashion

    +

    Web Services

    +
    +
    +

    Web Services

    +

    "a software system designed to support interoperable machine-to-machine +interaction over a network" - W3C

    +
      +
    • provides a defined set of calls
    • +
    • returns structured data
    • +
    +
    +
    +

    Classifying Web Services

    +

    Web services can be classified in a couple of ways:

    +
      +
    • By how they are implemented (XML-RPC, SOAP, REST)
    • +
    • By what they return (XML, JSON)
    • +
    +
    +
    +

    Early Web Services

    +

    RSS is one of the earliest forms of Web Services

    + +

    A single web-based endpoint provides a dynamically updated listing of +content

    +

    Implemented in pure HTTP. Returns XML

    +

    Atom is a competing, but similar standard

    +
    +
    +

    RSS Document

    +
    +<?xml version="1.0" encoding="UTF-8" ?>
    +<rss version="2.0">
    +<channel>
    +  <title>RSS Title</title>
    +  <description>This is an example of an RSS feed</description>
    +  <link>http://www.someexamplerssdomain.com/main.html</link>
    +  <lastBuildDate>Mon, 06 Sep 2010 00:01:00 +0000 </lastBuildDate>
    +  <pubDate>Mon, 06 Sep 2009 16:45:00 +0000 </pubDate>
    +  <ttl>1800</ttl>
    +
    +  <item>
    +    <title>Example entry</title>
    +    <description>Here is some text containing an interesting description.</description>
    +    <link>http://www.wikipedia.org/</link>
    +    <guid>unique string per item</guid>
    +    <pubDate>Mon, 06 Sep 2009 16:45:00 +0000 </pubDate>
    +  </item>
    +  ...
    +</channel>
    +</rss>
    +
    +
    +
    +

    XML-RPC

    +

    If we can provide a single endpoint that returns a single data set (RSS), can +we also allow calling procedures at an endpoint?

    +

    We can! Enter XML-RPC

    +
      +
    • Provides a set of defined procedures which can take arguments
    • +
    • Calls are made via HTTP GET, by passing an XML document
    • +
    • Returns from a call are sent to the client in XML
    • +
    +

    Easier to demonstrate than explain

    +
    +
    +

    XML-RPC Example - Server

    +

    xmlrpc_server.py:

    +
    +from SimpleXMLRPCServer import SimpleXMLRPCServer
    +
    +server = SimpleXMLRPCServer(('localhost', 50000))
    +
    +def multiply(a, b):
    +    return a * b
    +server.register_function(multiply)
    +
    +try:
    +    print "Use Ctrl-C to Exit"
    +    server.serve_forever()
    +except KeyboardInterrupt:
    +    print "Exiting"
    +
    +
    +
    +

    XML-RPC Example - Client

    +

    We can run a client from a terminal. First, open one terminal and run the +xmlrpc_server.py script:

    +
    +$ python xmlrcp_server.py
    +

    Then, open another terminal and start up python:

    +
    +>>> import xmlrpclib
    +>>> proxy = xmlrpclib.ServerProxy('http://localhost:50000', verbose=True)
    +>>> proxy.multiply(3, 24)
    +...
    +72
    +
    +
    +
    +

    XML-RPC Request

    +

    verbose=True allows us to see the request we sent:

    +
    +POST /RPC2 HTTP/1.0
    +Host: localhost:50000
    +User-Agent: xmlrpclib.py/1.0.1 (by www.pythonware.com)
    +Content-Type: text/xml
    +Content-Length: 192
    +
    +<?xml version='1.0'?>
    +<methodCall>
    + <methodName>multiply</methodName>
    + <params>
    +  <param>
    +   <value><int>3</int></value>
    +  </param>
    +  <param>
    +   <value><int>24</int></value>
    +  </param>
    + </params>
    +</methodCall>
    +
    +
    +
    +

    XML-RPC Response

    +

    and we can see the response, too:

    +
    +HTTP/1.0 200 OK
    +Server: BaseHTTP/0.3 Python/2.6.1
    +Date: Sun, 13 Jan 2013 03:38:00 GMT
    +Content-type: text/xml
    +Content-length: 121
    +
    +<?xml version='1.0'?>
    +<methodResponse>
    + <params>
    +  <param>
    +   <value><int>72</int></value>
    +  </param>
    + </params>
    +</methodResponse>
    +
    +
    +
    +

    More XML-RPC

    +

    Register an entire Python class as a service, exposing class methods:

    +
    +server.register_instance(MyClass())
    +
    +

    Keep an instance method private:

    +
    +class MyServiceClass(object):
    +    ...
    +    def public_method(self, arg1, arg2):
    +        """this method is public"""
    +        pass
    +
    +    def _private_method(self):
    +        """this method is private because it starts with '_'
    +        """
    +        pass
    +
    +
    +
    +

    XML-RPC Introspection

    +

    First, implement required methods on your service class:

    +
    +from SimpleXMLRPCServer import list_public_methods
    +
    +class MyServiceClass(object):
    +    ...
    +    def _listMethods(self):
    +        """custom logic for presenting method names to users
    +
    +        list_public_methods is a convenience function from the Python
    +        library, but you can make your own logic if you wish.
    +        """
    +        return list_public_methods(self)
    +
    +    def _methodHelp(self, method):
    +        """provide help text for an individual method
    +        """
    +        f = getattr(self, method)
    +        return f.__doc__
    +
    +
    +
    +

    XML-RPC Instrospection

    +

    Then enable introspection via the server instance:

    +
    +server.register_introspection_functions()
    +
    +

    After this, a client proxy can call pre-defined methods to learn about what +your service offers

    +
    +>>> for name in proxy.system.listMethods():
    +...     help = proxy.system.methodHelp(name)
    +...     print name
    +...     print "\t%s" % help
    +...
    +public_method
    +    this method is public
    +
    +
    +
    +

    Beyond XML-RPC

    +
      +
    • XML-RPC allows introspection
    • +
    • XML-RPC forces you to introspect to get information
    • +
    • Wouldn't it be nice to get that automatically?
    • +
    • XML-RPC provides data types
    • +
    • XML-RPC provides only certain data types
    • +
    • Wouldn't it be nice to have an extensible system for types?
    • +
    • XML-RPC allows calling methods with parameters
    • +
    • XML-RPC only allows calling methods, nothing else
    • +
    • wouldn't it be nice to have contextual data as well?
    • +
    +

    Enter SOAP: Simple Object Access Protocol

    +
    +
    +

    SOAP

    +

    SOAP extends XML-RPC in a couple of useful ways:

    +
      +
    • It uses Web Services Description Language (WSDL) to provide meta-data about +an entire service in a machine-readable format (Automatic introspection)
    • +
    • It establishes a method for extending available data types using XML +namespaces
    • +
    • It provides a wrapper around method calls called the envelope, which +allows the inclusion of a header with system meta-data that can be used +by the application
    • +
    +
    +
    +

    SOAP in Python

    +

    There is no standard library module that supports SOAP directly.

    +
      +
    • The best-known and best-supported module available is Suds
    • +
    • The homepage is https://fedorahosted.org/suds/
    • +
    • It can be installed using easy_install or pip install
    • +
    +
    +
    +

    Install Suds

    +
      +
    • Quit your python interpreter if you have it running.
    • +
    • If you see (soupenv) at your command line prompt, cool.
    • +
    • If you do not, type source /path/to/soupenv/bin/activate
    • +
    • Windows folks: > \path\to\soupenv\Scripts\activate
    • +
    • Once activated: pip install suds
    • +
    +
    +
    +

    Creating a Suds Client

    +

    Suds allows us to create a SOAP client object. SOAP uses WSDL to define a +service. All we need to do to set this up in python is load the URL of the +WSDL for the service we want to use:

    +
    +(soupenv)$ python
    +>>> from suds.client import Client
    +>>> geo_client = Client('https://geoservices.tamu.edu/Services/Geocode/WebService/GeocoderService_V03_01.asmx?wsdl')
    +>>> geo_client
    +<suds.client.Client object at 0x10041fc10>
    +
    +
    +
    +

    Peeking at the Service

    +

    Suds allows us to visually scan the service. Simply print the client object to +see what the service has to offer:

    +
    +>>> print geo_client
    +
    +Suds ( https://fedorahosted.org/suds/ )  version: 0.4 GA  build: R699-20100913
    +
    +Service ( GeocoderService_V03_01 ) tns="https://geoservices.tamu.edu/"
    +   Prefixes (1)
    +      ns0 = "https://geoservices.tamu.edu/"
    +   Ports (2):
    +      (GeocoderService_V03_01Soap)
    +      Methods (4):
    +         ...
    +      Types (12):
    +         ...
    +
    +
    +
    +

    Debugging Suds

    +

    Suds uses python logging to deal with debug information, so if you want to see +what's going on under the hood, you configure it via the Python logging +module:

    +
    +>>> import logging
    +>>> logging.basicConfig(level=logging.INFO)
    +>>> logging.getLogger('suds.client').setLevel(logging.DEBUG)
    +
    +

    This will allow us to see the messages sent and received by our client.

    +
    +
    +

    Client Options

    +

    SOAP Servers can provide more than one service and each service might have +more than one port. Suds provides two ways to configure which service and +port you wish to use.

    +

    Via subscription:

    +
    +client.service['<service>']['<port>'].method(args)
    +
    +

    Or the way we will do it, via configuration:

    +
    +geo_client.set_options(service='GeocoderService_V03_01', ↩
    +                       port='GeocoderService_V03_01Soap')
    +
    +
    +
    +

    Providing Arguments

    +

    Arguments to a method are set up as a dictionary. Although some may not be +required according to api documentation, it is safest to provide them all:

    +
    +>>> apiKey = '<fill this in>'
    +>>> args = {'apiKey': apiKey, }
    +>>> args['streetAddress'] = '1325 4th Avenue'
    +>>> args['city'] = 'Seattle'
    +>>> args['state'] = 'WA'
    +>>> args['zip'] = '98101'
    +>>> args['version'] = 3.01
    +>>> args['shouldReturnReferenceGeometry'] = True
    +>>> args['shouldNotStoreTransactionDetails'] = True
    +>>> args['shouldCalculateCensus'] = False
    +>>> args['censusYear'] = "TwoThousandTen"
    +
    +
    +
    +

    Making the Call

    +

    Finally, once we've got the arguments all ready we can go ahead and make a call +to the server:

    +
    +>>> res = geo_client.service.GeocodeAddressNonParsed(**args)
    +DEBUG:suds.client:sending to
    +(https://geoservices.tamu.edu/Services/Geocode/WebService/GeocoderService_V03_01.asmx)
    +message:
    +...
    +
    +
    +
    +

    What does it look like?

    +
    +<?xml version="1.0" encoding="UTF-8"?>
    +<SOAP-ENV:Envelope xmlns:ns0="https://geoservices.tamu.edu/" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    +   <SOAP-ENV:Header/>
    +   <ns1:Body>
    +      <ns0:GeocodeAddressNonParsed>
    +         <ns0:streetAddress>1325 4th Avenue</ns0:streetAddress>
    +         <ns0:city>Seattle</ns0:city>
    +         <ns0:state>WA</ns0:state>
    +         <ns0:zip>98101</ns0:zip>
    +         <ns0:apiKey>a450a9181f85498598e21f8a39440e9a</ns0:apiKey>
    +         <ns0:version>3.01</ns0:version>
    +         <ns0:shouldCalculateCensus>false</ns0:shouldCalculateCensus>
    +         <ns0:censusYear>TwoThousandTen</ns0:censusYear>
    +         <ns0:shouldReturnReferenceGeometry>true</ns0:shouldReturnReferenceGeometry>
    +         <ns0:shouldNotStoreTransactionDetails>true</ns0:shouldNotStoreTransactionDetails>
    +      </ns0:GeocodeAddressNonParsed>
    +   </ns1:Body>
    +</SOAP-ENV:Envelope>
    +
    +
    +
    +

    And the Reply?

    +
    +<?xml version="1.0" encoding="utf-8"?>
    +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    +  <soap:Body>
    +    <GeocodeAddressNonParsedResponse xmlns="https://geoservices.tamu.edu/">
    +      <GeocodeAddressNonParsedResult>
    +        <TransactionId>6ef9c110-994c-4142-93d5-a55173526b64</TransactionId>
    +        <Latitude>47.6084110119244</Latitude>
    +        <Longitude>-122.3351592971042</Longitude>
    +        <Version>3.01</Version>
    +        <Quality>QUALITY_ADDRESS_RANGE_INTERPOLATION</Quality>
    +        <MatchedLocationType>LOCATION_TYPE_STREET_ADDRESS</MatchedLocationType>
    +        <MatchType>Exact</MatchType>
    +        <FeatureMatchingResultCount>1</FeatureMatchingResultCount>
    +        ...
    +        <FArea>2910.69420560356</FArea>
    +        <FAreaType>Meters</FAreaType>
    +        <FGeometrySRID>4269</FGeometrySRID>
    +        <FGeometry>&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;LineString xmlns="http://www.opengis.net/gml"&gt;&lt;posList&gt;-122.334868 47.608226 -122.335777 47.609219&lt;/posList&gt;&lt;/LineString&gt;</FGeometry>
    +        ...
    +      </GeocodeAddressNonParsedResult>
    +    </GeocodeAddressNonParsedResponse>
    +  </soap:Body>
    +</soap:Envelope>
    +
    +
    +
    +

    And What of Our Result?

    +

    The WSDL we started with should provide type definitions for both data we send +and results we receive. The res symbol we bound to our result earlier +should now be an instance of a GeocodeAddressNonParsedResult. Lets see what +that looks like:

    +
    +>>> type(res)
    +<type 'instance'>
    +>>> dir(res)
    +['CensusTimeTaken', 'CensusYear', 'ErrorMessage', 'FArea',
    + 'FAreaType', 'FCity', 'FCounty', 'FCountySubRegion',
    + ...]
    +>>> res.Latitude, res.Longitude
    +(47.608411011924403, -122.3351592971042)
    +
    +
    +
    +

    A Word on Debugging

    +

    blerg

    +
      +
    • Messages sent to the server are long XML strings
    • +
    • Error messages are generally based on parsing errors in XML
    • +
    • These error messages can be quite cryptic:
    • +
    • "There is an error in XML document (1, 572). ---> The string '' is not a +valid Boolean value.'
    • +
    +

    Try this

    +
    +>>> geo_client.last_sent().str().replace(" ","")[:573]
    +'...</ns0:version>\n<ns0:shouldCalculateCensus/>'
    +
    +
    +
    +

    Afterword

    +

    SOAP (and XML-RPC) have some problems:

    +
      +
    • XML is pretty damned inefficient as a data transfer medium
    • +
    • Why should I need to know method names?
    • +
    • If I can discover method names at all, I have to read a WSDL to do it?
    • +
    +

    Suds is the best we have, and it hasn't been updated since Sept. 2010.

    +
    +
    +

    If Not XML, Then What?

    +

    JSON

    +
    +
    +

    JSON

    +

    JavaScript Object Notation:

    +
      +
    • a lightweight data-interchange format
    • +
    • easy for humans to read and write
    • +
    • easy for machines to parse and generate
    • +
    +

    Based on Two Structures:

    +
      +
    • object: { string: value, ...}
    • +
    • array: [value, value, ]
    • +
    +

    pythonic, no?

    +
    +
    +

    JSON Data Types

    +

    JSON provides a few basic data types:

    +
      +
    • string: unicode, anything but '"', '' and control chars
    • +
    • number: any number, but json does not use octal or hexidecimal
    • +
    • object, array (we've seen these above)
    • +
    • true
    • +
    • false
    • +
    • null
    • +
    +

    No date type? OMGWTF??!!1!1

    +
    +
    +

    Dates in JSON

    +

    Option 1 - Unix Epoch Time (number):

    +
    +>>> import time
    +>>> time.time()
    +1358212616.7691269
    +
    +

    Option 2 - ISO 8661 (string)

    +
    +>>> import datetime
    +>>> datetime.datetime.now().isoformat()
    +'2013-01-14T17:18:10.727240'
    +
    +
    +
    +

    JSON in Python

    +

    You can encode python to json, and decode json back to python:

    +
    +>>> import json
    +>>> array = [1,2,3]
    +>>> json.dumps(array)
    +>>> dict_ = {'foo': [1,2,3], 'bar': u'my resumé', 'baz': True}
    +>>> json.dumps(dict_)
    +'{"baz": true, "foo": [1, 2, 3], "bar": "my resum\\u00e9"}'
    +>>> incoming = _
    +>>> new = json.loads(incoming)
    +>>> new == dict_
    +True
    +
    +

    Customizing the encoder or decoder class allows for specialized serializations

    +
    +
    +

    JSON in Python

    +

    the json module also supports reading and writing to file-like objects via +json.dump(fp) and json.load(fp) (note the missing 's')

    +

    Remember duck-typing. Anything with a .write and a .read method is +file-like

    +

    Have we seen any network-related classes recently that behave that way?

    +
    +
    +

    What about WSDL?

    +

    SOAP was invented in part to provide completely machine-readable +interoperability.

    +

    Does that really work in real life?

    +

    Hardly ever

    +
    +
    +

    What about WSDL?

    +

    Another reason was to provide extensibility via custom types

    +

    Does that really work in real life?

    +

    Hardly ever

    +
    +
    +

    Why Do All The Work?

    +

    So, if neither of these goals is really achieved by using SOAP, why pay all +the overhead required to use the protocol?

    +

    Enter REST

    +
    +
    +

    REST

    +

    Representational State Transfer

    +
      +
    • Originally described by Roy T. Fielding (did you read it?)
    • +
    • Use HTTP for what it can do
    • +
    • Read more in this book*
    • +
    +

    * Seriously. Buy it and read +(<http://www.crummy.com/writing/RESTful-Web-Services/)

    +
    +
    +

    A Comparison

    +

    The XML-RCP/SOAP way:

    +
      +
    • POST /getComment HTTP/1.1
    • +
    • POST /getComments HTTP/1.1
    • +
    • POST /addComment HTTP/1.1
    • +
    • POST /editComment HTTP/1.1
    • +
    • POST /deleteComment HTTP/1.1
    • +
    +

    The RESTful way:

    +
      +
    • GET /comment/<id> HTTP/1.1
    • +
    • GET /comment HTTP/1.1
    • +
    • POST /comment HTTP/1.1
    • +
    • PUT /comment/<id> HTTP/1.1
    • +
    • DELETE /comment/<id> HTTP/1.1
    • +
    +
    +
    +

    ROA

    +

    This is Resource Oriented Architecture

    +

    The URL represents the resource we are working with

    +

    The HTTP Verb represents the action to be taken

    +

    The HTTP Code returned tells us the result (whether success or failure)

    +
    +
    +

    HTTP Codes Revisited

    +

    POST /comment HTTP/1.1 (creating a new comment):

    +
      +
    • Success: HTTP/1.1 201 Created
    • +
    • Failure (unauthorized): HTTP/1.1 401 Unauthorized
    • +
    • Failure (NotImplemented): HTTP/1.1 405 Not Allowed
    • +
    • Failure (ValueError): HTTP/1.1 406 Not Acceptable
    • +
    +

    PUT /comment/<id> HTTP/1.1 (edit comment):

    +
      +
    • Success: HTTP/1.1 200 OK
    • +
    • Failure: HTTP/1.1 409 Conflict
    • +
    +

    DELETE /comment/<id> HTTP/1.1 (delete comment):

    +
      +
    • Success: HTTP/1.1 204 No Content
    • +
    +
    +
    +

    HTTP Is Stateless

    +

    No individual request may be assumed to know anything about any other request.

    +

    All the required information for to represent the possible actions to take +should be present in either the request or the response.

    +

    Thus: HATEOAS

    +
    +
    +

    HATEOAS

    +

    Hypermedia As The Engine Of Application State

    +
    +
    +

    Applications are State Engines

    +

    A State Engine is a machine that provides states for a resource to be in and +transitions to move resources between states. A Restful api should:

    +
      +
    • provide information about the current state of a resource
    • +
    • provide information about available transitions for that resource (URIs)
    • +
    • provide all this in each HTTP response
    • +
    +
    +
    +

    Playing With REST

    +

    Let's take a moment to play with REST.

    +

    We tried geocoding with SOAP. Let's repeat the exercise with a REST/JSON API

    +

    Back to your interpreter

    +
    +
    +

    Geocoding with Google APIs

    +

    https://developers.google.com/maps/documentation/geocoding

    +
    +>>> import urllib
    +>>> import urllib2
    +>>> from pprint import pprint
    +>>> base = 'http://maps.googleapis.com/maps/api/geocode/json'
    +>>> addr = '1325 4th Ave, Seattle, WA 98101'
    +>>> data = {'address': addr, 'sensor': False }
    +>>> query = urllib.urlencode(data)
    +>>> res = urllib2.urlopen('?'.join([base, query]))
    +>>> response = json.load(res)
    +>>> pprint(response)
    +
    +
    +
    +

    RESTful Job Listings

    +

    https://github.com/mattnull/techsavvyapi

    +
    +>>> base = 'http://api.techsavvy.io/jobs'
    +>>> search = 'python+web'
    +>>> res = urllib2.urlopen('/'.join([base, search]))
    +>>> response = json.load(res)
    +>>> type(response)
    +<type 'dict'>
    +>>> response.keys()
    +[u'count', u'data']
    +>>> response['count']
    +50
    +>>> for post in response['data']:
    +...   for key in sorted(post.keys()):
    +...     print "%s:\n    %s" % (key, post[key])
    +...   print
    +...
    +
    +
    +
    +

    Lab 2 - Mashup

    +

    Some of the job postings from our TechSavvy api returned lat/lon pairs.

    +

    Google provides a reverse address lookup service via the geocoding api +(https://developers.google.com/maps/documentation/geocoding/#ReverseGeocoding)

    +

    Create a list of job postings, with an address for those postings that provide +the needed data

    +

    GO

    +
    +
    +

    Assignment

    +

    Using what you've learned this week, create a more complex mashup of some data +that interests you. Map the locations of the breweries near your house. Chart +a multi-axial graph of the popularity of various cities across several +categories. Visualize the most effective legislators in Congress. You have +interests, the Web has tools. Put them together to make something.

    +
    +
    +

    Submitting the Assignment

    +

    Place the following in the assignments/week03/athome directory and make a +pull request:

    +
    +
    A textual description of your mashup.
    +
    What data sources did you scan, what tools did you use, what is the +outcome you wanted to create?
    +
    +
    +
    Your source code.
    +
    Give me an executable python script that I can run to get output.
    +
    +
    +
    Any instructions I need.
    +
    If I need instructions beyond 'python myscript.py' to get the right +output, let me know.
    +
    From db01e0bdcff2fb60db2c2b002f7fef82c89b3697 Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 15 Jan 2013 18:33:50 -0800 Subject: [PATCH 020/114] add review of homework slides --- presentations/week02.html | 102 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/presentations/week02.html b/presentations/week02.html index c151c769..cae8584f 100644 --- a/presentations/week02.html +++ b/presentations/week02.html @@ -48,10 +48,112 @@

    Internet Programming with Python

    But First

    Review from the Assignment

    +
    +

    Clean Up After Yourself

    +

    very few of you closed your server socket before exiting the server script:

    +
    +server = socket.socket()
    +# set up
    +try:
    +    while True
    +        # do server stuff
    +except KeyboardInterrupt:
    +    server.close()
    +    sys.exit()
    +
    +
    +
    +

    Use Module Constants

    +

    Constants are provided to help us 'do the right thing' without needing to +remember what the right thing is, exactly. So, instead of:

    +
    +socket.socket(2,1,0)
    +
    +

    use:

    +
    +socket.socket(socket.AF_INET,
    +              socket.SOCK_STREAM,
    +              socket.IPPROTO_IP)
    +
    +
    +
    +

    Interaction Can Be Good

    +
    +try:
    +    # generate two numbers
    +    while True:
    +        try:
    +            number_one = int(raw_input("Enter the first number in the sum: "))
    +            break
    +        except ValueError:
    +            print "Oops!  That was no valid number.  Try again..."
    +
    +    while True:
    +        try:
    +            number_two = int(raw_input("Enter the second number in the sum: "))
    +            break
    +        except ValueError:
    +            print "Oops!  That was no valid number.  Try again..."
    +
    +
    +
    +

    A Tricksy Bug

    +
    +...
    +while 1:
    +    conn, addr = server_socket.accept()
    +    print "Connection Established."
    +    # Keep connection alive.
    +    while 1:
    +        data = conn.recv(4096)
    +        listIn = literal_eval(data)
    +        print 'Values: %s, Type: %s' % (listIn, type(listIn))
    +        conn.sendall('Sum: %s\n' % sum(listIn))
    +
    +conn.close()
    +server_socket.close()
    +
    +
    +
    +

    The Result

    +

    Client: prints correct value

    +

    Server: prints Values: [0, 1, 2, 3], Type: <type 'list'>

    +

    Server:

    +
    +Traceback (most recent call last):
    +  File "training.python_web/assignments/week01/athome/number_server.py", line 34, in <module>
    +    listIn = literal_eval(data)
    +  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/ast.py", line 49, in literal_eval
    +    node_or_string = parse(node_or_string, mode='eval')
    +  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/ast.py", line 37, in parse
    +    return compile(expr, filename, mode, PyCF_ONLY_AST)
    +  File "<unknown>", line 0
    +
    +    ^
    +SyntaxError: unexpected EOF while parsing
    +
    +
    +
    +

    Screen

    +

    For running scripts on a *nix server and keeping them running, even after you +disconnect:

    +
    +$ screen
    +$ start_process
    +<ctrl-a ctrl-d>
    +Screen Detached
    +$ screen -ls # lists your screens
    +$ screen -r connects to only running screen
    +
    +

    And Second

    Questions from the Reading?

    +
    +

    And Third

    +

    Dan Explains Git!!!

    +

    And Now...

    img/protocol_sea.png From 78d776f9921461656efe5bfd3ea3ee73d2220a74 Mon Sep 17 00:00:00 2001 From: cewing Date: Fri, 18 Jan 2013 18:08:05 -0800 Subject: [PATCH 021/114] * updates to outline * colorization for week 3 presentation * start of week 4 presentation * css updates --- _sources/outline.txt | 28 +- outline.html | 7 +- presentations/ui/uw_pce_theme/pretty.css | 70 +++- presentations/week03.html | 422 +++++++++++------------ presentations/week04.html | 231 ++++++++++++- searchindex.js | 2 +- 6 files changed, 535 insertions(+), 225 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index 6451c59e..cbccd589 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -100,6 +100,8 @@ computers. The class assignment will be to extend the simple web server, adding the ability to run dynamic processes and return the results to the client. +`Week 2 Presentation `_ + Reading ******* @@ -153,6 +155,14 @@ clear and concise and have some great code examples. .. _Internet Protocols and Support: http://www.doughellmann.com/PyMOTW/internet_protocols.html +Assignment +********** + +You can read the assignment at + +http://github.com/cewing/training.python_web/blob/master/assignments/week02/athome/assignment.txt + +Please complete the assignment by noon on Sunday, January 13, 2012. Week 3 - APIs and Mashups ------------------------- @@ -166,12 +176,20 @@ at data the original author may not have considered valuable enough to present as consumable. We'll explore the use of tools like BeautifulSoup to help make sense of the -truly horrible HTML that can be found in the wild. We will also look at "Web +truly horrible HTML that is to be found in the wild. We will also look at "Web Services" formats like XMLRPC and REST so we can understand the ways in which -we can find data, or present it ourselves. Finally, we'll look at some "Web +we can find data, or present it ourselves. Finally, we'll look at some "Web Service APIs" to help understand how to read them, and how to use them to get at the data they provide. +In our class lab sessions we will practice scraping a website and using a +documented web service API. + +For our class assignment, students will choose two (or more) sources of +information online and combine them in a mashup. + +`Week 3 Presentation `_ + Reading ******* @@ -185,7 +203,7 @@ Reading * `A Brief Introduction to REST (Tilkov 2007) `_ * `Why HATEOAS - *a simple case study on the often ignored REST constraint* - `_ + `_ References ********** @@ -200,7 +218,7 @@ Python Standard Libraries: `_ * `json `_ -External Eibraries: +External Libraries: +++++++++++++++++++ * BeautifulSoup_ - "You didn't write that awful page. You're just trying to @@ -241,7 +259,7 @@ Bonus Assignment ********** -To Be Decided +On the way soon. Week 4 - CGI and WSGI --------------------- diff --git a/outline.html b/outline.html index 22c1b87c..76a99ef1 100644 --- a/outline.html +++ b/outline.html @@ -191,8 +191,9 @@

    Week 3 - APIs and MashupsWeek 3 Presentation

    Reading¶

      @@ -250,7 +251,7 @@

      Bonus¶

    Assignment¶

    -

    To Be Decided

    +

    On the way soon.

    diff --git a/presentations/ui/uw_pce_theme/pretty.css b/presentations/ui/uw_pce_theme/pretty.css index fcfabdf5..3a6191ec 100644 --- a/presentations/ui/uw_pce_theme/pretty.css +++ b/presentations/ui/uw_pce_theme/pretty.css @@ -67,11 +67,13 @@ ul.urls {list-style: none; display: inline; margin: 0;} html>body .external {border-bottom: none;} .external:after {content: " \274F"; font-size: smaller; color: #77B;} -.incremental, .incremental *, .incremental *:after {visibility: visible; - color: white; border: 0;} +/*.incremental, .incremental *, .incremental *:after {visibility: visible; + color: white; border: 0;}*/ img.incremental {visibility: hidden;} .slide .current {color: green;} + + .slide-display {display: inline ! important;} .huge {font-family: sans-serif; font-weight: bold; font-size: 150%;} @@ -166,3 +168,67 @@ p.image-credit { margin: 1em 0em 0em 0em; z-index: 10; } + +/* Pygments 'colorful' colorization */ +.code { background-color: #ffffcc} +.current .c, .c { color: #888888 } /* Comment */ +.current .err, .err { color: #FF0000; background-color: #FFAAAA } /* Error */ +.current .k, .k { color: #008800; font-weight: bold } /* Keyword */ +.current .o, .o { color: #333333 } /* Operator */ +.current .cm, .cm { color: #888888 } /* Comment.Multiline */ +.current .cp, .cp { color: #557799 } /* Comment.Preproc */ +.current .c1, .c1 { color: #888888 } /* Comment.Single */ +.current .cs, .cs { color: #cc0000; font-weight: bold } /* Comment.Special */ +.current .gd, .gd { color: #A00000 } /* Generic.Deleted */ +.current .ge, .ge { font-style: italic } /* Generic.Emph */ +.current .gr, .gr { color: #FF0000 } /* Generic.Error */ +.current .gh, .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.current .gi, .gi { color: #00A000 } /* Generic.Inserted */ +.current .go, .go { color: #888888 } /* Generic.Output */ +.current .gp, .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.current .gs, .gs { font-weight: bold } /* Generic.Strong */ +.current .gu, .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.current .gt, .gt { color: #0044DD } /* Generic.Traceback */ +.current .kc, .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ +.current .kd, .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ +.current .kn, .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ +.current .kp, .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */ +.current .kr, .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ +.current .kt, .kt { color: #333399; font-weight: bold } /* Keyword.Type */ +.current .m, .m { color: #6600EE; font-weight: bold } /* Literal.Number */ +.current .s, .s { background-color: #fff0f0 } /* Literal.String */ +.current .na, .na { color: #0000CC } /* Name.Attribute */ +.current .nb, .nb { color: #007020 } /* Name.Builtin */ +.current .nc, .nc { color: #BB0066; font-weight: bold } /* Name.Class */ +.current .no, .no { color: #003366; font-weight: bold } /* Name.Constant */ +.current .nd, .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.current .ni, .ni { color: #880000; font-weight: bold } /* Name.Entity */ +.current .ne, .ne { color: #FF0000; font-weight: bold } /* Name.Exception */ +.current .nf, .nf { color: #0066BB; font-weight: bold } /* Name.Function */ +.current .nl, .nl { color: #997700; font-weight: bold } /* Name.Label */ +.current .nn, .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.current .nt, .nt { color: #007700 } /* Name.Tag */ +.current .nv, .nv { color: #996633 } /* Name.Variable */ +.current .ow, .ow { color: #000000; font-weight: bold } /* Operator.Word */ +.current .w, .w { color: #bbbbbb } /* Text.Whitespace */ +.current .mf, .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */ +.current .mh, .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */ +.current .mi, .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ +.current .mo, .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */ +.current .sb, .sb { background-color: #fff0f0 } /* Literal.String.Backtick */ +.current .sc, .sc { color: #0044DD } /* Literal.String.Char */ +.current .sd, .sd { color: #DD4422 } /* Literal.String.Doc */ +.current .s2, .s2 { background-color: #fff0f0 } /* Literal.String.Double */ +.current .se, .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */ +.current .sh, .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */ +.current .si, .si { background-color: #eeeeee } /* Literal.String.Interpol */ +.current .sx, .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */ +.current .sr, .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */ +.current .s1, .s1 { background-color: #fff0f0 } /* Literal.String.Single */ +.current .ss, .ss { color: #AA6600 } /* Literal.String.Symbol */ +.current .bp, .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.current .vc, .vc { color: #336699 } /* Name.Variable.Class */ +.current .vg, .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */ +.current .vi, .vi { color: #3333BB } /* Name.Variable.Instance */ +.current .il, .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ +.current .n, .n, .current .o, .o, .current .p, .p {color: black} \ No newline at end of file diff --git a/presentations/week03.html b/presentations/week03.html index d31a3a94..cc934493 100644 --- a/presentations/week03.html +++ b/presentations/week03.html @@ -118,36 +118,36 @@

    First Steps

    First Steps - Get Source

    Let's start by grabbing the page we want. We use the Python Standard Library urllib2 to handle this task (note that we've shortened the URL):

    -
    ->>> import urllib2
    ->>> page = urllib2.urlopen('http://tinyurl.com/osfeeds')
    ->>> page
    -<addinfourl at 4302170088 whose fp = <socket._fileobject object at 0x1005c6410>>
    ->>> page.code
    -200
    ->>> page.headers['content-type']
    -'text/html;charset=utf-8'
    ->>> page.headers['content-length']
    -'373447'
    +
    +>>> import urllib2
    +>>> page = urllib2.urlopen('http://tinyurl.com/osfeeds')
    +>>> page
    +<addinfourl at 4302170088 whose fp = <socket._fileobject object at 0x1005c6410>>
    +>>> page.code
    +200
    +>>> page.headers['content-type']
    +'text/html;charset=utf-8'
    +>>> page.headers['content-length']
    +'373447'
     

    First Steps - Read Source

    We can take the page we just opened, and read it. The object is file-like, so it supports standard file read operations:

    -
    ->>> html = page.read()
    ->>> len(page)
    -373447
    ->>> print page
    +
    +>>> html = page.read()
    +>>> len(page)
    +373447
    +>>> print page
     
    -<!DOCTYPE html PUBLIC
    -  "-//W3C//DTD XHTML 1.0 Transitional//EN"
    -  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    +<!DOCTYPE html PUBLIC
    +  "-//W3C//DTD XHTML 1.0 Transitional//EN"
    +  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    -<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
    -...
    -</html>
    +<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
    +...
    +</html>
     
    @@ -180,10 +180,10 @@

    But Really

    Step Back for a Moment

    This is going to take some preparation, so let's set aside our html page in a way that will allow us to come back to it:

    -
    ->>> fh = open('bloglist.html', 'w')
    ->>> fh.write(html)
    ->>> fh.close()
    +
    +>>> fh = open('bloglist.html', 'w')
    +>>> fh.write(html)
    +>>> fh.close()
     

    Now the page is saved to a file in your current working directory.

    Quit your interpreter

    @@ -294,12 +294,12 @@

    Install a Parsing Engine

    Parsing HTML

    Okay, we're all set here. Let's load up our HTML page and get ready to scrape it:

    -
    -(soupenv)$ python
    ->>> fh = open('bloglist.html', 'r')
    ->>> from bs4 import BeautifulSoup
    ->>> parsed = BeautifulSoup(fh)
    ->>>
    +
    +(soupenv)$ python
    +>>> fh = open('bloglist.html', 'r')
    +>>> from bs4 import BeautifulSoup
    +>>> parsed = BeautifulSoup(fh)
    +>>>
     

    And that's it. The document is now parsed and ready to scrape.

    @@ -338,10 +338,10 @@

    Searching Your Soup

    Searching by CSS Class

    The items we are looking for are div tags which have the CSS class feedEntry:

    -
    ->>> entries = parsed.find_all('div', class_='feedEntry')
    ->>> len(entries)
    -106
    +
    +>>> entries = parsed.find_all('div', class_='feedEntry')
    +>>> len(entries)
    +106
     
    If you pass a simple string as the sole value to the attrs argument, that @@ -363,21 +363,21 @@

    Find a Single Match

    Testing it out

    -
    ->>> for e in entries:
    -...     anchor = e.find('a')
    -...     paragraph = e.find('p', 'discreet')
    -...     title = anchor.text.strip()
    -...     url = anchor.attrs['href']
    -...     print title
    -...     print url
    -...     try:
    -...         print paragraph.text.strip()
    -...     except AttributeError:
    -...         print 'Uncategorized'
    -...     print
    -...
    ->>>
    +
    +>>> for e in entries:
    +...     anchor = e.find('a')
    +...     paragraph = e.find('p', 'discreet')
    +...     title = anchor.text.strip()
    +...     url = anchor.attrs['href']
    +...     print title
    +...     print url
    +...     try:
    +...         print paragraph.text.strip()
    +...     except AttributeError:
    +...         print 'Uncategorized'
    +...     print
    +...
    +>>>
     
    @@ -476,20 +476,20 @@

    XML-RPC

    XML-RPC Example - Server

    xmlrpc_server.py:

    -
    -from SimpleXMLRPCServer import SimpleXMLRPCServer
    +
    +from SimpleXMLRPCServer import SimpleXMLRPCServer
     
    -server = SimpleXMLRPCServer(('localhost', 50000))
    +server = SimpleXMLRPCServer(('localhost', 50000))
     
    -def multiply(a, b):
    -    return a * b
    -server.register_function(multiply)
    +def multiply(a, b):
    +    return a * b
    +server.register_function(multiply)
     
    -try:
    -    print "Use Ctrl-C to Exit"
    -    server.serve_forever()
    -except KeyboardInterrupt:
    -    print "Exiting"
    +try:
    +    print "Use Ctrl-C to Exit"
    +    server.serve_forever()
    +except KeyboardInterrupt:
    +    print "Exiting"
     
    @@ -499,12 +499,12 @@

    XML-RPC Example - Client

    $ python xmlrcp_server.py

    Then, open another terminal and start up python:

    -
    ->>> import xmlrpclib
    ->>> proxy = xmlrpclib.ServerProxy('http://localhost:50000', verbose=True)
    ->>> proxy.multiply(3, 24)
    -...
    -72
    +
    +>>> import xmlrpclib
    +>>> proxy = xmlrpclib.ServerProxy('http://localhost:50000', verbose=True)
    +>>> proxy.multiply(3, 24)
    +...
    +72
     
    @@ -557,59 +557,59 @@

    More XML-RPC

     server.register_instance(MyClass())
     
    -

    Keep an instance method private:

    -
    -class MyServiceClass(object):
    -    ...
    -    def public_method(self, arg1, arg2):
    -        """this method is public"""
    -        pass
    +

    Keep an instance method private :

    +
    +class MyServiceClass(object):
    +    ...
    +    def public_method(self, arg1, arg2):
    +        """this method is public"""
    +        pass
     
    -    def _private_method(self):
    -        """this method is private because it starts with '_'
    -        """
    -        pass
    +    def _private_method(self):
    +        """this method is private because it starts with '_'
    +        """
    +        pass
     

    XML-RPC Introspection

    First, implement required methods on your service class:

    -
    -from SimpleXMLRPCServer import list_public_methods
    +
    +from SimpleXMLRPCServer import list_public_methods
     
    -class MyServiceClass(object):
    -    ...
    -    def _listMethods(self):
    -        """custom logic for presenting method names to users
    +class MyServiceClass(object):
    +    ...
    +    def _listMethods(self):
    +        """custom logic for presenting method names to users
     
             list_public_methods is a convenience function from the Python
             library, but you can make your own logic if you wish.
    -        """
    -        return list_public_methods(self)
    +        """
    +        return list_public_methods(self)
     
    -    def _methodHelp(self, method):
    -        """provide help text for an individual method
    -        """
    -        f = getattr(self, method)
    -        return f.__doc__
    +    def _methodHelp(self, method):
    +        """provide help text for an individual method
    +        """
    +        f = getattr(self, method)
    +        return f.__doc__
     

    XML-RPC Instrospection

    Then enable introspection via the server instance:

    -
    -server.register_introspection_functions()
    +
    +server.register_introspection_functions()
     

    After this, a client proxy can call pre-defined methods to learn about what -your service offers

    -
    ->>> for name in proxy.system.listMethods():
    -...     help = proxy.system.methodHelp(name)
    -...     print name
    -...     print "\t%s" % help
    -...
    -public_method
    -    this method is public
    +your service offers:

    +
    +>>> for name in proxy.system.listMethods():
    +...     help = proxy.system.methodHelp(name)
    +...     print name
    +...     print "\t%s" % help
    +...
    +public_method
    +    this method is public
     
    @@ -664,32 +664,32 @@

    Creating a Suds Client

    Suds allows us to create a SOAP client object. SOAP uses WSDL to define a service. All we need to do to set this up in python is load the URL of the WSDL for the service we want to use:

    -
    -(soupenv)$ python
    ->>> from suds.client import Client
    ->>> geo_client = Client('https://geoservices.tamu.edu/Services/Geocode/WebService/GeocoderService_V03_01.asmx?wsdl')
    ->>> geo_client
    -<suds.client.Client object at 0x10041fc10>
    +
    +(soupenv)$ python
    +>>> from suds.client import Client
    +>>> geo_client = Client('https://geoservices.tamu.edu/Services/Geocode/WebService/GeocoderService_V03_01.asmx?wsdl')
    +>>> geo_client
    +<suds.client.Client object at 0x10041fc10>
     

    Peeking at the Service

    Suds allows us to visually scan the service. Simply print the client object to see what the service has to offer:

    -
    ->>> print geo_client
    +
    +>>> print geo_client
     
    -Suds ( https://fedorahosted.org/suds/ )  version: 0.4 GA  build: R699-20100913
    +Suds ( https://fedorahosted.org/suds/ )  version: 0.4 GA  build: R699-20100913
     
    -Service ( GeocoderService_V03_01 ) tns="https://geoservices.tamu.edu/"
    -   Prefixes (1)
    -      ns0 = "https://geoservices.tamu.edu/"
    -   Ports (2):
    -      (GeocoderService_V03_01Soap)
    -      Methods (4):
    -         ...
    -      Types (12):
    -         ...
    +Service ( GeocoderService_V03_01 ) tns="https://geoservices.tamu.edu/"
    +   Prefixes (1)
    +      ns0 = "https://geoservices.tamu.edu/"
    +   Ports (2):
    +      (GeocoderService_V03_01Soap)
    +      Methods (4):
    +         ...
    +      Types (12):
    +         ...
     
    @@ -697,10 +697,10 @@

    Debugging Suds

    Suds uses python logging to deal with debug information, so if you want to see what's going on under the hood, you configure it via the Python logging module:

    -
    ->>> import logging
    ->>> logging.basicConfig(level=logging.INFO)
    ->>> logging.getLogger('suds.client').setLevel(logging.DEBUG)
    +
    +>>> import logging
    +>>> logging.basicConfig(level=logging.INFO)
    +>>> logging.getLogger('suds.client').setLevel(logging.DEBUG)
     

    This will allow us to see the messages sent and received by our client.

    @@ -710,43 +710,43 @@

    Client Options

    more than one port. Suds provides two ways to configure which service and port you wish to use.

    Via subscription:

    -
    -client.service['<service>']['<port>'].method(args)
    +
    +client.service['<service>']['<port>'].method(args)
     

    Or the way we will do it, via configuration:

    -
    -geo_client.set_options(service='GeocoderService_V03_01', ↩
    -                       port='GeocoderService_V03_01Soap')
    +
    +geo_client.set_options(service='GeocoderService_V03_01',
    +                       port='GeocoderService_V03_01Soap')
     

    Providing Arguments

    Arguments to a method are set up as a dictionary. Although some may not be required according to api documentation, it is safest to provide them all:

    -
    ->>> apiKey = '<fill this in>'
    ->>> args = {'apiKey': apiKey, }
    ->>> args['streetAddress'] = '1325 4th Avenue'
    ->>> args['city'] = 'Seattle'
    ->>> args['state'] = 'WA'
    ->>> args['zip'] = '98101'
    ->>> args['version'] = 3.01
    ->>> args['shouldReturnReferenceGeometry'] = True
    ->>> args['shouldNotStoreTransactionDetails'] = True
    ->>> args['shouldCalculateCensus'] = False
    ->>> args['censusYear'] = "TwoThousandTen"
    +
    +>>> apiKey = '<fill this in>'
    +>>> args = {'apiKey': apiKey, }
    +>>> args['streetAddress'] = '1325 4th Avenue'
    +>>> args['city'] = 'Seattle'
    +>>> args['state'] = 'WA'
    +>>> args['zip'] = '98101'
    +>>> args['version'] = 3.01
    +>>> args['shouldReturnReferenceGeometry'] = True
    +>>> args['shouldNotStoreTransactionDetails'] = True
    +>>> args['shouldCalculateCensus'] = False
    +>>> args['censusYear'] = "TwoThousandTen"
     

    Making the Call

    Finally, once we've got the arguments all ready we can go ahead and make a call to the server:

    -
    ->>> res = geo_client.service.GeocodeAddressNonParsed(**args)
    -DEBUG:suds.client:sending to
    -(https://geoservices.tamu.edu/Services/Geocode/WebService/GeocoderService_V03_01.asmx)
    -message:
    -...
    +
    +>>> res = geo_client.service.GeocodeAddressNonParsed(**args)
    +DEBUG:suds.client:sending to
    +(https://geoservices.tamu.edu/Services/Geocode/WebService/GeocoderService_V03_01.asmx)
    +message:
    +...
     
    @@ -806,15 +806,15 @@

    And What of Our Result?

    and results we receive. The res symbol we bound to our result earlier should now be an instance of a GeocodeAddressNonParsedResult. Lets see what that looks like:

    -
    ->>> type(res)
    -<type 'instance'>
    ->>> dir(res)
    -['CensusTimeTaken', 'CensusYear', 'ErrorMessage', 'FArea',
    - 'FAreaType', 'FCity', 'FCounty', 'FCountySubRegion',
    - ...]
    ->>> res.Latitude, res.Longitude
    -(47.608411011924403, -122.3351592971042)
    +
    +>>> type(res)
    +<type 'instance'>
    +>>> dir(res)
    +['CensusTimeTaken', 'CensusYear', 'ErrorMessage', 'FArea',
    + 'FAreaType', 'FCity', 'FCounty', 'FCountySubRegion',
    + ...]
    +>>> res.Latitude, res.Longitude
    +(47.608411011924403, -122.3351592971042)
     
    @@ -827,10 +827,10 @@

    A Word on Debugging

  • "There is an error in XML document (1, 572). ---> The string '' is not a valid Boolean value.'
  • -

    Try this

    -
    ->>> geo_client.last_sent().str().replace(" ","")[:573]
    -'...</ns0:version>\n<ns0:shouldCalculateCensus/>'
    +

    Try this:

    +
    +>>> geo_client.last_sent().str().replace(" ","")[:573]
    +'...</ns0:version>\n<ns0:shouldCalculateCensus/>'
     
    @@ -878,32 +878,32 @@

    JSON Data Types

    Dates in JSON

    Option 1 - Unix Epoch Time (number):

    -
    ->>> import time
    ->>> time.time()
    -1358212616.7691269
    +
    +>>> import time
    +>>> time.time()
    +1358212616.7691269
     
    -

    Option 2 - ISO 8661 (string)

    -
    ->>> import datetime
    ->>> datetime.datetime.now().isoformat()
    -'2013-01-14T17:18:10.727240'
    +

    Option 2 - ISO 8661 (string):

    +
    +>>> import datetime
    +>>> datetime.datetime.now().isoformat()
    +'2013-01-14T17:18:10.727240'
     

    JSON in Python

    You can encode python to json, and decode json back to python:

    -
    ->>> import json
    ->>> array = [1,2,3]
    ->>> json.dumps(array)
    ->>> dict_ = {'foo': [1,2,3], 'bar': u'my resumé', 'baz': True}
    ->>> json.dumps(dict_)
    -'{"baz": true, "foo": [1, 2, 3], "bar": "my resum\\u00e9"}'
    ->>> incoming = _
    ->>> new = json.loads(incoming)
    ->>> new == dict_
    -True
    +
    +>>> import json
    +>>> array = [1,2,3]
    +>>> json.dumps(array)
    +>>> dict_ = {'foo': [1,2,3], 'bar': u'my resumé', 'baz': True}
    +>>> json.dumps(dict_)
    +'{"baz": true, "foo": [1, 2, 3], "bar": "my resum\\u00e9"}'
    +>>> incoming = _
    +>>> new = json.loads(incoming)
    +>>> new == dict_
    +True
     

    Customizing the encoder or decoder class allows for specialized serializations

    @@ -1020,38 +1020,38 @@

    Playing With REST

    Geocoding with Google APIs

    https://developers.google.com/maps/documentation/geocoding

    -
    ->>> import urllib
    ->>> import urllib2
    ->>> from pprint import pprint
    ->>> base = 'http://maps.googleapis.com/maps/api/geocode/json'
    ->>> addr = '1325 4th Ave, Seattle, WA 98101'
    ->>> data = {'address': addr, 'sensor': False }
    ->>> query = urllib.urlencode(data)
    ->>> res = urllib2.urlopen('?'.join([base, query]))
    ->>> response = json.load(res)
    ->>> pprint(response)
    +
    +>>> import urllib
    +>>> import urllib2
    +>>> from pprint import pprint
    +>>> base = 'http://maps.googleapis.com/maps/api/geocode/json'
    +>>> addr = '1325 4th Ave, Seattle, WA 98101'
    +>>> data = {'address': addr, 'sensor': False }
    +>>> query = urllib.urlencode(data)
    +>>> res = urllib2.urlopen('?'.join([base, query]))
    +>>> response = json.load(res)
    +>>> pprint(response)
     

    RESTful Job Listings

    https://github.com/mattnull/techsavvyapi

    -
    ->>> base = 'http://api.techsavvy.io/jobs'
    ->>> search = 'python+web'
    ->>> res = urllib2.urlopen('/'.join([base, search]))
    ->>> response = json.load(res)
    ->>> type(response)
    -<type 'dict'>
    ->>> response.keys()
    -[u'count', u'data']
    ->>> response['count']
    -50
    ->>> for post in response['data']:
    -...   for key in sorted(post.keys()):
    -...     print "%s:\n    %s" % (key, post[key])
    -...   print
    -...
    +
    +>>> base = 'http://api.techsavvy.io/jobs'
    +>>> search = 'python+web'
    +>>> res = urllib2.urlopen('/'.join([base, search]))
    +>>> response = json.load(res)
    +>>> type(response)
    +<type 'dict'>
    +>>> response.keys()
    +[u'count', u'data']
    +>>> response['count']
    +50
    +>>> for post in response['data']:
    +...   for key in sorted(post.keys()):
    +...     print "%s:\n    %s" % (key, post[key])
    +...   print
    +...
     
    @@ -1076,17 +1076,17 @@

    Submitting the Assignment

    Place the following in the assignments/week03/athome directory and make a pull request:

    -
    A textual description of your mashup.
    +
    A textual description of your mashup (README.txt).
    What data sources did you scan, what tools did you use, what is the outcome you wanted to create?
    -
    Your source code.
    +
    Your source code (mashup.py).
    Give me an executable python script that I can run to get output.
    Any instructions I need.
    -
    If I need instructions beyond 'python myscript.py' to get the right +
    If I need instructions beyond 'python mashup.py' to get the right output, let me know.
    diff --git a/presentations/week04.html b/presentations/week04.html index ceee0525..c6bead08 100644 --- a/presentations/week04.html +++ b/presentations/week04.html @@ -5,7 +5,7 @@ -This is Week 4 +Internet Programming with Python @@ -29,15 +29,240 @@
    -

    This is Week 4

    +

    Internet Programming with Python

    +img/gateway.jpg +

    Week 4: CGI, WSGI and Living Online

    +

    Wherein we discover the gateways to dynamic processes on a server.

    +

    image: The Wandering Angel http://www.flickr.com/photos/wandering_angel/1467802750/ - CC-BY

    + +
    +
    +

    But First

    +

    Review from the Assignment

    +
    +
    +

    And Second

    +

    Questions from the Reading?

    +
    +
    +

    And Now...

    +

    Gateways

    +
    +
    +

    Think Back

    +

    In week two, we wrote an HTTP server.

    +

    We set up the server to be dynamic by returning the output of a python +script

    +

    But what if we want to pass information to that script?

    +

    How do we let the script have access to information about the HTTP request +itself?

    +
    +
    +

    Stepping Away

    +

    Let's think about this same problem in another realm, the command line.

    +

    In a bash shell we can do this:

    +
    +$ export VARIABLE='some_value'
    +$ echo this is the value: $VARIABLE
    +this is the value: some_value
    +
    +
    +
    +

    Environment

    +

    This new variable is now part of our shell environment, and we can see that:

    +
    +$ printenv
    +VARIABLE=some_value
    +TERM_PROGRAM=iTerm.app
    +TERM=xterm
    +SHELL=/bin/bash
    +...
    +
    +
    +
    +

    Environment in Python

    +

    We can see this environment in Python, too:

    +
    +$ python
    +
    +
    +>>> import os
    +>>> print os.environ['VARIABLE']
    +some_value
    +>>> print os.environ.keys()
    +['VERSIONER_PYTHON_PREFER_32_BIT', 'VARIABLE',
    + 'LOGNAME', 'USER', 'PATH', ...]
    +
    +
    +
    +

    Altering the Environment

    +

    You can alter os environment values while in Python:

    +
    +>>> os.environ['VARIABLE'] = 'new_value'
    +>>> print os.environ['VARIABLE']
    +new_value
    +
    +

    But that doesn't change the original value, outside Python:

    +
    +>>> ^D
    +$ echo this is the value: $VARIABLE
    +this is the value: some_value
    +
    +
    +
    +

    Lessons Learned

    +
      +
    • Subprocesses inherit their environment from their Parent
    • +
    • Parents do not see changes to environment in subprocesses
    • +
    • In Python, you can actually set the environment for a subprocess explicitly
    • +
    +
    +subprocess.Popen(args, bufsize=0, executable=None,
    +                 stdin=None, stdout=None, stderr=None,
    +                 preexec_fn=None, close_fds=False,
    +                 shell=False, cwd=None, env=None, # <-------
    +                 universal_newlines=False, startupinfo=None,
    +                 creationflags=0)
    +
    +
    +
    +

    Web Environment

    +

    CGI is little more than a set of standard environmental variables

    +
    +
    +

    RFC 3875

    +

    First discussed in 1993, formalized in 1997, the current version (1.1) has +been in place since 2004.

    +

    From the preamble:

    +

    This memo provides information for the Internet community. It does not specify +an Internet standard of any kind.

    +

    RFC 3875 - CGI Version 1.1: http://tools.ietf.org/html/rfc3875

    +
    +
    +

    Meta-Variables

    +
    +4.  The CGI Request . . . . . . . . . . . . . . . . . . . . . . .  10
    +    4.1. Request Meta-Variables . . . . . . . . . . . . . . . . .  10
    +         4.1.1.  AUTH_TYPE. . . . . . . . . . . . . . . . . . . .  11
    +         4.1.2.  CONTENT_LENGTH . . . . . . . . . . . . . . . . .  12
    +         4.1.3.  CONTENT_TYPE . . . . . . . . . . . . . . . . . .  12
    +         4.1.4.  GATEWAY_INTERFACE. . . . . . . . . . . . . . . .  13
    +         4.1.5.  PATH_INFO. . . . . . . . . . . . . . . . . . . .  13
    +         4.1.6.  PATH_TRANSLATED. . . . . . . . . . . . . . . . .  14
    +         4.1.7.  QUERY_STRING . . . . . . . . . . . . . . . . . .  15
    +         4.1.8.  REMOTE_ADDR. . . . . . . . . . . . . . . . . . .  15
    +         4.1.9.  REMOTE_HOST. . . . . . . . . . . . . . . . . . .  16
    +         4.1.10. REMOTE_IDENT . . . . . . . . . . . . . . . . . .  16
    +         4.1.11. REMOTE_USER. . . . . . . . . . . . . . . . . . .  16
    +         4.1.12. REQUEST_METHOD . . . . . . . . . . . . . . . . .  17
    +         4.1.13. SCRIPT_NAME. . . . . . . . . . . . . . . . . . .  17
    +         4.1.14. SERVER_NAME. . . . . . . . . . . . . . . . . . .  17
    +         4.1.15. SERVER_PORT. . . . . . . . . . . . . . . . . . .  18
    +         4.1.16. SERVER_PROTOCOL. . . . . . . . . . . . . . . . .  18
    +         4.1.17. SERVER_SOFTWARE. . . . . . . . . . . . . . . . .  19
    +
    +
    +
    +

    Running CGI

    +

    You have a couple of options:

    +
      +
    • Python Standard Library CGIHTTPServer
    • +
    • Apache
    • +
    • Some other HTTP server that implements CGI (lighttpd, ...?)
    • +
    +

    Let's start locally by using the Python module

    +
    +
    +

    Running CGI - First Test

    +

    Make sure you have the latest source of the class documentation, then:

    +
      +
    • Open two terminal windows and in both, cd to the +assignments/week04/lab directory
    • +
    • In the first terminal, run python -m CGIHTTPServer
    • +
    • Open a web browser and load http://localhost:8000/
    • +
    • Click on CGI Test 1
    • +
    +
    +
    +

    Did that work?

    +
      +
    • If nothing at all happens, check your terminal window
    • +
    • Look for this: OSError: [Errno 13] Permission denied
    • +
    • If you see something like that, check permissions for cgi-bin and +cgi_1.py
    • +
    • The file must be executable, the directory needs to be readable and +executable.
    • +
    +
    +
    +

    Break It

    +

    Once that's working correctly, let's play with breaking it. Start by making +the file not exectuable:

    +
    +$ ls -l cgi-bin/cgi_1.py
    +-rwxr-xr-x 1 cewing  staff  42 Jan 17 22:30 cgi-bin/cgi_1.py
    +$ chmod 444 cgi-bin/cgi_1.py
    +$ ls -l cgi-bin/cgi_1.py
    +-r--r--r-- 1 cewing  staff  42 Jan 17 22:35 cgi-bin/cgi_1.py
    +
    +

    Reload your web browser and see what happens.

    +

    Put the permissions back to how they were before.

    +
    +
    +

    Break It Differently

    +

    Okay, so problems with permissions can lead to failure. How about errors in +the script? What happens there?

    +
      +
    • Open assignments/week04/lab/cgi-bin/cgi_1.py in an editor
    • +
    • Before where it says cgi.test(), add a single line:
    • +
    +
    +1 / 0
    +
    +

    Reload your browser, what happens now?

    +
    +
    +

    Errors in CGI

    +

    CGI is famously difficult to debug. There are reasons for this:

    +
      +
    • CGI is designed to provide access to runnable processes to the internet
    • +
    • The internet is a wretched hive of scum and villainy
    • +
    • Revealing error conditions can expose data that could be exploited
    • +
    +
    +
    +

    Viewing Errors in Python CGI

    +

    Back in your editor, add the following lines, just below import cgi:

    +
    +import cgitb
    +cgitb.enable()
    +
    +

    Now, reload again.

    +
    +
    +

    cgitb Output

    +img/cgitb_output.png +
    +
    +

    scraps

    +

    How to run CGI scripts

    +
      +
    • locally
    • +
    • on a server
    • +
    +

    How does WSGI differ from CGI?

    +

    What is WSGI?

    +

    Is WSGI Python-specific?

    +

    How to run locally

    +

    How to run on a server

    diff --git a/searchindex.js b/searchindex.js index 0c8c805f..82e193ed 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:0,code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,string:1,util:1,veri:1,unexcus:0,level:0,list:1,"try":1,imaplib:1,small:[0,1],pleas:1,cgi:[0,1],outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],contrast:0,hasn:1,berkelei:1,learn:[0,1],here:[0,1],inher:1,along:1,search:0,technolog:[],prior:0,zodb:[],implement:[0,1],chanc:1,ourselv:1,via:[0,1],prerequisit:0,extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1],commun:1,univers:0,regist:0,two:0,websit:1,recommend:1,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,valuabl:1,prepar:1,work:0,focu:[0,1],can:[0,1],http2:[],purpos:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1],winter:0,anoth:1,write:1,how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,sundai:1,lab:1,befor:1,date:1,data:1,demonstr:1,goal:1,classroom:0,"short":1,author:1,django:[0,1],inform:[0,1],allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,through:[0,1],dynam:1,concis:1,grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:1,framework:[0,1],hateoa:1,httplib2:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,realli:1,connect:0,doug:1,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:0,reason:0,base:0,org:1,care:1,lucumr:[],principl:0,assign:[0,1],first:1,origin:1,softwar:[],feel:1,onc:[],qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:1,top:1,system:1,stack:1,master:1,zeromq:1,"final":1,pocoo:[],option:1,relationship:1,tool:1,part:0,pars:1,mostli:1,eibrari:1,than:0,provid:[0,1],tree:1,structur:1,project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1],tabl:0,need:1,techniqu:1,equival:0,contact:0,also:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,object:[0,1],reach:1,phase:1,"class":[0,1],don:[0,1],dens:0,clear:1,cover:1,doe:[0,1],determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:0,find:1,onli:1,explain:1,configur:0,apach:1,written:1,should:[0,1],kessler:1,disert:1,suppos:1,smtplib:1,local:1,move:1,variou:1,get:1,express:0,repo:1,rest:1,requir:0,truli:1,rfc:1,integr:0,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,wikipedia:1,urllib:1,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:1,overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,evalu:1,hellmann:1,compon:1,json:1,presentations_:[],life:1,emphas:0,great:1,athom:1,understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,servic:[0,1],employ:0,defin:1,wild:1,python_web:1,pyramid:[0,1],briandorsei:1,lightweight:1,minutia:0,sever:1,minim:1,make:1,format:1,same:1,complex:1,document:[0,1],complet:[0,1],week:[0,1],http:1,kit:1,student:[0,1],extern:1,studi:1,appropri:1,entri:1,coursework:0,exampl:[0,1],thi:[0,1],model:1,portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,virtual:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:1,easi:1,drawback:1,apache2:1,armin:1,blob:1,homework:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,xmlrpc:1,week05:1,read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:1,like:1,specif:1,manifest:1,benefit:1,either:1,page:[0,1],underli:[0,1],www:1,right:1,often:1,interact:1,some:1,satisfactori:0,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,noon:1,refer:[0,1],machin:1,cgi_exampl:1,investig:1,run:1,usag:0,confer:1,host:1,dissert:1,repositori:1,januari:[0,1],feb:1,chapter:1,about:1,socket:[0,1],constraint:1,commit:0,disabl:0,own:1,curiou:1,washington:0,curios:1,assess:0,chang:1,your:[0,1],wai:1,transfer:1,support:[0,1],why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,fork:1,form:1,criteria:1,github:1,rpclib:1,sqlalchemi:[],gain:1,rfc1945:[],pull:1,made:1,wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1],request:[0,1],pragmat:0,parser:1,lectur:[0,1],file:1,mashup:[0,1],scrape:1,field:1,other:1,test:1,ignor:1,you:1,repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:1,wifi:0,xmlrpclib:1,train:1,htmlparser:1,time:1,push:1,hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:0,code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,sourc:1,string:1,util:1,veri:1,unexcus:0,level:0,list:1,"try":1,imaplib:1,small:[0,1],pleas:1,machin:1,outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,index:0,what:1,sud:1,section:1,lightn:1,brief:1,access:[0,1],contrast:0,hasn:1,berkelei:1,learn:[0,1],here:[0,1],inher:1,along:1,search:0,technolog:[],prior:0,base:0,implement:[0,1],chanc:1,ourselv:1,via:[0,1],repositori:1,extra:[],apach:1,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,kessler:1,from:[0,1],commun:1,univers:0,regist:0,two:[0,1],websit:1,recommend:1,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,valuabl:1,prepar:1,work:0,focu:[0,1],can:[0,1],http2:[],purpos:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1],winter:0,anoth:1,write:1,concis:1,simpl:[0,1],mar:1,resourc:1,attend:0,sundai:1,lab:1,befor:1,mai:1,data:1,demonstr:1,goal:1,classroom:0,"short":1,practic:1,minim:1,assign:[0,1],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:1,through:[0,1],dynam:1,how:[0,1],grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:1,framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,realli:1,connect:0,doug:1,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],integr:0,advanc:1,given:1,pub:1,standard:[0,1],quick:0,reason:0,zodb:[],org:1,care:1,lucumr:[],principl:0,think:1,first:1,origin:1,softwar:[],feel:1,onc:[],qualiti:1,date:1,restkit_:[],horribl:1,fantast:0,differ:1,script:1,top:1,system:1,master:1,zeromq:1,"final":1,low:0,option:1,relationship:1,tool:1,part:0,pars:1,mostli:1,eibrari:[],than:0,provid:[0,1],tree:1,structur:1,exampl:[0,1],project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1],tabl:0,need:1,django:[0,1],techniqu:1,equival:0,also:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,object:[0,1],reach:1,phase:1,"class":[0,1],don:[0,1],dens:0,clear:1,cover:1,doe:[0,1],determin:1,left:1,wsgi:[0,1],abl:0,beautifulsoup:1,bring:0,session:[0,1],find:1,onli:1,explain:1,configur:0,activ:0,written:1,should:[0,1],jan:1,disert:1,suppos:1,smtplib:1,local:1,move:1,variou:1,get:1,express:0,repo:1,tcp:1,requir:0,truli:1,rfc:1,common:1,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,wikipedia:1,urllib:1,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:1,overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,creat:[0,1],hellmann:1,compon:1,json:1,presentations_:[],life:1,emphas:0,great:1,athom:1,understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,servic:[0,1],employ:0,defin:1,wild:1,python_web:1,real:[0,1],pyramid:[0,1],briandorsei:1,lightweight:1,minutia:0,sever:1,author:1,make:1,week05:1,same:1,complex:1,document:[0,1],complet:[0,1],week:[0,1],http:1,kit:1,student:[0,1],extern:1,stack:1,appropri:1,entri:1,coursework:0,contact:0,thi:[0,1],choos:1,model:1,portabl:0,latest:1,protocol:[0,1],just:1,rest:1,weekli:0,scrape:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:1,easi:1,drawback:1,apache2:1,armin:1,blob:1,homework:1,build:1,week02:1,applic:[0,1],week01:1,march:0,around:1,xmlrpc:1,format:1,read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:1,like:1,specif:1,manifest:1,benefit:1,either:1,page:[0,1],underli:[0,1],www:1,right:1,often:1,interact:1,some:1,satisfactori:0,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,noon:1,refer:[0,1],cgi:[0,1],cgi_exampl:1,investig:1,run:1,usag:0,confer:1,host:1,dissert:1,prerequisit:0,januari:[0,1],feb:1,chapter:1,about:1,socket:[0,1],constraint:1,commit:0,disabl:0,own:1,curiou:1,washington:0,curios:1,assess:0,chang:1,your:[0,1],wai:1,transfer:1,support:[0,1],why:1,avail:1,start:[0,1],interfac:1,pocoo:[],suit:1,fork:1,form:1,criteria:1,github:1,rpclib:1,sqlalchemi:[],gain:1,rfc1945:[],pull:1,made:1,wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,evalu:1,request:[0,1],pragmat:0,parser:1,lectur:[0,1],file:1,mashup:[0,1],virtual:1,field:1,other:1,test:1,htmlparser:1,you:1,repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:1,wifi:0,xmlrpclib:1,train:1,ignor:1,time:1,push:1,hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file From ccc944679d13f84f626837047941d05f6d350da7 Mon Sep 17 00:00:00 2001 From: cewing Date: Fri, 18 Jan 2013 18:09:05 -0800 Subject: [PATCH 022/114] images for week 4 presentation --- presentations/img/cgitb_output.png | Bin 0 -> 48545 bytes presentations/img/gateway.jpg | Bin 0 -> 475556 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 presentations/img/cgitb_output.png create mode 100644 presentations/img/gateway.jpg diff --git a/presentations/img/cgitb_output.png b/presentations/img/cgitb_output.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc6d78ed2ccf7cad4014bed721c74c04c334850 GIT binary patch literal 48545 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≠Ihr&<=Jn?+B`-vrM1r|B=@%q> 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 literal 0 HcmV?d00001 diff --git a/presentations/img/gateway.jpg b/presentations/img/gateway.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7c81c1372c312d16f0dad089a0658dc415e79de3 GIT binary patch literal 475556 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

    dUwOO)e9|#QL?6s+>Jy0zdSfP$)%Un1??qP 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%0DbU|wX9Kco=a$4 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⁡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

    AQ|ep)0AjXJ3NjOuBslw=bC(}V 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

    lHgO!Bi;|pi<^i+Cz)g^AVKV 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 literal 0 HcmV?d00001 From ded17c515b1bedb4c533de3e2e58f38c526eaf64 Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 20 Jan 2013 15:34:47 -0800 Subject: [PATCH 023/114] updates to week 3, week 4 presentations --- presentations/week03.html | 10 +- presentations/week04.html | 556 +++++++++++++++++++++++++++++++++++++- searchindex.js | 2 +- 3 files changed, 556 insertions(+), 12 deletions(-) diff --git a/presentations/week03.html b/presentations/week03.html index cc934493..5702d04c 100644 --- a/presentations/week03.html +++ b/presentations/week03.html @@ -897,12 +897,12 @@

    JSON in Python

    >>> import json >>> array = [1,2,3] >>> json.dumps(array) ->>> dict_ = {'foo': [1,2,3], 'bar': u'my resumé', 'baz': True} ->>> json.dumps(dict_) +>>> orig = {'foo': [1,2,3], 'bar': u'my resumé', 'baz': True} +>>> encoded = json.dumps(dict_) +>>> encoded '{"baz": true, "foo": [1, 2, 3], "bar": "my resum\\u00e9"}' ->>> incoming = _ ->>> new = json.loads(incoming) ->>> new == dict_ +>>> decoded = json.loads(encoded) +>>> decoded == orig True

    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 |a(#$IOrp2bnl*7V9jFnT6pTlv-WHZej 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

    Customizing the encoder or decoder class allows for specialized serializations

    diff --git a/presentations/week04.html b/presentations/week04.html index c6bead08..38509e23 100644 --- a/presentations/week04.html +++ b/presentations/week04.html @@ -251,15 +251,559 @@

    Viewing Errors in Python CGI

    cgitb Output

    img/cgitb_output.png
    +
    +

    Another Way to Break It

    +

    Let's fix the error from our traceback. Edit your cgi_1.py file to match:

    +
    +#!/usr/bin/python
    +import cgi
    +import cgitb
    +
    +cgitb.enable()
    +
    +cgi.test()
    +
    +

    Notice the first line of that script: #!/usr/bin/python. This is called +the shebang (short for hash-bang) and it tells the system what executable +program to use when running the script.

    +
    +
    +

    CGI Process Execution

    +

    When a web server like CGIHTTPServer or Apache runs a CGI script, it +simply attempts to run the script as if it were a normal system user. This is +just like you calling:

    +
    +$ ./path/to/cgi_1.py
    +
    +

    In fact try that now (use the real path), what do you get? What is missing?

    +
    +
    +

    CGI Process Execution

    +

    There are a couple of important facts that are related to the way CGI +processes are run:

    +
      +
    • The script must include a shebang so that the system knows how to run +it.
    • +
    • The script must be executable.
    • +
    • The executable named in the shebang will be called as the nobody user.
    • +
    • This is a security feature to prevent CGI scripts from running as a user +with any privileges.
    • +
    • This means that the executable from the script shebang must be one that +anyone can run.
    • +
    +
    +
    +

    More Permission Fun

    +

    Let's interfere with this:

    +
    +$ ls -l /usr/bin/python
    +-rwxr-xr-x  2 root  wheel ... /usr/bin/python
    +$ sudo chmod 750 /usr/bin/python
    +Password:
    +$ ls -l /usr/bin/python
    +-rwxr-x---  2 root  wheel ... /usr/bin/python
    +
    +

    Now, reload your web browser. Did you get anything? Check your debugging +tools.

    +
    +
    +

    Enough of That

    +

    Okay, put the permissions back on your system python:

    +
    +$ sudo chmod 755 /usr/bin/python
    +Password:
    +$ ls -l /usr/bin/python
    +-rwxr-xr-x  2 root  wheel ... /usr/bin/python
    +
    +
    +
    +

    The CGI Environment

    +

    CGI is largely a set of agreed-upon environmental variables.

    +

    We've seen how environmental variables are found in python in os.environ

    +

    We've also seen that at least some of the variables in CGI are not in the +standard set of environment variables.

    +

    Where do they come from?

    +
    +
    +

    CGI Servers

    +

    Let's find 'em. In a terminal fire up python:

    +
    +>>> import CGIHTTPServer
    +>>> CGIHTTPServer.__file__
    +'/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/CGIHTTPServer.py'
    +
    +

    Copy this path and open the file it points to in your text editor

    +
    +
    +

    Environmental Set Up

    +

    From CGIHTTPServer.py, in the CGIHTTPServer.run_cgi method:

    +
    +# Reference: http://hoohoo.ncsa.uiuc.edu/cgi/env.html
    +# XXX Much of the following could be prepared ahead of time!
    +env = {}
    +env['SERVER_SOFTWARE'] = self.version_string()
    +env['SERVER_NAME'] = self.server.server_name
    +env['GATEWAY_INTERFACE'] = 'CGI/1.1'
    +env['SERVER_PROTOCOL'] = self.protocol_version
    +env['SERVER_PORT'] = str(self.server.server_port)
    +env['REQUEST_METHOD'] = self.command
    +...
    +ua = self.headers.getheader('user-agent')
    +if ua:
    +    env['HTTP_USER_AGENT'] = ua
    +...
    +os.environ.update(env)
    +...
    +
    +
    +
    +

    CGI Scripts

    +

    And that's it, the big secret. The server takes care of setting up the +environment so it has what is needed.

    +

    Now, in reverse. How does the information that a script creates end up in your +browser?

    +

    A CGI Script must print it's results to stdout.

    +
    +
    +

    Recap:

    +

    What the Server Does:

    +
      +
    • parses the request
    • +
    • sets up the environment, including HTTP and SERVER variables
    • +
    • figures out if the URI points to a CGI script and runs it
    • +
    • builds an appropriate HTTP Response first line ('HTTP/1.1 200 Okrn')
    • +
    • appends what comes from the script on stdout and sends that back
    • +
    +

    What the Script Does:

    +
      +
    • names appropriate executable in it's shebang line
    • +
    • uses os.environ to read information from the HTTP request
    • +
    • builds any and all appropriate HTTP Headers (Content-type:, +Content-length:, ...)
    • +
    • prints headers, empty line and script output (body) to stdout
    • +
    +
    +
    +

    Lab 1

    +

    You've seen the output from the cgi.test() method from the cgi module. +Let's make our own version of this.

    +
      +
    • In assignments/week04/lab/src you will find the file +lab1_cgi_template.py.
    • +
    • Copy that file to assignments/week04/lab/cgi-bin/lab1_cgi.py (note the +missing '_template' part)
    • +
    • The script contains some html with text naming elements of the CGI +environment.
    • +
    • Use elements of os.environ to fill in the blanks.
    • +
    +

    GO

    +
    +
    +

    Putting CGI Online

    +

    We have CGI working, how do we make it live so that others can see our +work?

    +

    Put It On A Server

    +
    +
    +
    +

    Apache

    +

    Our VMs have the Apache HTTP Server installed and ready to use. Unfortunately +for our current purposes, Apache is not the running web server software.

    +

    Load http://<your-vm-id>.blueboxgrid.com in your web browser. What do you see?

    +img/nginx.png +
    +
    +

    Managing Server Processes

    +
      +
    • Nginx is a great webserver, but it doesn't support running external processes
    • +
    • This is a good choice for security, but not good for us right now
    • +
    • We need to turn it off, and turn on Apache
    • +
    +

    SSH into your server. Then run:

    +
    +$ sudo /etc/init.d/nginx stop
    +Stopping nginx: nginx.
    +$ sudo /etc/init.d/apache2 start
    + * Starting web server apache2    [ OK ]
    +
    +
    +
    +

    Check Your Work

    +

    Reload your web browser. You should now see this:

    +img/apache.png +

    This means that you've stopped nginx and started Apache. Congrats, you are now +a sysadmin!

    +
    +
    +

    Default Site

    +
      +
    • Apache on Ubuntu is set to do virtual hosting
    • +
    • Config for individual sites is added in /etc/apache2/sites-available
    • +
    • Enabling a site makes a link to the config in +/etc/apache2/sites-enabled
    • +
    +

    Check your server to see what sites are available and enabled:

    +
    +$ cd /etc/apache2/
    +$ ls sites-available/
    +default  default-ssl
    +$ ls -l sites-enabled/
    +total 0
    +... 000-default -> ../sites-available/default
    +
    +
    +
    +

    Apache Configuration

    +
    +$ less sites-available/default
    +
    +
    +<VirtualHost *:80>
    +    ServerAdmin webmaster@localhost
    +
    +    DocumentRoot /var/www
    +    <Directory />
    +            Options FollowSymLinks
    +            AllowOverride None
    +    </Directory>
    +    <Directory /var/www/>
    +            Options Indexes FollowSymLinks MultiViews
    +            AllowOverride None
    +            Order allow,deny
    +            allow from all
    +    </Directory>
    +
    +
    +
    +

    More Apache Configuration

    +

    Skip over the ScriptAlias for a moment (we'll come back)

    +
    +    ErrorLog /var/log/apache2/error.log
    +    # Possible values include: debug, info, notice, warn, error, crit,
    +    # alert, emerg.
    +    LogLevel warn
    +    CustomLog /var/log/apache2/access.log combined
    +
    +    Alias /doc/ "/usr/share/doc/"
    +    <Directory "/usr/share/doc/">
    +        Options Indexes MultiViews FollowSymLinks
    +        AllowOverride None
    +        Order deny,allow
    +        Deny from all
    +        Allow from 127.0.0.0/255.0.0.0 ::1/128
    +    </Directory>
    +
    +</VirtualHost>
    +
    +
    +
    +

    Apache CGI Configuration

    +

    This is the bit that sets up CGI for us:

    +
    +ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    +<Directory "/usr/lib/cgi-bin">
    +        AllowOverride None
    +        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    +        Order allow,deny
    +        Allow from all
    +</Directory>
    +
    +
    +
    +

    Setting up Our Script

    +

    The directory for CGI is /usr/lib/cgi-bin/. What's there now?

    +
    +$ ls -la /usr/lib/cgi-bin/
    +total 24
    +drwxr-xr-x  2 root root  4096 Apr 13  2010 .
    +drwxr-xr-x 66 root root 20480 Nov 23  2011 ..
    +
    +
    +
    +

    No Directory Listing

    +

    Check the cgi-bin directory in your browser:

    +

    http://<your-vm-id>.blueboxgrid.com/cgi-bin/

    +img/forbidden.png +

    Apache is configured to disallow directory listings for cgi-bin (No +Option Indexes)

    +
    +
    +

    Copy CGI To The Server

    +

    To get our script to run, we have to put it in the cgi-bin directory.

    +
      +
    • The /usr/lib/cgi-bin directory is owned by root
    • +
    • It is not world-writable
    • +
    • You'll need to put it somewhere you can write without using sudo
    • +
    • Put it in your home directory
    • +
    +
    +$ cd /path/to/training.python_web
    +$ scp assignments/week04/lab/cgi-bin/cgi_1.py uw@<yourvm>:~/
    +
    +
    +
    +

    Move it to cgi-bin

    +

    Now that we have the script on the server, we can use sudo there to put it in +the right spot (execute these commands on your VM):

    +
    +$ sudo mv ~/cgi_1.py /usr/lib/cgi-bin/
    +$ ls -l /usr/lib/cgi-bin
    +total 4
    +-rwxr-xr-x 1 uw uw 42 Jan 20 04:34 cgi_1.py
    +
    +

    Does the file have the right permissions to be executed successfully?

    +

    http://<your-vm-url>/cgi-bin/cgi_1.py

    +
    +
    +

    Do it again

    +

    Repeat the process. This time, move your lab1_cgi.py script from our first +lab exercise.

    +
    +
    +

    And Now

    +

    A Short Break

    +
    +
    +

    CGI Problems

    +

    CGI is great, but there are problems:

    +
      +
    • Code is executed in a new process
    • +
    • Every call to a CGI script starts a new process on the server
    • +
    • Starting a new process is expensive in terms of server resources
    • +
    • Especially for interpreted languages like Python
    • +
    +

    How do we overcome this problem?

    +
    +
    +

    Alternatives to CGI

    +

    The most popular approach is to have a long-running process inside the +server that handles CGI scripts.

    +

    FastCGI and SCGI are existing implementations of CGI in this fashion. +mod_python offers a similar capability for Python code.

    +
      +
    • Each of these options has a specific API
    • +
    • None are compatible with each-other
    • +
    • Code written for one is not portable to another
    • +
    • This makes it hard to share resources
    • +
    +
    +
    +

    WSGI

    +

    Enter WSGI, the Web Server Gateway Interface.

    +

    Where other alternatives are specific implementations of the CGI standard, +WSGI is itself a new standard, not an implementation.

    +

    WSGI is generalized to describe a set of interactions, so that developers can +write WSGI-capable apps and deploy them on any WSGI server.

    +

    Read the WSGI spec: http://www.python.org/dev/peps/pep-0333

    +
    +
    +

    WSGI: Apps and Servers

    +

    WSGI consists of two parts, a server and an application.

    +

    A WSGI Server must:

    +
      +
    • set up an environment, much like the one in CGI
    • +
    • provide a method start_response(status, headers, exc_info=None)
    • +
    • build a response body by calling an application, passing +environment and start_response as args
    • +
    • return a response with the status, headers and body
    • +
    +

    A WSGI Appliction must:

    +
      +
    • Be a callable (function, method, class)
    • +
    • Take an environment and a start_response callable as arguments
    • +
    • Return an iterable of 0 or more strings, which are treated as the body of +the respponse.
    • +
    +
    +
    +

    Flowcharts

    +

    WSGI Servers:

    +

    HTTP <---> WSGI

    +

    WSGI Applications:

    +

    WSGI <---> app code

    +
    +
    +

    The Whole Enchilada

    +

    The WSGI Stack can thus be expressed like so:

    +

    HTTP <---> WSGI <---> app code

    +
    +
    +

    Using wsgiref

    +

    The Python standard lib provides a reference implementation of WSGI:

    +img/wsgiref_flow.png +
    +
    +

    Apache mod_wsgi

    +

    You can also deploy with Apache as your HTTP server, using mod_wsgi:

    +img/mod_wsgi_flow.png +
    +
    +

    Proxied WSGI Servers

    +

    Finally, it is also common to see WSGI apps deployed via a proxied WSGI +server:

    +img/proxy_wsgi.png +
    +
    +

    WSGI Middleware

    +

    Another feature of WSGI is middleware:

    +
      +
    • Middleware implements both the server and application interfaces
    • +
    • Middleware acts as a server when viewed from an application
    • +
    • Middleware acts as an application when viewed from a server
    • +
    +img/wsgi_middleware_onion.png +
    +
    +

    Simplified WSGI Server

    +
    +from some_application import simple_app
    +
    +def build_env(request):
    +    # put together some environment info from the reqeuest
    +    return env
    +
    +def handle_request(request, app):
    +    environ = build_env(request)
    +    iterable = app(environ, start_response)
    +    for data in iterable:
    +        # send data to client here
    +
    +def start_response(status, headers):
    +    # start an HTTP response, sending status and headers
    +
    +# listen for HTTP requests and pass on to handle_request()
    +serve(simple_app)
    +
    +
    +
    +

    WSGI Environment

    +
    +
    REQUEST_METHOD
    +
    The HTTP request method, such as "GET" or "POST". This cannot ever be an +empty string, and so is always required.
    +
    SCRIPT_NAME
    +
    The initial portion of the request URL's "path" that corresponds to the +application object, so that the application knows its virtual "location". +This may be an empty string, if the application corresponds to the "root" of +the server.
    +
    PATH_INFO
    +
    The remainder of the request URL's "path", designating the virtual +"location" of the request's target within the application. This may be an +empty string, if the request URL targets the application root and does not +have a trailing slash.
    +
    QUERY_STRING
    +
    The portion of the request URL that follows the "?", if any. May be empty or +absent.
    +
    CONTENT_TYPE
    +
    The contents of any Content-Type fields in the HTTP request. May be empty or +absent.
    +
    +
    +
    +

    WSGI Environment

    +
    +
    CONTENT_LENGTH
    +
    The contents of any Content-Length fields in the HTTP request. May be empty +or absent.
    +
    SERVER_NAME, SERVER_PORT
    +
    When combined with SCRIPT_NAME and PATH_INFO, these variables can be used to +complete the URL. Note, however, that HTTP_HOST, if present, should be used +in preference to SERVER_NAME for reconstructing the request URL. See the URL +Reconstruction section below for more detail. SERVER_NAME and SERVER_PORT +can never be empty strings, and so are always required.
    +
    SERVER_PROTOCOL
    +
    The version of the protocol the client used to send the request. Typically +this will be something like "HTTP/1.0" or "HTTP/1.1" and may be used by the +application to determine how to treat any HTTP request headers. (This +variable should probably be called REQUEST_PROTOCOL, since it denotes the +protocol used in the request, and is not necessarily the protocol that will +be used in the server's response. However, for compatibility with CGI we +have to keep the existing name.)
    +
    +
    +
    +

    WSGI Environment

    +
    +
    HTTP_ Variables
    +
    Variables corresponding to the client-supplied HTTP request headers (i.e., +variables whose names begin with "HTTP_"). The presence or absence of these +variables should correspond with the presence or absence of the appropriate +HTTP header in the request.
    +
    +

    Seem Familiar?

    +
    +
    +

    Simple WSGI Application

    +

    Where the simplified server above is not functional, this is a complete +app:

    +
    +def application(environ, start_response)
    +    status = "200 OK"
    +    body = "Hello World\n"
    +    response_headers = [('Content-type', 'text/plain',
    +                         'Content-length', len(body))]
    +    start_response(status, response_headers)
    +    return [body]
    +
    +
    +
    +

    Simple WSGI Middleware

    +

    Here's a very simple sample of middleware:

    +
    +class Upperware:
    +    def __init__(self, app)
    +        self.wrapped_app = app
    +
    +    def __call__(self, environ, start_response)
    +        for data in self.wrapped_app(environ, start_response):
    +            return data.upper()
    +
    +

    How does this fulfill the server part of the agreement?

    +

    The application part?

    +
    +
    +

    A Word on Middleware

    +

    TRANSPARENT

    +
      +
    • loose coupling means layers should not need to know anything about each +other
    • +
    • You should be able to combine a server from one package, middleware from +another, and application code from yet another
    • +
    • A good test is this:
    • +
    +

    If you remove your middleware, does your app break?

    +

    If so, the code should be in your app, not in middleware.

    +
    +
    +

    Interesting Middleware Uses

    +

    Middleware can be used for a number of really useful purposes:

    +
      +
    • Routing (stitch together multiple wsgi apps into one site)
    • +
    • Authentication (share authentication between multiple apps, delegate)
    • +
    • Cache Control (decide what to rebuild and what can be re-used)
    • +
    • Debugging and Introspection (provide information about reqest, reponse and +processing)
    • +
    • Theming (use tools like xslt to build themes that can merge different apps)
    • +
    +
    +
    +

    WSGI on our VMs

    +

    For our lab, and for the homework, we'll be using WSGI via mod_wsgi on our +VMs.

    +

    CGI was all set for us, once we turned on Apache.

    +

    How about WSGI?

    +

    Let's find out.

    +

    scraps

    -

    How to run CGI scripts

    -
      -
    • locally
    • -
    • on a server
    • -

    How does WSGI differ from CGI?

    -

    What is WSGI?

    Is WSGI Python-specific?

    How to run locally

    How to run on a server

    diff --git a/searchindex.js b/searchindex.js index 82e193ed..0779ea4b 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:0,code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,sourc:1,string:1,util:1,veri:1,unexcus:0,level:0,list:1,"try":1,imaplib:1,small:[0,1],pleas:1,machin:1,outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,index:0,what:1,sud:1,section:1,lightn:1,brief:1,access:[0,1],contrast:0,hasn:1,berkelei:1,learn:[0,1],here:[0,1],inher:1,along:1,search:0,technolog:[],prior:0,base:0,implement:[0,1],chanc:1,ourselv:1,via:[0,1],repositori:1,extra:[],apach:1,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,kessler:1,from:[0,1],commun:1,univers:0,regist:0,two:[0,1],websit:1,recommend:1,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,valuabl:1,prepar:1,work:0,focu:[0,1],can:[0,1],http2:[],purpos:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1],winter:0,anoth:1,write:1,concis:1,simpl:[0,1],mar:1,resourc:1,attend:0,sundai:1,lab:1,befor:1,mai:1,data:1,demonstr:1,goal:1,classroom:0,"short":1,practic:1,minim:1,assign:[0,1],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:1,through:[0,1],dynam:1,how:[0,1],grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:1,framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,realli:1,connect:0,doug:1,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],integr:0,advanc:1,given:1,pub:1,standard:[0,1],quick:0,reason:0,zodb:[],org:1,care:1,lucumr:[],principl:0,think:1,first:1,origin:1,softwar:[],feel:1,onc:[],qualiti:1,date:1,restkit_:[],horribl:1,fantast:0,differ:1,script:1,top:1,system:1,master:1,zeromq:1,"final":1,low:0,option:1,relationship:1,tool:1,part:0,pars:1,mostli:1,eibrari:[],than:0,provid:[0,1],tree:1,structur:1,exampl:[0,1],project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1],tabl:0,need:1,django:[0,1],techniqu:1,equival:0,also:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,object:[0,1],reach:1,phase:1,"class":[0,1],don:[0,1],dens:0,clear:1,cover:1,doe:[0,1],determin:1,left:1,wsgi:[0,1],abl:0,beautifulsoup:1,bring:0,session:[0,1],find:1,onli:1,explain:1,configur:0,activ:0,written:1,should:[0,1],jan:1,disert:1,suppos:1,smtplib:1,local:1,move:1,variou:1,get:1,express:0,repo:1,tcp:1,requir:0,truli:1,rfc:1,common:1,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,wikipedia:1,urllib:1,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:1,overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,creat:[0,1],hellmann:1,compon:1,json:1,presentations_:[],life:1,emphas:0,great:1,athom:1,understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,servic:[0,1],employ:0,defin:1,wild:1,python_web:1,real:[0,1],pyramid:[0,1],briandorsei:1,lightweight:1,minutia:0,sever:1,author:1,make:1,week05:1,same:1,complex:1,document:[0,1],complet:[0,1],week:[0,1],http:1,kit:1,student:[0,1],extern:1,stack:1,appropri:1,entri:1,coursework:0,contact:0,thi:[0,1],choos:1,model:1,portabl:0,latest:1,protocol:[0,1],just:1,rest:1,weekli:0,scrape:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:1,easi:1,drawback:1,apache2:1,armin:1,blob:1,homework:1,build:1,week02:1,applic:[0,1],week01:1,march:0,around:1,xmlrpc:1,format:1,read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:1,like:1,specif:1,manifest:1,benefit:1,either:1,page:[0,1],underli:[0,1],www:1,right:1,often:1,interact:1,some:1,satisfactori:0,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,noon:1,refer:[0,1],cgi:[0,1],cgi_exampl:1,investig:1,run:1,usag:0,confer:1,host:1,dissert:1,prerequisit:0,januari:[0,1],feb:1,chapter:1,about:1,socket:[0,1],constraint:1,commit:0,disabl:0,own:1,curiou:1,washington:0,curios:1,assess:0,chang:1,your:[0,1],wai:1,transfer:1,support:[0,1],why:1,avail:1,start:[0,1],interfac:1,pocoo:[],suit:1,fork:1,form:1,criteria:1,github:1,rpclib:1,sqlalchemi:[],gain:1,rfc1945:[],pull:1,made:1,wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,evalu:1,request:[0,1],pragmat:0,parser:1,lectur:[0,1],file:1,mashup:[0,1],virtual:1,field:1,other:1,test:1,htmlparser:1,you:1,repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:1,wifi:0,xmlrpclib:1,train:1,ignor:1,time:1,push:1,hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:0,code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,sourc:1,string:1,util:1,veri:1,unexcus:0,level:0,list:1,"try":1,imaplib:1,small:[0,1],pleas:1,cgi:[0,1],outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],contrast:0,hasn:1,berkelei:1,learn:[0,1],here:[0,1],inher:1,along:1,search:0,technolog:[],prior:0,zodb:[],implement:[0,1],chanc:1,ourselv:1,via:[0,1],prerequisit:0,extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1],commun:1,univers:0,regist:0,two:[0,1],websit:1,recommend:1,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,valuabl:1,prepar:1,work:0,focu:[0,1],can:[0,1],http2:[],purpos:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1],winter:0,anoth:1,write:1,how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,sundai:1,lab:1,befor:1,date:1,data:1,demonstr:1,goal:1,classroom:0,"short":1,practic:1,author:1,django:[0,1],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:1,through:[0,1],dynam:1,concis:1,grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:1,framework:[0,1],hateoa:1,httplib2:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,realli:1,connect:0,doug:1,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:0,reason:0,base:0,org:1,care:1,lucumr:[],principl:0,assign:[0,1],first:1,origin:1,softwar:[],feel:1,onc:[],qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:1,top:1,system:1,stack:1,master:1,zeromq:1,"final":1,pocoo:[],option:1,relationship:1,tool:1,part:0,pars:1,mostli:1,eibrari:[],than:0,provid:[0,1],tree:1,structur:1,project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1],tabl:0,need:1,techniqu:1,equival:0,client:1,also:1,contact:0,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,object:[0,1],reach:1,phase:1,"class":[0,1],don:[0,1],dens:0,clear:1,cover:1,doe:[0,1],determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:[0,1],find:1,onli:1,explain:1,configur:0,apach:1,written:1,should:[0,1],kessler:1,disert:1,suppos:1,smtplib:1,local:1,move:1,variou:1,get:1,express:0,repo:1,rest:1,requir:0,truli:1,rfc:1,integr:0,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,wikipedia:1,urllib:1,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:1,overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,evalu:1,hellmann:1,compon:1,json:1,presentations_:[],life:1,emphas:0,great:1,athom:1,understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,servic:[0,1],employ:0,defin:1,wild:1,python_web:1,week02:1,pyramid:[0,1],briandorsei:1,lightweight:1,minutia:0,sever:1,minim:1,make:1,format:1,same:1,complex:1,document:[0,1],complet:[0,1],week:[0,1],http:1,kit:1,student:[0,1],extern:1,studi:1,appropri:1,entri:1,coursework:0,exampl:[0,1],thi:[0,1],choos:1,model:1,portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,virtual:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:1,easi:1,drawback:1,apache2:1,armin:1,blob:1,homework:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,xmlrpc:1,week05:1,read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:1,like:1,specif:1,manifest:1,benefit:1,either:1,page:[0,1],underli:[0,1],www:1,right:1,often:1,interact:1,some:1,satisfactori:0,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,noon:1,refer:[0,1],machin:1,cgi_exampl:1,investig:1,run:1,usag:0,confer:1,host:1,dissert:1,repositori:1,januari:[0,1],feb:1,chapter:1,about:1,socket:[0,1],constraint:1,commit:0,disabl:0,own:1,curiou:1,washington:0,curios:1,assess:0,chang:1,your:[0,1],wai:1,transfer:1,support:[0,1],why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,fork:1,form:1,criteria:1,github:1,rpclib:1,sqlalchemi:[],gain:1,rfc1945:[],pull:1,made:1,wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1],request:[0,1],pragmat:0,parser:1,lectur:[0,1],file:1,mashup:[0,1],scrape:1,field:1,other:1,test:1,ignor:1,you:1,repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:1,wifi:0,xmlrpclib:1,train:1,htmlparser:1,time:1,push:1,hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file From 7604e5748a13e977fb356a0e807ebb3a04dd0eec Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 20 Jan 2013 15:35:42 -0800 Subject: [PATCH 024/114] images for week 4 presentation --- presentations/img/apache.png | Bin 0 -> 10625 bytes presentations/img/bluebox_logo.png | Bin 0 -> 3831 bytes presentations/img/forbidden.png | Bin 0 -> 12569 bytes presentations/img/mod_wsgi_flow.png | Bin 0 -> 23498 bytes presentations/img/nginx.png | Bin 0 -> 4694 bytes presentations/img/proxy_wsgi.png | Bin 0 -> 24188 bytes presentations/img/wsgi_middleware_onion.png | Bin 0 -> 8554 bytes presentations/img/wsgiref_flow.png | Bin 0 -> 21611 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 presentations/img/apache.png create mode 100644 presentations/img/bluebox_logo.png create mode 100644 presentations/img/forbidden.png create mode 100644 presentations/img/mod_wsgi_flow.png create mode 100644 presentations/img/nginx.png create mode 100644 presentations/img/proxy_wsgi.png create mode 100644 presentations/img/wsgi_middleware_onion.png create mode 100644 presentations/img/wsgiref_flow.png diff --git a/presentations/img/apache.png b/presentations/img/apache.png new file mode 100644 index 0000000000000000000000000000000000000000..5a7bcd38546e41b64a922e0ad547b370e9c94ef4 GIT binary patch literal 10625 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 Cua`Ig literal 0 HcmV?d00001 diff --git a/presentations/img/bluebox_logo.png b/presentations/img/bluebox_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..229cbb4bd5a9d544361f4303b1aa89bf35c3840e GIT binary patch literal 3831 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 literal 0 HcmV?d00001 diff --git a/presentations/img/forbidden.png b/presentations/img/forbidden.png new file mode 100644 index 0000000000000000000000000000000000000000..69960b90a5a9ff7d4789d2d7b10ad431742a76cd GIT binary patch literal 12569 zcmdTrRZtvJkc$NgvbejuyE_4bd$2%och_KxySuvv_h7-@9fB_I&XK#i@4LUN`FIKj*A%Pe5f;O;`P#}95 zG+G|7rz$rjZz)q?PEi|G1wmg1&(nzLq5~f}1abN$7X&|uoEj}U040SK&GlDH$z+P^ z5H1D5Y=>;uXqzsxQ>i5vn_cmJNzbru2^$bfE_wJkwuacsJo$F#@hI56IDmtSiWBl3 zCj=MXcUuM9{{#A-y4?%P`UgnCDV!kou^_UG*&CVtdw?2<&i`@W7YWQ(w%{Ojorh<+U%)L4LCia+!u#Knhdq3uaG#v) z0q2-zE{)`EH4H#%=0+r~rd4GW!9RRAI8GZw`a|1kNbZ#^LDX={a}xq9PFMI$E(B@I z{-Fe$;$r%bpKOn)o4K*=4R`ni%mk^ZbG==dUj{0-E|#PO_8m1M_gU``83i$nv>gA@ ztlV!xE6G99wm}fqA2+-oJ8BZAKnX-1S;w|9I1pl}-Iw2X>sA+~A|eR? zHMn!nY9{P{Q*)uynbKZ@s#H#c%?8I;>MTB4gp>TAlwvq!8Rw*LL=v{2^%P9g5X^9r z3<6)*N?5&yPFr5@`0ek{I^D09YXavGW?1FO)I$soeLuc6Q2X&db2Crz*R`E7=TDpj z)r>lqMFygmxno&&2Hp>5j~#AzyW2YApCx80mPIex^{%4`MR=bOCOW6DDD}(h`B}L^ ziKY%9`6$d=VTY(><_-U+q(arJ!te2nx=qf>WBsS`@Uz!~nUfmeU@5}#;dn8`FTbG} zIR)Aci*TGZwcRjc5 z>Q%SjU82=>9bs4B)_=aEgSo#CEsO&+E=E8Y`U2OV{9RI8!RSjq&l)k1irXW%JtHr2 zGMx`>8xPAcrF6Bo`zYIPXITSS-yn|VB1&l#CjE$AtzFIsw zP_bw2P@2`(Gz)km7S#-78N9*gn43K?0C061-tSZ5L22u!JD_Un%}qLmmJ zF&A0GQ^n@ep~h(xm!9%oc2JsF(j~F6q7k5lZzYFGkRP>Cy80K2r2ZBizSOPUedHV& zgp3|mIP#VpktF;Jj|QWcy<6P8{YROW5RJbY-i%H{BJtdvIF3zy++8ymp{(|_l?aJ- z)PQ4iee9p!FcDSAoG8=H(9^dF1 zyJIlyx+CIUrW<8I-oY{zO7dqy%y%qC|C~rA;m?|I;ai;QRd=KfzjtH7v(xHbtM|u% z3GtZ{`wSBu*W;(vsn!Oj;3;f_`j_`k`xOuBkQp9!?ogxpYjKXNY!okVRE6JNUT%$V z%_euK{cSuO`I3a2HvG$^OGrGYu5A4R(wTCy*m_Sy$Q6plgkqRXc;eC ztD2ph4y=ZSn6<*}fig;`vRy9%XGRib`S0h9-~2BbAJ!)a2*Tf(g-nb-ShWzZZta#3 zD?>=D?Tq)9rwu+@Jui8}|%!kBDd> zXq9EMot%v$z0zot%h`u5!F8|moTsPe=|jHb-y;YjU{wOncNpAA3S-FW7KTtRi}o^_k{sns@CfwNq}RSoc9; zk#+l(`~G5=)<0h_GwWj2)dwJ=soCmA`IUzN|8GK@c)aSHZSzC`^KRbj`uS3R-AK)i z-i{(1J7QnQDz47KadC_f!G+8Ty5@_@V%_OC?(PClH$08|s09!`>;vvnV`4+K7ql2$ z(PdVNP*CylniigcaHiSEa+Z{kyuJBhD_2oS`-#ROw=VFX)<-9ELrulLwUl`Mq0gBm z_)lh9j`ouGdB5>F<>eK=A7@qnvrSWykj3xW9jFF>Omk0D9Rz&FtIt5^ztjBAEZ#gv z)xnwuT@a|IZ|aJ(Fn~)v8zHMRBuC|dO9W(O?ZyaT3u~|R!%!K#67I~`)-_!QBvfEPizIRT5u8HYA zXtKmGlyWGo8NMlUT#D!26rnG}MpGX9*Nqi8{kubD!w0Pc-zK;cERK=b`={jamErvl-B zBz$^7f4-`CXq!!Maf&FteXL!c^liN^pe`Z${rUQoqyFk=xA;N9Z=ROLc&#DoDZyvm zo*3Blc&06ByCzj7r%OqKdPXc1ig&p7%AYWH+2WdXU$dkdZ*wfXuVTpc6g{oq{f3s4 zsHSuWFMqxhq3|AFuN?^_>y+apXO2IN&8|E8Gw&`$vGd%#z-J0LAj00sZ!N%PLy?fb z&v#ap#o0C<3uhYFZ&>^>?BmmI1EGINc5pAD9xv%LuPkMLv@pla6Z%gK#bVkFdX=x> zQ&l%h+WALvGO;knJv?C&(Eq@Ydn(Pr3Z3o(*)#jaGl07;E z+9ch@m_N`)y!Ep52eTN-S$-T+$ke5Co=s9|Vb9HLuWu`xI>gBY`QB^W`1i;;;a`)~ z$Yx4a{VdtvlSz>QhpghOq{7q2U%!d6E z$ARfIeb+osnI^UkH-P>{wxmI=zA-k0vLs!xjcW#)SIpxY*3i>^QG`rxc+0=Z@Sn3w zWF;fhB|9Gd?0$LzcE7gSLUI#|_P90L@1fZYyMrW}vwRxbKGi={j(KT)U!kkSI6!_RF zruwhMP_H9KrzC9#YhI3T+Zg`Y9Ysswe}$l_+id-(wjWA{*r#jBQ}@rB$Kd|=;ptZY z#K%e&a%gJT540h;r2kJ)?6Aq5ATcm974RY|kAEtkPueiy)TsTXOFWpsY=uW3p{1qU z`s1E`f&)CNWl_n*=2`#M7&k)h%z>rUCsg?@-~wcIr@8OgPg%!pf3?LhI5-&DjeElD zjySr%9E`ri%|6TLX6;*ru8-~%O5DG++E-2|F6kV5j?!jTNj5_?mSn}5`a}|>X3`SqiMG- z4vIjP3qZA=AMM#W1UG*)+bz3$6A6j^(1JSLW!?CLhQO1wC_vwVCD$iZ<&B8-wV z3+`=%#R|eBUzv{q?IUg}NcZ@aNdZV?u-Iru!AwG9gENXu{2o?eVvY@Y(mHnu*F0|^o@GLz2Z>07VEcqEOG)5&hj^Kb#& zXMhUI_VmF41jFu;&AoUyw*4mZx6M|em_C#VBWro$;!U>;4~Drs6feOR*oFpn9(!w| z9yH|hjDeFAhC2eDGofGlIYaEvrYv0SKbO;P-M47`kpu-$zA|(;LQWDag{BFH+P^H3 z8m}0lL}zjBk5X0l7whrYS`hGDZhcyNH_5$t@Ewah?F9vgIC+$tIlQF#Fltllr~@e&wC* zX*QY^^?fKvJ#L7EMJDV8p$|D+-NZN8=qh1#M|_ZFXl;$i-tcVyQfV8bfZMq;so~3S zbwn)OmYZV_0&l!_u2R`9-lFHAyo914Yq{}^@;f_DuhxzoPRZSA%6Xy?0%ej#fca{t zZKWa*{y-U(sIWw%cxZor5=?b6m3nCZ!qVl8auu~XuPx4Y1~RfL2~mHbe7u;14y8C6 zgP`l=frXm9bkzG#V3;x&A^EhY@H|bzAEm6YM3r!8|9<=Q@Xn!$WJ^JNZ5s}o7Kwho5761vU#sSM?i3>?VS1O@48V{$$p-GvKAW8Yk3ySZ= z;2h}>3?US8r1*05qwqEwlz+@*^_D|}o2+vm9sqy`tiL|L*Hw|TiY@DgLk3>@$s~^L z(_jJN0Fu|7bcIF~pPyPgW{6t9sNdcrisn~>9jd@@^Q*N9O#Dxeg@nxfmXZjN6p{^v zsLHfut6~Zmos%9*|M(9Bk4o!-1|h5IGa^GrS?Jo4b^r)4N>gdJ$*k=Uz=&2Qvm61^ zsy41ROFwImZr*k@-l5dAoZT(zpYC|-0;!2Z%{`>D0i ztNB3I{zE|w<{>r9Cr;j8l zA`ChVL$Qc9NkNq(7q$R6%!^Sdg$fa5*yd804*G>Bzfq474r&v+35k=%vj|ZjuL{v2 zrNYJJObfQ7bS29-(zR80mL-(}(4+p&HJj?cx%`gMZQ1fLb1xH76$A5 z&K}ahZ}PA@sq>+;r^HPw1*e85ub~c?R+Y`CxwxztWS`vKj0pPNR1vu5M^SHi- zKzHoj2w}^-Qp%zglHM`HnD#E zLrn_h&UZ(aUb?#kC4Kp~#1=+L`m((QaP-=;bHLf5SFxSqOAk_G1O1Wqo6m#ZZLvfr zvF&bi`Ed<<9sn)U>tUb`<~n==0OS>n2+B$K=u#~^9A{kt_$!|4?oqaGs;by4#xbg^ zwm%WKT48Mmmd1oSocFR?Ojcgq4_^D4NT)1@HvYP8Sq^>bdhd>b{OxLO-TA`g?Q4sS zvLUqRU^_EQ_4BYMfl5DG80n}-FZGULcYlE}_#Eq|tY-LY3%tK$UKMPGO^QBW$WK_5 z?WsI*9_K@nXsu!|F5TPgg>E;WlTA^8|7V>P#GXmtg)6u2)s-h{{KXb2yEogRN4|Hh z^XSR>c|wJMg78_^$$@ej@%`FSbu9Y8oLp6!uxcBOnEU>f!R2L>9bn%@o>lYa(aA}# zd*0Ob6wK$3wG{=PX~e!sqMq#KfhSE61E5gH>86neFF;736vE zYl3LVrCQtk^=*B#k;{1QsEkc!08hAg>$Jz~H*8O@>|oc)WmUuVJWmrr?#(PDs$hiSXr_f~>) z-S`$RE(!3)+g~VsSKSzcE)Bp1M)X7@HWwGRqTythonZmE^*xxiXP(NgQr53$B+ZT_ z818I|4Y{Wxa%c)*4<0&$CfVM!F8#iJ(41EZbhXP0Lgznw7MRFP>swnR*q_MkjZ-|Y zKU{SDKKjn(GF-d!qkH0NRom*_{_&mfzN+2!BO#8sc478<3e@zju0Fenb~EKT60BRC z$O8aIf|;a0`RjFG1E2vhuiH*6i~7lLZy5lIAfc|$T7Hxpuv>HD2K{R~CJ+~ut%%ngzG-YUfKFpjNY^mgMQ@S=p^ zAE;@N+4oZKJM^&N7XgI^fW9b0Y3hRW_aXuT07Na9+!te)ydBP09%HsIU)OH>sR=`< zA*=xkugeBv1})uz#(v%?{va{mDn`z|nigwYz3A*AE}khCll$c=IO7ZeTrHTi4}Y z9N<56-th@GnqUZIJZWf@5ft-2{rWIPP3+2h4}Wr3JM5)dAPlJSKBWz-^FkEH9kQw3 zYr#&?>Q`Mn4aMnzpPRf`m0dq^1x%8m7q^AuaL{93jWMJ&i$C9_RrbP^A2O? z+rmgSDpYvpRkhF}K#6eE5k1WXgfBjOd=vKY17A4#;-l-iWn=zpr$d380kj_lt!Aa^a>(d4T#Z9=#m?B((>!4k}>7n z{-6cYmZ!{0@rnTZ62mg~kewN-%Zh&n8HW71JJA(bx{Tf~Ts>Ad?)@IB0GVjRXzCnS zlte?;xG9R*Uz%T*2>MfH?8qa!oM@6%2P|~vk`$dzbYXw(B|fpq!tMvWjt>j7Zt#kT zYLmc;j%ds+?Bq@C(kFsG@tsX3&XcZ8El2wbEju*F5Xv3hF+q#uYBkNYExu;9`()kz zEf!u~Er;>RGiY`ClIX>Y5e}cLusQv{Gf-Y&llj6-Xu+HhBNAIsSfScD{NVHS+wY0c z?b+v!#b+t+#dTpq_$*(z<=!-=ML}hy7@gbid?vo)^$9eokmfT_NOW}^EKCWwi96WP z+w^pAW|fkdvm(#s#?#XGL=Wc*uxheBvK;5acbRL1msk9nzie*gJ!59tsyq~qApceI zd&e^L;OU~5aE)7fX-%n?upsA_t{c=X9}8zuO760`p?CfL3mlF2&r5a7J+gWOPh}R) zt<^)k%o&Kq-Jg=Ntd>{>7js(p%=K0mfPR5^^1)`wSAaR27TyJ+)jU9Wv{_+R)eTeYm-yyZzIVp#8IdqLPrF zN1y>U#)kpv>192o?W0H~4mEUNHS{ViPE(dMgxnxy$FRF(Ogs?y;^scn1&I8fI+{Fs zvber6&cWh$Mekk-*gC?A?ym0v>!%T=_1mBXK?p>F7r?@69PC^nb+?+k^C&~8JB1T0 zWYs;B$`yJ6n@U@Zt1pIfdqhLe7d zXOzB3g8yzZZRNTDA7<|#Ew0O?8t*-$UC(FjT6_O$B{-&Vk*KJ8 z$725~4T$Un?$Q6-=Gp&Poe1kf_bQmyig0wFv7W2z;E4$?dQ$q!sgYdEA{;Y7w0G;} z1MYfaOHTGVv#2(7uoy7VY6uA6*t9k@F~PkqG3fm*>jZ@FD^Zp%7|Q3s|H_fEKX4v< zRRbfqRJQ!_k_E(dgy2KO`R=inPU?^micnoWPfUtJcF)?f3HEmdp|zfw-vayCSjzYA zK~|9*U@eZb^Q&hm!rQjKP0G>?fUfRpC;IMk3KgEq`sM^v<%XLy`n$WfwocE>i$HP* zBBQ_5~=3CK&(?hoO)ZDV;*Y0HO$kgn*K`*(bvI0Qu)8wg0Fe6{el7oL;#OE&q(ZU+v1 zBomd?OCSCZfx}H#FGP|et9#B#Y4I)=-0iv zNoZ&?3dyC3h(KVjTD3^4np%wjKsG5WY3}@%&}2di9uVAM8(ghCR>`4i;wGvC3ez)4n+lMef3Hn)QtCV3B%~*to_N&jK@a?I^0+c#< zQh(~nuj)m*pJ5BX(t4~f{N%`7APOdvS|=J;5Bo(|MCKWYNxnfCtM3rw)$OiKiwOUy4IE^hS2Bv;g)r7?6pV8aOb;S107y!H|V+`xd)##UTqT8u-m>iH03$et(=q z0P`b<_H%^yK#NjCqVa{BbMk>_V?hi*xGcCPs~iKBkKX_8T1^E5Wqiqa#GK~~a^LTH z>wcL9HWPXT-tOuYl*OAokFXyTnMFTIdNx?x!cmPWMi#bc`b`$6@toAE7K66c-_4_M z<7CToW|7R>177Ne+_@%spMqB`G)o*?MqOfHs9!D0WhKMRbyCL zD_I606Kz6cgIGfNB9=-4G069s41AHo=HHPz8kSTMvwA}jI;(g7*MypktlU%vKoiTL ztrlBSO97M+d?S$_=40Q*Qk4}lMf|*2ni{D@0wmFnr%m>dR1|4y1>2X;y7~&~${&({ zixtB_`T{MJ$gpBGMJqM-Da&RYbasv`h(Re$CPJDL9fGO3YHlJMBu*jcNnT*0-6(&V z+tnongpU6UfFY+1MU8&5KEQT5h2&qf=$a%$>7Js)Kp76PK`V@tvM69;^=XTji-nFQ zIiAJeb`QTQO7~*$ekUflUDP2b538ab%N=k#ZFwwTd^S%aknAIkM|@3Wm+}P`sF6q2 zD~tOD6q<#K*zp7gCeu!P%X1y)$SdyI&wV{J*=(V{3QN&ha91!Bz%Z&G;z*D7Gt#`G zfJ`h0qGH~B@m&Sh@@js9OJrOuO^2$3tIL?s%nLS-SSsK)B)9w!gNki3jrq$0-Tr&r-`)V1nW)^xnD_28YaM%*(D zqYy2WsFT$;rkRsR_GH12D(>3jMKpYVXwg%2eL4AYJgvK_On-=^&l*4PB`QT}$fR%; zPTLuPmy4D*D+e)>Xj%1L816eA{Mu|cKoJ#W^HWzU-gvyQAG0z3Sw75%SkXUiU|Yr3!yc}~H< z$`qZLS`y)6Gii_*YE)aAWB8BC(Ea$2IyD+d<2gN>l0P-YTMcBo$>SD~8ig5=#sTG< zUMTIBR@!<-b#EvouRlbXHabx|q-P`H<3L!7@RPvk5VOt- zcW8FhRa&Z$4$DbJ3{KM`xMe^r^iAI9+c9;gG9g9D%IvJB&!%)yV(Wys0$Q9Yg&;8B zgREQ$nALg4G!{Y*nK-gflkr8BFQGtXen(UAaQ-WIw!=9(^JD4;0IXHHZu#Q5n3WCE zqo;-k(xAntGGG;GF<4sr)kUA{4w*E@Qh0%FZV#%YTDzjSN#C}W4 z<>dp6&`4CZ)-MqFMi~({-6xpQsT)+1NwwqaSyC!`fZZKAjSm%S9t3P`EqvT=(X2dc z=yj&TMowWuphm5_BWq&Zz{4RmS&^*=x%#MJP+3E>6;+N%{vn~NDW%EF0AreZ3OW39Q`7ll|u|gERrjnvy_UE%GVuV$)Cm^QfnY(3w4tJ<(U4F9MCn= zpE-cG4s)2*t5jjY30r*M)!-E`8aXLV2tx5GJlK;O$F>VUff?Y2`*DS zEDx_iVohk2YP>TQlJAfIgLW!xhxgb1yolrznS-E9kb|= zpgo)6;XIsll`LoS9QrUuPvKDl7>E1M1^uTk7$K*aPMq!W>{3wV7%|ke2K957r%KClx2a9%+sGZ+|H&04kKb43clZA^?{1bC+n?FH~j>>DFw#hU=wk63t78WysujMRs- zmG`vZu+yAYMpXGQ%p;-%cXf>-#?JB~rSB`ZufsVu^FC8$5UR1Zu~+HpO%>))zb#WL zBs79n*Dnp(;BWK<5K27imQ_<&P@?fLz(N^mmL`oC2#OGPHP&xs0YTZnbQqm>6%pe$ zTF&)bt*iBeFp3ade5c_7@BugbhNkCO#3SJqDl%U*Zqt0)7maI}N-CTN&6but}hI)U3vTHXkI7SpZ~MeU@f^NsBbcH48L6NXF~Yn;NI8v3N6^ zuQ3PF*hNaTtYk(OQc7etqu|Yw)_EVKZuVR;JUsqaq@>1mOBYmHcx&sdy zq%G1VxO4d~ovv>Y0)b!tTfD}M+m}?&WU{{tzV{K_-0KemodzAiIM#EfSc*UrXxdeA z73yQ~sFT7W=1-ukvU-_v<9;QsdL44Gxmv}tfog$Hqbz62Gk-O>O|!`I0|xI)e?$i+ zwUY>QR*f6oxm-QBovOwDnv(`q%4J%GMtL%O<sb z%w=uDT>44&4oS~IFT0YnZtORGACvN*OfGo_o7Q7wnnEVmSp{ox2GcZ=$9E>pqIdqB zF{ZT9h=1R^LACC<1^-#t?>YP3v8$cdH#W$B`6dA`eRtL}SES94XU5vD-$RW+N3_OS zMqH88zZBvXOJ}vz>GCp@9CMV>>(}J6$AEm=O$@kLcYb1fD#{xTT_yH}%owrLJvKrF z@u^5Fkn4HGCGcG%mw}<{PrvE44)?GdnKY@~wqpv=h|m^xx3&*1U*g15 z*X>at>ln^<3VpTN>|;8$4aCaw4ULQ-S3Hn1sy9L734KgNACpxBW**xN8$2kwysQwX zFCNxQOoreabL!T?5wa0s-_HjQl-295gj|YIchAvm@5EDax_091Z2TYpIsm>%Do9j| H83z6brJgmV literal 0 HcmV?d00001 diff --git a/presentations/img/mod_wsgi_flow.png b/presentations/img/mod_wsgi_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c2e84d4f4ddce50fa1823e128e8d563ee5c3e2 GIT binary patch literal 23498 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 literal 0 HcmV?d00001 diff --git a/presentations/img/nginx.png b/presentations/img/nginx.png new file mode 100644 index 0000000000000000000000000000000000000000..d8e9e1fa704f18d071e4ec33a24f17613813b2eb GIT binary patch literal 4694 zcmb`LS5ySa(z}2ZLoY_E^e!EwHz@+41r<;P zLBLQVASEEZ1adj+zTDTd)_s^g`{AFp=4EE@|BKhx)ug53qyhi{wAxzgh5!J`gX_EI zEsEb93!Y$r_CKv)pF>*2H?wGrSpRBwF00BpZOb1`E6RlLO(vx)sX4;JJnu>yzZAo1UX|%84fGF2!+3=UamO*``icy z^!dNkdrBdgJL4JKNil*D1xq7E+JN`Mo>xuS`b65!wme7RdRA_$cr=XTD*qUwj6>FJykj5Mu&IguTfD7BegOo)h~(J=8sbvpr0+=KS{TlwhdvBKsIF=clRNwZlK_fWaq@)Du*gFQe z-;Vg%d(lwZ75aNsS1)O4ahXv)>_~EQhN7iqshq2e&;8PBp|_E=IYsYGY4V40G*Gt1 z-{}QYrnJJ-`S}@l^$NZ>m<`9fu655oF#=l3wA>Vv^XCHQ31|c$ zMq?t=jc5!C-3#`Zs4;6`Lp~`|GP8Rn3e+j3$)?KveA&2>LroTe-fRZ*>bxW^Sfs;! zdf$}vGzsB-8WH0QA=TcJ9gAg<9M!M`^xZRyWf><3Odw3kh5Jd<#XU{+c*I*LV3&lU zBGDz4zulz(tJJPw!puy4V(MtQcHk_Cn>x(EFfzm#IM}HWa{Uxp8|VFCt27^w8(%%Tna_rGc@Ge!gE(BTNMj6j~bmMWPDSiaoOZh?6ds`Gj?A!h;0j zM4jFV)nqcMt9NpAe%U_=R&{KDB@SDT@Ku3)U!Zkt7Iic9RL;-`eGkvU-NpH)p@jLgXN-j;l<*`IxCIrCCpjHV7IJ>Zn@SUsY{Z|nk_et+yZu5@`xoE9T zq{fxKaB~%B7HEe(o3OZQ_&k_!!hfqF8Ol(B0 zXZbpVmfd|kWBNM4NB5XpxzFl`s1-mS3;!bcjfZgJM=Vl&LG=CG_hhR@qr}-w<=kAW z+Os*~bMEwmRI#XFR&4fNvzg^5(HVM1(wH!7@!IQsH^G%)gfe9DisKcH$hfhr-q=`! z4%2b`xl&CqO^G{)WIbH5{yu$P!&JpbYm+_7mB9RGMHP{JA!;p5RdSpvSYenBvQ8LU zP1pJ}c*WAv`D^y^$}ueisB9}YDqaq$f%HO9@E)snFi$3q~oZw31mS*+Hh0D z^#B%s7sdmlR~KSHQh55%V0uj!JixN?Ky|ZUyIQ4HMFp zTnl$U1jv3ihD*0$Zq>r9-iYNMYjZ31>g=ixO00~ogE?Vi(sQS|gdS&*ePJ$G|CfCJ9ivlL@b(Y_698!2L z0uM=(x9LkP!BqJ?;ZKxnZUXLqvO4aMlihNRv327&n3llkT}jjBrDkS-`fbEX16iO; zY$aGS;t))=`HQqm}f_ZK0&`T)8{TGe<%qGIbX@4}?E=-^?Ae zb83k#r3RG|TlDE1B=SFvF~l%wZ}gTKi|$V^De~Hup9Y?*nz0JoOSz{+$FyKutPKQE z6HX1_7q(k@54(um$~7PHRgqlYi(~m5WVQz|?@H%_M>XZG8z73jE8X_}llxHrLjU}- zuH8F=hiXAYvT<1B)_1Oro3=h?-;BDQExQ8y`BePT36091FvgVd0)nqByf&P2=zFvYw`DpfdAGp_NK#c;X zU=6O;zYHbX!?5`)$z!u2M83NZqXqQxn9|uX@Xd9W4*7j+)>fJg{Nii8Pwv2r-1lAh zN>O=*j2b(aOwOkCtD0Xi8po#9+n#7nH~p~ivni=d%+l&XWC9hJ*OreX<9nI0H$7fw zJA1irYkGhA*=w>6e2Y3Z0obaZ{5r4Sp1M>20bo1W!=_T8K1)x$14yF|>B7;?zao-+ zRS(A;7db`PHE+w-m|=MyiKeMaWwUr(?ZVqR9{DCN!Ck8e>aNy}8YXSU%{{LR)P>%C z4>y_jsynTzqQ?Fc`_&4KD4ZB>Uti@g3djXvhj(a`!=^eX=<4@aj}hHLRr~0b;oe>J z>KXNd{zy`sIj7b}#P~ycm2?pjKwIfam7#UcgMg*VVY-{Vf2TbT#eTq+>C>Kj$o4&# zp@OJoxX%9hP-#;|C?#4AZF1REJ{H$~=Jv%z@!e$jwC~PojVqRtrt32+`fWb_rwHFw zftTJyr*2SD*ie-93$>F_gV9-{}8X{|LNwV~=pl);E%4W$Y!)bhkHt<%kc*VIS91)*$bR&1b zo>v99`=Q)^dS6*8^LzNT&;2uMKrnrw`k>`Z$IZ8h3P1J&vEwxzC$5EFK0#lRhK*%3 zXIj2I?cccl){mo0jIVZ&w0H8Sj5uB%_~$8KKA_O3csJZfK53>J3*UZFX<;Cl2DoDuW{$*9a%=iEFtLDa`t^h-(^ykrzRcyL!e#>nXl<2 z@~M$GJcjF`_}q zlCk5Si&W)!s0=0(IRPW1erSQC&J>>sXJw@5MS^tcI}@l|$IEl9T0e;zL_?!{MJI5h zaZM(IO=fitt-nT{np3_yiF7UM(pBWX>PIA0u=Gz$e(IZmC(Qhs8F)Pk&HYtz%MIoF zzUHgb@fUnORTlfR+&|?c(Yn7M-Je!B$&?kwuvG>NEhlRxt5yEe!AUr=4aQtLNGF=Y zGT=P!lJO}K@*#iH#1)YEo#rb`^(yqubFE@A%1mv=OkEAsjW#<{bA2g$#2@NJ zjT5 zhy!&y+?3X4fg*~3ry`hWq9@M7vSyhBRQ{K`NquZ8BziHm3FI%VGYrv6S=&@Har?dD z$Lfv`cXikjdb65!H&5&$lgz?0=-f)Qb_~`YJV5PnvlVx3mu0wvbZEL?f1B_eYCmzW z6O|JUaUmmmIZ=eZ8`5!Jmwb4;fAEKl4FHhx7lkfz{V=}t0i8&qLERUcg&oM=qM>0##2~wyK|zq zFXzMjw`obDp9A{bH5kzK6W_mdBe40bMBYG>v{(f*VN1BAXP6*yRcyC)H4Xi#=AnP> z+k29S73&GNkCmkrZzEzB8)>TnnL137BR22ii!rPNeSze~N?(xI4nIrC!3hVe?cM5J z5s^m5LmDi78CO8RU$wEXWm020+4MM|4}LUrJ8c%kP)i^<9;S2?%>PCnUTkCsmL0)4 zOl_bie;;AjgqpWLQ(Pkf5T7f=@11f~AsWIP&bTgIo;*ITQU539>4fbIJ2H{NaDZYW z5scoXMA!)6bpMit`8#F_3B8REv>y7_Ghqz5&1b%JwrsO9i5egC&#wMYgN}TOPtw@I zLCgHggj0c6hHVr}W3s@GvvSLC(>;{=JG7}A)zbgVCzLe)D{k>$VvheOIgwt7`4l-m T6bHEmMF4G>uKEX6Tjc)$85RS_ literal 0 HcmV?d00001 diff --git a/presentations/img/proxy_wsgi.png b/presentations/img/proxy_wsgi.png new file mode 100644 index 0000000000000000000000000000000000000000..a95aec03a0b6f0b564a7f110c91582fce9169993 GIT binary patch literal 24188 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 RVjw5aVS%?XuQK(F`yXsWP?Z1x literal 0 HcmV?d00001 diff --git a/presentations/img/wsgi_middleware_onion.png b/presentations/img/wsgi_middleware_onion.png new file mode 100644 index 0000000000000000000000000000000000000000..17f486b240c30276ddf29762a8d0174e9f18e63a GIT binary patch literal 8554 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 literal 0 HcmV?d00001 From 85fc4dd03c4842a31cfb7decda6f7e73bf01c66c Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 21 Jan 2013 17:44:23 -0800 Subject: [PATCH 025/114] * updating with changes to week 4 presentation and course outline --- _sources/outline.txt | 24 ++-- outline.html | 19 +-- presentations/week04.html | 262 ++++++++++++++++++++++++++++++++++++-- searchindex.js | 2 +- 4 files changed, 277 insertions(+), 30 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index cbccd589..c9829bc4 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -79,7 +79,7 @@ You can read the assignment at http://github.com/cewing/training.python_web/blob/master/assignments/week01/athome/assignment.txt -Please complete the assignment by noon on Sunday, January 13, 2012. +Please complete the assignment by noon on Sunday, January 13, 2013. Week 2 - Web Protocols @@ -162,7 +162,7 @@ You can read the assignment at http://github.com/cewing/training.python_web/blob/master/assignments/week02/athome/assignment.txt -Please complete the assignment by noon on Sunday, January 13, 2012. +Please complete the assignment by noon on Sunday, January 20, 2013. Week 3 - APIs and Mashups ------------------------- @@ -259,7 +259,11 @@ Bonus Assignment ********** -On the way soon. +You can read the assignment at + +http://github.com/cewing/training.python_web/blob/master/assignments/week03/athome/assignment.txt + +Please complete the assignment by noon on Sunday, January 27, 2013. Week 4 - CGI and WSGI --------------------- @@ -296,9 +300,7 @@ Prepare for class: * `CGI example scripts`_ - Use these examples to get started experimenting with CGI. -.. _CGI example scripts: http://fixme.crisewing.com - -(https://github.com/briandorsey/uwpython_web/tree/master/week05/cgi_example) +.. _CGI example scripts: https://github.com/cewing/training.python_web/tree/master/assignments/week04/lab/cgi-bin References ********** @@ -320,16 +322,20 @@ References Alternate WSGI introductions: +++++++++++++++++++++++++++++ -* `Getting Started with WSGI`_ - by Armin Ronacher +* `Getting Started with WSGI`_ - by Armin Ronacher (really solid and quick!) * `very minimal introduction to WSGI - `_ + `_ .. _Getting Started with WSGI: http://lucumr.pocoo.org/2007/5/21/getting-started-with-wsgi/ Assignment ********** -To Be Decided +You can read the assignment at + +http://github.com/cewing/training.python_web/blob/master/assignments/week04/athome/assignment.txt + +Please complete the assignment by noon on Sunday, February 3, 2013. Week 5 - Small Frameworks ------------------------- diff --git a/outline.html b/outline.html index 76a99ef1..5449011a 100644 --- a/outline.html +++ b/outline.html @@ -109,7 +109,7 @@

    Bonus

    Assignment¶

    You can read the assignment at

    http://github.com/cewing/training.python_web/blob/master/assignments/week01/athome/assignment.txt

    -

    Please complete the assignment by noon on Sunday, January 13, 2012.

    +

    Please complete the assignment by noon on Sunday, January 13, 2013.

    @@ -172,7 +172,7 @@

    Bonus¶

    Assignment¶

    You can read the assignment at

    http://github.com/cewing/training.python_web/blob/master/assignments/week02/athome/assignment.txt

    -

    Please complete the assignment by noon on Sunday, January 13, 2012.

    +

    Please complete the assignment by noon on Sunday, January 20, 2013.

    @@ -251,7 +251,9 @@

    Bonus¶

    Assignment¶

    -

    On the way soon.

    +

    You can read the assignment at

    +

    http://github.com/cewing/training.python_web/blob/master/assignments/week03/athome/assignment.txt

    +

    Please complete the assignment by noon on Sunday, January 27, 2013.

    @@ -278,10 +280,9 @@

    Reading

    Prepare for class:¶

    -

    (https://github.com/briandorsey/uwpython_web/tree/master/week05/cgi_example)

    @@ -298,14 +299,16 @@

    References

    Alternate WSGI introductions:¶

    Assignment¶

    -

    To Be Decided

    +

    You can read the assignment at

    +

    http://github.com/cewing/training.python_web/blob/master/assignments/week04/athome/assignment.txt

    +

    Please complete the assignment by noon on Sunday, February 3, 2013.

    diff --git a/presentations/week04.html b/presentations/week04.html index 38509e23..c8a5fef2 100644 --- a/presentations/week04.html +++ b/presentations/week04.html @@ -68,6 +68,7 @@

    Think Back

    Stepping Away

    Let's think about this same problem in another realm, the command line.

    +

    Windows folks, for this next bit please open an ssh terminal on your VM.

    In a bash shell we can do this:

     $ export VARIABLE='some_value'
    @@ -179,6 +180,7 @@ 

    Running CGI

  • Some other HTTP server that implements CGI (lighttpd, ...?)
  • Let's start locally by using the Python module

    +

    Again, Windows folks, this is going to be most easily done on your VM

    Running CGI - First Test

    @@ -205,7 +207,7 @@

    Did that work?

    Break It

    Once that's working correctly, let's play with breaking it. Start by making -the file not exectuable:

    +the file not executable:

     $ ls -l cgi-bin/cgi_1.py
     -rwxr-xr-x 1 cewing  staff  42 Jan 17 22:30 cgi-bin/cgi_1.py
    @@ -263,8 +265,8 @@ 

    Another Way to Break It

    cgi.test()
    -

    Notice the first line of that script: #!/usr/bin/python. This is called -the shebang (short for hash-bang) and it tells the system what executable +

    Notice the first line of that script: #!/usr/bin/python. This is called a +shebang (short for hash-bang) and it tells the system what executable program to use when running the script.

    @@ -275,7 +277,8 @@

    CGI Process Execution

     $ ./path/to/cgi_1.py
     
    -

    In fact try that now (use the real path), what do you get? What is missing?

    +

    In fact try that now (use the real path), what do you get?

    +

    What is missing?

    CGI Process Execution

    @@ -371,7 +374,7 @@

    Recap:

  • parses the request
  • sets up the environment, including HTTP and SERVER variables
  • figures out if the URI points to a CGI script and runs it
  • -
  • builds an appropriate HTTP Response first line ('HTTP/1.1 200 Okrn')
  • +
  • builds an appropriate HTTP Response first line ('HTTP/1.1 200 OK\r\n')
  • appends what comes from the script on stdout and sends that back
  • What the Script Does:

    @@ -515,6 +518,7 @@

    Apache CGI Configuration

    Allow from all </Directory> +

    More about Apache Configuration: http://httpd.apache.org/docs/

    Setting up Our Script

    @@ -591,7 +595,7 @@

    Alternatives to CGI

  • Each of these options has a specific API
  • None are compatible with each-other
  • Code written for one is not portable to another
  • -
  • This makes it hard to share resources
  • +
  • This makes it hard to share resources
  • @@ -801,12 +805,246 @@

    WSGI on our VMs

    How about WSGI?

    Let's find out.

    -
    -

    scraps

    -

    How does WSGI differ from CGI?

    -

    Is WSGI Python-specific?

    -

    How to run locally

    -

    How to run on a server

    +
    +

    Apache Modules

    +

    The abilities of Apache are extended using modules. You can list loaded +modules with the apache2ctl command.

    +

    Open an ssh terminal on your VM:

    +
    +$ which apache2ctl
    +/usr/sbin/apache2ctl
    +$ apache2ctl -M
    +Loaded Modules:
    + ...
    + alias_module (shared)
    + auth_basic_module (shared)
    + authn_file_module (shared)
    + authz_default_module (shared)
    + ...
    +
    +
    +
    +

    Another Way

    +

    You can also see which modules are enabled by checking the listings in +/etc/apache2/mods-enabled/:

    +
    +$ ls /etc/apache2/mods-enabled/
    +alias.conf            authz_user.load  dir.load          php5.load
    +alias.load            autoindex.conf   env.load          reqtimeout.conf
    +auth_basic.load       autoindex.load   mime.conf         reqtimeout.load
    +authn_file.load       cgi.load         mime.load         setenvif.conf
    +authz_default.load    deflate.conf     negotiation.conf  setenvif.load
    +authz_groupfile.load  deflate.load     negotiation.load  status.conf
    +authz_host.load       dir.conf         php5.conf         status.load
    +
    +
    +
    +

    Available Modules

    +

    By default, not all the modules that are available have been enabled. You +can check the /etc/apache2/mods-available/ directory to see what else is +there:

    +
    +$ ls /etc/apache2/mods-available/
    +actions.conf          cern_meta.load     ident.load           proxy_http.load
    +actions.load          cgi.load           imagemap.load        proxy_scgi.load
    +alias.conf            cgid.conf          include.load         reqtimeout.conf
    +alias.load            cgid.load          info.conf            reqtimeout.load
    +asis.load             charset_lite.load  info.load            rewrite.load
    +auth_basic.load       dav.load           ldap.load            setenvif.conf
    +auth_digest.load      dav_fs.conf        log_forensic.load    setenvif.load
    +...
    +
    +
    +
    +

    Adding New Modules

    +
      +
    • Debian/Ubuntu provide pre-packaged versions of software like Apache
    • +
    • The pre-packaged versions will come with popular extensions included
    • +
    • We want to install an Apache module which is not included in the +pre-packaged Apache
    • +
    • We can use the packaging tools in Debian/Ubuntu to install it ourselves.
    • +
    • The packaging tools are called apt (Advanced Packaging Tool)
    • +
    +

    There is more to learn about apt than we can hope to cover here. Learn it +as you need it.

    +
    +
    +

    Searching Using apt-cache

    +

    You can search for a package using apt-cache (apt-cache search text):

    +
    +$ apt-cache search mod_wsgi
    +
    +

    Once you've found the name of a package, you can use apt-cache to read the +dependencies it has:

    +
    +$ apt-cache depends libapache2-mod-wsgi
    +libapache2-mod-wsgi
    +  Depends: apache2
    +    apache2-mpm-itk
    +...
    +
    +
    +
    +

    Installing using apt-get

    +

    Okay, so we know what the package is called, and what it will require. Let's +install it! (we'll need superuser privileges to do this, so sudo)

    +
    +$ sudo apt-get install libapache2-mod-wsgi
    +Reading package lists... Done
    +Building dependency tree
    +Reading state information... Done
    +...
    +Get:1 http://us.archive.ubuntu.com/ubuntu/ lucid/universe libapache2-mod-wsgi 2.8-2ubuntu1 [63.5kB]
    +Fetched 63.5kB in 0s (197kB/s)
    +...
    +Setting up libapache2-mod-wsgi (2.8-2ubuntu1)
    + * Restarting web server apache2
    + ... waiting                                     [ OK ]
    +
    +
    +
    +

    Check Your Work

    +

    Are we done? Remember that command for checking loaded modules?

    +
    +$ apache2ctl -M
    +Loaded Modules:
    + ...
    + alias_module (shared)
    + auth_basic_module (shared)
    + ...
    + status_module (shared)
    + wsgi_module (shared)
    +Syntax OK
    +
    +

    Wahooooo!

    +
    +
    +

    Configure mod_wsgi

    +

    Like CGI, mod_wsgi requires that we do some set up in our Apache +configuration.

    +

    Open the file /etc/apache2/sites-available/default in a text editor:

    +
    +$ cd /etc/apache2
    +$ vi sites-available/default
    +
    +
    +
    +

    Adding WSGIScriptAlias

    +

    mod_wsgi uses the directive WSGIScriptAlias in exactly the same way that +CGI uses ScriptAlias:

    +
    +ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    +<Directory "/usr/lib/cgi-bin">
    +        AllowOverride None
    +        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    +        Order allow,deny
    +        Allow from all
    +</Directory>
    +
    +# Add this line to the file to expose a /wsgi-bin directory
    +WSGIScriptAlias /wsgi-bin/ /usr/lib/wsgi-bin/
    +
    +

    Save your work and exit the editor

    +
    +
    +

    Give WSGI Something To Do

    +

    We've set Apache to look in /usr/lib/wsgi-bin/ for wsgi scripts. We need +to make that directory since it doesn't exist by default:

    +
    +$ sudo mkdir /usr/lib/wsgi-bin
    +
    +

    On your local machine find the wsgi_test.py file in +assignments/week04/lab/. Use scp to move it to your home directory on +the VM. Then on the VM:

    +
    +$ sudo cp ~/wsgi_test.py /usr/lib/wsgi-bin/
    +$ ls -l /usr/lib/wsgi-bin/
    +total 4
    +-rwxr-xr-x 1 root root 955 Jan 22 00:06 wsgi_test.py
    +
    +
    +
    +

    Reload Apache

    +

    Any time you change Apache configuration, you need to restart to pick up the +changes. First, you should check your work to avoid +crashing Apache:

    +
    +$ apache2ctl configtest
    +Syntax OK
    +
    +

    Okay, our syntax is good, no problems there. Let's restart:

    +
    +$ sudo /etc/init.d/apache2 graceful
    +* Reloading web server config apache2           [ OK ]
    +
    +
    +
    +

    Looking at wsgi_test.py

    +
    +#!/usr/bin/python
    +
    +# This is our application object. It could have any name,
    +# except when using mod_wsgi where it must be "application"
    +def application(environ, start_response):
    +
    +    # build the response body possibly using the environ dictionary
    +    response_body = 'The request method was %s' % environ['REQUEST_METHOD']
    +
    +    # HTTP response code and message
    +    status = '200 OK'
    +
    +    # These are HTTP headers expected by the client.
    +    # They must be wrapped as a list of tupled pairs:
    +    # [(Header name, Header value)].
    +    response_headers = [('Content-Type', 'text/plain'),
    +                        ('Content-Length', str(len(response_body)))]
    +
    +    # Send them to the server using the supplied function
    +    start_response(status, response_headers)
    +
    +    # Return the response body.
    +    # Notice it is wrapped in a list although it could be any iterable.
    +    return [response_body]
    +
    +
    +
    +

    Lab 2

    +

    Let's repeat what we did for CGI with WSGI:

    +
      +
    • In assignments/week04/lab/src you will find the file +lab2_wsgi_template.py.
    • +
    • Copy that file to assignments/week04/lab/wsgi-bin/lab2_wsgi.py (note the +missing '_template' part)
    • +
    • The script contains some html with text naming elements of the WSGI +environment.
    • +
    • Use elements of environ to fill in the blanks.
    • +
    • You can test and debug changes locally by running the script (python lab2_wsgi_template.py)
    • +
    +

    GO

    +
    +
    +

    Assignment

    +

    Using what you've learned this week, Attempt the following:

    +
      +
    • Create a small, multi-page WSGI application
    • +
    • Use assignments/week04/athome/bookdb.py as a data source
    • +
    • Your app index page should list the books in the db
    • +
    • Each listing should supply a link to a detail page
    • +
    • Each detail page should list information about the book
    • +
    +

    Use the Armin Ronacher reading from the class outline as a source for hints: +http://lucumr.pocoo.org/2007/5/21/getting-started-with-wsgi/

    +
    +
    +

    Submitting the Assignment

    +

    This week we are going to do something a bit different. Get your application +running on your VM. Then add the following to assignments/week04/athome +and submit a pull request:

    +
      +
    • A README.txt file containing the URL I can visit to see your application. +You can also put questions or comments in this file.
    • +
    • Your source code, whatever is up on your VM.
    • +
    diff --git a/searchindex.js b/searchindex.js index 0779ea4b..eccf5ef6 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:0,code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,sourc:1,string:1,util:1,veri:1,unexcus:0,level:0,list:1,"try":1,imaplib:1,small:[0,1],pleas:1,cgi:[0,1],outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],contrast:0,hasn:1,berkelei:1,learn:[0,1],here:[0,1],inher:1,along:1,search:0,technolog:[],prior:0,zodb:[],implement:[0,1],chanc:1,ourselv:1,via:[0,1],prerequisit:0,extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1],commun:1,univers:0,regist:0,two:[0,1],websit:1,recommend:1,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,valuabl:1,prepar:1,work:0,focu:[0,1],can:[0,1],http2:[],purpos:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1],winter:0,anoth:1,write:1,how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,sundai:1,lab:1,befor:1,date:1,data:1,demonstr:1,goal:1,classroom:0,"short":1,practic:1,author:1,django:[0,1],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:1,through:[0,1],dynam:1,concis:1,grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:1,framework:[0,1],hateoa:1,httplib2:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,realli:1,connect:0,doug:1,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:0,reason:0,base:0,org:1,care:1,lucumr:[],principl:0,assign:[0,1],first:1,origin:1,softwar:[],feel:1,onc:[],qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:1,top:1,system:1,stack:1,master:1,zeromq:1,"final":1,pocoo:[],option:1,relationship:1,tool:1,part:0,pars:1,mostli:1,eibrari:[],than:0,provid:[0,1],tree:1,structur:1,project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1],tabl:0,need:1,techniqu:1,equival:0,client:1,also:1,contact:0,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,object:[0,1],reach:1,phase:1,"class":[0,1],don:[0,1],dens:0,clear:1,cover:1,doe:[0,1],determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:[0,1],find:1,onli:1,explain:1,configur:0,apach:1,written:1,should:[0,1],kessler:1,disert:1,suppos:1,smtplib:1,local:1,move:1,variou:1,get:1,express:0,repo:1,rest:1,requir:0,truli:1,rfc:1,integr:0,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,wikipedia:1,urllib:1,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:1,overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,evalu:1,hellmann:1,compon:1,json:1,presentations_:[],life:1,emphas:0,great:1,athom:1,understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,servic:[0,1],employ:0,defin:1,wild:1,python_web:1,week02:1,pyramid:[0,1],briandorsei:1,lightweight:1,minutia:0,sever:1,minim:1,make:1,format:1,same:1,complex:1,document:[0,1],complet:[0,1],week:[0,1],http:1,kit:1,student:[0,1],extern:1,studi:1,appropri:1,entri:1,coursework:0,exampl:[0,1],thi:[0,1],choos:1,model:1,portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,virtual:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:1,easi:1,drawback:1,apache2:1,armin:1,blob:1,homework:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,xmlrpc:1,week05:1,read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:1,like:1,specif:1,manifest:1,benefit:1,either:1,page:[0,1],underli:[0,1],www:1,right:1,often:1,interact:1,some:1,satisfactori:0,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,noon:1,refer:[0,1],machin:1,cgi_exampl:1,investig:1,run:1,usag:0,confer:1,host:1,dissert:1,repositori:1,januari:[0,1],feb:1,chapter:1,about:1,socket:[0,1],constraint:1,commit:0,disabl:0,own:1,curiou:1,washington:0,curios:1,assess:0,chang:1,your:[0,1],wai:1,transfer:1,support:[0,1],why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,fork:1,form:1,criteria:1,github:1,rpclib:1,sqlalchemi:[],gain:1,rfc1945:[],pull:1,made:1,wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1],request:[0,1],pragmat:0,parser:1,lectur:[0,1],file:1,mashup:[0,1],scrape:1,field:1,other:1,test:1,ignor:1,you:1,repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:1,wifi:0,xmlrpclib:1,train:1,htmlparser:1,time:1,push:1,hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:0,code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,sourc:1,string:1,util:1,veri:1,unexcus:0,level:0,list:1,"try":1,imaplib:1,small:[0,1],pleas:1,cgi:[0,1],outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],contrast:0,hasn:1,berkelei:1,learn:[0,1],here:[0,1],inher:1,along:1,search:0,technolog:[],prior:0,zodb:[],implement:[0,1],chanc:1,ourselv:1,via:[0,1],prerequisit:0,extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1],commun:1,univers:0,regist:0,two:[0,1],websit:1,recommend:1,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,valuabl:1,prepar:1,work:0,focu:[0,1],can:[0,1],http2:[],purpos:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1],winter:0,anoth:1,write:1,how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,sundai:1,lab:1,befor:1,date:1,data:1,demonstr:1,goal:1,classroom:0,"short":1,practic:1,author:1,django:[0,1],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,concis:1,grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:1,framework:[0,1],hateoa:1,httplib2:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,realli:1,connect:0,doug:1,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,base:0,org:1,care:1,lucumr:[],principl:0,assign:[0,1],first:1,origin:1,softwar:[],feel:1,onc:[],qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:1,top:1,system:1,stack:1,master:1,zeromq:1,"final":1,pocoo:[],option:1,relationship:1,tool:1,part:0,pars:1,mostli:1,eibrari:[],than:0,provid:[0,1],tree:[],structur:1,project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1],tabl:0,need:1,techniqu:1,equival:0,contact:0,also:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,object:[0,1],reach:1,phase:1,"class":[0,1],don:[0,1],dens:0,clear:1,cover:1,doe:[0,1],determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:[0,1],find:1,onli:1,explain:1,configur:0,apach:1,written:1,should:[0,1],kessler:1,disert:1,suppos:1,smtplib:1,local:1,move:1,variou:1,get:1,express:0,repo:1,rest:1,requir:0,truli:1,rfc:1,integr:0,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,wikipedia:1,urllib:1,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:1,overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,evalu:1,hellmann:1,compon:1,json:1,presentations_:[],life:1,emphas:0,great:1,athom:1,understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,solid:1,servic:[0,1],employ:0,defin:1,wild:1,python_web:1,week02:1,pyramid:[0,1],briandorsei:[],lightweight:1,minutia:0,sever:1,week04:1,minim:1,make:1,format:1,same:1,complex:1,document:[0,1],complet:[0,1],week:[0,1],http:1,kit:1,student:[0,1],extern:1,studi:1,appropri:1,entri:1,coursework:0,exampl:[0,1],thi:[0,1],choos:1,model:1,portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,virtual:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:1,easi:1,drawback:1,apache2:1,armin:1,blob:1,homework:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,xmlrpc:1,week05:[],read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:[],like:1,specif:1,manifest:1,benefit:1,either:1,page:[0,1],underli:[0,1],www:1,right:1,often:1,interact:1,some:1,satisfactori:0,week03:1,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,refer:[0,1],machin:1,cgi_exampl:[],investig:1,run:1,usag:0,confer:1,host:1,dissert:1,repositori:1,januari:[0,1],feb:1,chapter:1,about:1,socket:[0,1],constraint:1,commit:0,disabl:0,own:1,curiou:1,washington:0,curios:1,assess:0,chang:1,your:[0,1],wai:1,transfer:1,support:[0,1],why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,fork:1,form:1,criteria:1,github:1,rpclib:1,sqlalchemi:[],gain:1,rfc1945:[],pull:1,made:1,wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1],request:[0,1],pragmat:0,parser:1,lectur:[0,1],file:1,mashup:[0,1],scrape:1,field:1,other:1,test:1,ignor:1,you:1,repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:1,wifi:0,xmlrpclib:1,train:1,htmlparser:1,time:1,push:1,hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file From c3a8ba4e9b93ded77a3ee9f089a98cfa764b5678 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 21 Jan 2013 19:15:40 -0800 Subject: [PATCH 026/114] fix granny pic apply fixes found by Dan --- presentations/img/granny_mashup.png | Bin 226117 -> 216410 bytes presentations/week03.html | 96 ++++++++++++++++------------ 2 files changed, 56 insertions(+), 40 deletions(-) diff --git a/presentations/img/granny_mashup.png b/presentations/img/granny_mashup.png index a0a57c9ee47290048b14ef18b4e15da711003aeb..7ded8365d15b7625555a798e8bfd7fabc14eb79e 100644 GIT binary patch literal 216410 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 z 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 z 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

    ~D!^9GwR3<7{z%?}+5JUxR=5=@GIQATQjWhaM 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 KiLN$ri}@dUAk1_C literal 226117 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ΝJ%xFmT)g? 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 C)THA8 diff --git a/presentations/week03.html b/presentations/week03.html index 5702d04c..5396b8f6 100644 --- a/presentations/week03.html +++ b/presentations/week03.html @@ -137,9 +137,9 @@

    First Steps - Read Source

    it supports standard file read operations:

     >>> html = page.read()
    ->>> len(page)
    +>>> len(html)
     373447
    ->>> print page
    +>>> print html
     
     <!DOCTYPE html PUBLIC
       "-//W3C//DTD XHTML 1.0 Transitional//EN"
    @@ -162,7 +162,7 @@ 

    Now What?

    cr8bZ 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

    Brief Interlude

    -

    "Some people, when confronted with a problem, think 'I know, I'ʹll use regular +

    "Some people, when confronted with a problem, think 'I know, I'll use regular expressions.' Now they have two problems."

    @@ -225,9 +225,9 @@

    Creating a Virtualenv

    <ENV> is just the name of the environment you want to create. It's arbitrary. Let's make one for our BeautifulSoup install:

    -$ python virtualanv.py --distribute soupenv
    -New python executable in fooenv/bin/python2.6
    -Also creating executable in fooenv/bin/python
    +$ python virtualenv.py --distribute soupenv
    +New python executable in soupenv/bin/python2.6
    +Also creating executable in soupenv/bin/python
     Installing distribute........................
     .............................................
     ...done.
    @@ -238,7 +238,7 @@ 

    What Happened?

    When you ran that file, a couple of things took place:

    • A new directory with your requested name was created
    • -
    • A new Python executable was created in <ENV>/bin
    • +
    • A new Python executable was created in <ENV>/bin (<ENV>/Scripts on Windows)
    • The new Python was cloned from the Python used to run the file
    • The new Python was isolated from any libraries installed in the old Python
    • Distribute (a newer, better setuptools) was installed so you have easy_install
    • @@ -364,21 +364,20 @@

      Find a Single Match

      Testing it out

      ->>> for e in entries:
      -...     anchor = e.find('a')
      -...     paragraph = e.find('p', 'discreet')
      -...     title = anchor.text.strip()
      -...     url = anchor.attrs['href']
      -...     print title
      -...     print url
      -...     try:
      -...         print paragraph.text.strip()
      -...     except AttributeError:
      -...         print 'Uncategorized'
      -...     print
      -...
      ->>>
      +for e in entries:
      +    anchor = e.find('a')
      +    paragraph = e.find('p', 'discreet')
      +    title = anchor.text.strip()
      +    url = anchor.attrs['href']
      +    print title
      +    print url
      +    try:
      +        print paragraph.text.strip()
      +    except AttributeError:
      +        print 'Uncategorized'
      +    print
       
      +

      Watch for unicode encoding errors, I don't get any, but you might.

      Lab 1 - 20 mins

      @@ -398,6 +397,14 @@

      Lab 1 - 20 mins

      GO

    +

    Another Approach

    Scraping web pages is inherently brittle

    @@ -465,7 +472,7 @@

    RSS Document

    XML-RPC

    If we can provide a single endpoint that returns a single data set (RSS), can we also allow calling procedures at an endpoint?

    -

    We can! Enter XML-RPC

    +

    We can! Enter XML-RPC (Remote Procedure Call)

    • Provides a set of defined procedures which can take arguments
    • Calls are made via HTTP GET, by passing an XML document
    • @@ -594,8 +601,8 @@

      XML-RPC Introspection

      return f.__doc__
    -
    -

    XML-RPC Instrospection

    +
    +

    XML-RPC Introspection

    Then enable introspection via the server instance:

     server.register_introspection_functions()
    @@ -612,6 +619,15 @@ 

    XML-RPC Instrospection

    this method is public
    +
    +

    Introspection Question

    +

    I told you when we added the _private_method that any method that any +method whose name starts with _ would be private.

    +

    But we also added a _listMethods method and a _methodHelp method and +those methods are listed when you run proxy.system.listMethods()

    +

    Why is this?

    +

    For a complete discussion of this, read this MOTW post

    +

    Beyond XML-RPC

      @@ -724,17 +740,17 @@

      Providing Arguments

      Arguments to a method are set up as a dictionary. Although some may not be required according to api documentation, it is safest to provide them all:

      ->>> apiKey = '<fill this in>'
      ->>> args = {'apiKey': apiKey, }
      ->>> args['streetAddress'] = '1325 4th Avenue'
      ->>> args['city'] = 'Seattle'
      ->>> args['state'] = 'WA'
      ->>> args['zip'] = '98101'
      ->>> args['version'] = 3.01
      ->>> args['shouldReturnReferenceGeometry'] = True
      ->>> args['shouldNotStoreTransactionDetails'] = True
      ->>> args['shouldCalculateCensus'] = False
      ->>> args['censusYear'] = "TwoThousandTen"
      +apiKey = '<fill this in>'
      +args = {'apiKey': apiKey, }
      +args['streetAddress'] = '1325 4th Avenue'
      +args['city'] = 'Seattle'
      +args['state'] = 'WA'
      +args['zip'] = '98101'
      +args['version'] = 3.01
      +args['shouldReturnReferenceGeometry'] = True
      +args['shouldNotStoreTransactionDetails'] = True
      +args['shouldCalculateCensus'] = False
      +args['censusYear'] = "TwoThousandTen"
       
    @@ -864,9 +880,9 @@

    JSON

    JSON Data Types

    -

    JSON provides a few basic data types:

    +

    JSON provides a few basic data types (see http://json.org/):

      -
    • string: unicode, anything but '"', '' and control chars
    • +
    • string: unicode, anything but ", \ and control characters
    • number: any number, but json does not use octal or hexidecimal
    • object, array (we've seen these above)
    • true
    • @@ -898,7 +914,7 @@

      JSON in Python

      >>> array = [1,2,3] >>> json.dumps(array) >>> orig = {'foo': [1,2,3], 'bar': u'my resumé', 'baz': True} ->>> encoded = json.dumps(dict_) +>>> encoded = json.dumps(orig) >>> encoded '{"baz": true, "foo": [1, 2, 3], "bar": "my resum\\u00e9"}' >>> decoded = json.loads(encoded) @@ -907,7 +923,7 @@

      JSON in Python

      Customizing the encoder or decoder class allows for specialized serializations

    -
    +

    JSON in Python

    the json module also supports reading and writing to file-like objects via json.dump(fp) and json.load(fp) (note the missing 's')

    @@ -922,7 +938,7 @@

    What about WSDL?

    Does that really work in real life?

    Hardly ever

    -
    +

    What about WSDL?

    Another reason was to provide extensibility via custom types

    Does that really work in real life?

    From e6d51a7b5fcb7080e5f67cbad0266ccf083a40bc Mon Sep 17 00:00:00 2001 From: cewing Date: Sat, 26 Jan 2013 17:56:39 -0800 Subject: [PATCH 027/114] add new instructions on fork-and-pull add instructions to index toc --- _sources/assignments.txt | 42 ++++++++++++ _sources/index.txt | 1 + assignments.html | 138 +++++++++++++++++++++++++++++++++++++++ index.html | 1 + searchindex.js | 2 +- 5 files changed, 183 insertions(+), 1 deletion(-) create mode 100644 _sources/assignments.txt create mode 100644 assignments.html diff --git a/_sources/assignments.txt b/_sources/assignments.txt new file mode 100644 index 00000000..2abfcf04 --- /dev/null +++ b/_sources/assignments.txt @@ -0,0 +1,42 @@ +Assignments +=========== + +All assignments for the course will be submitted using the Github +fork-and-pull model. Here are the steps you'll need to complete to do the job: + +1. Log in to the github website + +2. Visit my repository for the class documentation: + http://github.com/cewing/training.python_web + +3. In the top right corner of the repository listing, find the button labelled + 'Fork'. Click it to fork the repository. + +4. After a short while, you'll find that you now have a copy of this + repository in your own github account. Clone that to your own machine: + + ``git clone http://github.com//training.python_web.git`` + +5. Complete the assignment, placing your final scripts into the + ``assignments/weekNN/athome`` directory in the clone on your local machine. + +6. Commit your changes to the repository (you'll need to ``git add`` new files + you create, then ``git commit`` them, e.g.: + + ``git commit -m "some steps I took to complete the assignment"`` + +7. Push your committed changes back to your github account: + + ``git push origin master`` + +8. Back on the github website, click on the 'Pull Request' button at the top + of the page listing your fork of my repository (the copy in your account). + You can write a note to me if you like when you make your pull request. + +From step 8, I'll get an email that tells me that you have made a pull +request. That email will contain links to your fork of my repository. I can +use that link to review the changes you've made. After I've reviewed your +assignment, I'll close the pull request because I don't actually want to pull +your changes for this assignment into my repository. + +That'll be all. \ No newline at end of file diff --git a/_sources/index.txt b/_sources/index.txt index 51a92133..bf2225d2 100644 --- a/_sources/index.txt +++ b/_sources/index.txt @@ -15,6 +15,7 @@ Internet Programming with Python self outline + assignments Winter Term, 2013 - (10 Sessions) diff --git a/assignments.html b/assignments.html new file mode 100644 index 00000000..faf67003 --- /dev/null +++ b/assignments.html @@ -0,0 +1,138 @@ + + + + + + + + + + Assignments — Internet Programming with Python 1.0 documentation + + + + + + + + + + + + + + +
    +
    +
    +
    + +
    +

    Assignments¶

    +

    All assignments for the course will be submitted using the Github +fork-and-pull model. Here are the steps you’ll need to complete to do the job:

    +
      +
    1. Log in to the github website

      +
    2. +
    3. Visit my repository for the class documentation: +http://github.com/cewing/training.python_web

      +
    4. +
    5. In the top right corner of the repository listing, find the button labelled +‘Fork’. Click it to fork the repository.

      +
    6. +
    7. After a short while, you’ll find that you now have a copy of this +repository in your own github account. Clone that to your own machine:

      +

      git clone http://github.com/<username>/training.python_web.git

      +
    8. +
    9. Complete the assignment, placing your final scripts into the +assignments/weekNN/athome directory in the clone on your local machine.

      +
    10. +
    11. Commit your changes to the repository (you’ll need to git add new files +you create, then git commit them, e.g.:

      +

      git commit <file> -m "some steps I took to complete the assignment"

      +
    12. +
    13. Push your committed changes back to your github account:

      +

      git push origin master

      +
    14. +
    15. Back on the github website, click on the ‘Pull Request’ button at the top +of the page listing your fork of my repository (the copy in your account). +You can write a note to me if you like when you make your pull request.

      +
    16. +
    +

    From step 8, I’ll get an email that tells me that you have made a pull +request. That email will contain links to your fork of my repository. I can +use that link to review the changes you’ve made. After I’ve reviewed your +assignment, I’ll close the pull request because I don’t actually want to pull +your changes for this assignment into my repository.

    +

    That’ll be all.

    +
    + + +
    +
    +
    +
    +
    +

    Previous topic

    +

    Course Outline

    +

    This Page

    + + + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/index.html b/index.html index 1c9180a5..84a92534 100644 --- a/index.html +++ b/index.html @@ -68,6 +68,7 @@

    Internet Programming with PythonWeek 10 - Plone +
  • Assignments
  • diff --git a/searchindex.js b/searchindex.js index eccf5ef6..ed3c9e53 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:0,code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,sourc:1,string:1,util:1,veri:1,unexcus:0,level:0,list:1,"try":1,imaplib:1,small:[0,1],pleas:1,cgi:[0,1],outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],contrast:0,hasn:1,berkelei:1,learn:[0,1],here:[0,1],inher:1,along:1,search:0,technolog:[],prior:0,zodb:[],implement:[0,1],chanc:1,ourselv:1,via:[0,1],prerequisit:0,extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1],commun:1,univers:0,regist:0,two:[0,1],websit:1,recommend:1,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,valuabl:1,prepar:1,work:0,focu:[0,1],can:[0,1],http2:[],purpos:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1],winter:0,anoth:1,write:1,how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,sundai:1,lab:1,befor:1,date:1,data:1,demonstr:1,goal:1,classroom:0,"short":1,practic:1,author:1,django:[0,1],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,concis:1,grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:1,framework:[0,1],hateoa:1,httplib2:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,realli:1,connect:0,doug:1,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,base:0,org:1,care:1,lucumr:[],principl:0,assign:[0,1],first:1,origin:1,softwar:[],feel:1,onc:[],qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:1,top:1,system:1,stack:1,master:1,zeromq:1,"final":1,pocoo:[],option:1,relationship:1,tool:1,part:0,pars:1,mostli:1,eibrari:[],than:0,provid:[0,1],tree:[],structur:1,project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1],tabl:0,need:1,techniqu:1,equival:0,contact:0,also:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,object:[0,1],reach:1,phase:1,"class":[0,1],don:[0,1],dens:0,clear:1,cover:1,doe:[0,1],determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:[0,1],find:1,onli:1,explain:1,configur:0,apach:1,written:1,should:[0,1],kessler:1,disert:1,suppos:1,smtplib:1,local:1,move:1,variou:1,get:1,express:0,repo:1,rest:1,requir:0,truli:1,rfc:1,integr:0,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,wikipedia:1,urllib:1,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:1,overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,evalu:1,hellmann:1,compon:1,json:1,presentations_:[],life:1,emphas:0,great:1,athom:1,understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,solid:1,servic:[0,1],employ:0,defin:1,wild:1,python_web:1,week02:1,pyramid:[0,1],briandorsei:[],lightweight:1,minutia:0,sever:1,week04:1,minim:1,make:1,format:1,same:1,complex:1,document:[0,1],complet:[0,1],week:[0,1],http:1,kit:1,student:[0,1],extern:1,studi:1,appropri:1,entri:1,coursework:0,exampl:[0,1],thi:[0,1],choos:1,model:1,portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,virtual:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:1,easi:1,drawback:1,apache2:1,armin:1,blob:1,homework:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,xmlrpc:1,week05:[],read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:[],like:1,specif:1,manifest:1,benefit:1,either:1,page:[0,1],underli:[0,1],www:1,right:1,often:1,interact:1,some:1,satisfactori:0,week03:1,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,refer:[0,1],machin:1,cgi_exampl:[],investig:1,run:1,usag:0,confer:1,host:1,dissert:1,repositori:1,januari:[0,1],feb:1,chapter:1,about:1,socket:[0,1],constraint:1,commit:0,disabl:0,own:1,curiou:1,washington:0,curios:1,assess:0,chang:1,your:[0,1],wai:1,transfer:1,support:[0,1],why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,fork:1,form:1,criteria:1,github:1,rpclib:1,sqlalchemi:[],gain:1,rfc1945:[],pull:1,made:1,wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1],request:[0,1],pragmat:0,parser:1,lectur:[0,1],file:1,mashup:[0,1],scrape:1,field:1,other:1,test:1,ignor:1,you:1,repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:1,wifi:0,xmlrpclib:1,train:1,htmlparser:1,time:1,push:1,hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline"],objnames:{},filenames:["index","outline"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,sourc:1,string:1,util:1,veri:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,small:[0,1],pleas:1,cgi:[0,1],outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,click:2,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],"new":2,contrast:0,hasn:1,berkelei:1,learn:[0,1],here:[0,1,2],inher:1,along:1,search:0,technolog:[],step:2,prior:0,zodb:[],implement:[0,1],chanc:1,ourselv:1,via:[0,1],prerequisit:0,extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],recommend:1,tell:2,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,account:2,valuabl:1,prepar:1,work:0,focu:[0,1],can:[0,1,2],http2:[],purpos:1,want:2,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1,2],winter:0,anoth:1,write:[2,1],how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,clone:2,after:2,sundai:1,lab:1,befor:1,date:1,data:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,author:1,django:[0,1],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,concis:1,grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1,2],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:0,doug:1,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,base:0,org:1,care:1,lucumr:[],place:2,principl:0,assign:[0,1,2],first:1,origin:[2,1],softwar:[],feel:1,onc:[],qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:[2,1],top:[2,1],system:1,stack:1,master:[2,1],zeromq:1,"final":[2,1],pocoo:[],option:1,relationship:1,tool:1,copi:2,took:2,part:0,pars:1,mostli:1,eibrari:[],than:0,provid:[0,1],tree:[],structur:1,project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1,2],tabl:0,need:[2,1],techniqu:1,equival:0,client:1,note:2,also:1,contact:0,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,usernam:2,object:[0,1],reach:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,doe:[0,1],determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:[0,1],corner:2,find:[2,1],onli:1,explain:1,configur:0,apach:1,written:1,should:[0,1],kessler:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],express:0,becaus:2,repo:1,rest:1,requir:0,truli:1,email:2,rfc:1,integr:0,contain:2,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,close:2,review:2,wikipedia:1,urllib:1,label:2,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,job:2,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:[2,1],overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,evalu:1,add:2,hellmann:1,compon:1,json:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,solid:1,servic:[0,1],employ:0,defin:1,"while":2,visit:2,wild:1,python_web:[2,1],week02:1,pyramid:[0,1],briandorsei:[],lightweight:1,minutia:0,sever:1,week04:1,minim:1,make:[2,1],format:1,same:1,complex:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],kit:1,student:[0,1],extern:1,studi:1,appropri:1,entri:1,coursework:0,exampl:[0,1],thi:[0,1,2],choos:1,model:[2,1],portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,virtual:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,armin:1,blob:1,homework:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,xmlrpc:1,week05:[],read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:[],like:[2,1],specif:1,manifest:1,benefit:1,either:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:2,satisfactori:0,week03:1,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,refer:[0,1],machin:[2,1],cgi_exampl:[],investig:1,run:1,usag:0,confer:1,host:1,dissert:1,repositori:[2,1],januari:[0,1],feb:1,chapter:1,about:1,actual:2,socket:[0,1],constraint:1,commit:[0,2],disabl:0,own:[2,1],curiou:1,washington:0,curios:1,assess:0,chang:[2,1],your:[0,1,2],git:2,log:2,wai:1,transfer:1,support:[0,1],submit:2,why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,fork:[2,1],form:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:[],link:2,gain:1,rfc1945:[],pull:[2,1],made:[2,1],wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1,2],request:[0,1,2],pragmat:0,parser:1,lectur:[0,1],file:[2,1],mashup:[0,1],when:2,scrape:1,field:1,other:1,test:1,ignor:1,you:[2,1],repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,train:[2,1],htmlparser:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file From 9957ae19ccac5e1fc3dfbdab0a7d72f4345f7f37 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 28 Jan 2013 20:42:36 -0800 Subject: [PATCH 028/114] images for week 5 slides --- presentations/img/bike.jpg | Bin 0 -> 195579 bytes presentations/img/framework_quote.png | Bin 0 -> 16261 bytes presentations/img/skateboard.jpg | Bin 0 -> 329265 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 presentations/img/bike.jpg create mode 100644 presentations/img/framework_quote.png create mode 100644 presentations/img/skateboard.jpg diff --git a/presentations/img/bike.jpg b/presentations/img/bike.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0ea0fd340499d1e0f3c89e8e40e4c4eaca1987be GIT binary patch literal 195579 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

    Y@Isb-T1t9^ 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 literal 0 HcmV?d00001 diff --git a/presentations/img/skateboard.jpg b/presentations/img/skateboard.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed47cd9339ed6e00d189584feff48402f531b1a1 GIT binary patch literal 329265 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%0AqB}n)Ls3|=l6ywQ1 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 z zUUajud{sk>W=5zakH0)n)Uxhf2SvcbfAG4>)ulAXoOebyfdi1~jkimYw!uW#GOR6q z@~)kxkkQm24~7-3f**y3cO`2#cddU`w}&&nDcaI-i5~4uT8_T-f=Sqkfdj4=;rgT( ztkXEHgNrGA+2;k6(#n6;4P`jwqA0D zg~TWm_v?$D5#{zSD=V(CtZ@J?g5J1WWuUUOmaTf;DG6=1n+0zzMgkBzsY)Rrd6A7R zQ?@epS%%BECxu}+1;Oh#1hW0nYNlb_@py4HH+S3IAfz7dnWO&z+Gr_4f2nF({{X56 zVzaLz(%NEZ-znzazMpc+*SXblZ{eebI4bJw0$8jGN!Wyvf4RnOzZ3OGyL+kKx7aBE z03gd?gsDeaO!5kl>H<#u{5pTeI+slKZ6>D8jy892RebdBjNNNo?ey)XE+OSGlDJZW zbtNaJuOU5turX28-wUX!nq;RXkM`j^1#_FuR=YH-OUn+I)u0rln3YU!3G@BF6PMCD zVrXRBS9dkMd#B`>5q9@qR3_U|-ZVpD!WE@@QlqGE>+YQ=;~2lG{n=0FF@WR839;fF zUkNqpIyy#B%?o9f5gQ*7^HJw2^*G}FUr$2N1t_!6r}b7e?|Cmp(KS)+IpYu zjBOz-!~3Z&%F?c=X)Pt1cGB506A9Tpb$(?0@XdW=Z?&D%^zmOVSfaGBgtq$IQ?HRA z8I*(OK7Da#rS$vW(BM493Y|cbK;bI6MKj)^8X`oIx&Hu+PoF|_8+kxb*-@M(HgnBZ z?5%BaZ@AiOAe}tOPn-^?kQmQuRT0y$f>pkoM(Lfn@Tq1006ACOs%o#7R*ERv@ifOZ zEdKyPI(U?0mmmnoAl0hmsDD0Q!E`!GRy*?z6KHuXzOcCmEN=y9~b z4mgrGDpCGeJ3!KK*wZY~9H%;B(dAEUyH8@v^y#I@nF5y17CHYCxM^AE@bFjB4STDV)Xe1#(f#g5VI*&(m+v?^33=UOoRQBN*_FWZDspo+%tncO0 z0Qe1tJuOM5M+*ZQFco-|_ek|QJ(X&f(WK8#Sd?IAWbcjckle{kB!wx2l6?eWr&8zD zI42<--cF}L*_cTL0Fmj1vXomWjHMFhO=D2-L~oyObQd-Y!cT9y^~K3f6#V@=a;y9p~jtFvqDxx%`I zpcIgFndjC7<8sWbyTVF(oVwR|+E%m;%pcnl;cfX%fSLDNWi-^NEO>Vjx%gsPDG%i< z@P_>5i#gF;X_cY$kprRMm-)tXSA%m2^j2DQfwBvWuU@@^GuCv>nRc3~OLYwfQk3|o zNsdGF$2*~ht<^iXc}HcttT8$u8ZxHN)H&VyJ4He&oRqZLNAn1kDDscX9fM1YaI)sQ z?4f|&LVcGm_odg<)1mE6xS-;I+=D#N)Z*_^cY_JC%W17LNpignaDK~GS7)PDUX+!# zlL0+Fe?O);jaD?i(HUKyFSj~4weAf+J%FGt3WIppIov`5}QPsFTKTLIo^<6g5 zLdvtF>Q7}}_>q&<>~FZsV2}=x5vT5dEEoQ?rf4}+Bj{OxeZyddV0?)$KpSr$*pF$X2tl?ok!F z!HSa9j`yJY{r*_<*1b|H>vuP@>7OoXsl;V^Psnu5(Aa3gWd}(5Ml=+S0jn8Q?=pL~ zWPlFbfDyJO+$hHUt>lGi3Mw1&<-gp1cr>CD8$Ng}bqWpx2~pb*M9Y-KxN71D9?dOg zXhKrx?=`5*hz3aC(|^kzp7?VJ@NeCD-{J*Byin1?fvq`zy|}5>y{!f%Bnjus*QPr4 z1TFDFT!&Mb?ZRi?a;;gqRum-&POXG;*m+}kB4HQ0%lzYp2wg($1yg9Cvs|8e<{Hr2 zyh`7fram}V*Orr&_2*8YZqO{er}oF()*EH5x|%eaf{;w3%b`A4e{pEaRj+`$fof*Klx+Rd zpQoonM~z^?Sscg18T~@9oU8g8LIuc846&cnnzOUkYfFK`xJm@_6aF!mZFc!~HBP8* z#;f4}00u5sJ8O4DyRE+9BfAaml}9=9oLjxF4OCBYz7tN_Pk73ejndXB#3UdjD1rx` z{{UQ2&ImbH^v(gk$=r+0d&<(4I-}Hd_+kgTusTPUY6zL}aU*~%sC&t|N8 zy3@Ppb*V$@TZ&n6&1xlJA9rE~k+9P|$-(IC4kvCEr%*IT>|`$3+NfSmTcp&jLqc?t zF`%n$imlS*xJ+d!Ok6@5FsLAHhcxkL+$dV}j@zkz%W1pa6d6cXl8vK%mWbdQ%5%>vp>r70mYl6J+%PgDkd zq`h(G%0aEV(!SaX7KJ7xM)A+4EcFQ*<8_O1?unqdp+mraX;0~jQ0p8fQ;CM(s7Oj$ zbwKmm4uk4~QDV_sy1TP60K~^ENrLxG&GvGbnXc60N$*mq2Ug?Lt~(D*$#54v)>l*(E3@cQ z?rMMbd7(f{M5Js0Blg7pofpcZ>L-5?u7zbRzAl$`?k=S(rni8Wr8_FAN!?%m0u}!N z?Jv_CXmqF5lWYLFo~vDN;g6|PD-;y1Ab%|`DoH9<%6fjuenw5h=7N zx|JG~yU<9O5&G@-7{W{N&L_%d@ppO!FXsprvdfeW1t70V2~ZnznCgB<3{CLak2vmt ztSD)-+i8}nr&upKU`mM~di|ciUTSq`2dSQj~$pPf_>R979{` z6FDz&vqIHSXxO{CRR-~#?s=ZzS50qrtq!>;Q}O|y>LZwu(|8!=+P1Fgo#o+esc739 zEK?6M2d}lw*j%Y%irq_0T(5Zx{{W{_u1P`v0I?^ZnuaK7sHJ)FJ1NYOtQ?)u&h0Y^3I71M$aI`v#}Q*}Q&LU1sh2NNsk&g*ctLdond{U^ z^ZxjcG&_zHPIZ#&${=@b6)AHf2Hz9$!_ZP&Dmi{p>{F>~)~Qm7j-+{f@ut$Koiu^0 z87eHVuusY>BI(&}Dr_afB~m)$)%`8g!itzO-ebz6l6}s(Tj{ruV^1zXjA{N^$s58c z+5~~PkrNSu@EnhDNiNWotC8o=%LFbtPBrTSjF2Hb&fws#QSU2J$~6Pf1GrD0++kNo z;v$ts2q!_4*UM}tct&Je%eRgEI%m>G2JnZ7lbyAP4y^%4;rsn?pl*~L5hBo)NrN6^ zpWgUEYk5P&3kKE`umBEVbHMPz0QxO;(1e4seqS6bXh(IdXvE1zka=Kj2=0h_lo7lj zo#H3#Z-KO0$Z)FHX?tTz$ybuJl*1&5<@dP5azregiTPd``)}I=yhO}P(nggHwCn_s zCUL6iqvcu6X})W&Z&c7SHI&F%Fn66h`uy>|jA3NuDJ7PJOD(QosBg+KCKF?1*i6ja zrkiC&34%;OBYu1SSeWh-CC>^u%NJ$QUn%N@LKX?zn4VvjD(hknVQ+LHaR%$v{{Z3h z$4s|s$kcZAR?@Jd*Lwi-G3)TgM^9-EILg++R5o0c@9i7J7W3uqf|lC)9%19&Cqu;sCz?kuImK^SQ~(HRQ+jHXf_Yu} z$u{b1MX8_y8-#!dG6vY<^1kjiT}n1s3ny!?HnhM}BYu9kU=KZ1l1EE{=9A$t9Y$D%@oy z!k~2#&wNYK<8$OMIb74KBx_BA?hUGx)7xpANK}N0+nzVkur{$R$@&x`;CIs?UBT;BIcS~rMDzoYHltNpbAw0`kycHkBp3K z=a5)keR!zU;iim&a=gFs_bYL}g6&yZn{u`4osyzd=8~i%)_U~c9jB!0Dd1pagK1nV zsdWd=^K7JE&zvl}@hblSO3LXTRT@?VsU&xV8G-QqvC~;p*-e?1&wRnwE7R{~j?32j z1qHor+S^rPf^_L`-4HhW{{R@ejjdq1c(Aw&a=JBlcF)6HzEaU`E`)zE!5gT5NdEY! z)O8zV6?do5UoKqr;wNak{o10g)nH<(rNt84L9k56K_47*4NF>koLI%HjsVaKv)_lV zP|j~>I*h@a>1)MHl?B9ipp7G-9+;1&)kr0|7FCtd?l)eX>`7@EeWv1>BsK&D?m2yN z&|6>RvY|A__)uPH$mqM=T~I-B3RbBiAmWZ=yxghu<7l$pweYosB_GQWJtqroFi$!| z>Yj9bJg06ymX$}Q*jIo8PWvQl?n-naUCJOHTYlJqSxvlHCmA)3)GL_sMdiv%f{=9T zKu);j=Zs}t+O4}6DodR|n?fT9-6jTAKiS-vMBJCZ)IxC)BxHQ$VwJ0`7g!*C*sip_U zY!#N7sBCaITnwP8bB4S?th1U?MCxj`kqPGpJn_vmhnS~yL}hO^8lf~H_g!Y;%~iuQ zAppXk$TIzMNyMm; zQhl?8j5HFZGK8pd@csE=@k|p!OsBmU4yjrI1_tMF2j89mkJ%TAWWKDEOxrFH$_CwV z{7g4Y%OJ9?oKCmW(52*UuS`J4P3ebP!D4k_3S@BIEmT*607{7yKh^QZi(Z$>V5?{w z=2yQjQ6&^j7*e(e9A>lv@>cSm+f#)sm8fi!*OxE7u>cF3DNb`${xQ`XDKV^Z7AnbbwSes^gPs>s2CZC< zIYzS)FDq}PNH(T7A8gDn+fd_cPQ5ZDd2fz4)YQDLsneAgHbCG2Q%tZMr(IP_)RvfN zb9vG{C?7HM0G>eMT{Rgk4QRyPM(cX1@o7(g z1u7feG8t7$oIqp^MMq$f>x~6B#r-ZyUz*?LOr1Ji+W^W19$~gssvC8^LVu_oyzp9I z#w`}8*|J$GT{32UptciqqEePrRM1LFwW=TwjN@ZZ)*5Vs%OLep4LiqVhSJ5w?`~5s zp|ZVgw(JEc{{Twknm_=+=ee9?bq=GBu1h!UkI&snY#TnPr|EmwCtHj-i7C>#N+vgs zqhs*-?ay`17**x2EpXt4Dk*l35iHbHGOp>x_lg@5PczT-#yXc>ucMQ|k;UItA<;F$ z;cPCkzz}sM2u|d4>(BBy&_AzgAsd{TZ7WH#O1S0(vclXzI)Id+MkM~&%xgaqDk|Hv zfUGHWo4U%q-!IqN%BNebtZ+A}Km=?$?E@UnqNYb3(wnVx6w$C*fk)RG7Tr(&tbo!M zR#P$xy>ZX=om<5_0kcBAriX4)ce7F3=;~{df?)GJ$D1pk&0;DyzK=_F0zPk zd_22X)T#Gt6--=EQ_0c-l&O=ymy78bwWoBEW3qR}Wvrgoti9|AZH4JWZ8nrAc!UA> z^~Iwdza>L^hbh4N8&XD+0^(1GHuL$;BzQvCQNx^88)W|gu#g0N{Qm%49Cs;BASpK@ zWyRJl+m%{>^lg}I5Ik;wU^n=Yk3oDW=>5(4$%oNrbt=C%hSeg!K-v$55&7f3cmcRo zfzBh9qwIT;q;rp+3t>uYoDNY=P^6__%TKNdu%#IfqE2$u41j0!kt)UbvSwW~@%jfsp6h?hNkT=6Q~Y|D3QQs_Y~ zlz}2}iDVmgsS!6T#&>GvwU{$i_Pw;FVQYwxH}&+!&qIg?Tq+$~h0e;GSMw?mpaIpl zLPw{T;~O~HcHv}RnHN@?WULedWWn;n*y|M9inBZ2`)UNFnAnYpfO+D6>|H3k*+n$6 z%}G|NNL0b{{{R?>E>m08_w3umo8^)AC@CtPOEUli00YwnM?)E!C0E!!cvJ)3b`<$-j_ED@&o{o$JHiZBICursVF~xeev&>q$ zk4(}Hmt8lb&(TiHUE)jtU>;MBaPmpI+ard5&=j>i0MjJkn{=JQSH3K9*2h6fQpH7U zI^drXLR$XS6XDYc)I3Ra?iGW-EgQhZnoy7NK$v-&lsBOdpj$$=#@aU1lh_o zMf}61#HCt*003e!28qAL1xo4}{{ZpIkhqg+VY^G}4QVAI1L@_BPOQ)2;b8QcuP{|% z`ubZ1l}^8<5TXjX0n_`=Gtkpt0dz{LkQ=+OSJSb#8S?!_V^k=qLf#I9paM4Kx$`*D zX*9w!Wyd;(s6E7jyQO8lTdOE3+-cM(X#;*^8kVeEfx1vP3L;@HA~)nY{q2BV*#HPz z3|y&3;Yd9&t+(YNL_A}=va1bS3@20N5E3_^zuy*mcm`2&qSiXmmBJn;9p*8r67BM;c;LoD^nJn(#}*5Xt%|$#t-6<;0H`TD zgY)_0=YD~pGAPBySGTo&V9M*=H+w+-9=tTnRywwx%eL~Of{+y0G9%BXFQ?LCca_0s zUsaouxbJQ3C6#z%otIH#volNl*bTObPd(sy;`2hH@Nf|qt>CXabv*wm5Bo)2J2GoHx`zR5)G9YbZLl|et2 z2Ek;e&Tgyv=v$?`fEfUVYzW1B+h<)%w{WbkTxeF%GEf3gL~`Cf$;GrRF0l%_so6*7 zT!%}0pmC?$4kUvzIqi$6=);AIh}yy(g1GbABeBhf@tJ>$F-nH26zu9q>p02kJvR@D z;&4^GI?SzYm9gN508U-Y^z>_KN=i^AMD9mVhb&uDP&6{Yq5I9-vaD4GP;S=nmX-+X z9RBviX(6$)cjk+RRD{zl27pK&5wI994&_92wl+&#nt$MkNITv8iQALU$l_#E4_LOi3y1pe*CVYlZYFWeV=P0rSS^ zNt46KR8?_rIZ@VG$PUq;Am~{Lh zV(H$vpp9zr4ZU&FW3B<1S+ADdR+Zks-w*BXR@c2xM#n8nP)Jv%{bLxNZdR}tyxCvr zv6i?6PxH0!J#kv`{+Z#XOU&8UvO-Igl*&adJn~c3E@^4B{8c+_4mmAst*V>DfEWEZ z`^m!H(CV>LjncZx@bGJe^;{Fn4PP_8vYzXl7L|t{w(F{=wKD<`p9oZuC2oXo?)#uh zHMwf^Iuln-PGxxKZfrh_GpOocyeHZnwY{(1JsRyT!sAfwJGZx8b+u@4H9=Ca+2y=9 z%hw)vf9;t?ML&b8(@4v6>!cU?1gKmou0=Klbc?Y41mg*lx2JqB*db#9Tf z3aM=_1LRv-3LQFQdqew1^bWTlha{}}I>Y|};ZvdEY}V0S=x+3()g|B@3kh|#L24snl_pdU`jR$`BSX}lVQZn37yke- zJluaRyIZ}|D&h@sYnyLRr?1|fb$7JeDA!wFv@*&Btjv?>JkB=pb(KU+-uq+kRq^Tm zEA~f{kS&}?vE3aM^z{m9=#2^xR5=LqJ#h6m#N#2_>?w0}?2)&3DZu^B&gpJY(y?%S zrCrEVp&%W$pI(0v(-%jo%i%r~TIZ4Fx#3odJ3G&C2PvCTm@DYs?yhXI&aP?#1jkX+ zlw*@mtJXF`+M!~!k!i5KyP_!y=Xp!W0k8lYsa;fkaO71R&D6;0c70TNaipn!tkfgC z43`V7@5n~Ne)?jYU92bgY~fnazyRFjkyA(P?UyR4YAavgOKpkVjmo+td7sM|>0(Sl;wsPrAOXu?{<`y83{|s|iI;#lDe>DrC5dc9Ia0 z*Wyo^=Q#Fmn?~Argc0C1Wev%>Jk#P!-@(Do_<)`MC6wjD;X~E527=zHY< zR(+IC53yai;09B?HENpXl)ITD&O0z7s3JVS25*`?bX?k zAm*Dj?vl{^t+b%61wcfeT)#{%E>Uk6UVQs(aVI=w%auhvwQu+8c%cbUP@a>g`{C+( zQ6cjnDje5&RDIc+@0hb~Q$nf7>M9hNS2zTX{y5EQbYb!qjIN#2dYKFka_L2;%yPqx zT<#RhVZ^}Fp|tXu`1JorBC%;LYyEKsPgz=wjV^3B0U+luL2r)!T7z13}QhR3&yu5M?no0gTEucf-gGLHM*)RU*eI-F=9 z)l%NqR0pIPdOjLLoh&?E8||qA3H09!5FlO=KHi@RAak53(|{2Ntcu`3GLn5T zUI<0K1$PvZM&rsp{x~N<5%`Ny+k#+;21F6drW=HtqQ-0snUXFVL?ER&Lh5$ zI8vKBmGYI{np#~D5@(d*_@mftQxdq7l<&A^%4VrtA;YYK0P;AVDoEi(5L+s@=9RO1 zywj+X{ES;6ao7G0E_^`-7VS5j=%FIHrta)s4FP%0#hA+m{*Cg-8AlS ztp;4oG#82%Uu9sDH5loKnO@gmsPaO23ufr$8!eX?rg?!I;v~*x?wx_J?4!E7{VEou zp}_)2EHcsxltq@H%q)VKQhtAb96Dn5NChF*=PF8Kq#qF*2s;ceHwgJkb&e5dh!)>u zSTyL5F%yeObw&W0@RJZ`mMZQEQ)oaFDI|$M=MbtZ%lJwW0Hul>>q42hT6GW(-8RH& zE_qH9oTC+dLXW&Q-5wtYn9gHVKk-MWwO;8>M4|_YUM5|ZM6JpK`?`_aqfeTFY#P! znuH{1Qf-mEUAT9(`+ZcpXVW#{RAs*0k9#D$pBA&7oT#TJW}A}GsBy7xsVYGnz*1Wv z_22XBj}p(+pA~52BvDBFdmqTH%{GIhOgz;sZ{hicxnu1N+>iApO5!$E9Lu$~3b4X= z=ieo=kT)Bc$4%*fi=A^yJWWeZlsDa^+wTgaQt3)T{{Yj}G5-KZSpEjd{&SBFb6`lh zuPWbAvO+zf#vbnW8womx!=Cu)Fnn{&qq}?VXg}3b9SW*1_=yMF>v7Hza8mlF z->l((4z5po!BrN998mQINk3e59UnvJon|ohQb7Lzs~i3md-YvLA1{jW{{ZVB@|gLf zf)sR@3L4H8-)A5n%koG%F^Gq+r%UiU?~bJ zBqROERP1`h;@hKoN2ts!i(ZU5?BVS{pRn}`uD+s}JepE=p2zwh@}k}**{&8^CGmrY z?6jM`DAj(q0DGI=5(!IzV|b}(1t~8L$V!rR0sz4LXy~TP0oJsOc=7$9ID1Do{{Y-O z9#zjy*D=l%bzfoJ9_>Ef$GA%toX2I)wmNF-YoW>)3>K9EZLEJvlPAO{m#p%~2GKf_ zJw`EXTanxqcQpjGGLZ3~Udjr+Ejd>F7*U?3{-0KzMfki7Mh8|R&HvO zsqYRnX)0;mTI0lls2xc>PhXSBfQin9Og(y-~P~WM0m%FzdjkO)eEsvfz zkjWKXdtNT(lbRVR-?_YgzXZxwUQJ!?%WXQ_YK5eSD%~rP(oeeB{{X#w{Q#59OEmgm z&OigXKa!m;phH2m$?UZAJ>x26mX>O+^hNk2Hi6>Uas%|m2BY$kU(aKkq0C79~N#7DF>R91m6Q(f6AMf|q4VcoMHNp~@PxV0ZD%%EQx-n2K zluvQu1bkz5?g|`oVO)=sUQwUV}H29 zged%R#nn;mE0U)TJN9%-CLv~p|9NpK7{?(Z_nwvjnX1lKlOruDG zH#`0LVjhn2(0z(#t%1RDuZZEBW#QiFl_ALjPp_^wnr!>qVzW~+#aFwiSy$e}M+sqy0e{46Y&R92ux+sH= z(!DtLD#=4QRM}i{3+}tL6R1wFTx4eJ1H3{pb*Ohw4V%}io(Awz)lHTt8%;7)14%GP zBLf0JB=ho<6Lw%L0*)2Xw4JHjGXVHU>4ptEeG}qkA7{LsNk?pX0+}Rejg#rjdh@{+ zhKt!e$6T*I9kqC4OMS0hLsp81(A1KpH#%de+D;(VY7A)ea;|7#1m!_JnzCILg>087 zDo_yVB_X1nYU?xq02r&FtB1$um8F!1Fb0)l_}89kE!kS7g4?bQC22Y(Y4Z4D(^wF_ zmlnD@Z9umGs>{IcBGOb=uoaJ-=KSh$Qb-^N!YA&RDQlSJElQl!TQN5GNDqq5$PbsFN3556}IkvkA>L_FA?B zsb%FMD%Mg{x!)ZRNYfhT-*UxN*GShJCd(b9F2&G`g%x}3tPqzqCrf1Q263Twi?nV9 zL>imU3ToUly=>88Z?T`>osBdJx!D0G_Ag(-mDiO4!=&=IW}pw90M3 zRzL9TtQEX(wwK6DOra$zJ9AL$)0Qo&8+WxsXP{p5xB+#ePFA*oQoz#6M#egS&MsLV zEK^e6)(XO#wGjmSLmpczargUSvcY>KHP7@#3*9W3sbon%)q$}o+xsJvdZr*R+ED{@ z((meoE_B2X=Clk!@pAsyBEXLeKHAYF2iqI}0K1k5u{7t~vNSx>fc|qpZ^>hp z72u^c{-FevDq+@$=yhO(UWlIiEk{{tW=fe?uB;J+B?qG!q}+r!m>x?T4=fkU-zfL@ zS$f>#nxWlYc2wamqrcTB#0e!?bv^Q3C>`fWP}u#95u~ulN8%?nHEn$(1q`7@BhEGw zewc?XBgpcncaG`3aBBB(aB4%u6S*IMFP0;XK0T@AC?~Q(szM`jdjWOm7z=S-wQiPN&eU`2I!2oO&|QceF{3gsgh43v%kv;G|UN2 zo6##Q*&wo%d1u^}|H8@K6s-z9Qzlqr)7la^fa*u;24eSGFZD)LSi#rRs|H z6@ZrXDM?8{l`TO;1EnLZ9IsY&3|d_qt7Tz$Z(-d`p`enoX46FA((GLDl{hK*h4xY7 zU415B%REY>%Q>aSyT+`y_El`DC;%95y#7;=BWBj9#xtWoX#SklPlhBhIAYHh{PGpQ zQ2Z&@wC4Dd#l465o8}*ue-N&>v{KZv)2%$)jVnrcpHz`=ZbA#R*Dg49#fIVN^4zdkyM9KTVS@{t>^x# z3us!&or!H@N{^R{dH`n`TIvs&VLKZ3p2Q3O2L(!sQp0daDigfW-7JfC^}Ueam9%~*Yy7YX-$Bt zc3uuRj`hgasD!U**m47&+xpHaV%925XM4QI@F<-az6KRn&ACeF!aK9s?Y{<^v{zKcR7pOlpZ1JZ)Ks%op!tSkMi0by{6C_R zNfYR*JSY8!9D5)4{Zl7}xwV_ksdm@aw`wVur8|XcLHA%!N&K-x)4GW#!Yb!crP}So zf}WRL@GL4V(We9o=)jdAu}eZOmLK zXbCGQXy^q;nORSXYV#!SeFS4CRn>LXAT*l~PRhm&E}9Zw%f0fE?OZ*~*QKp>E-jYK zslbHt07)u8pFAa$^UN-8Qm3tno$R*m*-qt`12ne!Fx5(u9H??N=o2BMw#Sl{>OlUS zNo5nMq~ksPy^~N@2}a|`Z}Nn~7HOMZLoA}KK~j*I6Xp40)KBI2NOg+Zr=WTDfRw2^ zM$j=?HA|duiM9#vXrwf4tUBB)oD{^!{{TOxCQwG=a+;aRYL48OYLignNumODn1vYS z{qgC)g#8lAnZ-<_4OuN?Q7s!A%95MCx)PZQOnkKe0Bm~BDt)5Eg_PfObfBBkpvi;R z5By|L<%?fkvx{tVNOw!1C!fm%U~j5Oasa#15&r;L0CY3U1>rRwdkAOPOv$1~}TWd&O!9%W4^B&d}c4>&(o%T*bA z@ufrwEgp05#Hsa&wvY-YLvxkY?i%pfn^z2LMRlsFr%^$vKgpeHBbP1lmHEMK%U49m z?Tle@&$JF)dfUW`=IN+kO3P?liAzL;EXj$EW3DfBZB348%FODJ+FT;IQi_^v(PY-k zsBgVasYwy{`(kFbQyHfuIX9=qd{Dh(_8ra^YaIq(taV+|$Oux1A|w3%c;mHh+W!C$ z@E25xq15(XpL;s-ve|v0q@$*&Lxc?y4$+NHkEya&fYP${(3bXBeHDp%oeq?gg$NwJ z{PC{v1A?M68>U8NwW{LVh(Z!U>(dB+pK;1{m1U}|XCBWsoX+yxuA^zvb}7?_Mu{7S zRFB?gvSU+rQOlH0CE81SRPXFkQkaj+4W6Hj8-Sf|tm|bpb5~@GUHP|Ksb#gKh>Ziv zFyPQ*aI=#~Qg!YWK*wPGy=`%8p`t^2jFoqMzbrP+nuWP;5jwfV^0uwLhwSa$QE;kY zJp~{R?~(NT>xP}vaqirR*E@o)Rz%>Pr!UhtPKsotqzQxo4kouvYej-;O2Tlbt8PZ1 zVF>}01LYlXVuU9CWT!PYTA*j$ZN8kw2g!kgh|W)RteY(m8=(;!!0F}s;Qms`+daFg z^T)iGPjO)TR6sE(nt*p`u&gLeLS+M3z!BbC2t1ZQ}g-J@kicr$wj7X}gYht^*s+k&ZW#LD)ojpBo81p4fCV+*KvJ<%9pUB1|Xd=yb)iC!R z%1G=NMO2O|HuD|oN?dHKcmPjdKk#ubx%*xUdKQh#+Xn+~S7vgh7QH%yN#1tphXqmE zo|Z2%njOF0(uG2kswdv`!)~f~WXXW?o0U19_|D}d9$;aESoE<0TJ2{`>QqrGNhf&e zfGggCrghT&E^EEGgosQ}Q~G{*SI@lifq}_=oW*_a!Eq3iuPVF&*{331Upy*I;xtY0aoMnY6Y-jsx& zXmELLICRvrx-koruH9cuP}EhaA}5?r_rWq|p2-h{_X*63mPiCtstM;j{{TEnY^+dR z!`Ll=>J)ZxlOA|@IhIMv5pl82Q}X>VJf6rKpruXDuJI#d&jn@_M(DLAg?s(l{YpW? z9LV{?F?EjWol1g+OwTkA?SLX@HbXohnp#sb)iGC}bPRr2SAiMLkOYK@n6jm#GG+Vb zU#_R36qVF&(Ym6-NeNmCXO{3tG3kokPe_8M7sDe(oCr=sQ06>6yn?)jej@#ob8ib+ zuj022?3bELT?N3=W?MxWTf)-$As*FD9yKtfID$tsrPP@sPCjV-NBBzGZAIdqJ+HqW zzeVhChQATKMmC#PXF=?H3;J{{XtGN6V}@sNNFeK>1^;iv39c0L;>T_&?+FTzn-T`lA`a|dyA`Et5rWX~BY@nxsH+pku;l?upBJxX6o zo$F;fl2GS0AcG-8Wpk4K(AeYihW zR&AU&&0U{gdZ!})01&%mCLAugZl)H`=(wScx9VyC@j_GkX93kDn;6p{c^ zPlZWI5srLa9G`rB%Rf`3vCZ1s3w}5BKd*H*TW>b|)dQ4eq&-OL6os_vd^%OK zlAw8w$Ro=gN{gtxXiYSkX<1sWHSoKCbzbT0Re1*PZEPjSYzhT*t-J!ikf|No$54?d zB6s=Y%pF6d&7kU=q5lAd=Hnld=#*7V)G2KL0JboH%B>kwEL<`_7c)jmvC`Ds8F@`q z*_a1+sU8Ya5>$2pxOKHG@(oGmCIv4~yz0TUqV0c~zeCU9RQWYF8XfZ+7U2Cyr`2B@ zM-8(5J-UrIw5H*84X4@`hZKg?=QE@T+jtYqbLWojFG*=lXmvo``)4NCTD zX1QD&tF}7JNT(_x#e@P@1o`7VTdBB$*DXao6BSOrzNmtF0%N8<_0YW%G}<<` z=gvk~HLlbQvKKdm(5;-pP}}8=tD+6zM{Ar?LCluKN>cJh=6Cz)hOC@u zAT5UTEfD1EV0jbq+X*iTd0#o2sEh$pk_YGhFrDBd0F|b!)l2S&o1cyk#Rr5ed!p5w z8cwKm5#~0G4d}L_7n@n16M#=lHfKr~ZI0M0quK&a zR$;9@Ry^<#6cpw=fPkg1*VpgM0T~0jG-i6x2r741Qy4HVk~XZPH`T_HwZ}P+&+CDZ zk6^wNXEs(nm~HhGi`KNMB`ThvkNCr*BE=vZ94>KjE3xf|I$UZi>n+soIG{w73`Y3~ z{Su!yVxZ6e0C#Rkam6im78Fd#D3SN|!{U%xH*mgl@Z!h-rO)*JA`~N&dkg_a)OXF2 z3AjqS-D>kpm|9Q92VQ^Y4Y-1gt)%7_(0~J;n~ku9 zSx2J(0NxRy#F?L;?b8d`Q0$cH>Z)o=Qqb=eJ8nO|55sXuCc`MJwo|{~DBNTCbFKvq zFp`t|pNnJ6V#Gj@jicr^FF-UDgJG$zg-*`iDwcYFO>#-@dGUkE{dyHo4 zqIZaJw$yXQ;WsMx)Nsb*?CEJV%1mqqj#$^q97@J`p>AdF9bK(;NO`JMgmPFY0ZJHU zkdW(?Mq$E&dr)MY z7*U`3#QB*!+zITH8^af;o)cwtS}atQwKQ5(8xjcWKF%kG`7Bb*fT>m69UGt%Mw#eF z{{T!ew4`pbMybnmD%{g)AQ|WP*A589lcDFaT4~EPX&{PaB>8z9G+2j}B)A|V(cP#lRJxe| z0Jz~M6s5Y`Jl{q(^I(}qkX`Z|XZ0XG+u$N@MBB>N|QE7ckjQ*d)((DlQh zCddm?rnctNf{}MwJM)SAI3mJ$N@yOJK}KcFbdr{CNE^TkZ7PqbBd!wYpKeefcL{2X zI%eVo-RV|05?Dd~up1kP^Av*|fAvepJm#j-qHa`WK)@c(pY4VCZ#+1rjXN*G*Z%;_ zJl+nUZMUgY5Gm3D`-~Z5`@EwRk>4RGv7Yl)3SHE+mvZyh&JjG;!h53yiHX}y4%BRbGvG&P^?8^PNbzv z1RaniCSy|M@}sp1^rShHR`#~@g9EUern+d1G5@#ZQpon zkt?lK&C1aIlAQ@tfItqol%-2f#Ew&~BX9x4=_sKiX=wZuR@YQFEqNb#T$}Av_+Iv6 z;*~JA+A_kjK5VRERqhrl6pBFJ<_k^*p(zSZnF${6BQuIB-jt)4h5$;rqw4zTvAmJ) zxfN@t?YG!2@|O4^#~$w{(Y!?_Sk3h9+$_~>$k{BZK~1)ysDjd)03C>e4j)qZMNK&` zXt7V!b?k4&O|$P}yG_{p@sQwW5uUT;Ue`Gdj>{ZMeN9uddQEbl$``j)uu~TTLg>j> z-Q7@1L4X}zIqs?Os-6e#nleXnFK_kvkD_R6E|6ZHOOLw$0PS}wFtENK&MtPY9NP!zpWxn13Vx0Ac8TeL~o>q0%>V z1>8R|>F@36nAumfCk*WlT^@Ied1CXHX>N(My?PEMv{KY8!c$nO?$X&;fK()Ac9 z2qzlenwEFDtYI%{#q3Ap?e3MR(LA#6VHmxyf5ZHK3eMbaIcD`pidxIvjSER7wfkdd zN!mo}hJgGh~|c{oUD$?spB@2(9kqM{JkQm0o^r2+2&&~4Y# z2T7$#QbQapPw15GMy$wj8NHUG@@8{r7ig`mQ(KS}7^7~X1;CO?D_qgMbLX)cc-FO*XSg(0oEmk0#%&4#{&b@X_})*XB5(GyJ+{mK3lDRj+Uf z-(=4|c)pky$e??%vBasTWQQ z8N!0IM{N6^W0hIxZx1qcEBUA?-{Cm#vGpvD?PWrA^4us!x3qq9Tcu`+TbTEb#}Zqt z-|Zwi0uUMPE15x3S4i%!PNT~T{o>aY--c4fH))%+p8AdOPcD1m;a1c(t@gW0Hs+w} z9tuw|FtJq;y2ohyZlT{i;y05$Jun+l88*5Ox>rYNdn3RXD$E{Iqs!s*#GULT zlvXQ!9CNTb;()Cu(6322OIp&71@OcwH$WM_R$fRG9b_l{Bzm)8XA@`}rDnwFjL4vF4=A1|gB(}ZCSHd;`r zEXj|*o)n8{Tg=!g)FifzYCix}=d48ioLE&}k(m)n*DdN=mALF|--Nj6@~vDI5KFY+xvw^nwKY(H%F! zfVXr-EL%9km+2iwtED7QB{&8a*#mNt_S`AwEODzS)FcC6LRGNYK>qlU%J@Lblw%9K zDM36_%SvZbR?hH1B+eE4#t-|1UIn?jYvwK{SlptjQ0~_Q#RTnz{_&^m@pSY|&kL0q z_l}u1pEzHcHP+Bl^bkzPgnHv0SE)tf9IbQ_or4RoD#=#yAIeY2V&`D=SzW~ttdT>p z?h;P%=YsH>m$;;=&Kp^)Rs8Bk-1Uhk3fKlLl3jG)dxJS;(xPqbX(xXNGxmDnc=SM( zs^11O^A2~6(KMCJlcaBfgm+FRawRP&(9Jv!pBeJPED>F7f20~bnT>}2e7fMgG3bK$ zWMiCr0!dpBkq4J5rwFDg%IXLL6O~Z5gfL`cnw2(OM4<|_gX1Dx!`yWMjn&S zMU8_h2lT>zSRxKV{{TcS3Ej1P`e43TBDxxKgQ@0%4_F_st`ccNJ-~KBURQYl_<70r zV0@||R=e3%)g75h_>IZ^uwN{e9b}T`Qhmj2%FkICGf#^E;Xoe0C3uSn%5{l_cPj^% z!wvkgMZIk`X}B@rD0rqmKYXx*1A-wTKwY-2T+ry>nHvl!vBf*$`jxD0bz%yeawpVs z!gdscFS-z?tYm5kc`?>GU=VF&d(D=GO701PrNDYX=kdZ_xZtEZLU4#>%GD>tf)B%Q zIp6icv=EdYTiq3K)V8#6TgzM<-ybsyd1mgKVF{J#t?Ldq)2N zt5cb{)1EkSopRgERI^=`^0f_GG&WL%unlEV4puhU?=^R5X=?CzTpE&W=_ncv+-_Do zR_ZyX^2Kevz~x(PyOpvMXi98ZPbSb)1eAc)v55)fLGW%TVtVp0K^U>{Pi02Qw+r1< zZqmPo*JfVQG%3AS(Xqm;#%k7@iu|)?NnObRs5l*@)7-5@nM=VsygQYo>BUsg?sgk> zuF<7zOz|HlJ(R!Mx3cFB`#EqTzlOXS&%9Eou%({**7jy`)l<>BQd2B2(hwP8OVqWt zgr|Kz>>0!BeIY?s(#fL$p7yu&TS`qtya&YVg)(Gb4qdLc&3U_wDbCjYMGvuRqD3n~ zXbMWw9x7XjAw@fak|H|D#Zr70(Aw?tGk4d8YTb6Fm>-Wy2xb;j#X>1{rY0ZkKIZ(vX6n4eatnEwD3hHu1Ock8HpiL~{{Xp4^F$;MMJv-2Wr};=CkuO|G{^kSH&TXOa-Oo0 ztxLDRa7{T6xkA}RBdgax%RvH28bMe9DDoa$lj8Li6x26;yilajxxv>QEu(B_RHdMk z$m!c2FsRTSa$41+ZCksPkyT2SsCO3>P%n~JQ>^Ipk~xv|1J4wdw9zzpMo$gLzk7Op z{{YcRhC)rtcLdM8=9}JMJ=eBUT|ko|qKNVY<1Jg&6?9+1WV^?$mV$>yf~0QRS@))6 z{8qZU=W^o=u_}#;fIUYz_4UIH>uKj9vMIx+p=L%>jTU1Sw8pL7N_9dL-Yh0b=A+a6 zV^K>vc-_fS!-*19jJT~i}m z=HO(gRZ`mk<#XEQlM|aWE!QyLoc61|ZAz+Y98!Jd5wJ+;00AI$01SF6k`}NA0HN-% zuu|q+;Wdd&r3H{mw=$8>?s0n%ZL$D}wpHo}0aCiiy%r#O>+u>xBI5yo7%&6mfLR+2+|&<0ZPZgW(WK+t2dDZq}r3 z5`_i(qM1f_rXg!~y(#KJ*kQ(NPDA99n>m9z(yK>(Qc#|%7?L%S-A8pRf>3WiXIdl` zsctC%N|mJT@btsY)xqqG<(!jG9CHmj#kIQNjny+aA*;uHqBQQe3CB&x>y0}@yl|~C z?-_%Mf4m|olNt0!x7seVP)dfPN0=gd{=ZxUUl*!TjHd+$Xs2D7VbTXOc~AEEVJxm? z@RP8obuVZdcL*KR$xztJKU_ZA#uP<~ZJs$=R1{oEEWnn4XSmImD3*KL z)>5Idljrtu*{fjgmLYLS)m@-6z?rM2k1|1#_6{5Q`0tXIDPQQdKm20y+i0I^VMEa2 zx9YIBl9bvf@{sGhPUY4_qN+fiLwqvraskOp`4^^zUuw%*3cIHkzF+`$KYzX&{{Ykw zqxlD2HY$5q)9w=kS5vT@5$bq`6Q8@vMXl{yP?QBzwn}yfeqVdyGy0?tvM!!w2~GF= zOXe!Z9CfB$&cW-E5=Yk!w_lXt1hGWalXT)Y z5-wpq%5FRLNIT)r-gPH{fu&+*xpCsXVx=_qJqqVM#s|;U_D#N-p>I*-zAfLJ9ty@% zdG2|7VJ4!f*iCpXQgx4j`PI(lRd*YU5A7OCl0^Ri&JH>WB>QD3xHkbwir_yGnV?#z z^HyVNV`xQVfQmG3%UNm9GgXTYCaE%Xo*b!;^m8a9BvZ^};t4EpV`wfRUsF`(f7J*Gb*V zIV_|dl6^gJEQ@eCMh3)kz{<+nK`;^F*iHcn4Zyfq3^udwfO&0$wUOS|y7^RXkV#5sug3rcH|EF! z-pZhX;q#83m?Tb8PLhB;@Sw|twv)>FR_025-M$;(w&e}oiXht|os!?>gR)bfY!p(gbgSFC z1LZg(%Y-l9=#^#KQe{n~Zzsco@az(ITq2d0X-Z%KJ#ay&HP=NPtxRRO9ojK1lqVH7rx;xv>t*De+7E2_A>GpapfEO6!JVqAq30%8xdr{{XTtZ@m{sn`}?0HqK$PuH=O3K}BO_PAg%m0;MER zExFmtKHy0A+Wxm;SSs^9rl(zXEpsW+-dUV9NsHf#VbsO-F{wkYt z7SgU(+gm4c+ir${G5)|t-kw;QPemv5IYO4S@qf)HJA1UZ;twhH9lw-?60d>SAFeC} zZ5*gCnWY|@yQ|&OsVr3rXsS}{$3jT+1|xrr@5=#`Fq=1!pApMocH`Y9*5!+v)vjHr zYwgq*T~g{0mG^ZfB37;RxwLnH82}|=#Oxe5DYHuAORfQ17Te8B&#u{6%d{0}@aY=^ z9D;zIB!rSTC|DAe7%55(&JGe=DZbZWr?slla;h%W*s}xHU2lO>?Aa)ZYh}lW(xcx^K?U%}XR&KX6wrVSDSpt%>iN!WZ zeYVO|-XOM^d&0Dd1eEQHIl&okD`3Zt9l}lj0L@Fq*2ufC%Wc(^sIc4A_ZH2%;tB$b zjMado?v;o`sY%r-BMx8D;|z*S3Og#rOO z!AT^UueLFeR= zw%@)EwhcbCm%claazZdAj=(#FS}a+8(zDCV+i0E2TtR?+6gT{iDr!C+N0-AOR#5dz{>+V0-F8v0$`sGNSyF|i zM7K}fkqBAlej6Q!EIC7>OACV@tVX9C!^oN0+MnAg%_=0e00c*-J+0E(BPpoa>O#p$ zQhZD(l8-Ak9@G+K@+TL<5qt#soZ8Atv|3WjY1|}FFgoIFaoILj^<@f*wTT?#$lyrc z;Se?{JNb=&EF^N7J#f>B3D-RG67>o~kToP~J8nL4g~mzYG)>Am>vc1)1!?hZ`~LvP z%MX@|-4a?xUZHxQL2H=b(+cfn8Pbqa6;}^vDoT%XNj_usz!3wIj8qhujFQzdmV~lY zBTUBMPtOJ;AuLSO%Ghru(XH^M(>6DODVX`-%WcXAU=z)Zoo`()cB)oPrViZW3Jmp4 zc;!b|z7^SPT~Tt}!B+nO(jq7RaKqySsT=GrQ+@6YSd`k&@Yd5LauGXo!FXf3NSVH= zx_BvEk6(DB?A;qLvgr{HG{q~Tg($!s~9frMIe5 zkfXnp{l+Tx%4D;S6t4-JcvB^_v$boD{{S(!G=K<$GJJ`}lViB$M({^;%+6c_zECW` zMz`DP9R}S7B2+|23C2J>sKVor^DP?+WmOL;DIqXA&#oZNyKgFVaI~ohB5;d1U8z=< z->C2vAnZXK?SV@St{5mt7~Bw;x!;8u^4VTk_LqBvq`@=i)Z#rw47af<$ez>6jcz#) zGg3MmHLsVJMzQJBZ@yT7Xr#X?ZuZ$t*(-pT>!ms>Dym-96EJ2Y78KfBxp7h5P{G1_ zSN3gvEP%JFl#|YXd`Nbj+gPUlWG&3S*@~6tQi_1LM&9)9K3{yW>vX1f38&Owg)Gzd zQ_Gq{RYD8AbDAP!Y{HV!+Mn4W4KbNnRnTFvd`AK8m#4*-*x7Y zwN$8)rEAMt<@Z5`GCAp4||>4CEOM{)(i7)S;OD344FA~`~WAeg~`j0@y1wQbgZ7*^7h zLKFkcYVyKCvPf7Fx=fQZh2Oda{{S#w0nCXb&jouVp2&I?2~_Mh!R`l?Hv@|!ksC+^ z_5T2j0zDH_wPH(4cG&Gr#A9FGgS7FSL&>Q@#_p@PK&;Nds-CDM^JNUnu;sveBtLF}U(qHR=sm%O=KskehcZN_zWw zZRZ_J?T+<_&_9_>una99P1DIhkU<79p?iF{S*O^Hru{Wz_1245v?aJs)Sa1;( z&Ahvf(xnCEgw#8%t>fKy#E39O=@(SfKpoHGkx;f4vqgTkGUZbU?;LUDrNpTqz*t(h zQcRdph&}@fjZq|;E!$mf-icAZW;cv}NT%GiHD7VJa!_q)KfkZ5+uM=D+zEAOe@}3G3!2%HBpyB>p65i3tep2X>Ex76sG+%;F)l#2Y5X` z_Q#KUucdVwIlMQx=iIH#Gcm)3qG?u*E(Xx$N_GyZBUE_>bBtxodV^x{fxp#1xrF5* z-RWDxK>cUzoP)xZK2pshR>Fb6o zbZG;8NVEFxwDcORZy}GtQANLs`KvFyDQjMSs31brruN&PQ?@B#t(qrTt6B8;WEcTF zDYLD^Kiq8AmK+rhytJXF(v!EEkDwAs@&_Gbp|s=%y>~ zqez%B%zQEI$ti?v3>}s_C+6iw)V8+@f`IVHPMD6?Sxpj)*)KA}+t{b_!Lz8C}|xJaJPd+C5vwDp`c=AwlrvPn0_ zi@_-fom>2UaDw7fz5(@4mM&-vrU=-6bN+AxierP6oc+b1Ole6xu$!d@+~Elott|?H z=3@aC(h6fnU1l5Ttp8kB3|+OKuWyQ%3z$ zO>ktPDR1dAaEHHgb~O#=J5rL8q|%_E7}OE)<@Ce~h91g9YIxxVwuLkc@0(;TN(Yol zj9O^N{>lYd^Co{ATengv=Nf99zTu8Tmc~vUtv+ld#t(HtUaqUVX1aFTr&6iZ=9I{d zK_{QX6%H;hw`DoRZOXnmRixW2OgOY8I#MUfCzqxz+AP%>Dbd#=;H5Xr&XKn<=lkKi zAeLy*ib{pUXg~&ed4J9n8|s36TdPv1l9Zqn2s{1!FaaRh6M!PcNNlYxG7?e&J5MOY z#^pd?6cmA_uoKFD{y1^0B^U^WT07)|5TH!Sh?9r*w}idJgiSTIs$EN1K}`Mrm{S@D z2*rjHU3L8wQijM#DUG(PnhW+zzMV9}G#J z5cb%jiQ7%p47_$mx7;pum8!I%MaAkQAQ}9znSV`0Nj6su)ZPWIy&;)CW_>Za+Of3GXqvD@jCBbTlMa{L0b5>Dr=;8_=IEa{GXxtt56f(90JkU%l%whRlSxUw9O z6CHgplGJ9v*?dmGNRK%C^upR~nmnwB446@m-v(WD9KpasE)YRG&Ilo~1h`}$&z20J zBO{f7eB|K?c0vYr5ITHtESqs79gu=#fdrlB3fqgMk&B^}9o4@6m`W|y!VGWA%jM~S zh48-8M94GLU?N`>osYUc{{YSo$d|;)*pNTY2^kCEK;1`H#{m~*f}#~4UoX9|X+T|J zDpZd?SR^d4`qtY^QV_Qk0aPV2cKZVsT2(iTC>?^P*6O?{52|6QFCk@5wJwrMBXAP} zN{Q-8KPcN9*y+gOa*2IXd&^s$>k3w#NK$ob9a2C)et2Bq?IA{M{Mk%KE^bq~Scg)W zO>MHRPW96-1nrrkdte z%oLr5#%Gt`t|j=OsRE(5ve2!la)GSXTqzO!wL_06cd0@ahDL(ajX^`j%zLCx`0`i8 z2qc$Pdn3WUzaM4Vv^RlB(tQ@wH+HVCik4firn$S^7TZ-Xhe-(VFG(j#g2~ipNUsrRWSBcP{{ZnnugNM#)7L~pb8o~YhrP9KQn1Yv)Gj*ra;Ituiq`=wni{S_9QeLL5yoOTT}uQ;1_1AG z^0aL3np*YKUMT38zonG0Y7#XmZ53(=OUfG7(O4xieeVi@a7z6M##mVLxkl?agM{m0 zirPA~-0e@aYTJOeT{@Y334q}Kk_nWrVxCh3j7FM}JG!>htDjCwnfN6ORsQX_@we4p z!>TGxN@;^3voWJU{*lXbsDD)R9E0LlM4HHaXb+vey;i?L>PdV}wFAm{DSa7&)82+x zR@*N~8cc)EIed1^GYg{c>>(be&c~uO!kgn{s;XyJv zkU8zN83KKAOVoND2CfH=IO4|NdQ~k{kQ2B1Br1%jR)u$z^?}Bcp9)ARB+Tvx#N(OO zd@!kj+v#QA(ZD?a0D`Wf*BV8h+^u&iYHbuQ8qiRXq_jK8Gb78W=eMRW^xv7MZrR#J zy;3$ZXZa5*GQZ^9ub3Wkw%pYvC13vY2v33ERO|pgW9f-9>9JHD%oca2Vyz&kmM<%^ zJ%7r0aN{D-Sc})v%R;r*)YA%&aih&&6-0a|{l^}r_*K#4Pp0{a2c7=_kXdbFyw4`l z!2YPrp5!}KGbT}mj z>eiH{E-0j)Th8%?2OjB5G|C<5D^O6>439hp9H5=d)VJK2aVu9qaNc;Ku%i)4}DN+vT zihRvf!)>zSR@wgmq)6x|`{0`)2_e=(qRdsut4MKB&aEJgghxNq2@fdu9_h|ALW=@k z))bN^ch!eCC3#eI{$Z?Ldwtu>3MnWgD`AHB6piICFK?wBd@!SN948x8%XESajYJ4Om`P27wkj;1(%yw33M9dw*9PWx zDNK0@_mwTb!|4=T@|gAWj7X+#-V}O*3At5Ij(3WuE6pHUi7P2POmo5~7jRAm4CTvH zHafK3>lPBSJRoiYf6fx&-7LE5Z&wj%S8ZyIv?ol2>LLseOgLx4N_lYpvAV@H^O{1I zN{sRtR6HcVgzLQ3A*WIsR+wJ#)M3{;$TXhnLdi7fs%fI95LP$w7$4)N7YujhF(b(~ zQnD#UDGG3;pg{B(l38vPW9)<~+CfB+ncq~;-z+Jw2L%`&s7CWl%6veiOz*xF9N$!S z&nb(TvqNpL655liq!2!53`;QVpN>DlLe&?lipr7@SEe+iM?bys6g($`07^c~R`NoF zB1%W^&+CPPQ8L2;Bit#g&;k<5q{MCY`r#${P9iC+HL4oRL~}o{?}ypK1rCy)=GAcT z8U9dEB`2umhZt;AZ*Ux`1q{BVB}=4AR6sER;>bKG+ZRBB1d$tcGl?PUw{bW|5dsuO z-navtBsTZBML?6h{HF^}66+%o%mK^O1nv`Z8|4lR&rBl0BLrKz5Js)ah6s;DhjV3~ z=mhgWTp=FhP;3JO3Jod7lWUZ|$@5sg_3ik{-QdIP;FUtuZnrK{X_ezR--{I=9R=DjUWrQ(SolAMQd&bZ6 zQrSDGh?4{)iJUU$!0ttqAN@a77uYwl(o2f7)V)n|p{uv*T8b3Ktg6zMTXoQ+G(-gf;pNc%adQZ3MV4wxha8lRS6JjYDb$5M%>$t) zeqC@Sco`=O8{~05RH;hMV%w(`1jn?Wld4cJ;2Bp@g9fz6XgRFm#_Z$mQn*5U4ox z-mBBJ`h_=vP~2MwxLmr6P?nlv_7sBMn)`Ehy`0B$x6#-Z;*^VRr@TR_C*N|Wsajkm zWbV^p2?JuK$;MBo{uWSCN#ZzeKK}sKS=aSM^S5X_N4NP-e)8L7wuw!;!(ydCNNMe##ZD_hJ>Sl8VBTkA6hO{Xw4!)4vw9Tx> zuHjIkl?0MfxRj@nF&txD_^9a~TS71h$>jY4+R${H3wKoVn$$nQZZ~>T>7uW>+uw0? zRjsV31-O#hw5%9jq?INN$w^AQXaw~xozxvwOxdPx(pDnAjyNYVu-@Dh?5?)CRK;hr zp_kI)0eOch()u0Jc2G))335C-q(~qVAQ53(N4y(ytaR%C01WMTyGo`UUhKQtAm+z7 z)7giOmj*5i(^p-?oZS2C%U74XqK5-yDNkFRP$61TC=QK4!jv)PUy5G=#;YN#qkhSK z57|H9uG`ZcT~6418JTwf0N8z@{(gl(8H=`e8+$*r-5+T#%-meyb(_6RW@~!d%=v92 zP=Nhq8B?^$GOzlm5I_<^oOs^1r8Uh0M>4Q^FUU6^eg6QlKSk5vW}B!0VR$a?2-<$` z$%mDA)!O$qU25}>1N&F@P3;wxo^ZIu6ZG{Ik5Y+{(%z$SXd4)Z8VVg}8N;g8wb-8W zd*kxA_f}HrbWLW-U@ac0V!O2;ZaORV6%QJFEID?`Wxzj<@cQ(N#WlQ`9pzOV3Y4SG zdSNnljmDOfQ>~r1l<&8{^d0{I6as+IEG0xCv9W@6DC}TN`h(&B0K>4*+RD++K>q+M2dZj;#K#xo{erQ&w1Q_( z&_+A7c5W=F!1Pi6Xh`neTE`*EF&?Km3PS-<%}qcW#?T4d&k&sJCmIUUNAp2Y1noS& zKU_A}-8dTF=-PTh7p+{TXUKid0ci=tAhr|DrxV;1l9ZmG-wp=_8Ae%`Uw)#Q-0$n^ zFx&Z0M;-Erw^S@J;v6VhK2yqY1B!95fP}W4t6ZgWlcrCcbmf8w+}jHUw!2V5JI8@i z$>e&EOf0c9*&BP5$+@)nbS0$0f_#Vk?}muFcg7d8+qWTlQm(sCK7N=jfjCN64myRU zBXmgR<%2wQ<#Bku%Hh(*`3U0(&Jj z<+@s=C8Z@nJFl1@e6aW!%0rytmZqxm11hQSG$pjFr=I@+;|3uIvPX~Vx9WIwhZ!yR zK}rkOcIWW=VJ?LcsZpi-Ce>RswMv5tT9jZC2dD3b9|0UE8taRum9Hq=6yr*G66#$6 zKn{o3=Y$A~Qj^)BHtKZ}-nYBLkUb;v!4w9%VJsUb1%695=2}=S zg#_vw?>JMLVU%UpOSyjL^|$$HQShWBljr0=JQH3=2`S3Eg-u}#Dp6Og{rO<`l2B6C zN4^?Vp$bU0$|eSsZQ6&6e&zI8-ImYT=hTlc1#g4Y>Lh9U8h&>V_50(*hpe@3ATC!tJ zhSi{X&YT3GpA^|`hSGcq9E=W_SaMdyww$L*`hYDU1LmGym^O=~xLBnMe4fHJC&G|+ z_i*!Dd?udkE%tIH6R@I$C{Oh#@9bh^bpEOvo=4hCDajOxNC6vqVphZ0ruLUbFU+L(FFbJ3@0F%j0?j+oV5}=SZ zDo_-s0DK!t1d_Hn4!N2bnXs zms}VGrFex8xd3{Phu=&cy;FBz7Wo0o2}Tw`0EHdCSTt5bNP)KAdtg}=?u<%?(nmeW zz`7ezhGIF7D8qmR2w0di6X!iJs{|Y|gca^&82NlK*3<&l{-}<4N>bWNKu9D+iNb-h zP1Y8ml4d9L!nYJ)qACt0n65#5}8F zMKwKRv=uMf-1e8YRheGJ#0LKW ziBYJUi(BVe?!uIrNmicm5)X=89(!O0*(Jc*^r!ItzQ@Tx4NJ7eElqDukn{8Y(7@ zB_DURAgX)CAb6sbmu~88g-lw=Z@t60A;X@7rr`Ng zozsr$R;_@Y{utNz*ag=ku^j1+Q2IF#@a3@T`Mg%T$`Nfvejr=Q`MAVq||q7Z9030 z-b$OdFqM>{bpz$+Lc#DZLYpiu~@|oXS7q*CH3m3eFaDgUXm0B1TMFsYn2ip?i76vur2_|~ZH{f$eG3+&0gU4P?fq9k z(YlG7fp;Ns`-wa{?B8wTt#(r4hEdA=9OFY&?OYhVSgKKKdcKvyw6{{#OIjMKXsIhn z4kV~4Bow5OPtSjd{{RSIr&ah8GjKU;oBpu90ityS=7+?I*c^kEKJfE~S*5q=5taCd zd(F(KrBusxmja4!5F`*JNd z>PiHuDh(q^DG-vWl0fJrnDocJH0m)=10e?cKns^|+~VWhpgTLv>H`x~%u!}_uPidK zAerUqh}BQ*6t=eH1rW0T0JNn`C#mwpE#9hahh(Ejkd>1oY5HIXSur!aC6HP`CPv*n z@U8e!k)h-^m6bULH-Y)#0Qx00gz%VmYMN!f6cz!K0FHP|q#e|_*g&yK#=4oHG%c{8 zV0z&`AWKf0GxV-_lz*834uk253?s5)W|P8Js|_wgLQf+jpWF;BM*`_N%Q7BiT9c(S zJcl^KHXxJJYz;Y}Hel=$2E<`I3X<20WUb?GY@{xA7~}^$8=4Y)bLfDDidAV!jBPz< z)5{H|mTwn0M^rS`N=fjm&N}=sEQbBKO{$xES|p`0J8UqWfjAv}t!7y7R1#6Iq!ESk zjVdaMDQGW3Q`SKJaAlTB4;Qj&*HyVr;!=^xT;PAk5|p)7eGO?$Xe8;9J>i6xrri*- zd|EDauCXp?^ynwk^!Z`vUZcJuGLkP<7W$PG1f^T@2^-;3KR86kkc_w5DBf?tlqz8C zKKzCZWL*yw-ECH7cAjNHE$`(RY4Kbq+c@Pm&R%ASg#=2%fCI}6n97m39Ho1E1*Jql z3f#w}e)u*7M5UE0N_GTv+XO|eiP(Ta8)8f@w+bwy%&H$3oNBV@*jY$A zjDk7+#vo4MU6m!G!pW0ns-w1oPzQWK&^i4706Ye|$v|I)vsqSdk0qp)ByZ3A;ES)6 zNY7-Zrl&)Ta1~5PU%0~D%L|~K7B$h-C7>1vojVcd{{T2sI6*vJC}Ba?7LcJJ0r%&H zAf#NgUh1Q8qCQJtE%ei&KI$YL@Vu14J<8e| zPy$R({{S!Zg0dvF-2xzU^xG1J`B68JEV5cNu_ApiV54itbQZ#igC;so7I2(kOf3Mj z&u!<|mI}cI@{~5fx*!k~;0LVyIbjZV5ug?A5>Kbg1T%yzij{he`Czt`ebK^UTM_fZ z!x1c$`AqtBz$`#}ppZcv&+mZNAW@0<5xn!lNwGwIP*lByiS@w}f&hYc1te{@5|1e0 zNJsnnVIt{BR%At)014gTx=reMC~GLX;1U16n9IA8%~u3lAcNu zI^rFD3o2oB5^&*UxTP#`dwCgNZ1eROX#USUM!IDD=X}grdizedYUwMfE-ogT^G04$ zQBgu?`Hh4Yf|7h~t59B_4EX1*dOojAnA~{}1b1CCPt;?nWyd|iPrRG>g7$^Vp-Q@6 zf7JGLsm9Wqy(%0pX%YfdH{3xR?qG8D9269hza=hJL$G+&B3tsY^J+td9Us;Zuth4-=iRm#cz ztou9h9^pw_Z_JqySMKq*dz-xwrK!{)h;k-DKs(5h=rPqaZ`u-en^rI%$!Ds1T1Nex zsjnbq{FRlir!wV>b-jvLm=xiB1Wr0_F0)NDH^%Ts)mOR)gJKk8 zoA}k1^2IuxsESt90AW=qR=UXqg3Aa6YY++4tqJwTZC_BZd1L(4=rqT_{VH9X`)lR& zRMy)p&Rp;JmcrJWS_a*4z&n>2qA(K#?rIkvT*fHn)uxn?(ofUdEZ zCpM>x+-q+@QZw z(*dz+B9o6CbjX)7-fE}J)Yep;2zlFOJ=T$+Njtelw%;v)kVq*i8%E+WL9A#Ml8@su z{{Te&Jlbo%!>oPO&yYJ-Wjcm~+(V?Y*eq8Stxe`CONgwXapsAiXbzS zh}9(HZPMDSX<`)ak7!u#q3M4a##mo+t);Pnm}s89Tkdu|!Ij-KwUjk>*GhxToeGfn za5l9S_<>Hr5S0ZJyB%fLv$8iwKsfLIJ=S|j=@1>hr||y(Dh9D!dqQU1)p&4bT#IhX zj9i{HcPbiJT&8J&;*yr>8Cgo}YBZ#iRPjwZ7NrK+el;UGpmYq?&23hq?D8#t@1Mu; zRywCrHUr?(4iwgMJso3=S6wdGtL5+wyC1qw6z5&ZA_?XSSB>+AgXyIm;EA0#gu~< zRc7N3PTB^jEVNX#l;)b%Xrre|Z$gK5#VcumP$ZoJA_42lOyUf+O>0Ozt9m*qUO@vM zsw&LcZ!d8|mcy89n7U;w;Yr`q+wKhx>Ge~o(xXgNjcIWU32DI6wG_CR&=rn%)_pNG zWj^Q*$p-{~MbLVGUWJbE-R2&OLdkb*)ke20*`F}KnVN&$RJ_w|x`^Zz-K7aqOmis& zW0Ul*wWx}xQCDQQy_V9ZmJ-n{BEYA+*Ghf$EE7FWIz`lG#bkw1d8bVO05X4E7T^>6 zfKfJYbrr~1LY4&lci#}|hVB#5$TwX_bkr|2l7O`VzfZltwjwq%Fr*oRRc@Wu(xMEi z4*tJ!h4^U>lo61Led@F*fK{ZKld<{X1SPaE7z5s>D5|-%MuBH%D;ZDTI?}xx}K`${| zQUDJjN2aeVJRDJ3I%sQ@<8VNNHxY%0`lyny1YJdIY$%f);{dM+`HLGF{EQVzH(5=Ovv`#1^Uj;4GqW+pjAbihfMEwUBEx`ggT7(ab*WTeG=WhB$B zq$nz6%orOC08^=56$o}4Bu6hju;6{uPG}xvpIdBc=GLf89SpShW4LTA!HxQQ;F{|qT4}djop`OqxUsHA&|~ZzJcx_oN|q~m zOF*9RdPW^!P~RQ9r`uFXQZy<;zfJ!DOf5E&s;y{Rr`;QUi~;GCqIwo7mnJY2m#xNXg{eXa+DwPs-sQz=qGjlmmz{rcg^Y*cy9RXpQ^ZPVOS z-FwAAK^|xPV!o(=>jgFz?rqd>XrOWS(6}NapIyJU5ZB=+DeTp&x*Et*Rku!&*Ahbl zJ*78qZ9ebv>B@(S0P26v8IjqrNlr|emu~7?ZYj4Co{~9yyzqt+3UQ6@RQqVk1$tLd zfVBb5U4CCIN^Se1aP(3o9f7)Z0F;Esr!SY~hb}@O+ognB5i%0D0rc45d!-g7dMi0d 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

      uY&ZtBEexd8HriLM1$`iy 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 literal 0 HcmV?d00001 From ac2d275c4b90c88201003c755e9af3ddbd2b4981 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 28 Jan 2013 20:43:00 -0800 Subject: [PATCH 029/114] update outline with link to week 4 slides fixes for week 4 slides from Dan push forward on week 5 slides --- _sources/outline.txt | 14 +++++ outline.html | 59 ++++++++++++------ presentations/week04.html | 66 ++++++++++++++------ presentations/week05.html | 123 +++++++++++++++++++++++++++++++++++++- searchindex.js | 2 +- 5 files changed, 226 insertions(+), 38 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index c9829bc4..d3e26d9f 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -281,6 +281,8 @@ Services Gateway Interface). We'll see the ways in which WSGI is similar to CGI, and look at the ways in which it differs. We'll create a simple interaction using WSGI and see what benefits and drawbacks it confers. +`Week 4 Presentation `_ + Reading ******* @@ -359,6 +361,18 @@ framework. We will have the chance to repeat the class lab, or create another dynamic system using one of the many other python web frameworks available to us. +Reading +******* + +* `Web Application Frameworks + `_ + +Reference +********* + +* `Python Web Frameworks `_ + + Assignment ********** diff --git a/outline.html b/outline.html index 5449011a..abbe26bd 100644 --- a/outline.html +++ b/outline.html @@ -26,6 +26,7 @@ + @@ -35,6 +36,9 @@

      Navigation

    • index
    • +
    • + next |
    • previous |
    • @@ -268,6 +272,7 @@

      Week 4 - CGI and WSGI +

      Week 4 Presentation

      Reading¶

      +
      +

      Reference¶

      + +
      +
      +

      Assignment¶

      To Be Decided

    Week 6 - Django¶

    Date: Feb. 19, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    Week 7 - Django¶

    Date: Feb. 26, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    Week 8 - Pyramid¶

    Date: Mar. 5, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    Week 9 - The Cloud¶

    Date: Feb. 12, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    Week 10 - Plone¶

    Date: Mar. 12, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    @@ -423,27 +440,29 @@

    Table Of Contents

  • Week 5 - Small Frameworks
  • Week 6 - Django
  • Week 7 - Django
  • Week 8 - Pyramid
  • Week 9 - The Cloud
  • Week 10 - Plone
  • @@ -453,6 +472,9 @@

    Table Of Contents

    Previous topic

    Internet Programming with Python

    +

    Next topic

    +

    Assignments

    This Page

    • Navigation
    • index
    • +
    • + next |
    • previous |
    • diff --git a/presentations/week04.html b/presentations/week04.html index c8a5fef2..afb73413 100644 --- a/presentations/week04.html +++ b/presentations/week04.html @@ -177,11 +177,25 @@

      Running CGI

      • Python Standard Library CGIHTTPServer
      • Apache
      • +
      • IIS (on Windows)
      • Some other HTTP server that implements CGI (lighttpd, ...?)

      Let's start locally by using the Python module

      Again, Windows folks, this is going to be most easily done on your VM

    +
    +

    Running CGI - Preparations

    +

    If you are running this on your VM (Windows users, this means **you**) and +you do not already have the class repo on your vm, here's the steps to get +it:

    +
    +$ cd
    +$ mkdir git
    +$ cd git
    +$ git clone https://github.com/cewing/training.python_web.git
    +$ cd training.python_web
    +
    +

    Running CGI - First Test

    Make sure you have the latest source of the class documentation, then:

    @@ -190,6 +204,7 @@

    Running CGI - First Test

    assignments/week04/lab directory
  • In the first terminal, run python -m CGIHTTPServer
  • Open a web browser and load http://localhost:8000/
  • +
  • (if you're running on your VM, you'll open http://<YOUR_BLUEBOX_VM>.blueboxgrid.com:8000/)
  • Click on CGI Test 1
  • @@ -203,6 +218,7 @@

    Did that work?

  • The file must be executable, the directory needs to be readable and executable.
  • +

    Remember that you can use the bash chmod command to change permissions

    Break It

    @@ -216,7 +232,10 @@

    Break It

    -r--r--r-- 1 cewing staff 42 Jan 17 22:35 cgi-bin/cgi_1.py

    Reload your web browser and see what happens.

    -

    Put the permissions back to how they were before.

    +
    +
    Put the permissions back to how they were before:
    +
    $ chmod 755 cgi-bin/cgi_1.py
    +

    Break It Differently

    @@ -224,6 +243,7 @@

    Break It Differently

    the script? What happens there?

    • Open assignments/week04/lab/cgi-bin/cgi_1.py in an editor
    • +
    • if you're on your VM, use nano cgi-bin/cgi_1.py (ctrl-o, <enter> to save, ctrl-x to exit)
    • Before where it says cgi.test(), add a single line:
    @@ -298,13 +318,16 @@ 

    CGI Process Execution

    More Permission Fun

    Let's interfere with this:

    -
    -$ ls -l /usr/bin/python
    --rwxr-xr-x  2 root  wheel ... /usr/bin/python
    -$ sudo chmod 750 /usr/bin/python
    -Password:
    -$ ls -l /usr/bin/python
    --rwxr-x---  2 root  wheel ... /usr/bin/python
    +
    +$ ls -l /usr/bin/python*
    +lrwxrwxrwx 1 root root       9 Oct  4 18:48 python -> python2.6
    +lrwxrwxrwx 1 root root       9 Oct  4 18:48 python2 -> python2.6
    +-rwxr-xr-x 1 root root 2288240 Apr 16  2010 python2.6
    +$ sudo chmod 750 python
    +$ ls -l /usr/bin/python*
    +lrwxrwxrwx 1 root root       9 Oct  4 18:48 python -> python2.6
    +lrwxrwxrwx 1 root root       9 Oct  4 18:48 python2 -> python2.6
    +-rwxr-x--- 1 root root 2288240 Apr 16  2010 python2.6
     

    Now, reload your web browser. Did you get anything? Check your debugging tools.

    @@ -312,11 +335,12 @@

    More Permission Fun

    Enough of That

    Okay, put the permissions back on your system python:

    -
    +
     $ sudo chmod 755 /usr/bin/python
    -Password:
    -$ ls -l /usr/bin/python
    --rwxr-xr-x  2 root  wheel ... /usr/bin/python
    +$ ls -l /usr/bin/python*
    +lrwxrwxrwx 1 root root       9 Oct  4 18:48 python -> python2.6
    +lrwxrwxrwx 1 root root       9 Oct  4 18:48 python2 -> python2.6
    +-rwxr-xr-x 1 root root 2288240 Apr 16  2010 python2.6
     
    @@ -329,11 +353,11 @@

    The CGI Environment

    CGI Servers

    -

    Let's find 'em. In a terminal fire up python:

    +

    Let's find 'em. In a terminal (on your local machine, please) fire up python:

     >>> import CGIHTTPServer
     >>> CGIHTTPServer.__file__
    -'/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/CGIHTTPServer.py'
    +'/big/giant/path/to/lib/python2.6/CGIHTTPServer.py'
     

    Copy this path and open the file it points to in your text editor

    @@ -366,6 +390,8 @@

    CGI Scripts

    Now, in reverse. How does the information that a script creates end up in your browser?

    A CGI Script must print it's results to stdout.

    +

    As a corollary to this, the test method of the cgi module has this line: +sys.stderr = sys.stdout. Why?

    Recap:

    @@ -390,7 +416,7 @@

    Recap:

    Lab 1

    You've seen the output from the cgi.test() method from the cgi module. Let's make our own version of this.

    -
      +
      • In assignments/week04/lab/src you will find the file lab1_cgi_template.py.
      • Copy that file to assignments/week04/lab/cgi-bin/lab1_cgi.py (note the @@ -398,6 +424,7 @@

        Lab 1

      • The script contains some html with text naming elements of the CGI environment.
      • Use elements of os.environ to fill in the blanks.
      • +
      • view your work in a browser at localhost:8000 or <yourvm>.blueboxgrid.com:8000

      GO

    @@ -546,6 +573,7 @@

    Copy CGI To The Server

  • It is not world-writable
  • You'll need to put it somewhere you can write without using sudo
  • Put it in your home directory
  • +
  • If you are already working on your VM, you can skip this part.
  •  $ cd /path/to/training.python_web
    @@ -623,7 +651,7 @@ 

    WSGI: Apps and Servers

  • Be a callable (function, method, class)
  • Take an environment and a start_response callable as arguments
  • Return an iterable of 0 or more strings, which are treated as the body of -the respponse.
  • +the response.
    @@ -927,6 +955,8 @@

    Configure mod_wsgi

    $ cd /etc/apache2 $ vi sites-available/default +

    You can also use nano or pico or joe or whatever simple text +editor you like.

    Adding WSGIScriptAlias

    @@ -977,6 +1007,7 @@

    Reload Apache

    $ sudo /etc/init.d/apache2 graceful * Reloading web server config apache2 [ OK ] +

    Hit http://YOUR_VM.blueboxgrid.com/wsgi-bin/wsgi_test.py with your browser.

    Looking at wsgi_test.py

    @@ -1018,7 +1049,8 @@

    Lab 2

  • The script contains some html with text naming elements of the WSGI environment.
  • Use elements of environ to fill in the blanks.
  • -
  • You can test and debug changes locally by running the script (python lab2_wsgi_template.py)
  • +
  • You can test and debug changes locally by running the script (python +lab2_wsgi.py) and then pointing your browser to localhost:8080
  • GO

    diff --git a/presentations/week05.html b/presentations/week05.html index d6d8df79..49fe508f 100644 --- a/presentations/week05.html +++ b/presentations/week05.html @@ -5,7 +5,7 @@ -This is Week 5 +Internet Programming with Python @@ -29,15 +29,132 @@
    -

    This is Week 5

    +

    Internet Programming with Python

    +img/bike.jpg +

    Week 5: Small Frameworks

    +
    +
    "Reinventing the wheel is great
    +
    if your goal is to learn more about the wheel"
    +

    +
    -- James Tauber, PyCon 2007
    +
    +

    image: Britanglishman http://www.flickr.com/photos/britanglishman/5999131365/ - CC-BY

    + +
    +
    +

    But First

    +

    Review from the Assignment

    +
    +
    +

    And Second

    +

    Questions from the Reading?

    +
    +
    +

    And Now...

    +

    Small Frameworks

    +
    +
    +

    A Moment to Reflect

    +

    We've been at this for a while now. We've learned a great deal:

    +
      +
    • Sockets, the TCP/IP Stack and Basic Mechanics
    • +
    • Web Protocols and the Importance of Clear Communication
    • +
    • APIs and Consuming Data from The Web
    • +
    • CGI and WSGI and Getting Information to Your Dynamic Applications
    • +
    +

    This concludes the foundational part of the course.

    +

    Everything we do from here out will be based on tools built using what we've +learned these first four weeks.

    +
    +
    +

    Onward

    +

    We are moving up the stack

    +
    +
    +

    We've built

    +

    A full-featured web server

    +
    +
    +

    We've built

    +

    Data-driven applications using web-based APIs

    +
    +
    +

    We've built

    +

    CGI web pages

    +
    +
    +

    We've built

    +

    A simple wsgi application

    +
    +
    +

    From Now On

    +

    Think of everything we do as sitting on top of WSGI

    +

    This may not actually be true

    +

    But we will always be working at that level of abstraction.

    +
    +
    +

    Frameworks

    +

    From Wikipedia:

    +

    A web application framework (WAF) is a software framework that is designed to +support the development of dynamic websites, web applications and web +services. The framework aims to alleviate the overhead associated with common +activities performed in Web development. For example, many frameworks provide +libraries for database access, templating frameworks and session management, +and they often promote code reuse

    +
    +
    +

    What Does That Mean?

    +

    You use a framework to build an application.

    +

    A framework allows you to build different kinds of applications.

    +

    A framework abstracts what needs to be abstracted, and allows control of the +rest.

    +

    Think back over the last four weeks. What were your pain points? Which bits do +you wish you didn't have to think about?

    +
    +
    +

    Level of Abstraction

    +

    This last part is important when it comes to choosing a framework

    +
      +
    • abstraction ∠1/freedom
    • +
    • The more they choose, the less you can
    • +
    • Every framework makes choices in what to abstract
    • +
    • Pick a framework whose abstractions meet your needs
    • +
    +

    Frameworks with a minimal level of abstraction are considered to be +Microframeworks

    +

    Where is the line between micro- and not?

    +
    +
    +

    Python Web Frameworks

    +

    There are scores of 'em.

    +

    Django Grok Pylons TurboGears web2py +Zope CubicWeb Enamel Gizmo(QP) Glashammer +Karrigell Nagare notmm Porcupine QP +SkunkWeb Spyce Tipfy Tornado WebCore +web.py Webware Werkzeug WHIFF XPRESS +AppWsgi Bobo Bo7le CherryPy circuits.web +Paste PyWebLib WebStack Albatross Aquarium +Divmod Nevow Flask JOTWeb2 Python Servlet +Engine Pyramid Quixote Spiked weblayer

    +
    +
    +

    scraps

    +

    What is a Framework?

    +

    What types of frameworks are there?

    +

    Why choose one over another?

    +

    Intro to Flask

    +

    Lab 1 create simple multi-page app with flask (redo week 4 homework in class)

    +

    templating (jinja2 in flask)

    +

    Deploying to webserver (virtualenv and mod_wsgi)

    +

    Lab 2 create a simple app with flask part 2

    diff --git a/searchindex.js b/searchindex.js index ed3c9e53..861cf4c9 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,sourc:1,string:1,util:1,veri:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,small:[0,1],pleas:1,cgi:[0,1],outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,click:2,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],"new":2,contrast:0,hasn:1,berkelei:1,learn:[0,1],here:[0,1,2],inher:1,along:1,search:0,technolog:[],step:2,prior:0,zodb:[],implement:[0,1],chanc:1,ourselv:1,via:[0,1],prerequisit:0,extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],recommend:1,tell:2,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,account:2,valuabl:1,prepar:1,work:0,focu:[0,1],can:[0,1,2],http2:[],purpos:1,want:2,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1,2],winter:0,anoth:1,write:[2,1],how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,clone:2,after:2,sundai:1,lab:1,befor:1,date:1,data:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,author:1,django:[0,1],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,concis:1,grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1,2],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:0,doug:1,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,base:0,org:1,care:1,lucumr:[],place:2,principl:0,assign:[0,1,2],first:1,origin:[2,1],softwar:[],feel:1,onc:[],qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:[2,1],top:[2,1],system:1,stack:1,master:[2,1],zeromq:1,"final":[2,1],pocoo:[],option:1,relationship:1,tool:1,copi:2,took:2,part:0,pars:1,mostli:1,eibrari:[],than:0,provid:[0,1],tree:[],structur:1,project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1,2],tabl:0,need:[2,1],techniqu:1,equival:0,client:1,note:2,also:1,contact:0,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,usernam:2,object:[0,1],reach:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,doe:[0,1],determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:[0,1],corner:2,find:[2,1],onli:1,explain:1,configur:0,apach:1,written:1,should:[0,1],kessler:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],express:0,becaus:2,repo:1,rest:1,requir:0,truli:1,email:2,rfc:1,integr:0,contain:2,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,close:2,review:2,wikipedia:1,urllib:1,label:2,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,job:2,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:[2,1],overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,evalu:1,add:2,hellmann:1,compon:1,json:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,solid:1,servic:[0,1],employ:0,defin:1,"while":2,visit:2,wild:1,python_web:[2,1],week02:1,pyramid:[0,1],briandorsei:[],lightweight:1,minutia:0,sever:1,week04:1,minim:1,make:[2,1],format:1,same:1,complex:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],kit:1,student:[0,1],extern:1,studi:1,appropri:1,entri:1,coursework:0,exampl:[0,1],thi:[0,1,2],choos:1,model:[2,1],portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,virtual:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,armin:1,blob:1,homework:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,xmlrpc:1,week05:[],read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:[],like:[2,1],specif:1,manifest:1,benefit:1,either:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:2,satisfactori:0,week03:1,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,refer:[0,1],machin:[2,1],cgi_exampl:[],investig:1,run:1,usag:0,confer:1,host:1,dissert:1,repositori:[2,1],januari:[0,1],feb:1,chapter:1,about:1,actual:2,socket:[0,1],constraint:1,commit:[0,2],disabl:0,own:[2,1],curiou:1,washington:0,curios:1,assess:0,chang:[2,1],your:[0,1,2],git:2,log:2,wai:1,transfer:1,support:[0,1],submit:2,why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,fork:[2,1],form:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:[],link:2,gain:1,rfc1945:[],pull:[2,1],made:[2,1],wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1,2],request:[0,1,2],pragmat:0,parser:1,lectur:[0,1],file:[2,1],mashup:[0,1],when:2,scrape:1,field:1,other:1,test:1,ignor:1,you:[2,1],repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,train:[2,1],htmlparser:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,sourc:1,string:1,util:1,veri:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,small:[0,1],pleas:1,cgi:[0,1],outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,click:2,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],"new":2,contrast:0,hasn:1,berkelei:1,learn:[0,1],here:[0,1,2],inher:1,along:1,search:0,technolog:[],step:2,prior:0,zodb:[],implement:[0,1],chanc:1,ourselv:1,via:[0,1],prerequisit:0,extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],recommend:1,tell:2,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,account:2,valuabl:1,prepar:1,work:0,focu:[0,1],can:[0,1,2],http2:[],purpos:1,want:2,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1,2],winter:0,anoth:1,write:[2,1],how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,clone:2,after:2,sundai:1,lab:1,befor:1,date:1,data:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,author:1,django:[0,1],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,concis:1,grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1,2],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:0,doug:1,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,base:0,org:1,care:1,lucumr:[],place:2,principl:0,assign:[0,1,2],first:1,origin:[2,1],softwar:[],feel:1,onc:[],qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:[2,1],top:[2,1],system:1,stack:1,master:[2,1],zeromq:1,"final":[2,1],pocoo:[],option:1,relationship:1,tool:1,copi:2,took:2,part:0,pars:1,mostli:1,eibrari:[],than:0,provid:[0,1],tree:[],structur:1,project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1,2],tabl:0,need:[2,1],techniqu:1,equival:0,contact:0,note:2,also:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,usernam:2,object:[0,1],reach:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,doe:[0,1],determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:[0,1],corner:2,find:[2,1],onli:1,explain:1,configur:0,apach:1,written:1,should:[0,1],kessler:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],express:0,becaus:2,repo:1,rest:1,requir:0,truli:1,email:2,rfc:1,integr:0,contain:2,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,close:2,review:2,wikipedia:1,urllib:1,label:2,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,job:2,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:[2,1],overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,evalu:1,add:2,hellmann:1,compon:1,json:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,solid:1,servic:[0,1],employ:0,defin:1,"while":2,visit:2,wild:1,python_web:[2,1],week02:1,pyramid:[0,1],briandorsei:[],lightweight:1,minutia:0,sever:1,week04:1,minim:1,make:[2,1],format:1,same:1,complex:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],kit:1,student:[0,1],extern:1,studi:1,appropri:1,entri:1,coursework:0,exampl:[0,1],thi:[0,1,2],choos:1,model:[2,1],portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,virtual:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,armin:1,blob:1,homework:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,xmlrpc:1,week05:[],read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:[],like:[2,1],specif:1,manifest:1,benefit:1,either:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:2,satisfactori:0,week03:1,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,refer:[0,1],machin:[2,1],cgi_exampl:[],investig:1,run:1,usag:0,confer:1,host:1,dissert:1,repositori:[2,1],januari:[0,1],feb:1,chapter:1,about:1,actual:2,socket:[0,1],constraint:1,commit:[0,2],disabl:0,own:[2,1],curiou:1,washington:0,curios:1,assess:0,chang:[2,1],your:[0,1,2],git:2,log:2,wai:1,transfer:1,support:[0,1],submit:2,why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,fork:[2,1],form:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:[],link:2,gain:1,rfc1945:[],pull:[2,1],made:[2,1],wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1,2],request:[0,1,2],pragmat:0,parser:1,lectur:[0,1],file:[2,1],mashup:[0,1],when:2,scrape:1,field:1,other:1,test:1,ignor:1,you:[2,1],repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,train:[2,1],htmlparser:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file From 46e1f9fd3585a0915bda0433181f112de684b818 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 28 Jan 2013 21:09:13 -0800 Subject: [PATCH 030/114] update outline with complete readings for week 05 --- outline.html | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/outline.html b/outline.html index abbe26bd..c81c247d 100644 --- a/outline.html +++ b/outline.html @@ -336,17 +336,41 @@

    Week 5 - Small Frameworks¶

    +
    +
    +

    Before Class¶

    +
      +
    • Install Flask in a virtualenv on your local machine.
    • +
    • Walk through the examples in the Quickstart section.
    • +
    • You can play with the tutorial if you want. We’ll be doing this in class as +our lab work

    Reference¶

    +

    These are only a few of the many python web frameworks available in the +‘microframework’ class. I offer these resources as a starting point. For your +assignment, pick one of these to work with, or select one from the list at the +python wiki below. Do Not Use Django or Pyramid. We will be covering those +specifically in class.

    +

    Assignment¶

    -

    To Be Decided

    +

    Coming soon

    @@ -441,6 +465,7 @@

    Table Of Contents

  • Week 5 - Small Frameworks From ee6f32537a13dcdb98d99adbf26efd885c419c42 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 28 Jan 2013 21:14:46 -0800 Subject: [PATCH 031/114] * update index with emphasis for assessment criteria --- _sources/index.txt | 7 ++++--- _sources/outline.txt | 27 +++++++++++++++++++++++++-- index.html | 7 ++++--- searchindex.js | 2 +- 4 files changed, 34 insertions(+), 9 deletions(-) diff --git a/_sources/index.txt b/_sources/index.txt index bf2225d2..75d85a83 100644 --- a/_sources/index.txt +++ b/_sources/index.txt @@ -56,9 +56,10 @@ Minutiae :Assessment: - The course is graded Pass/Fail, based on satisfactory completion of - required programming assignments and classroom presentations. Attendance - is required; more than two unexcused absences will result in a Fail. + The course is graded Pass/Fail, based on **satisfactory completion of + required programming assignments** and classroom presentations. + **Attendance is required**; more than two unexcused absences will result + in a Fail. :Accommodation: diff --git a/_sources/outline.txt b/_sources/outline.txt index d3e26d9f..d4eefef1 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -366,17 +366,40 @@ Reading * `Web Application Frameworks `_ +* `Flask Documentation `_ - Read the Foreward, + Installation and Quickstart sections. +* `Unittest - Unit Testing Framework + `_ - We will be writing + tests from here forward. Start learning how. + +Before Class +************ + +* Install Flask in a virtualenv on your local machine. +* Walk through the examples in the Quickstart section. +* You can play with the tutorial if you want. We'll be doing this in class as + our lab work Reference ********* -* `Python Web Frameworks `_ +* `Bottle: Python Web Framework `_ +* `CherryPy: A Minimalize Python Web Framework `_ +* `Web.py: Think about the ideal way to write a web app. Write the code to + make it happen. `_ + +These are only a few of the many python web frameworks available in the +'microframework' class. I offer these resources as a starting point. For your +assignment, pick one of these to work with, or select one from the list at the +python wiki below. **Do Not Use Django or Pyramid**. We will be covering those +specifically in class. +* `Python Web Frameworks `_ Assignment ********** -To Be Decided +Coming soon Week 6 - Django --------------- diff --git a/index.html b/index.html index 84a92534..9d4e240b 100644 --- a/index.html +++ b/index.html @@ -99,9 +99,10 @@

    MinutiaeAssessment:The course is graded Pass/Fail, based on satisfactory completion of -required programming assignments and classroom presentations. Attendance -is required; more than two unexcused absences will result in a Fail. +Assessment:The course is graded Pass/Fail, based on satisfactory completion of +required programming assignments and classroom presentations. +Attendance is required; more than two unexcused absences will result +in a Fail. Accommodation:The University of Washington is committed to providing access and reasonable accommodation in its services, programs, activities, education diff --git a/searchindex.js b/searchindex.js index 861cf4c9..a2f8f0a6 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],sens:1,spec:1,fax:0,sourc:1,string:1,util:1,veri:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,small:[0,1],pleas:1,cgi:[0,1],outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,click:2,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],"new":2,contrast:0,hasn:1,berkelei:1,learn:[0,1],here:[0,1,2],inher:1,along:1,search:0,technolog:[],step:2,prior:0,zodb:[],implement:[0,1],chanc:1,ourselv:1,via:[0,1],prerequisit:0,extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],recommend:1,tell:2,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,account:2,valuabl:1,prepar:1,work:0,focu:[0,1],can:[0,1,2],http2:[],purpos:1,want:2,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1,2],winter:0,anoth:1,write:[2,1],how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,clone:2,after:2,sundai:1,lab:1,befor:1,date:1,data:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,author:1,django:[0,1],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,concis:1,grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1,2],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:0,doug:1,our:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,base:0,org:1,care:1,lucumr:[],place:2,principl:0,assign:[0,1,2],first:1,origin:[2,1],softwar:[],feel:1,onc:[],qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:[2,1],top:[2,1],system:1,stack:1,master:[2,1],zeromq:1,"final":[2,1],pocoo:[],option:1,relationship:1,tool:1,copi:2,took:2,part:0,pars:1,mostli:1,eibrari:[],than:0,provid:[0,1],tree:[],structur:1,project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1,2],tabl:0,need:[2,1],techniqu:1,equival:0,contact:0,note:2,also:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,usernam:2,object:[0,1],reach:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,doe:[0,1],determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:[0,1],corner:2,find:[2,1],onli:1,explain:1,configur:0,apach:1,written:1,should:[0,1],kessler:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],express:0,becaus:2,repo:1,rest:1,requir:0,truli:1,email:2,rfc:1,integr:0,contain:2,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,close:2,review:2,wikipedia:1,urllib:1,label:2,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,job:2,jog:0,solv:0,addit:1,wsgiref:1,tutori:1,mani:1,com:[2,1],overview:1,rfc2616:[],tuesdai:0,throughout:0,uci:1,evalu:1,add:2,hellmann:1,compon:1,json:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,solid:1,servic:[0,1],employ:0,defin:1,"while":2,visit:2,wild:1,python_web:[2,1],week02:1,pyramid:[0,1],briandorsei:[],lightweight:1,minutia:0,sever:1,week04:1,minim:1,make:[2,1],format:1,same:1,complex:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],kit:1,student:[0,1],extern:1,studi:1,appropri:1,entri:1,coursework:0,exampl:[0,1],thi:[0,1,2],choos:1,model:[2,1],portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,virtual:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,armin:1,blob:1,homework:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,xmlrpc:1,week05:[],read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:[],like:[2,1],specif:1,manifest:1,benefit:1,either:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:2,satisfactori:0,week03:1,server:1,librari:[0,1],guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,refer:[0,1],machin:[2,1],cgi_exampl:[],investig:1,run:1,usag:0,confer:1,host:1,dissert:1,repositori:[2,1],januari:[0,1],feb:1,chapter:1,about:1,actual:2,socket:[0,1],constraint:1,commit:[0,2],disabl:0,own:[2,1],curiou:1,washington:0,curios:1,assess:0,chang:[2,1],your:[0,1,2],git:2,log:2,wai:1,transfer:1,support:[0,1],submit:2,why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,fork:[2,1],form:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:[],link:2,gain:1,rfc1945:[],pull:[2,1],made:[2,1],wish:1,url:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1,2],request:[0,1,2],pragmat:0,parser:1,lectur:[0,1],file:[2,1],mashup:[0,1],when:2,scrape:1,field:1,other:1,test:1,ignor:1,you:[2,1],repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,train:[2,1],htmlparser:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],those:1,sens:1,spec:1,fax:0,sourc:1,string:1,util:1,veri:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,small:[0,1],pleas:1,cgi:[0,1],outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,click:2,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],"new":2,contrast:0,hasn:1,berkelei:1,learn:[0,1],here:[0,1,2],inher:1,along:1,search:0,technolog:[],step:2,prior:0,zodb:[],pick:1,implement:[0,1],chanc:1,ourselv:1,via:[0,1],prerequisit:0,extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],few:1,recommend:1,tell:2,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,account:2,valuabl:1,prepar:1,work:[0,1],focu:[0,1],can:[0,1,2],http2:[],purpos:1,quickstart:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1,2],winter:0,anoth:1,write:[2,1],how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,clone:2,after:2,sundai:1,lab:1,befor:1,date:1,data:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,author:1,django:[0,1],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:1,through:[0,1],dynam:1,concis:1,grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1,2],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:0,doug:1,our:1,happen:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,base:0,org:1,care:1,lucumr:[],place:2,principl:0,assign:[0,1,2],first:1,origin:[2,1],softwar:[],feel:1,onc:[],qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:[2,1],top:[2,1],system:1,stack:1,master:[2,1],zeromq:1,"final":[2,1],pocoo:[],option:1,relationship:1,tool:1,copi:2,took:2,part:0,pars:1,mostli:1,eibrari:[],than:0,provid:[0,1],tree:[],structur:1,project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1,2],tabl:0,need:[2,1],techniqu:1,equival:0,client:1,note:2,also:1,ideal:1,contact:0,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,usernam:2,object:[0,1],reach:1,plai:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,doe:[0,1],determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:[0,1],corner:2,find:[2,1],onli:1,explain:1,configur:0,apach:1,written:1,should:[0,1],kessler:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],express:0,becaus:2,repo:1,rest:1,requir:0,truli:1,email:2,rfc:1,integr:0,contain:2,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,close:2,review:2,wikipedia:1,urllib:1,label:2,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,job:2,jog:0,solv:0,come:1,addit:1,wsgiref:1,tutori:1,mani:1,com:[2,1],point:1,overview:1,unittest:1,rfc2616:[],walk:1,tuesdai:0,throughout:0,uci:1,evalu:1,add:2,hellmann:1,compon:1,json:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,solid:1,servic:[0,1],employ:0,defin:1,"while":2,visit:2,wild:1,python_web:[2,1],week02:1,pyramid:[0,1],briandorsei:[],cherrypi:1,lightweight:1,minutia:0,sever:1,week04:1,minim:1,make:[2,1],format:1,same:1,complex:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],kit:1,student:[0,1],extern:1,studi:1,appropri:1,entri:1,coursework:0,exampl:[0,1],thi:[0,1,2],choos:1,model:[2,1],portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,select:1,virtual:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,armin:1,blob:1,app:1,homework:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,xmlrpc:1,week05:[],read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:[],like:[2,1],specif:1,manifest:1,benefit:1,either:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:2,satisfactori:0,week03:1,server:1,librari:[0,1],virtualenv:1,guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,unit:1,refer:[0,1],machin:[2,1],cgi_exampl:[],investig:1,run:1,usag:0,confer:1,host:1,dissert:1,repositori:[2,1],januari:[0,1],feb:1,chapter:1,about:1,actual:2,socket:[0,1],constraint:1,microframework:1,commit:[0,2],disabl:0,own:[2,1],curiou:1,washington:0,curios:1,assess:0,foreward:1,chang:[2,1],your:[0,1,2],git:2,log:2,wai:1,transfer:1,support:[0,1],submit:2,why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,forward:1,fork:[2,1],bottl:1,form:1,offer:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:[],link:2,gain:1,rfc1945:[],pull:[2,1],made:[2,1],wish:1,url:1,below:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1,2],request:[0,1,2],pragmat:0,parser:1,lectur:[0,1],file:[2,1],want:[2,1],mashup:[0,1],when:2,scrape:1,field:1,other:1,test:1,ignor:1,you:[2,1],repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,train:[2,1],htmlparser:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file From a8765c5933f904e44af3ac97beb0cd013d6fed33 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 28 Jan 2013 23:41:03 -0800 Subject: [PATCH 032/114] updates to week 4 presentation --- presentations/week04.html | 68 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/presentations/week04.html b/presentations/week04.html index afb73413..e7bb19fc 100644 --- a/presentations/week04.html +++ b/presentations/week04.html @@ -48,10 +48,78 @@

    Internet Programming with Python

    But First

    Review from the Assignment

  • +
    +

    Save Memory on Loading

    +

    When you are loading data from an API, you can sometimes get more than you +bargained for. Both BeautifulSoup and the json library provide ways to help:

    +
    +page = urllib2.urlopen(url)
    +json_string = page.read()
    +json.loads(json_string)
    +
    +
    +page = urllib2.urlopen(url)
    +json.loads(page)
    +
    +

    The second form will buffer the input as it is read, and minimize memory +consumption. If you've got really large data sets this can be very good.

    +
    +
    +

    Protect Yourself From the Net

    +

    We learned in our last class that APIs can flake. Remember that. It's vital!

    +
    +page = urllib2.urlopen(url)
    +parsed = BeautifulSoup(page)
    +
    +
    +page = urllib2.urlopen(url)
    +if page.code == 200:
    +    parsed = BeautifulSoup(page)
    +else:
    +    raise SomeExceptionYouCanCatch
    +
    +

    What happens if your desired API is offline when a user comes to see your +page? Make sure you give yourself a way to be kind to your users. 500 Internal +Server Errors suck!

    +
    +
    +

    What You Made

    +
      +
    • geographic locations of our Bluebox VMs
    • +
    • Visualization of the popularity of Facebook Friends' first names
    • +
    • Restaurants near your location with recent Health Inspection data
    • +
    • A Last-FM user's top artists, with lists of mixcloud mixes featuring each of +them
    • +
    • A list of Craigslist apartments with the nearest bars, pizza and sushi +places and their Yelp ratings
    • +
    • Geographic locations of the top 20 users returned for a twitter search, +along with other twitter data
    • +
    +
    +
    +

    A Note on Homeworks

    +
      +
    • I've been saying that only attendance counts for your grade.
    • +
    • It was brought to my attention this week that my own syllabus says +differently
    • +
    • The work we've done so far is all, in some sense, foundational. We will be +using tools starting next week that build upon the tools we've encountered.
    • +
    +

    Homework from this point out should be considered required. We are now +reaching the level of tools you will use on a day to day basis. Mastery comes +with practice.

    +

    And Second

    Questions from the Reading?

    +
    +

    And Third

    +

    Open assignments/week04/lab/type-along.txt

    +

    This contains all the code examples from today's lecture. It's meant to help +you with keeping up when we are moving quickly through sample slides. I hope +it is of some use.

    +

    And Now...

    Gateways

    From f4ec39623dfcc52a776b21f9ae49e27df78f57d4 Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 29 Jan 2013 16:30:48 -0800 Subject: [PATCH 033/114] add slide for evaluation --- presentations/week04.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/presentations/week04.html b/presentations/week04.html index e7bb19fc..e7e0f320 100644 --- a/presentations/week04.html +++ b/presentations/week04.html @@ -496,6 +496,10 @@

    Lab 1

    GO

    +

    Putting CGI Online

    We have CGI working, how do we make it live so that others can see our From 767cccadd379ba340a2a1cdcdf560a4284fc35e7 Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 3 Feb 2013 07:07:27 -0800 Subject: [PATCH 034/114] updates to week 4 and outline, completed week 5 presentation --- _sources/outline.txt | 21 +- outline.html | 16 +- presentations/ui/uw_pce_theme/pretty.css | 13 + presentations/week04.html | 4 - presentations/week05.html | 1158 +++++++++++++++++++++- searchindex.js | 2 +- 6 files changed, 1176 insertions(+), 38 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index d4eefef1..20327c36 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -361,6 +361,8 @@ framework. We will have the chance to repeat the class lab, or create another dynamic system using one of the many other python web frameworks available to us. +`Week 5 Presentation `_ + Reading ******* @@ -372,6 +374,14 @@ Reading `_ - We will be writing tests from here forward. Start learning how. +Please also skim this: + +* `sqlite3 - DB API for sqlite3 + `_ - We'll need a bit + of familiarity with the sqlite3 module. How to open connections, execute + queries, and read the results from a cursor. Just read the first two + sections ('Creating a Database' and 'Retrieving Data'). + Before Class ************ @@ -396,10 +406,19 @@ specifically in class. * `Python Web Frameworks `_ +You may also want to do more reading on the unittest module: + +* `PyMOTW - unittest + `_ + Assignment ********** -Coming soon +You can read the assignment at + +http://github.com/cewing/training.python_web/blob/master/assignments/week05/athome/assignment.txt + +Please complete the assignment by noon on Sunday, February 10, 2013. Week 6 - Django --------------- diff --git a/outline.html b/outline.html index c81c247d..486fe587 100644 --- a/outline.html +++ b/outline.html @@ -332,6 +332,7 @@

    Week 5 - Small FrameworksWeek 5 Presentation

    Reading¶

    +

    Please also skim this:

    +
      +
    • sqlite3 - DB API for sqlite3 - We’ll need a bit +of familiarity with the sqlite3 module. How to open connections, execute +queries, and read the results from a cursor. Just read the first two +sections (‘Creating a Database’ and ‘Retrieving Data’).
    • +

    Before Class¶

    @@ -367,10 +375,16 @@

    Reference
  • Python Web Frameworks
  • +

    You may also want to do more reading on the unittest module:

    +

    Assignment¶

    -

    Coming soon

    +

    You can read the assignment at

    +

    http://github.com/cewing/training.python_web/blob/master/assignments/week05/athome/assignment.txt

    +

    Please complete the assignment by noon on Sunday, February 10, 2013.

    diff --git a/presentations/ui/uw_pce_theme/pretty.css b/presentations/ui/uw_pce_theme/pretty.css index 3a6191ec..a0e0d862 100644 --- a/presentations/ui/uw_pce_theme/pretty.css +++ b/presentations/ui/uw_pce_theme/pretty.css @@ -169,6 +169,19 @@ p.image-credit { z-index: 10; } +table.invisible { + border: none; + border-collapse: collapse; +} +table.invisible tr, +table.invisible td { + border: none; +} +table.invisible td { + text-align: center; + padding: 5px; +} + /* Pygments 'colorful' colorization */ .code { background-color: #ffffcc} .current .c, .c { color: #888888 } /* Comment */ diff --git a/presentations/week04.html b/presentations/week04.html index e7e0f320..e7bb19fc 100644 --- a/presentations/week04.html +++ b/presentations/week04.html @@ -496,10 +496,6 @@

    Lab 1

    GO

    -

    Putting CGI Online

    We have CGI working, how do we make it live so that others can see our diff --git a/presentations/week05.html b/presentations/week05.html index 49fe508f..7efb6745 100644 --- a/presentations/week05.html +++ b/presentations/week05.html @@ -74,10 +74,6 @@

    A Moment to Reflect

    Everything we do from here out will be based on tools built using what we've learned these first four weeks.

    -
    -

    Onward

    -

    We are moving up the stack

    -

    We've built

    A full-featured web server

    @@ -94,12 +90,62 @@

    We've built

    We've built

    A simple wsgi application

    +
    +

    Onward

    +

    We are moving up the stack

    +

    From Now On

    Think of everything we do as sitting on top of WSGI

    This may not actually be true

    But we will always be working at that level of abstraction.

    +
    +

    The Abstraction Stack

    +

    You can think of the libraries we use to write web applications as belonging +to one of several levels:

    +

    plumbing

    +

    tools

    +

    small frameworks

    +

    full-stack frameworks

    +

    systems

    +
    +
    +

    Plumbing

    +

    We've done this part already:

    +

    Sockets

    +

    Protocols

    +

    CGI/WSGI

    +
    +
    +

    Tools

    +

    We've started to talk about these, we'll see more soon:

    +

    cgitb

    +

    wsgi middleware

    +

    werkzeug tools

    +

    WebOb

    +
    +
    +

    Small Frameworks

    +

    We're here today:

    +

    Flask

    +

    Bottle

    +

    CherryPy

    +

    Web.py

    +

    and many many more...

    +
    +
    +

    Full Stack Frameworks

    +

    We will visit this level next:

    +

    Django

    +

    Pyramid

    +

    web2py

    +
    +
    +

    Systems

    +

    We'll finish up here

    +

    Plone

    +

    Frameworks

    From Wikipedia:

    @@ -113,8 +159,8 @@

    Frameworks

    What Does That Mean?

    You use a framework to build an application.

    -

    A framework allows you to build different kinds of applications.

    -

    A framework abstracts what needs to be abstracted, and allows control of the +

    A framework allows you to build different kinds of applications.

    +

    A framework abstracts what needs to be abstracted, and allows control of the rest.

    Think back over the last four weeks. What were your pain points? Which bits do you wish you didn't have to think about?

    @@ -126,35 +172,1085 @@

    Level of Abstraction

  • abstraction ∠1/freedom
  • The more they choose, the less you can
  • Every framework makes choices in what to abstract
  • -
  • Pick a framework whose abstractions meet your needs
  • +
  • Every framework makes different choices
  • -

    Frameworks with a minimal level of abstraction are considered to be -Microframeworks

    -

    Where is the line between micro- and not?

    Python Web Frameworks

    -

    There are scores of 'em.

    -

    Django Grok Pylons TurboGears web2py -Zope CubicWeb Enamel Gizmo(QP) Glashammer -Karrigell Nagare notmm Porcupine QP -SkunkWeb Spyce Tipfy Tornado WebCore -web.py Webware Werkzeug WHIFF XPRESS -AppWsgi Bobo Bo7le CherryPy circuits.web -Paste PyWebLib WebStack Albatross Aquarium -Divmod Nevow Flask JOTWeb2 Python Servlet -Engine Pyramid Quixote Spiked weblayer

    -
    -
    -

    scraps

    -

    What is a Framework?

    -

    What types of frameworks are there?

    -

    Why choose one over another?

    -

    Intro to Flask

    -

    Lab 1 create simple multi-page app with flask (redo week 4 homework in class)

    -

    templating (jinja2 in flask)

    -

    Deploying to webserver (virtualenv and mod_wsgi)

    -

    Lab 2 create a simple app with flask part 2

    +

    There are scores of 'em (this is a partial list).

    + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Choosing a Framework

    +

    Many folks will tell you "<XYZ> is the best framework".

    +

    In most cases, what they really mean is "I know how to use <XYZ>"

    +

    In some cases, what they really mean is "<XYZ> fits my brain the best"

    +

    What they usually forget is that everyone's brain (and everyone's use-case) is +different.

    +
    +
    +

    Cris' First Law of Frameworks

    +

    Pick the Right Tool for the Job

    +

    First Corollary

    +

    The right tool is the tool that allows you to finish the job quickly and +correctly.

    +

    But how do you know which that one is?

    +
    +
    +

    Cris' Second Law of Frameworks

    +

    You can't know unless you try

    +

    so let's try

    +
    +
    +

    Preparation

    +

    We proceed under the assumption that you have installed Flask into a +virtualenv, either on your laptop or on your VM.

    +

    Start by activating the virtualenv with Flask installed. Mine is 'flaskenv'.

    +

    Next, create a new python source file: flask_intro.py

    +

    Finally, open that file in your text editor

    +
    +
    +

    Flask

    +

    Getting started with Flask is pretty straightforward. Here's a complete, +simple app. Type it into flask_intro.py:

    +
    +from flask import Flask
    +app = Flask(__name__)
    +
    +@app.route('/')
    +def hello_world():
    +    return 'Hello World!'
    +
    +if __name__ == '__main__':
    +    app.run()
    +
    +
    +
    +

    Running our App

    +

    As you might expect by now, the last block in our flask_intro.py file +allows us to run this as a python program. Save your file, and in your +terminal try this:

    +
    +(flaskenv)$ python flask_intro.py
    +
    +

    Load http://localhost:5000 in your browser to see it in action.

    +
    +
    +

    Debugging our App

    +

    Last week, cgitb provided us with useful feedback when building an app. +Flask has a similar tool. Make the following changes to your +flask_intro.py file:

    +
    +@app.route('/')
    +def hello_world():
    +    bar = 1 / 0
    +    return 'Hello World!'
    +
    +if __name__ == '__main__':
    +    app.run(debug=True)
    +
    +

    In your terminal, quit the app with ^C and then restart it. Then reload +your browser and see what happens.

    +
    +
    +

    What's Happening Here?

    +

    Flask the framework provides a Python class called Flask. This class +represents a single application in the WSGI sense.

    +
      +
    • You instantiate a Flask app with a name that represents the package or +module containing the app.
    • +
    • If your application is a single module, this should be __name__
    • +
    • This is used to help the Flask app figure out where to look for +resources
    • +
    • Resources can be static files (css, images, javascript), templates, or +additional python modules you create and need to import.
    • +
    • You define a function and route a URL to call it
    • +
    +
    +
    +

    URL Routing

    +

    Remember our bookdb homework? How did you end up solving the problem of +mapping an HTTP request to the right function?

    +

    Flask solves this problem by using the route decorator from your app.

    +

    A 'route' takes a URL rule (more on that in a minute) and maps it to an +endpoint and a function.

    +

    When a request arrives at a URL that matches a known rule, the function is +called.

    +
    +
    +

    Routes Can Be Dynamic

    +

    You can provide placeholders in dynamic urls. Each placeholder is then a +named arg to your function (add these to flask_intro.py):

    +
    +@app.route('/profile/<username>')
    +def show_profile(username):
    +    return "My username is %s" % username
    +
    +

    These placeholders can also include converters that will ensure the +incoming argument is of the correct type.

    +
    +@app.route('/div/<float:val>/')
    +def divide(val):
    +    return "%0.2f divided by 2 is %0.2f" % (val, val / 2)
    +
    +
    +
    +

    Routes Can Be Filtered

    +

    You can also determine which HTTP methods a given route will accept:

    +
    +@app.route('/blog/entry/<int:id>/', methods=['GET',])
    +def read_entry(id):
    +    return "reading entry %d" % id
    +
    +@app.route('/blog/entry/<int:id>/', methods=['POST', ])
    +def write_entry(id):
    +    return 'writing entry %d' % id
    +
    +

    After adding that to flask_intro.py and saving, try loading +http://localhost:5000/blog/entry/23/ into your browser. Which was called?

    +
    +
    +

    Routes Can Be Reversed

    +

    Reversing a URL means the ability to generating the url that would result in a +given endpoint being called.

    +

    This means you don't have to hard-code your URLs when building links

    +

    That means you can change the URLs for your app without changing code or +templates

    +

    This is called decoupling and it is a good thing

    +
    +
    +

    Reversing URLs in Flask

    +

    In Flask, you reverse a url with the url_for function.

    +
      +
    • url_for requires an HTTP request context to work
    • +
    • You can fake an HTTP request when working in a terminal (or testing)
    • +
    • Use the test_request_context method of your app object
    • +
    • This is a great chance to learn about the Python with statement
    • +
    • Don't type this
    • +
    +
    +from flask import url_for
    +with app.test_request_context():
    +  print url_for('endpoint', **kwargs)
    +
    +
    +
    +

    Reversing in Action

    +

    Quit your Flask app with ^C. Then start a python interpreter in that same +terminal and import your flask_intro.py module:

    +
    +import flask_intro
    +from flask_intro import app
    +from flask import url_for
    +with app.test_request_context():
    +    print url_for('show_profile', username="cris")
    +    print url_for('divide', val=23.7)
    +
    +'/profile/cris/'
    +'/div/23.7/'
    +
    +
    +
    +

    Generating HTML

    +

    I enjoy writing building HTML in Python strings

    +

    -- nobody, ever

    +
    +
    +

    Templating

    +

    A good framework will provide some way of generating HTML with a templating +system.

    +

    There are nearly as many templating systems as there are frameworks

    +

    Each has advantages and disadvantages

    +

    Flask includes the Jinja2 templating system (perhaps because it's built by +the same folks)

    +
    +
    +

    Jinja2 Template Basics

    +

    There are a few basic things to know:

    +
      +
    • Variables in templates can be printed by surrounding the variable name with +double curly braces: {{ name }}.
    • +
    • If a variable points to something like a dictionary or object, you can use +either dot or subscription notation: {{ obj[attr] }}, {{ dict.key +}}.
    • +
    • Variables in templates can be filtered: {{ name|capitalize }}. There +is a list of builtin filters.
    • +
    • Logic can be put into templates using the processor marker: {% for x in y +%}{{ x }}{% endfor %}
    • +
    • Logic comes in pairs. Any start must have an explicit end.
    • +
    +
    +
    +

    Advanced Jinja2

    +

    There is way too much about writing templates in Jinja2 for us to cover here +today. Read more here:

    +

    http://jinja.pocoo.org/docs/templates/

    +
    +
    +

    Templates in Flask

    +

    Use the render_template function:

    +
    +from flask import render_template
    +
    +@app.route('/hello/')
    +@app.route('/hello/<name>')
    +def hello(name=None):
    +    return render_template('hello.html', name=name)
    +
    +

    Flask looks for a templates directory in the same location as your app +module (remember app = Flask(__name__)?).

    +

    Any extra variables you want to pass to the template should be keyword +arguments to render_template

    +
    +
    +

    Flask Template Context

    +

    Flask adds a few things to the context of templates. You can use these

    +
      +
    • config: contains the current configuration object
    • +
    • request: contains the current request object
    • +
    • session: any session data that might be available
    • +
    • g: the request-local object to which global variables are bound
    • +
    • get_flashed_messages: a function that returns messages you flash to your +users (more on this later).
    • +
    • url_for: so you can easily reverse urls from within your templates
    • +
    +
    +
    +

    Lab 1

    +

    Open a terminal, change directories to the class repository, then to +assignments/week05/lab/book_app.

    +
      +
    • You'll find a file book_app.py which is all set up and ready to go
    • +
    • You'll also find a templates directory with some templates
    • +
    • Complete the functions to provide the right stuff to the templates
    • +
    • Complete the templates to display the data to the end-user
    • +
    • At the end you should have a reproduced version of last week's homework
    • +
    +

    GO

    +
    +
    +

    Lab 2 - Part 1

    +

    The rest of class today will be devoted to building and deploying a simple +micro-blog app using flask.

    +

    This is based almost entirely on the Flaskr tutorial from the Flask website.

    +
    +
    +

    Data Persistence

    +

    There are many models for persistance of data.

    +
      +
    • Flat files
    • +
    • Relational Database (SQL RDBMs like PostgreSQL, MySQL, SQLServer, Oracle)
    • +
    • Object Stores (Pickle, ZODB)
    • +
    • NoSQL Databases (CouchDB, MongoDB, etc)
    • +
    +

    It's also one of the most contentious issues in app design.

    +

    For this reason, it's one of the things that most Small Frameworks leave +undecided.

    +
    +
    +

    Simple SQL

    +

    For our second lab exercise today, we're going to use a simple SQL database.

    +

    Python PEP 249 describes a +common API for database connections called DB API.

    +

    The Python Standard Library comes with an implementation of this for a common, +light-weight sql database, sqlite3

    +

    I am not going to talk a lot about SQL. It's too deep a pool for us to get +into. We'll concentrate only on those bits we need to get along.

    +
    +
    +

    Our Database

    +

    We're going to keep this really really simple.

    +

    In assignments/week05/lab/ find the flaskr_1 directory and open the +schema.sql file in your editor. Add the following and save the file:

    +
    +drop table if exists entries;
    +create table entries (
    +    id integer primary key autoincrement,
    +    title string not null,
    +    text string not null
    +);
    +
    +
    +
    +

    Our App

    +

    We'll also need to do some configuration for our app.

    +

    In that same directory, find the file flaskr.py and open it in your +editor. Add the following and save the file:

    +
    +# configuration goes here
    +DATABASE = '/tmp/flaskr.db'
    +SECRET_KEY = 'development key'
    +
    +app = Flask(__name__) # this is already in the file
    +app.config.from_object(__name__)
    +
    +
    +
    +

    Creating the Database

    +

    Still in flaskr.py let's add a function that will connect to our database:

    +
    +# add this at the very top
    +import sqlite3
    +
    +# add the rest of this below the app.config statement
    +def connect_db():
    +    return sqlite3.connect(app.config['DATABASE'])
    +
    +

    This will be a convenience to us later on, and it will allow us to write our +very first test.

    +
    +
    +

    Tests and TDD

    +

    If it isn't tested, it's broken

    +

    Test-Driven Development means writing the tests before writing the functions. +As your tests pass, you know you're building what you want.

    +

    We are going to write tests at every step of this lab. Along the way, we'll +learn a bit about the Python Standard Library module unittest.

    +

    You'll want to read more about this module. See our outline for reading +suggestions.

    +
    +
    +

    Testing Setup

    +

    In the same flaskr_1 directory, find and open the flaskr_tests.py file +in your editor. Edit it to look like this:

    +
    +import os
    +import flaskr
    +import unittest
    +import tempfile
    +
    +class FlaskrTestCase(unittest.TestCase):
    +
    +    def setUp(self):
    +        db_fd = tempfile.mkstemp()
    +        self.db_fd, flaskr.app.config['DATABASE'] = db_fd
    +        flaskr.app.config['TESTING'] = True
    +        self.client = flaskr.app.test_client()
    +        self.app = flaskr.app
    +
    +
    +
    +

    Testing Teardown

    +

    Add the following method to your test class:

    +
    +class FlaskrTestCase(unittest.TestCase):
    +    ...
    +
    +    def tearDown(self):
    +        os.close(self.db_fd)
    +        os.unlink(flaskr.app.config['DATABASE'])
    +
    +
    +
    +

    Make Tests Runnable

    +

    And finally, add the following at the bottom of your flaskr_tests.py file:

    +
    +if __name__ == '__main__':
    +    unittest.main()
    +
    +

    Now, we're ready to add our first method.

    +
    +
    +

    Test Databse Setup

    +

    We'd like to test that our database is correctly initialized. The schema has +one table with three columns. Let's test that.

    +

    Add the following method to your test class in flaskr_tests.py:

    +
    +def test_database_setup(self):
    +    con = flaskr.connect_db()
    +    cur = con.execute('PRAGMA table_info(entries);')
    +    rows = cur.fetchall()
    +    self.assertEquals(len(rows), 3)
    +
    +
    +
    +

    Run the Tests

    +

    Since we added that if __name__ == '__main__' block, we can simply run our +tests with a flask-aware python executable:

    +
    +(flaskenv)$ python flaskr_tests.py
    +F
    +======================================================================
    +FAIL: test_database_setup (__main__.FlaskrTestCase)
    +----------------------------------------------------------------------
    +Traceback (most recent call last):
    +  File "flaskr_tests.py", line 23, in test_database_setup
    +    self.assertTrue(len(rows) == 3)
    +AssertionError: False is not True
    +
    +----------------------------------------------------------------------
    +Ran 1 test in 0.011s
    +
    +FAILED (failures=1)
    +
    +
    +
    +

    Make the Test Pass

    +

    Our database hasn't actually be properly created. We have no table and so no +rows are returned when we try to describe it. Let's fix that. Add the +following to flaskr.py:

    +
    +# add this import at the top
    +from contextlib import closing
    +
    +# add this function after the connect_db function
    +def init_db():
    +    with closing(connect_db()) as db:
    +        with app.open_resource('schema.sql') as f:
    +            db.cursor().executescript(f.read())
    +        db.commit()
    +
    +
    +
    +

    Initialize the DB in Tests

    +

    We also need to call that function in our flaskr_tests.py, in the +setUp method of our test case.

    +

    Add the following line at the end of that setUp method:

    +
    +def setUp(self):
    +    ...
    +    flaskr.init_db() # <- add this at the end
    +
    +

    Then, re-run the tests (python flaskr_tests.py) and see what you get.

    +

    Wahoooo!

    +
    +
    +

    Initialize the DB IRL

    +

    Okay, so we know the init_db function we added sets up the database +properly.

    +

    We still need to do this in real life, so that we can work against the +database.

    +

    Start up a python interpreter in your flaskr_1 folder and do the +following:

    +
    +import flaskr
    +flaskr.init_db()
    +^D
    +
    +
    +
    +

    Lab 2 - Part 2

    +

    Okay, we have a database. Now it's time to write stuff into it, and read it +back.

    +

    Once again, we're going to start by writing tests.

    +

    If you've fallen behind, or if you just want to start fresh, you can find the +base of what we've done so far in the flaskr_2 folder.

    +
    +
    +

    Managing DB Connections

    +

    Database connections should be bound to the borders of a request/response.

    +

    Flask provides decorators that mark functions to be run at these borders:

    +
      +
    • @before_request: any method decorated by this will be called before the +cycle begins
    • +
    • @after_request: any method decorated by this will be called after the +cycle is complete. If an unhandled exception occurs, these functions are +skipped.
    • +
    • @teardown_request: any method decorated by this will be called at the +end of the cycle, even if an unhandled exception occurs.
    • +
    +
    +
    +

    Manage our DB

    +

    Add the following code to our app (flaskr.py):

    +
    +# add this import at the top:
    +from flask import g
    +
    +# add these function after init_db
    +@app.before_request
    +def before_request():
    +    g.db = connect_db()
    +
    +@app.teardown_request
    +def teardown_request(exception):
    +    g.db.close()
    +
    +

    We bind our db connection to the 'g' object, which is a global context flask +supplies to each request.

    +
    +
    +

    Test Writing Entries

    +

    We want to test that we can write an entry by providing a title and text. Add +the following method to flaskr_tests.py:

    +
    +def test_write_entry(self):
    +    expected = ("My Title", "My Text")
    +    with self.app.test_request_context('/'):
    +        self.app.preprocess_request()
    +        flaskr.write_entry(*expected)
    +        con = flaskr.connect_db()
    +        cur = con.execute("select * from entries;")
    +        rows = cur.fetchall()
    +    self.assertEquals(len(rows), 1)
    +    for val in expected:
    +        self.assertTrue(val in rows[0])
    +
    +

    Note that we have to set up a request context, and preprocess it to get our +@before_request method run.

    +
    +
    +

    Write an Entry

    +

    Now we are ready to write an entry to our database. Add this function to +flaskr.py:

    +
    +def write_entry(title, text):
    +    g.db.execute('insert into entries (title, text) values (?, ?)',
    +                 [title, text])
    +    g.db.commit()
    +
    +

    When you're done, re-run your tests. You should now be two for two.

    +
    +
    +

    Test Reading Entries

    +
    +def test_get_all_entries_empty(self):
    +    with self.app.test_request_context('/'):
    +        self.app.preprocess_request()
    +        entries = flaskr.get_all_entries()
    +        self.assertEquals(len(entries), 0)
    +
    +def test_get_all_entries(self):
    +    expected = ("My Title", "My Text")
    +    with self.app.test_request_context('/'):
    +        self.app.preprocess_request()
    +        flaskr.write_entry(*expected)
    +        entries = flaskr.get_all_entries()
    +        self.assertEquals(len(entries), 1)
    +        for entry in entries:
    +            self.assertEquals(expected[0], entry['title'])
    +            self.assertEquals(expected[1], entry['text'])
    +
    +
    +
    +

    Read Entries

    +

    Okay, so now we have 4 tests, and two fail, add this function to flaskr.py:

    +
    +def get_all_entries():
    +    cur = g.db.execute('select title, text from entries order by id desc')
    +    entries = [dict(title=row[0], text=row[1]) for row in cur.fetchall()]
    +    return entries
    +
    +

    Re-run your tests. You should now have four passing tests. Great Job!

    +
    +
    +

    Lab 2 - Part 3

    +

    Now we can read and write blog entries, let's add views so we can see what +we're doing.

    +

    Again. Tests come first.

    +

    And again, if you've fallen behind or want to start clean, the completed code +from our last step is in flaskr_3

    +
    +
    +

    Test the Front Page

    +

    Add the following tests to flaskr_tests.py:

    +
    +def test_empty_listing(self):
    +    rv = self.client.get('/')
    +    assert 'No entries here so far' in rv.data
    +
    +def test_listing(self):
    +    expected = ("My Title", "My Text")
    +    with self.app.test_request_context('/'):
    +        self.app.preprocess_request()
    +        flaskr.write_entry(*expected)
    +    rv = self.client.get('/')
    +    for value in expected:
    +        assert value in rv.data
    +
    +
    +
    +

    Template Inheritance

    +

    One aspect of Jinja2 templates we haven't seen yet is that templates can +inherit structure from other templates.

    +
      +
    • you can make replaceable blocks in templates with blocks: {% block foo +%}{% endblock %}.
    • +
    • you can build on a template in a second template by extending: {% extends +"layout.html" %} (this must be first)
    • +
    +

    We want the parts of our app to look alike, so let's create a basic layout +first. Create a file layout.html in the templates directory.

    +
    +
    +

    Creating Layout

    +
    +<!DOCTYPE html>
    +<html>
    +  <head>
    +    <title>Flaskr</title>
    +  </head>
    +  <body>
    +    <h1>Flaskr</h1>
    +    <div class="content">
    +    {% block body %}{% endblock %}
    +    </div>
    +  </body>
    +</html>
    +
    +
    +
    +

    Extending Layout

    +

    Create a new file, show_entries.html in templates:

    +
    +{% extends "layout.html" %}
    +{% block body %}
    +  <h2>Posts</h2>
    +  <ul class="entries">
    +  {% for entry in entries %}
    +    <li>
    +      <h2>{{ entry.title }}</h2>
    +      <div class="entry_body">
    +      {{ entry.text|safe }}
    +      </div>
    +    </li>
    +  {% else %}
    +    <li><em>No entries here so far</em></li>
    +  {% endfor %}
    +  </ul>
    +{% endblock %}
    +
    +
    +
    +

    Creating a View

    +

    Now, we just need to hook up our entries to that template. In flaskr.py +add the following code:

    +
    +# at the top, import
    +from flask import render_template
    +
    +# and after our last functions:
    +@app.route('/')
    +def show_entries():
    +    entries = get_all_entries()
    +    return render_template('show_entries.html', entries=entries)
    +
    +

    Run our tests. Should be 6 for 6 now.

    +
    +
    +

    Authentication

    +

    We don't want just anyone to be able to add new entries. So we want to be able +to authenticate a user.

    +

    We'll be using built-in functionality of Flask to do this, but this +simplest-possible implementation should serve only as a guide.

    +

    We'll start with the tests, of course.

    +
    +
    +

    Test Authentication

    +

    Back in flaskr_tests.py add new test methods:

    +
    +def test_login_passes(self):
    +    with self.app.test_request_context('/'):
    +        self.app.preprocess_request()
    +        flaskr.do_login(flaskr.app.config['USERNAME'],
    +                        flaskr.app.config['PASSWORD'])
    +        self.assertTrue(session.get('logged_in', False))
    +
    +def test_login_fails(self):
    +    with self.app.test_request_context('/'):
    +        self.app.preprocess_request()
    +        self.assertRaises(ValueError, flaskr.do_login,
    +                          flaskr.app.config['USERNAME'],
    +                          'incorrectpassword')
    +
    +
    +
    +

    Set Up Authentication

    +

    Now, let's add the code in flaskr.py to support this:

    +
    +# add an import
    +from flask import session
    +
    +# and configuration
    +USERNAME = 'admin'
    +PASSWORD = 'default'
    +
    +# and a function
    +def do_login(usr, pwd):
    +    if usr != app.config['USERNAME']:
    +        raise ValueError
    +    elif pwd != app.config['PASSWORD']:
    +        raise ValueError
    +    else:
    +        session['logged_in'] = True
    +
    +
    +
    +

    Login/Logout in Tests

    +

    Let's add tests for a view. We'll set up a form that redirects back to the +main view on success. First, methods to actually do the login/logout (in +flaskr_tests.py):

    +
    +def login(self, username, password):
    +    return self.client.post('/login', data=dict(
    +        username=username,
    +        password=password
    +    ), follow_redirects=True)
    +
    +def logout(self):
    +    return self.client.get('/logout',
    +                           follow_redirects=True)
    +
    +
    +
    +

    Test Authentication

    +

    And now the test itself (again, flaskr_tests.py):

    +
    +def test_login_logout(self):
    +    rv = self.login('admin', 'default')
    +    assert 'You were logged in' in rv.data
    +    rv = self.logout()
    +    assert 'You were logged out' in rv.data
    +    rv = self.login('adminx', 'default')
    +    assert 'Invalid username' in rv.data
    +    rv = self.login('admin', 'defaultx')
    +    assert 'Invalid password' in rv.data
    +
    +

    We should be up to 9 tests, one failing

    +
    +
    +

    Add Login Template

    +

    Add login.html to templates:

    +
    +{% extends "layout.html" %}
    +{% block body %}
    +  <h2>Login</h2>
    +  {% if error -%}
    +    <p class="error"><strong>Error</strong> {{ error }}
    +  {%- endif %}
    +  <form action="{{ url_for('login') }}" method="POST">
    +    <div class="field">
    +      <label for="username">Username</label>
    +      <input type="text" name="username" id="username"/>
    +    </div>
    +    <div class="field">
    +      <label for="password">Password</label>
    +      <input type="password" name="password" id="password"/>
    +    </div>
    +    <div class="control_row">
    +      <input type="submit" name="Login" value="Login"/>
    +    </div>
    +  </form>
    +{% endblock %}
    +
    +
    +
    +

    Add Login/Logout Views

    +

    And back in flaskr.py add new code. Let's start with imports:

    +
    +# at the top, new imports
    +from flask import request
    +from flask import redirect
    +from flask import flash
    +from flask import url_for
    +
    +
    +
    +

    And the View Code

    +
    +@app.route('/login', methods=['GET', 'POST'])
    +def login():
    +    error = None
    +    if request.method == 'POST':
    +        try:
    +            do_login(request.form['username'],
    +                     request.form['password'])
    +        except ValueError:
    +            error = "Invalid Login"
    +        else:
    +            flash('You were logged in')
    +            return redirect(url_for('show_entries'))
    +    return render_template('login.html', error=error)
    +
    +@app.route('/logout')
    +def logout():
    +    session.pop('logged_in', None)
    +    flash('You were logged out')
    +    return redirect(url_for('show_entries'))
    +
    +
    +
    +

    About Flash

    +

    Flask provides flash as a way of sending messages to the user from view +code. We need a place to show these messages. Add it to layout.html (along +with links to log in and out)

    +
    +<h1>Flaskr</h1>       <!-- already there -->
    +<div class="metanav"> <!-- add all this -->
    +{% if not session.logged_in %}
    +  <a href="{{ url_for('login') }}">log in</a>
    +{% else %}
    +  <a href="{{ url_for('logout') }}">log_out</a>
    +{% endif %}
    +</div>
    +{% for message in get_flashed_messages() %}
    +<div class="flash">{{ message }}</div>
    +{% endfor %}
    +<div class="content"> <!-- already there -->
    +
    +
    +
    +

    Adding an Entry

    +

    We still lack a way to add an entry. We need a view to do that. Again, tests +first (in flaskr_tests.py):

    +
    +def test_add_entries(self):
    +    self.login('admin', 'default')
    +    rv = self.client.post('/add', data=dict(
    +        title='Hello',
    +        text='This is a post'
    +    ), follow_redirects=True)
    +    assert 'No entries here so far' not in rv.data
    +    assert 'Hello' in rv.data
    +    assert 'This is a post' in rv.data
    +
    +
    +
    +

    Add the View

    +

    We've already got all the stuff we need to write entries, we just need an +endpoint that will do it via the web (in flaskr.py):

    +
    +# add an import
    +from flask import abort
    +
    +@app.route('/add', methods=['POST'])
    +def add_entry():
    +    if not session.get('logged_in'):
    +        abort(401)
    +    try:
    +        write_entry(request.form['title'], request.form['text'])
    +        flash('New entry was successfully posted')
    +    except sqlite3.Error as e:
    +        flash('There was an error: %s' % e.args[0])
    +    return redirect(url_for('show_entries'))
    +
    +
    +
    +

    Where do Entries Come From

    +

    Finally, we're almost done. We can log in and log out. We can add entries and +view them. But look at that last view. Do you see a call to +render_template in there at all?

    +

    There isn't one. That's because that view is never meant to be be visible. +Look carefully at the logic. What happens?

    +

    So where do the form values come from?

    +

    Let's add a form to the main view. Open show_entries.html

    +
    +
    +

    Provide a Form

    +
    +{% block body %}  <!-- already there -->
    +{% if session.logged_in %}
    +<form action="{{ url_for('add_entry') }}" method="POST" class="add_entry">
    +  <div class="field">
    +    <label for="title">Title</label>
    +    <input type="text" size="30" name="title" id="title"/>
    +  </div>
    +  <div class="field">
    +    <label for="text">Text</label>
    +    <textarea name="text" id="text" rows="5" cols="80"></textarea>
    +  </div>
    +  <div class="control_row">
    +    <input type="submit" value="Share" name="Share"/>
    +  </div>
    +</form>
    +{% endif %}
    +<h2>Posts</h2>  <!-- already there -->
    +
    +
    +
    +

    All Done

    +

    Okay. That's it. We've got an app all written.

    +

    So far, we haven't actually touched our browsers at all, but we have +reasonable certainty that this works because of our tests. Let's try it.

    +

    In the terminal where you've been running tests, run our flaskr app:

    +
    +(flaskenv)$ python flaskr.py
    +* Running on http://127.0.0.1:5000/
    +* Restarting with reloader
    +
    +
    +
    +

    The Big Payoff

    +

    Now load http://localhost:5000/ in your browser and enjoy your reward.

    +
    +
    +

    Lab 2 - Part 4

    +

    On the other hand, what we've got here is pretty ugly. We could prettify it.

    +

    Again, if you want to start fresh or you fell behind you can find code +completed to this point in flaskr_4.

    +

    In that directory inside the static directory you will find +styles.css. Open it in your editor. It contains basic CSS for this app.

    +

    We'll need to include this file in our layout.html.

    +
    +
    +

    Static Files

    +

    Like page templates, Flask locates static resources like images, css and +javascript by looking for a static directory next to the app module.

    +

    You can use the special url endpoint static to build urls that point here. +Open layout.html and add the following:

    +
    +<head>  <!-- you only need to add the <link> below -->
    +  <title>Flaskr</title>
    +  <link href="{{ url_for('static', filename='style.css') }}" rel="stylesheet" type="text/css">
    +</head>
    +
    +
    +
    +

    Deploying

    +

    First, move the source code to your VM:

    +
    +(flaskenv)$ cd ../
    +(flaskenv)$ tar -czvf flaskr.tgz flaskr
    +(flaskenv)$ scp flaskr.tgz <your_vm>:~/
    +(flaskenv)$ ssh <your_vm>
    +$ tar -zxvf flaskr.tgz
    +
    +

    Then, on your VM, set up a virtualenv with Flask installed

    +
    +
    +

    Deploying

    +

    You'll need to make some changes to mod_wsgi configuration.

    +
      +
    • Open /etc/apache2/sites-available/default in an editor (on the VM)
    • +
    • Add the following line at the top (outside the VirtualHost block): +WSGIPythonHome /path/to/flaskenv
    • +
    • Delete all other lines refering to mod_wsgi configuration
    • +
    • Add the following in the VirtualHost block:
    • +
    +
    +WSGIScriptAlias / /var/www/flaskr.wsgi
    +
    +
    +
    +

    Deploying

    +

    Finally, you'll need to add the named wsgi file and edit it to match:

    +
    +$ sudo touch /var/www/flaskr.wsgi
    +$ sudo vi /var/www/flasrk.wsgi
    +
    +
    +import sys
    +sys.path.insert(0, 'path/to/flaskr') # the flaskr app you uploaded
    +
    +from flaskr import app as application
    +
    +
    +
    +

    Deploying

    +

    Finally, restart apache and bask in the glow:

    +
    +$ sudo apache2ctl configtest
    +$ sudo /etc/init.d/apache2 graceful
    +
    +

    Load http://your_vm/

    +

    Wheeee!

    +
    +
    +

    Going Further

    +

    It's not too hard to see ways you could improve this.

    +
      +
    • For my part, I made a version using Bootstrap.js.
    • +
    • You could limit the number of posts shown on the front page.
    • +
    • You could add dates to the posts and provide archived views for older posts.
    • +
    • You could add the ability to edit existing posts (and add an updated date to the schema)
    • +
    • ...
    • +
    +
    +
    +

    But Instead

    +

    Instead of doing any of that, this week's assignment is a bit different.

    +

    You've implemented an app in one Small Framework. I want you to do it all +again, in a different Small Framework.

    +

    While you're working on it, think about the differences between your new +Framework and Flask. What do you like more? What do you like less? How might +this influence your choice of Frameworks in the future?

    +
    +
    +

    Assignment

    +
      +
    • Re-implement the Flaskr app we built in class in a different Small +Framework.
    • +
    • There are several named in the class outline, and in this presentation.
    • +
    • Pick one of them, or a different one of your choice. It must be Python.
    • +
    • When you are finished, add your source code and a README that talks about +your experience to the athome folder of week05.
    • +
    • Tell me about your new Framework. Discuss the points above regarding +differences.
    • +
    +
    +
    +

    Submitting The Assignment

    +
      +
    • Try to get your code running on your VM
    • +
    • Add your source code, in it's entirety, to the athome folder for week 5
    • +
    • Add a README.txt file that discusses the experience.
    • +
    • Commit your changes to your fork of the class repository and send me a pull +request
    • +
    diff --git a/searchindex.js b/searchindex.js index a2f8f0a6..b1e95dab 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],those:1,sens:1,spec:1,fax:0,sourc:1,string:1,util:1,veri:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,small:[0,1],pleas:1,cgi:[0,1],outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,click:2,index:0,what:1,sud:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],"new":2,contrast:0,hasn:1,berkelei:1,learn:[0,1],here:[0,1,2],inher:1,along:1,search:0,technolog:[],step:2,prior:0,zodb:[],pick:1,implement:[0,1],chanc:1,ourselv:1,via:[0,1],prerequisit:0,extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],few:1,recommend:1,tell:2,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,account:2,valuabl:1,prepar:1,work:[0,1],focu:[0,1],can:[0,1,2],http2:[],purpos:1,quickstart:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1,2],winter:0,anoth:1,write:[2,1],how:[0,1],simpl:[0,1],mar:1,resourc:1,attend:0,clone:2,after:2,sundai:1,lab:1,befor:1,date:1,data:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,author:1,django:[0,1],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:1,through:[0,1],dynam:1,concis:1,grade:0,offic:0,html:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1,2],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:0,doug:1,our:1,happen:1,out:1,accomplish:1,network:[0,1],publish:1,content:0,dso:0,internet:[0,1],common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,base:0,org:1,care:1,lucumr:[],place:2,principl:0,assign:[0,1,2],first:1,origin:[2,1],softwar:[],feel:1,onc:[],qualiti:1,mai:1,restkit_:[],horribl:1,fantast:0,differ:1,script:[2,1],top:[2,1],system:1,stack:1,master:[2,1],zeromq:1,"final":[2,1],pocoo:[],option:1,relationship:1,tool:1,copi:2,took:2,part:0,pars:1,mostli:1,eibrari:[],than:0,provid:[0,1],tree:[],structur:1,project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1,2],tabl:0,need:[2,1],techniqu:1,equival:0,client:1,note:2,also:1,ideal:1,contact:0,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,usernam:2,object:[0,1],reach:1,plai:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,doe:[0,1],determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:[0,1],corner:2,find:[2,1],onli:1,explain:1,configur:0,apach:1,written:1,should:[0,1],kessler:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],express:0,becaus:2,repo:1,rest:1,requir:0,truli:1,email:2,rfc:1,integr:0,contain:2,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,close:2,review:2,wikipedia:1,urllib:1,label:2,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,job:2,jog:0,solv:0,come:1,addit:1,wsgiref:1,tutori:1,mani:1,com:[2,1],point:1,overview:1,unittest:1,rfc2616:[],walk:1,tuesdai:0,throughout:0,uci:1,evalu:1,add:2,hellmann:1,compon:1,json:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,instructor:0,present:[0,1],"case":1,look:1,solid:1,servic:[0,1],employ:0,defin:1,"while":2,visit:2,wild:1,python_web:[2,1],week02:1,pyramid:[0,1],briandorsei:[],cherrypi:1,lightweight:1,minutia:0,sever:1,week04:1,minim:1,make:[2,1],format:1,same:1,complex:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],kit:1,student:[0,1],extern:1,studi:1,appropri:1,entri:1,coursework:0,exampl:[0,1],thi:[0,1,2],choos:1,model:[2,1],portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,select:1,virtual:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,armin:1,blob:1,app:1,homework:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,xmlrpc:1,week05:[],read:1,httplib:1,know:1,world:1,licens:1,uwpython_web:[],like:[2,1],specif:1,manifest:1,benefit:1,either:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:2,satisfactori:0,week03:1,server:1,librari:[0,1],virtualenv:1,guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,unit:1,refer:[0,1],machin:[2,1],cgi_exampl:[],investig:1,run:1,usag:0,confer:1,host:1,dissert:1,repositori:[2,1],januari:[0,1],feb:1,chapter:1,about:1,actual:2,socket:[0,1],constraint:1,microframework:1,commit:[0,2],disabl:0,own:[2,1],curiou:1,washington:0,curios:1,assess:0,foreward:1,chang:[2,1],your:[0,1,2],git:2,log:2,wai:1,transfer:1,support:[0,1],submit:2,why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,forward:1,fork:[2,1],bottl:1,form:1,offer:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:[],link:2,gain:1,rfc1945:[],pull:[2,1],made:[2,1],wish:1,url:1,below:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1,2],request:[0,1,2],pragmat:0,parser:1,lectur:[0,1],file:[2,1],want:[2,1],mashup:[0,1],when:2,scrape:1,field:1,other:1,test:1,ignor:1,you:[2,1],repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,train:[2,1],htmlparser:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,instructor:0,flask:1,tomayko:1,program:[0,1],present:[0,1],sens:1,spec:1,fax:0,sourc:1,string:1,util:1,veri:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,small:[0,1],pleas:1,machin:[2,1],outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,click:2,index:0,what:1,sud:1,section:1,lightn:1,brief:1,access:[0,1],"new":2,contrast:0,hasn:1,berkelei:1,learn:[0,1],here:[0,1,2],inher:1,along:1,search:0,technolog:[],host:1,prior:0,base:0,pick:1,implement:[0,1],chanc:1,ourselv:1,via:[0,1],repositori:[2,1],extra:[],apach:1,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,kessler:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],few:1,recommend:1,tell:2,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,account:2,retriev:1,valuabl:1,prepar:1,work:[0,1],focu:[0,1],can:[0,1,2],http2:[],purpos:1,quickstart:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1,2],winter:0,anoth:1,write:[2,1],concis:1,simpl:[0,1],mar:1,resourc:1,attend:0,clone:2,after:2,sundai:1,lab:1,befor:1,mai:1,data:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,minim:1,assign:[0,1,2],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,how:[0,1],grade:0,offic:0,complex:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1,2],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:[0,1],doug:1,our:1,happen:1,out:1,accomplish:1,network:[0,1],open:1,publish:1,content:0,dso:0,internet:[0,1],integr:0,advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,zodb:[],org:1,care:1,lucumr:[],place:2,principl:0,think:1,first:1,origin:[2,1],softwar:[],feel:1,onc:[],qualiti:1,date:1,restkit_:[],horribl:1,fantast:0,differ:1,script:[2,1],top:[2,1],system:1,master:[2,1],zeromq:1,"final":[2,1],low:0,option:1,relationship:1,tool:1,copi:2,took:2,employ:0,part:0,pars:1,mostli:1,eibrari:[],than:0,provid:[0,1],tree:[],structur:1,exampl:[0,1],project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1,2],tabl:0,need:[2,1],django:[0,1],techniqu:1,equival:0,note:2,also:1,ideal:1,contact:0,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,usernam:2,object:[0,1],reach:1,plai:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,doe:[0,1],determin:1,left:1,wsgi:[0,1],abl:0,beautifulsoup:1,bring:0,session:[0,1],corner:2,find:[2,1],onli:1,just:1,explain:1,configur:0,activ:0,written:1,should:[0,1],jan:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],familiar:1,express:0,curiou:1,becaus:2,repo:1,tcp:1,requir:0,truli:1,email:2,rfc:1,common:1,contain:2,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,close:2,databas:1,review:2,wikipedia:1,urllib:1,label:2,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,job:2,jog:0,solv:0,come:[],addit:1,pymotw:1,wsgiref:1,tutori:1,mani:1,com:[2,1],point:1,overview:1,unittest:1,rfc2616:[],walk:1,tuesdai:0,throughout:0,uci:1,creat:[0,1,2],armin:1,hellmann:1,compon:1,json:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,educ:0,those:1,"case":1,look:1,solid:1,servic:[0,1],cursor:1,defin:1,"while":2,wild:1,python_web:[2,1],real:[0,1],pyramid:[0,1],briandorsei:[],unit:1,cherrypi:1,lightweight:1,minutia:0,sever:1,xmlrpc:1,author:1,make:[2,1],week05:1,same:1,html:1,sqlite3:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],kit:1,student:[0,1],extern:1,stack:1,appropri:1,entri:1,coursework:0,client:1,thi:[0,1,2],choos:1,model:[2,1],portabl:0,latest:1,protocol:[0,1],execut:1,rest:1,weekli:0,scrape:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,add:2,blob:1,app:1,homework:1,build:1,week02:1,applic:[0,1],week01:1,march:0,around:1,week04:1,format:1,read:1,httplib:1,know:1,world:1,bit:1,licens:1,uwpython_web:[],like:[2,1],specif:1,manifest:1,benefit:1,either:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:2,satisfactori:0,week03:1,server:1,librari:[0,1],virtualenv:1,guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,select:1,refer:[0,1],cgi:[0,1],cgi_exampl:[],investig:1,run:1,usag:0,confer:1,step:2,dissert:1,prerequisit:0,januari:[0,1],feb:1,chapter:1,about:1,actual:2,socket:[0,1],constraint:1,microframework:1,commit:[0,2],disabl:0,own:[2,1],visit:2,washington:0,curios:1,assess:0,foreward:1,chang:[2,1],your:[0,1,2],git:2,log:2,wai:1,transfer:1,support:[0,1],submit:2,why:1,avail:1,start:[0,1],interfac:1,pocoo:[],suit:1,forward:1,fork:[2,1],bottl:1,form:1,offer:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:[],link:2,gain:1,rfc1945:[],pull:[2,1],made:[2,1],wish:1,url:1,below:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,evalu:1,request:[0,1,2],pragmat:0,parser:1,lectur:[0,1],file:[2,1],want:[2,1],mashup:[0,1],when:2,virtual:1,field:1,other:1,test:1,htmlparser:1,you:[2,1],repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,train:[2,1],ignor:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file From 904830b17830c4c84a2e0aa40ad601c7fa8e7dd4 Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 5 Feb 2013 01:01:12 -0800 Subject: [PATCH 035/114] Updated outline Completed week 5 slides --- _sources/outline.txt | 58 ++++++++++++++++++++++++-- outline.html | 82 +++++++++++++++++++++++++++++-------- presentations/week05.html | 86 +++++++++++++++++++++++++++++++++++++-- searchindex.js | 2 +- 4 files changed, 202 insertions(+), 26 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index 20327c36..e3353146 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -423,9 +423,59 @@ Please complete the assignment by noon on Sunday, February 10, 2013. Week 6 - Django --------------- -**Date**: Feb. 19, 2013 +**Date**: Feb. 12, 2013 + +In this class we'll get introduced to arguably the most popular full-stack +Python web framework, Django. We'll build a simple application that introduces +us to the basics of Models, Views and Templates. We'll also learn about the +Django admin and how it can help us rapidly develop effective applications. + +We'll cover basic relational modeling and talk about how to create effective +database schemas to model real-world problems. We'll take a look at how the +Django ORM (and ORMs in general) can help shield Python developers from SQL. + +For our homework, we'll take a look at a set of specifications for a project +and create a set of Django Models that will fulfill the specification. + +Reading +******* + +* `Django at a Glance + `_ - introduction to + the concepts and execution of Django + +* `Quick Install Guide + `_ - lightweight + instructions on installing Django. Use Python 2.6, not 2.5. + +* `Django Tutorial, part 1 + `_ - as noted + below, please actually follow the steps in the tutorial up until you reach + *Creating Models* + +Before Class +************ + +* Install Django 1.4.3. Use a Virtualenv and pip or easy_install. (see the + installation quick-start above, and the more in-depth guide below) + +* Install an RDBMS (I personally recommend PostgreSQL, but MySQL or any other + will do. We can even live with sqlite3, so long as you understand it is + **not for production**) + +* Set up a Django project. Walk through the first part of the tutorial above + until you reach *Creating Models*. **Do Not** create models) + +Reference +********* +* `Using Django `_ - far more + in-depth information about core topics in Django. Pay particular attention + to the installation documentation here. +* `Django Design Philosophies + `_ - some + well-considered words on why Django is the way it is. Assignment ********** @@ -435,7 +485,7 @@ To Be Decided Week 7 - Django --------------- -**Date**: Feb. 26, 2013 +**Date**: Feb. 19, 2013 Assignment ********** @@ -445,7 +495,7 @@ To Be Decided Week 8 - Pyramid ---------------- -**Date**: Mar. 5, 2013 +**Date**: Feb. 26, 2013 Assignment ********** @@ -455,7 +505,7 @@ To Be Decided Week 9 - The Cloud ------------------ -**Date**: Feb. 12, 2013 +**Date**: Mar. 5, 2013 Assignment ********** diff --git a/outline.html b/outline.html index 486fe587..3da82674 100644 --- a/outline.html +++ b/outline.html @@ -389,41 +389,84 @@

    Assignment

    Week 6 - Django¶

    -

    Date: Feb. 19, 2013

    +

    Date: Feb. 12, 2013

    +

    In this class we’ll get introduced to arguably the most popular full-stack +Python web framework, Django. We’ll build a simple application that introduces +us to the basics of Models, Views and Templates. We’ll also learn about the +Django admin and how it can help us rapidly develop effective applications.

    +

    We’ll cover basic relational modeling and talk about how to create effective +database schemas to model real-world problems. We’ll take a look at how the +Django ORM (and ORMs in general) can help shield Python developers from SQL.

    +

    For our homework, we’ll take a look at a set of specifications for a project +and create a set of Django Models that will fulfill the specification.

    -

    Assignment¶

    +

    Reading¶

    +
      +
    • Django at a Glance - introduction to +the concepts and execution of Django
    • +
    • Quick Install Guide - lightweight +instructions on installing Django. Use Python 2.6, not 2.5.
    • +
    • Django Tutorial, part 1 - as noted +below, please actually follow the steps in the tutorial up until you reach +Creating Models
    • +
    +
    +
    +

    Before Class¶

    +
      +
    • Install Django 1.4.3. Use a Virtualenv and pip or easy_install. (see the +installation quick-start above, and the more in-depth guide below)
    • +
    • Install an RDBMS (I personally recommend PostgreSQL, but MySQL or any other +will do. We can even live with sqlite3, so long as you understand it is +not for production)
    • +
    • Set up a Django project. Walk through the first part of the tutorial above +until you reach Creating Models. Do Not create models)
    • +
    +
    +
    +

    Reference¶

    +
      +
    • Using Django - far more +in-depth information about core topics in Django. Pay particular attention +to the installation documentation here.
    • +
    • Django Design Philosophies - some +well-considered words on why Django is the way it is.
    • +
    +
    +
    +

    Assignment¶

    To Be Decided

    Week 7 - Django¶

    -

    Date: Feb. 26, 2013

    -
    -

    Assignment¶

    +

    Date: Feb. 19, 2013

    +
    +

    Assignment¶

    To Be Decided

    Week 8 - Pyramid¶

    -

    Date: Mar. 5, 2013

    -
    -

    Assignment¶

    +

    Date: Feb. 26, 2013

    +
    +

    Assignment¶

    To Be Decided

    Week 9 - The Cloud¶

    -

    Date: Feb. 12, 2013

    -
    -

    Assignment¶

    +

    Date: Mar. 5, 2013

    +
    +

    Assignment¶

    To Be Decided

    Week 10 - Plone¶

    Date: Mar. 12, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    @@ -485,23 +528,26 @@

    Table Of Contents

  • Week 6 - Django
  • Week 7 - Django
  • Week 8 - Pyramid
  • Week 9 - The Cloud
  • Week 10 - Plone
  • diff --git a/presentations/week05.html b/presentations/week05.html index 7efb6745..d68ce874 100644 --- a/presentations/week05.html +++ b/presentations/week05.html @@ -53,10 +53,89 @@

    Internet Programming with Python

    But First

    Review from the Assignment

    +
    +

    URL Mapping

    +

    Two basic approaches to solving the problem:

    +
    +/books?id=id1
    +/books/id1
    +
    +

    The first generally used environ['QUERY_STRING']. The second used +environ['PATH_INFO']

    +

    Both are fine. Largely a matter of taste. I find the latter more common in +daily work.

    +
    +
    +

    Regular Expressions

    +

    My personal approach to the url mapping problem was the second, which relies +on regular expression mapping:

    +
    +URLS = [(r'^$', 'books'),
    +        (r'^book/(id[\d]{1,2})$', 'book'), ]
    +
    +

    Regular expressions should be as tight as possible, it's easy to over-match

    +

    Read the Python Regexp How-to +and find a good Regular Expression Tester

    +
    +
    +

    String Formatting

    +

    This is awkward:

    +
    +bob = {'a': 'things', 'b': 'stuff'}
    +"I have lots of " + bob['a'] + " and " + bob['b'] + "."
    +
    +

    This is much less so:

    +
    +bob = {'a': 'things', 'b': 'stuff'}
    +"I have lots of %(a)s and %(b)s." % bob
    +
    +

    I am chastened. string.format() is the best (most flexible)

    +
    +
    +

    WSGIScriptAlias

    +

    CGI required a cgi directory. WSGI makes no such requirement.

    +

    You can use WSGIScriptAlias to point to a single file

    +

    Since a single file can often provide the entry point to an entire app, this +allows you to mount entire apps at arbitrary path locations:

    +
    +WSGIScriptAlias / /path/to/main/app/wsgi_app.py
    +WSGIScriptAlias /blog /path/to/blog/app/wsgi_app.py
    +WSGIScriptAlias /forum /path/to/forum/app/wsgi_app.py
    +
    +
    +
    +

    Bad HTML

    +

    I know that web browsers are forgiving, but you should be less so.

    +

    These are not good HTML:

    +
    +<p><a href = /book/id4 >foobar</p>
    +<P><A HREF='/book/id4'>foobar</A></P>
    +
    +

    This is: <p><a href="/book/id4">foobar</a></p>

    +

    The Mozilla Developer Network is a great resource for +proper HTML. It also has great reference information on JavaScript. Shun the +w3schools.

    +

    And Second

    Questions from the Reading?

    +
    +

    And Third

    +

    Class Project

    +
      +
    • Create a Website
    • +
    • It can do anything you want it to.
    • +
    • It should have some user interactions (forms users complete).
    • +
    • It should look nice-ish
    • +
    • It should show off some aspect of what you've learned
    • +
    • It should take you about 15-20 hours to create (so small)
    • +
    • It will be due on the last day of class (March 10)
    • +
    • We will spend half of each of the last two class session working on it in +class.
    • +
    • Questions?
    • +
    +

    And Now...

    Small Frameworks

    @@ -344,7 +423,8 @@

    URL Routing

    Routes Can Be Dynamic

    You can provide placeholders in dynamic urls. Each placeholder is then a -named arg to your function (add these to flask_intro.py):

    +named arg to your function (add these to flask_intro.py (and delete the +1/0 bit)):

     @app.route('/profile/<username>')
     def show_profile(username):
    @@ -375,7 +455,7 @@ 

    Routes Can Be Filtered

    Routes Can Be Reversed

    -

    Reversing a URL means the ability to generating the url that would result in a +

    Reversing a URL means the ability to generate the url that would result in a given endpoint being called.

    This means you don't have to hard-code your URLs when building links

    That means you can change the URLs for your app without changing code or @@ -435,7 +515,7 @@

    Jinja2 Template Basics

  • Variables in templates can be printed by surrounding the variable name with double curly braces: {{ name }}.
  • If a variable points to something like a dictionary or object, you can use -either dot or subscription notation: {{ obj[attr] }}, {{ dict.key +either dot or subscript notation: {{ obj[attr] }}, {{ dict.key }}.
  • Variables in templates can be filtered: {{ name|capitalize }}. There is a list of builtin filters.
  • diff --git a/searchindex.js b/searchindex.js index b1e95dab..800f8751 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,instructor:0,flask:1,tomayko:1,program:[0,1],present:[0,1],sens:1,spec:1,fax:0,sourc:1,string:1,util:1,veri:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,small:[0,1],pleas:1,machin:[2,1],outlin:[0,1],representational_state_transf:1,htm:1,restkit:1,pass:[0,1],further:1,click:2,index:0,what:1,sud:1,section:1,lightn:1,brief:1,access:[0,1],"new":2,contrast:0,hasn:1,berkelei:1,learn:[0,1],here:[0,1,2],inher:1,along:1,search:0,technolog:[],host:1,prior:0,base:0,pick:1,implement:[0,1],chanc:1,ourselv:1,via:[0,1],repositori:[2,1],extra:[],apach:1,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,kessler:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],few:1,recommend:1,tell:2,memeori:0,relat:[],downtown:[],appendix:1,must:[],topic:0,account:2,retriev:1,valuabl:1,prepar:1,work:[0,1],focu:[0,1],can:[0,1,2],http2:[],purpos:1,quickstart:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1,2],winter:0,anoth:1,write:[2,1],concis:1,simpl:[0,1],mar:1,resourc:1,attend:0,clone:2,after:2,sundai:1,lab:1,befor:1,mai:1,data:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,minim:1,assign:[0,1,2],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,how:[0,1],grade:0,offic:0,complex:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1,2],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:[0,1],doug:1,our:1,happen:1,out:1,accomplish:1,network:[0,1],open:1,publish:1,content:0,dso:0,internet:[0,1],integr:0,advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,zodb:[],org:1,care:1,lucumr:[],place:2,principl:0,think:1,first:1,origin:[2,1],softwar:[],feel:1,onc:[],qualiti:1,date:1,restkit_:[],horribl:1,fantast:0,differ:1,script:[2,1],top:[2,1],system:1,master:[2,1],zeromq:1,"final":[2,1],low:0,option:1,relationship:1,tool:1,copi:2,took:2,employ:0,part:0,pars:1,mostli:1,eibrari:[],than:0,provid:[0,1],tree:[],structur:1,exampl:[0,1],project:1,consumpt:1,comput:[0,1],modern:1,ani:0,have:[0,1,2],tabl:0,need:[2,1],django:[0,1],techniqu:1,equival:0,note:2,also:1,ideal:1,contact:0,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,usernam:2,object:[0,1],reach:1,plai:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,doe:[0,1],determin:1,left:1,wsgi:[0,1],abl:0,beautifulsoup:1,bring:0,session:[0,1],corner:2,find:[2,1],onli:1,just:1,explain:1,configur:0,activ:0,written:1,should:[0,1],jan:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],familiar:1,express:0,curiou:1,becaus:2,repo:1,tcp:1,requir:0,truli:1,email:2,rfc:1,common:1,contain:2,where:[],wiki:1,certif:0,knowledg:1,see:1,result:[0,1],fail:0,close:2,databas:1,review:2,wikipedia:1,urllib:1,label:2,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,job:2,jog:0,solv:0,come:[],addit:1,pymotw:1,wsgiref:1,tutori:1,mani:1,com:[2,1],point:1,overview:1,unittest:1,rfc2616:[],walk:1,tuesdai:0,throughout:0,uci:1,creat:[0,1,2],armin:1,hellmann:1,compon:1,json:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,educ:0,those:1,"case":1,look:1,solid:1,servic:[0,1],cursor:1,defin:1,"while":2,wild:1,python_web:[2,1],real:[0,1],pyramid:[0,1],briandorsei:[],unit:1,cherrypi:1,lightweight:1,minutia:0,sever:1,xmlrpc:1,author:1,make:[2,1],week05:1,same:1,html:1,sqlite3:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],kit:1,student:[0,1],extern:1,stack:1,appropri:1,entri:1,coursework:0,client:1,thi:[0,1,2],choos:1,model:[2,1],portabl:0,latest:1,protocol:[0,1],execut:1,rest:1,weekli:0,scrape:1,human:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,add:2,blob:1,app:1,homework:1,build:1,week02:1,applic:[0,1],week01:1,march:0,around:1,week04:1,format:1,read:1,httplib:1,know:1,world:1,bit:1,licens:1,uwpython_web:[],like:[2,1],specif:1,manifest:1,benefit:1,either:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:2,satisfactori:0,week03:1,server:1,librari:[0,1],virtualenv:1,guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,select:1,refer:[0,1],cgi:[0,1],cgi_exampl:[],investig:1,run:1,usag:0,confer:1,step:2,dissert:1,prerequisit:0,januari:[0,1],feb:1,chapter:1,about:1,actual:2,socket:[0,1],constraint:1,microframework:1,commit:[0,2],disabl:0,own:[2,1],visit:2,washington:0,curios:1,assess:0,foreward:1,chang:[2,1],your:[0,1,2],git:2,log:2,wai:1,transfer:1,support:[0,1],submit:2,why:1,avail:1,start:[0,1],interfac:1,pocoo:[],suit:1,forward:1,fork:[2,1],bottl:1,form:1,offer:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:[],link:2,gain:1,rfc1945:[],pull:[2,1],made:[2,1],wish:1,url:1,below:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,evalu:1,request:[0,1,2],pragmat:0,parser:1,lectur:[0,1],file:[2,1],want:[2,1],mashup:[0,1],when:2,virtual:1,field:1,other:1,test:1,htmlparser:1,you:[2,1],repeat:1,intend:1,urllib2:1,consid:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,train:[2,1],ignor:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,instructor:0,flask:1,tomayko:1,program:[0,1],present:[0,1],sens:1,spec:1,introduc:1,fax:0,sourc:1,string:1,far:1,util:1,veri:1,word:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,small:[0,1],pleas:1,machin:[2,1],outlin:[0,1],representational_state_transf:1,core:1,htm:1,restkit:1,design:1,pass:[0,1],further:1,click:2,even:1,index:0,what:1,sud:1,section:1,lightn:1,brief:1,access:[0,1],"new":2,contrast:0,hasn:1,full:1,berkelei:1,gener:1,learn:[0,1],here:[0,1,2],inher:1,along:1,search:0,technolog:[],host:1,prior:0,base:0,pick:1,implement:[0,1],chanc:1,ourselv:1,via:[0,1],repositori:[2,1],extra:[],apach:1,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,kessler:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],few:1,live:1,recommend:1,tell:2,memeori:0,relat:1,downtown:[],appendix:1,templat:1,particular:1,postgresql:1,must:[],topic:[0,1],account:2,retriev:1,valuabl:1,prepar:1,work:[0,1],focu:[0,1],can:[0,1,2],http2:[],purpos:1,quickstart:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1,2],winter:0,anoth:1,write:[2,1],concis:1,low:0,simpl:[0,1],product:1,mar:1,resourc:1,attend:0,clone:2,after:2,sundai:1,lab:1,befor:1,attent:1,mai:1,philosophi:1,data:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,minim:1,assign:[0,1,2],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,how:[0,1],grade:0,offic:0,complex:1,rapidli:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1,2],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:[0,1],doug:1,our:1,happen:1,out:1,accomplish:1,network:[0,1],open:1,publish:1,content:0,dso:0,internet:[0,1],integr:0,advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,zodb:[],org:1,care:1,lucumr:[],place:2,principl:0,think:1,first:1,origin:[2,1],softwar:[],feel:1,onc:[],qualiti:1,date:1,instruct:1,restkit_:[],horribl:1,fantast:0,differ:1,"long":1,script:[2,1],top:[2,1],system:1,master:[2,1],zeromq:1,"final":[2,1],schema:1,option:1,relationship:1,tool:1,copi:2,took:2,employ:0,part:[0,1],pars:1,mostli:1,eibrari:[],than:0,provid:[0,1],tree:[],structur:1,exampl:[0,1],project:1,consumpt:1,comput:[0,1],modern:1,ani:[0,1],have:[0,1,2],tabl:0,need:[2,1],django:[0,1],techniqu:1,equival:0,note:[2,1],also:1,ideal:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,usernam:2,object:[0,1],reach:1,most:1,plai:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,doe:[0,1],determin:1,left:1,wsgi:[0,1],abl:0,beautifulsoup:1,bring:0,session:[0,1],corner:2,find:[2,1],shield:1,onli:1,just:1,explain:1,configur:0,activ:0,written:1,should:[0,1],jan:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],familiar:1,express:0,curiou:1,becaus:2,repo:1,tcp:1,requir:0,truli:1,email:2,rfc:1,common:1,contain:2,where:[],view:1,wiki:1,certif:0,set:1,knowledg:1,see:1,result:[0,1],fail:0,close:2,databas:1,review:2,wikipedia:1,urllib:1,label:2,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,job:2,jog:0,solv:0,come:[],addit:1,pymotw:1,wsgiref:1,tutori:1,mani:1,com:[2,1],point:1,overview:1,unittest:1,rfc2616:[],walk:1,tuesdai:0,throughout:0,admin:1,uci:1,creat:[0,1,2],armin:1,hellmann:1,compon:1,json:1,basic:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,educ:0,those:1,"case":1,look:1,solid:1,servic:[0,1],cursor:1,defin:1,"while":2,abov:1,wild:1,python_web:[2,1],real:[0,1],pyramid:[0,1],glanc:1,briandorsei:[],unit:1,cherrypi:1,lightweight:1,minutia:0,sever:1,develop:1,xmlrpc:1,author:1,make:[2,1],week05:1,same:1,html:1,sqlite3:1,pai:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],effect:1,kit:1,student:[0,1],extern:1,stack:1,appropri:1,entri:1,coursework:0,well:1,person:1,contact:0,thi:[0,1,2],choos:1,model:[2,1],portabl:0,latest:1,protocol:[0,1],execut:1,rest:1,weekli:0,scrape:1,human:1,mysql:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,add:2,blob:1,app:1,homework:1,build:1,week02:1,applic:[0,1],week01:1,march:0,around:1,week04:1,format:1,read:1,httplib:1,arguabl:1,know:1,world:1,bit:1,licens:1,uwpython_web:[],like:[2,1],specif:1,manifest:1,benefit:1,either:1,popular:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:2,satisfactori:0,week03:1,server:1,librari:[0,1],virtualenv:1,guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,select:1,refer:[0,1],cgi:[0,1],cgi_exampl:[],investig:1,run:1,usag:0,confer:1,step:[2,1],dissert:1,prerequisit:0,januari:[0,1],feb:1,chapter:1,about:1,actual:[2,1],socket:[0,1],constraint:1,microframework:1,commit:[0,2],disabl:0,fulfil:1,own:[2,1],visit:2,washington:0,easy_instal:1,curios:1,assess:0,orm:1,foreward:1,chang:[2,1],your:[0,1,2],git:2,log:2,wai:1,transfer:1,support:[0,1],submit:2,why:1,avail:1,start:[0,1],interfac:1,pocoo:[],suit:1,forward:1,fork:[2,1],bottl:1,form:1,offer:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:[],link:2,gain:1,rfc1945:[],pull:[2,1],made:[2,1],wish:1,until:1,url:1,below:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,evalu:1,request:[0,1,2],pragmat:0,parser:1,lectur:[0,1],file:[2,1],pip:1,want:[2,1],mashup:[0,1],when:2,virtual:1,field:1,other:1,rdbm:1,test:1,htmlparser:1,you:[2,1],repeat:1,intend:1,urllib2:1,consid:1,sql:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,depth:1,train:[2,1],ignor:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file From ab45becbbb559cdf78b64c10b69c6d25cd376093 Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 5 Feb 2013 17:29:11 -0800 Subject: [PATCH 036/114] fix final project due date --- presentations/week05.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/presentations/week05.html b/presentations/week05.html index d68ce874..c5b430c6 100644 --- a/presentations/week05.html +++ b/presentations/week05.html @@ -130,7 +130,7 @@

    And Third

  • It should look nice-ish
  • It should show off some aspect of what you've learned
  • It should take you about 15-20 hours to create (so small)
  • -
  • It will be due on the last day of class (March 10)
  • +
  • It will be due Friday following the last day of class (March 15)
  • We will spend half of each of the last two class session working on it in class.
  • Questions?
  • @@ -628,6 +628,8 @@

    Our App

    app = Flask(__name__) # this is already in the file app.config.from_object(__name__) +

    Windows users, you will need to create C:\tmp or change the pathname for +DATABASE

    Creating the Database

    From 8832cda9adb510d142e2f7a6987d56d3eab05e9e Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 5 Feb 2013 17:54:47 -0800 Subject: [PATCH 037/114] small fixes to the presi for today --- presentations/week05.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/presentations/week05.html b/presentations/week05.html index c5b430c6..714eda55 100644 --- a/presentations/week05.html +++ b/presentations/week05.html @@ -1048,9 +1048,9 @@

    Test Authentication

    rv = self.logout() assert 'You were logged out' in rv.data rv = self.login('adminx', 'default') - assert 'Invalid username' in rv.data + assert 'Invalid Login' in rv.data rv = self.login('admin', 'defaultx') - assert 'Invalid password' in rv.data + assert 'Invalid Login' in rv.data

    We should be up to 9 tests, one failing

    From 6eb2b9247496de5942b0b2fe79acb90718f81129 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 11 Feb 2013 00:49:44 -0800 Subject: [PATCH 038/114] update outline with readings for week 7 update week 6 presentation, 40% complete. --- _sources/outline.txt | 73 ++++++ outline.html | 82 +++++- presentations/week06.html | 508 +++++++++++++++++++++++++++++++++++++- searchindex.js | 2 +- 4 files changed, 650 insertions(+), 15 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index e3353146..724b9403 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -487,6 +487,79 @@ Week 7 - Django **Date**: Feb. 19, 2013 +In this class we'll dive a bit further into Django. We'll take the +specifications from week 6 and the models we created from them to set up a +simple application. Along the way we'll learn a bit more about the Django +admin, generic views, and templates. + +We'll also discuss extending the functionality of our application using +existing Django **apps**. We'll see how these add-ons can help us to solve +common problems like user registration and database schema management. + +Finally, we'll discuss some of the strengths and weaknesses of Django. What +makes it a good choice for some projects but not for others. + +Our assignment for the week will be to enhance the application we build in +class with some additional functionality. + +Reading +******* + +* `Using Django `_ - far more + in-depth information about core topics in Django. Pay attention specifically + to the following topics (you'll want to follow links in these documents): + + * `Models `_ - + details of the django modelling system. How to represent data for, + relationships between and the presentation of your objects. + + * `Queries `_ - + basic information about the Django ORM and how to use it to create, + retrieve, update and delete objects. + + * `Working with Forms + `_ - how to create, + display, and process forms in Django, including forms that are associated + with a given model. + + * `The Django Template Language + `_ - learn + template basics like variables, filters, tags and blocks, and learn about + template inheritance. + + * `Class-based Generic Views + `_ - an + introduction to the simplest way to present your objects to your adoring + public. + + * `Testing Django Applications + `_ - learn + different approaches to testing Django applications, including unit + testing and doctests. + +Before Class +************ + +We'll be adding a new bit of functionality to our app, and we'll do this not +by developing it ourselves, but by *integrating* an existing add-on. Before +class begins, please install `django-south +`_ and `django-registration +`_ into your Django +virtualenv. + +Reference +********* + +* `SQLAlchemy and You `_ + - A really in-depth look at the differences between the Django ORM and the + reigning king of Python database integration, SQLAlchemy. + +* `About Django from the Pyramid Guy + `_ - a talk given at + DjangoCon 2012 by Chris McDonough, one of the driving forces behind the + Pyramid framework. Also available in `video form + `_. + Assignment ********** diff --git a/outline.html b/outline.html index 3da82674..4218d498 100644 --- a/outline.html +++ b/outline.html @@ -441,32 +441,89 @@

    Assignment

    Week 7 - Django¶

    Date: Feb. 19, 2013

    +

    In this class we’ll dive a bit further into Django. We’ll take the +specifications from week 6 and the models we created from them to set up a +simple application. Along the way we’ll learn a bit more about the Django +admin, generic views, and templates.

    +

    We’ll also discuss extending the functionality of our application using +existing Django apps. We’ll see how these add-ons can help us to solve +common problems like user registration and database schema management.

    +

    Finally, we’ll discuss some of the strengths and weaknesses of Django. What +makes it a good choice for some projects but not for others.

    +

    Our assignment for the week will be to enhance the application we build in +class with some additional functionality.

    -

    Assignment¶

    +

    Reading¶

    +
      +
    • Using Django - far more +in-depth information about core topics in Django. Pay attention specifically +to the following topics (you’ll want to follow links in these documents):
        +
      • Models - +details of the django modelling system. How to represent data for, +relationships between and the presentation of your objects.
      • +
      • Queries - +basic information about the Django ORM and how to use it to create, +retrieve, update and delete objects.
      • +
      • Working with Forms - how to create, +display, and process forms in Django, including forms that are associated +with a given model.
      • +
      • The Django Template Language - learn +template basics like variables, filters, tags and blocks, and learn about +template inheritance.
      • +
      • Class-based Generic Views - an +introduction to the simplest way to present your objects to your adoring +public.
      • +
      • Testing Django Applications - learn +different approaches to testing Django applications, including unit +testing and doctests.
      • +
      +
    • +
    +
    +
    +

    Before Class¶

    +

    We’ll be adding a new bit of functionality to our app, and we’ll do this not +by developing it ourselves, but by integrating an existing add-on. Before +class begins, please install django-south and django-registration into your Django +virtualenv.

    +
    +
    +

    Reference¶

    +
      +
    • SQLAlchemy and You +- A really in-depth look at the differences between the Django ORM and the +reigning king of Python database integration, SQLAlchemy.
    • +
    • About Django from the Pyramid Guy - a talk given at +DjangoCon 2012 by Chris McDonough, one of the driving forces behind the +Pyramid framework. Also available in video form.
    • +
    +
    +
    +

    Assignment¶

    To Be Decided

    Week 8 - Pyramid¶

    Date: Feb. 26, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    Week 9 - The Cloud¶

    Date: Mar. 5, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    Week 10 - Plone¶

    Date: Mar. 12, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    @@ -535,19 +592,22 @@

    Table Of Contents

  • Week 7 - Django
  • Week 8 - Pyramid
  • Week 9 - The Cloud
  • Week 10 - Plone
  • diff --git a/presentations/week06.html b/presentations/week06.html index b19617b2..2777adf7 100644 --- a/presentations/week06.html +++ b/presentations/week06.html @@ -5,7 +5,7 @@ -This is Week 6 +Internet Programming with Python @@ -29,15 +29,517 @@
    -

    This is Week 6

    +

    Internet Programming with Python

    +img/django-pony.png +

    Week 6: Django - Part 1

    +

    Wherein we become 'perfectionists with deadlines'

    +

    image: http://djangopony.com/

    + +
    +
    +

    But First

    +

    Review from the Assignment

    +
    +
    +

    And Second

    +

    Questions from the Reading?

    +
    +
    +

    And Now

    +img/django_lead.png +
    +
    +

    Full Stack Framework

    +

    Django is One Big Package

    +

    When you installed Flask, you also installed werkzeug and jinja2, a total +of 1.85MB

    +

    Django 1.4.3 weighs in at 7.7MB (4 times the size of Flask)

    +

    So what do you get?

    +
    +
    +

    Full Stack Framework

    +

    Django comes with:

    +
      +
    • Persistence via the Django ORM
    • +
    • CRUD content editing via the automatic Django Admin
    • +
    • URL Mapping via urlpatterns
    • +
    • Templating via the Django Template Language
    • +
    • Caching with levels of configurability
    • +
    • Internationalization via i18n hooks
    • +
    • Form rendering and handling
    • +
    +

    Pretty much everything you need to make a solid website quickly

    +
    +
    +

    What Sets it Apart?

    +

    Lots of frameworks offer some of these features, if not all.

    +

    What is Django's killer feature

    +

    The Django Admin

    +
    +
    +

    The Django Admin

    +

    Works in concert with the Django ORM to provide automatic CRUD functionality

    +

    You write the models, it provides the UI

    +

    Really

    +
    +
    +

    The Pareto Principle

    +

    The Django Admin is a perfect embodiment of the Pareto Priciple, a.k.a. the +80/20 rule:

    +

    80% of the problems can be solved by 20% of the effort

    +

    The converse also holds true:

    +

    Fixing the last 20% of the problems will take the remaining 80% of the effort.

    +
    +
    +

    Other Django Advantages

    +

    Clearly the most popular Python web framework at this time

    +

    Popularity translates into:

    +
      +
    • Active, present community
    • +
    • Plethora of good examples to be found online
    • +
    • Rich ecosystem of apps (encapsulated add-on functionality)
    • +
    +

    Jobs

    +
    +
    +

    Active Development

    +

    Popular frameworks tend to be actively developed.

    +

    Django releases in the last 12 months:

    +
      +
    • 1.5 (any day now)
    • +
    • 1.4.3 (December 2012)
    • +
    • 1.3.5 (December 2012)
    • +
    • 1.4.2 (November 2012)
    • +
    • 1.3.3 (August 2012)
    • +
    • 1.4.1 (July 2012)
    • +
    • 1.3.2 (July 2012)
    • +
    • 1.4 (March 2012)
    • +
    +
    +
    +

    Great Documentation

    +

    Thorough, readable, and discoverable.

    +

    Led the way to better documentation for all Python

    +

    Read The Docs - built in connection with +Django, sponsored by the Django Software Foundation.

    +

    Write documentation as part of your python package, and render new versions of +that documentation for every commit

    +

    this is awesome

    +
    +
    +

    History

    +

    Django was created to power the website of the Lawrence Journal-World +newspaper, Lawrence, KS

    +

    This birth in practicality is reflected in the design of the system.

    +

    Pretty much every design decision was made to solve a real problem.

    +

    You can read more in this Quora post

    +
    +
    +

    Django Organization

    +

    Django is organized into projects and apps

    +

    A Django project represents the totality of a website, all the pages it +will contain and all the functionality it supports

    +

    A Django app represents an individual unit of functionality: a blog, a +forum, a registration system, a content tagging system, etc.

    +

    One project can (and likely will) consist of many apps

    +
    +
    +

    Starting a Project

    +

    You should already have done this at home, but we'll look at it together in +case:

    +
      +
    • Set up a Django virtualenv
    • +
    • Activate that env and pip install django
    • +
    • Create a new Django project:
    • +
    +
    +(djangoenv)$ django-admin.py startproject mysite
    +
    +

    This will create a folder called 'mysite'. Let's take a look at it:

    +
    +
    +

    Project Layout

    +

    The folder created by django-admin.py contains the following structure:

    +
    +mysite/
    +    manage.py
    +    mysite/
    +        __init__.py
    +        settings.py
    +        urls.py
    +        wsgi.py
    +
    +

    If what you see doesn't match that, you're using an older version of Django. +Make sure you've installed 1.4.3.

    +
    +
    +

    What Got Created

    +
      +
    • outer *mysite* folder: this is just a container and can be renamed or +moved at will
    • +
    • inner *mysite* folder: this is your project directory. It should not be +renamed.
    • +
    • __init__.py: magic file that makes mysite a python package.
    • +
    • settings.py: file which holds configuration for your project, more soon.
    • +
    • urls.py: file which holds top-level URL configuration for your project, +more soon.
    • +
    • wsgi.py: the .wsgi file which allows your project to be run in a wsgi +server, like mod_wsgi.
    • +
    • manage.py: a management control script.
    • +
    +
    +
    +

    django-admin.py and manage.py

    +

    django-admin.py provides a hook for administrative tasks and abilities:

    +
      +
    • creating a new project or app
    • +
    • running the development server
    • +
    • executing tests
    • +
    • entering a python interpreter
    • +
    • entering a database shell session with your database
    • +
    • much much more (run django-admin.py without an argument)
    • +
    +

    manage.py wraps this functionality, adding the full environment of your +project.

    +
    +
    +

    Development Server

    +

    At this point, you should be ready to use the development server:

    +
    +(djangoenv)$ cd mysite
    +(djangoenv)$ python manage.py runserver
    +...
    +
    +

    Load http://localhost:8000 in your browser.

    +
    +
    +

    A Blank Slate

    +

    You should see this:

    +img/django-start.png +

    Do you?

    +
    +
    +

    Connecting A Database

    +

    Django comes with its own ORM (Object-Relational Mapper)

    +

    The first step in working with Django is to connect it to your database (this +is set in settings.py)

    +
    +DATABASES = {
    +    'default': {
    +        'ENGINE': 'django.db.backends.<your_db_backend>',
    +        'NAME': '<your_db_name>',
    +        'USER': '<your_db_user>',
    +        'PASSWORD': '<your_db_password>',
    +        'HOST': '<not_needed_on_localhost>',
    +        'PORT': '<not_needed_on_localhost>',
    +    }
    +}
    +
    +
    +
    +

    A Quick Word about Databases

    +

    Sqlite3 is not a production-capable database. Do not attempt to use it as +such. Do not start a real project using sqlite3, expecting to move 'when +you go to production'.

    +

    That being said, proper database administration is out-of-scope for this +class. If you haven't already got a PostgreSQL or MySQL database set up and +ready to use, just use sqlite3 so we can get through this.

    +
    +
    +

    Building DB Tables

    +

    The Django ORM builds tables. Django models describe the objects you want, the +ORM does the rest.

    +

    Django comes with some apps set up and ready to use. These define models, +and need tables to power them. You create the tables by running the management +command syncdb:

    +
    +(djangoenv)$ python manage.py syncdb
    +
    +

    Add your first admin user when prompted (remember the password)

    +
    +
    +

    Lab

    +

    The remainder of our class today will be lab time. We'll be directly playing +with Django from here on out.

    +

    Todays lab is entirely drawn from the Django Tutorial, with some minor +enhancements.

    +
    +
    +

    Lab - Step One

    +

    We are going to create an app to add to our project. This app will:

    +
      +
    • Allow a user to create poll questions
    • +
    • Allow a user to provide choices for these questions
    • +
    • Allow visitors to a site to see these questions and vote for an answer
    • +
    • Allow the total vote tallies for the answers to a poll question to be +displayed.
    • +
    +

    As stated above, an app should represent a unit of functionality within a +larger system, the project. We have a project, we need to create an app

    +
    +
    +

    Create an App

    +

    This is accomplished using manage.py.

    +

    In your terminal, make sure you are in the outer mysite directory, where the +file manage.py is located. Then:

    +
    +(djangoenv)$ python manage.py startapp polls
    +
    +
    +
    +

    What is Created

    +

    This should leave you with the following structure:

    +
    +mysite/
    +    manage.py
    +    mysite/
    +        ...
    +    polls/
    +        __init__.py
    +        models.py
    +        tests.py
    +        views.py
    +
    +

    We'll start by defining the objects we will work with: poll questions and +choices.

    +
    +
    +

    Models

    +

    Open the file models.py in your editor, and add the following code:

    +
    +from django.db import models
    +
    +class Poll(models.Model):
    +    question = models.CharField(max_length=200)
    +    pub_date = models.DateTimeField('date published')
    +
    +class Choice(models.Model):
    +    poll = models.ForeignKey(Poll)
    +    choice = models.CharField(max_length=200)
    +    votes = models.IntegerField(default=0)
    +
    +
    +
    +

    Model Details

    +

    Let's look at that a bit more closely:

    +
    +class Poll(models.Model):
    +
    + +
      +
    • Our Models are Python classes that inherit from the Model class
    • +
    • The Model class provides a standard API for interacting with a database, +centered on the object defined by the model.
    • +
    • You can add functionality to your object by adding methods to these models.
    • +
    • Consider methods added to a model to be row-level operations. They will work +on a single record from the database, not on entire tables
    • +
    • You can read much more about the Model API
    • +
    +
    +
    +

    Field Details

    +

    A model has attributes defined by Fields:

    +
    +question = models.CharField(max_length=200)
    +pub_date = models.DateTimeField('date published')
    +poll = models.ForeignKey(Poll)
    +votes = models.IntegerField(default=0)
    +
    +
      +
    • Fields map to columns in a database table
    • +
    • Note there are no explicit primary key fields. Django does this +automatically
    • +
    • Different field types map to different SQL column types, the ORM handles +this.
    • +
    • Django fields can handle complex relationships between objects.
    • +
    • Field constructors take arguments, some are common to all Fields, others +particular to a given Field type.
    • +
    • ALL Django model fields default to being NOT NULL (required). You change +this with the blank and null constructor arguments
    • +
    • You can read much more about Model Fields
    • +
    +
    +
    +

    Hooking it Up

    +

    Okay, we've got a couple of models, now we need to add our app to our +project.

    +

    In Django, this is accomplished by configuration.

    +

    Configuration takes place in the project settings.py file.

    +

    Open that file now, in your editor.

    +
    +
    +

    Installing Apps

    +

    You extend Django functionality by installing apps. Find the following block +in settings.py and edit it like so:

    +
    +INSTALLED_APPS = (
    +    'django.contrib.auth',
    +    'django.contrib.contenttypes',
    +    'django.contrib.sessions',
    +    'django.contrib.sites',
    +    'django.contrib.messages',
    +    'django.contrib.staticfiles',
    +    # Uncomment the next line to enable the admin:
    +    # 'django.contrib.admin',
    +    # Uncomment the next line to enable admin documentation:
    +    # 'django.contrib.admindocs',
    +    'polls', # <- YOU ADD THIS PART
    +)
    +
    +
    +
    +

    Setting Up the Database

    +

    By now, we should have some guess as to what the next step will be

    +
    +(djangoenv)$ python manage.py syncdb
    +
    +

    This will execute the SQL commands needed to create the new tables in your +database.

    +
    +
    +

    A Word About Development

    +

    These models we've created are not going to change. This is unusual for a +development cycle.

    +

    The syncdb management command only creates tables that do not yet exist. +It does not update tables.

    +

    It is easy to get your model definitions out of sync with your database.

    +

    Django provides the management command sqlclear to handle this. It drops +all tables, so you can run syncdb again.

    +
    +
    +

    ACK!!!

    +

    That doesn't sound very nice, does it?

    +

    We'll learn a better way next week

    +
    +
    +

    The Django Shell

    +

    Django provides a management command shell:

    +
      +
    • Shares the same sys.path as your project, so all installed python +packages are present.
    • +
    • Imports the settings.py file from your project, and so shares all +installed apps and other settings.
    • +
    • Handles connections to your database, so you can interact with live data +directly.
    • +
    +

    Let's explore the Model Instance API directly using this shell

    +
    +
    +

    Model Instance API

    +
    +(djangoenv)$ python manage.py shell
    +
    +
    +>>> from polls.models import Poll
    +>>> Poll.objects.count()
    +0
    +>>> p1 = Poll(question="What is your name?")
    +>>> p1.full_clean()
    +Traceback (most recent call last):
    +  ...
    +>>> from django.utils import timezone
    +>>> p1.pub_date = timezone.now()
    +>>> p1.full_clean()
    +>>> p1.save()
    +>>> Poll.objects.count()
    +1
    +
    +
    +
    +

    More API

    +
    +>>> Poll.objects.filter(id=1)
    +[<Poll: Poll object>]
    +>>> what_polls = Poll.objects.filter(question__startswith="What")
    +[<Poll: Poll object>]
    +>>> mypoll = Poll.objects.get(pk=1)
    +>>> mypoll.choice_set.all()
    +[]
    +>>> from polls.models import Choice
    +>>> c1 = Choice(choice="King Arthur of the Britons", poll=mypoll)
    +>>> c1.save
    +>>> mypoll.choice_set.all()
    +[<Choice: Choice object>]
    +>>> mypoll.choice_set.create(choice="Lancelot of Camelot")
    +>>> mypoll.choice_set.all()
    +[<Choice: Choice object>, <Choice: Choice object>]
    +
    +
    +
    +

    Enhancing Models

    +

    It's clear that the representation of our objects leaves something to be +desired. Django can help

    +

    Back in models.py, add these methods:

    +
    +class Poll(models.Model):
    +    # ...
    +    def __unicode__(self):
    +        return self.question
    +
    +class Choice(models.Model):
    +    # ...
    +    def __unicode__(self):
    +        return self.choice
    +
    +
    +
    +

    Model Methods

    +

    This __unicode__ method is a normal python instance method. You can add +other methods, too (still models.py):

    +
    +from django.utils import timezone
    +
    +class Poll(models.Model):
    +    # ...
    +    def published_today(self):
    +        now = timezone.now()
    +        time_delta = now - self.pub_date
    +        return time_delta.days == 0
    +
    +

    Save that, then start up the Django shell again (python manage.py shell)

    +
    +
    +

    Check Custom Methods

    +
    +>>> from polls.models import Poll
    +>>> mypoll = Poll.objects.get(pk=1)
    +>>> mypoll
    +<Poll: What is your name?>
    +>>> mypoll.choice_set.all()
    +[<Choice: King Arthur of the Britons>,
    + <Choice: Lancelot of Camelot>,
    + <Choice: Robin of Camelot>]
    +>>> mypoll.published_today()
    +True
    +
    +
    +
    +

    scraps

    +

    testing

    +
      +
    • add a basic test or two for our models and run them.
    • +
    +

    django admin

    +
      +
    • set up basic admin
    • +
    • customize to include an inline for Choice on Poll
    • +
    +

    writing views

    +
      +
    • start with urlconf (in poll app, include in root urlconf)
    • +
    • create detail view for a poll. Simple template
    • +
    • add a form to vote on a poll.
    • +
    • create a form processing view which redirects to the detail view
    • +
    • add a class-based generic listing view
    • +
    diff --git a/searchindex.js b/searchindex.js index 800f8751..678be493 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,instructor:0,flask:1,tomayko:1,program:[0,1],present:[0,1],sens:1,spec:1,introduc:1,fax:0,sourc:1,string:1,far:1,util:1,veri:1,word:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,small:[0,1],pleas:1,machin:[2,1],outlin:[0,1],representational_state_transf:1,core:1,htm:1,restkit:1,design:1,pass:[0,1],further:1,click:2,even:1,index:0,what:1,sud:1,section:1,lightn:1,brief:1,access:[0,1],"new":2,contrast:0,hasn:1,full:1,berkelei:1,gener:1,learn:[0,1],here:[0,1,2],inher:1,along:1,search:0,technolog:[],host:1,prior:0,base:0,pick:1,implement:[0,1],chanc:1,ourselv:1,via:[0,1],repositori:[2,1],extra:[],apach:1,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,kessler:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],few:1,live:1,recommend:1,tell:2,memeori:0,relat:1,downtown:[],appendix:1,templat:1,particular:1,postgresql:1,must:[],topic:[0,1],account:2,retriev:1,valuabl:1,prepar:1,work:[0,1],focu:[0,1],can:[0,1,2],http2:[],purpos:1,quickstart:1,process:1,smtp:1,indic:0,autumn:[],explor:[0,1],onlin:1,differenti:1,cours:[0,1,2],winter:0,anoth:1,write:[2,1],concis:1,low:0,simpl:[0,1],product:1,mar:1,resourc:1,attend:0,clone:2,after:2,sundai:1,lab:1,befor:1,attent:1,mai:1,philosophi:1,data:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,minim:1,assign:[0,1,2],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,how:[0,1],grade:0,offic:0,complex:1,rapidli:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1,2],good:0,"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:[0,1],doug:1,our:1,happen:1,out:1,accomplish:1,network:[0,1],open:1,publish:1,content:0,dso:0,internet:[0,1],integr:0,advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,zodb:[],org:1,care:1,lucumr:[],place:2,principl:0,think:1,first:1,origin:[2,1],softwar:[],feel:1,onc:[],qualiti:1,date:1,instruct:1,restkit_:[],horribl:1,fantast:0,differ:1,"long":1,script:[2,1],top:[2,1],system:1,master:[2,1],zeromq:1,"final":[2,1],schema:1,option:1,relationship:1,tool:1,copi:2,took:2,employ:0,part:[0,1],pars:1,mostli:1,eibrari:[],than:0,provid:[0,1],tree:[],structur:1,exampl:[0,1],project:1,consumpt:1,comput:[0,1],modern:1,ani:[0,1],have:[0,1,2],tabl:0,need:[2,1],django:[0,1],techniqu:1,equival:0,note:[2,1],also:1,ideal:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,usernam:2,object:[0,1],reach:1,most:1,plai:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,doe:[0,1],determin:1,left:1,wsgi:[0,1],abl:0,beautifulsoup:1,bring:0,session:[0,1],corner:2,find:[2,1],shield:1,onli:1,just:1,explain:1,configur:0,activ:0,written:1,should:[0,1],jan:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],familiar:1,express:0,curiou:1,becaus:2,repo:1,tcp:1,requir:0,truli:1,email:2,rfc:1,common:1,contain:2,where:[],view:1,wiki:1,certif:0,set:1,knowledg:1,see:1,result:[0,1],fail:0,close:2,databas:1,review:2,wikipedia:1,urllib:1,label:2,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:0,across:1,altern:1,ftplib:[],extend:1,job:2,jog:0,solv:0,come:[],addit:1,pymotw:1,wsgiref:1,tutori:1,mani:1,com:[2,1],point:1,overview:1,unittest:1,rfc2616:[],walk:1,tuesdai:0,throughout:0,admin:1,uci:1,creat:[0,1,2],armin:1,hellmann:1,compon:1,json:1,basic:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,educ:0,those:1,"case":1,look:1,solid:1,servic:[0,1],cursor:1,defin:1,"while":2,abov:1,wild:1,python_web:[2,1],real:[0,1],pyramid:[0,1],glanc:1,briandorsei:[],unit:1,cherrypi:1,lightweight:1,minutia:0,sever:1,develop:1,xmlrpc:1,author:1,make:[2,1],week05:1,same:1,html:1,sqlite3:1,pai:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],effect:1,kit:1,student:[0,1],extern:1,stack:1,appropri:1,entri:1,coursework:0,well:1,person:1,contact:0,thi:[0,1,2],choos:1,model:[2,1],portabl:0,latest:1,protocol:[0,1],execut:1,rest:1,weekli:0,scrape:1,human:1,mysql:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,add:2,blob:1,app:1,homework:1,build:1,week02:1,applic:[0,1],week01:1,march:0,around:1,week04:1,format:1,read:1,httplib:1,arguabl:1,know:1,world:1,bit:1,licens:1,uwpython_web:[],like:[2,1],specif:1,manifest:1,benefit:1,either:1,popular:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:2,satisfactori:0,week03:1,server:1,librari:[0,1],virtualenv:1,guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,select:1,refer:[0,1],cgi:[0,1],cgi_exampl:[],investig:1,run:1,usag:0,confer:1,step:[2,1],dissert:1,prerequisit:0,januari:[0,1],feb:1,chapter:1,about:1,actual:[2,1],socket:[0,1],constraint:1,microframework:1,commit:[0,2],disabl:0,fulfil:1,own:[2,1],visit:2,washington:0,easy_instal:1,curios:1,assess:0,orm:1,foreward:1,chang:[2,1],your:[0,1,2],git:2,log:2,wai:1,transfer:1,support:[0,1],submit:2,why:1,avail:1,start:[0,1],interfac:1,pocoo:[],suit:1,forward:1,fork:[2,1],bottl:1,form:1,offer:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:[],link:2,gain:1,rfc1945:[],pull:[2,1],made:[2,1],wish:1,until:1,url:1,below:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,evalu:1,request:[0,1,2],pragmat:0,parser:1,lectur:[0,1],file:[2,1],pip:1,want:[2,1],mashup:[0,1],when:2,virtual:1,field:1,other:1,rdbm:1,test:1,htmlparser:1,you:[2,1],repeat:1,intend:1,urllib2:1,consid:1,sql:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,depth:1,train:[2,1],ignor:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,instructor:0,flask:1,tomayko:1,program:[0,1],present:[0,1],sens:1,spec:1,introduc:1,fax:0,sourc:1,string:1,far:1,mcdonough:1,util:1,veri:1,word:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,small:[0,1],pleas:1,machin:[2,1],repres:1,outlin:[0,1],representational_state_transf:1,core:1,htm:1,restkit:1,design:1,pass:[0,1],further:1,click:2,even:1,index:0,what:1,sud:1,section:1,lightn:1,brief:1,access:[0,1],delet:1,"new":[2,1],"public":1,contrast:0,hasn:1,full:1,berkelei:1,gener:1,learn:[0,1],here:[0,1,2],inher:1,along:1,search:0,technolog:[],host:1,prior:0,base:[0,1],doctest:1,pick:1,implement:[0,1],chanc:1,ourselv:1,via:[0,1],repositori:[2,1],extra:[],apach:1,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,kessler:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],few:1,live:1,recommend:1,tell:2,memeori:0,relat:1,reign:1,enhanc:1,downtown:[],appendix:1,templat:1,particular:1,postgresql:1,must:[],topic:[0,1],account:2,retriev:1,valuabl:1,prepar:1,work:[0,1],focu:[0,1],can:[0,1,2],http2:[],purpos:1,quickstart:1,process:1,registr:1,smtp:1,indic:0,autumn:[],tag:1,explor:[0,1],onlin:1,differenti:1,cours:[0,1,2],winter:0,anoth:1,write:[2,1],concis:1,low:0,simpl:[0,1],chri:1,updat:1,product:1,mar:1,resourc:1,attend:0,clone:2,after:2,sundai:1,lab:1,befor:1,attent:1,mai:1,philosophi:1,data:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,minim:1,assign:[0,1,2],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,how:[0,1],grade:0,offic:0,complex:1,rapidli:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1,2],good:[0,1],"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],choic:1,term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,gui:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:[0,1],doug:1,our:1,happen:1,out:1,variabl:1,accomplish:1,network:[0,1],open:1,publish:1,content:0,dso:0,internet:[0,1],dive:1,integr:[0,1],advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,zodb:[],org:1,care:1,filter:1,lucumr:[],place:2,principl:0,think:1,south:1,first:1,origin:[2,1],softwar:[],feel:1,onc:[],qualiti:1,date:1,instruct:1,restkit_:[],horribl:1,fantast:0,differ:1,"long":1,script:[2,1],associ:1,top:[2,1],system:1,master:[2,1],zeromq:1,"final":[2,1],schema:1,option:1,relationship:1,tool:1,copi:2,took:2,employ:0,part:[0,1],pars:1,mostli:1,eibrari:[],than:0,king:1,provid:[0,1],tree:[],structur:1,exampl:[0,1],project:1,video:1,"function":1,comput:[0,1],modern:1,ani:[0,1],have:[0,1,2],tabl:0,need:[2,1],django:[0,1],strength:1,techniqu:1,equival:0,note:[2,1],also:1,ideal:1,contact:0,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,usernam:2,object:[0,1],reach:1,most:1,plai:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,drive:1,doe:[0,1],determin:1,left:1,wsgi:[0,1],abl:0,beautifulsoup:1,bring:0,session:[0,1],corner:2,find:[2,1],shield:1,onli:1,just:1,explain:1,configur:0,activ:0,behind:1,should:[0,1],jan:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],familiar:1,express:0,curiou:1,becaus:2,repo:1,tcp:1,requir:0,truli:1,email:2,rfc:1,common:1,contain:2,where:[],view:1,wiki:1,certif:0,set:1,knowledg:1,see:1,result:[0,1],fail:0,close:2,databas:1,review:2,wikipedia:1,urllib:1,label:2,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:[0,1],across:1,altern:1,ftplib:[],extend:1,weak:1,job:2,consumpt:1,solv:[0,1],come:[],addit:1,pymotw:1,wsgiref:1,tutori:1,mani:1,com:[2,1],point:1,overview:1,unittest:1,jog:0,rfc2616:[],walk:1,written:1,tuesdai:0,throughout:0,admin:1,uci:1,creat:[0,1,2],armin:1,hellmann:1,compon:1,json:1,basic:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,ador:1,educ:0,those:1,"case":1,look:1,solid:1,servic:[0,1],cursor:1,defin:1,"while":2,abov:1,wild:1,python_web:[2,1],real:[0,1],pyramid:[0,1],glanc:1,briandorsei:[],unit:1,cherrypi:1,lightweight:1,minutia:0,sever:1,develop:1,xmlrpc:1,author:1,make:[2,1],week05:1,same:1,html:1,sqlite3:1,pai:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],effect:1,kit:1,user:1,student:[0,1],extern:1,stack:1,appropri:1,entri:1,coursework:0,well:1,inherit:1,person:1,client:1,thi:[0,1,2],choos:1,model:[2,1],portabl:0,latest:1,protocol:[0,1],execut:1,rest:1,weekli:0,scrape:1,human:1,mysql:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,add:[2,1],blob:1,app:1,homework:1,build:1,week02:1,applic:[0,1],week01:1,march:0,around:1,week04:1,format:1,read:1,httplib:1,arguabl:1,know:1,world:1,bit:1,licens:1,uwpython_web:[],like:[2,1],specif:1,manifest:1,benefit:1,either:1,popular:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:2,satisfactori:0,week03:1,server:1,librari:[0,1],virtualenv:1,guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,select:1,refer:[0,1],cgi:[0,1],cgi_exampl:[],investig:1,run:1,usag:0,confer:1,step:[2,1],dissert:1,prerequisit:0,januari:[0,1],feb:1,chapter:1,about:1,actual:[2,1],socket:[0,1],constraint:1,manag:1,microframework:1,includ:1,commit:[0,2],disabl:0,block:1,fulfil:1,own:[2,1],visit:2,washington:0,easy_instal:1,curios:1,assess:0,orm:1,foreward:1,chang:[2,1],your:[0,1,2],git:2,log:2,wai:1,transfer:1,support:[0,1],submit:2,why:1,avail:1,start:[0,1],interfac:1,pocoo:[],suit:1,forward:1,fork:[2,1],bottl:1,form:1,offer:1,forc:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:1,link:[2,1],gain:1,rfc1945:[],pull:[2,1],made:[2,1],wish:1,displai:1,until:1,url:1,below:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,evalu:1,request:[0,1,2],pragmat:0,parser:1,lectur:[0,1],exist:1,file:[2,1],pip:1,simplest:1,want:[2,1],mashup:[0,1],when:2,detail:1,virtual:1,field:1,other:1,rdbm:1,test:1,htmlparser:1,you:[2,1],repeat:1,intend:1,urllib2:1,djangocon:1,consid:1,sql:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,depth:1,train:[2,1],ignor:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file From bb33c234c0ffdb835faf0aa37391010f8575dbcd Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 11 Feb 2013 00:50:30 -0800 Subject: [PATCH 039/114] add images for django presentation 1 (week 6) --- presentations/img/django-pony.png | Bin 0 -> 63811 bytes presentations/img/django-start.png | Bin 0 -> 31371 bytes presentations/img/django_lead.png | Bin 0 -> 50583 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 presentations/img/django-pony.png create mode 100644 presentations/img/django-start.png create mode 100644 presentations/img/django_lead.png diff --git a/presentations/img/django-pony.png b/presentations/img/django-pony.png new file mode 100644 index 0000000000000000000000000000000000000000..b1b58ab7a00f259b76cb5f70a344394d34d9a565 GIT binary patch literal 63811 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

    QOERmOdXqT_+)d282e2c1WG)twCD*o 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

  • &d|O0H0l)5i(;2_Pb#Mj$)ib0z$;(4Z~rz$otvvtakUxzimz* zpO{<_?{d<_rL;Rq)snkkyPFh17#d03AqazA~7x`|HCekJsM+{LNy8$fCCn6gho_WAw~-dMTy^L=w}ojmWp$qBhJKkrx5Ue|SKT}A1JvLky=nark4t?t3u#S`-q zlH=prj!u4rW@z8USU6gBjdKOUf!6T z7B^;ow!`Wm1jMlMlrG8$PY7H3^!(9ta}RH<*!g+sCvU7?`_A{%mKH5~WO_zX3LEa_ zr#@&G-P@u+zP)f^_^pX$-~g$YEHbK>U|rHx9BQmCbv)EzEt`w^FDsy#K3{tAFr zC8dDC4ro)4`3eUD+-YD}b!F|ZU%p+Ul$iT0Xn!Szm#DQYRY;OY$El-~)n8K^_8p~Rae}Cfe*76tcc{?T{ za{R2k@mCe(&&mq!_I_y&bFZbLs-^B|Q_bP})8!5IHLYf=MJJYyON%YZ8k3V6nGmTY z#1xi$R%d^0dtm7;C%O=vSqAuy}c6 zycsIM_rvz~;97cGr;zBBvc|r?p5{JdxA}5r!sUNjdtmeN`~Kfe$)n>f1}ieF2sa^B z`~-3s#4=HQc64`BZ*Q9(ZNL(ZWZc5MaSQT#TKZ0xo~_(*=J58aEz9>R!q(^GwH6q!?%87;8>3~cgQi*`bXk>tL{P1*??jH*ln7z0an5Cb5nRH{ zxh&g(iXEUdb>>SzGV(e=-#%4ubo*Z~+P5Eapt(!EbaO{HIz78W~ zqPn<5KtN!`KJrrcbC8rElIhLVb*|TLaky+QL7A;$-_>&%iL!*bQ$#>rrs8PU%R2FwXdVG zx2vtMyHnrOsyFD(cIZUHK_!qxYUCvukqJ6YVx%fcr;H4fMX03$u@Doj(+w=n5Mn2^ zGZR97M`i%>3mnL!$#c!1FL=L#kpG$x67cn%xMC{QZRDagJ5Ii{_NW^;AN|)a7d<@v zGUUKBhZ~;1?#-^IzL?kur1lWV6cjM1S_H1^k;p|djZ~Kuo;xLd-27Zzy?TB=0Epho z4;FlMIo;jOz4~?&+B*o6DLEnu^c2Y2hi+&!*g6_|&XzYKeYN3eb5EDv0h~f1rI5(A zk?M$KZB%M_bc!w_FvqzJ%@ChkjW(n&7<#`kB*l>M5&?mn5NQ>X$Z%y`lqw-oouE@isbvaKqnUKFyg8*XcRDH+O@9#1>%?s|B_Si>vU2YtBuA=47zxel=>Shv% zAf_0vHbEmj!CUBp)Cn9bBmof_6P`CCWBj6m-02w+31K6+oy}zTu*8TbjJONnR>1=a zXRFcP)1pTl0%?dl$a_)~ar;972De8{MFYe_olU*1H66{T+S|@_cC_{AdyE#N)k@n% zKqvuXkw}Q9N>cIQ($+ve)rDzwH>{w=`pV#eP+0=wtmv1sjBs_H@|(NvOYT^YIJHu zlt!kOiaqsm4wtLfZ13o^GAJ!>cTbKVjslMa1!5s} zlxoCs5J}O#R)bWhNCAo@1kqY)B-7oNW)k=)QXry83HlKUWnz(3LdivxLMoO?g;KFlA{ENe zCt^x26ylAB5-^0ww03hdrkxiBaKMPdzzNpDpAV3VJ;3!Z)L}!Cgab1n8Y1e=RfpCd zs+AIgKX3b8{>-e)gad02HNJf7yA@~ZCnYBR{-%`E|b-bbS5WyMKRI3d3R4)^4Q#=!~l?JLaZE@8GSyHbi`Mk4L$MM(L)4TK~!Wx ztk`ZqC%Tb>$`tGRlwnU_L9Bk0xTXOMNr3<|9y74*Dxk-`Q z2$e)kV%Q5Bc$?39KyUl2SG^ZSKkoiEL^R8Ha(NE9hw$I?e)mH8Te!Y zA(x5cqt)Yc;${^jW+#Trg(OniOg36?vXt#Ud2C&kE?yg#85L@7h-Z-{hL|uqJwkkb z&JUzFA|B90tA@A^=qQmysM0Brh({decDj&JN7K;5iav%!0v3sAx6|!(xX^6XQObf@ z*#$GR!Xq^%tD~y1eS6v2t%vK5*R*zanV{W`)iFV zvRtGgB8R|)1R)Vq`>R^?Hk-@roPKMGNOCDc8=csFTHkIAj}JS~>mWUC<6Arae*Z_U zz54lCslUIuM5B}ermixi`wCGN_L9>=N)Q(lR+1YxAv-oHTuD2j!RT)2=qUa6n9JzQ zot(}w_GlMv=r(uMcN;oPXy##2=Y^5~b_bD_orFPiCcOg<5nG+?X@to8sT`VbWRmrO1bq4ho0)@$i8r{yOk=3k1{F^!cija4m~ zB`N3SK({*If9&fI|FqiZv@ac-^~m)_3b`0}egr`&6n;CK6(@pT_nkr^$w<;o9Ti`g z8le=W(5;+dk*cVa@bePm5Og$j+sqC% z5^JgvR`epBQz925R#a%^A~6MV_zg)w+6U|8n<4r?+CdyP7bOyC<1{IS38QD_lq|^4 zFHX}&X!`WF%G2$8PoLXy`0Rm-=H_mL07A7)Oi6_V#dJIM2t$JL+7SIXE?(D5e|XN@ z(w*Z1@wxbkfR@w&z%76k67+q`x-4M5G&TfifW6nhto|bj@AQ0svZE0k;ozyp?~d0UsAz5JFbLdkxkQA!?IPLeQB6JU#0jbS0(TIy_>%~1_P}}_ zG^@KqfYILnnqc6$_!J*MvwKDOSj)$&tbNuuF~G8N1Ln*+*Ngd!Y!=@&i2%eJ&y~HB z(C!XUu7c|=AkfIgN6xhOm>fOzz4oRT1e)>ix{BA9y?^A$ zDXmcX!2E(6XO1Fh#`XiOS2ds@;`s!vvXHDe+4}Z|qwyKh)8-c)+jHW?zB37F(Xm+! zOdD?gEN-l7{ra^{GjAy#aY9mWOW%sWZq6K^BvFcybvLMMbQs)-bV;Q|8ID`H$dqD= zA~DywXxa@45BIQqsvf)1WyhHSnkZHJ_~bG3a>mZcO3R9qibM_dT}SF$x0g2`t7+@# zHX$ulruEgBSKL1V_BFvb$_eS$9toLb7yQS>^WA$vJUxh!5Q~MUtOBySiX%*34f{81a2py|@`M zUf!H+yUC%BREVV`)CEH2382rAH7k~h6k3@|Cs(LtLNVe-;OoIB4LzPK}kejhw5c)6S{}8E9w-I zofS>cO*B=v7EI5IOb)-)9%t{@N5bR7k_+O7eoA{?=f58K?CXDRwm4nm6JnmaX~L+C zC|r4c{`4RgcI(YAe!l;7Z{IynFBvmG*J7|`O-ND76^C|IoGh(N%S%iho3Q<}eMdG{ zJo@3CxZ+_%qvk;Uw{L8_`nR*0{^w8`E*}9Cb~p7_Y_C!2l!Llwk!mWGP;#{tal2Pp zC9xM2x*=jo$kJEQK+K7AXc)}G=F^>#5_tQ4C?X7C9I@_fZQ_+!X z!G(&v{q&e{&MyaY{rP07n^vl&&7Hkb{`;Tq!KeeKvyk+tYg+ouq@F}af-=J2G*b-UeBq?A}qcKVt%?d>jBw4zbA3yP=^;J@7IdTd{?pfGuRd6U~MIJ~X$`w#cey?62@#e@!Q;C044rV^;2hk`(Mjw>kK&fq;6mP~|H9cDayr)AXC)9@$b`yI|3T zt9~`hX?J;oZ|GmU#WCxS5~)J;#fuyM@%xW6Mkg-1Z^n7-JBLmmuD|-x*-oVUF_H%k zrbQ!>rSCA7?>JSu=6L1qn(kgbWhY6BY&0}KIrVQjlTxSMQZi;%HYFKGoup7qp&z+M zinCwbZkNN2bWw-ZX}3DiFD|FsX?J$jcjXpExZJeO>LN)ZK2deUviynDl6Gu4vv+s> zm!;Ji(W+TRso1AA0Jj9!_zenk=JT(>5g3ACK-S>htb=Ad@C8G{TkuZT<;qG7pH&dI z_E^0T5X)a&n>Q^ZCi7B35VDyah8|NWOm+6C+I{+ek9~doa19N}lEj1u=I5uU=mI+L z3~@pD=~006ig(r@UsX{(ckcMx|FQ%S(Cu*h>?PVo+pW%`#RdCUAMZK=F*wf0*mL8f zi^Ag6BYR|XujP~fTT`?+KO#YEF<2N+HgvoAWrDHW+kI)AZ4aF!x8lB5aZ<4qOI4^@fFsTP$X$$BpA)wx@9= z@!P+zt!p-z%r><`3S5w@+VQKVOnw{z171PED+_TJ2ztMPK|`(x1+1_H5rj)f5Zv;` zVAYh(N)Y%%@l42+;s#H6q$jHo*zSzcsqUUP>ZPv_QG{g2iqiB~l5Tiv!KJ{2t*6?p zM!PN{WbEYd`if8gxVo(D45Es0adCIf&MENpzVZUe!9c|lcw@@^8cOia1#sYt#2om+ z{_^as#AiN#0Ey+M>NZZ63{u++?Zyos>=X)wzx>N}Bd$g4INQDMU)vYnGd(^p+N!ro zWMU+6Y({%aO~<*a*4kqYwMQDymN&OFb?Z$gCvb@X881^$EXeFO*edJ04(~c;&|Bu; zJtb>mD%wWvm=&F*P!O4>TbMb0%8ldptvb5t!(9i~9lznR1xp{FC)di(=j|L>TajB3 z0Yn0&Myybadb=!L?G~h*qwUGbZ57%KwT3T9 zh@`QanwY*!x6qYc&Qy?ibUtT6@i#%FoeO z$6LStOdG2?A9_0fVdygN{`m01N2YNQ8CuVDe*NbShqhKUHg_rr={0%j*H6kwi`U|G zSx++B00m~ekMG~fSeZu@NehUNHdi7Um>3=X%%}G!kBvuS*=Dk{1s#M?s*oT7wei0@ z3r1&O`^9ozWB?vWK*|VFlu8z-jZBMDr^l!hqSUcr zatSi+&?BIywmK+*V8+waP$9m_c;y4^GEwWLHqia|L$4+&uwR#nvujF z9~bwFsTt!kqe+3l-}@>Ua*Ol4G#$`ljwvhXU!s0DwNL;F@Bz|7OUqM}W1sot{;Wx< z9!Cg9zVLN5fmjiB*qq8u^qw?BVP za$amlW3Sa--L>U|y{rGT_2~Ah`(L?v!qQ4u?9v>dgXa+4D#3Rg zfg351-6%hW4a>3Pa4JOPV@nFb>La^qTF;$sdw%ho550Bkge7AxepyO$b^8~8SvULI ziJ6m}W-PM#?i^J?L>`&@S58YbMw(D*+*vinhGB_sG%88}FH4vUKDMJhBE?zq2zx zCi2$lqrxOqm|U!p2}S7XaOn`?E#yOl=y3ZVHn>|Ql8R2ZMk-o1D|d2s%!gY}Zd-e> zY;Voo&n=mI?-aM&-PzcSEKHZ(WpbI33VqF^b8;r6Eq`ge`@d_o37VnI z_PhV>kCebslaq0aJuc1))Pzgzc2`fgzO&1cAFstWg4@jl2?GE>jv%`)=Kv84UYNrX zyH5x1z7#Uf7gEP0pPRJ|jI7Ni4TT~KZKZui+v#?b$!Iya{xySr-~HQSO?()}25~q!>KR1| z(1x{tS7T|_xvL72$D~JsOWZ8H-~(sO%(@+nxYw*3BE58cW{gAts+$dFo1xEYgKb@>dozlX?s#y~uim>|&dU5WcA5IxjD*0;gXn)^h4{O7cW+p|>lgPfT>9kv z^LgskuWj48`S2Z+M&+eOGWmwQQ-#3=b3qQiz~(_1M37dgq*HR^6omL-b@TUY4q95x zIg`?)DhZO?>PQ8Sf*@8j+oMw>$IZ=i8C+Yx-gkISMOdUNAt#y$YK-&#?^jXn9d|xH z8RJ3;g}~{=MRRO}4b4_AI#JgC`SPPBDN)x=OeeVkv%s1AP(wM777R2Rd@cuR)F0gA zg%Bk|oZ|VipA2}yiG&~H)OQ`0v_G$Q`v1cod6W50Yj%BA>dOMtVbjdSq6lrlwWD zb8ki6o_ZwfJa`$%%20;O5kn$TFBDUw=j6o3NA39b$kwk)yJ~up^W)g1Sf4((zHwW{ zuV0uY(yD++0$eWq<8%h}BomV8&-edvprNtnfjN1}F`7V9BzT?%UZBVU9R7DO^!Ec- zJPmwepd>uM;dD!7qH!5fg~{P&yR%d8u)5vN=Q@sVsoeMV(W+f%%)J(=LV`#Tsi`BY zg0dQH!vH%v&sZ%*#Ku}NuhVQQ(EKzpt82Qw-V-HWMR z$Im_Y)m~a7`Tst=f9`!#I9hjKyRoms=xy~3fk-Aac3J-W%-1~~`lmj*|2!SYyO$qc z`O)_`PslFLj>A=;gD>Oo7n;EujEe~ypAym5Vcl6-bA0WIq^#IjCO;9eB4R%bgb^;6 zDka;$JQ8o{85Jkrw5@vAisKToD0NH%gz&>>)|~qG@NZw5r%8zbPzVG}Zx%NLHp5m& zRgyjHPyhGhgNsHb-ZUla!qDLb7#CMn6;T9yVG}UfN2ELReanbfNYf{qdbgG}9;xeW zH(Cj=xCBb6EFmu@eOyvnVPbq%v^r9W%n6xViY$#_wnW>l)o3^OnDt$z#;WG(eYJ>_ zn@_i!7&MMFm1aRv()`hhDy7s52us6Z>iWYu8kgr%Pykl#t$B0%v8?>mr#`qlWn3cH zwz9h#s#;tQw+DFu{VSFTKYe!1hBZ4MeEODUf4%m6UY5;Ze|o{|wFm0nd0qSi#pEfpZN7!eTU^=_s)pb z$}tlXLuQi^o58`#?Mix0BY*y#VLv@vhY6u{Z2_?!%xh6`b(kYZ`TnHnSP$G$l zrlG^)uv;94K9ix_)Z1$4Yc-gyRyPI-KqiAAMy^~iCUO3lq)7DIklJan2L@jG+UWSA zd>jWiC;QBYL;`)vXaA*yl*#UVcXRpb$}{tqPJZx>o5J}V^u28cr_JS!4H7`A5byk? z^t&~Cr_CI{^oe=rxnoxCIem10&C-I@m@qjb?Sm?12v*(|8zdJ5;^ca)GTv44SKkPL z&8ZYok6t|{LMi=Z|EX6W_{i96x$cSi=n#k9{pkxE+gI)U)eX@KB?+8xW|5*GO}hS| zVMS?ekJEA6HH8+7Q>GFDvk~p4Kq2>r?|c|AV$xx8{`-~PXPSF{KYMH}(qpZzAYfnM zH*|gP&Qr3)4%mi@4Ft#Wy{Vf7HxoE`i9CK|4?S>8lLBu<69GO2c0CO*>WmMh1Nd)5 zz~?srql3G#`0vNJ=dg|1P#vV8*XTsQv~-$k+70__TC19S`^*lv2hI{NCk_0#lMt{R zCcsZ$$lga{MIa`~D2;SdR@9ul_=IS+Hx9;$ehwV-;b1lgKZ0*536`HjfK||j*4|fE z9Rty^>z^jae{OQvAzd!haNGN=H+aFSk63>$f|8(7d zcC9}6+Rf7o(j&b2uAJPFfsvsH0L&dAhDK3%KP-$Z*>i) z?^qZikqL1Uj7J}*@QbQFXa8(l_x4l0(c#KF?j1Mh>P%dRfhbid#5SSXiWgQPL~Q(@ zzwG{e!?A19Q~t1YoQMGZ5|aHOfV&ljBFkWK>p@o_m|#LKAj^>xd`xhv0B;6J@ZEg} zC?y^y{2{yWVrT@M*^D^8OK+`e?m5-c*U(|=GFtUkrw!w!`#L20Fm&)nClm;zLQ*NE zqExcfDCMYx@PdRexkBm)i?5#T{TsJz@;cc~Dz3m2) z0oxQwg{B_MTMvCwU0wUkyARE~Z_0VjrLm&@?Y&b|7qkBy9YYDppHK)dU*2LJ7^CxnCa z6Xg}Ap%j=fT{F6fBuiqT|+nN^iUKY%t zFdzCG6*J4NR)QWqFc`yPL`8Y>wWY#tn`7m=^27TZCrwFiZ8nr1Z8X!)IVtgvEX<2Q zJnYe{2k4|5Y~XRJEATDz5(BU5IKVZBqTz=$c>?`LUn3JLB`-Hh_cBKB_-=Ao+ z8~^XkyB7Uw#=uNsH`|RpW|E0j$kftf8>_x~>$?bL*n@A}td3TmKND8%I9**Yk3xy8U=xw^$_71)^O`{a3qmVnu@_~;JaZlR>zd#o@Ic4^1k^5vjBTOzD47<%N}}e>j2XlR#G_|dUaq}k%9J} zA=rnZ60$i%LK#i=|Lr`rs=P5TTAB^iitxd?sISxHcGHLnC3107RqIzTZ?L%?kNkC6 z&Xn}?=Rn#;?_6~VZI*NM5{6+6589=f*VhjR1Ng8yiZY^~xpwr6-=O&&^WT=ew6fU+$T^GRF((@>&}?n%a&9sZA*{N z%9&S~1Wa~?ki2C|#`Vrrv6#`kY))`x1lWXE24vjpLULz$)9ah6?6mXgg)xif#}X8k zD+HUqID2Hvsfi1-L!E8zv)XM=iXuf~a^>H*96VGpt}yTJS8lve&W2rI9qzRoXJ+S! zM1n!22j`)DiF=;dG08-XJZ84T7nEZF{3#L)J=-30k)tFh_6djk#f=rOtZMA-wI@dj z>)Py9&Gxc-bEn;rs#N@8M%J`Zao!FKE{rLR^Xzb0Be=}nFuY9IkDl+(S!MUEVCP=2 z+FZc?I3@`0zd^7L>u;dp3%ml>#c&kPm)pv|BTH3c-_G+P42+`s14{iNKHpOSz;hTo z*5vt$p}*xjPyKiQnFzVyxur>Cr^N$_5;V6VdYxAwUHhLMB@427F;;0B8hXs=8<|Q{ zy6X6*PxeMB!yowj&6*2g3Ie9AcKhkLFoD_KR>sASS{5JfM_# z4@R>;+YL(3;y)u*U}lE@9_aD+)`5m@hDBjOCzb&JP5L*3mFTFV#7Xft2 z$zlfqSLVzYpS<(G=ymzaHUf3*}y_%49JHY;5zpJ1hi^>10SiyhaYSMwz zqhY`SBFgG;y}k9sSCtLL(eghmONyV60z`7q*$pgKbo{7n)vi@%zyI>soSVn;Fp1e= z(Oab|>AA|*6>n^E0Q+5kS(ZC3{X*@LM>bZTK6P$!PGWqRjFD_0fRgC`C82?TPxMsu zl0s0D3^XisCW#O;8#+uS29r|*Zd20^&U9dT7_f|i-HZI>=;?3*kXV~rkeC^zsckn{ zoi3$B7^RZLXca1j7$1mqPJcZCi!Nz4%o)3@5eqJfX1y$eeHLqj_PlqRLsb2*o8SXq z;*@Ck=+N69IM`LeVk$a_sJM5BTsmi8i(tPj_8efpItl@wTXJB>3&f!RhJ)%zfEi06|~bP}2-2PL6_Zvcnl zM;Y3QgIBY_kk1Ig4_ly4Nf{K zU7b&LuX$xF=K^jgZ8F$I5^DXM+YcYEEE+fJ&KIx0fD>%0YCXEUIz_H7OwYdttaJ zJ_3kjOharZ2E%u`{8w|(i)TjkZr=C(S7q!A7<`=sm`nM~r%Q-ecXB{=!YZ%^qhDkZ+!w8VqF$06J zr9ppz2FLn@M38_E?3Nl_iR`lv1+4l8-bNRkq-y_{oEm2cKycj&JIe1fmVyh+11q2f zL}L$5XPlO!jEE2eO5&Y{!-0h%%{Yy`iX0@xYSk4S)EdR7!myl~2Je9kK1UvmftB6P^4N?RO$rBq1z zHC4!NXUq0s5dO3Z7__hfjxH9?G+_Dmh@h^@%SWgGx@CPaWoFoaq{|W}7*3+y_f$=C1{syjnR;K_E@!=GcVorKb z!BzQ=07fUUFpP;;T%XtT`ENddX!-py2^zb_(c7Y5@ye#A&i18u&Rz7#^b5P2H&wSC z+j@F*Y*eC7#XyR}Aa@^+sRVov?Q3uw;D^BQaG=!y-rVV@He_vfn>|JD{j?s`^%h-` zy9Kju>UR{e+-w2lL3{zS8sIbX3;#)u#^mte?~AdwZ);wD%d zfADSx0y+`{B7{cm-ScS1Y3_7GuSdc2t=om8TfxKT9y?BJGIzdt>-)d`>H(RA{PyqL zjvYBUd3xd9uikjURjR$KkM+@}scD%w!0inW65MUe_Y207qx~@e^t%88n$O38#D&EP zPP7HMa}**VqWrE=H`AgRH&`M9nt`J$Qv^3z6fg<;o(KeF3Q&Fdlb}BeMdD%ng_DY|t9G&7~T*2Omh3D=7A48GeO_|?B4wT^#1R?PdgHb79 zoyhqLhL#{i(C4r}P6$GXrXl$mc|n8*;Gz)EGbAmZ_Y}Hc*$uH>h5CemN{JBZVZA0d zCSt^U7=?jVdm20}?x|CB_8p!7S@vFZZv37#M--%d%>4XQha0<^`UC_aRf(113RSo~ zJWj0+A9(|Mm(8_z#jz+-o|hCBVq<1G@oi3Aauufnu^JqckWv`=0%_DDlIIk3yi5qt zW&M#=0(6-$XA1hShIj^DCsF~>BPb<6LgCMm=H6ifjXgkb0TQwIojVz43}Rq~7-*zG zBLQkDkczNe#i4m8u99ohgBCqjfF;5}#^~pHk4Hx;1QBu&u3#QPh~u0d&a}F4yB?zz z=xuloz8Wrz9p5)u3lcOyD~A#hf$VvM4c`k*ve$yI;0?Nf!Juh|;!KA_rtna78%lkJ z)DV;$pH;vT_k%FT5KYuT@d!cCOX8|itd2GuJ{*o^?bX>}q(Xu=OoNq?Ar6Ok0!Te0 zLckrM53Tf^Sy6@!9q+t#5*?=tQ=VLV1O3Vs%1TT47S&wDh#$ zcQq>CajLeac~U||GGYU_n;TySY*F9_1#w_%I!M!j!CTeipaLRX_^auDUx0`rKG+8i zHDH=XPf?f%M#q7aa1fyclz^-6H0#0U6Zl|6;z$ZbDM3*(h*txh0))u`FWxNTvBqAo zvj!Y)#QOq!{)nR-E)c22H_eU$(JIWz0v=}}bhrt`b!YB}fG3|H3ua}3^a#M9 zY!U2mORFA~)`MNA@vZ$k5dj8j*EC{J5ghU{L9IORY9WTN8NI-B2!mk}!5VE1Mj40B250 zzUNmZnsBL1A@)F8KsRl-xr}`_eY^Q=ZTG3~j_vfy4Daui|+|q+)xN+W&v_IU^xUqhyv3U1q?Pe5?qtgz_Q|yDQsx_i`RfV zN-%uru_io|%t&z6U|nL+BVW0hVc_Bc5R2qkWpMC*=7(WQ@%o9m)2eby7@?fZ6Ay!zRJ z_;JZI@0gG`IhCZy0j8{PHEHKehi-q9!31Hli;pdz**nSH8kggj8mW&?! zc*KNgzj$XiUMRfF42PCrh(AN&X7Lgj5t@brd4U?LLJLBeiX#xqBiu-auZj=G#-x~> zlBzq<+xz_0A9;LoSfUybVjz|JZAdp$`;W9B z55gaWGP$T|R!Y&_w62D}T^njX``vPFX6%y3=42Nqhni;1!TP$&mWhcG@md)_3Lv_b z*$Jj)fZ+T%G;L%TA)Qmf*m6UB1&}WeY_emD_aO11?SQT8hRN}tohJUvArlT+n8>c< zsKsjzPi{or7I;Nyq|U0u%iw{#kT^Wg_4W51-nUxwK7P`AsK~?w~7|*;V|0ppGY4rOaS*z20kTLD1c&$;FYLf z9tD*xcoC37f%b^`xdARNWICc-m>pntCMXH)1%Np7U_G)n31spmYr(x!{1&Or1=f^- zvL?LLv$FuFgZGIR@J$)$v0yPiFB?l~_CTw&|192>1cKp_E{MV-f1qu-& zO2LZ_KENz_g*UIk7YdP{*9-z7;u&y2@lS9g9KLVebev8xGc)S5vc_%YrukDS(AA4w zf58bTrZ?EsH=rr6gf7DesjH1>06kV9 zA+Z8xbKpCwhfW<3^H_B|IMIr|i!|P$yjuX``Gy`0Y~y1>fdDt0f_yos)opkeKtdRC z@48AXi{iul2S^zpV1)=wNab!TpOk_Qpi`d5lR~Ja1)~|!@zt$j5P}V z0BDd7a6XZzYGj;jY67r zBIITT1m~$U$6qx%AzCb1zO$#J9VuY#z-Z#`ngmuvSMKcn?nLkCq{urT8jmd;i4+S= zOh67?QEsyjsh9vx8V8l zr1LZOJ%UCl6OzHTqp=LUy#&Zb zL(;Vnql(Z32plOv?9^-JT83!N?9=*SC~HB)~TSVdww+`JXsCw zjQMA=;9DaV6iGs2IH~Y97m_3ke>pZLLG||UzA*J!=ifci>la;L?gY+>DG?aB&E*ax zciKxy6ahFvNRtgqLJ8TwZ-&~|L*(*%w@4=a8u3X{0+^Tz62q`j$M2_sq2WkqKUvc> zw;dh92-p}k_p-;Du!Gl=cjkfBW1ocfM2zwXuoE@FuM6?6L9@Vu(N9|+7TRo;RW0qO z{!j%dkpB~ZvI`yX7Pu;FU~ZbPyptW?W8d17&){D`Nbxu)y}nxZY8gfD;b8!lz;)-1&up5T{k-ZbX(u56RpZ`sRypri7A#! zDHgPMIFKT0pdI(#Tr_@G3KC^_S#35}HtaBqQ9MERKI@p7sZS`yFF(Iprjks(VXWKf zI<)CzoJ5g<$draWE@dwsG66VPm3F4h!=P|Ga6p>~kv`(OWhG$Hh8d9c6Ou(k+d@hy zS3c`4-loF5&Pf5opNJTwfluwCv3V&7%qT{}5OY3@3567^7CeN*f8Yh;Fa`f9L1}Tk zmkoAMdviyLq2&e;7r-IO6PX#pE+?O_K`}ZhoK$zXlm&*!U9MJ)n#@>k1Bgw!OC0v9S+6KIz>jS0;~&aatT_ zPq$1@(8VKblQ%fwSCIlg#pu@p|E2~9v~hU9LXSXE{2Yj8VzgoY48|RYq4_hUokd`6 znL`E?>2GX0fd7`W!U6#U@g8_bfq-jGc)HL4A|z=Ig{lXyR~&NuEa-(&Bd6U9;-~yE z-J}6@rjQ8#uwayYJNfO2)>F-vTW9KK7b=A^!B^|Mww=_cMriJRe2UveR~~5T=(ONA z>sBX8ky5!ROe2Yml0`ZhG+$`laz*)8+zW69K#PF1k!bGdR)+TKaI(*@II-g7(6! zHs{fhfQnY*bXKH8dIX3oNZ0lFfjCc%wnFsO?6$<{ca1c_d_}`x{SiRPhI7L!Ku>;` ziAqd8Ie%1oglhTWhCi)t+I&Qr8!y{>+<;!PR4)1YgJZqtdK9EPTrQAF2&tHGxM7za zp0q)O4Y-72RkSKSH!80%CMiQBR*P}cqkU*?hK%;bcNU(0dfO+@AB&R9$0UReh;mQh za7eo$&>cd8S()H;I}Q>`gkEE8SPBaw(^OqRx@qZI@ZKJ;#pSKBxIm-Z%>86?8Yrz} zCeJumEDkQ)Ae9nLqtl4_kR5&;6^)}ZHpU2aGAZDk4&F$|ZtC-5sa&en##CtE>i}6W z#BjC(VmMpJuzFVUc3K^JBr|A+xR(pKp*VSbvUY8G)0XP?s&iKK@{1Fd1AQ2c6MuA7FdtD2`|g*|pt6m9_Ku}Kg`+PL&cQA9$l zG$BDYgNFJ($H`jro^OwA|F&w)E?9XNA+rSYy z)^>ubRxmy(Aec5e6^x0;;W9KyBoBEKGMVb6U<_4)@nmwe#A)gHQf&q-9>e88E#Y%< z4Yv*kVvk9i9tZR%28IfYl0a@WPHYe`+BGM49G@rvW*g4TPK^loW^q2qi@`c`m>gt9 zGHw{w*i#GotXM&XkSDerfMXV_WPD)TF*vs#4lQKOm4uMnl8OL4P;&&~ca*c8-2`B9 zG7G7V;7bqn(X#IQvcGLVv*6~@B{LI9WarpIXs0AW z+uR2ao>Ky0QG(W+a{~kYVC)_Nh>OtG)*J`OdgSyWN7N=44eXW;qVN9IKmy7WqVNoz z0^Bt*Wbl)KgD5qSH;h3r4kQ|9a_7cy6MAG~{4;>KMgnd38C-Ia6%}9^rbXbN;8E8J zc2wiIr7u`VgphAOlJ@!Vy_6&9Cqf^868!OcUqwF~VVMXN8<35;=s!--&l2p$FRXw& zWU&*30n_yy84%Wo0Z+>bG<%WyeL)DwZFm6sFG%!X&5v~n10q@kE1(Zq7xaf;AZrOY z_ksbD$$+m2e>(x1j?+lxK(MFM=rqzmFf`T9BP|g_I$>Ip{L!0YZyHVP`grequN*KK z96%AGr3@wLYBC%;)I2sx8^QLh5P*vk;wx{Lka+KZdnb;q4^}VDzH0^bCv&g_lTK>cpR)>jziv$tB?=gw~c&Ybv-+Ltd?7-Yq5JZTB=B>g(e9*o( z!7sHTpQo6UY7qFQ1J;gDs=*LAR2*c>P)`T=x{kPEMzpFRMs=vkw055!NCm@AB(x(1 z&pj$z_4^y6;`J^6e0FPfWj9cYc-B@(mLF;9GMT2NM&R~_bRfC}FCLGl;sNdSuWtdX zj)8XlU|R$2?Lvvp)dp1?TU`u&yTOP1KzY;Pww@1$81QMf?03hhnIai;8ckj-1V`$@ z8(YEgCT>6<&&SDiO*!4(3nF3Ist5o09_*_Pso^7Sd|w@S<9qCqkqEgY2ZHG#aH-*- z+1W$$@N=_pcz?g*9UWk}X@yL9>-gjo>nc9n){z(`EE=r<=Ha*;J>+P0Q>5VPnc*2{ z%&T78G5wD5ljbHf;eOU(E_&C_dYwp=6{{YeGhHgeB@1iIaE(ur79?n)PC>{-9`Ob3 zPQvWKo{4TV=rZDBbBY4A18~Y35q%qNUKc1j^4~i^MikcfB9(p?a=4+*K_IDOuwjpX zmkFDTNbfz<0lqroXBaejd>4V2L(v6yoB~xX-fabOU>}p@ z6i`eONMmp4#txwer{j&!`!3u#71n34Afer30{`6$zCQ)VCSaW$skJzz#*M4*&vs$P zM*n(}-QZ6Efbj|wh8_<0xRmfaOH%&5|I8b!+aD(dV{>J|I{YTV7&`-Gr7P}J3qSm{ z)ZwIOEJ*E_OIWe&Xf#wDZ_AI?#A_tj*c;vpWI!AcBb{gkl`RCzdL(?}2$^9NlThk# zftWCm5}3EyW5%@W(YHkm)grbjZ}#SqdGV)lsiePi0it*zg&j6cz2Hn|fH*{~<%^Z0 zn;vZpkZCyQR_MJK!N@~&&4wQAXYy*k1orwOtB)NlvAJ+&3|lewAmY?_;avdD1c^uV zbS}oXgycCT0OFq#VgI;uy@X>o9tw8RH;qrS*xer;t$+UW=0_Gq%^k16G~|H8p176P zMM&;mK>YiYQc@_GIxC6cL!5wi@IX_q)m)gEKnbZ~w0sG$_Xsb73k)HUJqelUXLc61 z=&rsS%QuqnH(-zoeFz}l4+R9Dw#jS(N;0H+=8;;w#-yF8bz<7wV}|h+zvEN~0hVv< z`wQeziIm0 z^7eCWP9P((ixLj=CE48CFwyO^RU6+cZ8+11)8EiVtgb_Q8|kJp^9?leHc7p`n_ zf(3bCS|;~^ie^m2Y&-$T;%$Nma7w`tRp+5nNny|r5{xP-j?QbDhNnoxA&uJq;{YY8 zU~*uwa=QU*zx+;J4+b2Qzvf|S_|v21E9&Ur#vwryOUEUrge%_NTeqg7=XitV#z|pw zi`5FbAUI|?$gt5#iL$vl*7eKFAAV*kkcsN6yH1?y$c$8{g)4Bh{fBu35UvCZN8y53 zj+?i-6>E$aQ+Y$mIZ|1dm0;mk(}s0XWQaPL;Ehs@gYQTeWk*@i#&q-?K0r?XTuJN- z6AopQ!ysj2Q*?igP_8`Mu=04zYnxhkR~m1dts9pu^FRX+btA+F!wF;6RqNZU$~s3) zi?2S?+SY4YIx!1dK~~p=?;(N6H&qAjn20f&I0K27ua0r$W!Q_6# zQI8`hI3jYY9s5xw!k;mHk_Ax3k#EVW8zdjdi&vK!}c;md%G)A zLu$1mLdXCf4lVylC?g$a`-vu3&iJ^m{(HEkq3_`-nHr>>(mwzzAkl}^yvANk-|Tw4 z7Cm@>4|Z%wMHhD&A;ynE3a3x}dW=I-z{7!Ej2E=m9E73zlO`<=Yzp<$VZuwqM0C@U zVe%Q75fL(RQ;&6TlfJaV(%J3ODoAaZ5Lc8BjgfR};m(6Slw7`MMMauMv2<)A`2)!! zPYM(=tB^dYZo^VYA;xGfpX|qhewpZElQm*OjSMTs)L{OI`YyapAbs@*6@x#zbMOii zj!Yzyq#!FkY-&olR3ND7Fdb+#>?<=jbvPAbL8OKvBm(U4B0@U}XdqMyYtNd${-(C0 z+q@({p&%)2c>U;yJA_QL4J249TX1#K!3M7u`eUj0Iwf|@2uXemwzUr@b0bx`-T0$T z@**-J0iRrnP2?+M1Uo3kWh3f4Oy3?qxARPAo5LXoWPXBdYMx?Dsw_H!l1NBzKXA7P zH;I+9qa?rF-2Jc3EfHeL%S*z=75+mE(}Jg2#wT>S8sQM zZWB&(Y3{=)_d*g-Y2LLn_s_8+X>U@2>5v)8lY{lvtb@C(eqKq{N70 zB7_ktN+}^piU|o}6Nu>PaQ^v|)6$dO*j(*qTbI$+ZL;^7 z9eS(N?xGc9Dm_X$K1C}P3NK+9c-g+ZE9&UaX80Pdk*v%w51y|l9n9I^*7M4^yqWMy z#>@|F@E|s$1Fc8E@|0c~R|GIlTXSEbhKng4;T7T=T!Xl*h8t2CPKyASkw^H-xH2xC gfy@)77BxtKAVCw{LxAA!G?JjfL-0UDaCdit6WpD~8;1amTX1)GZM1RMA@BFz z_h!wSS>Md8`R0$?eebQis&1XCvumGS=Z1b&kivLF{00sV4nz8j_%}E>1gV$v0TiT{ zUu#bQ;maSY?H5f4I5;$%zsD=M)by8|@8P7yKdZQ=A1-@n$2+auJkPF#v%P2 zYogST^Dcz1!?)AL$7d*p9}AQG?9o%ulW)ig2s(GV(VpG88yZzmf7}s4p$xzlMWO5h z9<^CJ!T;+#0DHsveFoJ(1p%J~q+ZJZ7QFhh^X1=qcs~XDIURs!D|CjmF4}Z_S5IIKmP13Az{+yF_{*@!uo~f-a(2w!wFhR;{Wu_ zn$h~0l)hOM10*C*P>6Nb%ObLw`EqPWVKxF5v__I`d={1`;!XJzGHolgo&se5)ya^> zZh6n0T>+7O;b~r-Hn;INi{&f(i2vBl?!LYVhvQ~f#C3T{Bk-TM?f9L>QCzI#gy%F( z!{FqjTh`cxH*M6OhS^$6i)dO}CYt~1>sWU6JT)>g_cWwYisFrkK#C&Mk1B1Vv2J~R z6nU8R6>NU6VNf2<^$ux*)17+!EszN(r$NT4j2Kr&0P!aK({MjR6TfPHj@W1n`hk@Z z$@zPgq=uXs)3}n0>R20Y6Pas=y9c9_i@Xd)?DdvAoQ3(P0MrPP%)E;eBGXyS1qdy* zcGED7tw!;mJ_4i{T_UHDr6UNtc0THQonIjyd6DcstGBYchF+=h3U&fojw#W6KU?xW z*ho6@u#`PP<%5J9#jj_pakVuh>O1bvq*g@!RQ0;=<8(bmL1XwlQl>R>$$ip{WTEfy zemorY-R*Uat{@6ZTc2vTDv)(e02?m}j`W)RN5&zWpp&^m@yOk_FY`U2BE2MU+8Qr# zphC%WIpG(Q!k6m!EUrZo?ltA#qHp2b+%}K#7X@qBg3U7Vbg^!fy@gDAMs<%gi zeA{*10z3T8Lxi|D=jvS*{sU>nhkv<9*K!UFAT@CB`n<;f>y15O(Y^WBU>co(Yif?q zP?rBN2A;UcL;ZS%jWZd$rgNsvxicJg{=KoyJb&D_$sEKo_~={^Ny0R^AY;%YZnccN z{BpnXTcp}!@FW58T+_X5?EOK~;Tms|rZc#~n{K+ zj@{i2=lSM*GllLck6s)5&niPD%r{t8;q6i185PFFPR93gV#30^(qNL{BzuYUWp3YTPCrd7y40rpSCmcCUS+sq+U)n`K zFd+sJwxoJRCT$>_?*x6NLp^$gL#riSd;9pNDRc9DlNltr$2k zZ>W1$PIgCvuu(wNN^*O~!!!Jx(2p(3eM=M?)JFcjIe7XUlx1Qff=h=&e!*9QML-PT zSme05lJY%&=%l7#Ed~718h!dTHsbBLyA;=7{oD<`pe-vPfeWp;pYhl_GaUPxev}{c60XUxUmmO4@01{A*LAUaOW+jsnL+l7Fj0|+7tz-uxVBof z?I^kJEDc$dY4f}#YDZ20{}zC$S;}z+5j764tSbA=W`g$IV_?ULzAAXJ!1Kf-(z;FU zwJ)}{4|=))^>&y9YavbF?lfPO3k&7rdOO7SY=Ww%s43`Ag_wE5GI>C>hk2Dc*KHv1 zWnIfZNL){{JXO>ToQ=uGxybM*^K=ovUs1Z%S&nXCw>kTB&w7x^I@#iqw|-L2+<2U6 z=%@>eBb!X2B~NARf#SrGclON5kLQK@ljXT_k5Uhtj=SB%N?pU|2T6SR^gTy+$M9Pp z?<|~sAQ|v+K26u2@|tc%dTC+=*=FPTtl=$u$B{*5Tw7Nf+yC}tm;o5Paf*6zHSOK(Ixz<% z;{T8{y=OL2|CBi5_dGuWy*+h)(-gldM0~(TDzYZJXWh9f7JOCtyC62?9uxqX`DpYt z3)E-*MT0ij?#;hoz^<9Ko)10x&Pxt?6l%V0I(XlvWU2^f6s&8|UFrcpP1_>Mzd$SKV9F;Os z45S#hl_k&ilfQM-XF)cmC2W~GVFYwgn}{doos^zDteZ1vw2aI-@xhxOjhv+K=mObw z!wRNc&P(nYhs~{WhR`3}7*`MFev9a#+LV4EnBs^2$8&=r?yl z9mS(T&!1Yd!tbZJa{r(@s95WKB!;sE4#$gPYV_{P#hdrsX?dqNbiWu5_k!eH7N#DY zc=90In6h*yGSXh&(+bMTU~k4qyCN*;wwCU6(F#|#z}lOhh6KQ$P=~gWqO=!k`f!hU z_i{X)Jk18REl6SVjEGCssyA^K z>CwY7WWV3JOCq}gl4$-x?j!iRJO>rK+L=?Cj{*|CDG$&nwW+~e3}yddO!A+%4p}jw zSVV~kHBqDnhlQ4Df1b$-JJO+3ZLTXP_n#Fx*n3t=9c#6_Pd-WVN4w3Rqsz9sQ6-W- zUaYkW5t`os^NmUu4B4N_3o*}hCM-OwEpS#37Z71tULn$8^H~SWhr8x(<8BLr6V|jn zvC~hb z(k_Juk8+2r_Hn`b!`|uB*TR{amJdItcsKktAdi4@vroCL11Sig6VdQfmtaX2&qPyR zM{+-kWT^$j%~gj?>D+g|*yKLrmzw90Q`h z>U8s7=j(KqCCAuaZf?<5vM^Q2*a;ijlS^sqH+Fvk#t;t=WR5JC_t#JMkO*4Se~8(V zm$lALUmZ>hy3a$#4o=Y7T8-08aG>VNW^4Z_yzLftJ73T>r&lpf$0O>d+>>`~j2F{t zcWCCVIy7Zys>Sf`E0W_qQH%Qx4gttC{kzA|VxGvg1NfV<{GhJgnZW=cEnKk{vt`6D zsudw?G9>9{m)oF`cgQE39yrT3;?r)d}EXxX}IoF`KTzn_OkO|FeN z-DtDkZF$VFZo-=j(G`JzbIHNS3@XLAC}!h8G+O$5SmFVaJHHT>_|3^_4`xrYYYw1J zd&NbrdEH@3IWF|;cU1AW3NlADYOPm!34!0EnrlOSc1CEXsP$l;Ug#h%t6|5TB3)WS zn`%{DppQgjf7GD2um_&h6r9Y4u}}9E)@m&wzUk1Q?(NxBaiZdH-1X*ohsc_EJGDAD z!&4r6^tR_I4xu+TBAXPz$D;ru{(plny|;7YzQ}V!5qmMKvgV?%=s0G+jno38&G5F{ zW)v+w^J6BXyzQeqP7PMUbCzC!OYKZaBkGhY>Fv{dlM<*|K?_M!^i(2=UrC2GjiL^|GWcs9npVT`~QrJ|M$sH zi%&?Vlhd*)kFKvHg5gvDfDN#L@C$WD@uExIsl@xH6RvA}ljMp~S{cNDoiqfXyXY86 ztZ=&B!+j{EWcItSS{c19ohQNj&xCZ<5wS$c^OrwFA+l~^<9bJQ;93;rC5~b4!&^fl z-30UNiqDE*_M*C8E2Z8Y=hi`~TiVl$s@7(MsF(*&eR!|$htCDDb27=``8kb;3obGf z7|C9GKJO&{$j7B~HQJZ(q-%Ku*11nSLU3{fdY;HJ*xJkI^0Y2qkveLssA?(gSyo!b zAAxx$)j`40m))mo!P#m>uejAo(w6bt8YM}f+wQZSxOGWEzeX|0sNigBq9PV@B7s(; zsX-L4xaA{eo>epF{?Hz`%8amR!K%lt%m`fIF=pWkbMb-!FWv8eE!}SwX2-X+)V)eL z8V#|dmkV!6!ptNeTk31*1f54k@#ey}-n$aTJU@Q)YF^_E%Frq#mCdPX3ocdvkI?Q z9i4kkCSgnVPCh%6T*fA?jUDhe0j0i&`W(-*_UxTQ!5mT5l-Ns&g;mW21Gc15k*| zti8zq<)=3fyuAmYnmDw)l*`o>0u}>*Vv>UJPYP$CN`Z?aQwPnz(w$(UbS>s4fZu}$ z$3w3Ss>&y=IuZn5;)(j)`U;0B$MlM8)8ISTEB9if-o5~-zEQXLf>9MCg@3lJFS>1b z&#srqxF8x@{aFE;a>V0W*Vo*w4+kZOWth;PT^f;IshygWN_@-Y&<4#Yed6;5o7q#l zBbGQ@gnF9?+Yvl(Ng9NkVG5lOQ|H95Wp(ol1;PWsz26?{AnC6KgIoI!rI24mkgnAJ zS^}-Pqt;weJ`_O7t!`WkbW*bbNVKw_;k& zIUU`T)pfjZ53nYz1)uze)ae_?IG%Xu&r5=DXP;X~v(25tzIu7cZ}fxTp*U{9SClP? z%5qzJJCNr`jM)th3W{VK)om;hgx#7-y>^Y*%%25s9LO}Lms?1|MwYn6gy6rnq=et5 z5j|aeBR{m#>7Bz`R1)G|v`|!VbWE$sphtV<|0P{GGTaH^dwhFkixHR8;%F8)PA?mZ zW)Y=qrK7uIWiL0zVpl!_OYm@jBB8j_ARQ_I8% zU(dSEzah12qrq9$1|Ip!g_-&aw2>!G>R8(c96?AzQva*5t*_UC6In z98`QXd7Vjfq`tQxmu_~4m^=?q5LA3{^Sj#E*eG|o9kXS}mJ@G#<#+-ARXH_jWy1^E z%BDQF!rqbKv(BrVeH(q9oA7IOA3eT58H<-J6e;N^HLRhtXTT>D6(0Bq5&N=kJnh$R zjc9Oiqs}nLJuPd&e)rcn<0WY0Q;c;uK>*p)DE`%?ic}>6TaPaWz&U%}= z(MqS~wmnuCUk2GI$Y$U2e7TH>y}IHyC0o7?QuS}bez8cR|0OjhCGSdLfa z2YJ`b>7Hug;Z}Er7b0T@_w4h_%jy70Dbv4Ul^I2}$gn*mSE=soW3_mYIlq~#SZ=GA zz$6s1u%Empld(8e>H{u_ZD~YvUsd?i(|p*!v3%$iG@TK~8BM;va5);E!DFfAaF>IF1Ay%xAYeHc%7$Zf<>%gMYSok+3nS9t=D)lbp~9~)v)+h`+a5+%($+-bZH$H z8B+mz_tn94R5-X7F$-^d*Yn;kU%p<)`32FAxU4ngQg5-netK>c2 zouh-gY(Vl^2yooErQZHIoaPKJp6!3`SB-ys8k9eleX!X;zJ}YMt2SoW%_s~^6-b2} z4eInP#;Tj8dblb=bv*H91h=l`V%eh;yq$UT-n9$oVSh*LGE>FB&Knjf{qz;La)LE*A>CT-KA>$PRmG-P=X`rDaR=7E=W?l`dwJ{!uuy428XEq zPSSB8m*B<3n3%F1V~hy#+vk%4iZX0O zSTbm}`>Ml#J|XtAn7H=7QcZf z_4AEk@8NuoJZ!_SHm5ta&3#jIo1AEuSEv;xGf&_I#2@@(_e4jA5sZ)=X(LP0 zvKe(yg_DcKj5xCpFE9XWU4t;dZRPd9o`KdkPx`-)SgK|TbHtjzXRxSi)B+Z@tqh=g zP2UucY(__H%Z3jc&XdRRomRX$Y@7%#;9x}QTxhWOOx(SSs!g~iKPv8PwkI@XB$(T2 z6v)fCLt$(t3~4_t()n^=bQi=EX;5VVy%i$LkAd?^2*EWR`R6VnfEIz&Yub^TLrbk1 zN`j7}JC@bxilR|-fFxY2o}FL};ils)zgA><4Tbtb0HfQ>N^iGg?vLuH-IQG1VoMG; z>TSS$T{$1b2SqSQ`Eb+u3$AEce)as^gA9Ub_a5u%-1_eU0$!mv)dg#Q`W)co zuS~Gk5om61m!EO@VF9bPsTg`OFM#Bc0TrhjvqJAgh^)T0rFk*BgU=3QdVN+zo6YF^ z)RDcWc*x4)b*qy4cPTc$LjYOg>^H*a5OHW!37g2`v$OR&q21IVeVr zK|7WBMWZKSy$L+)GMO*J?NY|_adX$D*!8X0LMbX*OIk|!4NRi6WAcC=dOJgVyf z-k``A2IP7L4UGr)%~vK?tG_bm_t2*>Q9R6jk0pTV?gx(Bu#^)R58A8B^%x=)bg{}R zvLgs)1ao#Ayf;#R6^~B#&P{C3J~Y93hX<;+`a@{B5-OWsG(*$9ct=^tZMBloip zZLnRIQt+`_){wQCscOGlNJ$S@yD&>uO4rjiKjZbp&dQJ0MOEqU-;>%(r1_}3bLZYc z;_WM)3F!bkV%0DCS4HyR^@|gKMgmr%jv}VzpWCC37AXYzZY1_Jq+*)RkWALuyN$@f zx9K(_V0s`Jt_3q3PEwNoj^`p4sscGLJJ8Ba!ieZ9VrnwNoNm>kevo{c7Tt8d$nwBzB*nmw(dmfn z3A@eBxbUhs9d67w$KPmYBFAK`4{Lh?91l^S=GyoUI1v6pc(@S0f8i}tZUOSW2tlD@ zyI{yX%-K71A-$F_U^09?A``PSepQPFlFG4UG z7*Dv`lu5HypMTlas&8qia0oy~pp~Bl;uO(qTr#A!30d3QH}w3@I6iN4>s}CP>0z_B zeV;8RxnFymsrY0jP-cPgT2r$TX9o@`puw4!#c_>o8LTgSYx4H)-cOZ=`8R-PeW6^AX*R$^+a__Fh9 znt2I_ltW5^BsbXEGUuVV|9aS**fGX&f4mbyAbrg2DC>`s$K{VG zNLjJN&)0$dHm`x3Ya&Uf%PBG{>Ln+qzn_l^8P^@7h;j#K?Ve7he`YVGS;*e*^fnFo zJNGH^H%@qKo8govE+L)xx9I0Pp(lHsV%F*7E)BbFC#O1YCwGOHSBXx$0$g41_d^Dboe0JSrqeW& z$oekw#$9i35fZq_bOsmCpQGyI>j=pTs0*9kVU{S7jjS*8qV4T!&U2tEZf4j{*3{E_ zSIa?^Qd}Bb1j)`@cQ|_IZ<1EWy~Z99bt<^fXZ?QM1us5n&hS{EMc!b%FCg*Ef3}-G zLEbYH_&AX72x%=}9#)$xpNhM@+L8;-O1_j0vtq#@Km8DwQ&#tScH!X%?Zm_{15uJ1 ziNdwGn$@@C6||7xHeNyYJ-!VyBTW?)kmA{mNU?CvPNZrd*1gxOqr|XiE^P)5zy|?zX&zs(UGSqQnPeJKK zfahk2i&X0Mj!SN^6@C=h8$BUMmvhfRe5@GOEn6FV_1Ntjd;jh^t?NF*<@B;Htfj>g zm~fK|-1^g=SC=fH7rria$D*t1uTI$6yVrWYFK@CeQR)5B-X>79K11?6t;;T`IbA3l z(C_?9Z-A42*9WWRY!{2`6)=}#Y#BIJ?gLQ*989*;61)Sq4O+O0zU@H>4Q-_Vu}BoO zUh^ePYlD}bHxSuM4Z8A}{3Q2*?9z;RS)yp&4-k%=nPOFMTUlPV;76r%L1N%3b<{dX zX)KnbEj^1d1&M2Jb_z80w&-MHO4Dols>rh#hw)}mHx_*}MU8bg}eaHL7l7>0x zA~bnTU&~SSTBqd|H&~8kw<+oi)U5MZs)5|($0%i^dw{UgHDT*DM%(O(*VLL0bM2l0 zl*T(Q%OiDCLw5W1bzX&UskDkvF((%@Vn%eb+>mSo z$2~`9U8fvUpt(r-3z4P=us$9qxYcf37Q8GGOE42~$N{!!nTb^($Z} z%0;!;>6GIoyb0^f#`f#keLO^|s{*kSFrIbZ{sYYkYM!ibY!DK6R{P>&81$FV*;Vmq zsa&0flrqN7h-&UD&jh3m9$=7$A{n`50>IaRw#D*1amP~>EZ3|*SxIiD?#$YE0GeVWcyusR3o7J7iCH)^L zZNP{0Q-ynsypm}ruSq^F#gRJjOhN9Cy%Jp2PA^69+f}XATAdeDOYq+ZpE zh9r%ioQH$(@&T*ul@wl9dxZnxPwyGo^Mab^0)deXfK)D$U^D#g6ojO;EVMJwme|~9 zO*G*Rt_=L))+$G&T70fDEO;h^c1iVbC}|C_Isr&Ywr04mS={5{pk;b5hg>+otV@~Y zciJ|5RwtiQZxL8q2SczQzh)6Tdlf&*zZ+fqvBRn%gn$}R$${QCxjKOOO6LYiqs{aH zn^f;?Gm^zt`2jzz>Gx2?!X&poHqhpMK&^BVbJE;npfifb$xX18b9g(%5z<(0Lu_); ze|t5>fPvRo)Pk^kX!9;g)@tSV3^~ryBtD6mB|KJ}b-<#R`~C1^&haL9v|BHQjXhR`+8X1q@=T=uz%Sykkyuf5O|7 zM~lw#%h)teDKUymBtB#xQLKG=2R9=B|34sH79Z#F%A0K>4>`J0gMdtls^3W0c z=4q=JV|BrLVaKG)!tN(?VTx}{n`Q)58~s~6E@%a5u4$e^$0@B`d9|0GQb`IWR@wcY zl#So9h#6QHLy-L%=V3CV=$}V3ABa`f~HEI{C zVYAPky=P7)@45z?)ye#{LVXP7De`K<(&ndcUyin4ADdv2N|KtA8|5s@% z|JBO>Kg@;sUtB5NFKFYLRtC~v#s0+#_1oTRy1LIGt&D$}k$R2;m-o>+86!ze*9p-0Hl|;H z(*^JPAw_(TD8R_Em8wrglW5LtjL+Rq1lfeAK7^}qoH1H+Wr3KSx)q=!z|U?Zb*f1V zA&u#HMGo`d$~n-s;1BQ%s`SAm2a|@+wqO!|Bt8blYgljH?9;efFYSw!M1-tiq(Hjw zpZlWw^S1x^sUGxewx#cOFn#NhimS=_;$qK0>!8ozHtrBYL3lW_d;BIfb<@!5A-r*M zU9O^tij^_rtk_HL4Z5M5beTt|dQv@&wv!R+o+ijaV)E=fV*Kl=9X>_U^pfc(5zW+8 zF+=00i2Yj2lJeTO@?;=mBl{swxyJM7w5Ef-VTEgU>dqNA{YqzTeHUT&D#YkV zo(LJ7PvB*vePqI&8r>2$OAyC7*R!X=&kZ6JSIEPR5bSJZjjiGh>-%VDs}vOV#SoU? zI%=)QaN2gd1L5~l^%X~Gyks`tJPitsP-&Y?*ICL-*dkkg!C~6QoUXIiG=3U)e<$doRQr-pFz*s^WD5ru^M=} zk@!rFm9nQ7*~iBxHgPLgw>rm^Oj`J^rni#XL&RMEHKXxIcHTup!rbEUz*Fhc$z^#+ zf{D{DzVXLlqvb~Q4X5>w%=3QiMg+G%WYFC{nGaC~HK$gmvMh6yT$a(B^yek63oy`n z*wqxY4w+3BVfa8}6AtMDK6P>|I$2aaXq#Eoo|ynJ)z37#8>gu8_pkelABW^+I50U& z7(Q?dC*&|hz?xHGCMm142(~~1G3l#!8=EGvx_UZ{k&|YS^wOHQCT=OZbd1erHfP}B z$3Ghy-wv`cElek-7KBy^`PGp(@*xNsA&TCkgl$V(eKk1b_-G`+z%NoA}rRouO zXl8=4tt_^K%b+EK&qCjlpo{#%f1yLGq0GV2{h9pzPtuWq@!mVe5%*a^)3&S zaOge)fdSds_y@&<4yY8|{>s%eU$twaRI3$Y1WxU)N-hQq?94}qe?^h%Dc{*bX)*Qs zN6<|7N2As2XZfbYfxRYfZYsQ{V^gZp2}wQSMCY2(twC>-9Fmh$`_CTqBXM^)ccwl_ z23E{u`dVC{f0=Tf5S^f>V=-2C_xMID8Kaq1Pmx&d<*IfshiYzPqwq zH*Ho|9xhQG#aZ!#S4(~PgUz_%Ok!bHZAjrMy|!k$*nAAf*{s};@o>Hwic_#llpu#m zsl@7VDV>Jw_jSAv$EcNQCi0IGJW!+9*s5Tn+t-%gxx<aGJDV%wn{233+w@W^r!X)FuR+YMS&I6+f zwZ^nQwVPk-qkAI}W2F{~frY+kG->@qg9cY3m|3q_4j0AMC=qo=sx#E99}j%o(tU<6;`Gl1%EuE?~%BwOg+Bi1oYoMgf|DjB!+hQEec4jWGo0#|Z%0ty z1qHG{1#->E1xonL|B~VL?qmz-9jK4kZenFW4y5+0$QbvwdlXp7?$kWFeS3wc_!%|+ zkt##<9i7GXit;RBjYwIDv!#B2M6W%HyL`byJNQyZSxxwt-ccl0Sn_~Sp1iFS3ojn2(=#{aqX?qiMMK-U;H-|bQ%Ksi^Ku$&5HY=O^ ziK)&_Ww@qku-<%y*5dZgH!X(`J~JD(!clMZ3s`(RM)}LeZ5?NMV6&R5w&WPAR-*y@ zQR5GRo6Y;z)lXzXzJfX+p3u|ta}CJ7U`05FLj#Lt(xi^NX3g6j%b{Vt>0<6u&FUa- z3$@?Is;PP@oR>MHRIdjQOG^wN!bZo6WUi_E2TlvPov_!l9~U47z7qpah6A(u4VEunmZ_Y#W_x)JF0v;LX5EC5L= zw{YIq+T+unw6BVD(XyOPYWR-n`5gr{Z5G<<0apOKRad&eIgi9~8s(e?H*y6arOiQ~E z(!luXF8Eph{tDLfl06rbrFG=$!v-Bs5vXx#X5XpDL^_ypeDS^^Z*y(y=j7?LM6rWw ztb;n1?{#hB3T}a#jb({o5k+2;^S{X+$+lWMbo+m#KT$F|FoSo58_n=Ye(FXv_I{>o z6~Br^nnaD9+BO^l_Km!G9pj(7?iv;tZ#m+RA|mLR#2j=T%ROt=stwdq>TKU)+CQ-1 zb2FqkAgD8WsuB5G>KC-X*-kpJzh6{QlH1xEv{A-ynacZ?5es(+k5JCjegfl9 zemP>&tl^}z3F{yBs^bC9me1o$B5|omT7x6X>bi{$KJ=r*@0IJU_YV^^&=;Ciac2K6db#yw4ta-ZeRqa)$?rOc!nGrH z3Ug|U{W1=q9EOtk)D=7QS_DQP@4B9d2fj%UGJno*Y)=d)NCq_|UHz1~3r~j+EHd0m z%$h0WPi>1Oa%0;`(ZybyM5Qyd8u2z)#Vhroj}#@bOJ8|n%FT(L*UT=E{leQhXlZpio7mZ=+61Ly)H%VtjpVA*#V&+#R zDBR!YIg^PkPCl&JQaE)bxZ4>6J$gxGBM;i~gL~nS?~88jcMcXF?}H)D^Nbeq-S|0R zqjzboY3D{3S+>HQYKL{HtiET=veMS0Ih;;EvM_^k0B;#ke&fg_jTddPDt@$Dp!4%{kF76^?oLx<8zN{7_X;fAQ`Y3N z!u|R56Fo%`RJ5m+!rMwR(AU2;6iUNM6B(UFm&iHDCMP*Qf;0Kk+#jSdT)HdxQ8IAt znBvP&jht~=O79OEM05q?)l`1Nkr1jrk?7siqOOsCO2#5q)BRhP0|Q}^n_L+B4d!|Z z|M(}awoF2!A$7({>mnnaix17X;*a|@1ywPpN|cC!QgNG)7RKEjAC?2~5qBpO+m*4d zxh*YtN1Zn~p||7(@_|D{xf(i_x2EknjS8z4O|8S75OsyCjhkyH)-jBIr5aA}T6JCM zzd9C%^CgY_S5`ZA5BTVHRtu=ZdU=6S%y zaP8^35uZXIoh@5IW=>-|>35jM^98S?lSEU?D3BmA3QgOFD_30VHTS#hi)0=pVrqDA z{CqJn_qzq7My9e`Hsvk$v!;9D4v)c5BeOPO-PGMc9=!&oCDl;kDQiJws} zF>hF~B|DA;o^UT}13iAqI?bBxkcro^FjugtsH&PSxZz;0?Plf$75_Ttf?N4X>Bt@? zo?D!=UyNka7KwO6yh(TeK89E0%LwNi#+L=!b)YNbQ=J4s=2d#exziDbO@-*kde*eng|0PIxM5(j}r2eoq|OyA~; zH&qsE{>DZkLRJ&}cm3azVu+g(<2zhJYV8%&)DNkt9B9Hg&cCdBWfG(lO43LUM(b&3C()KE_akTQ2}x-xECLWK_on zoH1j;J$2vz7FoPZTK+wvr{(j?$Ehuoyx17sbz6Cp!B4=}z^N%bm8F>1#!Oh3Sb!9Z ziA2)vRmX(Zoe;Ep80 zWh*fIw;-3gLUhU{KL#=B&Z=cY0hCXZL?rhp^6>prSMqFz8!%<2I_;%#UImHyr$?2- zg%3&)Lsm_@Fo3^Ripa|(u#&JV!5L%tiM^YDUs?pl)p%O9IT`GmK`v4&QKCyYV#N;R z$v6bm*`nBY9Q8V7K*iV!9Yul#Wi$*{C(L&m_P))f^zh>FeThvLp z-AIavc|CGAQuFtGvlY6%0Jiu_me!zc2;TOT zsqX>y9A_+?7w$g8z^G{*XT3L>ge{-mE19&#A`4dAf~ud+urU@D#CP~J-D9m*Jz#le zJR=W&+vdcqkgtLjpO4r5m2}G2_x?<)(_5`F3lO?b`1 z*ld#T5ZUeQhUoc5Njl->@Tb02wZ#_ddD$5s*A_TG6B{!zfGtNNK2GR-C(WBQetO|R zOC#3(ak-6+0*TC8Jyk}7rsn32KclC%p6osbwig$jGW83Y*ES~}Hb@Tv)%71_R6CY# zsH+B5;QlW~gbb1OzZ!0CZq_z8J3E~2%P`%F>Ap+FT9Z+L2onvD zrOL3V%vcU)jIb-TGHVRc@PC^PXmZd83BKosz74*uOjKLEEjIc;3J}_bjK4GpD-=E6 zX#xhzdh}R9Gb#y&Br_QehBSaTlw&%4JOl0C>26Gq1`NVaPdE4XY`i6Xl|xs~M~qlu z?v>SLWoKWXqZREp-bEId?yR;;-hRSxD@nrM-1Kj26OooZ!+;IWH>b0Hp>qGiH9kHr zN5K(Lc=CRO0Gi_k&EBZ4DH4~G!V#iQEh>q)2hImiVk{CpVGxNkC zcWS#KAS$(|h~I)v*gimhuQLV27eE7G%_18r|BSs7{nDtP)p!fVXo z!LyZ=@Y~6a!;IeU!7gn6wXxM(rA_7fD!$+kT`p*41C@*pU9vn3o%vRboVJ*xwX%5hZ+|RPHbH{Dpc9YVNn2Z!jgul@( zYcVZe9;H&+ltz;VXVoXm@4=)q2<0V}5{w{o{a}8p1ru9_|4IfwF|RuKHw=`JM!Fi< zC)4Dcu75k-GI1#Pa?)NGF2k18$nm!gJhVKvvm5Ngqv~*NUk~!E6-JmQ{5HL^gW??; z9~5hDF{hSV>9TCm946UR2@>NUm+0ww32~b^PXernE1-!8t<=n`!*^Sz`f)gP=`EjU zLtkNFx42SVUUKL4e*F4XT@h#}V3??6VbatpJviUO_p`gnqOhU@+*+PoWMpQ^Py!*L z*r)Q0R_mELzjxh(yql7+A}ppPsV6 z_$RiA151(g!YJb}mgqL>(BwQ<{SAU|kwF=Mbu3&(PjeoIwOxFJ9mbEsJtso#ff+^$C9Wcm7T-CO;RuI2Y4AVd? z87gQ9gWtVO%Q7}tez%f<)po@PA5?bX(;;B}R~H28AiUe2^MHclfbf*lo35^EHUm`7 zIQtkYZFX7tj8hrB*U- z%0-tTBm8jEsTNGY&yt9krF)2&)5&x^hT&sL9^IYP4e|Z;u$>Z}K5zoZ_uC7vGMU+i zdYqRj{FF8Cw=o0L-JqIEqa83P>;vu5Cu@OQ%v>reqO|ls1)9;fJW@onGD@ihm zQTRCT0U=|uslaT^u3We?oxlh**cZB4m{$P7{E@G|s;P-S^^(k?T%gXt4r*(a?{F~X zJh}ZJavtLoJmS=zDg7^lQ7SOwADP3PG<~Su_a)s0t5bK7ZUk0F#19sFb=)C^X>g2A zM*O(53wG;Wk*e*aJT06VfBdD+2k!J^nd8iu#A!P$KNEE;w^7LI>2akw+Zc`Y$gy-Y z7yOXtsOC*zw_i9H-@^OG<4GDrSN}Y2hYQ6!J29X-RZTi|-|+N?+@oJQ?eu>MFR-Ex?MM&&Hzr*>Zhlot)B{ zl6wyO#WcPdy5oH5tgTZH0X{K!VTcL9^12n0uO{?)Gn~%|uFkT+G;oD~MFA8Iu7lA~=Bh&?+}JjY*y+gP!OUVH&rp8ulsvgXy^~{3*PUzs zlnla7#s(?aEXdzB5PJiBnAq%)_mysJm*qRR8cQV_SpYQqiU16_pQoc1)Ey~&ll zn#MuPUli;Ft?pq8`BBp+~M?>pkW)$Nu&ay0IUv2x{ub9n5jCJNk{>{kOK zTBrfaZWmnM{cQKk6|P2(@4Vuw=P|QLe1nm2$63EtG_mSi0BEvK%tw3DAvLUKqY&8z zvYO|KtKV*P?BfaW*y3TA{}Ej?U(Dr7R~Ura3w`pI%t{a-bZ(D`2{H zo5z>o#_f?84|wU3TPlNlXa7w4u7aVh z(tV5v1)Gl%uhZR31c1JOC}7adc9F3f>w&tcxX(4IP2@n-qs6dHlK8$SrHn*#o>?m)j&#h8r~&$=KXo) z%lcOUtKY-M<)%qHf8T+HwVdF$p5ZinnW*@)wBC9Gr-(1v#M4f4$Mgs!E$?4uv{O{_ zvW{6({9e#-w9x)j!@GH6#T3|~C(Pv0_JV@{k5sdB^$4;Z<G^_EDgvX@YnvPXnr(6kV z+;&6H09Z6DzN!}7A!cokD6-Ke?cqLjTqY_!i zY1awsY__(X$%kzEVZ~78=vC}_`(*lGE&S?aV>W{uARgb%q~y_2&uv&i8P}on?d#Q{ zN|Er4P8$R%^Hl8*_ctB^rO1~XL%ApKUYRQ-dCClIr5u()P{_h~vS(_vODDgcQ(?=m zo|HQtOog_$3p1_Mg!<*J1UWeyQFr*gMz#V#!v;hR*)j^Rxf!QAEii2Cx8*g=6ywv-jnfS$Z_y0|8uIV@K*+$yDO3`%u z@sPg#N4X64psSA-+BS_yHQ)^RDb;PmmYfW^4Vf~SSxFhoc*ebgj}Lr8kGJs9F%!e# z*1^S<2@zhx(8wEZps4%!edfp~UXdD`b-1+8ycmBtl*d`9xQpev-sL^>-P%$dhSo4YGs@xH_H`}mH^ygvO9o9#>rJbv zgQUY2>%M#B-(oNrUK9Ryv$ zKF!J@jyqtd8x@~7N{Sp#g5M^stp}0?6#jTe83L75*;B+KQV{fm89uwyh!}= zC-By(!k3ZFHl=s^&2!C{DP&K_v5FVIq&n5hYzq5ZnA;jZGgIF=fEz<2)HOL=GXNOP zrK04S>%RH7j48z2TgGiC^KjX|*%BFSeFH)Jl_7S_SBavF4RX5n;vMqbk?1H${f^4A zvQcjK)GKYt*wVf{Q3KL#k#Lk3{s>*j& z+%;Un4G#gUtC)21CHd*$Lrzu*3Pv(nZly(%4HS&pX6cP}C6cz{O^R7ZZps$J3UoAh zuQpSAk6E>;8D+jK<>JM@;=@R0U7@W?CH^kX*-Br7|v89Tj54^;J=A zagILkd@Q7WvP-B`t%PW-QLv)<2aH0{nga)ubk};393eDTF(Lt?@{H@AMhEq$n#rA0 zbhR4QvOR;xaSHCT zQQYr0Jl~$#s|!tORqetWU1#7!O(y{@X+?SP7Km7eQ0Kjy%#JH1C(|D;AkGn|Zb+!RKKf?<>Y?j|5!>~vBw5?tISx5F`5P#r7b}L^qwN zPx{YNdd~dZBg-dT_x1Tup4r&}MQiPDO9R$PBP3L*VGe-_fa2Hgw8a=MR6 zTW8U6X?;-Nem})Yk#>9;*5d*rz}|5uS@+?~5?-vRlJiFx6La~aKAGJY@Jo|B(fQnc zI-5n#*jtn=ZCRM=3-vqRW1l5m)B^?AlnC$%133ll;$yvK3OM#jB zEegfTlG5(&(G5_j^onsXm?z`fJKr_MIGOg+Z*SathG20Vik?D;PMmjhCOeAH2aFYC z!CWdX%HjXxxT)$RvI3;&Z7fec(0wm%s~hf6K^>sP>2K(DA*W|{otoF{z7#%~ofVVS z1tTA>nlD-mLJIx#$9SjJluSNd^le%-U9TnDi}E$yk|>cJm-0#tWi++z6oO2=`@Qi; z2a^YH8E96JU@9i8VCedJ>Y{0zh2 zD-&Q!SmLzLbh)jP;7YB{=zr z`x>RE15PNr%lhbXPCqB5AW#eXpcpK>f2i@vy2l*LeE1bsAE zOx3B`DY@eto#LWd2N?4>ysDw;uY?yt8;e`-jmW^@$4!^yjC2l9ZQ`^vE2ZxGe4YUm zlT|Y}BWm)U0vZ}du|xPkTu?`L*AgZ-T_oM{*KzAzNvLFx%eUk!UZcYkq%HaxUORKnxavu-1P|NZ(#GBm=9ex1w_~CBSw!-&#*9{GQCS(aU0o+ZX=}?cp~-G-Y~)G107H5$cWre$t}i8Aw+@Jl#&UfUro}Ae444rKX(bd z*onVkcVKtn8wPbG3Ke>sD#aSAQ1PBvs5d4NB)2_EM@`k+z_}zO2cly!Kk^KX{L&%T zI^K+~%$v}Dfp@XI_UVFi68a6laT^PGpvQ%OG8A89;d~SkNwqo>mw40HTI+LYTz{o{ zc+IQZz+pv9%J-IYj?wg6!yEsMV>{bguf_J-sx`u4;VE{;mA>qE<9bb?A9kUIiM?hQ zse6K_=F8^OmdO}Ki_yBuYxCvJP-Wd+ZI>K&X(T}+)c;oAD6b{*3&brOzc3CkCL=xt}R%C)fxsFv7 zR=yV~vHnxk-nr(oYoKOtWs733CwmZfPY134h}!VwgORiLJ~6-OyAWB;Ik{{foQsH* z#|ArgLd&iT6(Q4Tb9wY3V7$xY2wS7-9=GqU&~eX8Q>5n!O*PnRqAO zto%De+j^3RmoE*|4AK*>MQEeeXek6X>{)EC`Izsg+VNoT`QVicn2X1soyD#W($uT{ zJSjQ}-vj2Uh!ds7kPjf!DBlM z{Qwben_+?%MVp8i*Gt~K4W5*>K@OaulXAALR2NaUq<^GwM{}2LCgEE z?^HxJzg?pkm!_W@*oNY_9Tw8O2j(8x>xW&GAOtKGu*c=54fN0qA#9>)zIqwV_;xzk z;}>gXu+r!e=NZAx^Z;t(nX1OgYXsEH>-82TEUo1tT*)-@LLyIW|k_ zl2INtH#K8pXF`J*7Sa|{OP&)mM;K({DKPr1GDMAs9t=kGA2suX{IdN`a46ue*!B5q zvJN46#zS=VU(gd|`YQ5D`V=Znl+7>e&6P}zK7ox!f{RFm;fSvf76%M@qc9l9!zgaM?se_CRMOZtCPm(`oQKF`k?s6R`Bs#8Q0#Nvi90ssqc8$Um27AK*8myZ-|(im z1!`<&5FC9;0|IN44QLEl8z6!;hW^}I%GK_|cCE3Uawca53G^EFSO)Ut=spf8$cLs~ z($HV0i;c|+p1J8rdm&r`e17j#%r6WzIGXZ8p;{8-scFZohJ&+?@itFFlBcwuTWs+K zf&=Tb!g4u{uY_-FR9PwYMkvLy#IdtMJ>G870*TY5+EX#_D{=x-k zd7u~B96`ku(laN89RnI%=L#2Y)@QcCE|DF9$5yR_9d?-tjVsGe1v)YXXudA1-4{4|rWf1bz$X0uxa?}7!bn69L*A-b zl{_+Ex=Zj%UCbD&G<8(RwLZY0t0L)j#jHdwN)-8=J4nZV5g{5?_hf__UGkPC`y0jA z{GQA}=JBk@;V8?qfPA#G7)$jX_ADVGl2cV0PR9?XE2eY?3)MmtU%PQOWw-+$wOCwT zpeb{{w1Y?(O3UlH*q2)=vj;4BdlSjG?V5LA#INqAZ1~|>NN$3#T^J_na4#@HT;>U_ zh>|GQ%A1$o?2y0UV!c!H@+>$@fU5UY(TyTON0WNrYep)Ve=D@)`J9BXGi$+l18>A0?zD;gD z%P!5un#dSr{nxx#({bt@|DHuJgjRmvL+H{^w2`IB=X^5+)d!PYSK)@}VvR9| zC2V?&CWJ#KJ|Vmp=v0y{aKA^+v8nR(OAvC(rgM7Svo)Ks%%VeK(3~HS&0Ih!J~Eu< zT_3O>>@w&np7_lvbh%>Aiq-zk0Zj^D%>V};Dt_S&tg~NmAbtIG?2owA{aF`D1?Fwc zK=W~^A5?p?K4Ig@bV%b)yf0n|D)q)b?r_^q2=1r8@bw>mAC%S_J-f7f$pQeH)PKJS zl#m)k$WUc#fi6r#=4uF&5brLGV`JUe_N<6`E7o`slroa?>JZyk89#WNM7BS&Y1zQLkQY zjq7H_xqi*kVj<-5HfHj~>bbuyoC*0({fcjF7fwKRKJ@FPcv61^WZb5zy`rjkL!qDI zv;BcG@IyIQi^o!{B8L&Pe%Lu3EA#|&Fyk-kc7eFB5z7Al{d?Jg?*azXZ?Jf^H?!|oP0n?w>@V~W^Nhi~(92<;>ktf2N zC~@)p_|-uEX;JlHR)^cWw}(iJLM}bacho5$7K;RF3zrFG5g#bk2Af2{@({tZSLIf4 zS8JAz{Ld~MQFjHi(=e1h9hw>*RVAfS@Pz)~+gR=jRDe;BpK5J2;vS!umt>F7Qg?mV zx(V`;=I~<;<1L!9!1c88_#$UUS2MvVEXH=*i6v=GrN)mx)eyh{a_HEROiBl5_@ggu znWrsw`xl$0TL%HNXTXAkWTXCa)Az5u+SVJ?tn~GQ5P31@fp701(phNuDdr%g#S=~% zWIh;0?6~qo;GH~mVm+AccBBk`+7#nR7=n@OEtL9S>{4@}J8I_mjVzWdJ3q{P2!Df1 z2Z%{>B~Nm9>5A&cXs$H&rqu!5_p_WavpoiP;|Ub}I`cK~W4?`shFtbFuI`h`bQG4U z_qe^^p6_OvlJ!Ka_gX&jn@;li`ru($q@a;6Lso7s*?Pc^Ro`HSj(iim*+VwH9%9&T z_R25@3pg1GQDg{boJ%;(_CgP{r%`n2Dc%8wBmJQ(7*T$78l`>%7p?ni9)=l)kzTZR z2Ep&oXBFB19(WWKr{dwv;bo1E&WzE*7g_lHx#i_V!-J#@^=uY7w!B4GpOynBaxmyH z=rscdhcm(AHf%YWV)T*azg@MkZ_$aP6Pwp`_p}a3;^Xnio43*Cu`yq= zwCb`IpSnh+B4xSEr`&dHE9q_gcA&u$4z4nfN8p(8vW&}jK2S1YaOtNjkRx8#jXb4J?)vhrTfbYx+ zeB7<@M_oCkhGYBH0z!ai9R#p+>Wfe$Nk00~spordWO}6u{XcAjtebLHY>HT}|Gb#G z1U4J-X%M|UE)vBBW}-KT44E(%e*;6~3rDTs^AL})C9JzoV!e9L=;oT=&F&49GJb|2 z*=>K+Piu~59H5DgjV?;Z#8)0Ch8+XRmdX>_ZM0zEX!^3d*F%76hm~{UgpA!;&kQ|& zu843_cYO|Df$!hH{{xEsz0mzZo+7^;0x2HzBw0 zo^Y%#<8-rF#BIXv?9&vt7(_0e*3x7Ds@v!G^NZHe%|ziX<^+7UXaj$u44pppOuMsG zeD@ph4Gd{ak?qXZPp=1CU7DNUYN)2udiX6#)b)@De2~ZY>xM{_pJGe=F<=+ALy7mhjMo2zuXFaG!Ebfe9YBR*da^s3=u*ng>%)#TNm3F(K?6s0W( z3bL7yAD>h`nvWz~{O0$j^L_mjS^OE8^c929t5-6%-7jhrzFKFFQKZ)Qhx1yVGJ9a^ zw8V8fVFy4)r>r)3GG_4j1XchVg=wX1fWeI~Z8bun%Zrptpq|tH6&x;hUqSf}D;D@? z+Tf|Y0s7tKpn^7nfacvYmKq4+IsFD>{Cu~=V;j2+@tQg<^;*^Rtc5g zl{Bz3(eEd9Ei~adQW~WVU6HrIlA3PzT-X>vp4pqTf8m#hUvs60Dbba(@U6sIwQQa4 z*(%nWQJPX=3{LA|Azia!G zS40|ax&Bj?(Ana#tHe_Ld8DSR^Y~q|FJax|y2S8N3{feDNR7AWYGrF0hqhyJeS501 zC;jH`ZsX|^IF|CbCKO(s#olw^^1^-Wh5j1oBn;K4%F;CT6zFYyy|d0qbAB~^bw$8RY@~O`^$c{ zFW|-e#Zdp^s6J6`pmryI{$Cfkubub?|C1=g{m-8w{BK_&Gzk1vssDP?CzkkspNAs+ z9~VRLu$j*9{>Am*59-H~<#*ZWBV`T$cNKA0T?Si){=3Tmm$Lpp6uWnDrB&C>R@Di5 zrQ9f+TobyWuV20Hd(ZSuT-kQf{#blZ|29tgzA@g^x@Na{zHMhLSt_GcW6r5@HekuM z=CGGMQRR%5xoRFl`6~O%UCzehUivrU3)?XmY}8x$jZg5ie8#OF=%QLf1^VXx%LWNd zR2=%1&%Tn`=7}K5Qk$o9fxQ4SZO=a+OzTxQWpQ;{N~-xV`IgdnS33X6T~rO0L^=?6 zb)OWdkAOfz{5MAc#y0&}hK+hp@90s0bkO?}Pv!V$jEhlrmjv5aCGU>K!Mp7yLNAqf z^U7~ECEzS^FR1ss3!tWX8S7&$gABwV;^?c^Pmjkkx8K=|ONG+ebtwr|&e(P`s=SMK zY6F`EW?}GX^;ANuKULzqow*rcC=ad z`&rUr)S$Nn1KFrKMc7A-W6a{kYqI1^#ZM5FyIJC~@#nrJ{*3X}%YVNg4Pnan@6Y!Q0)9=bTrl-?yt`B%pxO10dx6`NDzJyLrgDm$(b#2% zw)>Jg@tv9rQesNWY^L!F5$kTw7O2vBgT2Z8eKhddh;Tk|d)Ng4M;aYNvmd|P(5zaz zQ`e!cUgu(3E0ak3hEIY^?FD_Y$R^fr#W(>riEY=I zf^5l=?em8&&FmN&V^eg3^FP!~ zv+h1@Tb@rZn|n~iBOG|}j!J_#-Y#;vm#?4r$tTYoT!o?+BFj;E>FH6*G115uE}3>8 znga;UTG;lHvy5gUaIyc15;%D`OBtfJC##?S>%fEL>LxEJv`Bj|E)lIzoMY9TUtdNh zs#ceJL@qhjr0yozwr;HJx^-V0dLcCctwn3>jw{`b!9~h@Ax~bWuzf1o-i(#(dOa%% z3BTI2<9|lXXSmhkZAve>6W zSWyZ3`4N|Q!i4+2)Vn2PsNbzzJuv|49W1!*PcsWs8LGh&QI;T{EtFk z(B1^!8ESyM!1OscP02nD`+|I8R`e&owW=5Ad&(!-Lys26gHDNIqGC6WIj^X40-~ow zem;*_?Y<7lzd!i^NASMs?%Chx$CdTLNj4M|>-@#bPJ(xODqi^|!M3|GCNg1_sCJ#b zw$bmW>mc(2Ol5%N4YZKM(_xyoSIO$STtA@x=50k0xu~LHoY^j(V^_*GwOL_fL+-~Y zfs3i2sXk=Y*n!Nh=-?J>ZmFu*(*g@Imty3ENQ~^o;v8zcDiN2+!`E}EWjF9u;e&0rDX8my&HNATU!=AyeTVSHf~JUt=^3uk)x(5 zDD=4bc+58Kc6f`j^DzC&jI>6mWyf~KwEuBrEO$*=-u(9BHFP7e4vqATyulN&*aElmHZXWSUzPjlC_r}_KwJ>!g*u%YSTpgcjAfGc$jy|Tq>x%tEt zG#*PpFMWX4W@Rv%{Uuh1ox^rkib;u&g|g=$nJ+qeO9t;sO03N4*5^ckUL|*=INI4F z>BXCEN1Z~iV!7!aJRC2zc6b+?%@fXwh4p9)=Aoxk0*qJKH`RPUUyE3~_oPgr=d9f* zvezj1*d47eYD5Z6$?n?fU}y904C*E9Z>md6#N5^*>sxQmX}){4wqt)aZMM~v?X-^a zYg!cWWCQ9N4(TDbK_aK5ZLO0lqR@N(>F}nt;F8Ejr1n%=1iQy^{cI{jr#`;>ieo0~ z#2IwE-#=+fQD@sXWfsb98-1V;8gx@!1H@z1|}vIr&jh6de2}U*#qtoMKb9 z!KJ6Sw~h>{V9S>}ulmCoQE>(-kWdCY^5St!!~)=`muL6tZJCH;VKRl@u|pBHz1STj z&(^V^KH%vw|IQT>)M#zf(5tL-qm2W-gEwFof@ZPK2s!+{NPszh4QV5GElh#FWNfOs zR63)hin<6xdVo_EdoiP01OJE!DjCQj{Ua7sQ!e+oi zt4y8Hd&|M}zDm0x+kSrhmz;YVSOZFz^I2b4yGSct;Hs|WazD@H$NZuWqc3U{Hu|su zjv%W-V2L_nsurNbZFzN5!>LijM6=4llX0mfNEt4Iy~M?AXP26Mi2~aDN2#Q-RDn?` zLA$STp5GoKQ>EhQuPb;tU8RQ2Po`73XeCrza|2+m@zPk}G_I(w(QSP%bewJw^rM}&lQf>a;wKQsdT`8jm(qP zM1Z_Ip3U4HmoyCxjUTD0)$W3C(!OQOOa` z>qqx4b$Oetq_jt2RLSMG=Yw;Vo0)MZ5^71;cWGO}E|ut4Ly0Coc)W(%kkb@8VSaLI zv1w=l z0{RvbxVwodv4QiZP_y&$XZ|;|3@zy<*GE;3Ia);;+J+@WDS3fE?T@=ew~D+d|8|-> zW>WsnhnTVn13-4G@%+)^1s<#Tv9`!eCiH5UJ?u)9HTa^ks6&VIHhZok-}{L&r%Ahk z$M9_v_=g^gC|tDrv0mmS9+PZ(+}U3A*r|nyb#hX{-MwjccJ@bevjCiaLty8?X5D?M z4`36ck@QVM;=4t|i*rmt_94-rwpp)60U+IpR58{Q9(r3j;BDvimcdL7ySbS``){8! zB<(z^epU|qxeWcXQagQymXMhj&1udm=nJCi4wJ@_^(f1-Uq`)IPJUns4^g+RYdU>S zg>6>mb^VFllCij10V{Kfs+O|$t?OZbGOvl4cQxlppDv?7=Iu2Z95C-IPkXDQovhsx zMM&xYeksR)FQ?b#agLFjY8TJVi|5Z)I_~ACt;II2ao^2`no3)k$;G-w{plZwh_D1s z!kVnfut8;fz!X6jmZe6=gwo>3LceUw!u22F?6FgxDYpR2piJ{>{dIIq@)jOq~p%Jurg(8Ef%I#M5s(%V9*Z@=4c?62dX8602j&bTqTgls zaFTxhSbN*eMGlyzFjxSz*sCZVJfin3O49lmAG{#g2Dy#`$YReDxe?kVIF;f1?E0H~ zh<;dM^q&u%&@IrBxL3eO^DL20yw-hwSS-2L>A62-zP~vGBe>pOys8a2OSbMogb(CF zoyJ7DMn7Ey{&NtO3% z>uH<4Vxm9;^QEu}pO|J2Q*AWN4(Ks`yvV}oc$sMg&geWL#c`yd6x(N1x1yY0AB*(| zK0846b*@s;>D{5&X1S_k4}p)!Og2>X8oExS*86(#=DqE$X8kH68MoLZN0E&JmpE@M zLPx(W8(ROwd1pP@9W(Aa!298&5-DFefNhD$o>jz^c1B&GI3&i6vCb&xw*(q zVuRGvWsatCFPqSUa#?v?s;yZqopzp2O-c+*GU~kU;sG^kllB$jKRP?}lMT41S=D7;7|1unx8AE8hdko0z%4Y%Dq?xfpOU4f8@%7vMS zZjB!*9YO~Cul;!-(AHzXr`_J+M(Wh#SoOqXfhu&r-#C5VT@@*}_c&i!Q5<@i$~dZv zfcz`mHOT7`>oa6nlIL(fRW_ZI(f~9!Eqd}{u8k+C+^K54ncoOC`K~NKjOeZ&5&NpF z*G>@X;u9=N`&bT=^`yD={jC6c_TudboZIQ`zt1mI>HHo|1o*JWUeLIYI8uoQc%t

    CGU3RcSaTGAUT8>BW2|W!D$6hkXHs&KKb3NvU4phtIwKoFX~< z%vF+MfBIvI5Y5fuozuo0NSu-jd|m=XY4>QY$Q!E?^x;kpB#Rm#(Dx#G4i73K`-x&v zGDO;oOi3Y%*a$Dn8EKBgqy}1n41MK-M?z4@ptF*LQE=uHoSguJ=&1LyLEvIgcjBVw zaOKWKRRo7jShn)e{1{{3m><#Zwk&*ocuz6N!~Ns_U+5ngkEmND%ML>8y%LT&Q|`sC zbYv4+0dp*sRDZD`D4fa=X|oNugvjzj#;4R5I44yiOo8R|H3ntI?wB_b1|n*0ip)`d zzX|*A^3%mD2x>3t)t2s@Lzi_8y%RIC$JK#ef1?yM^9qC$UNd<0E2$K) zz=2D<;I@nV@QEeYn^8t+@^I&Fo>!j4?da1$aQKy|a~?GZi)z%5xa#L=&rkG`u6RZ< zJv-yj<||4m4KF65=Q&10Y;KT{gzA~c@x4<6=vi4iIOOs?-k!aUKv+D&reJ)hFVv>K zt3cH^yeLT+(o4tw-1heUdyV_3llkpWD!T;@<9WGzUE_H)?E#qg!bbwvzwwTzNFJ`D zrunVvubs)W!wWAbb;-atoKe{1hhkz+?U8}IFp>@!wqUxVQfk2|%>^KP=zxC?GfOf0dXeLBM6Yb8y^-2lI*qNlI|+mEa?e6L#qT}^i;K&J9F}67?v-Fq zA)LDo09COlMZUfcB*MePlaj);SjDk6M-Y3wtjZ4%GqH2w4b&r~z#`l7&HO?fjhCf%)Y7=NDM5K>GX|l~#Xq`_!{b4=W4fN!S~! zowVF$3$4JciC_Kv0`m}_${#SB5JJ7aevj^Dsd5G#EG{c3IzC%pJ5f?bog0RedMe|G z|B$`t3k(l&k?>gAxh%yt%|$yU7e|h_Qm^ku%sJtCr%#|CGuEa#rDA9MNCq4h6`y9z zOb^lxPk%D-v@03a?Rj-dC55H|u^r10q&RixbupRK>2{6*O!({sPRZk!9Vy70U>w90 zSjNf-;?UC$G_ZVYZr6xP?SJYnT@}Lmi!A~;d43aPY9#}z={x>_Fg^3n zj(T=ReVZXzW>TB(YmFtfIdkycob`h*WpE;+9v2Gm`tZ{YEX!O(W>oc=)U2!qE&?*h zu9xQ;kijlKagO?Ol8Puy$ky!s{e&fXO~z1@CW0m;ojmxHTciH?v<=!A4i= z6pvMp98xP78ZYsblYB|oG2fvS#E`xXM$d*aVfo$a>%6a}<>zmE(CcVSED$zXD~@9^ zZ)=+kqF~Ey`{21&=_v}e8*pm!gbtl-&J)@sS_(h#!#{!qre6UkMnI*=pw}@$nc!)$ zm=B!kQ<@Lu@amyn7BMx$^|jYf3^Wz8)qy9t=ka=X&dIx1gGzpQBec(^!=1)Q)8Y#r z3*Q6{I(_eDXW*;cyJ!Namof?VoMM-yrf5ri&m--WyPpEzOP}$ZWjGwO2NTd7dV4uN z-!5yK@&`Ri+bhjAj+2MZpCGe}&y#!%NFF+d?XTNa6RB5lcdlR!z}10SV^B zl@702#^nxi;(zUK`)JVYzm~PcN!E8K5$UoqXlh>$>CRc30_;t}d5-7z2QD&Ft>L6q z-UZjJYp;>h4%G6v_n@i}Q{=h?o?LSNehq|Chw2Zh^CqA7HZ)p&~;EqT&f>f8p6j2TrG zgEqY!?>kpQ#?%#?<}(=nq-xk7+(WhbVl*;CEEuYFt97b0jx=O4oDSY$i5=VMDCFW0 z?#^fOj(gTX3xZBhwoFQG{C$I7+#x!7B(|&{t5PkOE@ol5I4Qyu_zR8Ng(oL7A9UnZ zTsrv5W}R~kYFHJt%_|KJOm==FY%l(SR{aq@E0TUOEk)D}!Ta}W+Y48$yik`b{@{~E znw-xS=RRL})yQ$G-P=ToQhzeZLWIYLj~J?37_K5v&v+!`HO^88jLv+bL)jk+s*U%2 zUbj4a)gHs)x$!kRZk7J-FPvml%L5eqdbkovC(5q#rF`PZb^yi3pT15ryGEy^M+C%b zTKz#2?6>?d^yY;eSz5UX7;R6nFc8*W6Xklj>KXh!pLNs{lsG(oJtu8S%jpID! zgx(Ojq-`m&52M+;cPAg?QyLw4H-j~wK&S~cx2?81t-Br9Cwex$?P6knMOy%~!1=l0 zF2^5yrM6({CMPV)^Q8hm0-Sj`vrBJ#c6;HeYEOL1Smz}Qzwd|7j1__hi*;RFRnm-{ zg}6CIJbD2j5jizGvAO+$$*Zy6jUzhK+9>^s5g3vGS8at>Cv7(i_1LR)lVQfQi?um_ zyq5)WLw;^m_!tU@LZHm0D~YIyv06fb@{GL$;e7Yy;W08B{VCsK&d=u6>YVn?d*XUE zIuS>)mcp_}Ln;!enARgyH;}07RzAzT{I6g8ZoZFS^Q|1e1gO8J{@I*wmS}4)G)`yM z*Y^cAq9fR`R9j`k(+42jUC>GJ{qZJii;UU&j@DK^jtvKKd1)|`Y1WNu~ zv_=agGVeb1Uc!_A86VGK+Uxp3ary6`;HX_twO!ML!eqqsRpyIv%3B;j=PFU_4>nZi z`ilHG(P77X`JBBsfRJF(+R0m7pI&S+uVu)Td4{JHCh_(S@z9xdz~veHA;7@-5h5OX zS+>4xFwPeGApPg$$Bt^{MSd^J2V|s+rFGY|_e z#nS?xM*2+Y&V8RhuLWX%2F;}|eN+R0Pkn$IxT|cOdtSe2^qgcU;cRZe+wXtM&iIzD zvWm`_%(qO6dwwJeKiwNzPso+h3q`G@^a4wehOQ)*6_CL)12&188UxgL<*$}fa(>-x zW4~4{DL!ob%pSXO9WB@vL-F}V!Yu5609Z2zSpWb4 literal 0 HcmV?d00001 diff --git a/presentations/img/django_lead.png b/presentations/img/django_lead.png new file mode 100644 index 0000000000000000000000000000000000000000..b962c25702628fa4523a5d49851af29552ba3e23 GIT binary patch literal 50583 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 v-D4r%Te|fvWdUPs^!JfusGt5 Date: Tue, 12 Feb 2013 02:19:01 -0800 Subject: [PATCH 040/114] add images for week 6 --- presentations/img/admin_index.png | Bin 0 -> 18633 bytes presentations/img/django-admin-login.png | Bin 0 -> 7749 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 presentations/img/admin_index.png create mode 100644 presentations/img/django-admin-login.png diff --git a/presentations/img/admin_index.png b/presentations/img/admin_index.png new file mode 100644 index 0000000000000000000000000000000000000000..55a8919f5fb77f12d5af16b607a08229fd637def GIT binary patch literal 18633 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 TaXvnw00000NkvXXu0mjfP)V4v literal 0 HcmV?d00001 diff --git a/presentations/img/django-admin-login.png b/presentations/img/django-admin-login.png new file mode 100644 index 0000000000000000000000000000000000000000..4ceb5f54b92922f5f82b8896c8dccfbcd1ad6bdf GIT binary patch literal 7749 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 Date: Tue, 12 Feb 2013 02:19:17 -0800 Subject: [PATCH 041/114] Update to outline, completed week 6 presentation --- _sources/outline.txt | 17 +- outline.html | 58 ++-- presentations/week06.html | 661 ++++++++++++++++++++++++++++++++++++-- searchindex.js | 2 +- 4 files changed, 678 insertions(+), 60 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index 724b9403..4447a86e 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -480,17 +480,24 @@ Reference Assignment ********** -To Be Decided +Assignment +********** + +You can read the assignment at + +http://github.com/cewing/training.python_web/blob/master/assignments/week06/athome/assignment.txt + +Please complete the assignment by noon on Sunday, February 17, 2013. Week 7 - Django --------------- **Date**: Feb. 19, 2013 -In this class we'll dive a bit further into Django. We'll take the -specifications from week 6 and the models we created from them to set up a -simple application. Along the way we'll learn a bit more about the Django -admin, generic views, and templates. +In this class we'll dive a bit further into Django. We'll take the app we +build for our week 6 homework and add style and security features. Along the +way we'll have a chance to learn more about Django's templates, models, views +and forms. We'll also discuss extending the functionality of our application using existing Django **apps**. We'll see how these add-ons can help us to solve diff --git a/outline.html b/outline.html index 4218d498..91a6b4da 100644 --- a/outline.html +++ b/outline.html @@ -435,16 +435,21 @@

    Reference

    Assignment¶

    -

    To Be Decided

    +

  • +
    +

    Assignment¶

    +

    You can read the assignment at

    +

    http://github.com/cewing/training.python_web/blob/master/assignments/week06/athome/assignment.txt

    +

    Please complete the assignment by noon on Sunday, February 17, 2013.

    Week 7 - Django¶

    Date: Feb. 19, 2013

    -

    In this class we’ll dive a bit further into Django. We’ll take the -specifications from week 6 and the models we created from them to set up a -simple application. Along the way we’ll learn a bit more about the Django -admin, generic views, and templates.

    +

    In this class we’ll dive a bit further into Django. We’ll take the app we +build for our week 6 homework and add style and security features. Along the +way we’ll have a chance to learn more about Django’s templates, models, views +and forms.

    We’ll also discuss extending the functionality of our application using existing Django apps. We’ll see how these add-ons can help us to solve common problems like user registration and database schema management.

    @@ -452,8 +457,8 @@

    Week 7 - Django -

    Reading¶

    +
    +

    Reading¶

    • Using Django - far more in-depth information about core topics in Django. Pay attention specifically @@ -480,15 +485,15 @@

      Reading

    -
    -

    Before Class¶

    +
    +

    Before Class¶

    We’ll be adding a new bit of functionality to our app, and we’ll do this not by developing it ourselves, but by integrating an existing add-on. Before class begins, please install django-south and django-registration into your Django virtualenv.

    -
    -

    Reference¶

    +
    +

    Reference¶

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    Week 8 - Pyramid¶

    Date: Feb. 26, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    Week 9 - The Cloud¶

    Date: Mar. 5, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    Week 10 - Plone¶

    Date: Mar. 12, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    @@ -589,25 +594,26 @@

    Table Of Contents

  • Before Class
  • Reference
  • Assignment
  • +
  • Assignment
  • Week 7 - Django
  • Week 8 - Pyramid
  • Week 9 - The Cloud
  • Week 10 - Plone
  • diff --git a/presentations/week06.html b/presentations/week06.html index 2777adf7..ad282a3d 100644 --- a/presentations/week06.html +++ b/presentations/week06.html @@ -58,14 +58,6 @@

    And Now

    Full Stack Framework

    -

    Django is One Big Package

    -

    When you installed Flask, you also installed werkzeug and jinja2, a total -of 1.85MB

    -

    Django 1.4.3 weighs in at 7.7MB (4 times the size of Flask)

    -

    So what do you get?

    -
    -
    -

    Full Stack Framework

    Django comes with:

    • Persistence via the Django ORM
    • @@ -153,8 +145,8 @@

      Django Organization

    Starting a Project

    -

    You should already have done this at home, but we'll look at it together in -case:

    +

    You should already have done this at home, but we'll look at it together +quickly, in case:

    • Set up a Django virtualenv
    • Activate that env and pip install django
    • @@ -269,11 +261,11 @@

      Building DB Tables

      Lab

      The remainder of our class today will be lab time. We'll be directly playing with Django from here on out.

      -

      Todays lab is entirely drawn from the Django Tutorial, with some minor -enhancements.

      +

      Todays lab is drawn from the Django Tutorial, with some minor +adjustments.

    -
    -

    Lab - Step One

    +
    +

    Lab - Part One

    We are going to create an app to add to our project. This app will:

    • Allow a user to create poll questions
    • @@ -521,24 +513,637 @@

      Check Custom Methods

      True
    -
    -

    scraps

    -

    testing

    -
      -
    • add a basic test or two for our models and run them.
    • +
      +

      Testing Our Models

      +

      As with any project, we want to test our work. Django provides a testing +framework to allow this.

      +

      Django supports both unit tests and doctests. I strongly suggest using +unit tests.

      +

      You add tests for your app to the file tests.py, which should be at the +same package level as models.py.

      +

      Locate and open this file in your editor. We are going to add a few tests for +the models we've just written.

      +
      +
      +

      Testing Setup

      +
      +from datetime import timedelta
      +
      +from django.test import TestCase
      +from django.utils import timezone
      +
      +from polls.models import Poll
      +
      +class PollTest(TestCase):
      +    def setUp(self):
      +        self.expected_question = "what is the question?"
      +        self.expected_choice = "do you like spongecake?"
      +        self.poll = Poll.objects.create(
      +            question=self.expected_question,
      +            pub_date=timezone.now())
      +        self.choice = self.poll.choice_set.create(
      +            choice=self.expected_choice)
      +
      +
      +
      +

      Writing Tests

      +
      +def test_poll_display(self):
      +    self.assertEquals(unicode(self.poll), self.expected_question)
      +    new_question = "What is the answer?"
      +    self.poll.question = new_question
      +    self.assertEquals(unicode(self.poll), new_question)
      +
      +def test_choice_display(self):
      +    self.assertEquals(unicode(self.choice), self.expected_choice)
      +    new_choice = "is left better than right?"
      +    self.choice.choice = new_choice
      +    self.assertEquals(unicode(self.choice), new_choice)
      +
      +def test_published_today(self):
      +    self.assertTrue(self.poll.published_today())
      +    delta = timedelta(hours=26)
      +    self.poll.pub_date = self.poll.pub_date - delta
      +    self.assertFalse(self.poll.published_today())
      +
      +
      +
      +

      Running Tests

      +

      You can run your tests using a management command provided by Django:

      +
      +(djangoenv)$ python manage.py test polls
      +
      +
        +
      • This will run the tests for the polls app
      • +
      • You can provide the name of any installed app
      • +
      • If you provide no name, the tests for all installed apps will run
      • +
      • You can run subsets by providing dotted names: polls.PollTest, +polls.PollTest.test_poll_display
      -

      django admin

      +

      There is a lot more to know about Testing Django applications

      +
      +
      +

      What to Test

      +

      In any framework, the question arises of what exactly to test. Much of the +functioning of your app is provided by framework tools. Do you need to test +that stuff?

      +

      I usually don't write tests covering features provided directly by the +framework.

      +

      I do write tests for functionality I add, and for places where I make +changes to how the default functionality works.

      +

      This is largely a matter of style and taste (and of how much development time +you have).

      +
      +
      +

      Lab - Part Two

      +

      In this part, we'll be adding our app to the Django Admin. This will allow +us to add, edit and delete objects with a minimum of work.

      +

      We'll focus instead on how to customize the admin to get the best results we +can.

      +
      +
      +

      Install the Admin

      +

      The Django Admin is, itself, an app. It is not installed by default.

      +

      Open the settings.py file from our mysite project package and uncomment +the admin bit:

      +
      +INSTALLED_APPS = (
      +    # ...
      +    'django.contrib.staticfiles',
      +    # Uncomment the next line to enable the admin:
      +    'django.contrib.admin', # <- THIS LINE HERE
      +    # Uncomment the next line to enable admin documentation:
      +    # 'django.contrib.admindocs',
      +    'polls',
      +)
      +
      +
      +
      +

      Add the Admin Tables

      +

      As you might expect, enabling the admin alters our DB. We'll need to run +the syncdb management command:

      +
      +(djangoenv)$ python manage.py syncdb
      +Creating tables ...
      +Creating table django_admin_log
      +Installing custom SQL ...
      +Installing indexes ...
      +Installed 0 object(s) from 0 fixture(s)
      +
      +

      All set. Let's add URLs next

      +
      +
      +

      Django URL Resolution

      +

      Like Flas, Django has a system for routing URLs to code: the urlconf.

      +
        +
      • a urlconf is a list of mappings
      • +
      • each mapping has a regexp rule, representing the URL
      • +
      • each mapping names or provides the callable to be invoked
      • +
      • each mapping can have a name, used to reverse the URL
      • +
      • a urlconf should be created using functions from the django.conf.urls +module
      • +
      • django will load the urlconf named urlpatterns that it finds in the file +named in settings.ROOT_URLCONF.
      • +
      • That urlconf must include any others it requires
      • +
      +
      +
      +

      Django URL Patterns

      +

      Open the file urls.py from your mysite project package:

      +
      +from django.conf.urls import patterns, include, url
      +...
      +urlpatterns = patterns('',
      +    # list of url patterns
      +)
      +
      +

      You can include lists of urls from installed apps by using the include +function as the callable in a url pattern:

      +
      +url(r'^blog/', include('my.blog.app.urls'))
      +
      +
      +
      +

      Including the Admin

      +

      Using this knowledge, we can add all the URLs provided by the Django admin +in one stroke. Edit urls.py, which is open in your editor, and uncomment +three lines:

      +
      +from django.contrib import admin #<- Uncomment these two
      +admin.autodiscover()
      +
      +urlpatterns = patterns('',
      +
      +    # Uncomment the next line to enable the admin:
      +    url(r'^admin/', include(admin.site.urls)), #<- and this
      +)
      +
      +
      +
      +

      Using the Development Server

      +

      We can now view the admin. We'll use the Django development server.

      +

      In your terminal, use the runserver management command to start the +development server:

      +
      +(djangoenv)$ python manage.py runserver
      +Validating models...
      +
      +0 errors found
      +Django version 1.4.3, using settings 'mysite.settings'
      +Development server is running at http://127.0.0.1:8000/
      +Quit the server with CONTROL-C.
      +
      +
      +
      +

      Viewing the Admin

      +

      Load http://localhost:8000/. You should see this:

      +img/django-admin-login.png +

      Login with the name and password you created before.

      +
      +
      +

      The Admin Index

      +

      The index will provide a list of all the installed apps and each model +registered. You should see this:

      +img/admin_index.png +

      Click on Users. Find yourself? Edit yourself, but don't uncheck +superuser.

      +
      +
      +

      Add Polls to the Admin

      +

      Okay, let's add our app, and the models therein, to the admin.

      +

      Add a new file to the polls app package: admin.py. Edit it and add the +following:

      +
      +from django.contrib import admin
      +from polls.models import Poll, Choice
      +
      +admin.site.register(Poll)
      +admin.site.register(Choice)
      +
      +

      Restart your Development server and reload the admin index

      +
      +
      +

      Customized Admin

      +

      The Django Admin displays ModelAdmin instances for any models that are +registered

      +
        +
      • The object admin.site is a global instance of the Admin class.
      • +
      • Each call to admin.site.register adds a new model to the global site
      • +
      • register takes two args: a Model subclass and a ModelAdmin subclass
      • +
      • If you call it with only the Model subclass, the ModelAdmin is +automatically generated.
      • +
      • You can create, and customize, a ModelAdmin subclass for your models.
      • +
      +
      +
      +

      Create a PollAdmin

      +

      In admin.py add the following code (above the calls to register):

      +
      +class PollAdmin(admin.ModelAdmin):
      +    list_display = ('pub_date', 'question',
      +                    'published_today')
      +    list_filter = ('pub_date', )
      +    ordering = ('pub_date', )
      +
      +

      Then add this new class to the register call for our Poll:

      +
      +admin.site.register(Poll, PollAdmin)
      +
      +
      +
      +

      More Convenient Relations

      +

      In our Admin site, you can see the Poll to which a Choice belongs.

      +

      It'd be a lot nicer to be able to manage the Choices for a Poll from +the poll admin page, wouldn't it?

      +

      The Django Admin provides a special type of ModelAdmin for just this +purpose: The InlineModelAdmin.

      +

      There are two flavors, stacked and tabular. The tabular version is more +compact as it displays each related object in a single table row.

      +
      +
      +

      Create a Choice Inline

      +

      Add the following code above our PollAdmin class in admin.py:

      +
      +class ChoiceInline(admin.TabularInline):
      +    model = Choice
      +    extra = 3
      +    ordering = ('choice', )
      +
      +

      Then, add the inline to PollAdmin:

      +
      +class PollAdmin(admin.ModelAdmin):
      +    # ...
      +    inlines = (ChoiceInline, )
      +
      +
      +
      +

      Method Attributes for the Admin

      +

      For example, methods of a class you use in the admin can have special +attributes that alter how it works. Make these changes to models.py

      +
      +class Poll(models.Model):
      +    ...
      +    def published_today(self):
      +        now = timezone.now()
      +        time_delta = now - self.pub_date
      +        return time_delta.days == 0
      +    published_today.boolean = True
      +    published_today.short_description = "Published Today?"
      +
      +
      +
      +

      Reap the Rewards

      +

      Good work. You've set up a fully functional CRUD admin interface for your +application database in about 25 lines of code.

      +

      Play with it for a bit.

      +
      +
      +

      Lab - Part Three

      +

      In this part, we'll add public views and set up a way for visitors to vote +in our poll.

      +

      Along the way, we'll learn a bit about Django's Generic Views and the +Django Templating Language

      +
      +
      +

      Django Views

      +

      Django views are callables that take a request and return a response.

      +

      From the beginning, these have been functions. They still can be.

      +

      Version 1.3 added support for Class-based Views.

      +

      Really, they've always been there implicitly. The Admin is just a big +class-based view.

      +
      +
      +

      Generic Views

      +

      One of the most common uses for Class-based Views is in creating Generic Views.

      +

      Some public views are so common that providing a simple and generic interface +for making them is a big win.

      +
        +
      • Showing a list of objects of some type.
      • +
      • Showing the details of a single object of some type.
      • +
      • Displaying a static HTML template (or a template with some dynamic context)
      • +
      • Displaying and processing a simple HTML form.
      • +
      +
      +
      +

      Our Application

      +

      We'd like to be able to add some views that show our polls to the public.

      +

      What views would we like to have?

      +
        +
      • A list of all polls, perhaps ordered by publication date
      • +
      • A display of a single poll, showing each choice and allowing a vote
      • +
      • A view that processes a vote
      • +
      • A view that shows the poll results after you vote.
      • +
      +

      I start by configuring my URLs, it helps me think about the app API.

      +
      +
      +

      Configure URLs

      +

      In your polls app package, add a new file: urls.py. Open it in an +editor:

      +
      +from django.conf.urls import patterns, url
      +from django.http import HttpResponse
      +
      +def stub(request, *args, **kwargs):
      +    return HttpResponse('stub view', mimetype="text/plain")
      +
      +urlpatterns = patterns('',
      +    url(r'^$', stub, name="poll_list"),
      +    url(r'^(?P<pk>\d+)/$', stub, name="poll_detail"),
      +    url(r'^(?P<pk>\d+)/vote/$' stub, name="poll_vote"),
      +    url(r'^(?P<pk>\d+)/result/$', stub, name="poll_result"),
      +)
      +
      +
      +
      +

      Hook URLs to the Root

      +

      Like with the Django Admin, we can now add all the urls for our poll app at +once.

      +

      In the urls.py in our mysite project package, add the following:

      +
      +urlpatterns = patterns('',
      +    url(r'^admin/', include(admin.site.urls)),
      +    url(r'^polls/', include('polls.urls')), # ADD
      +)
      +
      +

      Restart the development server and load http://localhost:8000/polls/

      +
      +
      +

      Generic Poll List

      +

      Django's Generic Views allow you to do quite a lot with just a little code. +Edit urls.py:

      +
      +# add this import
      +from django.views.generic import ListView
      +
      +# edit the url pattern for the poll list:
      +url(r'^$',
      +    ListView.as_view(
      +        queryset=Poll.objects.order_by('-pub_date')[:5],
      +        context_object_name='polls',
      +        template_name="polls/list.html"
      +    ),
      +    name="poll_list"),
      +
      +

      Now, we just need to make that template

      +
      +
      +

      Django Templates

      +

      The Django Template Language looks a lot like +Jinja2. It is, however, quite a bit more limited.

      +
        +
      • variables available in context may be printed with {{ name }}
      • +
      • variables that are objects or dictionaries may be addressed with dots: {{ +name.attr }}
      • +
      • filters are available and look the same {{ name|upper }}
      • +
      • logical tags: {% for x in y %}{{ x }}{% endfor %}
      • +
      • available filters and tags may be extended with custom code
      • +
      • templates can be extended and included
      • +
      • you may define blocks in templates to be filled by other templates.
      • +
      • you may not execute arbitrary python or assign variables and use them
      • +
      +
      +
      +

      Setting Up

      +

      In assignments/week06/lab/source you'll find a file base.html.

      +

      Create a new directory, templates in your polls app package.

      +

      Copy the base.html file into that new directory.

      +

      Next, create a folder polls inside that new templates directory. We'll +add our individual templates here.

      +
      +
      +

      List Template

      +

      Add list.html inside templates/polls:

      +
      +{% extends "base.html" %}
      +
      +{% block content %}
      +<h1>Latest Polls</h1>
      +{% for poll in polls %}
      +<div class="poll">
      +  <h2><a href="{% url poll_detail poll.pk %}">{{ poll }}</a></h2>
      +</div>
      +{% endfor %}
      +{% endblock %}
      +
      +

      Now, load http://localhost:8000/polls/ again.

      +
      +
      +

      Detail View

      +

      Back in our polls app, let's edit urls.py again:

      +
      +# add this import
      +from django.views.generic import ListView
      +
      +# and edit the detail url like so:
      +url(r'^(?P<pk>\d+)/$',
      +    DetailView.as_view(
      +        model=Poll,
      +        template_name="polls/detail.html"
      +    ),
      +    name="poll_detail"),
      +
      +

      Again, we only need to add a template.

      +
      +
      +

      Forms in Django

      +

      We want to be able to vote on a poll.

      +

      Because doing so involves changing data on the server, we should do this with +a POST request.

      +

      An html form is a simple way to allow us to force a POST request.

      +

      Data-altering requests are vulnerable to Cross-Site Request Forgery, a common +attack vector.

      +
      +
      +

      Danger: CSRF

      +

      Django not only provides a convenient system to fight this, it requires it +for any POST requests.

      +

      The Django middleware that does this is enabled by default. All you need to do +is include the {% csrf_token %} tag in your form template.

      +

      Create a new file detail.html in your templates/polls directory

      +
      +
      +

      Detail Template

      +
      +{% extends "base.html" %}
      +{% block content %}
      +<h1>{{ poll }}</h1>
      +{% if poll.choice_set.count > 0 %}
      +<form action="{% url poll_vote poll.pk %}" method="POST">
      +  {% csrf_token %}
      +  {% for choice in poll.choice_set.all %}
      +  <div class="choice">
      +    <label for="choice_{{ choice.pk }}">
      +      <input type="radio" name="choice" id="choice_{{ choice.pk }}"
      +             value="{{ choice.pk }}"/>
      +      {{ choice }}</label></div>
      +  {% endfor %}
      +  <input type="submit" name="vote" value="Vote"/>
      +</form>
      +{% else %}
      +<p>No choices are available for this poll</p>
      +{% endif %}
      +{% endblock %}
      +
      +
      +
      +

      Processing The Vote

      +

      We can now submit a form to the poll_vote url. We need to process that +vote

      +

      Here, a class-based generic view is just going to get in our way. Let's use +an old-fashioned view function.

      +

      How is our user's vote reaching the server?

      +

      It gets there as POST data, the value for the key 'choice'.

      +
      +
      +

      Django GET and POST Data

      +

      Django provides the same type of Request/Response based interaction model that +most frameworks are based on. Views are called with the first argument being a +request object.

      +

      request.GET and request.POST are dictionary-like objects containing data +parsed from incoming HTTP request.

      +

      You can use normal dictionary syntax to read values from these:

      +
      +bar = request.POST['bucko']
      +foo = request.GET.get('somevar', None)
      +
      +
      +
      +

      Vote View Skeleton

      +

      In views.py from our polls app package:

      +
      +from django.core.urlresolvers import reverse
      +from django.http import HttpResponseRedirect
      +
      +def vote_view(request, pk):
      +    if request.method == "POST":
      +        try:
      +            # attempt to get a choice
      +        except NoGoodChoice: # send back to detail
      +            url = reverse('poll_detail', args=[pk, ])
      +        else: # vote and send to result
      +            url = reverse('poll_result', args=[pk])
      +    else: # submitted via GET, ignore it
      +        url = reverse('poll_detail', args=[pk, ])
      +
      +    return HttpResponseRedirect(url)
      +
      +
      +
      +

      Get the Choice

      +

      Let's start by filling out the process of getting the choice:

      +
      +# add imports
      +from django.shortcuts import get_object_or_404
      +from django.contrib import messages
      +from polls.models import Poll, Choice
      +# and edit our skeleton
      +def vote_view(request, pk):
      +    poll = get_object_or_404(Poll, pk=pk)
      +    if request.method == "POST":
      +        try:
      +            choice = poll.choice_set.get(
      +                pk=request.POST.get('choice', 0))
      +        except Choice.DoesNotExist:
      +            msg = "Ooops, pick a choice that exists, please"
      +            messages.add_message(request, messages.ERROR, msg)
      +            url = reverse('poll_detail', args=[pk, ])
      +
      +
      +
      +

      Add a Vote

      +

      Next, let's record a vote on our choice:

      +
      +def vote_view(request, pk):
      +    ...
      +    try:
      +        # choice = ...
      +    except Choice.DoesNotExist:
      +        # ...
      +    else:
      +        choice.votes += 1
      +        choice.save()
      +        messages.add_message(request, messages.INFO,
      +                             "You voted for %s" % choice)
      +        url = reverse('poll_result', args=[pk])
      +
      +
      +
      +

      Add the URL

      +

      Finally, we need to add this view to our urlconf. Back in urls.py in the +polls app package, edit the url for the voting view like so:

      +
      +url(r'^(?P<pk>\d+)/vote/$',
      +    'polls.views.vote_view',
      +    name="poll_vote"),
      +
      +

      Notice that the 'callable' in this pattern is a string. Django allows you to +use this sort of dotted name reference. It will resolve it (or throw an +error if it can't)

      +
      +
      +

      Display Result

      +

      The last view we need is the poll result. This can simply be a different +version of the Generic DetailView. Still in urls.py edit the pattern for +the results view:

      +
      +url(r'^(?P<pk>\d+)/result/$',
      +    DetailView.as_view(
      +        model=Poll,
      +        template_name="polls/result.html"),
      +    name="poll_result")
      +
      +

      And, of course, we will need to create that final template

      +
      +
      +

      Result Template

      +

      In templates/polls create a new file, result.html:

      +
      +{% extends "base.html" %}
      +
      +{% block content %}
      +<h1>{{ poll }}</h1>
      +<ul>
      +  {% for choice in poll.choice_set.all %}
      +  <li>{{ choice }} ({{choice.votes}} votes)</li>
      +  {% endfor %}
      +</ul>
      +<a href="{% url poll_list %}">Back to the polls, please</a>
      +{% endblock %}
      +
      +
      +
      +

      Play a Bit

      +

      Alright. You've done it.

      +

      Take a few minutes to add some polls in the Admin.

      +

      Then return to the public side and vote. See how it goes.

      +
      +
      +

      Assignment

        -
      • set up basic admin
      • -
      • customize to include an inline for Choice on Poll
      • +
      • Review the data structure and views required for the Flaskr app.
      • +
      • Start a new app in your same mysite project. Call it djangor
      • +
      • Build the required models to represent the data. Make two enhancements:
          +
        • Add a column for 'pub_date' to the entry model
        • +
        • Allow each entry to be 'owned' by a User. Add a relation field to +represent this.
        • +
        • HINT django.contrib.auth.models defines a User model.
        -

        writing views

        +
      • +
      • Build the urlconf required to present an entry list and a view for posting a +new entry. Add two new urls: +* One should show the archive of all posts from a given month and year +* One should show all the posts by a single user
      • +
      • Build views for each URL
      • +
      +
      +
      +

      Submitting the Assignment

        -
      • start with urlconf (in poll app, include in root urlconf)
      • -
      • create detail view for a poll. Simple template
      • -
      • add a form to vote on a poll.
      • -
      • create a form processing view which redirects to the detail view
      • -
      • add a class-based generic listing view
      • +
      • place your app package into the athome folder in assignments/week06/
      • +
      • Add any notes, comments or questions in the form of a README file in that +same folder
      • +
      • Commit your changes to your fork and make a pull request.
    diff --git a/searchindex.js b/searchindex.js index 678be493..864b75cb 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,instructor:0,flask:1,tomayko:1,program:[0,1],present:[0,1],sens:1,spec:1,introduc:1,fax:0,sourc:1,string:1,far:1,mcdonough:1,util:1,veri:1,word:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,small:[0,1],pleas:1,machin:[2,1],repres:1,outlin:[0,1],representational_state_transf:1,core:1,htm:1,restkit:1,design:1,pass:[0,1],further:1,click:2,even:1,index:0,what:1,sud:1,section:1,lightn:1,brief:1,access:[0,1],delet:1,"new":[2,1],"public":1,contrast:0,hasn:1,full:1,berkelei:1,gener:1,learn:[0,1],here:[0,1,2],inher:1,along:1,search:0,technolog:[],host:1,prior:0,base:[0,1],doctest:1,pick:1,implement:[0,1],chanc:1,ourselv:1,via:[0,1],repositori:[2,1],extra:[],apach:1,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,kessler:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],few:1,live:1,recommend:1,tell:2,memeori:0,relat:1,reign:1,enhanc:1,downtown:[],appendix:1,templat:1,particular:1,postgresql:1,must:[],topic:[0,1],account:2,retriev:1,valuabl:1,prepar:1,work:[0,1],focu:[0,1],can:[0,1,2],http2:[],purpos:1,quickstart:1,process:1,registr:1,smtp:1,indic:0,autumn:[],tag:1,explor:[0,1],onlin:1,differenti:1,cours:[0,1,2],winter:0,anoth:1,write:[2,1],concis:1,low:0,simpl:[0,1],chri:1,updat:1,product:1,mar:1,resourc:1,attend:0,clone:2,after:2,sundai:1,lab:1,befor:1,attent:1,mai:1,philosophi:1,data:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,minim:1,assign:[0,1,2],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,how:[0,1],grade:0,offic:0,complex:1,rapidli:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1,2],good:[0,1],"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],choic:1,term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,gui:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:[0,1],doug:1,our:1,happen:1,out:1,variabl:1,accomplish:1,network:[0,1],open:1,publish:1,content:0,dso:0,internet:[0,1],dive:1,integr:[0,1],advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,zodb:[],org:1,care:1,filter:1,lucumr:[],place:2,principl:0,think:1,south:1,first:1,origin:[2,1],softwar:[],feel:1,onc:[],qualiti:1,date:1,instruct:1,restkit_:[],horribl:1,fantast:0,differ:1,"long":1,script:[2,1],associ:1,top:[2,1],system:1,master:[2,1],zeromq:1,"final":[2,1],schema:1,option:1,relationship:1,tool:1,copi:2,took:2,employ:0,part:[0,1],pars:1,mostli:1,eibrari:[],than:0,king:1,provid:[0,1],tree:[],structur:1,exampl:[0,1],project:1,video:1,"function":1,comput:[0,1],modern:1,ani:[0,1],have:[0,1,2],tabl:0,need:[2,1],django:[0,1],strength:1,techniqu:1,equival:0,note:[2,1],also:1,ideal:1,contact:0,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,usernam:2,object:[0,1],reach:1,most:1,plai:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,drive:1,doe:[0,1],determin:1,left:1,wsgi:[0,1],abl:0,beautifulsoup:1,bring:0,session:[0,1],corner:2,find:[2,1],shield:1,onli:1,just:1,explain:1,configur:0,activ:0,behind:1,should:[0,1],jan:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],familiar:1,express:0,curiou:1,becaus:2,repo:1,tcp:1,requir:0,truli:1,email:2,rfc:1,common:1,contain:2,where:[],view:1,wiki:1,certif:0,set:1,knowledg:1,see:1,result:[0,1],fail:0,close:2,databas:1,review:2,wikipedia:1,urllib:1,label:2,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:[0,1],across:1,altern:1,ftplib:[],extend:1,weak:1,job:2,consumpt:1,solv:[0,1],come:[],addit:1,pymotw:1,wsgiref:1,tutori:1,mani:1,com:[2,1],point:1,overview:1,unittest:1,jog:0,rfc2616:[],walk:1,written:1,tuesdai:0,throughout:0,admin:1,uci:1,creat:[0,1,2],armin:1,hellmann:1,compon:1,json:1,basic:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,ador:1,educ:0,those:1,"case":1,look:1,solid:1,servic:[0,1],cursor:1,defin:1,"while":2,abov:1,wild:1,python_web:[2,1],real:[0,1],pyramid:[0,1],glanc:1,briandorsei:[],unit:1,cherrypi:1,lightweight:1,minutia:0,sever:1,develop:1,xmlrpc:1,author:1,make:[2,1],week05:1,same:1,html:1,sqlite3:1,pai:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],effect:1,kit:1,user:1,student:[0,1],extern:1,stack:1,appropri:1,entri:1,coursework:0,well:1,inherit:1,person:1,client:1,thi:[0,1,2],choos:1,model:[2,1],portabl:0,latest:1,protocol:[0,1],execut:1,rest:1,weekli:0,scrape:1,human:1,mysql:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,add:[2,1],blob:1,app:1,homework:1,build:1,week02:1,applic:[0,1],week01:1,march:0,around:1,week04:1,format:1,read:1,httplib:1,arguabl:1,know:1,world:1,bit:1,licens:1,uwpython_web:[],like:[2,1],specif:1,manifest:1,benefit:1,either:1,popular:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:2,satisfactori:0,week03:1,server:1,librari:[0,1],virtualenv:1,guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,select:1,refer:[0,1],cgi:[0,1],cgi_exampl:[],investig:1,run:1,usag:0,confer:1,step:[2,1],dissert:1,prerequisit:0,januari:[0,1],feb:1,chapter:1,about:1,actual:[2,1],socket:[0,1],constraint:1,manag:1,microframework:1,includ:1,commit:[0,2],disabl:0,block:1,fulfil:1,own:[2,1],visit:2,washington:0,easy_instal:1,curios:1,assess:0,orm:1,foreward:1,chang:[2,1],your:[0,1,2],git:2,log:2,wai:1,transfer:1,support:[0,1],submit:2,why:1,avail:1,start:[0,1],interfac:1,pocoo:[],suit:1,forward:1,fork:[2,1],bottl:1,form:1,offer:1,forc:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:1,link:[2,1],gain:1,rfc1945:[],pull:[2,1],made:[2,1],wish:1,displai:1,until:1,url:1,below:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,evalu:1,request:[0,1,2],pragmat:0,parser:1,lectur:[0,1],exist:1,file:[2,1],pip:1,simplest:1,want:[2,1],mashup:[0,1],when:2,detail:1,virtual:1,field:1,other:1,rdbm:1,test:1,htmlparser:1,you:[2,1],repeat:1,intend:1,urllib2:1,djangocon:1,consid:1,sql:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,depth:1,train:[2,1],ignor:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],those:1,sens:1,spec:1,introduc:1,fax:0,sourc:1,string:1,far:1,mcdonough:1,util:1,veri:1,word:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,small:[0,1],pleas:1,cgi:[0,1],outlin:[0,1],representational_state_transf:1,cgi_exampl:[],htm:1,restkit:1,design:1,pass:[0,1],further:1,click:2,even:1,index:0,what:1,sud:1,defin:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],delet:1,"new":[2,1],"public":1,contrast:0,hasn:1,full:1,berkelei:1,gener:1,learn:[0,1],here:[0,1,2],cursor:1,inher:1,along:1,search:0,technolog:[],step:[2,1],prior:0,zodb:[],doctest:1,pick:1,implement:[0,1],chanc:1,ourselv:1,via:[0,1],prerequisit:0,extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],few:1,live:1,recommend:1,tell:2,memeori:0,relat:1,reign:1,enhanc:1,downtown:[],appendix:1,templat:1,particular:1,actual:[2,1],must:[],topic:[0,1],account:2,retriev:1,valuabl:1,prepar:1,work:[0,1],focu:[0,1],can:[0,1,2],http2:[],purpos:1,quickstart:1,process:1,registr:1,smtp:1,indic:0,autumn:[],tag:1,explor:[0,1],onlin:1,differenti:1,cours:[0,1,2],winter:0,secur:1,anoth:1,write:[2,1],how:[0,1],simpl:[0,1],chri:1,updat:1,product:1,mar:1,resourc:1,attend:0,dive:1,after:2,sundai:1,lab:1,befor:1,attent:1,date:1,philosophi:1,associ:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,author:1,django:[0,1],inform:[0,1],combin:1,pocoo:[],allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,style:1,concis:1,grade:0,offic:0,html:1,rapidli:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1,2],good:[0,1],"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,tilkov:1,discuss:1,introduct:[0,1],choic:1,term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,gui:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:[0,1],doug:1,our:1,happen:1,out:1,variabl:1,accomplish:1,network:[0,1],open:1,publish:1,content:0,dso:0,internet:[0,1],clone:2,common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,base:[0,1],org:1,care:1,filter:1,lucumr:[],place:2,principl:0,assign:[0,1,2],south:1,first:1,origin:[2,1],softwar:[],feel:1,onc:[],qualiti:1,mai:1,instruct:1,restkit_:[],horribl:1,fantast:0,differ:1,script:[2,1],data:1,top:[2,1],system:1,stack:1,master:[2,1],zeromq:1,"final":[2,1],schema:1,option:1,relationship:1,tool:1,copi:2,took:2,part:[0,1],pars:1,mostli:1,eibrari:[],than:0,king:1,provid:[0,1],tree:[],structur:1,project:1,video:1,fork:[2,1],comput:[0,1],modern:1,ani:[0,1],have:[0,1,2],tabl:0,need:[2,1],strength:1,techniqu:1,equival:0,contact:0,note:[2,1],also:1,ideal:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,usernam:2,object:[0,1],reach:1,most:1,plai:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,drive:1,doe:[0,1],determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:[0,1],corner:2,find:[2,1],shield:1,onli:1,submit:2,execut:1,explain:1,configur:0,apach:1,enough:1,should:[0,1],kessler:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],familiar:1,express:0,becaus:2,repo:1,rest:1,requir:0,truli:1,across:1,rfc:1,integr:[0,1],contain:2,where:[],view:1,wiki:1,certif:0,set:1,lectur:[0,1],knowledg:1,see:1,result:[0,1],fail:0,close:2,databas:1,review:2,wikipedia:1,urllib:1,label:2,behind:1,between:1,"import":0,neither:1,experi:[0,1],approach:[0,1],email:2,altern:1,ftplib:[],extend:1,weak:1,job:2,consumpt:1,solv:[0,1],come:[],addit:1,pymotw:1,wsgiref:1,tutori:1,mani:1,com:[2,1],point:1,overview:1,unittest:1,jog:0,rfc2616:[],walk:1,written:1,tuesdai:0,throughout:0,uci:1,evalu:1,add:[2,1],hellmann:1,compon:1,json:1,basic:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,ador:1,instructor:0,present:[0,1],"case":1,look:1,solid:1,servic:[0,1],employ:0,admin:1,"while":2,abov:1,visit:2,wild:1,python_web:[2,1],week02:1,pyramid:[0,1],file:[2,1],briandorsei:[],cherrypi:1,lightweight:1,march:0,minutia:0,sever:1,develop:1,week04:1,minim:1,make:[2,1],format:1,same:1,complex:1,sqlite3:1,pai:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],effect:1,kit:1,user:1,student:[0,1],extern:1,studi:1,appropri:1,entri:1,coursework:0,well:1,inherit:1,person:1,exampl:[0,1],thi:[0,1,2],choos:1,model:[2,1],portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,select:1,virtual:1,human:1,mysql:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,armin:1,blob:1,app:1,homework:1,build:1,real:[0,1],applic:[0,1],week01:1,week06:1,around:1,xmlrpc:1,week05:1,read:1,httplib:1,arguabl:1,know:1,world:1,bit:1,licens:1,uwpython_web:[],like:[2,1],specif:1,manifest:1,benefit:1,either:1,popular:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:2,satisfactori:0,week03:1,server:1,librari:[0,1],virtualenv:1,guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,unit:1,refer:[0,1],machin:[2,1],core:1,investig:1,run:1,usag:0,confer:1,host:1,dissert:1,repositori:[2,1],januari:[0,1],feb:1,chapter:1,about:1,postgresql:1,socket:[0,1],constraint:1,manag:1,microframework:1,includ:1,commit:[0,2],disabl:0,block:1,fulfil:1,own:[2,1],curiou:1,washington:0,easy_instal:1,curios:1,assess:0,orm:1,foreward:1,chang:[2,1],your:[0,1,2],git:2,log:2,wai:1,transfer:1,support:[0,1],"long":1,why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,forward:1,"function":1,bottl:1,form:1,offer:1,forc:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:1,link:[2,1],gain:1,rfc1945:[],pull:[2,1],made:[2,1],wish:1,displai:1,until:1,url:1,below:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1,2],request:[0,1,2],pragmat:0,parser:1,repres:1,exist:1,glanc:1,pip:1,simplest:1,want:[2,1],mashup:[0,1],when:2,detail:1,scrape:1,field:1,other:1,rdbm:1,test:1,ignor:1,you:[2,1],repeat:1,intend:1,urllib2:1,djangocon:1,consid:1,sql:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,depth:1,train:[2,1],htmlparser:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file From 1f8a7e374fb001df5a2eb55f8a453e374b73fd1d Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 12 Feb 2013 02:21:11 -0800 Subject: [PATCH 042/114] link to week 6 presentation from outline --- outline.html | 1 + 1 file changed, 1 insertion(+) diff --git a/outline.html b/outline.html index 91a6b4da..3a3be3c3 100644 --- a/outline.html +++ b/outline.html @@ -399,6 +399,7 @@

    Week 6 - DjangoWeek 6 Presentation

    Reading¶

      From 90b54d57371f0a56b692e94b32572950970911cb Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 12 Feb 2013 18:00:29 -0800 Subject: [PATCH 043/114] update week 6 presentation --- _sources/outline.txt | 2 ++ presentations/week06.html | 62 ++++++++++++++++++++++++++------------- searchindex.js | 2 +- 3 files changed, 45 insertions(+), 21 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index 4447a86e..82d8b657 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -437,6 +437,8 @@ Django ORM (and ORMs in general) can help shield Python developers from SQL. For our homework, we'll take a look at a set of specifications for a project and create a set of Django Models that will fulfill the specification. +`Week 6 Presentation `_ + Reading ******* diff --git a/presentations/week06.html b/presentations/week06.html index ad282a3d..a81de52f 100644 --- a/presentations/week06.html +++ b/presentations/week06.html @@ -1118,33 +1118,55 @@

      Play a Bit

      Take a few minutes to add some polls in the Admin.

      Then return to the public side and vote. See how it goes.

    +
    +

    Next Week

    +

    We are going to mix it up quite a bit this week.

    +

    I would like you all to divide into teams. Each team should have 4-6 people. +Each team should have both experienced and inexperienced members. Try to match +up with people whose strengths are different from your own.

    +

    Now, each team, pick a 'facilitator'. This person will be responsible for +managing the operation of the team. This person will help to ensure that each +team member has a task. This should be a more experienced team member.

    +

    Assignment

    -
      -
    • Review the data structure and views required for the Flaskr app.
    • -
    • Start a new app in your same mysite project. Call it djangor
    • -
    • Build the required models to represent the data. Make two enhancements:
        -
      • Add a column for 'pub_date' to the entry model
      • -
      • Allow each entry to be 'owned' by a User. Add a relation field to -represent this.
      • -
      • HINT django.contrib.auth.models defines a User model.
      • +

        During this week, each non-leader member will duplicate the Flaskr app +using Django.

        +
          +
        • Create a new app which will hold all the code required.
        • +
        • Define the model for the 'entry' object.
        • +
        • Extend that model with two additional fields: publication_date +(DateTimeField), and author (ForeignKey to +django.contrib.auth.models.User)
        • +
        • Define the URLs you'll need (an entry list, a form processor)
        • +
        • Define the Views you'll need (see the two above).
        - -
      • Build the urlconf required to present an entry list and a view for posting a -new entry. Add two new urls: -* One should show the archive of all posts from a given month and year -* One should show all the posts by a single user
      • -
      • Build views for each URL
      • +
    +
    +

    Assignment

    +

    During this week, each team leader will communicate with me to build a +plan for implementing a new feature for the Django flaskr app.

    +
      +
    • User Registration
    • +
    • 'Archive' views based on date or author
    • +
    • WYSIWYG visual editor for entry posts.
    • +
    • Tagging
    • +
    • Theme (make it beautiful)
    • +
    • Search (this is a bigger one than you might think)

    Submitting the Assignment

    -
      -
    • place your app package into the athome folder in assignments/week06/
    • -
    • Add any notes, comments or questions in the form of a README file in that -same folder
    • -
    • Commit your changes to your fork and make a pull request.
    • -
    +

    Leaders, you will communicate with me to make a plan

    +

    Members, you will do the usual submission of your code.

    +

    DO NOT ATTEMPT TO GET YOUR CODE RUNNING ON A VM

    +
    +
    +

    Next Week

    +

    Our class next week will be a little different. Each team will be implementing +a new feature for our micro-blog application.

    +

    We will work in teams for the entire class up until 8:30, when we will show +off our results.

    diff --git a/searchindex.js b/searchindex.js index 864b75cb..d589c4f9 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,educ:0,flask:1,tomayko:1,program:[0,1],those:1,sens:1,spec:1,introduc:1,fax:0,sourc:1,string:1,far:1,mcdonough:1,util:1,veri:1,word:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,small:[0,1],pleas:1,cgi:[0,1],outlin:[0,1],representational_state_transf:1,cgi_exampl:[],htm:1,restkit:1,design:1,pass:[0,1],further:1,click:2,even:1,index:0,what:1,sud:1,defin:1,section:1,lightn:1,beautifulsoup:1,access:[0,1],delet:1,"new":[2,1],"public":1,contrast:0,hasn:1,full:1,berkelei:1,gener:1,learn:[0,1],here:[0,1,2],cursor:1,inher:1,along:1,search:0,technolog:[],step:[2,1],prior:0,zodb:[],doctest:1,pick:1,implement:[0,1],chanc:1,ourselv:1,via:[0,1],prerequisit:0,extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],few:1,live:1,recommend:1,tell:2,memeori:0,relat:1,reign:1,enhanc:1,downtown:[],appendix:1,templat:1,particular:1,actual:[2,1],must:[],topic:[0,1],account:2,retriev:1,valuabl:1,prepar:1,work:[0,1],focu:[0,1],can:[0,1,2],http2:[],purpos:1,quickstart:1,process:1,registr:1,smtp:1,indic:0,autumn:[],tag:1,explor:[0,1],onlin:1,differenti:1,cours:[0,1,2],winter:0,secur:1,anoth:1,write:[2,1],how:[0,1],simpl:[0,1],chri:1,updat:1,product:1,mar:1,resourc:1,attend:0,dive:1,after:2,sundai:1,lab:1,befor:1,attent:1,date:1,philosophi:1,associ:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,author:1,django:[0,1],inform:[0,1],combin:1,pocoo:[],allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,style:1,concis:1,grade:0,offic:0,html:1,rapidli:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1,2],good:[0,1],"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,tilkov:1,discuss:1,introduct:[0,1],choic:1,term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,gui:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:[0,1],doug:1,our:1,happen:1,out:1,variabl:1,accomplish:1,network:[0,1],open:1,publish:1,content:0,dso:0,internet:[0,1],clone:2,common:1,advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,base:[0,1],org:1,care:1,filter:1,lucumr:[],place:2,principl:0,assign:[0,1,2],south:1,first:1,origin:[2,1],softwar:[],feel:1,onc:[],qualiti:1,mai:1,instruct:1,restkit_:[],horribl:1,fantast:0,differ:1,script:[2,1],data:1,top:[2,1],system:1,stack:1,master:[2,1],zeromq:1,"final":[2,1],schema:1,option:1,relationship:1,tool:1,copi:2,took:2,part:[0,1],pars:1,mostli:1,eibrari:[],than:0,king:1,provid:[0,1],tree:[],structur:1,project:1,video:1,fork:[2,1],comput:[0,1],modern:1,ani:[0,1],have:[0,1,2],tabl:0,need:[2,1],strength:1,techniqu:1,equival:0,contact:0,note:[2,1],also:1,ideal:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,usernam:2,object:[0,1],reach:1,most:1,plai:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,drive:1,doe:[0,1],determin:1,latest:1,wsgi:[0,1],think:1,abl:0,brief:1,bring:0,session:[0,1],corner:2,find:[2,1],shield:1,onli:1,submit:2,execut:1,explain:1,configur:0,apach:1,enough:1,should:[0,1],kessler:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],familiar:1,express:0,becaus:2,repo:1,rest:1,requir:0,truli:1,across:1,rfc:1,integr:[0,1],contain:2,where:[],view:1,wiki:1,certif:0,set:1,lectur:[0,1],knowledg:1,see:1,result:[0,1],fail:0,close:2,databas:1,review:2,wikipedia:1,urllib:1,label:2,behind:1,between:1,"import":0,neither:1,experi:[0,1],approach:[0,1],email:2,altern:1,ftplib:[],extend:1,weak:1,job:2,consumpt:1,solv:[0,1],come:[],addit:1,pymotw:1,wsgiref:1,tutori:1,mani:1,com:[2,1],point:1,overview:1,unittest:1,jog:0,rfc2616:[],walk:1,written:1,tuesdai:0,throughout:0,uci:1,evalu:1,add:[2,1],hellmann:1,compon:1,json:1,basic:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,ador:1,instructor:0,present:[0,1],"case":1,look:1,solid:1,servic:[0,1],employ:0,admin:1,"while":2,abov:1,visit:2,wild:1,python_web:[2,1],week02:1,pyramid:[0,1],file:[2,1],briandorsei:[],cherrypi:1,lightweight:1,march:0,minutia:0,sever:1,develop:1,week04:1,minim:1,make:[2,1],format:1,same:1,complex:1,sqlite3:1,pai:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],effect:1,kit:1,user:1,student:[0,1],extern:1,studi:1,appropri:1,entri:1,coursework:0,well:1,inherit:1,person:1,exampl:[0,1],thi:[0,1,2],choos:1,model:[2,1],portabl:0,left:1,protocol:[0,1],just:1,tcp:1,weekli:0,select:1,virtual:1,human:1,mysql:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,armin:1,blob:1,app:1,homework:1,build:1,real:[0,1],applic:[0,1],week01:1,week06:1,around:1,xmlrpc:1,week05:1,read:1,httplib:1,arguabl:1,know:1,world:1,bit:1,licens:1,uwpython_web:[],like:[2,1],specif:1,manifest:1,benefit:1,either:1,popular:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:2,satisfactori:0,week03:1,server:1,librari:[0,1],virtualenv:1,guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,unit:1,refer:[0,1],machin:[2,1],core:1,investig:1,run:1,usag:0,confer:1,host:1,dissert:1,repositori:[2,1],januari:[0,1],feb:1,chapter:1,about:1,postgresql:1,socket:[0,1],constraint:1,manag:1,microframework:1,includ:1,commit:[0,2],disabl:0,block:1,fulfil:1,own:[2,1],curiou:1,washington:0,easy_instal:1,curios:1,assess:0,orm:1,foreward:1,chang:[2,1],your:[0,1,2],git:2,log:2,wai:1,transfer:1,support:[0,1],"long":1,why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,forward:1,"function":1,bottl:1,form:1,offer:1,forc:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:1,link:[2,1],gain:1,rfc1945:[],pull:[2,1],made:[2,1],wish:1,displai:1,until:1,url:1,below:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1,2],request:[0,1,2],pragmat:0,parser:1,repres:1,exist:1,glanc:1,pip:1,simplest:1,want:[2,1],mashup:[0,1],when:2,detail:1,scrape:1,field:1,other:1,rdbm:1,test:1,ignor:1,you:[2,1],repeat:1,intend:1,urllib2:1,djangocon:1,consid:1,sql:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,depth:1,train:[2,1],htmlparser:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,instructor:0,flask:1,tomayko:1,program:[0,1],present:[0,1],sens:1,spec:1,introduc:1,fax:0,sourc:1,string:1,far:1,mcdonough:1,util:1,veri:1,word:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,small:[0,1],pleas:1,machin:[2,1],repres:1,outlin:[0,1],representational_state_transf:1,core:1,htm:1,restkit:1,design:1,pass:[0,1],further:1,click:2,even:1,index:0,what:1,sud:1,section:1,lightn:1,brief:1,access:[0,1],delet:1,"new":[2,1],"public":1,contrast:0,hasn:1,full:1,berkelei:1,gener:1,learn:[0,1],here:[0,1,2],inher:1,along:1,search:0,technolog:[],host:1,prior:0,base:[0,1],doctest:1,pick:1,implement:[0,1],chanc:1,ourselv:1,via:[0,1],repositori:[2,1],extra:[],apach:1,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,kessler:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],few:1,live:1,recommend:1,tell:2,memeori:0,relat:1,reign:1,enhanc:1,downtown:[],appendix:1,templat:1,particular:1,postgresql:1,must:[],topic:[0,1],account:2,retriev:1,valuabl:1,prepar:1,work:[0,1],focu:[0,1],can:[0,1,2],http2:[],purpos:1,quickstart:1,process:1,registr:1,smtp:1,indic:0,autumn:[],tag:1,explor:[0,1],onlin:1,differenti:1,cours:[0,1,2],winter:0,secur:1,anoth:1,write:[2,1],concis:1,low:0,simpl:[0,1],chri:1,updat:1,product:1,mar:1,resourc:1,attend:0,clone:2,after:2,sundai:1,lab:1,befor:1,attent:1,mai:1,philosophi:1,data:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,minim:1,assign:[0,1,2],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,style:1,how:[0,1],grade:0,offic:0,complex:1,rapidli:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1,2],good:[0,1],"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],choic:1,term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,gui:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:[0,1],doug:1,our:1,happen:1,out:1,variabl:1,accomplish:1,network:[0,1],open:1,publish:1,content:0,dso:0,internet:[0,1],dive:1,integr:[0,1],advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,zodb:[],org:1,care:1,filter:1,lucumr:[],place:2,principl:0,think:1,south:1,first:1,origin:[2,1],softwar:[],feel:1,onc:[],qualiti:1,date:1,instruct:1,restkit_:[],horribl:1,fantast:0,differ:1,"long":1,script:[2,1],associ:1,top:[2,1],system:1,master:[2,1],zeromq:1,"final":[2,1],schema:1,option:1,relationship:1,tool:1,copi:2,took:2,employ:0,part:[0,1],pars:1,mostli:1,eibrari:[],than:0,king:1,provid:[0,1],tree:[],structur:1,exampl:[0,1],project:1,video:1,"function":1,comput:[0,1],modern:1,ani:[0,1],have:[0,1,2],tabl:0,need:[2,1],django:[0,1],strength:1,techniqu:1,equival:0,note:[2,1],also:1,ideal:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,usernam:2,object:[0,1],reach:1,most:1,plai:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,drive:1,doe:[0,1],determin:1,left:1,wsgi:[0,1],abl:0,beautifulsoup:1,bring:0,session:[0,1],corner:2,find:[2,1],shield:1,onli:1,just:1,explain:1,configur:0,activ:0,behind:1,should:[0,1],jan:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],familiar:1,express:0,curiou:1,becaus:2,repo:1,tcp:1,requir:0,truli:1,email:2,rfc:1,common:1,contain:2,where:[],view:1,wiki:1,certif:0,set:1,knowledg:1,see:1,result:[0,1],fail:0,close:2,databas:1,review:2,wikipedia:1,urllib:1,label:2,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:[0,1],across:1,altern:1,ftplib:[],extend:1,weak:1,job:2,consumpt:1,solv:[0,1],come:[],addit:1,pymotw:1,wsgiref:1,tutori:1,mani:1,com:[2,1],point:1,overview:1,unittest:1,jog:0,rfc2616:[],walk:1,written:1,tuesdai:0,throughout:0,admin:1,uci:1,creat:[0,1,2],armin:1,hellmann:1,compon:1,json:1,basic:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,ador:1,educ:0,those:1,"case":1,look:1,solid:1,servic:[0,1],cursor:1,defin:1,"while":2,abov:1,wild:1,python_web:[2,1],real:[0,1],pyramid:[0,1],glanc:1,briandorsei:[],unit:1,cherrypi:1,lightweight:1,week06:1,minutia:0,sever:1,develop:1,xmlrpc:1,author:1,make:[2,1],week05:1,same:1,html:1,sqlite3:1,pai:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],effect:1,kit:1,user:1,student:[0,1],extern:1,stack:1,appropri:1,entri:1,coursework:0,well:1,inherit:1,person:1,contact:0,thi:[0,1,2],choos:1,model:[2,1],portabl:0,latest:1,protocol:[0,1],execut:1,rest:1,weekli:0,scrape:1,human:1,mysql:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,add:[2,1],blob:1,app:1,homework:1,build:1,week02:1,applic:[0,1],week01:1,march:0,around:1,week04:1,format:1,read:1,httplib:1,arguabl:1,know:1,world:1,bit:1,licens:1,uwpython_web:[],like:[2,1],specif:1,manifest:1,benefit:1,either:1,popular:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:2,satisfactori:0,week03:1,server:1,librari:[0,1],virtualenv:1,guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,select:1,refer:[0,1],cgi:[0,1],cgi_exampl:[],investig:1,run:1,usag:0,confer:1,step:[2,1],dissert:1,prerequisit:0,januari:[0,1],feb:1,chapter:1,about:1,actual:[2,1],socket:[0,1],constraint:1,manag:1,microframework:1,includ:1,commit:[0,2],disabl:0,block:1,fulfil:1,own:[2,1],visit:2,washington:0,easy_instal:1,curios:1,assess:0,orm:1,foreward:1,chang:[2,1],your:[0,1,2],git:2,log:2,wai:1,transfer:1,support:[0,1],submit:2,why:1,avail:1,start:[0,1],interfac:1,pocoo:[],suit:1,forward:1,fork:[2,1],bottl:1,form:1,offer:1,forc:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:1,link:[2,1],gain:1,rfc1945:[],pull:[2,1],made:[2,1],wish:1,displai:1,until:1,url:1,below:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,evalu:1,request:[0,1,2],pragmat:0,parser:1,lectur:[0,1],exist:1,file:[2,1],pip:1,simplest:1,want:[2,1],mashup:[0,1],when:2,detail:1,virtual:1,field:1,other:1,rdbm:1,test:1,htmlparser:1,you:[2,1],repeat:1,intend:1,urllib2:1,djangocon:1,consid:1,sql:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,depth:1,train:[2,1],ignor:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file From f4e10609c9a012f736b81df6fef9c8ec3833f2e0 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 18 Feb 2013 00:38:07 -0800 Subject: [PATCH 044/114] Update outline with reading and references for week 8. Add notes on week 7 assignment, which will be to install Pyramid and the ZODB --- _sources/outline.txt | 93 ++++++++++++++++++++++++++++++++++++++++++-- outline.html | 91 +++++++++++++++++++++++++++++++++++++------ searchindex.js | 2 +- 3 files changed, 171 insertions(+), 15 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index 82d8b657..e9048d6a 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -508,8 +508,8 @@ common problems like user registration and database schema management. Finally, we'll discuss some of the strengths and weaknesses of Django. What makes it a good choice for some projects but not for others. -Our assignment for the week will be to enhance the application we build in -class with some additional functionality. +Our assignment for the week will be to prepare for working with Pyramid in +Week 8. Reading ******* @@ -572,13 +572,100 @@ Reference Assignment ********** -To Be Decided +This week we will have no code assignment. Instead the assignment will be to +install Pyramid and the ZODB. + +**WARNING**: the ZODB is built with C-based extensions. Installing it requires +a c compiler. On linux, gcc will do nicely. If you are using Mac OS X, you'll +need to install XCode. This is not fast. Be sure to start early in the week to +leave time for this. + +A link will be supplied here to step-by-step instructions on installing what +is needed. Week 8 - Pyramid ---------------- **Date**: Feb. 26, 2013 +This week we will look at a relative newcomer to the Python Web Framework +scene, Pyramid. Although the framework is a newcomer, it is represents a +combination of several projects, notably Repoze and Pylons, that have been +around for quite some time. In fact, the roots of Repoze go back to Zope, the +original Python web framework (and quite possibly the first web framework in +any language). + +We will talk a bit about what makes Pyramid different from other web +frameworks. We will look at the specific problems that the creators of Pyramid +are looking to solve, and we will investigate how those decisions have +influenced the design of the framework. + +We'll specifically look at two technologies that set the Pyramid framework +apart: the ZODB and URL Traversal. We'll do this by implementing a wiki using +these technologies and then discuss what might make such tools appealing to a +certain type of project. + +We'll also look at a very different templating system, Chameleon, which grew +out of Zope Page Templates and the Template Attribute Language. Chameleon +provides code structures via XML namespaces, allowing you to write templates +that will load in a browser looking like HTML without needing a framework to +render them. + +Reading +******* + +Why you should care about `Traversal +`_. + +Compare and contrast forms of dispatch in Pyramid: + +* `URL Route Dispatch + `_ +* `Traversal + `_ + +Learn a bit about the `ZODB `_ + +* Read the `tutorial `_ for a + quick overview of usage (don't actually do it, though). +* Read the `more complete walk-through here + `_ altough, again, do not + actually do the code examples. +* Learn about `object references in the ZODB + `_ + - one of its greatest strengths. + +Learn a bit about the Chameleon ZPT templating language: + +* Read about `Chameleon Templates in Pyramid + `_ +* A `Quick Intro to TAL `_ + +* `Chameleon Documentation `_ + +In particular, pay attention to: + +* `Basics (TAL) + `_ +* `Expressions (TALES) + `_ + + +References +********** + +* `The ZODB Book `_ - A work in + progress by Carlos De La Guardia. + +* The `ZPT Appendix `_ to + the Zope Book + +* Read `Defending Pyramid's Design + `_ + - an excellent point-by-point explanation of the design decisions that went + into creating this framework. + + Assignment ********** diff --git a/outline.html b/outline.html index 3a3be3c3..ea6813b2 100644 --- a/outline.html +++ b/outline.html @@ -456,8 +456,8 @@

    Week 7 - Django

    Reading¶

      @@ -506,30 +506,97 @@

      Reference

      Assignment¶

      -

      To Be Decided

      +

      This week we will have no code assignment. Instead the assignment will be to +install Pyramid and the ZODB.

      +

      WARNING: the ZODB is built with C-based extensions. Installing it requires +a c compiler. On linux, gcc will do nicely. If you are using Mac OS X, you’ll +need to install XCode. This is not fast. Be sure to start early in the week to +leave time for this.

      +

      A link will be supplied here to step-by-step instructions on installing what +is needed.

    Week 8 - Pyramid¶

    Date: Feb. 26, 2013

    +

    This week we will look at a relative newcomer to the Python Web Framework +scene, Pyramid. Although the framework is a newcomer, it is represents a +combination of several projects, notably Repoze and Pylons, that have been +around for quite some time. In fact, the roots of Repoze go back to Zope, the +original Python web framework (and quite possibly the first web framework in +any language).

    +

    We will talk a bit about what makes Pyramid different from other web +frameworks. We will look at the specific problems that the creators of Pyramid +are looking to solve, and we will investigate how those decisions have +influenced the design of the framework.

    +

    We’ll specifically look at two technologies that set the Pyramid framework +apart: the ZODB and URL Traversal. We’ll do this by implementing a wiki using +these technologies and then discuss what might make such tools appealing to a +certain type of project.

    +

    We’ll also look at a very different templating system, Chameleon, which grew +out of Zope Page Templates and the Template Attribute Language. Chameleon +provides code structures via XML namespaces, allowing you to write templates +that will load in a browser looking like HTML without needing a framework to +render them.

    -

    Assignment¶

    +

    Reading¶

    +

    Why you should care about Traversal.

    +

    Compare and contrast forms of dispatch in Pyramid:

    + +

    Learn a bit about the ZODB

    + +

    Learn a bit about the Chameleon ZPT templating language:

    + +

    In particular, pay attention to:

    + +
    +
    +

    References¶

    + +
    +
    +

    Assignment¶

    To Be Decided

    Week 9 - The Cloud¶

    Date: Mar. 5, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    Week 10 - Plone¶

    Date: Mar. 12, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    @@ -606,15 +673,17 @@

    Table Of Contents

  • Week 8 - Pyramid
  • Week 9 - The Cloud
  • Week 10 - Plone
  • diff --git a/searchindex.js b/searchindex.js index d589c4f9..55af4cff 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,instructor:0,flask:1,tomayko:1,program:[0,1],present:[0,1],sens:1,spec:1,introduc:1,fax:0,sourc:1,string:1,far:1,mcdonough:1,util:1,veri:1,word:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,small:[0,1],pleas:1,machin:[2,1],repres:1,outlin:[0,1],representational_state_transf:1,core:1,htm:1,restkit:1,design:1,pass:[0,1],further:1,click:2,even:1,index:0,what:1,sud:1,section:1,lightn:1,brief:1,access:[0,1],delet:1,"new":[2,1],"public":1,contrast:0,hasn:1,full:1,berkelei:1,gener:1,learn:[0,1],here:[0,1,2],inher:1,along:1,search:0,technolog:[],host:1,prior:0,base:[0,1],doctest:1,pick:1,implement:[0,1],chanc:1,ourselv:1,via:[0,1],repositori:[2,1],extra:[],apach:1,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,kessler:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],few:1,live:1,recommend:1,tell:2,memeori:0,relat:1,reign:1,enhanc:1,downtown:[],appendix:1,templat:1,particular:1,postgresql:1,must:[],topic:[0,1],account:2,retriev:1,valuabl:1,prepar:1,work:[0,1],focu:[0,1],can:[0,1,2],http2:[],purpos:1,quickstart:1,process:1,registr:1,smtp:1,indic:0,autumn:[],tag:1,explor:[0,1],onlin:1,differenti:1,cours:[0,1,2],winter:0,secur:1,anoth:1,write:[2,1],concis:1,low:0,simpl:[0,1],chri:1,updat:1,product:1,mar:1,resourc:1,attend:0,clone:2,after:2,sundai:1,lab:1,befor:1,attent:1,mai:1,philosophi:1,data:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,minim:1,assign:[0,1,2],inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,style:1,how:[0,1],grade:0,offic:0,complex:1,rapidli:1,persist:[],comprehens:1,mail:0,pce:[],them:[0,1,2],good:[0,1],"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],choic:1,term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,gui:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:[0,1],doug:1,our:1,happen:1,out:1,variabl:1,accomplish:1,network:[0,1],open:1,publish:1,content:0,dso:0,internet:[0,1],dive:1,integr:[0,1],advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,zodb:[],org:1,care:1,filter:1,lucumr:[],place:2,principl:0,think:1,south:1,first:1,origin:[2,1],softwar:[],feel:1,onc:[],qualiti:1,date:1,instruct:1,restkit_:[],horribl:1,fantast:0,differ:1,"long":1,script:[2,1],associ:1,top:[2,1],system:1,master:[2,1],zeromq:1,"final":[2,1],schema:1,option:1,relationship:1,tool:1,copi:2,took:2,employ:0,part:[0,1],pars:1,mostli:1,eibrari:[],than:0,king:1,provid:[0,1],tree:[],structur:1,exampl:[0,1],project:1,video:1,"function":1,comput:[0,1],modern:1,ani:[0,1],have:[0,1,2],tabl:0,need:[2,1],django:[0,1],strength:1,techniqu:1,equival:0,note:[2,1],also:1,ideal:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,distribut:0,usernam:2,object:[0,1],reach:1,most:1,plai:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,drive:1,doe:[0,1],determin:1,left:1,wsgi:[0,1],abl:0,beautifulsoup:1,bring:0,session:[0,1],corner:2,find:[2,1],shield:1,onli:1,just:1,explain:1,configur:0,activ:0,behind:1,should:[0,1],jan:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],familiar:1,express:0,curiou:1,becaus:2,repo:1,tcp:1,requir:0,truli:1,email:2,rfc:1,common:1,contain:2,where:[],view:1,wiki:1,certif:0,set:1,knowledg:1,see:1,result:[0,1],fail:0,close:2,databas:1,review:2,wikipedia:1,urllib:1,label:2,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:[0,1],across:1,altern:1,ftplib:[],extend:1,weak:1,job:2,consumpt:1,solv:[0,1],come:[],addit:1,pymotw:1,wsgiref:1,tutori:1,mani:1,com:[2,1],point:1,overview:1,unittest:1,jog:0,rfc2616:[],walk:1,written:1,tuesdai:0,throughout:0,admin:1,uci:1,creat:[0,1,2],armin:1,hellmann:1,compon:1,json:1,basic:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,ador:1,educ:0,those:1,"case":1,look:1,solid:1,servic:[0,1],cursor:1,defin:1,"while":2,abov:1,wild:1,python_web:[2,1],real:[0,1],pyramid:[0,1],glanc:1,briandorsei:[],unit:1,cherrypi:1,lightweight:1,week06:1,minutia:0,sever:1,develop:1,xmlrpc:1,author:1,make:[2,1],week05:1,same:1,html:1,sqlite3:1,pai:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],effect:1,kit:1,user:1,student:[0,1],extern:1,stack:1,appropri:1,entri:1,coursework:0,well:1,inherit:1,person:1,contact:0,thi:[0,1,2],choos:1,model:[2,1],portabl:0,latest:1,protocol:[0,1],execut:1,rest:1,weekli:0,scrape:1,human:1,mysql:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,add:[2,1],blob:1,app:1,homework:1,build:1,week02:1,applic:[0,1],week01:1,march:0,around:1,week04:1,format:1,read:1,httplib:1,arguabl:1,know:1,world:1,bit:1,licens:1,uwpython_web:[],like:[2,1],specif:1,manifest:1,benefit:1,either:1,popular:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:2,satisfactori:0,week03:1,server:1,librari:[0,1],virtualenv:1,guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,select:1,refer:[0,1],cgi:[0,1],cgi_exampl:[],investig:1,run:1,usag:0,confer:1,step:[2,1],dissert:1,prerequisit:0,januari:[0,1],feb:1,chapter:1,about:1,actual:[2,1],socket:[0,1],constraint:1,manag:1,microframework:1,includ:1,commit:[0,2],disabl:0,block:1,fulfil:1,own:[2,1],visit:2,washington:0,easy_instal:1,curios:1,assess:0,orm:1,foreward:1,chang:[2,1],your:[0,1,2],git:2,log:2,wai:1,transfer:1,support:[0,1],submit:2,why:1,avail:1,start:[0,1],interfac:1,pocoo:[],suit:1,forward:1,fork:[2,1],bottl:1,form:1,offer:1,forc:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:1,link:[2,1],gain:1,rfc1945:[],pull:[2,1],made:[2,1],wish:1,displai:1,until:1,url:1,below:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,evalu:1,request:[0,1,2],pragmat:0,parser:1,lectur:[0,1],exist:1,file:[2,1],pip:1,simplest:1,want:[2,1],mashup:[0,1],when:2,detail:1,virtual:1,field:1,other:1,rdbm:1,test:1,htmlparser:1,you:[2,1],repeat:1,intend:1,urllib2:1,djangocon:1,consid:1,sql:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,depth:1,train:[2,1],ignor:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,instructor:0,flask:1,tomayko:1,program:[0,1],decis:1,sens:1,spec:1,introduc:1,fax:0,sourc:1,string:1,chameleon:1,far:1,mcdonough:1,util:1,veri:1,word:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,small:[0,1],pleas:1,machin:[2,1],repres:1,outlin:[0,1],representational_state_transf:1,core:1,htm:1,restkit:1,design:1,pass:[0,1],further:1,carlo:1,click:2,even:1,index:0,what:1,sud:1,compar:1,section:1,lightn:1,brief:1,access:[0,1],delet:1,"new":[2,1],appeal:1,"public":1,contrast:[0,1],hasn:1,full:1,berkelei:1,gener:1,learn:[0,1],here:[0,1,2],inher:1,along:1,search:0,technolog:1,host:1,prior:0,base:[0,1],doctest:1,pick:1,implement:[0,1],chanc:1,ourselv:1,via:[0,1],repositori:[2,1],extra:[],apach:1,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,kessler:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],few:1,live:1,recommend:1,type:1,tell:2,memeori:0,relat:1,reign:1,enhanc:[],downtown:[],appendix:1,templat:1,particular:1,postgresql:1,must:[],topic:[0,1],account:2,retriev:1,valuabl:1,prepar:1,work:[0,1],focu:[0,1],can:[0,1,2],http2:[],purpos:1,root:1,repoz:1,quickstart:1,process:1,registr:1,smtp:1,indic:0,autumn:[],tag:1,explor:[0,1],tal:1,onlin:1,differenti:1,cours:[0,1,2],winter:0,secur:1,anoth:1,write:[2,1],concis:1,low:0,instead:1,simpl:[0,1],chri:1,updat:1,product:1,mar:1,resourc:1,attend:0,clone:2,after:2,sundai:1,lab:1,prerequisit:0,befor:1,mac:1,attent:1,mai:1,philosophi:1,data:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,minim:1,django:[0,1],tale:1,inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,style:1,how:[0,1],grade:0,offic:0,complex:1,rapidli:1,persist:[],comprehens:1,mail:0,might:1,pce:[],them:[0,1,2],good:[0,1],"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],choic:1,term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,went:1,gui:1,compil:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:[0,1],doug:1,our:1,happen:1,out:1,variabl:1,accomplish:1,network:[0,1],influenc:1,open:1,defend:1,publish:1,content:0,dso:0,rel:1,internet:[0,1],dive:1,integr:[0,1],advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,zodb:1,org:1,care:1,filter:1,lucumr:[],place:2,principl:0,assign:[0,1,2],south:1,first:1,origin:[2,1],softwar:[],render:1,feel:1,onc:[],qualiti:1,scene:1,date:1,instruct:1,restkit_:[],horribl:1,fantast:0,differ:1,"long":1,script:[2,1],associ:1,top:[2,1],system:1,master:[2,1],zeromq:1,"final":[2,1],schema:1,option:1,relationship:1,namespac:1,tool:1,copi:2,took:2,employ:0,part:[0,1],pars:1,mostli:1,eibrari:[],than:0,king:1,grew:1,provid:[0,1],tree:[],structur:1,exampl:[0,1],project:1,video:1,browser:1,"function":1,comput:[0,1],modern:1,ani:[0,1],pylon:1,have:[0,1,2],tabl:0,need:[2,1],strength:1,techniqu:1,equival:0,rout:1,note:[2,1],also:1,ideal:1,contact:0,take:1,which:1,soap:1,singl:1,begin:1,sure:1,distribut:0,though:1,usernam:2,object:[0,1],reach:1,most:1,plai:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,drive:1,doe:[0,1],determin:1,left:1,fact:1,wsgi:[0,1],think:1,abl:0,xcode:1,beautifulsoup:1,bring:0,session:[0,1],corner:2,find:[2,1],shield:1,xml:1,onli:1,just:1,explain:1,configur:0,activ:0,behind:1,should:[0,1],jan:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],familiar:1,express:[0,1],curiou:1,becaus:2,repo:1,tcp:1,progress:1,requir:[0,1],truli:1,email:2,rfc:1,common:1,contain:2,where:[],view:1,wiki:1,certif:0,set:1,creator:1,knowledg:1,see:1,result:[0,1],fail:0,close:2,databas:1,review:2,wikipedia:1,urllib:1,label:2,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:[0,1],across:1,attribut:1,altern:1,ftplib:[],extend:1,weak:1,extens:1,job:2,add:[2,1],consumpt:1,solv:[0,1],come:[],addit:1,pymotw:1,wsgiref:1,tutori:1,mani:1,com:[2,1],load:1,point:1,overview:1,unittest:1,jog:0,rfc2616:[],dispatch:1,walk:1,written:1,linux:1,tuesdai:0,throughout:0,admin:1,uci:1,quit:1,creat:[0,1,2],zpt:1,been:1,hellmann:1,compon:1,json:1,newcom:1,basic:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,ador:1,educ:0,present:[0,1],"case":1,look:1,solid:1,servic:[0,1],cursor:1,defin:1,"while":2,abov:1,wild:1,python_web:[2,1],earli:1,pyramid:[0,1],glanc:1,briandorsei:[],unit:1,cherrypi:1,lightweight:1,week06:1,minutia:0,sever:1,develop:1,xmlrpc:1,author:1,make:[2,1],week05:1,same:1,html:1,zope:1,pai:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],effect:1,kit:1,user:1,student:[0,1],extern:1,stack:1,built:1,travers:1,appropri:1,entri:1,coursework:0,well:1,inherit:1,without:1,person:1,client:1,greatest:1,thi:[0,1,2],choos:1,model:[2,1],portabl:0,latest:1,explan:1,protocol:[0,1],fast:1,execut:1,excel:1,rest:1,weekli:0,scrape:1,human:1,mysql:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,armin:1,book:1,blob:1,app:1,homework:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,week04:1,format:1,read:1,httplib:1,arguabl:1,know:1,world:1,bit:1,licens:1,apart:1,uwpython_web:[],like:[2,1],specif:1,altough:1,manifest:1,benefit:1,either:1,week02:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:[2,1],certain:1,satisfactori:0,week03:1,server:1,librari:[0,1],virtualenv:1,guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,leav:1,select:1,notabl:1,refer:[0,1],cgi:[0,1],cgi_exampl:[],investig:1,run:1,usag:[0,1],confer:1,popular:1,step:[2,1],dissert:1,although:1,januari:[0,1],feb:1,chapter:1,about:1,actual:[2,1],socket:[0,1],constraint:1,manag:1,microframework:1,includ:1,commit:[0,2],disabl:0,block:1,fulfil:1,own:[2,1],visit:2,washington:0,easy_instal:1,curios:1,assess:0,orm:1,foreward:1,chang:[2,1],your:[0,1,2],guardia:1,git:2,log:2,wai:1,transfer:1,support:[0,1],submit:2,why:1,avail:1,start:[0,1],interfac:1,pocoo:[],suit:1,forward:1,fork:[2,1],bottl:1,sqlite3:1,form:1,offer:1,forc:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:1,link:[2,1],gain:1,rfc1945:[],suppli:1,pull:[2,1],made:[2,1],possibl:1,wish:1,displai:1,until:1,url:1,below:1,those:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,evalu:1,request:[0,1,2],pragmat:0,parser:1,lectur:[0,1],intro:1,exist:1,file:[2,1],pip:1,simplest:1,again:1,want:[2,1],mashup:[0,1],when:2,detail:1,virtual:1,field:1,other:1,rdbm:1,test:1,htmlparser:1,you:[2,1],nice:1,repeat:1,intend:1,urllib2:1,gcc:1,djangocon:1,consid:1,sql:1,warn:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,depth:1,train:[2,1],ignor:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file From bf6b87a0ab5d8a0a28599018bf16354f9afe977a Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 18 Feb 2013 23:46:49 -0800 Subject: [PATCH 045/114] Update outline Complete week 7 slides --- _sources/outline.txt | 36 ++---- outline.html | 71 +++++------ presentations/week07.html | 247 +++++++++++++++++++++++++++++++++++++- presentations/week08.html | 37 +++++- searchindex.js | 2 +- 5 files changed, 321 insertions(+), 72 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index e9048d6a..c8a0d95b 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -496,14 +496,10 @@ Week 7 - Django **Date**: Feb. 19, 2013 -In this class we'll dive a bit further into Django. We'll take the app we -build for our week 6 homework and add style and security features. Along the -way we'll have a chance to learn more about Django's templates, models, views -and forms. - -We'll also discuss extending the functionality of our application using -existing Django **apps**. We'll see how these add-ons can help us to solve -common problems like user registration and database schema management. +In this class we'll dive a bit further into Django. We'll start with a +duplicate of the micro-blog we built in week 5 and work in teams to extend the +functionality by integrating existing apps. Along the way, we'll have a chance +to explore team-based development workflow. Finally, we'll discuss some of the strengths and weaknesses of Django. What makes it a good choice for some projects but not for others. @@ -511,6 +507,8 @@ makes it a good choice for some projects but not for others. Our assignment for the week will be to prepare for working with Pyramid in Week 8. +`Week 7 Presentation `_ + Reading ******* @@ -546,16 +544,6 @@ Reading different approaches to testing Django applications, including unit testing and doctests. -Before Class -************ - -We'll be adding a new bit of functionality to our app, and we'll do this not -by developing it ourselves, but by *integrating* an existing add-on. Before -class begins, please install `django-south -`_ and `django-registration -`_ into your Django -virtualenv. - Reference ********* @@ -576,12 +564,12 @@ This week we will have no code assignment. Instead the assignment will be to install Pyramid and the ZODB. **WARNING**: the ZODB is built with C-based extensions. Installing it requires -a c compiler. On linux, gcc will do nicely. If you are using Mac OS X, you'll -need to install XCode. This is not fast. Be sure to start early in the week to -leave time for this. +a c compiler. On linux, gcc will do nicely but you'll need to install python +development headers. If you are using Mac OS X, you'll need to install XCode. +This is not fast. Be sure to start early in the week to leave time for this. -A link will be supplied here to step-by-step instructions on installing what -is needed. +Read the `Instructions +`_ Week 8 - Pyramid ---------------- @@ -621,7 +609,7 @@ Compare and contrast forms of dispatch in Pyramid: * `URL Route Dispatch `_ -* `Traversal +* `Object Traversal `_ Learn a bit about the `ZODB `_ diff --git a/outline.html b/outline.html index ea6813b2..858e056c 100644 --- a/outline.html +++ b/outline.html @@ -447,17 +447,15 @@

    Assignment

    Week 7 - Django¶

    Date: Feb. 19, 2013

    -

    In this class we’ll dive a bit further into Django. We’ll take the app we -build for our week 6 homework and add style and security features. Along the -way we’ll have a chance to learn more about Django’s templates, models, views -and forms.

    -

    We’ll also discuss extending the functionality of our application using -existing Django apps. We’ll see how these add-ons can help us to solve -common problems like user registration and database schema management.

    +

    In this class we’ll dive a bit further into Django. We’ll start with a +duplicate of the micro-blog we built in week 5 and work in teams to extend the +functionality by integrating existing apps. Along the way, we’ll have a chance +to explore team-based development workflow.

    Finally, we’ll discuss some of the strengths and weaknesses of Django. What makes it a good choice for some projects but not for others.

    Our assignment for the week will be to prepare for working with Pyramid in Week 8.

    +

    Week 7 Presentation

    Reading¶

      @@ -487,14 +485,7 @@

      Reading

    -

    Before Class¶

    -

    We’ll be adding a new bit of functionality to our app, and we’ll do this not -by developing it ourselves, but by integrating an existing add-on. Before -class begins, please install django-south and django-registration into your Django -virtualenv.

    -
    -
    -

    Reference¶

    +

    Reference¶

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    This week we will have no code assignment. Instead the assignment will be to install Pyramid and the ZODB.

    WARNING: the ZODB is built with C-based extensions. Installing it requires -a c compiler. On linux, gcc will do nicely. If you are using Mac OS X, you’ll -need to install XCode. This is not fast. Be sure to start early in the week to -leave time for this.

    -

    A link will be supplied here to step-by-step instructions on installing what -is needed.

    +a c compiler. On linux, gcc will do nicely but you’ll need to install python +development headers. If you are using Mac OS X, you’ll need to install XCode. +This is not fast. Be sure to start early in the week to leave time for this.

    +

    Read the Instructions

    @@ -538,13 +528,13 @@

    Week 8 - Pyramid -

    Reading¶

    +
    +

    Reading¶

    Why you should care about Traversal.

    Compare and contrast forms of dispatch in Pyramid:

    Learn a bit about the ZODB

    -
    -

    References¶

    +
    +

    References¶

    Week 9 - The Cloud¶

    Date: Mar. 5, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    Week 10 - Plone¶

    Date: Mar. 12, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    @@ -667,23 +657,22 @@

    Table Of Contents

  • Week 7 - Django
  • Week 8 - Pyramid
  • Week 9 - The Cloud
  • Week 10 - Plone
  • diff --git a/presentations/week07.html b/presentations/week07.html index 5719b2d8..d762b475 100644 --- a/presentations/week07.html +++ b/presentations/week07.html @@ -5,7 +5,7 @@ -This is Week 7 +Internet Programming with Python @@ -29,15 +29,256 @@
    -

    This is Week 7

    +

    Internet Programming with Python

    +img/django-pony.png +

    Week 7: Django - Part 2

    +

    Wherein we extend Django's built-in features

    +

    image: http://djangopony.com/

    + +
    +
    +

    But First

    +

    Questions from the Reading?

    +
    +
    +

    And Second

    +

    A reminder of our task for today:

    +

    Extend a basic micro-blog application with one of the following features:

    +
      +
    • User Registration
    • +
    • 'Archive' views based on date or author
    • +
    • WYSIWYG visual editor for entry posts.
    • +
    • Tagging
    • +
    • Theme (make it beautiful)
    • +
    +
    +
    +

    Your Teams

    +

    Team 1:

    +

    Leader: Jon B

    +

    Members: Tyler, Matt K, John C, Wilson, Divesh

    +

    Your Task: User Registration with django-registration

    +
    +
    +

    Your Teams

    +

    Team 2:

    +

    Leader: Matt O

    +

    Members: David, Pho, Phil, Chris

    +

    Your Task: Archive Views using Generic date-based views

    +
    +
    +

    Your Teams

    +

    Team 3:

    +

    Leader: Austin

    +

    Members: Edet, Eric, Allan

    +

    Your Task: Content Tagging with django-taggit

    +
    +
    +

    Your Teams

    +

    Team 4:

    +

    Leader: Jason

    +

    Members: Daniel, Conor, Maria

    +

    Your Task: WYSIWYG Editing with django-ckeditor

    +
    +
    +

    My Guidelines

    +

    Each team can work from a single core repository.

    +

    Break the job into discreet tasks.

    +

    Work in twos or threes, each small group take a task and complete it.

    +

    Create a local branch. Complete your task then merge.

    +

    Team leaders manage communications, keep an eye on the big picture.

    +
    +
    +

    First Step - Setup

    +

    Get a 'core' repository (perhaps leaders fork mine):

    +
    +https://github.com/cewing/training.django_microblog
    +
    +

    Add your teammates as collaborators:

    +
      +
    • In your browser, view the repo you'll be working from in github.
    • +
    • Click on the 'settings' tab (in the grey bar below the repo name)
    • +
    • Click on the 'collaborators' menu item on the left
    • +
    • Add your teammates by github id to the list of collaborators
    • +
    +

    Now you should all have read-write access to this core repo.

    +
    +
    +

    Second Step - Workflow

    +

    Each small group, pick a driver

    +

    Each driver, clone the core repo to your local machine

    +

    Pick a task. Before you start to work, make a local branch:

    +
    +$ git checkout -b <task_name>
    +
    +

    Complete your task, making commits as you go (you're on a branch)

    +
    +
    +

    Third Step - Cleanup

    +

    When you're finished with a task, you'll merge your branch:

    +
    +$ git branch
    +  master
    +* <task_name>
    +$ git checkout master
    +Switched to branch 'master'
    +$ git pull origin master
    +From ...
    + * branch            master     -> FETCH_HEAD
    +Already up-to-date.
    +$ git merge <task_name>
    +$ git push origin master
    +
    +

    Rinse and repeat

    +
    +
    +

    In The End

    +

    Leaders, make a copy of the core repository on your machine

    +

    When your team is done, set up your machine to show off your results

    +

    At 8:30 we'll come together. Each team will have 5 minutes to show a quick +demo of their work, and say something about what they learned along the way.

    +
    +
    +

    Almost There

    +

    Any Questions?

    +
    +
    +

    And Now

    +

    begin

    +
    +
    +

    Reference

    +

    A Few useful git commands:

    +
    +$ git clone <repo_url>          # make a clone
    +$ git checkout -b <branch_name> # make a new local branch
    +$ git checkout master           # return to the master
    +$ git branch                    # list branches (and show current)
    +$ git commit -m "message"       # make a commit locally
    +$ git pull [origin [branch]]    # pull recent changes from remote
    +$ git push [origin [branch]]    # push committed changes to remote
    +$ git merge <branch_name>       # merge changes from other to current
    +
    +
    +
    +

    Assignment - Prep

    +

    For this week, you have no code assignment.

    +

    Instead I want you to focus on installing software and reading for next week. +Software we'll be installing uses C extensions, and so installing it on OS X +or Linux requires a compiler and python's development headers.

    +

    Ubuntu (our vms):

    +
    +$ sudo apt-get install python-dev
    +
    +

    OS X: Ensure that you have XCode installed. It's free, but big expect it +to take a while if you don't already have it.

    +

    Windows: You all are safe for the time being.

    +
    +
    +

    Assignment - Virtualenv

    +

    With that prep work out of the way, you're ready to start. First, set up a +virtualenv:

    +
    +$ python2.6 virtualenv.py --distribute pyramidenv
    +...
    +$ source pyramidenv/bin/activate
    +(pyramidenv)$
    +
    +

    Remeber, Windows users: > pyramidenv\Scripts\activate

    +
    +
    +

    Assignment - Install Pyramid

    +

    Once you've got a virtualenv set up and ready to go, install Pyramid:

    +
    +(pyramidenv)$ easy_install pyramid
    +
    +

    This will install a number of dependency packages, do not be alarmed.

    +

    Next, we'll install a different kind of Database, the ZODB.

    +
    +
    +

    Assignment - Install ZODB

    +

    If you're on OS X or Linux:

    +
    +(pyramidenv)$ easy_install ZODB3==3.10.5
    +
    +

    This will take some time. If you get errors, contact me directly or via the +Google Group.

    +

    Windows users, you'll have it a bit easier here. You have to install a binary +egg:

    +
    +[pyramidenv]> pip install --egg ZODB3==3.10.5
    +
    +
    +
    +

    Pause for Self Evaluation

    +

    At this point, you can check your work. Fire up a python interpreter in your +virtualenv:

    +
    +(pyramidenv)$ python
    +>>> import ZODB
    +>>> ^D
    +(pyramidenv)$
    +
    +

    If you get an ImportError when you try that, you're not done. Contact me.

    +
    +
    +

    Assignment - Extras

    +

    Next, we'll need to finish installing the bits we need for our work next +week:

    +
    +(pyramidenv)$ easy_install docutils nose coverage
    +...
    +(pyramidenv)$ easy_install pyramid_zodbconn pyramid_tm
    +...
    +(pyramidenv)$ easy_install pyramid_debugtoolbar
    +
    +

    These tools will allow us to manage ZODB connections, debug our app, and run +cool tests.

    +
    +
    +

    Assignment - Set Up Project

    +

    And finally, we'll set up a project for ourselves. This is like running +'startproject' for django in a way:

    +

    (pyramidenv)$ pcreate -s zodb wikitutorial

    +

    Do not be alarmed by the 'sorry for the convenience' message.

    +

    You get a folder called wikitutorial. In it you should see files like +setup.py and development.ini among others.

    +

    This is an installable package. You can install this package with +easy_install.

    +
    +
    +

    Final Self Evaluation

    +

    In fact, let's do that now, so we can prove to ourselves this all worked:

    +
    +(pyramidenv)$ cd wikitutorial
    +(pyramidenv)$ python setup.py develop
    +...
    +
    +

    You'll see a bunch of output. When it's over, run tests:

    +
    +(pyramidenv)$ python setup.py test -q
    +
    +
    +
    +

    Congratulations

    +

    When you've made it this far, and you see 1 test run successfully, you're +done.

    +

    If you like, you can see your work by running the new project:

    +
    +(pyramidenv)$ pserve development.ini
    +Starting server in PID 3056.
    +serving on http://0.0.0.0:6543
    +
    +

    Visit that url to see your work in action. then go grab a beer and curl up +with the reading for the week. There's a lot.

    diff --git a/presentations/week08.html b/presentations/week08.html index 21c30174..0101d19f 100644 --- a/presentations/week08.html +++ b/presentations/week08.html @@ -5,7 +5,7 @@ -This is Week 8 + @@ -29,15 +29,46 @@

    -

    This is Week 8

    + + +
    +
    +

    This is Week 8

    +
    +
    +

    scraps

    +

    Pyramid Intro

    +
      +
    • What is it
    • +
    • Where does it come from
    • +
    • What problem is it trying to solve?
    • +
    +

    Things that make pyramid like other frameworks we've seen

    +
      +
    • uses request/response model
    • +
    • can use url route dispatch
    • +
    • can use sql-based persistence
    • +
    +

    Things that make pyramid __unlike__ other frameworks we've seen

    +
      +
    • can also use traversal
    • +
    • can work with Object persistence via the ZODB
    • +
    +

    What is Traversal (as opposed to route dispatch?)

    +

    What is the ZODB?

    +
    +
    +

    Lab

    +

    work up the wiki tutorial +only go through views, then add tests

    +

    add security as an at-home exercise

    diff --git a/searchindex.js b/searchindex.js index 55af4cff..a8af312f 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,instructor:0,flask:1,tomayko:1,program:[0,1],decis:1,sens:1,spec:1,introduc:1,fax:0,sourc:1,string:1,chameleon:1,far:1,mcdonough:1,util:1,veri:1,word:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,small:[0,1],pleas:1,machin:[2,1],repres:1,outlin:[0,1],representational_state_transf:1,core:1,htm:1,restkit:1,design:1,pass:[0,1],further:1,carlo:1,click:2,even:1,index:0,what:1,sud:1,compar:1,section:1,lightn:1,brief:1,access:[0,1],delet:1,"new":[2,1],appeal:1,"public":1,contrast:[0,1],hasn:1,full:1,berkelei:1,gener:1,learn:[0,1],here:[0,1,2],inher:1,along:1,search:0,technolog:1,host:1,prior:0,base:[0,1],doctest:1,pick:1,implement:[0,1],chanc:1,ourselv:1,via:[0,1],repositori:[2,1],extra:[],apach:1,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,kessler:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],few:1,live:1,recommend:1,type:1,tell:2,memeori:0,relat:1,reign:1,enhanc:[],downtown:[],appendix:1,templat:1,particular:1,postgresql:1,must:[],topic:[0,1],account:2,retriev:1,valuabl:1,prepar:1,work:[0,1],focu:[0,1],can:[0,1,2],http2:[],purpos:1,root:1,repoz:1,quickstart:1,process:1,registr:1,smtp:1,indic:0,autumn:[],tag:1,explor:[0,1],tal:1,onlin:1,differenti:1,cours:[0,1,2],winter:0,secur:1,anoth:1,write:[2,1],concis:1,low:0,instead:1,simpl:[0,1],chri:1,updat:1,product:1,mar:1,resourc:1,attend:0,clone:2,after:2,sundai:1,lab:1,prerequisit:0,befor:1,mac:1,attent:1,mai:1,philosophi:1,data:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,minim:1,django:[0,1],tale:1,inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,style:1,how:[0,1],grade:0,offic:0,complex:1,rapidli:1,persist:[],comprehens:1,mail:0,might:1,pce:[],them:[0,1,2],good:[0,1],"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],choic:1,term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,went:1,gui:1,compil:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:[0,1],doug:1,our:1,happen:1,out:1,variabl:1,accomplish:1,network:[0,1],influenc:1,open:1,defend:1,publish:1,content:0,dso:0,rel:1,internet:[0,1],dive:1,integr:[0,1],advanc:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,zodb:1,org:1,care:1,filter:1,lucumr:[],place:2,principl:0,assign:[0,1,2],south:1,first:1,origin:[2,1],softwar:[],render:1,feel:1,onc:[],qualiti:1,scene:1,date:1,instruct:1,restkit_:[],horribl:1,fantast:0,differ:1,"long":1,script:[2,1],associ:1,top:[2,1],system:1,master:[2,1],zeromq:1,"final":[2,1],schema:1,option:1,relationship:1,namespac:1,tool:1,copi:2,took:2,employ:0,part:[0,1],pars:1,mostli:1,eibrari:[],than:0,king:1,grew:1,provid:[0,1],tree:[],structur:1,exampl:[0,1],project:1,video:1,browser:1,"function":1,comput:[0,1],modern:1,ani:[0,1],pylon:1,have:[0,1,2],tabl:0,need:[2,1],strength:1,techniqu:1,equival:0,rout:1,note:[2,1],also:1,ideal:1,contact:0,take:1,which:1,soap:1,singl:1,begin:1,sure:1,distribut:0,though:1,usernam:2,object:[0,1],reach:1,most:1,plai:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,drive:1,doe:[0,1],determin:1,left:1,fact:1,wsgi:[0,1],think:1,abl:0,xcode:1,beautifulsoup:1,bring:0,session:[0,1],corner:2,find:[2,1],shield:1,xml:1,onli:1,just:1,explain:1,configur:0,activ:0,behind:1,should:[0,1],jan:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],familiar:1,express:[0,1],curiou:1,becaus:2,repo:1,tcp:1,progress:1,requir:[0,1],truli:1,email:2,rfc:1,common:1,contain:2,where:[],view:1,wiki:1,certif:0,set:1,creator:1,knowledg:1,see:1,result:[0,1],fail:0,close:2,databas:1,review:2,wikipedia:1,urllib:1,label:2,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:[0,1],across:1,attribut:1,altern:1,ftplib:[],extend:1,weak:1,extens:1,job:2,add:[2,1],consumpt:1,solv:[0,1],come:[],addit:1,pymotw:1,wsgiref:1,tutori:1,mani:1,com:[2,1],load:1,point:1,overview:1,unittest:1,jog:0,rfc2616:[],dispatch:1,walk:1,written:1,linux:1,tuesdai:0,throughout:0,admin:1,uci:1,quit:1,creat:[0,1,2],zpt:1,been:1,hellmann:1,compon:1,json:1,newcom:1,basic:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,ador:1,educ:0,present:[0,1],"case":1,look:1,solid:1,servic:[0,1],cursor:1,defin:1,"while":2,abov:1,wild:1,python_web:[2,1],earli:1,pyramid:[0,1],glanc:1,briandorsei:[],unit:1,cherrypi:1,lightweight:1,week06:1,minutia:0,sever:1,develop:1,xmlrpc:1,author:1,make:[2,1],week05:1,same:1,html:1,zope:1,pai:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],effect:1,kit:1,user:1,student:[0,1],extern:1,stack:1,built:1,travers:1,appropri:1,entri:1,coursework:0,well:1,inherit:1,without:1,person:1,client:1,greatest:1,thi:[0,1,2],choos:1,model:[2,1],portabl:0,latest:1,explan:1,protocol:[0,1],fast:1,execut:1,excel:1,rest:1,weekli:0,scrape:1,human:1,mysql:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,armin:1,book:1,blob:1,app:1,homework:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,week04:1,format:1,read:1,httplib:1,arguabl:1,know:1,world:1,bit:1,licens:1,apart:1,uwpython_web:[],like:[2,1],specif:1,altough:1,manifest:1,benefit:1,either:1,week02:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:[2,1],certain:1,satisfactori:0,week03:1,server:1,librari:[0,1],virtualenv:1,guid:1,cgihttpserv:1,easili:1,noon:1,februari:1,leav:1,select:1,notabl:1,refer:[0,1],cgi:[0,1],cgi_exampl:[],investig:1,run:1,usag:[0,1],confer:1,popular:1,step:[2,1],dissert:1,although:1,januari:[0,1],feb:1,chapter:1,about:1,actual:[2,1],socket:[0,1],constraint:1,manag:1,microframework:1,includ:1,commit:[0,2],disabl:0,block:1,fulfil:1,own:[2,1],visit:2,washington:0,easy_instal:1,curios:1,assess:0,orm:1,foreward:1,chang:[2,1],your:[0,1,2],guardia:1,git:2,log:2,wai:1,transfer:1,support:[0,1],submit:2,why:1,avail:1,start:[0,1],interfac:1,pocoo:[],suit:1,forward:1,fork:[2,1],bottl:1,sqlite3:1,form:1,offer:1,forc:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:1,link:[2,1],gain:1,rfc1945:[],suppli:1,pull:[2,1],made:[2,1],possibl:1,wish:1,displai:1,until:1,url:1,below:1,those:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,evalu:1,request:[0,1,2],pragmat:0,parser:1,lectur:[0,1],intro:1,exist:1,file:[2,1],pip:1,simplest:1,again:1,want:[2,1],mashup:[0,1],when:2,detail:1,virtual:1,field:1,other:1,rdbm:1,test:1,htmlparser:1,you:[2,1],nice:1,repeat:1,intend:1,urllib2:1,gcc:1,djangocon:1,consid:1,sql:1,warn:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,depth:1,train:[2,1],ignor:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,instructor:0,flask:1,tomayko:1,program:[0,1],decis:1,sens:1,spec:1,introduc:1,fax:0,sourc:1,string:1,chameleon:1,far:1,mcdonough:1,util:1,veri:1,word:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,team:1,small:[0,1],pleas:1,machin:[2,1],repres:1,outlin:[0,1],representational_state_transf:1,core:1,htm:1,restkit:1,design:1,pass:[0,1],further:1,carlo:1,click:2,even:1,index:0,what:1,sud:1,compar:1,section:1,advanc:1,lightn:1,brief:1,access:[0,1],delet:1,"new":2,appeal:1,"public":1,contrast:[0,1],hasn:1,full:1,berkelei:1,gener:1,learn:[0,1],here:[0,1,2],inher:1,along:1,search:0,technolog:1,host:1,prior:0,base:[0,1],doctest:1,pick:1,implement:[0,1],chanc:1,ourselv:1,via:[0,1],repositori:[2,1],extra:[],apach:1,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,kessler:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],few:1,live:1,recommend:1,type:1,tell:2,memeori:0,relat:1,reign:1,enhanc:[],downtown:[],appendix:1,templat:1,particular:1,postgresql:1,must:[],topic:[0,1],account:2,retriev:1,valuabl:1,prepar:1,work:[0,1],focu:[0,1],can:[0,1,2],http2:[],purpos:1,root:1,repoz:1,quickstart:1,process:1,registr:[],smtp:1,indic:0,autumn:[],tag:1,explor:[0,1],tal:1,onlin:1,differenti:1,cours:[0,1,2],winter:0,secur:[],anoth:1,write:[2,1],concis:1,low:0,instead:1,simpl:[0,1],chri:1,updat:1,product:1,mar:1,resourc:1,attend:0,clone:2,after:2,sundai:1,lab:1,prerequisit:0,befor:1,mac:1,attent:1,mai:1,philosophi:1,data:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,minim:1,django:[0,1],tale:1,inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,style:[],how:[0,1],grade:0,offic:0,complex:1,rapidli:1,persist:[],comprehens:1,mail:0,might:1,pce:[],them:[0,1,2],good:[0,1],"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],choic:1,term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,went:1,gui:1,compil:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:[0,1],doug:1,our:1,happen:1,out:1,variabl:1,accomplish:1,network:[0,1],influenc:1,open:1,defend:1,publish:1,content:0,dso:0,rel:1,internet:[0,1],dive:1,integr:[0,1],workflow:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,zodb:1,org:1,care:1,filter:1,lucumr:[],place:2,principl:0,assign:[0,1,2],south:[],first:1,origin:[2,1],softwar:[],render:1,feel:1,onc:[],qualiti:1,scene:1,date:1,instruct:1,restkit_:[],horribl:1,fantast:0,differ:1,"long":1,script:[2,1],associ:1,top:[2,1],system:1,master:[2,1],zeromq:1,"final":[2,1],schema:1,option:1,relationship:1,namespac:1,tool:1,copi:2,took:2,employ:0,part:[0,1],pars:1,mostli:1,eibrari:[],than:0,king:1,grew:1,provid:[0,1],tree:[],structur:1,exampl:[0,1],project:1,video:1,browser:1,"function":1,comput:[0,1],modern:1,ani:[0,1],pylon:1,have:[0,1,2],tabl:0,need:[2,1],strength:1,techniqu:1,equival:0,rout:1,note:[2,1],also:1,ideal:1,contact:0,take:1,which:1,soap:1,singl:1,begin:1,sure:1,distribut:0,though:1,usernam:2,object:[0,1],reach:1,most:1,plai:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,request:[0,1,2],drive:1,doe:[0,1],determin:1,left:1,fact:1,wsgi:[0,1],think:1,abl:0,xcode:1,beautifulsoup:1,bring:0,session:[0,1],corner:2,find:[2,1],shield:1,xml:1,onli:1,just:1,explain:1,configur:0,activ:0,behind:1,should:[0,1],jan:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],familiar:1,express:[0,1],curiou:1,becaus:2,repo:1,tcp:1,progress:1,requir:[0,1],truli:1,email:2,rfc:1,common:1,contain:2,where:[],view:1,wiki:1,certif:0,set:1,creator:1,knowledg:1,see:1,result:[0,1],fail:0,close:2,databas:1,review:2,wikipedia:1,urllib:1,label:2,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:[0,1],across:1,attribut:1,altern:1,ftplib:[],extend:1,weak:1,extens:1,job:2,add:2,consumpt:1,solv:[0,1],come:[],addit:1,pymotw:1,wsgiref:1,tutori:1,mani:1,com:[2,1],load:1,point:1,overview:1,unittest:1,jog:0,rfc2616:[],dispatch:1,walk:1,header:1,written:1,linux:1,tuesdai:0,throughout:0,admin:1,uci:1,duplic:1,quit:1,creat:[0,1,2],zpt:1,been:1,hellmann:1,compon:1,json:1,newcom:1,basic:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,ador:1,educ:0,present:[0,1],"case":1,look:1,solid:1,servic:[0,1],cursor:1,defin:1,"while":2,abov:1,wild:1,python_web:[2,1],earli:1,pyramid:[0,1],glanc:1,briandorsei:[],unit:1,cherrypi:1,lightweight:1,week06:1,minutia:0,sever:1,develop:1,xmlrpc:1,author:1,make:[2,1],week05:1,same:1,html:1,zope:1,pai:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],effect:1,kit:1,user:[],student:[0,1],extern:1,stack:1,built:1,travers:1,appropri:1,entri:1,coursework:0,well:1,inherit:1,without:1,person:1,client:1,greatest:1,thi:[0,1,2],choos:1,model:[2,1],portabl:0,latest:1,explan:1,protocol:[0,1],fast:1,execut:1,excel:1,rest:1,weekli:0,scrape:1,human:1,mysql:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,blog:1,armin:1,book:1,blob:1,app:1,homework:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,week04:1,format:1,read:1,httplib:1,arguabl:1,know:1,world:1,bit:1,licens:1,apart:1,uwpython_web:[],like:[2,1],specif:1,altough:1,manifest:1,benefit:1,either:1,week02:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:[2,1],certain:1,satisfactori:0,week03:1,server:1,librari:[0,1],virtualenv:1,guid:1,cgihttpserv:1,micro:1,noon:1,februari:1,leav:1,select:1,notabl:1,refer:[0,1],cgi:[0,1],cgi_exampl:[],investig:1,run:1,usag:[0,1],confer:1,popular:1,step:[2,1],dissert:1,although:1,januari:[0,1],feb:1,chapter:1,about:1,actual:[2,1],socket:[0,1],constraint:1,manag:[],microframework:1,includ:1,commit:[0,2],disabl:0,block:1,fulfil:1,own:[2,1],visit:2,sql:1,washington:0,easy_instal:1,curios:1,assess:0,orm:1,foreward:1,chang:[2,1],your:[0,1,2],guardia:1,git:2,log:2,wai:1,transfer:1,support:[0,1],submit:2,why:1,avail:1,start:[0,1],interfac:1,pocoo:[],suit:1,forward:1,fork:[2,1],bottl:1,sqlite3:1,form:1,offer:1,forc:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:1,link:[2,1],gain:1,rfc1945:[],suppli:[],pull:[2,1],made:[2,1],possibl:1,wish:1,displai:1,until:1,url:1,below:1,those:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,evalu:1,cover:1,pragmat:0,parser:1,lectur:[0,1],intro:1,exist:1,file:[2,1],pip:1,simplest:1,again:1,want:[2,1],mashup:[0,1],when:2,detail:1,virtual:1,field:1,other:1,rdbm:1,test:1,htmlparser:1,you:[2,1],nice:1,repeat:1,intend:1,urllib2:1,gcc:1,djangocon:1,consid:1,easili:1,warn:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,depth:1,train:[2,1],ignor:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file From 940231e5b47fa78bbb575d9c402f7d0737e24856 Mon Sep 17 00:00:00 2001 From: cewing Date: Wed, 20 Feb 2013 09:54:30 -0800 Subject: [PATCH 046/114] fix broken link to week 7 instructions --- _sources/outline.txt | 2 +- outline.html | 2 +- searchindex.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index c8a0d95b..51a60f6e 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -569,7 +569,7 @@ development headers. If you are using Mac OS X, you'll need to install XCode. This is not fast. Be sure to start early in the week to leave time for this. Read the `Instructions -`_ +`_ Week 8 - Pyramid ---------------- diff --git a/outline.html b/outline.html index 858e056c..963372e7 100644 --- a/outline.html +++ b/outline.html @@ -503,7 +503,7 @@

    AssignmentInstructions

    +

    Read the Instructions

    diff --git a/searchindex.js b/searchindex.js index a8af312f..0cfb59d9 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,decid:1,instructor:0,flask:1,tomayko:1,program:[0,1],decis:1,sens:1,spec:1,introduc:1,fax:0,sourc:1,string:1,chameleon:1,far:1,mcdonough:1,util:1,veri:1,word:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,team:1,small:[0,1],pleas:1,machin:[2,1],repres:1,outlin:[0,1],representational_state_transf:1,core:1,htm:1,restkit:1,design:1,pass:[0,1],further:1,carlo:1,click:2,even:1,index:0,what:1,sud:1,compar:1,section:1,advanc:1,lightn:1,brief:1,access:[0,1],delet:1,"new":2,appeal:1,"public":1,contrast:[0,1],hasn:1,full:1,berkelei:1,gener:1,learn:[0,1],here:[0,1,2],inher:1,along:1,search:0,technolog:1,host:1,prior:0,base:[0,1],doctest:1,pick:1,implement:[0,1],chanc:1,ourselv:1,via:[0,1],repositori:[2,1],extra:[],apach:1,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,kessler:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],few:1,live:1,recommend:1,type:1,tell:2,memeori:0,relat:1,reign:1,enhanc:[],downtown:[],appendix:1,templat:1,particular:1,postgresql:1,must:[],topic:[0,1],account:2,retriev:1,valuabl:1,prepar:1,work:[0,1],focu:[0,1],can:[0,1,2],http2:[],purpos:1,root:1,repoz:1,quickstart:1,process:1,registr:[],smtp:1,indic:0,autumn:[],tag:1,explor:[0,1],tal:1,onlin:1,differenti:1,cours:[0,1,2],winter:0,secur:[],anoth:1,write:[2,1],concis:1,low:0,instead:1,simpl:[0,1],chri:1,updat:1,product:1,mar:1,resourc:1,attend:0,clone:2,after:2,sundai:1,lab:1,prerequisit:0,befor:1,mac:1,attent:1,mai:1,philosophi:1,data:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,minim:1,django:[0,1],tale:1,inform:[0,1],combin:1,allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,style:[],how:[0,1],grade:0,offic:0,complex:1,rapidli:1,persist:[],comprehens:1,mail:0,might:1,pce:[],them:[0,1,2],good:[0,1],"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,studi:1,tilkov:1,discuss:1,introduct:[0,1],choic:1,term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,went:1,gui:1,compil:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:[0,1],doug:1,our:1,happen:1,out:1,variabl:1,accomplish:1,network:[0,1],influenc:1,open:1,defend:1,publish:1,content:0,dso:0,rel:1,internet:[0,1],dive:1,integr:[0,1],workflow:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,zodb:1,org:1,care:1,filter:1,lucumr:[],place:2,principl:0,assign:[0,1,2],south:[],first:1,origin:[2,1],softwar:[],render:1,feel:1,onc:[],qualiti:1,scene:1,date:1,instruct:1,restkit_:[],horribl:1,fantast:0,differ:1,"long":1,script:[2,1],associ:1,top:[2,1],system:1,master:[2,1],zeromq:1,"final":[2,1],schema:1,option:1,relationship:1,namespac:1,tool:1,copi:2,took:2,employ:0,part:[0,1],pars:1,mostli:1,eibrari:[],than:0,king:1,grew:1,provid:[0,1],tree:[],structur:1,exampl:[0,1],project:1,video:1,browser:1,"function":1,comput:[0,1],modern:1,ani:[0,1],pylon:1,have:[0,1,2],tabl:0,need:[2,1],strength:1,techniqu:1,equival:0,rout:1,note:[2,1],also:1,ideal:1,contact:0,take:1,which:1,soap:1,singl:1,begin:1,sure:1,distribut:0,though:1,usernam:2,object:[0,1],reach:1,most:1,plai:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,request:[0,1,2],drive:1,doe:[0,1],determin:1,left:1,fact:1,wsgi:[0,1],think:1,abl:0,xcode:1,beautifulsoup:1,bring:0,session:[0,1],corner:2,find:[2,1],shield:1,xml:1,onli:1,just:1,explain:1,configur:0,activ:0,behind:1,should:[0,1],jan:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],familiar:1,express:[0,1],curiou:1,becaus:2,repo:1,tcp:1,progress:1,requir:[0,1],truli:1,email:2,rfc:1,common:1,contain:2,where:[],view:1,wiki:1,certif:0,set:1,creator:1,knowledg:1,see:1,result:[0,1],fail:0,close:2,databas:1,review:2,wikipedia:1,urllib:1,label:2,enough:1,between:1,"import":0,neither:1,experi:[0,1],approach:[0,1],across:1,attribut:1,altern:1,ftplib:[],extend:1,weak:1,extens:1,job:2,add:2,consumpt:1,solv:[0,1],come:[],addit:1,pymotw:1,wsgiref:1,tutori:1,mani:1,com:[2,1],load:1,point:1,overview:1,unittest:1,jog:0,rfc2616:[],dispatch:1,walk:1,header:1,written:1,linux:1,tuesdai:0,throughout:0,admin:1,uci:1,duplic:1,quit:1,creat:[0,1,2],zpt:1,been:1,hellmann:1,compon:1,json:1,newcom:1,basic:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,ador:1,educ:0,present:[0,1],"case":1,look:1,solid:1,servic:[0,1],cursor:1,defin:1,"while":2,abov:1,wild:1,python_web:[2,1],earli:1,pyramid:[0,1],glanc:1,briandorsei:[],unit:1,cherrypi:1,lightweight:1,week06:1,minutia:0,sever:1,develop:1,xmlrpc:1,author:1,make:[2,1],week05:1,same:1,html:1,zope:1,pai:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],effect:1,kit:1,user:[],student:[0,1],extern:1,stack:1,built:1,travers:1,appropri:1,entri:1,coursework:0,well:1,inherit:1,without:1,person:1,client:1,greatest:1,thi:[0,1,2],choos:1,model:[2,1],portabl:0,latest:1,explan:1,protocol:[0,1],fast:1,execut:1,excel:1,rest:1,weekli:0,scrape:1,human:1,mysql:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,blog:1,armin:1,book:1,blob:1,app:1,homework:1,build:1,real:[0,1],applic:[0,1],week01:1,march:0,around:1,week04:1,format:1,read:1,httplib:1,arguabl:1,know:1,world:1,bit:1,licens:1,apart:1,uwpython_web:[],like:[2,1],specif:1,altough:1,manifest:1,benefit:1,either:1,week02:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:[2,1],certain:1,satisfactori:0,week03:1,server:1,librari:[0,1],virtualenv:1,guid:1,cgihttpserv:1,micro:1,noon:1,februari:1,leav:1,select:1,notabl:1,refer:[0,1],cgi:[0,1],cgi_exampl:[],investig:1,run:1,usag:[0,1],confer:1,popular:1,step:[2,1],dissert:1,although:1,januari:[0,1],feb:1,chapter:1,about:1,actual:[2,1],socket:[0,1],constraint:1,manag:[],microframework:1,includ:1,commit:[0,2],disabl:0,block:1,fulfil:1,own:[2,1],visit:2,sql:1,washington:0,easy_instal:1,curios:1,assess:0,orm:1,foreward:1,chang:[2,1],your:[0,1,2],guardia:1,git:2,log:2,wai:1,transfer:1,support:[0,1],submit:2,why:1,avail:1,start:[0,1],interfac:1,pocoo:[],suit:1,forward:1,fork:[2,1],bottl:1,sqlite3:1,form:1,offer:1,forc:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:1,link:[2,1],gain:1,rfc1945:[],suppli:[],pull:[2,1],made:[2,1],possibl:1,wish:1,displai:1,until:1,url:1,below:1,those:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,evalu:1,cover:1,pragmat:0,parser:1,lectur:[0,1],intro:1,exist:1,file:[2,1],pip:1,simplest:1,again:1,want:[2,1],mashup:[0,1],when:2,detail:1,virtual:1,field:1,other:1,rdbm:1,test:1,htmlparser:1,you:[2,1],nice:1,repeat:1,intend:1,urllib2:1,gcc:1,djangocon:1,consid:1,easili:1,warn:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,depth:1,train:[2,1],ignor:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,although:1,decid:1,educ:0,git:2,flask:1,tomayko:1,program:[0,1],decis:1,sens:1,spec:1,introduc:1,fax:0,sourc:1,string:1,chameleon:1,far:1,mcdonough:1,util:1,veri:1,word:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,team:1,small:[0,1],pleas:1,cgi:[0,1],outlin:[0,1],representational_state_transf:1,cgi_exampl:[],htm:1,request:[0,1,2],restkit:1,design:1,pass:[0,1],further:1,carlo:1,click:2,even:1,index:0,what:1,sud:1,compar:1,defin:1,section:1,advanc:1,lightn:1,brief:1,access:[0,1],delet:1,"new":2,appeal:1,"public":1,contrast:[0,1],hasn:1,full:1,berkelei:1,gener:1,learn:[0,1],here:[0,1,2],cursor:1,inher:1,along:1,search:0,technolog:1,step:[2,1],prior:0,zodb:1,doctest:1,pick:1,implement:[0,1],chanc:1,ourselv:1,via:[0,1],repositori:[2,1],extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],few:1,live:1,recommend:1,type:1,tell:2,memeori:0,relat:1,reign:1,enhanc:[],downtown:[],appendix:1,templat:1,particular:1,actual:[2,1],must:[],topic:[0,1],account:2,retriev:1,valuabl:1,prepar:1,work:[0,1],focu:[0,1],can:[0,1,2],http2:[],purpos:1,root:1,repoz:1,quickstart:1,process:1,registr:[],smtp:1,indic:0,autumn:[],tag:1,explor:[0,1],tal:1,onlin:1,differenti:1,cours:[0,1,2],winter:0,secur:[],anoth:1,write:[2,1],how:[0,1],instead:1,simpl:[0,1],chri:1,updat:1,product:1,mar:1,resourc:1,attend:0,dive:1,after:2,sundai:1,lab:1,befor:1,mac:1,attent:1,date:1,philosophi:1,associ:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,author:1,django:[0,1],tale:1,inform:[0,1],combin:1,pocoo:[],allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,style:[],concis:1,grade:0,offic:0,html:1,rapidli:1,persist:[],comprehens:1,mail:0,might:1,pce:[],them:[0,1,2],good:[0,1],"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,tilkov:1,discuss:1,introduct:[0,1],choic:1,term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,went:1,gui:1,compil:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:[0,1],doug:1,our:1,happen:1,out:1,variabl:1,accomplish:1,network:[0,1],influenc:1,open:1,defend:1,publish:1,content:0,dso:0,rel:1,internet:[0,1],clone:2,common:1,workflow:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,base:[0,1],org:1,care:1,filter:1,lucumr:[],place:2,principl:0,assign:[0,1,2],south:[],first:1,origin:[2,1],softwar:[],render:1,feel:1,onc:[],qualiti:1,scene:1,mai:1,instruct:1,restkit_:[],horribl:1,fantast:0,differ:1,script:[2,1],data:1,top:[2,1],system:1,stack:1,master:[2,1],zeromq:1,"final":[2,1],schema:1,option:1,relationship:1,namespac:1,tool:1,copi:2,took:2,part:[0,1],pars:1,mostli:1,eibrari:[],than:0,king:1,grew:1,provid:[0,1],tree:[],structur:1,project:1,video:1,browser:1,fork:[2,1],comput:[0,1],modern:1,ani:[0,1],pylon:1,have:[0,1,2],tabl:0,need:[2,1],strength:1,techniqu:1,equival:0,rout:1,contact:0,note:[2,1],also:1,ideal:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,sure:1,distribut:0,though:1,usernam:2,object:[0,1],reach:1,most:1,plai:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,drive:1,doe:[0,1],determin:1,latest:1,fact:1,wsgi:[0,1],think:1,abl:0,xcode:1,beautifulsoup:1,bring:0,session:[0,1],corner:2,find:[2,1],shield:1,xml:1,onli:1,submit:2,execut:1,explain:1,configur:0,apach:1,enough:1,should:[0,1],kessler:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],familiar:1,express:[0,1],becaus:2,repo:1,rest:1,"import":0,requir:[0,1],truli:1,across:1,rfc:1,integr:[0,1],contain:2,where:[],view:1,wiki:1,certif:0,set:1,lectur:[0,1],creator:1,knowledg:1,see:1,result:[0,1],fail:0,close:2,databas:1,review:2,wikipedia:1,urllib:1,label:2,behind:1,between:1,progress:1,neither:1,experi:[0,1],approach:[0,1],email:2,attribut:1,altern:1,ftplib:[],extend:1,weak:1,extens:1,job:2,add:2,consumpt:1,solv:[0,1],come:[],addit:1,pymotw:1,wsgiref:1,tutori:1,mani:1,com:[2,1],load:1,point:1,overview:1,unittest:1,jog:0,rfc2616:[],dispatch:1,walk:1,header:1,written:1,linux:1,tuesdai:0,throughout:0,uci:1,duplic:1,quit:1,evalu:1,zpt:1,been:1,hellmann:1,compon:1,json:1,newcom:1,basic:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,ador:1,instructor:0,present:[0,1],"case":1,look:1,solid:1,servic:[0,1],employ:0,admin:1,"while":2,abov:1,visit:2,wild:1,python_web:[2,1],real:[0,1],pyramid:[0,1],file:[2,1],briandorsei:[],cherrypi:1,lightweight:1,march:0,minutia:0,sever:1,develop:1,week04:1,minim:1,make:[2,1],format:1,same:1,complex:1,zope:1,pai:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],effect:1,kit:1,user:[],student:[0,1],extern:1,studi:1,built:1,travers:1,appropri:1,entri:1,coursework:0,well:1,inherit:1,without:1,person:1,exampl:[0,1],greatest:1,thi:[0,1,2],choos:1,model:[2,1],portabl:0,left:1,explan:1,protocol:[0,1],just:1,when:2,tcp:1,weekli:0,select:1,virtual:1,human:1,mysql:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,blog:1,armin:1,other:1,blob:1,app:1,homework:1,build:1,earli:1,applic:[0,1],week01:1,week06:1,around:1,xmlrpc:1,week05:1,read:1,httplib:1,arguabl:1,know:1,world:1,bit:1,licens:1,apart:1,uwpython_web:[],like:[2,1],specif:1,altough:1,manifest:1,benefit:1,either:1,week02:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:[2,1],satisfactori:0,week03:1,server:1,librari:[0,1],virtualenv:1,guid:1,cgihttpserv:1,micro:1,noon:1,februari:1,leav:1,unit:1,notabl:1,refer:[0,1],machin:[2,1],core:1,investig:1,run:1,usag:[0,1],confer:1,popular:1,host:1,dissert:1,prerequisit:0,januari:[0,1],feb:1,chapter:1,about:1,postgresql:1,socket:[0,1],constraint:1,manag:[],microframework:1,includ:1,commit:[0,2],disabl:0,block:1,fulfil:1,own:[2,1],curiou:1,sql:1,washington:0,easy_instal:1,curios:1,assess:0,orm:1,foreward:1,chang:[2,1],your:[0,1,2],guardia:1,fast:1,log:2,wai:1,transfer:1,support:[0,1],"long":1,why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,forward:1,"function":1,bottl:1,sqlite3:1,form:1,offer:1,forc:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:1,link:[2,1],gain:1,rfc1945:[],suppli:[],pull:[2,1],made:[2,1],possibl:1,wish:1,displai:1,until:1,url:1,below:1,those:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1,2],certain:1,pragmat:0,parser:1,repres:1,intro:1,exist:1,glanc:1,pip:1,simplest:1,again:1,want:[2,1],mashup:[0,1],excel:1,detail:1,scrape:1,field:1,book:1,rdbm:1,test:1,ignor:1,you:[2,1],nice:1,repeat:1,intend:1,urllib2:1,gcc:1,djangocon:1,consid:1,easili:1,warn:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,depth:1,train:[2,1],htmlparser:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file From 6e25140d1454d922f722d58c3b86e43c21fe07d7 Mon Sep 17 00:00:00 2001 From: cewing Date: Wed, 20 Feb 2013 20:58:16 -0800 Subject: [PATCH 047/114] update install instructions on slides to match the assignments folder copy --- presentations/week07.html | 62 +++++++++++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 12 deletions(-) diff --git a/presentations/week07.html b/presentations/week07.html index d762b475..3046bba2 100644 --- a/presentations/week07.html +++ b/presentations/week07.html @@ -168,19 +168,57 @@

    Reference

    $ git merge <branch_name> # merge changes from other to current
    -
    -

    Assignment - Prep

    -

    For this week, you have no code assignment.

    -

    Instead I want you to focus on installing software and reading for next week. +

    +

    Assignment

    +

    For this week, you have no code assignment.

    +

    Instead I want you to focus on installing software and reading for next week. Software we'll be installing uses C extensions, and so installing it on OS X or Linux requires a compiler and python's development headers.

    -

    Ubuntu (our vms):

    -
    -$ sudo apt-get install python-dev
    +

    There are a few steps here, so follow along carefully.

    +
    +
    +

    Assignment - Linux Prep

    +

    For Linux machines, we'll need to have gcc (a c compiler) and python's +development headers in order to complete our tasks. The VMs we have access to +already have gcc installed, so all we need there is:

    +
    +::
     
    -

    OS X: Ensure that you have XCode installed. It's free, but big expect it -to take a while if you don't already have it.

    -

    Windows: You all are safe for the time being.

    +
    +$ sudo apt-get install python-dev
    +
    +
    +

    Assignment - OSX Prep

    +

    OS X does not come with a c compiler installed. You'll need to have XCode +installed. It's free, but big expect it to take a while if you don't already +have it.

    +

    Once it is installed, there's one more step, you have to install the +'optional' command line tools:

    +
      +
    • Launch XCode
    • +
    • From the XCode menu, click 'preferences' > 'Downloads' > 'Install Command +Line Tools'
    • +
    • Once it completes, you can quit XCode again.
    • +
    +
    +
    +

    Assignment - Windows Prep

    +

    There are pre-compiled binaries available for Windows, but we need one +.bat file in order to properly install them. We'll need to install Visual +Studio 2008 Express to get this file (if you already have another copy of VS, +you can probably skip this)

    +
      +
    • Download the installer (894MB): +http://download.microsoft.com/download/8/B/5/8B5804AD-4990-40D0-A6AA-CE894CBBB3DC/VS2008ExpressENUX1397868.iso
    • +
    • Extract the files to a folder (call it VS2008ExpressENUX1397868—it will be +2.68GB) using something like 7zip
    • +
    • Inside that folder double-click on Setup.hta
    • +
    • On the screen that comes up, click on the installer for Visual C++ 2008 +Express Edition and follow the instructions. Note: It does work if you +include the following two options which are pre-selected for you: (1) MSDN +Express Library for Visual Studio 2008, and (2) Microsoft SQL Server 2005 +Express Edition (x86).
    • +

    Assignment - Virtualenv

    @@ -277,8 +315,8 @@

    Congratulations

    Starting server in PID 3056. serving on http://0.0.0.0:6543 -

    Visit that url to see your work in action. then go grab a beer and curl up -with the reading for the week. There's a lot.

    +

    Visit http://localhost:6543 to see your work in action. then go grab a +beer and curl up with the reading for the week. There's a lot.

    From 84ecde9ab96f4e09240790e0a04ce34f50fe8a2c Mon Sep 17 00:00:00 2001 From: cewing Date: Sat, 23 Feb 2013 19:56:50 -0800 Subject: [PATCH 048/114] * images for week 8 presentation * project description page --- presentations/img/pyramid-medium.png | Bin 0 -> 9963 bytes presentations/img/wiki_frontpage.png | Bin 0 -> 25132 bytes project.html | 141 +++++++++++++++++++++++++++ 3 files changed, 141 insertions(+) create mode 100644 presentations/img/pyramid-medium.png create mode 100644 presentations/img/wiki_frontpage.png create mode 100644 project.html diff --git a/presentations/img/pyramid-medium.png b/presentations/img/pyramid-medium.png new file mode 100644 index 0000000000000000000000000000000000000000..f6e85d79324e51b994058c2b9894d674f87a2cfd GIT binary patch literal 9963 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 ZhAu|%iml?^zkfe7&@s`j(|q#me*uC^&*=aF literal 0 HcmV?d00001 diff --git a/presentations/img/wiki_frontpage.png b/presentations/img/wiki_frontpage.png new file mode 100644 index 0000000000000000000000000000000000000000..fc8c451e390037e495fae25c6e4d9c7666712aee GIT binary patch literal 25132 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 + + + + + + + Final Project — Internet Programming with Python 1.0 documentation + + + + + + + + + + + + + +
    +
    +
    +
    + +
    +

    Final Project¶

    +

    This course has a Final Project which is an integral part of the +evaluation. Students must complete the final project to successfully pass the +course.

    +
    +

    Project Parameters¶

    +
      +
    • Create a Website
    • +
    • It can do anything you want it to.
    • +
    • It should have some user interactions (forms users complete).
    • +
    • It should look nice
    • +
    • It should show off some aspect of what you’ve learned
    • +
    • It should take you about 15-20 hours to create (so small)
    • +
    • It will be due Friday following the last day of class (March 15)
    • +
    +

    Students should check with the instructor or TA to ensure project scope is +appropriate for the time available.

    +

    Much of the class time in weeks 9 and 10 will be devoted to working on this +project. Students will be able to work directly with the instructor and TA to +answer questions and get assistance.

    +
    +
    +

    Submitting The Project¶

    +

    The assignment is due at the end of the last week of class.

    +

    Assignments will be submitted via an email containing:

    +
      +
    • A Link to the project site running online
    • +
    • A Link to the project source code repository in Github.
    • +
    • Text describing the goals and outcomes of the project. (This can also +be in the form of a README in the source code repository)
    • +
    • Instructions on how to run the project locally on a laptop (including +information about any required packages or non-python software required)
    • +
    +
    +
    +

    Evaluating the Project¶

    +

    For evaluation purposes, the running site is the vital part. The instructor +will compare the description of project goals with the running site to see if +the goals were met.

    +
    +
    + + +
    +
    +
    +
    +
    +

    Table Of Contents

    + + +

    This Page

    + + + +
    +
    +
    +
    + + + + \ No newline at end of file From caf9d726c62afde2580aaf18f2e9a478cb825ad6 Mon Sep 17 00:00:00 2001 From: cewing Date: Sat, 23 Feb 2013 19:57:25 -0800 Subject: [PATCH 049/114] update index update outline update week 8 presentation --- _sources/index.txt | 1 + _sources/outline.txt | 10 +- index.html | 6 + outline.html | 7 +- presentations/week08.html | 684 +++++++++++++++++++++++++++++++++++++- searchindex.js | 2 +- 6 files changed, 698 insertions(+), 12 deletions(-) diff --git a/_sources/index.txt b/_sources/index.txt index 75d85a83..5535c193 100644 --- a/_sources/index.txt +++ b/_sources/index.txt @@ -16,6 +16,7 @@ Internet Programming with Python self outline assignments + project Winter Term, 2013 - (10 Sessions) diff --git a/_sources/outline.txt b/_sources/outline.txt index 51a60f6e..1b31ba8c 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -657,7 +657,15 @@ References Assignment ********** -To Be Decided +Begin work on your final project. You must communicate your plan with Dan and +I first to ensure it is of an appropriate scope. If you are having trouble +getting started, let us know. + +We will be spending most of the class over the next two weeks working. Be +prepared to take advantage of the time with Dan and me by getting started now. + +`Reread the project specification +`_ Week 9 - The Cloud ------------------ diff --git a/index.html b/index.html index 9d4e240b..de0d6682 100644 --- a/index.html +++ b/index.html @@ -69,6 +69,12 @@

    Internet Programming with PythonAssignments +
  • Final Project +
  • diff --git a/outline.html b/outline.html index 963372e7..585842e9 100644 --- a/outline.html +++ b/outline.html @@ -571,7 +571,12 @@

    References

    Assignment¶

    -

    To Be Decided

    +

    Begin work on your final project. You must communicate your plan with Dan and +I first to ensure it is of an appropriate scope. If you are having trouble +getting started, let us know.

    +

    We will be spending most of the class over the next two weeks working. Be +prepared to take advantage of the time with Dan and me by getting started now.

    +

    Reread the project specification

    diff --git a/presentations/week08.html b/presentations/week08.html index 0101d19f..eb4af459 100644 --- a/presentations/week08.html +++ b/presentations/week08.html @@ -5,7 +5,7 @@ - +Internet Programming with Python @@ -29,18 +29,690 @@
    +

    Internet Programming with Python

    +img/pyramid-medium.png +

    Week 8: Pyramid

    +
    +
    Wherein we learn
    +
    it's not built by aliens
    +
    + +
    +
    +

    But First

    +

    Questions from the Reading?

    +
    +
    +

    And Now

    +
    +
    +

    Lab - Part One

    +

    Getting To Know Pyramid

    +
    +
    +

    Scaffolds and Opinions

    +

    Pyramid uses what it calls scaffolds to get you started on a new project.

    +

    When you ran pcreate -s zodb wikitutorial you were invoking the zodb +scaffold

    +

    Pyramid the framework is highly un-opinionated.

    +

    Scaffolds, conversely, can be quite opinionated. The one we used has chosen +our persistence mechanism (ZODB) and how we will reach our code (Traversal).

    +
    +
    +

    Project Layout

    +

    Running pcreate has set up a file structure for us:

    +
    +wikitutorial/
    +    CHANGES.txt
    +    development.ini
    +    MANIFEST.in
    +    production.ini
    +    README.txt
    +    setup.cfg
    +    setup.py
    +    wikitutorial/
    +        __init__.py
    +        models.py
    +        static/
    +        templates/
    +        tests.py
    +        views.py
    +
    +
    +
    +

    Similarities to Django

    +

    Our project is organized with an outer project folder and an inner package +folder (see the __init__.py?)

    +

    The name of that outer directory is not really important.

    +

    Our inner package folder has a models.py, tests.py and views.py module

    +

    Our inner package folder has a static/ and templates/ directory

    +
    +
    +

    Differences from Django

    +

    Our outer module has a setup.py file, which allows it to be installed +with pip or easy_install

    +

    There is no manage.py file. Pyramid commands are console scripts.

    +

    There is nothing magical in Pyramid about the name of the models.py +module.

    +

    There is nothing magical in Pyramid about the names of the static/ or +templates/ directories.

    +
    +
    +

    Pyramid System Configuration

    +

    Pyramid keeps configuration intended for an entire installation in .ini +files at the top of a project.

    +

    When you deploy an app to some wsgi server, you'll reference one of these files

    +

    Settings there affect the environment of all apps that are running in that +wsgi server.

    +

    It is much like Django's settings.py but is not a python module.

    +
    +
    +

    Pyramid is Python

    +

    Running a Pyramid application is really just like running a Python module. In +the __init__.py file of your app package, you'll find a main +function:

    +
    +def main(global_config, **settings):
    +    """ This function returns a Pyramid WSGI application.
    +    """
    +    config = Configurator(root_factory=root_factory,
    +                          settings=settings)
    +    config.add_static_view('static', 'static', cache_max_age=3600)
    +    config.scan()
    +    return config.make_wsgi_app()
    +
    +

    App-level configuration is done here.

    +
    +
    +

    App Configuration

    +
    +def main(global_config, **settings):
    +
    +

    global_config will be a dictionary of the settings from your .ini file +that come in the [DEFAULT] section (if there is one). These settings will be +shared across all apps that are involved in the system.

    +

    The settings passed in here are the settings from your .ini file that +come in the section that corresponds to your application. They will be used +only by your app.

    +
    +
    +

    App Configuration

    +
    +config = Configurator(root_factory=root_factory,
    +                      settings=settings)
    +config.add_static_view('static', 'static', cache_max_age=3600)
    +config.scan()
    +
    +

    Pyramid does configuration work when an app is run using the Configurator +class.

    +

    The Configurator provides and extensible API for configuring just about +everything.

    +

    You can read more in the pyramid.config documentation

    +
    +
    +

    The Application Root

    +

    The Configurator constructor can take a root_factory keyword argument.

    +

    The root_factory of your app is the router that determines how to dispatch +individual requests.

    +

    If you do not provide this argument, the default root factory, which uses URL +Dispatch, will be used.

    +

    In our case, we want to use Traversal for our app, so we provide a custom +root_factory.

    +
    +
    +

    Our Root Factory

    +
    +from pyramid_zodbconn import get_connection
    +from .models import appmaker
     
    +def root_factory(request):
    +    conn = get_connection(request)
    +    return appmaker(conn.root())
    +
    +

    In our root_factory method, we grab a connection to the ZODB and pass that into +a call to appmaker, the result is returned (and becomes our app root).

    +

    So what exactly does appmaker do?

    +
    +
    +

    The appmaker

    +
    +def appmaker(zodb_root):
    +    if not 'app_root' in zodb_root:
    +        app_root = MyModel()
    +        zodb_root['app_root'] = app_root
    +        import transaction
    +        transaction.commit()
    +    return zodb_root['app_root']
    +
    +

    In essence, we are ensuring that there is an app_root object stored in the +ZODB, and then returning that. And that simple Python object will manage our +Traversal based application.

    +
    +
    +

    Seeing It Live

    +

    You've done this at home, but let's repeat the exercise here.

    +

    In a terminal, change directories into your wikitutorial project folder +(where you see development.ini). Fire up your pyramid virtualenv and serve +our app:

    +
    +(pyramidenv)$ pserve development.ini
    +Starting server in PID 16698.
    +serving on http://0.0.0.0:6543
    +
    +

    Load http://localhost:6543 and view your app root.

    +
    +
    +

    Why is it Pretty?

    +

    If we understand correctly what is happening so far, we are looking at an +instance of MyModel.

    +

    What makes it look like this?

    +

    The secret sauce lies in view configuration

    +
    +
    +

    Pyramid Views

    +
    +from pyramid.view import view_config
    +from .models import MyModel
     
    +@view_config(context=MyModel, renderer='templates/mytemplate.pt')
    +def my_view(request):
    +    return {'project': 'wikitutorial'}
    +
    +

    Pyramid views can be configured with the @view_config() decorator.

    +

    Or call config.add_view() method in your app main.

    +

    config.scan() in main picks up all config decorators.

    +
    +
    +

    View Configuration

    +

    The view_config decorator (and the add_view method) take a number of +interesting arguments. In our case there are two.

    +

    renderer is used to designate how the results returned by the view +callable will be handled. In our case, it's a template that will render to an +HTML page.

    +

    context determines the type of object for which this view may be used. It +is an example of a predicate argument, which can be used to place +restrictions on when and how a view may be called.

    +

    Predicates are a very powerful system for choosing views. Read more about them +in view configuration

    -
    -

    This is Week 8

    +
    +

    Wiki Models

    +

    Now that we have a basic idea of what's going on in the code generated for us, +it's time to build our wiki models.

    +

    We'll need to have a Python class that corresponds to a page in our wiki.

    +

    This will be the type of object we view when we are looking at the wiki.

    +

    We'll also need to have a root object, which will be a container for all the +pages we create for the wiki.

    +
    +
    +

    Persistence Magic

    +

    In an SQL database, data about an object is written to tables. In the ZODB, +the object itself is saved in the database.

    +

    The ZODB provides base classes that will automatically save themselves. We +will use two of these:

    +
      +
    • Persistent - a class that automatically tracks changes to class +attributes and saves them.
    • +
    • PersistenMapping - roughly equivalent to a Python dictionary, this +class will save changes to itself and its keys and values.
    • +
    +

    The ZODB also provides lists and more complex persistent data structures like +BTrees.

    +
    +
    +

    Traversal Magic

    +

    Traversal is supported by two object properties: __name__ and +__parent__.

    +

    Every object in a system which is going to use Traversal must provide +these two attributes.

    +

    The root object in a Traversal system will have both of these attributes set +to None.

    +
    +
    +

    The Wiki Class

    +

    Open models.py from our wikitutorial package directory.

    +

    First, delete the MyModel class. We won't need it.

    +

    Add the following in its place:

    +
    +class Wiki(PersistentMapping):
    +    __name__ = None
    +    __parent__ = None
    +
    +
    +
    +

    The Page Class

    +

    To that same file (models.py) add one import and a second class definition:

    +
    +from persistent import Persistent
    +
    +class Page(Persistent):
    +    def __init__(self, data):
    +        self.data = data
    +
    +

    What about __name__ and __parent__?

    +

    We'll add those to each instance when we create it.

    +
    +
    +

    Update Appmaker

    +

    The existing appmaker function needs to be updated for our new models:

    +
    +def appmaker(zodb_root):
    +    if not 'app_root' in zodb_root:
    +        app_root = Wiki()
    +        frontpage = Page('This is the front page')
    +        app_root['FrontPage'] = frontpage
    +        frontpage.__name__ = 'FrontPage'
    +        frontpage.__parent__ = app_root
    +        zodb_root['app_root'] = app_root
    +        import transaction
    +        transaction.commit()
    +    return zodb_root['app_root']
    +
    +
    +
    +

    A Last Bit of Cleanup

    +

    We've deleted the MyModel class. But we still have views that +reference the class.

    +

    Open the views.py file in your package directory and delete everything +but the first line:

    +
    +from pyramid.view import view_config
    +
    +

    Next, we'll test our models.

    +
    +
    +

    Test the Wiki Model

    +

    Open tests.py from the package directory. Delete the ViewTests +class and replace it with the following:

    +
    +class WikiModelTests(unittest.TestCase):
    +
    +    def _getTargetClass(self):
    +        from wikitutorial.models import Wiki
    +        return Wiki
    +
    +    def _makeOne(self):
    +        return self._getTargetClass()()
    +
    +    def test_it(self):
    +        wiki = self._makeOne()
    +        self.assertEqual(wiki.__parent__, None)
    +        self.assertEqual(wiki.__name__, None)
    +
    +
    +
    +

    Test the Page Model

    +

    Add the following test class as well:

    +
    +class PageModelTests(unittest.TestCase):
    +
    +    def _getTargetClass(self):
    +        from wikitutorial.models import Page
    +        return Page
    +
    +    def _makeOne(self, data=u'some data'):
    +        return self._getTargetClass()(data=data)
    +
    +    def test_constructor(self):
    +        instance = self._makeOne()
    +        self.assertEqual(instance.data, u'some data')
    +
    +
    +
    +

    Test Appmaker

    +

    One more test class:

    +
    +class AppmakerTests(unittest.TestCase):
    +
    +    def _callFUT(self, zodb_root):
    +        from .models import appmaker
    +        return appmaker(zodb_root)
    +
    +    def test_it(self):
    +        root = {}
    +        self._callFUT(root)
    +        self.assertEqual(root['app_root']['FrontPage'].data,
    +                         'This is the front page')
    +
    +
    +
    +

    A Quick Interlude

    +

    In your package directory you should see a file: Data.fs.

    +

    This is the ZODB. It contains references to a class that doesn't exist +anymore (MyModel). This means it is broken.

    +

    Make sure Pyramid is not running.

    +

    Delete Data.fs. It will be re-created as needed.

    +
    +
    +

    Run our Tests

    +

    Finally, let's run our tests:

    +
    +(pyramidenv)$ python setup.py test
    +...
    +Ran 2 tests in 0.000s
    +
    +OK
    +
    +

    We can also run tests to tell us our code-coverage:

    +
    +(pyramidenv)$ nosetests --cover-package=tutorial --cover-erase --with-coverage
    +
    +
    +
    +

    Preparing for Views

    +

    Our Page model has a data attribute, which represents the text in the +page.

    +

    Our pages will use ReStructuredText, a plain-text format that can be rendered +to HTML with a Python module called docutils.

    +

    Our project is installable as a python package. It declares its own +dependencies so that they will also be installed.

    +

    We need to add the docutils package to this list.

    +
    +
    +

    Package Dependencies

    +

    Open the setup.py file from our project directory. Add docutils to +the list requires:

    +
    +requires = [
    +    'pyramid',
    +    'pyramid_zodbconn',
    +    'transaction',
    +    'pyramid_tm',
    +    'pyramid_debugtoolbar',
    +    'ZODB3',
    +    'waitress',
    +    'docutils', # <- ADD THIS
    +    ]
    +
    +
    +
    +

    Complete the Change

    +

    Any time you make a change to setup.py for a package you are working on, +you need to re-install that package to pick up the changes:

    +
    +(pyramidenv)$ python setup.py develop
    +
    +

    You'll see a whole bunch of stuff flicker by. In it will be a reference to +Searching for docutils.

    +
    +
    +

    Adding Views

    +

    Open views.py again. Add the following:

    +
    +from docutils.core import publish_parts
    +import re
    +
    +from pyramid.httpexceptions import HTTPFound
    +from pyramid.view import view_config # <- ALREADY THERE
    +
    +from wikitutorial.models import Page
    +
    +# regular expression used to find WikiWords
    +wikiwords = re.compile(r"\b([A-Z]\w+[A-Z]+\w+)")
    +
    +@view_config(context='.models.Wiki')
    +def view_wiki(context, request):
    +    return HTTPFound(location=request.resource_url(context,
    +                                                   'FrontPage'))
    +
    +
    +
    +

    Some Notes

    +

    New pages in a typical wiki are added by writing WikiWords into the page.

    +

    r"\b([A-Z]\w+[A-Z]+\w+)" is a regular expression that will locate +WikiWords.

    +

    Note that the @view_config for the view_wiki function has no +renderer argument. It will never be shown

    +

    Instead, it returns HTTPFound, (302 Found). Calling +request.resource_url provides a URL for the redirect.

    +
    +
    +

    Add a Page View

    +
    +@view_config(context='.models.Page', renderer='templates/view.pt')
    +def view_page(context, request):
    +    wiki = context.__parent__
    +
    +    def check(match):
    +        word = match.group(1)
    +        if word in wiki:
    +            page = wiki[word]
    +            view_url = request.resource_url(page)
    +            return '<a href="%s">%s</a>' % (view_url, word)
    +        else:
    +            add_url = request.application_url + '/add_page/' + word
    +            return '<a href="%s">%s</a>' % (add_url, word)
    +
    +    content = publish_parts(
    +        context.data, writer_name='html')['html_body']
    +    content = wikiwords.sub(check, content)
    +    edit_url = request.resource_url(context, 'edit_page')
    +    return dict(page=context, content=content, edit_url=edit_url)
    +
    +
    +
    +

    Adding Templates

    +

    What will the page template for the view_page function need to be called?

    +

    Go ahead and create view.pt in your templates directory.

    +

    While you're there, also copy the file base.pt from +assignments/week08/lab in the class repo.

    +

    Like Django templates, Chameleon templates can extend other templates. Our +base.pt template will be the master, and our view.pt and edit.pt +templates will extend it.

    +
    +
    +

    The view.pt Template

    +

    Type this code into your view.pt file:

    +
    +<metal:main use-macro="load: base.pt">
    + <metal:content metal:fill-slot="main-content">
    +  <div tal:replace="structure content">
    +    Page text goes here.
    +  </div>
    +  <p>
    +    <a tal:attributes="href edit_url" href="">
    +      Edit this page
    +    </a>
    +  </p>
    + </metal:content>
    +</metal:main>
    +
    +
    +
    +

    A Few Notes

    +

    Chameleon page templates are valid XML. The templating language uses tal/metal +namespace XML tag attributes.

    +

    <metal:main use-macro="load: base.pt"> tells us we will be using +base.pt as our main template macro.

    +

    Template macros can define one or more slots. These are like the blocks +in Jinja2 or Django templates.

    +

    <metal:content metal:fill-slot="main-content"> tells us that everything +here will go in the main-content slot.

    +
    +
    +

    More Notes

    +
    +<div tal:replace="structure content">
    +  Page text goes here.
    +</div>
    +
    +

    This uses the tal directive replace to completely replace the +<div> tag with whatever html is in content.

    +
    +<a tal:attributes="href edit_url" href="">
    +  Edit this page
    +</a>
    +
    +

    Here, we use the tal directive attributes to set the href for our +anchor to the value passed into our template as edit_url.

    +
    +
    +

    View Your Work

    +

    We've created the following:

    +
      +
    • A wiki view that redirects to the automatically-created FrontPage page
    • +
    • A page view that will render the data from a page, along with a url for +editing that page
    • +
    • A page template to show a wiki page.
    • +
    +

    That's all we need to be able to see our work. Start Pyramid:

    +
    +(pyramidenv)$ pserve development.ini
    +Starting server in PID 43925.
    +serving on http://0.0.0.0:6543
    +
    +

    Load http://localhost:6543/

    +
    +
    +

    What You Should See

    +img/wiki_frontpage.png +
    +
    +

    Editing a Page

    +

    Back in views.py add the following:

    +
    +@view_config(name='edit_page', context='.models.Page',
    +             renderer='templates/edit.pt')
    +def edit_page(context, request):
    +    if 'form.submitted' in request.params:
    +        context.data = request.params['body']
    +        return HTTPFound(location = request.resource_url(context))
    +
    +    return dict(page=context,
    +                save_url=request.resource_url(context, 'edit_page'))
    +
    +
    +
    +

    The Edit Template

    +

    Create and fill edit.pt in templates:

    +
    +<metal:main use-macro="load: base.pt">
    +  <metal:pagename metal:fill-slot="page-name">
    +  Editing
    +  <b><span tal:replace="page.__name__">Page Name Goes Here
    +     </span></b>
    +  </metal:pagename>
    +  <metal:content metal:fill-slot="main-content">
    +    <form action="${save_url}" method="post">
    +      <textarea name="body" tal:content="page.data" rows="10"
    +                cols="60"/><br/>
    +      <input type="submit" name="form.submitted" value="Save"/>
    +    </form>
    +  </metal:content>
    +</metal:main>
    +
    +
    +
    +

    FrontPage Content

    +

    Restart Pyramid, then back in your browser, click the Edit this page link.

    +

    Erase the existing text and add this instead:

    +
    +==========
    +Front Page
    +==========
    +
    +This is the front page.  It features
    +
    +* a heading
    +* a list
    +* a wikiword link to AnotherPage
    +
    +
    +
    +

    View Your Work

    +

    Click the Save button and see what you've gotten.

    +

    If you get strangely formatted text that warns you about Title overline too +short, you didn't add enough equals signs above or below the page title. Go +back and ensure that there are the same number of equal signs as the total +number of characters in the title.

    +

    Note that AnotherPage is a link, click it.

    +
    +
    +

    Adding a Page

    +

    Back in views.py add the code for creating a new page:

    +
    +@view_config(name='add_page', context='.models.Wiki',
    +             renderer='templates/edit.pt')
    +def add_page(context, request):
    +    pagename = request.subpath[0]
    +    if 'form.submitted' in request.params:
    +        body = request.params['body']
    +        page = Page(body)
    +        page.__name__ = pagename
    +        page.__parent__ = context
    +        context[pagename] = page
    +        return HTTPFound(location = request.resource_url(page))
    +    save_url = request.resource_url(context, 'add_page', pagename)
    +    page = Page('')
    +    page.__name__ = pagename
    +    page.__parent__ = context
    +    return dict(page=page, save_url=save_url)
    +
    +
    +
    +

    A Few Notes

    +

    Notice that the context for this view is the Wiki model

    +

    pagename = request.subpath[0] gives us the first element of the path +after the current context and view. What is that?

    +

    Notice that here is where we set the __name__ and __parent__ +attributes of our new Page.

    +

    We add a new Page to the wiki as if the wiki were a Python dict: +context[pagename] = page

    +
    +
    +

    One More Note

    +

    Look at the similarity in how a form is handled here to the way it is handled +in Django (in pseudocode):

    +
    +if the_form_is_submitted:
    +    handle_the_form()
    +    return go_to_the_success_url()
    +return an_empty_form()
    +
    +

    Forms that modify data should only be handled on POST.

    +

    Could you improve this code to ensure that?

    +
    +
    +

    And a Question

    +

    Why do we create a new, empty Page object at the end of the add_page view?

    +
    +
    +

    In-Class Exercises

    +

    Try to accomplish as many of these as you can before you leave:

    +
      +
    • Make the add_page view show "Adding <NewPage>" in the header (do not create +a new template to do this)
    • +
    • Make the edit_page and add_page views only change data on POST.
    • +
    • Make the link that says "You can return to the FrontPage" disappear when you +are viewing the front page.
    • +
    +
    +
    +

    Assignment

    +

    By now you should have some idea what you want to do for your final project.

    +

    Your assignment this week is to get started on it.

    +

    If you have not already done so, please talk to Dan or me about your ideas. I +want to help you pick something you can get done in time.

    +

    If you are stuck on how to start, reach out to Dan or me. We are here to help +you.

    +
    +
    +

    Next Week

    +

    Next week we will have a short lecture about deployment options for Python web +applications.

    +

    We'll look at deploying to shared hosting servers, VPSs and 'the cloud'.

    +

    Your classmate Austin will give a short talk on the tools he used to deploy +djangor to his VM in last week's class.

    +

    And the rest of the time (about 1.5-2 hours) will be reserved for working on +your final projects.

    scraps

    @@ -64,12 +736,6 @@

    scraps

    What is Traversal (as opposed to route dispatch?)

    What is the ZODB?

    -
    -

    Lab

    -

    work up the wiki tutorial -only go through views, then add tests

    -

    add security as an at-home exercise

    -
    diff --git a/searchindex.js b/searchindex.js index 0cfb59d9..f236c18a 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:[0,2],code:[0,1],queri:1,consum:1,four:1,concept:1,skim:1,ronach:1,abil:1,edu:[0,1],follow:1,although:1,decid:1,educ:0,git:2,flask:1,tomayko:1,program:[0,1],decis:1,sens:1,spec:1,introduc:1,fax:0,sourc:1,string:1,chameleon:1,far:1,mcdonough:1,util:1,veri:1,word:1,unexcus:0,level:0,button:2,list:[2,1],"try":1,imaplib:1,team:1,small:[0,1],pleas:1,cgi:[0,1],outlin:[0,1],representational_state_transf:1,cgi_exampl:[],htm:1,request:[0,1,2],restkit:1,design:1,pass:[0,1],further:1,carlo:1,click:2,even:1,index:0,what:1,sud:1,compar:1,defin:1,section:1,advanc:1,lightn:1,brief:1,access:[0,1],delet:1,"new":2,appeal:1,"public":1,contrast:[0,1],hasn:1,full:1,berkelei:1,gener:1,learn:[0,1],here:[0,1,2],cursor:1,inher:1,along:1,search:0,technolog:1,step:[2,1],prior:0,zodb:1,doctest:1,pick:1,implement:[0,1],chanc:1,ourselv:1,via:[0,1],repositori:[2,1],extra:[],activ:0,modul:[0,1],gatewai:1,api:[0,1],seattl:[],instal:1,txt:1,plone:[0,1],cloud:[0,1],highli:0,jan:1,from:[0,1,2],commun:1,univers:0,regist:0,two:[0,1],websit:[2,1],few:1,live:1,recommend:1,type:1,tell:2,memeori:0,relat:1,reign:1,enhanc:[],downtown:[],appendix:1,templat:1,particular:1,actual:[2,1],must:[],topic:[0,1],account:2,retriev:1,valuabl:1,prepar:1,work:[0,1],focu:[0,1],can:[0,1,2],http2:[],purpos:1,root:1,repoz:1,quickstart:1,process:1,registr:[],smtp:1,indic:0,autumn:[],tag:1,explor:[0,1],tal:1,onlin:1,differenti:1,cours:[0,1,2],winter:0,secur:[],anoth:1,write:[2,1],how:[0,1],instead:1,simpl:[0,1],chri:1,updat:1,product:1,mar:1,resourc:1,attend:0,dive:1,after:2,sundai:1,lab:1,befor:1,mac:1,attent:1,date:1,philosophi:1,associ:1,demonstr:1,goal:1,classroom:0,"short":[2,1],practic:1,author:1,django:[0,1],tale:1,inform:[0,1],combin:1,pocoo:[],allow:1,order:0,talk:1,tty:0,help:1,hypertext:1,insight:1,soon:[],through:[0,1],dynam:1,style:[],concis:1,grade:0,offic:0,html:1,rapidli:1,persist:[],comprehens:1,mail:0,might:1,pce:[],them:[0,1,2],good:[0,1],"return":1,thei:[0,1],python:[0,1],dai:1,initi:1,cew:[2,1],framework:[0,1],hateoa:1,httplib2:1,tilkov:1,discuss:1,introduct:[0,1],choic:1,term:0,name:1,didn:1,bonu:1,accommod:0,slide:0,each:[0,1],debug:1,found:1,went:1,gui:1,compil:1,domain:1,laboratori:[0,1],individu:0,weeknn:2,realli:1,connect:[0,1],doug:1,our:1,happen:1,out:1,variabl:1,accomplish:1,network:[0,1],influenc:1,open:1,defend:1,publish:1,content:0,dso:0,rel:1,internet:[0,1],clone:2,common:1,workflow:1,given:1,pub:1,standard:[0,1],quick:[0,1],reason:0,base:[0,1],org:1,care:1,filter:1,lucumr:[],place:2,principl:0,assign:[0,1,2],south:[],first:1,origin:[2,1],softwar:[],render:1,feel:1,onc:[],qualiti:1,scene:1,mai:1,instruct:1,restkit_:[],horribl:1,fantast:0,differ:1,script:[2,1],data:1,top:[2,1],system:1,stack:1,master:[2,1],zeromq:1,"final":[2,1],schema:1,option:1,relationship:1,namespac:1,tool:1,copi:2,took:2,part:[0,1],pars:1,mostli:1,eibrari:[],than:0,king:1,grew:1,provid:[0,1],tree:[],structur:1,project:1,video:1,browser:1,fork:[2,1],comput:[0,1],modern:1,ani:[0,1],pylon:1,have:[0,1,2],tabl:0,need:[2,1],strength:1,techniqu:1,equival:0,rout:1,contact:0,note:[2,1],also:1,ideal:1,client:1,take:1,which:1,soap:1,singl:1,begin:1,sure:1,distribut:0,though:1,usernam:2,object:[0,1],reach:1,most:1,plai:1,phase:1,"class":[0,1,2],don:[0,1,2],dens:0,clear:1,cover:1,drive:1,doe:[0,1],determin:1,latest:1,fact:1,wsgi:[0,1],think:1,abl:0,xcode:1,beautifulsoup:1,bring:0,session:[0,1],corner:2,find:[2,1],shield:1,xml:1,onli:1,submit:2,execut:1,explain:1,configur:0,apach:1,enough:1,should:[0,1],kessler:1,disert:1,suppos:1,smtplib:1,local:[2,1],move:1,variou:1,get:[2,1],familiar:1,express:[0,1],becaus:2,repo:1,rest:1,"import":0,requir:[0,1],truli:1,across:1,rfc:1,integr:[0,1],contain:2,where:[],view:1,wiki:1,certif:0,set:1,lectur:[0,1],creator:1,knowledg:1,see:1,result:[0,1],fail:0,close:2,databas:1,review:2,wikipedia:1,urllib:1,label:2,behind:1,between:1,progress:1,neither:1,experi:[0,1],approach:[0,1],email:2,attribut:1,altern:1,ftplib:[],extend:1,weak:1,extens:1,job:2,add:2,consumpt:1,solv:[0,1],come:[],addit:1,pymotw:1,wsgiref:1,tutori:1,mani:1,com:[2,1],load:1,point:1,overview:1,unittest:1,jog:0,rfc2616:[],dispatch:1,walk:1,header:1,written:1,linux:1,tuesdai:0,throughout:0,uci:1,duplic:1,quit:1,evalu:1,zpt:1,been:1,hellmann:1,compon:1,json:1,newcom:1,basic:1,presentations_:[],life:1,emphas:0,great:1,athom:[2,1],understand:1,docxmlrpcserv:1,ador:1,instructor:0,present:[0,1],"case":1,look:1,solid:1,servic:[0,1],employ:0,admin:1,"while":2,abov:1,visit:2,wild:1,python_web:[2,1],real:[0,1],pyramid:[0,1],file:[2,1],briandorsei:[],cherrypi:1,lightweight:1,march:0,minutia:0,sever:1,develop:1,week04:1,minim:1,make:[2,1],format:1,same:1,complex:1,zope:1,pai:1,document:[0,1,2],complet:[0,1,2],week:[0,1],http:[2,1],effect:1,kit:1,user:[],student:[0,1],extern:1,studi:1,built:1,travers:1,appropri:1,entri:1,coursework:0,well:1,inherit:1,without:1,person:1,exampl:[0,1],greatest:1,thi:[0,1,2],choos:1,model:[2,1],portabl:0,left:1,explan:1,protocol:[0,1],just:1,when:2,tcp:1,weekli:0,select:1,virtual:1,human:1,mysql:1,languag:[0,1],previous:0,web:[0,1],versu:0,now:[2,1],easi:1,drawback:1,apache2:1,blog:1,armin:1,other:1,blob:1,app:1,homework:1,build:1,earli:1,applic:[0,1],week01:1,week06:1,around:1,xmlrpc:1,week05:1,read:1,httplib:1,arguabl:1,know:1,world:1,bit:1,licens:1,apart:1,uwpython_web:[],like:[2,1],specif:1,altough:1,manifest:1,benefit:1,either:1,week02:1,page:[0,1,2],underli:[0,1],www:1,right:[2,1],often:1,interact:1,some:[2,1],back:[2,1],satisfactori:0,week03:1,server:1,librari:[0,1],virtualenv:1,guid:1,cgihttpserv:1,micro:1,noon:1,februari:1,leav:1,unit:1,notabl:1,refer:[0,1],machin:[2,1],core:1,investig:1,run:1,usag:[0,1],confer:1,popular:1,host:1,dissert:1,prerequisit:0,januari:[0,1],feb:1,chapter:1,about:1,postgresql:1,socket:[0,1],constraint:1,manag:[],microframework:1,includ:1,commit:[0,2],disabl:0,block:1,fulfil:1,own:[2,1],curiou:1,sql:1,washington:0,easy_instal:1,curios:1,assess:0,orm:1,foreward:1,chang:[2,1],your:[0,1,2],guardia:1,fast:1,log:2,wai:1,transfer:1,support:[0,1],"long":1,why:1,avail:1,start:[0,1],interfac:1,low:0,suit:1,forward:1,"function":1,bottl:1,sqlite3:1,form:1,offer:1,forc:1,criteria:1,github:[2,1],rpclib:1,sqlalchemi:1,link:[2,1],gain:1,rfc1945:[],suppli:[],pull:[2,1],made:[2,1],possibl:1,wish:1,displai:1,until:1,url:1,below:1,those:1,absenc:0,fundament:1,problem:[0,1],more:[0,1],similar:1,featur:1,creat:[0,1,2],certain:1,pragmat:0,parser:1,repres:1,intro:1,exist:1,glanc:1,pip:1,simplest:1,again:1,want:[2,1],mashup:[0,1],excel:1,detail:1,scrape:1,field:1,book:1,rdbm:1,test:1,ignor:1,you:[2,1],nice:1,repeat:1,intend:1,urllib2:1,gcc:1,djangocon:1,consid:1,easili:1,warn:1,wife:1,directori:[2,1],wifi:0,xmlrpclib:1,depth:1,train:[2,1],htmlparser:1,time:1,push:[2,1],hello:1},objtypes:{},titles:["Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["index","outline","assignments"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:[1,3],code:[0,1,2],queri:2,consum:2,four:2,concept:2,skim:2,ronach:2,abil:2,edu:[1,2],follow:[0,2],although:2,decid:2,educ:1,git:3,flask:2,tomayko:2,descript:0,program:[1,2],decis:2,text:0,sens:2,spec:2,introduc:2,fax:1,sourc:[0,2],string:2,chameleon:2,far:2,mcdonough:2,util:2,veri:2,word:2,unexcus:1,hour:0,level:1,button:3,list:[3,2],"try":2,imaplib:2,team:2,small:[0,1,2],pleas:2,cgi:[1,2],outlin:[1,2],representational_state_transf:2,cgi_exampl:[],htm:2,request:[1,2,3],restkit:2,design:2,pass:[0,1,2],further:2,carlo:2,click:3,even:2,index:1,what:[0,2],sud:2,compar:[0,2],defin:2,section:2,advanc:2,lightn:2,brief:2,access:[1,2],delet:2,"new":3,appeal:2,"public":2,contrast:[1,2],hasn:2,full:2,berkelei:2,gener:2,learn:[0,1,2],here:[1,2,3],met:0,let:2,cursor:2,inher:2,along:2,search:1,technolog:2,step:[3,2],prior:1,zodb:2,doctest:2,pick:2,implement:[1,2],chanc:2,ourselv:2,via:[0,1,2],repositori:[0,3,2],extra:[],activ:1,modul:[1,2],gatewai:2,api:[1,2],seattl:[],instal:2,txt:2,plone:[1,2],cloud:[1,2],highli:1,jan:2,from:[1,2,3],describ:0,commun:2,univers:1,regist:1,two:[1,2],next:2,websit:[0,3,2],few:2,live:2,recommend:2,scope:[0,2],type:2,tell:3,memeori:1,relat:2,reign:2,enhanc:[],downtown:[],appendix:2,templat:2,particular:2,actual:[3,2],must:[0,2],topic:[1,2],account:3,retriev:2,valuabl:2,prepar:2,work:[0,1,2],focu:[1,2],can:[0,1,2,3],http2:[],purpos:[0,2],root:2,repoz:2,quickstart:2,process:2,registr:[],smtp:2,indic:1,autumn:[],tag:2,explor:[1,2],tal:2,onlin:[0,2],differenti:2,cours:[0,1,2,3],end:0,winter:1,secur:[],anoth:2,write:[3,2],how:[0,1,2],vital:0,answer:0,instead:2,simpl:[1,2],chri:2,updat:2,product:2,mar:2,resourc:2,attend:1,dive:2,after:3,sundai:2,lab:2,befor:2,mac:2,attent:2,date:2,philosophi:2,associ:2,demonstr:2,goal:[0,2],classroom:1,"short":[3,2],practic:2,author:2,django:[1,2],tale:2,inform:[0,1,2],combin:2,pocoo:[],allow:2,order:1,talk:2,tty:1,help:2,hypertext:2,insight:2,soon:[],through:[1,2],dynam:2,paramet:[0,1],style:[],directli:0,concis:2,grade:1,offic:1,html:2,rapidli:2,persist:[],comprehens:2,mail:1,might:2,pce:[],them:[1,2,3],good:[1,2],"return":2,thei:[1,2],python:[0,1,2],dan:2,dai:[0,2],initi:2,cew:[3,2],framework:[1,2],hateoa:2,httplib2:2,tilkov:2,discuss:2,introduct:[1,2],choic:2,term:1,name:2,anyth:0,didn:2,bonu:2,accommod:1,slide:1,each:[1,2],debug:2,found:2,went:2,gui:2,compil:2,domain:2,laboratori:[1,2],individu:1,weeknn:3,realli:2,ensur:[0,2],connect:[1,2],doug:2,our:2,happen:2,out:2,variabl:2,accomplish:2,network:[1,2],influenc:2,open:2,defend:2,publish:2,content:1,dso:1,rel:2,internet:[1,2],clone:3,common:2,workflow:2,given:2,pub:2,standard:[1,2],quick:[1,2],reason:1,base:[1,2],org:2,fridai:0,care:2,filter:2,lucumr:[],place:3,due:0,principl:1,assign:[0,1,2,3],south:[],first:2,origin:[3,2],softwar:0,render:2,feel:2,onc:[],qualiti:2,scene:2,mai:2,instruct:[0,2],restkit_:[],horribl:2,fantast:1,differ:2,script:[3,2],data:2,top:[3,2],system:2,stack:2,master:[3,2],zeromq:2,"final":[0,1,2,3],schema:2,option:2,relationship:2,namespac:2,tool:2,copi:3,took:3,part:[0,1,2],pars:2,mostli:2,eibrari:[],than:1,king:2,grew:2,provid:[1,2],tree:[],structur:2,project:[0,1,2],were:0,video:2,browser:2,fork:[3,2],comput:[1,2],modern:2,ani:[0,1,2],packag:0,pylon:2,have:[0,1,2,3],tabl:1,need:[3,2],strength:2,techniqu:2,equival:1,rout:2,client:2,note:[3,2],also:[0,2],ideal:2,contact:1,take:[0,2],which:[0,2],soap:2,singl:2,begin:2,sure:2,distribut:1,though:2,usernam:3,object:[1,2],reach:2,most:2,plai:2,plan:2,phase:2,"class":[0,1,2,3],don:[1,2,3],dens:1,clear:2,cover:2,drive:2,doe:[1,2],determin:2,latest:2,fact:2,wsgi:[1,2],think:2,show:0,abl:[0,1],xcode:2,beautifulsoup:2,bring:1,session:[1,2],corner:3,find:[3,2],shield:2,xml:2,onli:2,submit:[0,1,3],execut:2,aspect:0,explain:2,configur:1,apach:2,enough:2,should:[0,1,2],kessler:2,disert:2,suppos:2,smtplib:2,local:[0,3,2],over:2,move:2,variou:2,get:[0,3,2],familiar:2,express:[1,2],becaus:3,repo:2,rest:2,"import":1,requir:[0,1,2],truli:2,across:2,rfc:2,integr:[0,1,2],contain:[0,3],where:[],view:2,wiki:2,certif:1,set:2,lectur:[1,2],reread:2,creator:2,knowledg:2,see:[0,2],result:[1,2],fail:1,close:3,databas:2,review:3,wikipedia:2,urllib:2,label:3,behind:2,between:2,progress:2,neither:2,experi:[1,2],approach:[1,2],email:[0,3],attribut:2,altern:2,ftplib:[],extend:2,weak:2,extens:2,job:3,add:3,consumpt:2,solv:[1,2],come:[],addit:2,last:0,pymotw:2,wsgiref:2,tutori:2,mani:2,com:[3,2],load:2,point:2,overview:2,unittest:2,jog:1,rfc2616:[],dispatch:2,walk:2,header:2,written:2,linux:2,tuesdai:1,throughout:1,uci:2,duplic:2,quit:2,evalu:[0,1,2],zpt:2,been:2,hellmann:2,compon:2,json:2,newcom:2,basic:2,presentations_:[],life:2,emphas:1,great:2,athom:[3,2],understand:2,docxmlrpcserv:2,ador:2,instructor:[0,1],present:[1,2],"case":2,look:[0,2],solid:2,servic:[1,2],employ:1,admin:2,"while":3,outcom:0,abov:2,visit:3,wild:2,python_web:[3,2],real:[1,2],pyramid:[1,2],file:[3,2],advantag:2,briandorsei:[],readm:0,non:0,cherrypi:2,lightweight:2,march:[0,1],minutia:1,sever:2,develop:2,week04:2,minim:2,make:[3,2],format:2,same:2,check:0,complex:2,zope:2,pai:2,document:[1,2,3],complet:[0,1,2,3],week:[0,1,2],http:[3,2],assist:0,effect:2,kit:2,user:0,student:[0,1,2],extern:2,studi:2,built:2,travers:2,appropri:[0,2],off:0,entri:2,coursework:1,well:2,inherit:2,without:2,person:2,exampl:[1,2],greatest:2,thi:[0,1,2,3],choos:2,model:[3,2],portabl:1,spend:2,left:2,explan:2,protocol:[1,2],just:2,when:3,laptop:0,tcp:2,weekli:1,select:2,virtual:2,human:2,mysql:2,languag:[1,2],previous:1,web:[1,2],versu:1,now:[3,2],easi:2,drawback:2,apache2:2,blog:2,armin:2,other:2,blob:2,app:2,homework:2,build:2,earli:2,applic:[1,2],week01:2,week06:2,around:2,xmlrpc:2,week05:2,read:2,httplib:2,arguabl:2,know:2,world:2,bit:2,licens:2,apart:2,uwpython_web:[],like:[3,2],specif:2,altough:2,manifest:2,benefit:2,either:2,week02:2,page:[1,2,3],underli:[1,2],www:2,right:[3,2],often:2,interact:[0,2],some:[0,3,2],back:[3,2],satisfactori:1,week03:2,server:2,librari:[1,2],virtualenv:2,guid:2,cgihttpserv:2,micro:2,noon:2,februari:2,leav:2,unit:2,notabl:2,refer:[1,2],machin:[3,2],core:2,investig:2,run:[0,2],usag:[1,2],confer:2,popular:2,host:2,dissert:2,prerequisit:1,januari:[1,2],feb:2,chapter:2,about:[0,2],postgresql:2,socket:[1,2],constraint:2,manag:[],microframework:2,includ:[0,2],commit:[1,3],disabl:1,block:2,fulfil:2,own:[3,2],curiou:2,sql:2,washington:1,easy_instal:2,curios:2,assess:1,orm:2,foreward:2,chang:[3,2],your:[1,2,3],guardia:2,fast:2,log:3,wai:2,transfer:2,support:[1,2],question:0,"long":2,why:2,avail:[0,2],start:[1,2],much:0,interfac:2,low:1,suit:2,forward:2,"function":2,bottl:2,sqlite3:2,form:[0,2],offer:2,forc:2,criteria:2,github:[0,3,2],rpclib:2,sqlalchemi:2,link:[0,3,2],gain:2,rfc1945:[],suppli:[],pull:[3,2],made:[3,2],possibl:2,wish:2,displai:2,troubl:2,until:2,url:2,below:2,those:2,absenc:1,fundament:2,site:0,problem:[1,2],more:[1,2],similar:2,featur:2,creat:[0,1,2,3],certain:2,pragmat:1,parser:2,repres:2,intro:2,exist:2,glanc:2,pip:2,simplest:2,again:2,successfulli:0,want:[0,3,2],mashup:[1,2],excel:2,detail:2,scrape:2,field:2,book:2,rdbm:2,test:2,ignor:2,you:[0,3,2],nice:[0,2],repeat:2,intend:2,devot:0,urllib2:2,gcc:2,djangocon:2,consid:2,easili:2,warn:2,wife:2,directori:[3,2],wifi:1,xmlrpclib:2,depth:2,train:[3,2],htmlparser:2,time:[0,2],push:[3,2],hello:2},objtypes:{},titles:["Final Project","Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["project","index","outline","assignments"]}) \ No newline at end of file From 82196c3eb151f1ee4b04fd034b27a9e720e9a0c8 Mon Sep 17 00:00:00 2001 From: cewing Date: Sat, 23 Feb 2013 19:58:00 -0800 Subject: [PATCH 050/114] source of te project page --- _sources/project.txt | 45 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 _sources/project.txt diff --git a/_sources/project.txt b/_sources/project.txt new file mode 100644 index 00000000..5adc37d8 --- /dev/null +++ b/_sources/project.txt @@ -0,0 +1,45 @@ +Final Project +============= + +This course has a **Final Project** which is an integral part of the +evaluation. Students must complete the final project to successfully pass the +course. + +Project Parameters +------------------ + +* Create a Website +* It can do anything you want it to. +* It should have some user interactions (forms users complete). +* It should look nice +* It should show off some aspect of what you've learned +* It should take you about 15-20 hours to create (so small) +* It will be due Friday following the last day of class (March 15) + +Students should check with the instructor or TA to ensure project scope is +appropriate for the time available. + +Much of the class time in weeks 9 and 10 will be devoted to working on this +project. Students will be able to work directly with the instructor and TA to +answer questions and get assistance. + +Submitting The Project +---------------------- + +The assignment is due at the end of the last week of class. + +Assignments will be submitted via an email containing: + +* A Link to the project site **running online** +* A Link to **the project source code repository** in Github. +* Text describing **the goals and outcomes** of the project. (This can also + be in the form of a README in the source code repository) +* Instructions on **how to run the project locally** on a laptop (including + information about any required packages or non-python software required) + +Evaluating the Project +---------------------- + +For evaluation purposes, the running site is the vital part. The instructor +will compare the description of project goals with the running site to see if +the goals were met. From b24eb922ba4bf1e4721e71ff6605202e0b380aa9 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 25 Feb 2013 09:59:46 -0800 Subject: [PATCH 051/114] updates from Dan --- presentations/week08.html | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/presentations/week08.html b/presentations/week08.html index eb4af459..c18c4f2a 100644 --- a/presentations/week08.html +++ b/presentations/week08.html @@ -153,15 +153,15 @@

    App Configuration

    Pyramid does configuration work when an app is run using the Configurator class.

    -

    The Configurator provides and extensible API for configuring just about +

    The Configurator provides an extensible API for configuring just about everything.

    You can read more in the pyramid.config documentation

    The Application Root

    The Configurator constructor can take a root_factory keyword argument.

    -

    The root_factory of your app is the router that determines how to dispatch -individual requests.

    +

    The root_factory of your app returns the router that determines how to +dispatch individual requests.

    If you do not provide this argument, the default root factory, which uses URL Dispatch, will be used.

    In our case, we want to use Traversal for our app, so we provide a custom @@ -177,8 +177,8 @@

    Our Root Factory

    conn = get_connection(request) return appmaker(conn.root()) -

    In our root_factory method, we grab a connection to the ZODB and pass that into -a call to appmaker, the result is returned (and becomes our app root).

    +

    We grab a connection to the ZODB and pass that into a call to appmaker, +the result is returned (and becomes our app root).

    So what exactly does appmaker do?

    @@ -192,9 +192,8 @@

    The appmaker

    transaction.commit() return zodb_root['app_root'] -

    In essence, we are ensuring that there is an app_root object stored in the -ZODB, and then returning that. And that simple Python object will manage our -Traversal based application.

    +

    We ensure that there is an app_root object stored in the ZODB, and return +it. That simple Python object will manage our Traversal based application.

    Seeing It Live

    @@ -261,7 +260,7 @@

    Persistence Magic

    • Persistent - a class that automatically tracks changes to class attributes and saves them.
    • -
    • PersistenMapping - roughly equivalent to a Python dictionary, this +
    • PersistentMapping - roughly equivalent to a Python dictionary, this class will save changes to itself and its keys and values.

    The ZODB also provides lists and more complex persistent data structures like @@ -321,8 +320,8 @@

    Update Appmaker

    A Last Bit of Cleanup

    We've deleted the MyModel class. But we still have views that reference the class.

    -

    Open the views.py file in your package directory and delete everything -but the first line:

    +

    Open the views.py file in your package directory and comment out +everything except the first line:

     from pyramid.view import view_config
     
    @@ -390,6 +389,7 @@

    A Quick Interlude

    anymore (MyModel). This means it is broken.

    Make sure Pyramid is not running.

    Delete Data.fs. It will be re-created as needed.

    +

    You can also delete Data.fs.* (.tmp, .index, .lock)

    Run our Tests

    @@ -397,7 +397,7 @@

    Run our Tests

     (pyramidenv)$ python setup.py test
     ...
    -Ran 2 tests in 0.000s
    +Ran 3 tests in 0.000s
     
     OK
     
    From 2105e8b5c3e6a394bd0b6b3de1437f98048ff1e8 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 25 Feb 2013 22:07:33 -0800 Subject: [PATCH 052/114] * add image for week 8 presentation * complete and polish presentation slides --- presentations/img/sheep_pyramid.jpg | Bin 0 -> 231431 bytes presentations/week08.html | 115 +++++++++++++++++++++++++++- 2 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 presentations/img/sheep_pyramid.jpg diff --git a/presentations/img/sheep_pyramid.jpg b/presentations/img/sheep_pyramid.jpg new file mode 100644 index 0000000000000000000000000000000000000000..17b0858e8ee06b9989935fcf5ff63d91c8a46fe9 GIT binary patch literal 231431 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%0DAS^(C|0;40FDpJrr5IRR7I90 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 literal 0 HcmV?d00001 diff --git a/presentations/week08.html b/presentations/week08.html index c18c4f2a..aa3df260 100644 --- a/presentations/week08.html +++ b/presentations/week08.html @@ -52,6 +52,107 @@

    But First

    +
    +

    What is Pyramid?

    +

    A Web Framework

    +

    "Its primary job is to make it easier for a developer to create an arbitrary +web application"

    +

    Makes as few decisions as possible for you.

    +

    Allows you to make decisions, and provides tools to support you when you do

    +

    "Pay only for what you eat"

    +
    +
    +

    Why is Pyramid?

    +

    Micro-frameworks are great for lightweight apps

    +

    Micro-frameworks do not scale up or change specs easily

    +

    Full-stack frameworks have lots of opinions. Bending them can be difficult.

    +

    Pyramid can build a lightweight app easily, but it can also scale and bend

    +
    +
    +

    History - Zope and Repoze

    +

    Many of the core developers of Pyramid started as Zope developers.

    +

    Born in 1996, Zope was the first Python web framework, and possibly the first +in any language.

    +

    After 14 years, the developers of Zope had seen and learned a lot.

    +

    Repoze was a short-lived (2008-2010) framework intended to embody the lessons +learned from Zope.

    +
    +
    +

    History - Pylons

    +

    Pylons was released in 2005.

    +

    It was among the first frameworks to fully embrace the WSGI specification.

    +

    The creators of Pylons build WebTest, WebError and WebOb (abstracted HTTP +request and response objects)

    +
    +
    +

    History - 2010

    +

    In 2010, the authors of Repoze and Pylons got together and made an unusual +decision.

    +

    Why duplicate efforts when there are already so many other frameworks?

    +

    Repoze was re-named 'Pyramid' and the 'Pylons Project' was born to shepherd +this new combined project.

    +
    +
    +

    Implications

    +

    Pylons was a framework predicated largely on relational persistence and URL +Dispatch.

    +

    Zope/Repoze was based on the ZODB and Object Traversal.

    +

    Each of these approaches has strengths and weaknesses.

    +

    Pyramid supports neither, both and even combinations of the two.

    +
    +
    +

    Relational DB / URL Dispatch

    +

    You've seen this before, both in Flask and Django

    +

    SQLite3, the Django ORM, both are examples of relational persistence models

    +

    Routes/urlpatterns, both are examples of URL Dispatch

    +

    Pyramid can work this way too. SQLAlchemy, Route-based views.

    +

    Been there, done that. Let's see something else.

    +
    +
    +

    ZODB

    +

    ORMs allow developers to pretend that Objects are like DB Tables.

    +

    But Objects are not tables, so there's a conceptual mismatch between +the two.

    +

    The ZODB is an object store, rather than a relational database.

    +

    If your data is best represented by heterogenous objects, it's a better +persistence solution.

    +
    +
    +

    Traversal - Object Graphs

    +

    Python objects can contain other objects.

    +

    Using dict-like structures, you can build a graph of objects:

    +
    +Family
    +├── Parents
    +│  ├── Cris
    +│  ├── Kristina
    +├── Children
    +│  ├── Kieran
    +│  ├── Finnian
    +
    +
    +
    +

    Traversal - Path Lookup

    +

    You can traverse across the object graph by treating a URL as a series of +node names

    +
    +http://family/parents/cris -> family['parents']['cris']
    +
    +

    Further path segments can be view names or information passed to the view

    +
    +http://family/parents/cris/edit -> edit view
    +http://family/parents/cris/next/steps -> subpath = /next/steps
    +
    +
    +
    +

    Break Time

    +

    We've got the concept of object stores and traversal

    +

    The next step is to see how those work in real life.

    +

    Take the next few minutes here to ensure that you have a working Pyramid setup +with the ZODB and a project created with pcreate -s zodb.

    Lab - Part One

    @@ -242,6 +343,10 @@

    View Configuration

    Predicates are a very powerful system for choosing views. Read more about them in view configuration

    +
    +

    Lab - Part Two

    +

    Data Models and Tests

    +

    Wiki Models

    Now that we have a basic idea of what's going on in the code generated for us, @@ -255,7 +360,7 @@

    Wiki Models

    Persistence Magic

    In an SQL database, data about an object is written to tables. In the ZODB, the object itself is saved in the database.

    -

    The ZODB provides base classes that will automatically save themselves. We +

    The ZODB provides base classes that will automatically save themselves. We will use two of these:

    • Persistent - a class that automatically tracks changes to class @@ -406,6 +511,14 @@

      Run our Tests

      (pyramidenv)$ nosetests --cover-package=tutorial --cover-erase --with-coverage
    +
    +

    Break

    +

    Take a few minutes to breathe

    +
    +
    +

    Lab - Part Three

    +

    Views and Templates

    +

    Preparing for Views

    Our Page model has a data attribute, which represents the text in the From bfee4aebed4b14cdacba8691c432c9354eadf416 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 25 Feb 2013 22:13:40 -0800 Subject: [PATCH 053/114] update outline for real this time --- _sources/outline.txt | 2 ++ outline.html | 1 + searchindex.js | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index 1b31ba8c..cbce2f3e 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -599,6 +599,8 @@ provides code structures via XML namespaces, allowing you to write templates that will load in a browser looking like HTML without needing a framework to render them. +`Week 8 Presentation `_ + Reading ******* diff --git a/outline.html b/outline.html index 585842e9..776131c2 100644 --- a/outline.html +++ b/outline.html @@ -528,6 +528,7 @@

    Week 8 - PyramidWeek 8 Presentation

    Reading¶

    Why you should care about Traversal.

    diff --git a/searchindex.js b/searchindex.js index f236c18a..4675ab7e 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:[1,3],code:[0,1,2],queri:2,consum:2,four:2,concept:2,skim:2,ronach:2,abil:2,edu:[1,2],follow:[0,2],although:2,decid:2,educ:1,git:3,flask:2,tomayko:2,descript:0,program:[1,2],decis:2,text:0,sens:2,spec:2,introduc:2,fax:1,sourc:[0,2],string:2,chameleon:2,far:2,mcdonough:2,util:2,veri:2,word:2,unexcus:1,hour:0,level:1,button:3,list:[3,2],"try":2,imaplib:2,team:2,small:[0,1,2],pleas:2,cgi:[1,2],outlin:[1,2],representational_state_transf:2,cgi_exampl:[],htm:2,request:[1,2,3],restkit:2,design:2,pass:[0,1,2],further:2,carlo:2,click:3,even:2,index:1,what:[0,2],sud:2,compar:[0,2],defin:2,section:2,advanc:2,lightn:2,brief:2,access:[1,2],delet:2,"new":3,appeal:2,"public":2,contrast:[1,2],hasn:2,full:2,berkelei:2,gener:2,learn:[0,1,2],here:[1,2,3],met:0,let:2,cursor:2,inher:2,along:2,search:1,technolog:2,step:[3,2],prior:1,zodb:2,doctest:2,pick:2,implement:[1,2],chanc:2,ourselv:2,via:[0,1,2],repositori:[0,3,2],extra:[],activ:1,modul:[1,2],gatewai:2,api:[1,2],seattl:[],instal:2,txt:2,plone:[1,2],cloud:[1,2],highli:1,jan:2,from:[1,2,3],describ:0,commun:2,univers:1,regist:1,two:[1,2],next:2,websit:[0,3,2],few:2,live:2,recommend:2,scope:[0,2],type:2,tell:3,memeori:1,relat:2,reign:2,enhanc:[],downtown:[],appendix:2,templat:2,particular:2,actual:[3,2],must:[0,2],topic:[1,2],account:3,retriev:2,valuabl:2,prepar:2,work:[0,1,2],focu:[1,2],can:[0,1,2,3],http2:[],purpos:[0,2],root:2,repoz:2,quickstart:2,process:2,registr:[],smtp:2,indic:1,autumn:[],tag:2,explor:[1,2],tal:2,onlin:[0,2],differenti:2,cours:[0,1,2,3],end:0,winter:1,secur:[],anoth:2,write:[3,2],how:[0,1,2],vital:0,answer:0,instead:2,simpl:[1,2],chri:2,updat:2,product:2,mar:2,resourc:2,attend:1,dive:2,after:3,sundai:2,lab:2,befor:2,mac:2,attent:2,date:2,philosophi:2,associ:2,demonstr:2,goal:[0,2],classroom:1,"short":[3,2],practic:2,author:2,django:[1,2],tale:2,inform:[0,1,2],combin:2,pocoo:[],allow:2,order:1,talk:2,tty:1,help:2,hypertext:2,insight:2,soon:[],through:[1,2],dynam:2,paramet:[0,1],style:[],directli:0,concis:2,grade:1,offic:1,html:2,rapidli:2,persist:[],comprehens:2,mail:1,might:2,pce:[],them:[1,2,3],good:[1,2],"return":2,thei:[1,2],python:[0,1,2],dan:2,dai:[0,2],initi:2,cew:[3,2],framework:[1,2],hateoa:2,httplib2:2,tilkov:2,discuss:2,introduct:[1,2],choic:2,term:1,name:2,anyth:0,didn:2,bonu:2,accommod:1,slide:1,each:[1,2],debug:2,found:2,went:2,gui:2,compil:2,domain:2,laboratori:[1,2],individu:1,weeknn:3,realli:2,ensur:[0,2],connect:[1,2],doug:2,our:2,happen:2,out:2,variabl:2,accomplish:2,network:[1,2],influenc:2,open:2,defend:2,publish:2,content:1,dso:1,rel:2,internet:[1,2],clone:3,common:2,workflow:2,given:2,pub:2,standard:[1,2],quick:[1,2],reason:1,base:[1,2],org:2,fridai:0,care:2,filter:2,lucumr:[],place:3,due:0,principl:1,assign:[0,1,2,3],south:[],first:2,origin:[3,2],softwar:0,render:2,feel:2,onc:[],qualiti:2,scene:2,mai:2,instruct:[0,2],restkit_:[],horribl:2,fantast:1,differ:2,script:[3,2],data:2,top:[3,2],system:2,stack:2,master:[3,2],zeromq:2,"final":[0,1,2,3],schema:2,option:2,relationship:2,namespac:2,tool:2,copi:3,took:3,part:[0,1,2],pars:2,mostli:2,eibrari:[],than:1,king:2,grew:2,provid:[1,2],tree:[],structur:2,project:[0,1,2],were:0,video:2,browser:2,fork:[3,2],comput:[1,2],modern:2,ani:[0,1,2],packag:0,pylon:2,have:[0,1,2,3],tabl:1,need:[3,2],strength:2,techniqu:2,equival:1,rout:2,client:2,note:[3,2],also:[0,2],ideal:2,contact:1,take:[0,2],which:[0,2],soap:2,singl:2,begin:2,sure:2,distribut:1,though:2,usernam:3,object:[1,2],reach:2,most:2,plai:2,plan:2,phase:2,"class":[0,1,2,3],don:[1,2,3],dens:1,clear:2,cover:2,drive:2,doe:[1,2],determin:2,latest:2,fact:2,wsgi:[1,2],think:2,show:0,abl:[0,1],xcode:2,beautifulsoup:2,bring:1,session:[1,2],corner:3,find:[3,2],shield:2,xml:2,onli:2,submit:[0,1,3],execut:2,aspect:0,explain:2,configur:1,apach:2,enough:2,should:[0,1,2],kessler:2,disert:2,suppos:2,smtplib:2,local:[0,3,2],over:2,move:2,variou:2,get:[0,3,2],familiar:2,express:[1,2],becaus:3,repo:2,rest:2,"import":1,requir:[0,1,2],truli:2,across:2,rfc:2,integr:[0,1,2],contain:[0,3],where:[],view:2,wiki:2,certif:1,set:2,lectur:[1,2],reread:2,creator:2,knowledg:2,see:[0,2],result:[1,2],fail:1,close:3,databas:2,review:3,wikipedia:2,urllib:2,label:3,behind:2,between:2,progress:2,neither:2,experi:[1,2],approach:[1,2],email:[0,3],attribut:2,altern:2,ftplib:[],extend:2,weak:2,extens:2,job:3,add:3,consumpt:2,solv:[1,2],come:[],addit:2,last:0,pymotw:2,wsgiref:2,tutori:2,mani:2,com:[3,2],load:2,point:2,overview:2,unittest:2,jog:1,rfc2616:[],dispatch:2,walk:2,header:2,written:2,linux:2,tuesdai:1,throughout:1,uci:2,duplic:2,quit:2,evalu:[0,1,2],zpt:2,been:2,hellmann:2,compon:2,json:2,newcom:2,basic:2,presentations_:[],life:2,emphas:1,great:2,athom:[3,2],understand:2,docxmlrpcserv:2,ador:2,instructor:[0,1],present:[1,2],"case":2,look:[0,2],solid:2,servic:[1,2],employ:1,admin:2,"while":3,outcom:0,abov:2,visit:3,wild:2,python_web:[3,2],real:[1,2],pyramid:[1,2],file:[3,2],advantag:2,briandorsei:[],readm:0,non:0,cherrypi:2,lightweight:2,march:[0,1],minutia:1,sever:2,develop:2,week04:2,minim:2,make:[3,2],format:2,same:2,check:0,complex:2,zope:2,pai:2,document:[1,2,3],complet:[0,1,2,3],week:[0,1,2],http:[3,2],assist:0,effect:2,kit:2,user:0,student:[0,1,2],extern:2,studi:2,built:2,travers:2,appropri:[0,2],off:0,entri:2,coursework:1,well:2,inherit:2,without:2,person:2,exampl:[1,2],greatest:2,thi:[0,1,2,3],choos:2,model:[3,2],portabl:1,spend:2,left:2,explan:2,protocol:[1,2],just:2,when:3,laptop:0,tcp:2,weekli:1,select:2,virtual:2,human:2,mysql:2,languag:[1,2],previous:1,web:[1,2],versu:1,now:[3,2],easi:2,drawback:2,apache2:2,blog:2,armin:2,other:2,blob:2,app:2,homework:2,build:2,earli:2,applic:[1,2],week01:2,week06:2,around:2,xmlrpc:2,week05:2,read:2,httplib:2,arguabl:2,know:2,world:2,bit:2,licens:2,apart:2,uwpython_web:[],like:[3,2],specif:2,altough:2,manifest:2,benefit:2,either:2,week02:2,page:[1,2,3],underli:[1,2],www:2,right:[3,2],often:2,interact:[0,2],some:[0,3,2],back:[3,2],satisfactori:1,week03:2,server:2,librari:[1,2],virtualenv:2,guid:2,cgihttpserv:2,micro:2,noon:2,februari:2,leav:2,unit:2,notabl:2,refer:[1,2],machin:[3,2],core:2,investig:2,run:[0,2],usag:[1,2],confer:2,popular:2,host:2,dissert:2,prerequisit:1,januari:[1,2],feb:2,chapter:2,about:[0,2],postgresql:2,socket:[1,2],constraint:2,manag:[],microframework:2,includ:[0,2],commit:[1,3],disabl:1,block:2,fulfil:2,own:[3,2],curiou:2,sql:2,washington:1,easy_instal:2,curios:2,assess:1,orm:2,foreward:2,chang:[3,2],your:[1,2,3],guardia:2,fast:2,log:3,wai:2,transfer:2,support:[1,2],question:0,"long":2,why:2,avail:[0,2],start:[1,2],much:0,interfac:2,low:1,suit:2,forward:2,"function":2,bottl:2,sqlite3:2,form:[0,2],offer:2,forc:2,criteria:2,github:[0,3,2],rpclib:2,sqlalchemi:2,link:[0,3,2],gain:2,rfc1945:[],suppli:[],pull:[3,2],made:[3,2],possibl:2,wish:2,displai:2,troubl:2,until:2,url:2,below:2,those:2,absenc:1,fundament:2,site:0,problem:[1,2],more:[1,2],similar:2,featur:2,creat:[0,1,2,3],certain:2,pragmat:1,parser:2,repres:2,intro:2,exist:2,glanc:2,pip:2,simplest:2,again:2,successfulli:0,want:[0,3,2],mashup:[1,2],excel:2,detail:2,scrape:2,field:2,book:2,rdbm:2,test:2,ignor:2,you:[0,3,2],nice:[0,2],repeat:2,intend:2,devot:0,urllib2:2,gcc:2,djangocon:2,consid:2,easili:2,warn:2,wife:2,directori:[3,2],wifi:1,xmlrpclib:2,depth:2,train:[3,2],htmlparser:2,time:[0,2],push:[3,2],hello:2},objtypes:{},titles:["Final Project","Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["project","index","outline","assignments"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:[1,3],code:[0,1,2],queri:2,consum:2,four:2,concept:2,skim:2,ronach:2,abil:2,edu:[1,2],follow:[0,2],decid:2,instructor:[0,1],flask:2,tomayko:2,program:[1,2],decis:2,sens:2,spec:2,introduc:2,fax:1,sourc:[0,2],string:2,chameleon:2,far:2,mcdonough:2,util:2,veri:2,word:2,unexcus:1,hour:0,level:1,button:3,list:[3,2],"try":2,imaplib:2,team:2,small:[0,1,2],pleas:2,machin:[3,2],repres:2,outlin:[1,2],representational_state_transf:2,core:2,htm:2,restkit:2,design:2,pass:[0,1,2],further:2,carlo:2,click:3,even:2,index:1,what:[0,2],sud:2,compar:[0,2],section:2,advanc:2,lightn:2,brief:2,access:[1,2],delet:2,"new":3,appeal:2,"public":2,contrast:[1,2],hasn:2,full:2,berkelei:2,gener:2,learn:[0,1,2],zpt:2,here:[1,2,3],met:0,let:2,inher:2,along:2,search:1,technolog:2,host:2,prior:1,base:[1,2],doctest:2,pick:2,implement:[1,2],chanc:2,ourselv:2,via:[0,1,2],prerequisit:1,extra:[],apach:2,modul:[1,2],gatewai:2,api:[1,2],seattl:[],instal:2,txt:2,plone:[1,2],cloud:[1,2],highli:1,kessler:2,from:[1,2,3],describ:0,commun:2,univers:1,regist:1,two:[1,2],next:2,websit:[0,3,2],few:2,live:2,recommend:2,scope:[0,2],type:2,tell:3,memeori:1,relat:2,reign:2,enhanc:[],downtown:[],appendix:2,templat:2,particular:2,postgresql:2,must:[0,2],topic:[1,2],account:3,retriev:2,valuabl:2,prepar:2,work:[0,1,2],focu:[1,2],can:[0,1,2,3],http2:[],purpos:[0,2],root:2,repoz:2,quickstart:2,process:2,registr:[],smtp:2,indic:1,autumn:[],tag:2,explor:[1,2],tal:2,onlin:[0,2],differenti:2,cours:[0,1,2,3],end:0,winter:1,secur:[],anoth:2,xmlrpclib:2,write:[3,2],concis:2,vital:0,low:1,answer:0,instead:2,simpl:[1,2],chri:2,updat:2,product:2,mar:2,resourc:2,attend:1,clone:3,after:3,sundai:2,lab:2,befor:2,mac:2,attent:2,mai:2,philosophi:2,data:2,demonstr:2,goal:[0,2],classroom:1,"short":[3,2],practic:2,minim:2,django:[1,2],tale:2,inform:[0,1,2],combin:2,allow:2,order:1,talk:2,tty:1,help:2,hypertext:2,insight:2,soon:[],through:[1,2],dynam:2,paramet:[0,1],style:[],directli:0,how:[0,1,2],grade:1,offic:1,complex:2,rapidli:2,persist:[],comprehens:2,mail:1,might:2,pce:[],them:[1,2,3],good:[1,2],"return":2,thei:[1,2],python:[0,1,2],dan:2,dai:[0,2],initi:2,cew:[3,2],framework:[1,2],hateoa:2,httplib2:2,studi:2,tilkov:2,discuss:2,introduct:[1,2],choic:2,term:1,name:2,anyth:0,didn:2,bonu:2,accommod:1,slide:1,each:[1,2],debug:2,found:2,went:2,gui:2,compil:2,domain:2,laboratori:[1,2],individu:1,weeknn:3,realli:2,foreward:2,connect:[1,2],doug:2,our:2,happen:2,out:2,variabl:2,accomplish:2,network:[1,2],influenc:2,open:2,defend:2,publish:2,content:1,dso:1,abl:[0,1],rel:2,internet:[1,2],dive:2,integr:[0,1,2],workflow:2,given:2,pub:2,standard:[1,2],quick:[1,2],reason:1,zodb:2,org:2,fridai:0,care:2,filter:2,lucumr:[],place:3,principl:1,assign:[0,1,2,3],south:[],first:2,origin:[3,2],softwar:0,render:2,feel:2,onc:[],qualiti:2,scene:2,date:2,instruct:[0,2],restkit_:[],horribl:2,fantast:1,differ:2,"long":2,script:[3,2],associ:2,top:[3,2],system:2,master:[3,2],zeromq:2,"final":[0,1,2,3],schema:2,option:2,relationship:2,namespac:2,tool:2,copi:3,took:3,employ:1,part:[0,1,2],pars:2,mostli:2,eibrari:[],than:1,king:2,grew:2,provid:[1,2],tree:[],structur:2,exampl:[1,2],project:[0,1,2],were:0,video:2,browser:2,"function":2,comput:[1,2],modern:2,ani:[0,1,2],packag:0,pylon:2,have:[0,1,2,3],tabl:1,need:[3,2],strength:2,techniqu:2,equival:1,rout:2,note:[3,2],also:[0,2],ideal:2,contact:1,take:[0,2],which:[0,2],soap:2,singl:2,begin:2,sure:2,distribut:1,though:2,usernam:3,object:[1,2],reach:2,most:2,plai:2,plan:2,phase:2,"class":[0,1,2,3],don:[1,2,3],dens:1,clear:2,cover:2,drive:2,doe:[1,2],determin:2,repositori:[0,3,2],left:2,fact:2,wsgi:[1,2],think:2,show:0,text:0,xcode:2,beautifulsoup:2,bring:1,session:[1,2],corner:3,find:[3,2],shield:2,xml:2,onli:2,just:2,explain:2,configur:1,activ:1,behind:2,should:[0,1,2],jan:2,disert:2,suppos:2,smtplib:2,local:[0,3,2],over:2,move:2,variou:2,get:[0,3,2],familiar:2,express:[1,2],curiou:2,becaus:3,repo:2,tcp:2,progress:2,requir:[0,1,2],truli:2,email:[0,3],rfc:2,common:2,contain:[0,3],where:[],view:2,wiki:2,certif:1,set:2,reread:2,creator:2,knowledg:2,see:[0,2],result:[1,2],fail:1,close:3,databas:2,review:3,wikipedia:2,urllib:2,label:3,enough:2,between:2,"import":1,neither:2,experi:[1,2],approach:[1,2],across:2,attribut:2,altern:2,ftplib:[],extend:2,weak:2,extens:2,job:3,add:3,consumpt:2,solv:[1,2],come:[],addit:2,last:0,pymotw:2,wsgiref:2,tutori:2,mani:2,com:[3,2],load:2,point:2,overview:2,unittest:2,jog:1,rfc2616:[],dispatch:2,walk:2,header:2,written:2,linux:2,tuesdai:1,throughout:1,admin:2,uci:2,duplic:2,quit:2,creat:[0,1,2,3],due:0,been:2,hellmann:2,compon:2,json:2,newcom:2,basic:2,presentations_:[],life:2,emphas:1,great:2,athom:[3,2],understand:2,docxmlrpcserv:2,ador:2,educ:1,present:[1,2],"case":2,look:[0,2],solid:2,servic:[1,2],cursor:2,defin:2,"while":3,outcom:0,abov:2,wild:2,python_web:[3,2],earli:2,pyramid:[1,2],glanc:2,advantag:2,briandorsei:[],readm:0,non:0,unit:2,cherrypi:2,lightweight:2,week06:2,minutia:1,sever:2,develop:2,xmlrpc:2,author:2,make:[3,2],week05:2,same:2,html:2,zope:2,pai:2,document:[1,2,3],complet:[0,1,2,3],week:[0,1,2],http:[3,2],assist:0,effect:2,kit:2,user:0,student:[0,1,2],extern:2,stack:2,built:2,travers:2,appropri:[0,2],off:0,entri:2,coursework:1,well:2,inherit:2,without:2,person:2,client:2,greatest:2,thi:[0,1,2,3],choos:2,model:[3,2],portabl:1,spend:2,latest:2,explan:2,protocol:[1,2],fast:2,execut:2,excel:2,laptop:0,rest:2,weekli:1,scrape:2,aspect:0,mysql:2,languag:[1,2],previous:1,web:[1,2],versu:1,now:[3,2],easi:2,drawback:2,apache2:2,blog:2,armin:2,book:2,blob:2,app:2,homework:2,build:2,real:[1,2],applic:[1,2],week01:2,march:[0,1],around:2,week04:2,format:2,read:2,httplib:2,arguabl:2,know:2,world:2,bit:2,licens:2,apart:2,uwpython_web:[],like:[3,2],specif:2,altough:2,manifest:2,benefit:2,either:2,week02:2,page:[1,2,3],underli:[1,2],www:2,right:[3,2],often:2,interact:[0,2],some:[0,3,2],back:[3,2],certain:2,satisfactori:1,week03:2,server:2,librari:[1,2],virtualenv:2,guid:2,cgihttpserv:2,micro:2,noon:2,februari:2,leav:2,select:2,notabl:2,refer:[1,2],cgi:[1,2],cgi_exampl:[],investig:2,run:[0,2],usag:[1,2],confer:2,popular:2,step:[3,2],dissert:2,although:2,januari:[1,2],feb:2,chapter:2,about:[0,2],simplest:2,actual:[3,2],socket:[1,2],constraint:2,manag:[],microframework:2,includ:[0,2],commit:[1,3],disabl:1,block:2,fulfil:2,own:[3,2],visit:3,sql:2,washington:1,easy_instal:2,curios:2,assess:1,orm:2,ensur:[0,2],chang:[3,2],your:[1,2,3],guardia:2,git:3,log:3,wai:2,transfer:2,support:[1,2],question:0,submit:[0,1,3],why:2,avail:[0,2],start:[1,2],much:0,interfac:2,pocoo:[],suit:2,forward:2,fork:[3,2],bottl:2,sqlite3:2,human:2,form:[0,2],offer:2,forc:2,criteria:2,github:[0,3,2],rpclib:2,sqlalchemi:2,link:[0,3,2],gain:2,rfc1945:[],suppli:[],pull:[3,2],made:[3,2],possibl:2,wish:2,displai:2,troubl:2,until:2,url:2,below:2,those:2,absenc:1,fundament:2,site:0,problem:[1,2],more:[1,2],similar:2,featur:2,evalu:[0,1,2],request:[1,2,3],pragmat:1,parser:2,lectur:[1,2],intro:2,exist:2,file:[3,2],pip:2,check:0,again:2,successfulli:0,want:[0,3,2],mashup:[1,2],when:3,detail:2,virtual:2,field:2,other:2,rdbm:2,test:2,htmlparser:2,you:[0,3,2],nice:[0,2],repeat:2,intend:2,devot:0,urllib2:2,gcc:2,djangocon:2,consid:2,easili:2,warn:2,wife:2,directori:[3,2],wifi:1,descript:0,depth:2,train:[3,2],ignor:2,time:[0,2],push:[3,2],hello:2},objtypes:{},titles:["Final Project","Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["project","index","outline","assignments"]}) \ No newline at end of file From e115fd51bfbe0ea4aaa5583b7bdbd1d5e5a5d874 Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 5 Mar 2013 07:52:49 -0800 Subject: [PATCH 054/114] update outline, week 8 and week 9 presentations. --- _sources/outline.txt | 13 +- outline.html | 9 +- presentations/week08.html | 22 --- presentations/week09.html | 331 +++++++++++++++++++++++++++++++++++++- searchindex.js | 2 +- 5 files changed, 349 insertions(+), 28 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index cbce2f3e..a6ff10a1 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -674,10 +674,21 @@ Week 9 - The Cloud **Date**: Mar. 5, 2013 +This week we'll talk a bit about deployment options, and take a quick tour of +deploying to one of the many possible cloud solutions. + +The lion's share of the class will be devoted to lab time, enabling students +to work on their final projects with the help of Dan and Cris + +`Week 9 Presentation `_ + Assignment ********** -To Be Decided +Continue working on your final project. + +You will have one more week to complete the project after today's class. Your +final version must be up and running live by Friday, March 15 at noon. Week 10 - Plone --------------- diff --git a/outline.html b/outline.html index 776131c2..37058170 100644 --- a/outline.html +++ b/outline.html @@ -583,9 +583,16 @@

    Assignment

    Week 9 - The Cloud¶

    Date: Mar. 5, 2013

    +

    This week we’ll talk a bit about deployment options, and take a quick tour of +deploying to one of the many possible cloud solutions.

    +

    The lion’s share of the class will be devoted to lab time, enabling students +to work on their final projects with the help of Dan and Cris

    +

    Week 9 Presentation

    Assignment¶

    -

    To Be Decided

    +

    Continue working on your final project.

    +

    You will have one more week to complete the project after today’s class. Your +final version must be up and running live by Friday, March 15 at noon.

    diff --git a/presentations/week08.html b/presentations/week08.html index aa3df260..c7fb367d 100644 --- a/presentations/week08.html +++ b/presentations/week08.html @@ -827,28 +827,6 @@

    Next Week

    And the rest of the time (about 1.5-2 hours) will be reserved for working on your final projects.

    -
    -

    scraps

    -

    Pyramid Intro

    -
      -
    • What is it
    • -
    • Where does it come from
    • -
    • What problem is it trying to solve?
    • -
    -

    Things that make pyramid like other frameworks we've seen

    -
      -
    • uses request/response model
    • -
    • can use url route dispatch
    • -
    • can use sql-based persistence
    • -
    -

    Things that make pyramid __unlike__ other frameworks we've seen

    -
      -
    • can also use traversal
    • -
    • can work with Object persistence via the ZODB
    • -
    -

    What is Traversal (as opposed to route dispatch?)

    -

    What is the ZODB?

    -

    diff --git a/presentations/week09.html b/presentations/week09.html index 212657f4..2b1514a4 100644 --- a/presentations/week09.html +++ b/presentations/week09.html @@ -5,7 +5,7 @@ -This is Week 9 +Internet Programming with Python @@ -29,15 +29,340 @@
    -

    This is Week 9

    +

    Internet Programming with Python

    +img/cloud_cover.jpg +

    Week 9: The Cloud

    +
    +
    Every cloud has its silver lining
    +
    but it is sometimes a little difficult
    +
    to get it to the mint.
    +
    --Don Marquis
    +
    +

    image: mnsc http://www.flickr.com/photos/mnsc/2768391365/ - CC-BY

    + +
    +
    +

    Deployment

    +

    You've built your app, tested it, now it's time to go live

    +

    What are your options?

    +

    It Depends

    +
    +
    +

    The Traditional Way

    +

    In the old daysâ„¢ you had one option

    +

    Buy a server, build it and host it yourself

    +

    You have total control

    +
      +
    • buy exactly the hardware you want
    • +
    • run only the services you need
    • +
    +

    You also have total responsibility

    +
      +
    • when something breaks, you have to fix it
    • +
    • you bear all the costs yourself
    • +
    +
    +
    +

    Traditional Drawbacks

    +

    Expensive

    +
      +
    • Server-class hardware $2k-$10k or more
    • +
    • Systems Administrator $90K/year
    • +
    +

    Inefficient

    +
      +
    • Most web sites don't get enough traffic to tax a good server
    • +
    • Web traffic tends to be assymetrical
    • +
    • Systems administration tasks also highly assymetrical
    • +
    +

    A problem of resource utilization

    +
    +
    +

    The First Solution

    +

    VPS (Virtual Private Server)

    +

    A part of a server (or perhaps an entire server) purchased from a provider.

    +

    You pay for only a portion of a server and a portion of a systems +administrator.

    +

    You retain control of the system

    +

    You also retain responsibility for everything above the bare iron.

    +
    +
    +

    VPS Outcomes

    +

    Benefits

    +
      +
    • Reduced cost ($30-$100+/month vs server and salary)
    • +
    • Reduced burden (The provider handles hardware upkeep and low-level +maintenance)
    • +
    • Retain control of your full software stack
    • +
    +

    Drawbacks

    +
      +
    • You install and maintain the web stack (requires knowledge)
    • +
    • You lose control over resource utilization
    • +
    • Your resources are still fixed (always the same size)
    • +
    +
    +
    +

    The Second Solution

    +

    Shared Hosting

    +

    You pay a provider to set you up with a [django/flask/pyramid/etc.] system.

    +

    Hardware and most software maintenance is provided

    +

    You are able to install some (but perhaps not all) add-ons

    +

    This solution is very popular in the PHP world

    +

    Much less so with Python. Why?...

    +
    +
    +

    Shared Hosting Outcomes

    +

    Benefits

    +
      +
    • Enormously less expensive ($5-$15+/month)
    • +
    • Much lower maintenance burden
    • +
    • Simplified installation process
    • +
    +

    Drawbacks

    +
      +
    • Tight resource restrictions (cpu, ram, disk space)
    • +
    • Little to no control over most of the stack
    • +
    • Reduced availability of some frameworks or packages
    • +
    +

    And still, no ability to grow if you need

    +
    +
    +

    The Third Solution

    +

    The Cloud

    +

    (cue fanfare)

    +
    +
    +

    The Cloud Concept

    +

    You don't know today what you will need tomorrow

    +

    Today your website is getting 100-500 unique visitors

    +

    Tomorrow you might have 10,000, 100,000. Who knows?

    +

    Should you have to buy enough hardware to handle that traffic today?

    +

    Cloud computing offers rapid deployment solutions so you can scale at will

    +
    +
    +

    What is 'the Cloud'?

    +

    Really, it differs from place to place.

    +

    Some are more do-it-yourself (Amazon EC2, Rackspace Cloud)

    +

    Some are more automated (Heroku, Elastic Beanstalk, AppEngine)

    +

    All try to abstract common deployment tasks to make it easy to repeat

    +

    So, how does that work?

    +
    +
    +

    Fabric

    +

    Fabric is not a cloud service. Instead, it's a tool built to help developers +simplify the process of deploying complex apps to a server.

    +

    It can be used in any setup where you have ssh access to the filesystem +of the remote server.

    +

    Your classmate Austin used it a couple of weeks back to deploy Django to his +bluebox VM.

    +

    Today, he's going to share that experience with you...

    +
    +
    +

    Heroku

    +img/heroku-logo.png +

    I tried a number of cloud providers

    +

    This was hands-down the easiest.

    +
    +
    +

    Heroku - Sign-up

    +

    You'll need a Heroku account to do anything, so the first step is to get that

    +

    Go to http://www.heroku.com

    +

    Click on 'Sign Up' and enter your email address

    +

    When the email arrives, click the link and create your password

    +

    Once you've signed up, you'll see your 'dashboard' page with tips on getting +started.

    +
    +
    +

    Heroku - Setup

    +

    Like pretty much all the 'cloud' providers out there, Heroku has some +command-line tools you need to use.

    +

    You can find them at https://toolbelt.heroku.com/

    +

    Download and install the package, and then login:

    +
    +$ heroku login
    +Email: your-email@your.domain.com
    +Password: <fill it in>
    +
    +

    The tool will find, or help you create, an ssh public key

    +
    +
    +

    Heroku - Branch my App

    +

    As an exercise, I decided to deploy the djangor micro-blog app we created in +class.

    +

    The first step was to clone the app, then create a local branch for deployment:

    +
    +$ mkdir heroku-test
    +$ cd heroku-test
    +$ git clone git@github.com:cewing/training.django_microblog.git
    +...
    +$ cd training.django_microblog
    +$ git checkout -b heroku-deploy
    +Switched to a new branch 'heroku-deploy'
    +$
    +
    +
    +
    +

    Heroku - Setup Virtualenv

    +

    Again, like many cloud providers Heroku uses virtualenvs to ensure it's +installed correctly

    +

    I set up a python 2.7 virtualenv right in my git repository:

    +
    +$ ~/pythons/bin/virtualenv-2.7 --distribute venv
    +...
    +$ source venv/bin/activate
    +(venv)$
    +
    +

    I don't want to check that virtualenv into git, so I add venv to my +.gitignore file.

    +

    That way, git will ignore that directory and everything in it.

    +
    +
    +

    Heroku - Install Dependencies

    +

    For Heroku to work, it needs to know what packages you'll need installed.

    +

    We can use pip to take care of this:

    +
    +(venv)$ pip install Django=1.4.5 psycopg2 dj-database-url
    +
    +

    Psycopg2 is a DBAPI connector for PostgreSQL. Heroku requires Postgresql

    +

    dj-database-url allows the Django DB settings to come from an env variable.

    +
    +
    +

    Heroku - Freeze Dependencies

    +

    Heroku uses pip too. It uses a file called requirements.txt to know +what to do.

    +

    You create that file:

    +
    +(venv)$ pip freeze > requirements.txt
    +
    +

    Then, add the file to your repository and commit:

    +
    +(venv)$ git add requirements.txt
    +(venv)$ git commit -m "setting requirements for heroku"
    +
    +
    +
    +

    Heroku - Django Settings

    +

    To adapt Django to the Heroku environment, we need to add the following to the +end of our settings.py file:

    +
    +# Parse database configuration from $DATABASE_URL
    +import dj_database_url
    +DATABASES['default'] =  dj_database_url.config()
    +
    +# Honor the 'X-Forwarded-Proto' header for request.is_secure()
    +SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    +
    +

    Commit these changes to your heroku-deploy branch.

    +

    Local development settings are different. You can use different settings for +production and development

    +
    +
    +

    Heroku - Procfile

    +

    Finally, we need to create a file named Procfile.

    +

    Heroku uses this to learn about the processes we want running.

    +

    Lines in the file take the form process_type: command,

    +

    Create the file Procfile and add the following text:

    +

    web: python manage.py runserver 0.0.0.0:$PORT --noreload

    +

    Then, add and commit that file to the repository.

    +
    +
    +

    Heroku - Create and Deploy

    +

    At this point, we're ready to go.

    +

    First, we create a new app in heroku with our repo:

    +
    +(venv)$ heroku create
    +Creating fierce-plains-6505... done, stack is cedar
    +http://fierce-plains-6505.herokuapp.com/ | git@heroku.com:fierce-plains-6505.git
    +Git remote heroku added
    +(venv)$
    +
    +

    Then, deploy it by 'pushing' to the heroku remote (master branch):

    +
    +(venv)$ git push heroku heroku-deploy:master
    +
    +
    +
    +

    Heroku - What Happens

    +

    Heroku works like github, in a way.

    +

    When our repository is pushed, a hook script detects the update and starts +working.

    +
      +
    • Heroku detects that we +are building a python project
    • +
    • A python virtualenv is created
    • +
    • pip installs the dependencies in requirements.txt
    • +
    • Heroku further detects that we are building a Django app and runs +collectstatic
    • +
    • Our Procfile is read, and data about the processes we want is written to +the environment
    • +
    +
    +
    +

    Heroku - Syncdb

    +

    Heroku will not run syncdb for us. We have to do that on our own.

    +

    Heroku does provide us with a way to run one-off commands on our server, though:

    +
    +(venv)$ heroku run python manage.py syncdb
    +
    +

    This command is run through an ssh tunnel. We can interact with it.

    +

    We can use other commands, like shell with heroku run.

    +
    +
    +

    Heroku - Reap the Rewards

    +

    All we have to do now is start a process so we can see our work:

    +
    +(venv)$ heroku ps:scale web=1
    +Scaling web processes... done, now running 1
    +(venv)$ heroku ps
    +=== web: `python manage.py runserver 0.0.0.0:$PORT --noreload`
    +web.1: up 2013/03/05 06:28:13 (~ 21m ago)
    +(venv)$ heroku open
    +
    +

    That last bit will automatically open a web browser pointing at the URL where +may be seen.

    +
    +
    +

    Heroku - DNS

    +

    Heroku does not want you to point A record DNS names at it's services.

    +

    Using www.mydomain.com is okay, but mydomain.com is not.

    +

    They also don't want you to use IP addresses, since their architecture means +IP addresses change.

    +

    I set up a CNAME record for microblog.crisewing.com. It points to the URL +opened when I type heroku open.

    +

    So long as I keep this heroku app, that domain name will not change.

    +
    +
    +

    Clean-up

    +

    This is but one example of a cloud deployment.

    +

    It is considerably easier to do than most other cloud deployments.

    +

    It is also considerably more constrained than other deployments.

    +
    +
    +

    Take-away

    +

    When you are making choices about deployment, you must take into +consideration your needs, both now and in the future:

    +
      +
    • What type of Framework will you use?
    • +
    • What type of Database will you use?
    • +
    • What growth do you expect to experience (best and worst case)?
    • +
    • How much control do you want over all the processes that make your website +run?
    • +
    • How much time/expertise do you have (or can you afford to acquire)?
    • +
    +

    Carefully consider these questions, and you will find an appropriate solution.

    +
    +
    +

    Lab Time

    +

    For the rest of today, we work on your projects.

    diff --git a/searchindex.js b/searchindex.js index 4675ab7e..62bcf48d 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:[1,3],code:[0,1,2],queri:2,consum:2,four:2,concept:2,skim:2,ronach:2,abil:2,edu:[1,2],follow:[0,2],decid:2,instructor:[0,1],flask:2,tomayko:2,program:[1,2],decis:2,sens:2,spec:2,introduc:2,fax:1,sourc:[0,2],string:2,chameleon:2,far:2,mcdonough:2,util:2,veri:2,word:2,unexcus:1,hour:0,level:1,button:3,list:[3,2],"try":2,imaplib:2,team:2,small:[0,1,2],pleas:2,machin:[3,2],repres:2,outlin:[1,2],representational_state_transf:2,core:2,htm:2,restkit:2,design:2,pass:[0,1,2],further:2,carlo:2,click:3,even:2,index:1,what:[0,2],sud:2,compar:[0,2],section:2,advanc:2,lightn:2,brief:2,access:[1,2],delet:2,"new":3,appeal:2,"public":2,contrast:[1,2],hasn:2,full:2,berkelei:2,gener:2,learn:[0,1,2],zpt:2,here:[1,2,3],met:0,let:2,inher:2,along:2,search:1,technolog:2,host:2,prior:1,base:[1,2],doctest:2,pick:2,implement:[1,2],chanc:2,ourselv:2,via:[0,1,2],prerequisit:1,extra:[],apach:2,modul:[1,2],gatewai:2,api:[1,2],seattl:[],instal:2,txt:2,plone:[1,2],cloud:[1,2],highli:1,kessler:2,from:[1,2,3],describ:0,commun:2,univers:1,regist:1,two:[1,2],next:2,websit:[0,3,2],few:2,live:2,recommend:2,scope:[0,2],type:2,tell:3,memeori:1,relat:2,reign:2,enhanc:[],downtown:[],appendix:2,templat:2,particular:2,postgresql:2,must:[0,2],topic:[1,2],account:3,retriev:2,valuabl:2,prepar:2,work:[0,1,2],focu:[1,2],can:[0,1,2,3],http2:[],purpos:[0,2],root:2,repoz:2,quickstart:2,process:2,registr:[],smtp:2,indic:1,autumn:[],tag:2,explor:[1,2],tal:2,onlin:[0,2],differenti:2,cours:[0,1,2,3],end:0,winter:1,secur:[],anoth:2,xmlrpclib:2,write:[3,2],concis:2,vital:0,low:1,answer:0,instead:2,simpl:[1,2],chri:2,updat:2,product:2,mar:2,resourc:2,attend:1,clone:3,after:3,sundai:2,lab:2,befor:2,mac:2,attent:2,mai:2,philosophi:2,data:2,demonstr:2,goal:[0,2],classroom:1,"short":[3,2],practic:2,minim:2,django:[1,2],tale:2,inform:[0,1,2],combin:2,allow:2,order:1,talk:2,tty:1,help:2,hypertext:2,insight:2,soon:[],through:[1,2],dynam:2,paramet:[0,1],style:[],directli:0,how:[0,1,2],grade:1,offic:1,complex:2,rapidli:2,persist:[],comprehens:2,mail:1,might:2,pce:[],them:[1,2,3],good:[1,2],"return":2,thei:[1,2],python:[0,1,2],dan:2,dai:[0,2],initi:2,cew:[3,2],framework:[1,2],hateoa:2,httplib2:2,studi:2,tilkov:2,discuss:2,introduct:[1,2],choic:2,term:1,name:2,anyth:0,didn:2,bonu:2,accommod:1,slide:1,each:[1,2],debug:2,found:2,went:2,gui:2,compil:2,domain:2,laboratori:[1,2],individu:1,weeknn:3,realli:2,foreward:2,connect:[1,2],doug:2,our:2,happen:2,out:2,variabl:2,accomplish:2,network:[1,2],influenc:2,open:2,defend:2,publish:2,content:1,dso:1,abl:[0,1],rel:2,internet:[1,2],dive:2,integr:[0,1,2],workflow:2,given:2,pub:2,standard:[1,2],quick:[1,2],reason:1,zodb:2,org:2,fridai:0,care:2,filter:2,lucumr:[],place:3,principl:1,assign:[0,1,2,3],south:[],first:2,origin:[3,2],softwar:0,render:2,feel:2,onc:[],qualiti:2,scene:2,date:2,instruct:[0,2],restkit_:[],horribl:2,fantast:1,differ:2,"long":2,script:[3,2],associ:2,top:[3,2],system:2,master:[3,2],zeromq:2,"final":[0,1,2,3],schema:2,option:2,relationship:2,namespac:2,tool:2,copi:3,took:3,employ:1,part:[0,1,2],pars:2,mostli:2,eibrari:[],than:1,king:2,grew:2,provid:[1,2],tree:[],structur:2,exampl:[1,2],project:[0,1,2],were:0,video:2,browser:2,"function":2,comput:[1,2],modern:2,ani:[0,1,2],packag:0,pylon:2,have:[0,1,2,3],tabl:1,need:[3,2],strength:2,techniqu:2,equival:1,rout:2,note:[3,2],also:[0,2],ideal:2,contact:1,take:[0,2],which:[0,2],soap:2,singl:2,begin:2,sure:2,distribut:1,though:2,usernam:3,object:[1,2],reach:2,most:2,plai:2,plan:2,phase:2,"class":[0,1,2,3],don:[1,2,3],dens:1,clear:2,cover:2,drive:2,doe:[1,2],determin:2,repositori:[0,3,2],left:2,fact:2,wsgi:[1,2],think:2,show:0,text:0,xcode:2,beautifulsoup:2,bring:1,session:[1,2],corner:3,find:[3,2],shield:2,xml:2,onli:2,just:2,explain:2,configur:1,activ:1,behind:2,should:[0,1,2],jan:2,disert:2,suppos:2,smtplib:2,local:[0,3,2],over:2,move:2,variou:2,get:[0,3,2],familiar:2,express:[1,2],curiou:2,becaus:3,repo:2,tcp:2,progress:2,requir:[0,1,2],truli:2,email:[0,3],rfc:2,common:2,contain:[0,3],where:[],view:2,wiki:2,certif:1,set:2,reread:2,creator:2,knowledg:2,see:[0,2],result:[1,2],fail:1,close:3,databas:2,review:3,wikipedia:2,urllib:2,label:3,enough:2,between:2,"import":1,neither:2,experi:[1,2],approach:[1,2],across:2,attribut:2,altern:2,ftplib:[],extend:2,weak:2,extens:2,job:3,add:3,consumpt:2,solv:[1,2],come:[],addit:2,last:0,pymotw:2,wsgiref:2,tutori:2,mani:2,com:[3,2],load:2,point:2,overview:2,unittest:2,jog:1,rfc2616:[],dispatch:2,walk:2,header:2,written:2,linux:2,tuesdai:1,throughout:1,admin:2,uci:2,duplic:2,quit:2,creat:[0,1,2,3],due:0,been:2,hellmann:2,compon:2,json:2,newcom:2,basic:2,presentations_:[],life:2,emphas:1,great:2,athom:[3,2],understand:2,docxmlrpcserv:2,ador:2,educ:1,present:[1,2],"case":2,look:[0,2],solid:2,servic:[1,2],cursor:2,defin:2,"while":3,outcom:0,abov:2,wild:2,python_web:[3,2],earli:2,pyramid:[1,2],glanc:2,advantag:2,briandorsei:[],readm:0,non:0,unit:2,cherrypi:2,lightweight:2,week06:2,minutia:1,sever:2,develop:2,xmlrpc:2,author:2,make:[3,2],week05:2,same:2,html:2,zope:2,pai:2,document:[1,2,3],complet:[0,1,2,3],week:[0,1,2],http:[3,2],assist:0,effect:2,kit:2,user:0,student:[0,1,2],extern:2,stack:2,built:2,travers:2,appropri:[0,2],off:0,entri:2,coursework:1,well:2,inherit:2,without:2,person:2,client:2,greatest:2,thi:[0,1,2,3],choos:2,model:[3,2],portabl:1,spend:2,latest:2,explan:2,protocol:[1,2],fast:2,execut:2,excel:2,laptop:0,rest:2,weekli:1,scrape:2,aspect:0,mysql:2,languag:[1,2],previous:1,web:[1,2],versu:1,now:[3,2],easi:2,drawback:2,apache2:2,blog:2,armin:2,book:2,blob:2,app:2,homework:2,build:2,real:[1,2],applic:[1,2],week01:2,march:[0,1],around:2,week04:2,format:2,read:2,httplib:2,arguabl:2,know:2,world:2,bit:2,licens:2,apart:2,uwpython_web:[],like:[3,2],specif:2,altough:2,manifest:2,benefit:2,either:2,week02:2,page:[1,2,3],underli:[1,2],www:2,right:[3,2],often:2,interact:[0,2],some:[0,3,2],back:[3,2],certain:2,satisfactori:1,week03:2,server:2,librari:[1,2],virtualenv:2,guid:2,cgihttpserv:2,micro:2,noon:2,februari:2,leav:2,select:2,notabl:2,refer:[1,2],cgi:[1,2],cgi_exampl:[],investig:2,run:[0,2],usag:[1,2],confer:2,popular:2,step:[3,2],dissert:2,although:2,januari:[1,2],feb:2,chapter:2,about:[0,2],simplest:2,actual:[3,2],socket:[1,2],constraint:2,manag:[],microframework:2,includ:[0,2],commit:[1,3],disabl:1,block:2,fulfil:2,own:[3,2],visit:3,sql:2,washington:1,easy_instal:2,curios:2,assess:1,orm:2,ensur:[0,2],chang:[3,2],your:[1,2,3],guardia:2,git:3,log:3,wai:2,transfer:2,support:[1,2],question:0,submit:[0,1,3],why:2,avail:[0,2],start:[1,2],much:0,interfac:2,pocoo:[],suit:2,forward:2,fork:[3,2],bottl:2,sqlite3:2,human:2,form:[0,2],offer:2,forc:2,criteria:2,github:[0,3,2],rpclib:2,sqlalchemi:2,link:[0,3,2],gain:2,rfc1945:[],suppli:[],pull:[3,2],made:[3,2],possibl:2,wish:2,displai:2,troubl:2,until:2,url:2,below:2,those:2,absenc:1,fundament:2,site:0,problem:[1,2],more:[1,2],similar:2,featur:2,evalu:[0,1,2],request:[1,2,3],pragmat:1,parser:2,lectur:[1,2],intro:2,exist:2,file:[3,2],pip:2,check:0,again:2,successfulli:0,want:[0,3,2],mashup:[1,2],when:3,detail:2,virtual:2,field:2,other:2,rdbm:2,test:2,htmlparser:2,you:[0,3,2],nice:[0,2],repeat:2,intend:2,devot:0,urllib2:2,gcc:2,djangocon:2,consid:2,easili:2,warn:2,wife:2,directori:[3,2],wifi:1,descript:0,depth:2,train:[3,2],ignor:2,time:[0,2],push:[3,2],hello:2},objtypes:{},titles:["Final Project","Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["project","index","outline","assignments"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:[1,3],code:[0,1,2],queri:2,consum:2,four:2,concept:2,skim:2,ronach:2,abil:2,edu:[1,2],follow:[0,2],although:2,decid:2,educ:1,git:3,flask:2,tomayko:2,descript:0,program:[1,2],decis:2,text:0,sens:2,spec:2,introduc:2,fax:1,sourc:[0,2],string:2,chameleon:2,far:2,mcdonough:2,util:2,veri:2,word:2,unexcus:1,hour:0,level:1,button:3,list:[3,2],"try":2,imaplib:2,kit:2,team:2,small:[0,1,2],pleas:2,cgi:[1,2],outlin:[1,2],representational_state_transf:2,cgi_exampl:[],htm:2,restkit:2,design:2,pass:[0,1,2],further:2,carlo:2,click:3,even:2,index:1,what:[0,2],sud:2,compar:[0,2],defin:2,section:2,advanc:2,abl:[0,1],brief:2,access:[1,2],delet:2,version:2,"new":3,appeal:2,"public":2,contrast:[1,2],hasn:2,full:2,berkelei:2,gener:2,learn:[0,1,2],here:[1,2,3],met:0,let:2,cursor:2,inher:2,along:2,search:1,cover:2,technolog:2,step:[3,2],prior:1,zodb:2,doctest:2,pick:2,implement:[1,2],chanc:2,ourselv:2,via:[0,1,2],prerequisit:1,extra:[],activ:1,modul:[1,2],gatewai:2,api:[1,2],seattl:[],instal:2,txt:2,plone:[1,2],cloud:[1,2],highli:1,jan:2,from:[1,2,3],describ:0,commun:2,univers:1,regist:1,two:[1,2],todai:2,next:2,websit:[0,3,2],few:2,live:2,recommend:2,scope:[0,2],type:2,tell:3,memeori:1,share:2,relat:2,reign:2,enhanc:[],downtown:[],appendix:2,templat:2,particular:2,actual:[3,2],must:[0,2],topic:[1,2],account:3,retriev:2,valuabl:2,prepar:2,work:[0,1,2],focu:[1,2],can:[0,1,2,3],http2:[],purpos:[0,2],root:2,repoz:2,quickstart:2,process:2,registr:[],smtp:2,indic:1,autumn:[],tag:2,explor:[1,2],tal:2,onlin:[0,2],differenti:2,cours:[0,1,2,3],end:0,winter:1,secur:[],anoth:2,write:[3,2],how:[0,1,2],vital:0,answer:0,instead:2,simpl:[1,2],chri:2,updat:2,product:2,mar:2,resourc:2,attend:1,dive:2,after:[3,2],sundai:2,lab:2,befor:2,mac:2,attent:2,date:2,philosophi:2,associ:2,demonstr:2,goal:[0,2],classroom:1,"short":[3,2],practic:2,author:2,django:[1,2],tale:2,inform:[0,1,2],combin:2,pocoo:[],allow:2,order:1,talk:2,tty:1,help:2,hypertext:2,insight:2,soon:[],through:[1,2],curios:2,dynam:2,paramet:[0,1],style:[],directli:0,concis:2,grade:1,offic:1,html:2,rapidli:2,persist:[],comprehens:2,mail:1,might:2,pce:[],them:[1,2,3],good:[1,2],"return":2,thei:[1,2],python:[0,1,2],dan:2,dai:[0,2],initi:2,cew:[3,2],framework:[1,2],hateoa:2,httplib2:2,tilkov:2,discuss:2,introduct:[1,2],choic:2,term:1,name:2,anyth:0,didn:2,bonu:2,accommod:1,slide:1,each:[1,2],debug:2,found:2,went:2,gui:2,compil:2,domain:2,laboratori:[1,2],individu:1,continu:2,weeknn:3,realli:2,ensur:[0,2],connect:[1,2],doug:2,our:2,happen:2,out:2,variabl:2,accomplish:2,network:[1,2],influenc:2,open:2,defend:2,publish:2,content:1,dso:1,rel:2,internet:[1,2],clone:3,common:2,workflow:2,given:2,pub:2,standard:[1,2],quick:[1,2],reason:1,base:[1,2],org:2,fridai:[0,2],care:2,filter:2,lucumr:[],place:3,principl:1,assign:[0,1,2,3],south:[],first:2,origin:[3,2],softwar:0,render:2,feel:2,onc:[],qualiti:2,scene:2,mai:2,instruct:[0,2],restkit_:[],horribl:2,fantast:1,differ:2,script:[3,2],data:2,top:[3,2],system:2,stack:2,master:[3,2],zeromq:2,"final":[0,1,2,3],schema:2,option:2,relationship:2,namespac:2,tool:2,copi:3,took:3,part:[0,1,2],pars:2,mostli:2,eibrari:[],than:1,king:2,grew:2,provid:[1,2],tree:[],see:[0,2],structur:2,project:[0,1,2],were:0,video:2,browser:2,fork:[3,2],comput:[1,2],modern:2,ani:[0,1,2],packag:0,pylon:2,have:[0,1,2,3],tabl:1,need:[3,2],strength:2,techniqu:2,equival:1,rout:2,client:2,note:[3,2],also:[0,2],ideal:2,contact:1,take:[0,2],which:[0,2],soap:2,singl:2,begin:2,sure:2,distribut:1,though:2,usernam:3,object:[1,2],reach:2,most:2,plai:2,plan:2,deploi:2,phase:2,"class":[0,1,2,3],don:[1,2,3],dens:1,clear:2,request:[1,2,3],drive:2,doe:[1,2],determin:2,latest:2,fact:2,wsgi:[1,2],think:2,show:0,lightn:2,xcode:2,beautifulsoup:2,bring:1,session:[1,2],corner:3,find:[3,2],shield:2,xml:2,onli:2,submit:[0,1,3],execut:2,explain:2,configur:1,apach:2,enough:2,should:[0,1,2],kessler:2,disert:2,suppos:2,smtplib:2,local:[0,3,2],over:2,move:2,variou:2,get:[0,3,2],familiar:2,express:[1,2],becaus:3,repo:2,rest:2,"import":1,requir:[0,1,2],truli:2,enabl:2,across:2,rfc:2,integr:[0,1,2],contain:[0,3],cri:2,where:[],view:2,wiki:2,certif:1,set:2,lectur:[1,2],reread:2,creator:2,knowledg:2,lion:2,result:[1,2],fail:1,close:3,databas:2,review:3,wikipedia:2,urllib:2,label:3,behind:2,between:2,progress:2,neither:2,experi:[1,2],approach:[1,2],email:[0,3],attribut:2,altern:2,ftplib:[],extend:2,weak:2,extens:2,job:3,add:3,consumpt:2,solv:[1,2],come:[],addit:2,last:0,pymotw:2,wsgiref:2,tour:2,tutori:2,mani:2,com:[3,2],load:2,point:2,overview:2,unittest:2,jog:1,rfc2616:[],dispatch:2,walk:2,header:2,written:2,linux:2,tuesdai:1,throughout:1,uci:2,duplic:2,quit:2,evalu:[0,1,2],due:0,been:2,hellmann:2,compon:2,json:2,newcom:2,basic:2,presentations_:[],life:2,emphas:1,great:2,athom:[3,2],understand:2,docxmlrpcserv:2,ador:2,instructor:[0,1],present:[1,2],"case":2,look:[0,2],solid:2,servic:[1,2],employ:1,admin:2,"while":3,outcom:0,abov:2,visit:3,wild:2,python_web:[3,2],real:[1,2],pyramid:[1,2],file:[3,2],advantag:2,briandorsei:[],readm:0,non:0,cherrypi:2,lightweight:2,march:[0,1,2],minutia:1,sever:2,develop:2,week04:2,minim:2,make:[3,2],format:2,same:2,check:0,complex:2,zope:2,pai:2,document:[1,2,3],complet:[0,1,2,3],week:[0,1,2],http:[3,2],assist:0,effect:2,solut:2,user:0,student:[0,1,2],extern:2,studi:2,built:2,travers:2,appropri:[0,2],off:0,entri:2,coursework:1,well:2,inherit:2,without:2,person:2,exampl:[1,2],greatest:2,thi:[0,1,2,3],choos:2,model:[3,2],portabl:1,spend:2,left:2,explan:2,protocol:[1,2],just:2,when:3,laptop:0,tcp:2,weekli:1,select:2,virtual:2,aspect:0,mysql:2,languag:[1,2],previous:1,web:[1,2],versu:1,now:[3,2],easi:2,drawback:2,apache2:2,blog:2,armin:2,other:2,blob:2,app:2,homework:2,build:2,earli:2,applic:[1,2],week01:2,week06:2,around:2,xmlrpc:2,week05:2,read:2,httplib:2,arguabl:2,know:2,world:2,bit:2,licens:2,apart:2,uwpython_web:[],like:[3,2],specif:2,altough:2,manifest:2,benefit:2,either:2,week02:2,page:[1,2,3],underli:[1,2],www:2,right:[3,2],often:2,interact:[0,2],some:[0,3,2],back:[3,2],satisfactori:1,week03:2,server:2,librari:[1,2],virtualenv:2,guid:2,cgihttpserv:2,micro:2,noon:2,deploy:2,februari:2,leav:2,unit:2,notabl:2,refer:[1,2],machin:[3,2],core:2,investig:2,run:[0,2],usag:[1,2],confer:2,popular:2,host:2,dissert:2,repositori:[0,3,2],januari:[1,2],feb:2,chapter:2,about:[0,2],postgresql:2,socket:[1,2],constraint:2,manag:[],microframework:2,includ:[0,2],commit:[1,3],disabl:1,block:2,fulfil:2,own:[3,2],curiou:2,sql:2,washington:1,easy_instal:2,zpt:2,assess:1,orm:2,foreward:2,chang:[3,2],your:[1,2,3],guardia:2,fast:2,log:3,wai:2,transfer:2,support:[1,2],question:0,"long":2,why:2,avail:[0,2],start:[1,2],much:0,interfac:2,low:1,suit:2,forward:2,"function":2,bottl:2,sqlite3:2,human:2,form:[0,2],offer:2,forc:2,criteria:2,github:[0,3,2],rpclib:2,sqlalchemi:2,link:[0,3,2],gain:2,rfc1945:[],suppli:[],pull:[3,2],made:[3,2],possibl:2,wish:2,displai:2,troubl:2,until:2,url:2,below:2,those:2,absenc:1,fundament:2,site:0,problem:[1,2],more:[1,2],similar:2,featur:2,creat:[0,1,2,3],certain:2,pragmat:1,parser:2,repres:2,intro:2,exist:2,glanc:2,pip:2,simplest:2,again:2,successfulli:0,want:[0,3,2],mashup:[1,2],excel:2,detail:2,scrape:2,field:2,book:2,rdbm:2,test:2,ignor:2,you:[0,3,2],nice:[0,2],repeat:2,intend:2,devot:[0,2],urllib2:2,gcc:2,djangocon:2,consid:2,easili:2,warn:2,wife:2,directori:[3,2],wifi:1,xmlrpclib:2,depth:2,train:[3,2],htmlparser:2,time:[0,2],push:[3,2],hello:2},objtypes:{},titles:["Final Project","Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["project","index","outline","assignments"]}) \ No newline at end of file From bf2a1ed560092bbae1cd021856fedfa3a254e491 Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 5 Mar 2013 07:54:52 -0800 Subject: [PATCH 055/114] adding images --- presentations/img/cloud_cover.jpg | Bin 0 -> 196820 bytes presentations/img/heroku-logo.png | Bin 0 -> 2877 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 presentations/img/cloud_cover.jpg create mode 100644 presentations/img/heroku-logo.png diff --git a/presentations/img/cloud_cover.jpg b/presentations/img/cloud_cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5d763fa57db5ed0933e11be22da15cd475bcc53b GIT binary patch literal 196820 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%0An_6r0KmEYoRPNMsXX= zk^X&X!Y!?pjz4xvRGkP-J5#59F{IPc5ftxCTVqzjH2uZ?Epe{%{ z&V(AL8}?WDE$8wZ=BF_>IT-$q5N&SWyJ%KsY5~2q|y!WPe?0Lf0frSClg8a=Zevvsw zmq5_0?&o>=tt#WNVQO8fIpz_V<{AON_Nch)NNB~Uwgj@qVxaaj*0N0vC+>lhv*-ZY zI@R2lOq-w4AQ+NKK{2H)oKm34O0*X`gZNokXltFT3Z|+=gE0mVqIHgyY%#Ax$!kV@ z#tNB^atHbKpxRQ>6QmfiX9NJFeN5JJM56}Xvx-PoK{>|xwUb%wd2;jx@|0%u4*vB& z;kdrV6p0eRkBzF_@3EI9+YBL!!BlA-WExpXJqn>t=pwjs({Xef3TGC#L!{qqK29LAc^TmA!+ zi~WYzC^l9mXIh)DMb`R3vk+C0022`u(2DjXpx;5H0hAoeI>^-2r4++7($Ru4CU5{@ ztb<0Cdy&`WCYfK~Mt& z+JrE2+7&OOhT8%FEC4?s(RkAAqnD;LWr1mbNuSQ9;{9}18!W~f%wlvSKqIYJ6u+c0 z;(mZ)uCNx;8W*5C3hItE_HbvFXs>In8#H@-)%eHJ7m>7Zp>$`rA)|l#skyG1M73VY zT2jVJkT(Eo4J)FNSJ?-)tffh~uc;boK`MW!ayYlN17brN07W~C2k^w0ATj(~kwHJ8 zrCUML><}4X4Z!bCui0KswtWIydM;omLC!gEVs~{>FkRv`bk;% z+LAM_%_hl29I#}K1a4{5y`qsz*^scP%px?1pp!vYS~3y{{2J&xN4+a{J+S#EK~twt zccAGG-6I_|0DDrVmt-9Nf+EP*LDFbsX>?M(qHiJrB%aYiHpW->b2Q~>0lvD?NR~@_ z2oUH-Nk63|lJ;oD#Ti&*5GG(xO3Pga+c+0HDOA|R#)gVit%)aQ2q`(0gCA$99v?#GYKSt3 zRzN|gP4vh??t!*;Ij%-t!*VMmmqq^oW&VhSX)%iQO8V*zVW_r-&PLW2E(U{bO)WH!=-$JZWkVQ~Q2p|FR zS{Ljw#FwyxG!c}8pzk!k^aXYiLrSVE78-#&&`I9H?T0GSpei;ZnL&0ljFRZ#1P#<5 zo&D-BC6ZFF@&xP%A_;&2Go@80&?hw2BN=3c-KS5AHqgA6+4MK;dB|8CPYuLz+n!D% z6^O(OD+4iA8pLi4*T#RyJc(ZfeFx&PuF>?9n|vI?c!R@nn0_U~Lt8j;Xc_eq28B;g ziusQp%akQ{eWnDQYDbcMDEk@smC9Z^@E&I2#|GRh0e|l{ZrxeTrdJ~a)P_2W_Pnpk zLna3aIy~t=Q7_Xwo3p{DlW{Zu-relx;(gsLA_dU<{{WFz zjigFVtx=?6?e72&U^Nxfj#b&uk}YhdytzW1 z^n@-jk^lgIEO+feH+p2{2>TOz%&i2V5gMJT(wA`${{Z3%?yTnrKA)exX4}+-P)Y6V z18!-YzkLy7v^cN)+NEOS6Dyxy3s1(s&(30!+AX$M~ z5u^=u{HoE|k%Ml5W@4;0I(mWYT5IgAu+q>h;04NZY9yY9rLfdeGv<1;JhAw2(nr#cT6>gtM8X+P;+NH_+Hx}N;RgP9r0a4O) zt3{>!9YOt(VJu3@9Uu_~sm&3TDT^G;#!shZ(zK!MtSu`5@F03y>slE7gCwnkke~%^ zK_h*ud}{V-N;Ot0az?+5Yx7OTpvA>)5qMG*kQj*s^rhyXq2(|#b2$LA9+SN*#+e5u z{gLy30ePQpl(B?RWtvG>WJ7w1&!N&Idb4p$p<$7~@;RNoMiqW`H9wIzOrnfx(ZfHD zj)zedNj2z20`sgqRZoPeV8x=g^q?gQboHo{^)?XT5_>5->n9hwoe{O zbcljtNRzqOdR`m-S$A)232@^{Ro)L%RpI{t$WM_1FPMTr1E7igzbc}}pZJ^O<+}j4 z6e(f=Ga!)^%NN@gG@j9d<_v-W-g{K--B@x>5R@k@5Bm0{lzoCJ17o8D83$8B1ruqI zl`9#B-G8N1g{vy&MVcg-3QmM?Ly8wmYy*IWh_+Y(vFY(l(~&+;xS(aF2!L3Qn~I+w zO`GIzv<;CC@gPVY5B<|EbQr-hNBC$PQ722gA7WKY`fNs{>bHoSaWhil+fN2HE zn5ulT>(M#Gk{h?CKnNsjC;ZZcV&wk-P(l(*u*yhrAyvBN8ht7LIY+T1r1U+9DBxwC zbdV=nj#plWgp^$kTW>6=a5A3#DOO8b3#+k@4?=Vqkb(}Cl8fjx0DxpHuCd%23DD8TuF01^xDs?a=>~(j ze~|77VOXT({99|Wslxq<2(LlIdO>D_eZNYyB%erWZHHEwQP;5B;-x6w(gmb&I~Irl zbUo^6$Xab178woI48=-_+o7zoQ_#FMPepGKK&70tEW-QOb_w63idgI2m5Sk4)Iija zkyptb=#@pfV-0jmDvZEsr%Im|R!K+tL9Z3M8C67%r>!H6p;V;akUN(fIUt0#Tdu#A zXf&3J#%;Qy3i=V01|*KvO0{fvX_(c&hoNoY?GzM}+ZE5#3NXaNEPy-y)ZZ*6*!){Q zhXgrt%7Zhmwc|-9?GFn}WO6Z*paBp%#T!dOlhviOi)<(vr0clak6>9}QbrB3Nr`T! z-ku666yMN5p@M=6j)$S8j4hOoRqYZM)j?o;$REI(i6A_U|DWX>m%z<`+){e~Lx=7<&x1iBR-!+x{ z8c$V52q1t|DUSaDy(+5@HAXV52m?02?OMHwR=Xf=<&l&}UvG-dChVQ@{{SN?ZX_8K z5v>VJdMu?%*_1#?1Y~II)YfgG6O6kuP$Y^1%sJmM zGakfKe7P5+IpeCL%?As?u^4PUpd->w?e(nO*saI34B{|X)vVpKWUFrruC+G_EtH3n zx@Nz{_+6_AxA4ls&c=Ekm26pl&TQCy#G|!gt~NzRawNv}(vwQH6@Ix-T_TL*1*4l3 zccyCoCGh-qGYyTw-oxEM=tBkuHlqk{v!-f~gZ}_%zC*=w{{S7vG0lOg-b5&C*38&jNd{yGl4Fjz|CXqQ)=@hryDfEFSUHAB<J7i}WRkxT_~J z0#4n(?u;Cp0(9vBW;s;*pJ<_xJESs?wl4P+kOL5t&~>K7soOzvwh7OeN})v^E1}LW z(ML>$(!OGalN)O_C4c=8$rFUJwmi>FntXCdDlIO^k}~?ELPXBumnKPGgBIkeux4ge zR!03rKg#Nvb^6AT7Hqk|c_Up;^_0=eDK^3eC6qSCCOQf!s_YLN^h+sX5kS+g{ZN#Z zXfVd!f|qFwGa#4%>}g{Z(OF7{>@*c26wi8o7p5v|t)SA(pfc~b=RzqbNak5B@x23N zF{l8++iH2_T^&)3Xi?NCHlw%GzTjX3`G9`THhY@KNakNIZ)5y5j|p_aDV*~xW}MPbNQ7-cA8y8 zPm=mzeM2erL~YucHuO4+YP}N72!b+!I`uy^lCa7F}XmY>oWYr`xbQ*~fw4NXOTil&x;oo(iMCVnWU){PsNWLcM021I@@ z=|x4da*obSji7_9YEG1`dTc7IXcfZ&m2-`tf!1k$Kj^Mcq6OHjHMa+>nrJ_!JR47B zL#b9`tvvywEA(kK(HoNtpfE_Cq?*xYQB_F*AeR0akv(@5t|@LqC0@uKc2NdQ&h!+R ze^>0_E0-u@-9uBlU4}`njL)HDLpGJ6Kj@Bcq(rKrQR>W2m6z=MGR90hLC^@-O}=Ry zBL~pYgo3HcNit6RexB8)wwl=-(#v z9^J_Rn?@!`nX1ZGyC0qU8nnx8NCAL4#?w;d+w6>@uFDH;n%heZkRwfpT3I@JMHEs* z)&wX%p{~70_ohxS&|8fTTXHpR8(*bmi8p4BRP->cRRcDlZSPByBzh8(cFr4$2nR78 zJBnDvukkM@O2Iph(t3kbllvC$q9yW!1%Qbfh%_U;hbJV728A+Mbl+Mnu7t*t*vMkp zau_;6CMjjf4ySz%pk`472=}PUNp>QfuVK~$Dkxd$uB6a|PjpfF5?VGKBZaeab1Z-X z>qbdEA!OQHD)^II9+V~6bnRVO7o*Nn{kF<)H#u@ppXHwa02OqrwpGbAXYhrVA0#*6}O&Dlret`xu0}o$)>1Z*3XpscwAZw=MdRFKh((G|WWss_7D>R&T zSAv$%VSZaSSv_FyT+0$esY$w{=*hOKB!S;r^OS75Y=E|=5A&V+5n7+2lTSoNg<}v{ zj`~d>l2@@*V)V{s0f|`$WA9aj^fOh_BA}H7W(GbqtmORyHG3um0`dvpr6iTA9mPwd zFkt$BhIZ3a?McP@3yU(NNDB=zV|vaH+YctYBv2~m01^-9OU0sc-(8&1M34y}k*x&m zM83=%#yutun{7WC1bgF!E_t28eyA=zW0f8g&PMT9%S`Im`%&1tBNCpmrLqb>Rq_TfV zvNY`-{JxMUzV%zs+*1Dl z5^ICIaIL#(cI*ED#0e&sUcl2XPc88>g74jlIc6tgNgUBnvbeChGN%3t{u!FyBHLLz zMPHij23VYWIGB6RvMs&E>jUzsHoF94CW~$x!*1~#{!3@HpnAxu&Qz=^H=_RMD`CyB zEn=6={{YBT*O5%S!xE4G@g>qTBK8+pN(c;9+x$LN%luVO24?q>zsPSaIr5otZD1YME6Cs~snY2w$ivf3oL ztCG;<^nuoy$LQshSl%At^Rp7hH9plh25wPZn>G&=n45`*yXC#M5vbqVx#xcl?zHXn)b-W7;zc(rXUyJ-hW2e7X@CLD{=b>>vIZM-+dpEHiwN8%WKRtS){N-!&I z(tJ%VmVQ^X&f((NJ|E0!XBC9Sqm>;@hC9VHB$7JeH8}qOO_#&oaNxEt;y68?ErYR* zM-ycp0r!fQNhjGpYA%^!;ziZQTe*7<%ZUu8ReB!vOk3#c0fQ)C~sIc+Cr5ZPk)MNOF);^6|a;DbCx$ckF9NVj(wFl%ZqVDF^>JkUmbfVDO)J< z1bX1KgRGxwqDi_&?P#vJ%0h-+jA(bNxX_8k>8+4v3^JU|L7C}BG5(27_t2rcZ8KW7 zchvg|GK)&s6OTx$yzJ`0!hqkMXnmnv9h7$lT*QakAoZ;&N7-1X9hF#u2w(#CgF$zs zQaKaTWlg}O=64|OH6OiR89s!SeTtdR6alAm6W(ibY()?0EXn~@*Qo7Mah2?DUXZ_~ z%WDhPMvG3VB5hw}lrw0>-=T`pldN-df4l|hno4z)SXK7$Nm zR}iMFl$qFVRCyH=$p?328KjU@s{tf;rHfv}Eq@LNkp-1T!k;Bsqc+Kw^$M50?Tx9wdAsj)<0UzM3 z+ZqjY$hJj-B$(1VdsJ+BVz;6Uz>=UB0%uCP$m)@slysOf%W)6_Lu)Zpad%*Q(jpv^ z6oO;*s!BTOs#58Zb0!qa135>xy(}Y0$-hJdo#b_s(uXS8jkT&G&FVo$+>Rh6cOgO0(Cc&sw?qI6$J9)0 zN!qlfqWo)Z6E4TA9=e&K1y5j{mv%)Nv?(By2U_ZKkFi|&DnSPDKw~t#SE31hvR;5y zLuDTo9&L7XTwZ|Ooo%!Zsp=BSjlzhS@hTe9nDC*g0uhe8Y^eJE?y$HYIHA`b5g0akIcd5=T zzK6#o-)05e%^`p~f^?;n8qrDbNstem5i`;!T34h9MXt;(#?9sC^n?)YEB=@p;ccQlT7=0?e zc-!b{M_ObKsu>37Zl;VQy^V^xXFRpjEQ2+q_pzptf{YsBf%v3HQ{J6bXh_DoCKado zgc{a^8@-qarL+K&cb&eKIa#6a9vq+FkOex;8f5U#SM+*KCuAL7`8hw-atJwl2&!$Nob^?_uGjF0nN`(wPYqz~T zWqM*$yFlHpl0g6twA>;F+w?5UARR+)NEG~>dUh&bz(rZsl^qy@ek*#T5Q(H(mK^*sN~3<+AjEJ4;HsY{7j-{+ppzGmaFwC zjuQU>CKnx#z%dGNt9A)rnw~rREj-CBBVE7#(RGTlHKYFk5OyBb*$bnZS?mbG;a$M6 z?5);yGgOq_Y)MGX?i#mHlyVpikM*VHU5b-^3~-JNZeMYV9*`$Pr3p{yraW}^Y>&aX zP`tM@WP_@q-lOwO>Yg}#1jO*nE!9(ivbHZT;e)@;1)2K<@!F(zmxg@h#QAR%hr{ta z1|jS<)hTmfXWqPz$auV!!Hwg&!P`Bw&w%DNv&J|#AF#Nils;1;+X2)M-o9&_T9Q5N zUPLCTnd0_w_^ua!360|H$jl-M5@{g_^0Yi+k<@q|TjPKHgkrcA%!t00W@s=wcdtdp z4nMIcjklv~;oL`#@XTis#^Z2Uj4h#YUlKvl-(W{d=F8&6tum=ec6twn__M`uys2*e zj7`$1c|sIy#pLR-{VT-D;3q8)k0m`C?e1#F@P03Y=7hGYhURQltMhE4lO@A-5mkN~ z<3~i~itq7qwDw;s(em5GFAA`0a~N_Jz5yVfqQ0NS^SvG}Xe4;gnYmoy zE?rS#ECT8JQ#sr3L!_vyxJv=*Xp%@ZR4aVD5xpz~jMJn}^%q`) z2PM%*d1Zis0QUB)D73T*!8dHLb;?0tsV8e`>EbXw^~*K?+GZ5S(HplN43Mn7#>Rvr7XJWJSouZl3$Tztg)nB4Slyjc+O?rP*@Ffpy@ehr6G_Y2 z4GVgj0n<~Y)pP_D(4 zzKZ7>gQ-1ZN~+`NjK1V4b=g>Dl>}-30CcfU>7n+v2sGwnmnrw_PbiHKuxt<(QeaNH zZ(RJJNehy?LTp)dAd%W9PV~-6_6YJ_kT(f}1kBAoIHH!DsyG`#3mR(!tqC@sg~^sF z0ZXM7mnLV_oeBQ{1sO#>u`y?p(nbkr4otsT8j2qyeH2lgy9Ug{G83CnKlM!qVV)}J zBHSfX1dPO))@db$_KI#*f?G1aTDsGdMu7+Y`T8!4pMJTfd;}Hg8I~}QDo$R!w9?&4b=3@#@fOM^3# zziL|hB=pFu22u!Zbt7t52kDPmv;;9=fDE6d2N?Sw8(p(4a5H2gJ?Uaja*JdMEKXd& zfjd+3pV8|S?%yog#)p$yY@Kx1@M?y|x(@iON(jOdj7+nQIlQE=D)X>8u`3)Ll0_YnO zpdI^DP21RK5ydQ{(tBun)ae7(wmWIG3vu)ZUB60erKCxw`x!Sa>@?p}HTKidDn{8>7SFzSjmR48=W&r_^42{JkqL8^I^c22k0YvKt1W<5wWbw`P(BiQTn67}# zPX7Q}i<3H%`yaEa`H&k?CWkk5MBjP}_eh9lVLf_RL>KUmU4^!WAcEn&x=@so5y4m4 z0mE{pcq|Fn9=)ot@@Z9z#n(WfCPv-~5fw$2(a$M0(g~w}6=Fw0)BMtt_m+|9LOh~2 zF!+YHUfq&MS?N=xw8Z%7=w9MG0I~V07a_Xwu^&KFe+Kh59p_FN8 zJMgSxZt%5U4O&m5u5OR~+I@WToi(--lsuxli znAr5Ca%>KhG873qNfGZAuJlSWT(pe6v+LZc{{YMOr;9AxdN}sZpp!8sI($}Ay$uy= zx+KaDNGe8$-e~YfcU9TR1P~Onbs7RFa6o|{DDSRV`pp~kEaU9vT?>FmYM$6tRkH>& zW+8>c0Q*rH$LNgY)9hWD^JXjQ@7A6;#^n11;hd7P zsym(Oz9(A~;PT@z(u zz{H9YiV9L+;zd=oU<8KixS=IWMB7qZM`ZB7GZBRIoCLN9raGSW#gUzUBWq08ID=hl z`A}wJHtkoA`X44w{v(_hhT>0`i@1mtOpzOV8lGIS>66Eba(5(d7qM&^M6N-o5f#YQ zo!p|dDSHr@lw^6H#+oo|XbZ?sOxMo}yXG*la^udh2Tz)+$i0&I-P}uz4-EU6Yq!}R zK*|sDnd?bBsp=(`I^5ZgBaV#U#SLtpnpH8v{{YyTCYMI5dhobp4{bYDlxwq+YRbc@ zmU2Kos;ZXBP7N(E_U{!Lv%4AEKT$=$K!QnAEUaQKv4m#RzgkJedaWa6!ZRF}Eg85- z8lApsE-e&gRkjJgcsqlzJ5=Q@QaWJkwjRbK4}pI$hPiTPf8*^*!L?KeD8=1` zyUaJU6}H475gq6(HfecZOxw9H#9k%KJV|d^Upm9W+_YLV3gh!X8l<#rS@^p>6^-$J z);is+PY)MSMYwcjlCjVOq4}=?{xVVQ^`Yh3JD-#}(Kx!cbi3=3YvSsk7Z2)5keakKj?P z<1Mwuwi!(5-yYuee_V7#D<>!IbJWGeN+h!^iMw4Bavx_Wr zXt>)1{om7!6xz;tR@}r$)jnIoJC6vj5Guo)t>}g6q#a>wg z=1_kYZ+~%A)xj(vC@=)+K}Ow^YP53N z6RD76so&UBWR+;PIW^F4N(-6~=xAdlH|)z5xom(`FgpJL-E5Nj6(uAr_RA7g!t1ot z!zx{qSfrm~t{muC1=~?sP79!{EB^pOw-^Bi8{54VJADD^b_Li5gCjwz(TnZDHm)r5j14f>ij_9Me9wb1}uDw!Y+Kj{8+vyahOP0#|x$Ut}J^kXu)6L)WF%H!y0+w6fX!Bwv4cc1A_iAY>GV~Y0{{p_RSgkGM5zOV!&$%x z9Zc^{2>V28$CBw(Z&>JL*F4;;Xu&UIxO;^8Wyh*IY7Gj0hKw(1j|a^p2~nW;tfJnT zzix-@JDnrB6HKwF^vs_7EEdLaNz{7{ss2aoX(+#86g9S4hGD+56)cOA`V4rknBrZ| z>n>AmsyLHOq@l~9ySOA|C32`RPLo}5%CBgHf{WRU7O?npIRiIY6H7lLT`d;H0Y^8u z$dNrE-!|RNGK7tzrA`xR?407;6>FB2=GsQOwq0YrbjmHQ23(QPHpy>7OyB!TI;I862jUPl&CIAwoOw2`b%{2BUrO^{_Ng!q#Yp6A&u(CNw1~Qh= z>9o;|FR-PnI6nxKmIgiRIDHxuy$~ofiBd-MRHs@fsTc&oA!1IDXed$)sq_~q%>^>` zBi^NC(r6h37zzQ2o~E9(S~j~lERqlMoRXm>N-&(NEaFD!#y+R&y+Mjb}|LxO+l#e#CBK z4C+FO=|w`fLcNl+iFJEyE@p!|H(Jdmx}sa{oAr)z7qE7)*Oe?>wn0`u%tw0RpN+eV zv(dxms^ZP31J1aEYX1P0h`Oljk(4pYK9$3hz)k+h?2cIWjBwu&xsQfpY+=`lUTi1< zKn6h-IsP{rT~ihL50;te=jJ>o72xhLxT4szY%>HAng+X9lKfsWrmXd_hl-=LPE(cX8rKx%ULA5?<}rYTUJhB3D9l*>#{kW+08sDt(_gl_&LJdf8m+b>E63B&9}3QH;)>m zb>=$?0T2~Qn6AEc(d1-=Zi;)Dat2bTE}s+cT@lKwWAI*qt`tnUScx(#IVaFmA7aMI zC-B<>PQ$15rk!yn`BGFvwD@OFWm|=8O?n0(4*g9T%~=nQPiGjj z%mLWX^H7YHnoyEjA~Qh@RHVfF(dV$GYMB-!s4}LJwDbnJ=m{)ZTuB@0LYnB)ci5@& zhGJNN4#R)_S3+%cPvc#X0T|{jo%GNRs;vgo(UL?60I4yjN`qlo-=IEct1J;Zk~Esq zgnP2QeGv{&ECpRQjp-AQu_tL#M6KNxOnSRd{Z$k`iK&15LTA`8D{yK66w+>i9c(qL zgc2JwPTeV8R*e+o_Bf0iPr_m~t!#N>B*Zs!9n98sMIfnnVmC%dB&jRjva0@zIY-!w zm;i{%1bkLnRMDGlXjO?SGi5{D+Mlk;Ja3>*aw3D3z2>r}G^0zgYqxW1bOHvw>F9)9 zdVLGE%*`fQd(h&&8Y(wwgL5DSf}5W4RK(it9Ws@zG8zcl;sHM@MMgYEN69Dd41p4Na9<@#COYom-Ls>uty z?eklbN`l*$dIHxq%A{p6^F<^>B&4*MA?aff-t^60jHK)KL44vwi)e;tU8-@!mu||& zUr2*7BUTx-fzVaC`k`8iTRG|jGbvHn38j$O;q1$p^&=S{Sox^h`V0FPHv~%sY1dr| ztHoN;tv^RIej>1@BYi4X?yL^|5m!+eeIRaULTax<&NhhxA68ihwMyCqaW7!l<@BR8 zjYQL^a{ZZ}HB^k|A)vNsZFKA?Ytc+{tx+br0U`ke_SjI0e#$vnhHSZYEYYBo6zhEx z$s0x!@qi@HVXYYnjy}#veKL*Y0yPwlYKN{`vna%RRQh|0(t${0puyi&^u$CR_v=Y< z`W<~xPctHt2h4S<@=a0}YAa!_Tn==0i0*c+I5Z+r?FU9O7_bBwGC$2LbA3n-LtbjI z2&_j_r3Ze&&Xq36y~GFb<{Cr@ikilr>_>0?k#;$hM9#DHppf4j&_wmH0YN0{Bd>aS zNv`@DPtzPw1P0BRX|B|=lK%k6t_^Js+i;ueG#?-LO7^OPsBJDdF(4_{meTA#wX(*+ zGLSO2VM^-uMoQJO*Sc+-%ajO%rpAR(_}rI8z7r7(8M7Gnidthf?_;+$Q*}qA!4ah- zvU(rlZ)jC-g}A47{{T8t#X17VPi5t-TiwInR<;Zo+i3TyVuNncOtDl|wfMN%m6R#{ zYpuZKQT80-0f<;$v80+xY3*5L`1VOL9%O|E4zOruiu8)cJhnkCz006ArzHNhWd+A< z95ytVR}P@ART_KLUcaE5K9PF0RV08XX|6{LTLcnn>t_l{4uM)Xq~OvO{{RRCBk?0B z-aFHAMuLB5JhluN48z-huWB8tL(8**#A+a&YdadE(G{{7>Hr$Z9VpA_MEwLd<=}t@ zz{mNmENj@&p6T>pTL9^!%x%)0rA4EWdNNQDODPO=AoZZ7=?OfS*@i-Y3jlsJrCRJs zV{fK&$bvG<4zW%0AWIedGPc0XrY1I|v1`*H)|O+`RO{_P3HnAnmCX?(m>?ZKy{V%% z{RRr1_C;+IaYj;1z&*e2t$HUsyV^JIAHlFTu=cKAvM!jJYVz`CccZ@s7WT(3V{lj% zWWnL>+kfUDYguxUX-*OU0A(fqHF&qFr2&YVr@^8R&8-dE;};oa8WVBWrtuYzlO|bV z_?^32+&R67rFhwvN_$~(JWWWDKpV$e3OAzPBo@s>8HhJuDjg?D{{T0xjB!!X$(tjS zv1_T|)?i zA2gELRQ`jd&n`D6G@_CxDK=VRu?uF&0I_0rjq6G*o;6OHo0!o07RqB?e`-jo?0Iqf z5o_UOX3YmeX_Bx)doVAx&bs>z>C&J|d(g8vQK@XRHAcr+#+PgEA zbqieZz;@*F6X_j;$Xwfqu&OU!S73CVG_Nk6zouX^~OCob)t{{W4JIN9BJ4p_os)9t9+H%C=s`9l?Q z*>=Nugo8es^y8P3*~ch0&V%Q^Qn-q77O?EOeJo-HcVNj{IkMqA<;6HjUo`4W_Rt#i zam~JuGbT8rOT=1nEt*XHgI$r5I2%`^9$I-sunPl!dMTTWXs*ODgjMw*(gwzhkdcdy znOx)$3p6&m6Qq07!qB;66}D9311u0i{dTI!pdh*1APq?4bT8 z^#1^xR(Ez)+bZvReLkQjXSFqvaGTQgl5kxs3d zOOu!v4f1HRQpl605ITbdsA=DS{ZUPpg(EhYxOP%PYc%$WB`dJ(*#Io0owV3fT3s4V zwa`m#2Qh&NBt=FDb#F5u8j zdLrFAU|g0Zj+V~g{{U*I`Y7U`@DL!70WIwt(dD2oRQeJP~d=w_y#$d(XB zp@7nrLHjet+aa8&RWsLW&8N|&Cv_v81TmR|>?s}lMPo^Rq+A(|Onh%i86!=NjOH-JT-d+{ zk;?SY99m~Q&%&8=6F|`h%OGTgz?$ zB4LkSkwwB!W$r7Wt96Mbq=TgG6)rm`EVMveW+Vd|#8oef6O)qA#kmZU2`8^=3QP_U z*y6XQ2cT=Yri7TYlN>|>8H||(>!oSre#V4rv7}`}(#Ku2(kfC>dqc)iOnSrR3QRK| zv=or}6817*G>qgv(@(J+TiOkWyuhlAsz!j+X6$d1il$oFyzQ1HhVV}H7Z}m8zhS(h z*UJDH)j6cBq-6^>9vT7$7XXcjI#kr!f5WCROKq9PaPgQh1<;O%S+13xy(5lzlN7bX zi^yV82k2_|U3N`DF4=E}!CAC3jIP6TNs}{LqL#fD0WDi=WffeFXRpOdo9uU%UqG7X zXDm=Mj+H5@?9HaSK8!7vgO*oaXRS@iGHP4epk~*mK+3bR?^~N)no*35dn~f9kvQ`VNCbD%hLDdNe!+DhnE=HvOfrPJW^!mXWzw~o zYeamqPI3tALz7(!;=z?>QWeyKeW=D?!9FCm$dC)Huq_>F)acS_t)jz);a?SvvaSeF zWrS}Oxn->e99z;hjwycfukg-P>#cCbZ)c|U9U7J=6zo9=o9s=m2QmpH zbgMh`MxEOn!rdXI_UI>in_vF`6QNBLxsNMw6%w=GdS!~nmR7nJyN|xgN;3}s02I7Z z19l?VgPgf64@ulrK(48SxsD)#n?cl#s8Sh6)rvkSsaay$%*>NalJp{qi`c*3pcQ#K z>ISr3u`OPK8@a}ez2s0zyBab2AZ~vzsP1$XSij)1mg>$)5Xt}@b*&{9wr`eQBaHE+ z>8YAn#+HEcP>c}&s z{{Yo_lA2FvwH$gk&j7d$=DkDJQj}+%4xbf^6nUV*oFghrFSH7&M-)(DRGHaEFbcpnmo0(MmZ(YDsfnA zq=RxN;$Uu@~V07A>o##{dn+#5ATS|-8WL&w$Jlsiq{INE&aK;ORh8XDRTRqN%%tauB1JzRWbR9* zR^PkpIhBBoWBb=d#iC6~fG-GhNt4_6p~5U{mF<9MBo+$bcBf7&MOHi7F`Fr74DdUj z>-{TaSN?#YleWc+f)uZ)bpofsq)uwsxw<7nmm_E$s6{(7m4AvbF9RW(5Pr36ikCo^ zN7)iVD)70sk+gf#y2zm| zbUbh=JAH@q3+2c}Yuj3#Uf9x4rXhZ0sgwjncd9tWD@58|SzKK~TR=$Cef_Cc$8H@8 zT_OQFk#+s*{UTX0dlsCkb`7M>C8qWw$d;%MVpIb1bTsy#Lvc;rkR*l^8Fhmi)Y|t$ zDqpKa8c-=lxJ=AM6IP5lBD@k>F)8YKU`CL7QR3ExQ%vHqB|{#Xn5AfBw`UpLm&_%4 zQP-j5+vwnJ1Nw65r8K0v6Lby#0EnT~sx(Kn3#HgNwsIOZf==4)Nb)7oz81P*NDfT7 zouC?JDH4#tpe*&Xjy^Vtm0L_(lq)B$m zC^y(^cK}rxhMv^d6K&{eiDg;M6DB`u*rYvEq{EAm_r!dH&3tsnaM*`8RSEMHZ#z?DX)1`y+R?M&Z!N@K zB$1%$P*P||j$X*+C?6_<0nHujuO3A9&Ur$#-L@Yq})hkVs){4OI4} z`7CtlY+0@BL4ZV(DS6urWUTsLP{7Op-aAxOzKF?N+AzvY4aWNPrARYhK$|=tNo{Af zI!H^EP%wildLz8hVaDG~!rO4}vct7IlCFjQu8sv&46;~n9qMhi$K%Cx0z9_`WcHqv z^?j0zo#@A;Wt4&kZN6x#`#P37R?&jeq`5PsM)jo{=w4|f12#xx$_W1e4F<2ECe8v& z1E_=|aX^&M#-<BtGjPEdGyn~Wp%}~AMB7xs8-RM) zuSl%m-h$j>gzhwg2`V(u}i?zc&yHhv<++M(3xKw(H+w!V#OQT7)_t6qb zGchATX%wA>Z$t~R48P6nI#Rd0VP8zmvcc33NCVaG4N=We4~gD_yOC^2A!e5yK8j@4 z%mysPX9PxA>rX8aisTyE7M$oH=wqRzalN9g@zo5Qo|ekdtnJd3F;Y@?v@7Nrfcc~W zAZ<*l`WjMkGH(%-%&6T)MgScnY3;2J z3(;iK_IFo?yvc#XUa^JZ*gJTfI3n0*(CT~Fk@*}FO5%2SUSAhop4q{1P6xxV)~u!r z4TrXH(<-t~n@@WASwkazpG%J-XwbY9!|;n9H*jm*M~WLb3$1ko{{a0{2PzZ(ZB6IR ztUVBON_#%Tf3RTi+$3C7ORUz$O;6A3-o8cTy&p%0OOB4+NKhJRtni$<1L>*4SwCDn?eM1r^Jz2pEY@lmLC5A5xVVYh;k;qOd3a>IJ?=@eBZ$_ zm;-L}d7eU&R0;K0RB|qv44CO!Jgeef9OKK_^B&p#O?ti^c8(m0Gs~QJlP_Ckxnwoj znSrPk?qSZ7wsFr3^lEs%QMq#6%PN^~0R+eNsy`=s=#0E|RMDqi<;#{Vhh;5yuA0^V z0PJp&ANq+SOUGa?jL?pzNCc1Cx)x8PkK^LXC&FZil{$dkMKVve!xWKCiNi86Rb@qz z42hq5WaH7zl2zGJe%@Ca0y5}5>XH3=6)P$+12J$0L8(3JxbL>da^ulSh(-SZhP@8) zPm&hx2`taiO^B2-RF0Zd;-9j3wb@qVf94TZ`4Z_JE=#5^RJ6f9z*c!kN*C-M$AoPL zy%tS1a(}6%NmCFoWRgOYr@dNGe#yrZ_6qgEn44=6ydUXXjH_&Xmbw7f7fjl>Otl++ zgq~XLh;|{&kVdCUqyGS9A^Rc)h-i~0H~6QEU-~&@lu0Ba7zf`<6Ow%tjWZ#@Wh4@y zMFo+H)jq>5(F>S2V0(Pgl2xWvMz&|nU}iFtww*ocV+HmvHrUeK5(Btc*G{#R8tA6| znO6o08t5dCtalV)7r0&7VU}hCNG#0PK1NsYFwSsNX0(TCJKs*7#17pwKNv$ zhgj%>-6kSN!c7@LC9-zkL|vK70$BUSWl4PkT&j#4kR{G$8)>A_+vo`>t7J{a1je8f zq}EY>!sUBLOO{{6s-tPre>x2>{>mo7i-eBd!S7i?zR5Sf&I^P9rA&1vsj4V7?7D7& zHPNlsvS1`Qa`-G}47lFUefl)QdIj@!0BCP`aHB^Ph- zQcBwIK~GvZSle59wFf{4N=QTK=bUBR43`uzg(IOLO$!Vnm|(^j6PWMV(oHn>8AE&M zCzt>rFx2Q`trtj?zL!DmvlE#~Q4t;J{;Uv&^f({+Nm&smT`62!D&a#3=pgkyW|hW} zV-IX;Z-MV3b*aYQfTy}7FDNWZ=KRD})<3pp$CmI_%tHg#dVExqcV355Yjhml8C9EO zu{F4_Lvm8sTUVHcfg|6gGLN%COVNF65(TgzL_jgELUE1hmrZ-wZGH(WfeD5aun7VKTHL3J5Mk*>7y znWFtMoE?*5@?0c{CtiS3PCr9&OJ>=H;U^b&?>88We~5e6Eah4{p^h@_7a3cJMLvPj zlNH{|=2X8^N5tB8EC5nEbk@4#73|@pgx3n~A($2hp6jAhab1S{h(!!ev$3tt`V3rs zAQvnMG7fIzNF6AtvA#4`U9|6!SdGnX_Gv+T0M;0Q2y1hp_cX2h7Bg2=F8FeU23a$p z8dLGTkNVgPmTqPQ02(BKC+SS$x)yQvh%!Tx7J6tXMl6<-vj-03h6xKDcczqmGdU;H z*^ecZBnTvKOzTSGmtju&C--*BLkXDEx4k8=MQ3zJ%Wy*l1P+6(TD7tLaDKo#d4skQJ?3a*G7h&qyM&F$+-$eN?E5~WVwB?Iiq2`S&!~Kb_MzkqeasI9;yCLZH;G*q zqTTPpPS6Rji1U0bxSM=*cliGRkx)r9-+m2qM=0}87UK903y#C%Zz=`6Y_Mfk=m{EZ zO?j^?`aN$S&WxFH&-|xq`rKDX4#zAGf~|^HdUJ|riabc<^x%2l3vl^l`lM@JYa@C` zE?io(%e?)EZXv=QaHKu(G(C^SUkvG-E}oAj@oq)O@q6X5N~wq&ld-RN7nGu@9M2D< zs(G)Hc#jNV7${MwfuR-Ei^@!l@U(SN;Yu-0=S`*7L~ed-u}Kh|eKStxP7!Y?bXDv5 zRWZ-f7I9Q{M-{-~)n7fRxT8Te*9QBulO$tDUGXa@gs`?8Ng#t=@K4h?B{j;LH9S?Y z?g&u?N{zIusOU_p`Y3TWkU7c$QT)I|Q zyqzOj(8qlgPS(f^lb6(E`F*I%6Yhefy%7y9Hz1wK=qZxWx5?2kSQ!l2cac(7X+pXr z>~)P-xBRKzw?jN_#>m>bpn)VTXb*Zd_K9MOzQc>9Mrj34Z|g==kEBy9(&#;_ni(<= z`SqpLnWJy8iq?sM2qSr|Hzr5K4jwI?M?8p;r1jBDJtYgPSl>TO?_l8>TOCu|AoCdQ#(V%F844 zfq^ij6&*5}lTSOlB`kix$pwnA5@1vD`$9#16AhLRsor8}H~#>|44i$K{%sgXNz?PK z^1hi>B*?kW&DYyn7xr^WZshFDkowFGC*pM>H~rH_O?xw&zu}oC zRvBa3mP~t#(VW1*Mk*tD)Sr4+VC$p^5e1HBX%k!ay67Jp?Xo52AxRK=$eOKJLqjI$ zPZHbY=abQX#mE?PWsV|q{MAi84L?%)j$!i@A^{8 zbZGK0%!kvV8%X|IM{LczG3Ga}bsFk_>axWb>>OYIPAf4bn1cO1I|@G+sFcQ^vjxJm zGUQ+*ZT;&?8ll@FZV6o)WX8Hu#{zwWmh6jOFD^+|ojvKE2(FN2k-ab=oWSN%dgjoI z8lhZ$1|veHj)!1qV~U7dX=swZh#<;|B=!2!$`7+vtma@d6_auxh=3?8Qfk2~?Gv1< zs3k_8;)VSntd-f2`L$>-00`PBJqsycM9by!(=Z3z)@i+lnE{hCkmL!D;8Xte1tyqD zSdAlIyHeeHDaraG7@+B!Mfjsh>o`s+;LWWG;K zAbplwY18`D8wz;1vzI0|hJ&*i&IW^SzcpNRx*7GM>vuB2EG9Lb zzbewmo{}jDwt~)ITFGsOyHJ)zRX~%jg9n_%0?VK>Hu$O1O4y21Y%;t#^((fWe@Lk; z%cL@cTVZ_SB#9$WBV^`UbA%G2O~E?2E(bLEol^&7O1qd>YHLh%x$+?N+lds z=oT{Qw#y_CboEGzvQDXsII_O&^;UpMFn)u)R*HVgLNyUfn4(aJQZ(Gv>LZuc|EjV)LOSgHCtpIlocvvcbayqv0R^~a86Kmh@@>4<)bX<6i5SIsKqzYrI97k z5pfBD8tQt*7MkoanrAaFsR`d*DJu3A74~N^3ZSrJHrHw`{hBJeFz{nBgF4oPfZzWB z#665P%tMP-P`qmtXOrxzf_07$r+Mj36pb!ST-g$ObgJ`+ycgKJ zTM%MZqxGrrUq!LWwM0f8QNao(KPoMMMQ&HLWpL{uw&|&?WIolnS*bpP z8!EGzNGIE+HKn3&BYI>!t7<(_Jvvfby$bP5u%1fJq~+`F?LjAYH#OI0TFeMt0D-Sc zYK#8>BR4aiT0(k&X@l)Z%l9s43|i6rEbU~4cdTJ&bC*#lri$d11KsHu7rBwOf^ zwz`mVcM(U5^hSbtS@S}Yoy{%LduDChK-okQw%sV(dj~I|;3&)*L~qd3Cdtkzy|W|( z8VUZCB_E@1w2TA*hE*g+;89y!1B!hPVQvHxpzFO#SpLgORBRS8F5}E|H#CFTRHYcL z6vvUB)4;e#pTjKT^R?VbT)?s1dsmg0DpI6-ekxV7OTBF|oNn4;@4bSoL4z4b%{K(m zOtX(tJ^l7`@z0k03c+KJAB|bWWAQgpu3OFgOR2EmJr-ew*CtE zp~^lw;4NY}T;8tFR7jKGhre2d4E7x^kalfm=3>6-729EZVQ8+#3eL2}ET`ikkn zowL`Qi${(5gTbq~e>~xAi->($r)uu)1c0UAYmSaK)P&nVH*TyF|^bK?hOS+OLhHo>b+eP~Sz*oHw9+jeV-BO=!y< z_KJJ1h0JBvM1NZ7OIAiv;_VggLk30)%13>VO45Hw9Glx>*DmEOpb0%m=~PzLSYwxc z3boxxRV+J>wZ1gF5lY_C0>X1CAVh#h{{UK8v{o3vmIhkpV0Bmqoj;(swCx;6Rv?%; zdJgm@Ij;H{TR3jHxdlS3YCgT`TsdtDr0$WzOsNcDnIIZ5Zs>V(vL@_KfH|I<(^Kxn zm93;rZ)Q+SOdUjNT=G^cO}k@haX`#Q=W5Z=B8i)(AS)lP)kVeh!#PtVw-t)P)DO~@ zUqx0V)wV_Mvj7QLItb`$k&3HhJuLxp!DNvj{A*e=`yk?;*tNo-42!86!KV2=SdS%X z2wcqQGiD9B8&jvPfm>TJ$8*fW^&>2n2Hwaq%E3tMx!Q|@dkK*XqOd=#(4gz=86=$x2|7UQLK7BJNZ~6g3rQj- zVm+w2Hc@Y;V&K%B*VyerWcwuG)9k>@=0Y7rk|;_^44=?E!Lk_Z(uXt``*ur2ITh7= z%`BUJlYg$$IJu0ptdXxmKD9*QL&GFmrW9rXG$cA zhE%T7>Qf_+#(SW3ZAPN#pR6#mfs9c*ITE~QT0J*sXm+7&f@gmyYe6WDAi zI3_#EN`f;q2?J4=;)0~cD(>FXOCdkVL3;cf7&f{H=DWbz4X>Z`! z#$$DKC%>`%X;t2dWpB}?+_-&HoG1bhP%FFRR7J&#UA)NA5)Q&Qp*%{h3n^Bp`rI$W zF&iG8MR9P}#Fl2Bf)|M-C(Dp+T4nSE;%AT{d_Nhv}mc*J5iovyj8sSp2`qC+V z7nTOqn_dRO;4t>CMYC~)p7Zlko>cTcKOR+M=NfMUg~CAJwMA=3M3pMBEOsJoDk+wV z(3P=Vb+b~veWb479lKX!RoTOlqP_1q5WwXpO=xS;2PY7IV)gAGHAI*y`yqPy0G#&0 zQ?Tn=F-%D>=$*^qRJb!gy-_XE7bJzB5U9n2OLi3dHD1U)_zmhKuAM1(4(7l$;g|)H zuCZA=R5V?B0&c9cE9y>~)fHC6lw{qb2N5b|h&vJv=A`0-89t61%Enab`_sYtGmX0< z*UphSB!f=Txx3MiItHdXXlXc%lD#rPhHSZs?t9US4C~u7=8Z;z3{zRn#=~dLpl?h- zj+Lb!vgvVDnHO*wOpyd@-lCCpI#xtHZVyl@jy{noNj0^u7bF6sVrii-K&9zuBNhvo00+GW_8gLRaYT_zr~m*? zlq>8=P4vs}_Kzyazj=ZZJs_Q`UnM#^W8?cp-VcB_D+O=L8LzQEk=Cay``Oov#^f5; zE^$GKOIGl=?@qpvJ5owflG`aC26v;nIa3A97)1Nk{1wZ1Oukwd5C_E9k>n_+rg}KM zc`o#5{9}hT%uXiyK12-?$53abTMkN8!b- zTJo{QEgwf6$7YR)#oI;}7Y z*U9*9AB)5y1OyU6>lJAEE%b9w8ne!vZ8st}S~s9wUNvdw?#d ztnXA)zhp8&`!$?i1jsNONfF+y9FNfnc-)O=8EeQ6&6EiONZzl`&Ur_RuFXdoh>*ct zC}SIIrB*SqXDKC2)A5(t%jbv(b6qgP&Ur6r*YS?de6q;{TBLEM*vl#@ZrmnB4JqO* z@;B(MyLT_DHTH^hM=D{DHNs-=)!Yynbb`Uge ze=1nPb~BxO0@stv6Ce3b;+i}{^6O-CuCQT=)D5HiMN)sVqn*vCWW3UHmMOl!70bn~ z6pQ4D=Pfy|X4kYw(wKE<=7LKs4R$&cRE(XBx7iza2rOAw-a6H$lT?JHGPs2RpHq8R zBZInQIafh`@GdhI6VrWJF`<_JAK&(@xI zTx_I~8;qW)DtgTANsbiuX=AmaMs~`kWqWk_rgKZt%^WW6v3AevEegbGS;^N&N{93j zaH=6meUG&yA?=FfkOnInzz4tir9D5fWfkm?nF>r2NY*|mwSImn*?eG+nOqdC9}E0m7Zt}eo-Yi0uypxZh74)vS#%(ErYfZ!s*W!Lhd z$JpOGWLOm^EXL8+o-K6It-gttIU#|br@btxGKzZWz#vM&n3pJo6?L$+ew zsUsN;!9{CkOAs>oaytzm)6xQ)UV-Ns246_lN!q6@ZL*QJtr#S>vo`nlt7A$lVn>ze zgMdPUz;yVbH+wYGvl0M+u^*B5q-nKf6JF64^e`dG{i>LqEueA!k!-gG%;(Y!$rL3z zdItwxkyRueMyIC6gru76NXKLtL>#0La*AAUe`TCBPS_3UZDj4zt2*HN=?3wSM(81O`sSA^olZVdO9)1qz>Q>keCOssz;z?O02^{xfK~r*l z5{y^2a5PRyVbfa5G&e3iD1%S zB(25=u{|p#?#+`Y*j2c71yGqIZ`PlECS^TrmU2~gQNFv@P$xFu`Waign1CmL=|N+z z&XvdLaV}~bFv&X(^wgRl-u{No#!)Kyq#mE01&Q{`PE@TJR?Jr@*K<2ioS2&IXk20e z(2?J*PAhvU$qd^n>bap<$eE^+raQ@@a-|sh+BXD#w5_GtEOx^ArgABTBU!Agvin*Z z!{2ZYW9cV&n2Kr5wV|o|WwsLQT(~_>#k$UuQ;Zk>ipF-dZkQ#y>ZOc4Z{O)$`5aUI zK_&KITf`MsKtNCC(siZBiM@+FZLKp}#{U2o;~OXx?m*a8xV7l#Ssz6fB)S=saE$;x L>s|C2&TRkLFblwI literal 0 HcmV?d00001 diff --git a/presentations/img/heroku-logo.png b/presentations/img/heroku-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..22cc8497a944709060400d237caabb958b7aa460 GIT binary patch literal 2877 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 b{x84)^(#tG;h-hO00000NkvXXu0mjf%q@Aq literal 0 HcmV?d00001 From d4444f5802c0cd9924e654a868394cdefa4c1f5d Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 5 Mar 2013 07:59:08 -0800 Subject: [PATCH 056/114] fix things that are not pretty --- _sources/outline.txt | 3 +++ outline.html | 7 ++++--- presentations/week09.html | 4 ++-- searchindex.js | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index a6ff10a1..4ec17cee 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -690,6 +690,9 @@ Continue working on your final project. You will have one more week to complete the project after today's class. Your final version must be up and running live by Friday, March 15 at noon. +`Reread the project specification +`_ + Week 10 - Plone --------------- diff --git a/outline.html b/outline.html index 37058170..b68421a8 100644 --- a/outline.html +++ b/outline.html @@ -593,13 +593,14 @@

    AssignmentReread the project specification

    Week 10 - Plone¶

    Date: Mar. 12, 2013

    -
    -

    Assignment¶

    +
    +

    Assignment¶

    To Be Decided

    @@ -685,7 +686,7 @@

    Table Of Contents

  • Week 10 - Plone
  • diff --git a/presentations/week09.html b/presentations/week09.html index 2b1514a4..c16b4d0c 100644 --- a/presentations/week09.html +++ b/presentations/week09.html @@ -332,8 +332,8 @@

    Heroku - Reap the Rewards

    Heroku - DNS

    -

    Heroku does not want you to point A record DNS names at it's services.

    -

    Using www.mydomain.com is okay, but mydomain.com is not.

    +

    Heroku does not want you to point A record DNS names at it's services. +www.mydomain.com is okay, but mydomain.com is not.

    They also don't want you to use IP addresses, since their architecture means IP addresses change.

    I set up a CNAME record for microblog.crisewing.com. It points to the URL diff --git a/searchindex.js b/searchindex.js index 62bcf48d..912dddd4 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:[1,3],code:[0,1,2],queri:2,consum:2,four:2,concept:2,skim:2,ronach:2,abil:2,edu:[1,2],follow:[0,2],although:2,decid:2,educ:1,git:3,flask:2,tomayko:2,descript:0,program:[1,2],decis:2,text:0,sens:2,spec:2,introduc:2,fax:1,sourc:[0,2],string:2,chameleon:2,far:2,mcdonough:2,util:2,veri:2,word:2,unexcus:1,hour:0,level:1,button:3,list:[3,2],"try":2,imaplib:2,kit:2,team:2,small:[0,1,2],pleas:2,cgi:[1,2],outlin:[1,2],representational_state_transf:2,cgi_exampl:[],htm:2,restkit:2,design:2,pass:[0,1,2],further:2,carlo:2,click:3,even:2,index:1,what:[0,2],sud:2,compar:[0,2],defin:2,section:2,advanc:2,abl:[0,1],brief:2,access:[1,2],delet:2,version:2,"new":3,appeal:2,"public":2,contrast:[1,2],hasn:2,full:2,berkelei:2,gener:2,learn:[0,1,2],here:[1,2,3],met:0,let:2,cursor:2,inher:2,along:2,search:1,cover:2,technolog:2,step:[3,2],prior:1,zodb:2,doctest:2,pick:2,implement:[1,2],chanc:2,ourselv:2,via:[0,1,2],prerequisit:1,extra:[],activ:1,modul:[1,2],gatewai:2,api:[1,2],seattl:[],instal:2,txt:2,plone:[1,2],cloud:[1,2],highli:1,jan:2,from:[1,2,3],describ:0,commun:2,univers:1,regist:1,two:[1,2],todai:2,next:2,websit:[0,3,2],few:2,live:2,recommend:2,scope:[0,2],type:2,tell:3,memeori:1,share:2,relat:2,reign:2,enhanc:[],downtown:[],appendix:2,templat:2,particular:2,actual:[3,2],must:[0,2],topic:[1,2],account:3,retriev:2,valuabl:2,prepar:2,work:[0,1,2],focu:[1,2],can:[0,1,2,3],http2:[],purpos:[0,2],root:2,repoz:2,quickstart:2,process:2,registr:[],smtp:2,indic:1,autumn:[],tag:2,explor:[1,2],tal:2,onlin:[0,2],differenti:2,cours:[0,1,2,3],end:0,winter:1,secur:[],anoth:2,write:[3,2],how:[0,1,2],vital:0,answer:0,instead:2,simpl:[1,2],chri:2,updat:2,product:2,mar:2,resourc:2,attend:1,dive:2,after:[3,2],sundai:2,lab:2,befor:2,mac:2,attent:2,date:2,philosophi:2,associ:2,demonstr:2,goal:[0,2],classroom:1,"short":[3,2],practic:2,author:2,django:[1,2],tale:2,inform:[0,1,2],combin:2,pocoo:[],allow:2,order:1,talk:2,tty:1,help:2,hypertext:2,insight:2,soon:[],through:[1,2],curios:2,dynam:2,paramet:[0,1],style:[],directli:0,concis:2,grade:1,offic:1,html:2,rapidli:2,persist:[],comprehens:2,mail:1,might:2,pce:[],them:[1,2,3],good:[1,2],"return":2,thei:[1,2],python:[0,1,2],dan:2,dai:[0,2],initi:2,cew:[3,2],framework:[1,2],hateoa:2,httplib2:2,tilkov:2,discuss:2,introduct:[1,2],choic:2,term:1,name:2,anyth:0,didn:2,bonu:2,accommod:1,slide:1,each:[1,2],debug:2,found:2,went:2,gui:2,compil:2,domain:2,laboratori:[1,2],individu:1,continu:2,weeknn:3,realli:2,ensur:[0,2],connect:[1,2],doug:2,our:2,happen:2,out:2,variabl:2,accomplish:2,network:[1,2],influenc:2,open:2,defend:2,publish:2,content:1,dso:1,rel:2,internet:[1,2],clone:3,common:2,workflow:2,given:2,pub:2,standard:[1,2],quick:[1,2],reason:1,base:[1,2],org:2,fridai:[0,2],care:2,filter:2,lucumr:[],place:3,principl:1,assign:[0,1,2,3],south:[],first:2,origin:[3,2],softwar:0,render:2,feel:2,onc:[],qualiti:2,scene:2,mai:2,instruct:[0,2],restkit_:[],horribl:2,fantast:1,differ:2,script:[3,2],data:2,top:[3,2],system:2,stack:2,master:[3,2],zeromq:2,"final":[0,1,2,3],schema:2,option:2,relationship:2,namespac:2,tool:2,copi:3,took:3,part:[0,1,2],pars:2,mostli:2,eibrari:[],than:1,king:2,grew:2,provid:[1,2],tree:[],see:[0,2],structur:2,project:[0,1,2],were:0,video:2,browser:2,fork:[3,2],comput:[1,2],modern:2,ani:[0,1,2],packag:0,pylon:2,have:[0,1,2,3],tabl:1,need:[3,2],strength:2,techniqu:2,equival:1,rout:2,client:2,note:[3,2],also:[0,2],ideal:2,contact:1,take:[0,2],which:[0,2],soap:2,singl:2,begin:2,sure:2,distribut:1,though:2,usernam:3,object:[1,2],reach:2,most:2,plai:2,plan:2,deploi:2,phase:2,"class":[0,1,2,3],don:[1,2,3],dens:1,clear:2,request:[1,2,3],drive:2,doe:[1,2],determin:2,latest:2,fact:2,wsgi:[1,2],think:2,show:0,lightn:2,xcode:2,beautifulsoup:2,bring:1,session:[1,2],corner:3,find:[3,2],shield:2,xml:2,onli:2,submit:[0,1,3],execut:2,explain:2,configur:1,apach:2,enough:2,should:[0,1,2],kessler:2,disert:2,suppos:2,smtplib:2,local:[0,3,2],over:2,move:2,variou:2,get:[0,3,2],familiar:2,express:[1,2],becaus:3,repo:2,rest:2,"import":1,requir:[0,1,2],truli:2,enabl:2,across:2,rfc:2,integr:[0,1,2],contain:[0,3],cri:2,where:[],view:2,wiki:2,certif:1,set:2,lectur:[1,2],reread:2,creator:2,knowledg:2,lion:2,result:[1,2],fail:1,close:3,databas:2,review:3,wikipedia:2,urllib:2,label:3,behind:2,between:2,progress:2,neither:2,experi:[1,2],approach:[1,2],email:[0,3],attribut:2,altern:2,ftplib:[],extend:2,weak:2,extens:2,job:3,add:3,consumpt:2,solv:[1,2],come:[],addit:2,last:0,pymotw:2,wsgiref:2,tour:2,tutori:2,mani:2,com:[3,2],load:2,point:2,overview:2,unittest:2,jog:1,rfc2616:[],dispatch:2,walk:2,header:2,written:2,linux:2,tuesdai:1,throughout:1,uci:2,duplic:2,quit:2,evalu:[0,1,2],due:0,been:2,hellmann:2,compon:2,json:2,newcom:2,basic:2,presentations_:[],life:2,emphas:1,great:2,athom:[3,2],understand:2,docxmlrpcserv:2,ador:2,instructor:[0,1],present:[1,2],"case":2,look:[0,2],solid:2,servic:[1,2],employ:1,admin:2,"while":3,outcom:0,abov:2,visit:3,wild:2,python_web:[3,2],real:[1,2],pyramid:[1,2],file:[3,2],advantag:2,briandorsei:[],readm:0,non:0,cherrypi:2,lightweight:2,march:[0,1,2],minutia:1,sever:2,develop:2,week04:2,minim:2,make:[3,2],format:2,same:2,check:0,complex:2,zope:2,pai:2,document:[1,2,3],complet:[0,1,2,3],week:[0,1,2],http:[3,2],assist:0,effect:2,solut:2,user:0,student:[0,1,2],extern:2,studi:2,built:2,travers:2,appropri:[0,2],off:0,entri:2,coursework:1,well:2,inherit:2,without:2,person:2,exampl:[1,2],greatest:2,thi:[0,1,2,3],choos:2,model:[3,2],portabl:1,spend:2,left:2,explan:2,protocol:[1,2],just:2,when:3,laptop:0,tcp:2,weekli:1,select:2,virtual:2,aspect:0,mysql:2,languag:[1,2],previous:1,web:[1,2],versu:1,now:[3,2],easi:2,drawback:2,apache2:2,blog:2,armin:2,other:2,blob:2,app:2,homework:2,build:2,earli:2,applic:[1,2],week01:2,week06:2,around:2,xmlrpc:2,week05:2,read:2,httplib:2,arguabl:2,know:2,world:2,bit:2,licens:2,apart:2,uwpython_web:[],like:[3,2],specif:2,altough:2,manifest:2,benefit:2,either:2,week02:2,page:[1,2,3],underli:[1,2],www:2,right:[3,2],often:2,interact:[0,2],some:[0,3,2],back:[3,2],satisfactori:1,week03:2,server:2,librari:[1,2],virtualenv:2,guid:2,cgihttpserv:2,micro:2,noon:2,deploy:2,februari:2,leav:2,unit:2,notabl:2,refer:[1,2],machin:[3,2],core:2,investig:2,run:[0,2],usag:[1,2],confer:2,popular:2,host:2,dissert:2,repositori:[0,3,2],januari:[1,2],feb:2,chapter:2,about:[0,2],postgresql:2,socket:[1,2],constraint:2,manag:[],microframework:2,includ:[0,2],commit:[1,3],disabl:1,block:2,fulfil:2,own:[3,2],curiou:2,sql:2,washington:1,easy_instal:2,zpt:2,assess:1,orm:2,foreward:2,chang:[3,2],your:[1,2,3],guardia:2,fast:2,log:3,wai:2,transfer:2,support:[1,2],question:0,"long":2,why:2,avail:[0,2],start:[1,2],much:0,interfac:2,low:1,suit:2,forward:2,"function":2,bottl:2,sqlite3:2,human:2,form:[0,2],offer:2,forc:2,criteria:2,github:[0,3,2],rpclib:2,sqlalchemi:2,link:[0,3,2],gain:2,rfc1945:[],suppli:[],pull:[3,2],made:[3,2],possibl:2,wish:2,displai:2,troubl:2,until:2,url:2,below:2,those:2,absenc:1,fundament:2,site:0,problem:[1,2],more:[1,2],similar:2,featur:2,creat:[0,1,2,3],certain:2,pragmat:1,parser:2,repres:2,intro:2,exist:2,glanc:2,pip:2,simplest:2,again:2,successfulli:0,want:[0,3,2],mashup:[1,2],excel:2,detail:2,scrape:2,field:2,book:2,rdbm:2,test:2,ignor:2,you:[0,3,2],nice:[0,2],repeat:2,intend:2,devot:[0,2],urllib2:2,gcc:2,djangocon:2,consid:2,easili:2,warn:2,wife:2,directori:[3,2],wifi:1,xmlrpclib:2,depth:2,train:[3,2],htmlparser:2,time:[0,2],push:[3,2],hello:2},objtypes:{},titles:["Final Project","Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["project","index","outline","assignments"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:[1,3],code:[0,1,2],queri:2,consum:2,four:2,concept:2,skim:2,ronach:2,abil:2,edu:[1,2],follow:[0,2],decid:2,instructor:[0,1],flask:2,tomayko:2,program:[1,2],decis:2,sens:2,spec:2,introduc:2,fax:1,sourc:[0,2],string:2,chameleon:2,far:2,mcdonough:2,util:2,veri:2,word:2,unexcus:1,hour:0,level:1,button:3,list:[3,2],"try":2,imaplib:2,team:2,small:[0,1,2],pleas:2,machin:[3,2],repres:2,outlin:[1,2],representational_state_transf:2,core:2,htm:2,restkit:2,design:2,pass:[0,1,2],further:2,carlo:2,click:3,even:2,index:1,what:[0,2],sud:2,compar:[0,2],section:2,advanc:2,abl:[0,1],brief:2,access:[1,2],delet:2,version:2,"new":3,appeal:2,"public":2,contrast:[1,2],hasn:2,full:2,berkelei:2,gener:2,learn:[0,1,2],here:[1,2,3],met:0,let:2,inher:2,along:2,search:1,technolog:2,host:2,prior:1,base:[1,2],doctest:2,pick:2,implement:[1,2],chanc:2,ourselv:2,via:[0,1,2],repositori:[0,3,2],extra:[],apach:2,modul:[1,2],gatewai:2,api:[1,2],seattl:[],instal:2,txt:2,plone:[1,2],cloud:[1,2],highli:1,kessler:2,from:[1,2,3],describ:0,commun:2,univers:1,regist:1,two:[1,2],todai:2,next:2,websit:[0,3,2],few:2,live:2,recommend:2,scope:[0,2],type:2,tell:3,memeori:1,share:2,relat:2,reign:2,enhanc:[],downtown:[],appendix:2,templat:2,particular:2,postgresql:2,must:[0,2],topic:[1,2],account:3,retriev:2,valuabl:2,prepar:2,work:[0,1,2],focu:[1,2],can:[0,1,2,3],http2:[],purpos:[0,2],root:2,repoz:2,quickstart:2,process:2,registr:[],smtp:2,indic:1,autumn:[],tag:2,explor:[1,2],tal:2,onlin:[0,2],differenti:2,cours:[0,1,2,3],end:0,winter:1,secur:[],anoth:2,xmlrpclib:2,write:[3,2],concis:2,vital:0,low:1,answer:0,instead:2,simpl:[1,2],chri:2,updat:2,product:2,mar:2,resourc:2,attend:1,clone:3,after:[3,2],sundai:2,lab:2,prerequisit:1,befor:2,mac:2,attent:2,mai:2,philosophi:2,data:2,demonstr:2,goal:[0,2],classroom:1,"short":[3,2],practic:2,minim:2,django:[1,2],tale:2,inform:[0,1,2],combin:2,allow:2,order:1,talk:2,tty:1,help:2,hypertext:2,insight:2,soon:[],through:[1,2],curios:2,dynam:2,paramet:[0,1],style:[],directli:0,how:[0,1,2],complex:2,grade:1,offic:1,lightn:2,rapidli:2,persist:[],comprehens:2,mail:1,might:2,pce:[],them:[1,2,3],good:[1,2],"return":2,thei:[1,2],python:[0,1,2],dan:2,dai:[0,2],initi:2,cew:[3,2],framework:[1,2],hateoa:2,httplib2:2,studi:2,tilkov:2,discuss:2,introduct:[1,2],choic:2,term:1,name:2,anyth:0,didn:2,bonu:2,micro:2,slide:1,each:[1,2],debug:2,found:2,went:2,gui:2,compil:2,domain:2,laboratori:[1,2],individu:1,continu:2,weeknn:3,realli:2,foreward:2,connect:[1,2],doug:2,our:2,happen:2,out:2,variabl:2,accomplish:2,network:[1,2],influenc:2,open:2,defend:2,publish:2,content:1,dso:1,rel:2,internet:[1,2],dive:2,integr:[0,1,2],workflow:2,given:2,pub:2,standard:[1,2],quick:[1,2],reason:1,zodb:2,org:2,fridai:[0,2],care:2,filter:2,lucumr:[],place:3,principl:1,assign:[0,1,2,3],south:[],first:2,origin:[3,2],softwar:0,render:2,feel:2,onc:[],qualiti:2,scene:2,date:2,instruct:[0,2],restkit_:[],horribl:2,fantast:1,differ:2,"long":2,script:[3,2],associ:2,top:[3,2],system:2,master:[3,2],zeromq:2,"final":[0,1,2,3],schema:2,option:2,relationship:2,namespac:2,tool:2,copi:3,took:3,employ:1,part:[0,1,2],pars:2,mostli:2,eibrari:[],than:1,king:2,grew:2,provid:[1,2],tree:[],lion:2,structur:2,exampl:[1,2],project:[0,1,2],were:0,video:2,browser:2,"function":2,comput:[1,2],modern:2,ani:[0,1,2],packag:0,pylon:2,have:[0,1,2,3],tabl:1,need:[3,2],strength:2,techniqu:2,equival:1,rout:2,note:[3,2],also:[0,2],ideal:2,contact:1,take:[0,2],which:[0,2],soap:2,singl:2,begin:2,sure:2,distribut:1,though:2,usernam:3,object:[1,2],reach:2,most:2,plai:2,plan:2,deploi:2,phase:2,"class":[0,1,2,3],don:[1,2,3],dens:1,clear:2,request:[1,2,3],drive:2,doe:[1,2],determin:2,left:2,fact:2,wsgi:[1,2],think:2,show:0,text:0,xcode:2,beautifulsoup:2,bring:1,session:[1,2],corner:3,find:[3,2],shield:2,xml:2,onli:2,just:2,explain:2,configur:1,activ:1,behind:2,should:[0,1,2],jan:2,disert:2,suppos:2,smtplib:2,local:[0,3,2],over:2,move:2,variou:2,get:[0,3,2],familiar:2,express:[1,2],curiou:2,becaus:3,repo:2,solut:2,tcp:2,progress:2,requir:[0,1,2],truli:2,enabl:2,email:[0,3],rfc:2,common:2,contain:[0,3],cri:2,where:[],view:2,wiki:2,certif:1,set:2,reread:2,creator:2,knowledg:2,see:[0,2],result:[1,2],fail:1,close:3,databas:2,review:3,wikipedia:2,urllib:2,label:3,enough:2,between:2,"import":1,neither:2,experi:[1,2],approach:[1,2],across:2,attribut:2,altern:2,ftplib:[],extend:2,weak:2,extens:2,job:3,add:3,consumpt:2,solv:[1,2],come:[],addit:2,last:0,pymotw:2,wsgiref:2,tour:2,tutori:2,mani:2,com:[3,2],load:2,point:2,overview:2,unittest:2,jog:1,rfc2616:[],dispatch:2,walk:2,header:2,written:2,linux:2,tuesdai:1,throughout:1,admin:2,uci:2,duplic:2,quit:2,creat:[0,1,2,3],zpt:2,been:2,hellmann:2,compon:2,json:2,newcom:2,basic:2,presentations_:[],life:2,emphas:1,great:2,athom:[3,2],understand:2,docxmlrpcserv:2,ador:2,educ:1,present:[1,2],"case":2,look:[0,2],solid:2,servic:[1,2],cursor:2,defin:2,"while":3,outcom:0,abov:2,wild:2,python_web:[3,2],earli:2,pyramid:[1,2],glanc:2,advantag:2,briandorsei:[],readm:0,non:0,unit:2,cherrypi:2,lightweight:2,week06:2,minutia:1,sever:2,develop:2,xmlrpc:2,author:2,make:[3,2],week05:2,same:2,html:2,zope:2,pai:2,document:[1,2,3],complet:[0,1,2,3],week:[0,1,2],http:[3,2],assist:0,effect:2,kit:2,user:0,student:[0,1,2],extern:2,stack:2,built:2,travers:2,appropri:[0,2],off:0,entri:2,coursework:1,well:2,inherit:2,without:2,person:2,client:2,greatest:2,thi:[0,1,2,3],choos:2,model:[3,2],portabl:1,spend:2,latest:2,explan:2,protocol:[1,2],fast:2,execut:2,excel:2,laptop:0,rest:2,weekli:1,scrape:2,aspect:0,mysql:2,languag:[1,2],previous:1,web:[1,2],versu:1,now:[3,2],easi:2,drawback:2,apache2:2,blog:2,armin:2,book:2,blob:2,app:2,homework:2,build:2,real:[1,2],applic:[1,2],week01:2,march:[0,1,2],around:2,week04:2,format:2,read:2,httplib:2,arguabl:2,know:2,world:2,bit:2,licens:2,apart:2,uwpython_web:[],like:[3,2],specif:2,altough:2,manifest:2,benefit:2,either:2,week02:2,page:[1,2,3],underli:[1,2],www:2,right:[3,2],often:2,interact:[0,2],some:[0,3,2],back:[3,2],certain:2,satisfactori:1,week03:2,server:2,librari:[1,2],virtualenv:2,guid:2,cgihttpserv:2,accommod:1,noon:2,deploy:2,februari:2,leav:2,select:2,notabl:2,refer:[1,2],cgi:[1,2],cgi_exampl:[],investig:2,run:[0,2],usag:[1,2],confer:2,popular:2,step:[3,2],dissert:2,although:2,januari:[1,2],feb:2,chapter:2,about:[0,2],simplest:2,actual:[3,2],socket:[1,2],constraint:2,manag:[],microframework:2,includ:[0,2],commit:[1,3],disabl:1,block:2,fulfil:2,own:[3,2],visit:3,sql:2,washington:1,easy_instal:2,due:0,assess:1,orm:2,ensur:[0,2],chang:[3,2],your:[1,2,3],guardia:2,git:3,log:3,wai:2,transfer:2,support:[1,2],question:0,submit:[0,1,3],why:2,avail:[0,2],start:[1,2],much:0,interfac:2,pocoo:[],suit:2,forward:2,fork:[3,2],bottl:2,sqlite3:2,human:2,form:[0,2],offer:2,forc:2,criteria:2,github:[0,3,2],rpclib:2,sqlalchemi:2,link:[0,3,2],gain:2,rfc1945:[],suppli:[],pull:[3,2],made:[3,2],possibl:2,wish:2,displai:2,troubl:2,until:2,url:2,below:2,those:2,absenc:1,fundament:2,site:0,problem:[1,2],more:[1,2],similar:2,featur:2,evalu:[0,1,2],cover:2,pragmat:1,parser:2,lectur:[1,2],intro:2,exist:2,file:[3,2],pip:2,check:0,again:2,successfulli:0,want:[0,3,2],mashup:[1,2],when:3,detail:2,virtual:2,field:2,other:2,rdbm:2,test:2,htmlparser:2,you:[0,3,2],nice:[0,2],repeat:2,intend:2,devot:[0,2],urllib2:2,gcc:2,djangocon:2,consid:2,easili:2,warn:2,wife:2,directori:[3,2],wifi:1,descript:0,depth:2,train:[3,2],ignor:2,time:[0,2],push:[3,2],hello:2},objtypes:{},titles:["Final Project","Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["project","index","outline","assignments"]}) \ No newline at end of file From 41dee7b303424e733da780c4ac728aa6d115f54f Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 11 Mar 2013 21:52:57 -0700 Subject: [PATCH 057/114] * complete week 10 presentation * finish outline for week 10 --- _sources/outline.txt | 26 ++++- outline.html | 18 +++- presentations/week10.html | 203 +++++++++++++++++++++++++++++++++++++- searchindex.js | 2 +- 4 files changed, 243 insertions(+), 6 deletions(-) diff --git a/_sources/outline.txt b/_sources/outline.txt index 4ec17cee..40922454 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -698,7 +698,31 @@ Week 10 - Plone **Date**: Mar. 12, 2013 +This week we'll visit a full-featured Content Management System built using +Python: Plone. We'll learn a bit about what Plone is and what it does. We'll +learn about it's history and when it might be a good choice for a project. +We'll even take a quick tour of some of the features of this mature, +enterprise CMS. + +We'll also have a visit from the instructors for the third and final course in +the Python certificate program. They'll be giving you a quick introduction to +the course and what you can expect to learn. + +Finally, we'll spend lab time in the class working on completing our final +projects. The projects will be due at the end of the week, so this will be +your last opportunity to work with Dan and Cris to answer questions. + +`Week 10 Presentation `_ + Assignment ********** -To Be Decided \ No newline at end of file +Complete and submit your final project. + +The project will be due Friday, March 15 at noon. Late submissions will not be +accepted. + +`Reread the project specification +`_ + +Make sure you submit all of the parts requested in the specification. diff --git a/outline.html b/outline.html index b68421a8..3d0c158e 100644 --- a/outline.html +++ b/outline.html @@ -599,9 +599,25 @@

    Assignment

    Week 10 - Plone¶

    Date: Mar. 12, 2013

    +

    This week we’ll visit a full-featured Content Management System built using +Python: Plone. We’ll learn a bit about what Plone is and what it does. We’ll +learn about it’s history and when it might be a good choice for a project. +We’ll even take a quick tour of some of the features of this mature, +enterprise CMS.

    +

    We’ll also have a visit from the instructors for the third and final course in +the Python certificate program. They’ll be giving you a quick introduction to +the course and what you can expect to learn.

    +

    Finally, we’ll spend lab time in the class working on completing our final +projects. The projects will be due at the end of the week, so this will be +your last opportunity to work with Dan and Cris to answer questions.

    +

    Week 10 Presentation

    Assignment¶

    -

    To Be Decided

    +

    Complete and submit your final project.

    +

    The project will be due Friday, March 15 at noon. Late submissions will not be +accepted.

    +

    Reread the project specification

    +

    Make sure you submit all of the parts requested in the specification.

    diff --git a/presentations/week10.html b/presentations/week10.html index baa12287..42efb82e 100644 --- a/presentations/week10.html +++ b/presentations/week10.html @@ -5,7 +5,7 @@ -This is Week 10 +Internet Programming with Python @@ -29,15 +29,212 @@
    -

    This is Week 10

    +

    Internet Programming with Python

    +img/plone-icon-256-white-bg.png +
    +
    Week 9: System Example:
    +
    The Plone CMS
    +
    +

    Content management done right.

    +

    The Plone logo is a trademark of the Plone Foundation.

    + +
    +
    +

    This Week

    +

    We'll have an introduction to the Plone Content Management System

    +

    We'll see a demo of this system in action

    +

    We'll talk a bit about the differences between a system and a framework

    +

    We'll spend the rest of the time working on your Final Projects.

    +
    +
    +

    What is Plone?

    +

    Plone is a Content Management System

    +

    System: A tightly integrated set of tools oriented to a purpose

    +

    Content Management: The task of creating, editing, organizing and +controlling access to content throughout it's lifecycle.

    +

    Content: Information and materials stored in a website which has value +that can be maintained over time.

    +
    +
    +

    Plone Features

    +

    Plone comes with an extensive feature set OOTB:

    +
      +
    • Fully translated UI, with over 40 languages supported
    • +
    • Fine-grained permissions system for access to content and actions
    • +
    • Built-in, fully configurable user and group management
    • +
    • Workflow configurable per content type
    • +
    • Automatic and configurable versioning of content
    • +
    • Built-in system for event handling, including user notifications
    • +
    • Built-in content rules allowing for complex automation of common actions
    • +
    • Content Type framework allowing for TTW creation of new types
    • +
    • Theme engine allowing for TTW creation of custom themes
    • +
    +
    +
    +

    And There's More

    +

    By installing additional packages in the core distribution get:

    +
      +
    • In-place content staging (working copies)
    • +
    • Powerfully flexible caching
    • +
    • Per-location workflow configuration
    • +
    +

    And with other add-ons you can have

    +
      +
    • Multi-lingual content
    • +
    • TTW form building
    • +
    • layered calendars
    • +
    • much, much more...
    • +
    +
    +
    +

    Separators

    +

    What is it that separates Plone from other web-based CMS solutions?

    +
      +
    • Simplicity
    • +
    • Scalability
    • +
    • Speed
    • +
    • Security
    • +
    +
    +
    +

    Simplicity

    +

    Plone features an in-place content editing model

    +

    Users create content in the place where they want it to be located

    +

    There is no separate authoring back-end where you must go to create and place +content

    +

    All aspects of management: workflow, security, versioning and staging can be +managed in-place.

    +
    +
    +

    Scalability

    +

    Plone is fast and easy enough to support small websites

    +

    But you can scale it up to the very largest sizes

    +

    Corporate or Education intranets with over 100,000 pieces of content are not +unusual.

    +
    +
    +

    Speed

    +

    Out of the box, Plone can serves content faster than Drupal, WordPress or +SharePoint.

    +

    With the simple installation of a caching add-on, this speed is greatly +accelerated.

    +

    Support for load-balancing and HTTP acceleration means you can push it further +yet.

    +
    +
    +

    Security

    +

    Issues reported for various technologies in CVE (last 3 years):

    +
      +
    • Plone: 13 (9)
    • +
    • Zope: 27 (9)
    • +
    • Python: 111 (65)
    • +
    • Drupal: 371 (269)
    • +
    • Joomla: 653 (441)
    • +
    • MySQL: 282 (84)
    • +
    • PostgreSQL: 82 (22)
    • +
    • PHP: 18,859 (5,813)
    • +
    +

    And then there is Plone's true secret weapon

    +
    +
    +

    Community

    +img/plone_conf_2012.jpg +
    +
    +

    About the Community

    +

    Plone has more than 300 active core contributors.

    +

    The add-on ecosystem contains ~850 public +repositories

    +

    The community averages one major sprint each month, in locations in Asia, +Africa, Europe, South America, North America and Australia.

    +

    Plone is a "do-ocracy", meaning that your standing in the community is +determined by your contributions

    +
    +
    +

    History

    +

    In 1999 Plone is a theme for the Zope Content Management Framework.

    +
      +
    • By 2001, it had grown popular enough to warrant a public release.
    • +
    • In 2003 Plone 1.0 is released
    • +
    • In 2004 Plone 2.0 brings the Archetypes Content Type Framework
    • +
    • In 2005 Plone 2.1 brings default content types via Archetypes
    • +
    • In 2006 Plone 2.5 brings versioning and pluggable authentication
    • +
    • In 2007 Plone 3.0 integrates the Zope Component Architecture
    • +
    • In 2010 Plone 4.0 brings speed and the Dexterity Content Framework
    • +
    • This week, Plone 4.3rc1 brings through the web theming
    • +
    +
    +
    +

    Installation

    +

    Plone is an application that runs on top of the Zope Application Server.

    +

    Installing Plone involves installing Zope, the ZODB and a number of other +technologies.

    +

    Forget all that, just use the installers

    +

    Go to http://plone.org, click "download now", pick the right installer and go.

    +
    +
    +

    Running Plone

    +

    After running the installer of your choice, you start Plone from the command +line:

    +
    +$ bin/instance fg
    +
    +

    This runs plone in the foreground which allows you to see errors if they +happen and get tracebacks.

    +

    Once you see the message "Zope Ready to handle requests", the system is running

    +
    +
    +

    Setting up Your First Site

    +

    When the site is running, you'll find it at localhost:8080

    +

    Load that page and you see a message instructing you to add your first site

    +

    Click the button, and your site is created with a bit of default content

    +

    At that point, you can start managing content

    +
    +
    +

    Demo of Plone

    +

    Let's see it in action

    +
    +
    +

    Take-away

    +

    Plone is a full-featured and flexible Content Management System

    +

    Plone customization is generally going to be integration - altering existing +functionality to fit business needs.

    +

    Treating Plone as a framework - trying to build arbitrary web applications - +is not easy.

    +

    But if the feature set it offers is in largely in line with your needs, you +won't find a better tool.

    +
    +
    +

    Reminder

    +

    Your final projects are due Friday at noon.

    +

    I will not accept submissions that arrive after noon on Friday (March 15).

    +

    You will need to supply:

    +
      +
    • A Link to your site deployed online (your VM, in the cloud, ...)
    • +
    • A Link to your project source code repository in Github.
    • +
    • Text describing the goals and outcomes of your project.
    • +
    • Instructions on how I can run your project locally on my laptop
    • +
    +
    +
    +

    Another reminder

    +

    LEAVE TIME FOR DEPLOYMENT

    +
    +
    +

    Final Word

    +

    thank you all

    +
    +
    +

    Lab Time

    +

    For the rest of today, we work on your projects.

    diff --git a/searchindex.js b/searchindex.js index 912dddd4..6916ee85 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:[1,3],code:[0,1,2],queri:2,consum:2,four:2,concept:2,skim:2,ronach:2,abil:2,edu:[1,2],follow:[0,2],decid:2,instructor:[0,1],flask:2,tomayko:2,program:[1,2],decis:2,sens:2,spec:2,introduc:2,fax:1,sourc:[0,2],string:2,chameleon:2,far:2,mcdonough:2,util:2,veri:2,word:2,unexcus:1,hour:0,level:1,button:3,list:[3,2],"try":2,imaplib:2,team:2,small:[0,1,2],pleas:2,machin:[3,2],repres:2,outlin:[1,2],representational_state_transf:2,core:2,htm:2,restkit:2,design:2,pass:[0,1,2],further:2,carlo:2,click:3,even:2,index:1,what:[0,2],sud:2,compar:[0,2],section:2,advanc:2,abl:[0,1],brief:2,access:[1,2],delet:2,version:2,"new":3,appeal:2,"public":2,contrast:[1,2],hasn:2,full:2,berkelei:2,gener:2,learn:[0,1,2],here:[1,2,3],met:0,let:2,inher:2,along:2,search:1,technolog:2,host:2,prior:1,base:[1,2],doctest:2,pick:2,implement:[1,2],chanc:2,ourselv:2,via:[0,1,2],repositori:[0,3,2],extra:[],apach:2,modul:[1,2],gatewai:2,api:[1,2],seattl:[],instal:2,txt:2,plone:[1,2],cloud:[1,2],highli:1,kessler:2,from:[1,2,3],describ:0,commun:2,univers:1,regist:1,two:[1,2],todai:2,next:2,websit:[0,3,2],few:2,live:2,recommend:2,scope:[0,2],type:2,tell:3,memeori:1,share:2,relat:2,reign:2,enhanc:[],downtown:[],appendix:2,templat:2,particular:2,postgresql:2,must:[0,2],topic:[1,2],account:3,retriev:2,valuabl:2,prepar:2,work:[0,1,2],focu:[1,2],can:[0,1,2,3],http2:[],purpos:[0,2],root:2,repoz:2,quickstart:2,process:2,registr:[],smtp:2,indic:1,autumn:[],tag:2,explor:[1,2],tal:2,onlin:[0,2],differenti:2,cours:[0,1,2,3],end:0,winter:1,secur:[],anoth:2,xmlrpclib:2,write:[3,2],concis:2,vital:0,low:1,answer:0,instead:2,simpl:[1,2],chri:2,updat:2,product:2,mar:2,resourc:2,attend:1,clone:3,after:[3,2],sundai:2,lab:2,prerequisit:1,befor:2,mac:2,attent:2,mai:2,philosophi:2,data:2,demonstr:2,goal:[0,2],classroom:1,"short":[3,2],practic:2,minim:2,django:[1,2],tale:2,inform:[0,1,2],combin:2,allow:2,order:1,talk:2,tty:1,help:2,hypertext:2,insight:2,soon:[],through:[1,2],curios:2,dynam:2,paramet:[0,1],style:[],directli:0,how:[0,1,2],complex:2,grade:1,offic:1,lightn:2,rapidli:2,persist:[],comprehens:2,mail:1,might:2,pce:[],them:[1,2,3],good:[1,2],"return":2,thei:[1,2],python:[0,1,2],dan:2,dai:[0,2],initi:2,cew:[3,2],framework:[1,2],hateoa:2,httplib2:2,studi:2,tilkov:2,discuss:2,introduct:[1,2],choic:2,term:1,name:2,anyth:0,didn:2,bonu:2,micro:2,slide:1,each:[1,2],debug:2,found:2,went:2,gui:2,compil:2,domain:2,laboratori:[1,2],individu:1,continu:2,weeknn:3,realli:2,foreward:2,connect:[1,2],doug:2,our:2,happen:2,out:2,variabl:2,accomplish:2,network:[1,2],influenc:2,open:2,defend:2,publish:2,content:1,dso:1,rel:2,internet:[1,2],dive:2,integr:[0,1,2],workflow:2,given:2,pub:2,standard:[1,2],quick:[1,2],reason:1,zodb:2,org:2,fridai:[0,2],care:2,filter:2,lucumr:[],place:3,principl:1,assign:[0,1,2,3],south:[],first:2,origin:[3,2],softwar:0,render:2,feel:2,onc:[],qualiti:2,scene:2,date:2,instruct:[0,2],restkit_:[],horribl:2,fantast:1,differ:2,"long":2,script:[3,2],associ:2,top:[3,2],system:2,master:[3,2],zeromq:2,"final":[0,1,2,3],schema:2,option:2,relationship:2,namespac:2,tool:2,copi:3,took:3,employ:1,part:[0,1,2],pars:2,mostli:2,eibrari:[],than:1,king:2,grew:2,provid:[1,2],tree:[],lion:2,structur:2,exampl:[1,2],project:[0,1,2],were:0,video:2,browser:2,"function":2,comput:[1,2],modern:2,ani:[0,1,2],packag:0,pylon:2,have:[0,1,2,3],tabl:1,need:[3,2],strength:2,techniqu:2,equival:1,rout:2,note:[3,2],also:[0,2],ideal:2,contact:1,take:[0,2],which:[0,2],soap:2,singl:2,begin:2,sure:2,distribut:1,though:2,usernam:3,object:[1,2],reach:2,most:2,plai:2,plan:2,deploi:2,phase:2,"class":[0,1,2,3],don:[1,2,3],dens:1,clear:2,request:[1,2,3],drive:2,doe:[1,2],determin:2,left:2,fact:2,wsgi:[1,2],think:2,show:0,text:0,xcode:2,beautifulsoup:2,bring:1,session:[1,2],corner:3,find:[3,2],shield:2,xml:2,onli:2,just:2,explain:2,configur:1,activ:1,behind:2,should:[0,1,2],jan:2,disert:2,suppos:2,smtplib:2,local:[0,3,2],over:2,move:2,variou:2,get:[0,3,2],familiar:2,express:[1,2],curiou:2,becaus:3,repo:2,solut:2,tcp:2,progress:2,requir:[0,1,2],truli:2,enabl:2,email:[0,3],rfc:2,common:2,contain:[0,3],cri:2,where:[],view:2,wiki:2,certif:1,set:2,reread:2,creator:2,knowledg:2,see:[0,2],result:[1,2],fail:1,close:3,databas:2,review:3,wikipedia:2,urllib:2,label:3,enough:2,between:2,"import":1,neither:2,experi:[1,2],approach:[1,2],across:2,attribut:2,altern:2,ftplib:[],extend:2,weak:2,extens:2,job:3,add:3,consumpt:2,solv:[1,2],come:[],addit:2,last:0,pymotw:2,wsgiref:2,tour:2,tutori:2,mani:2,com:[3,2],load:2,point:2,overview:2,unittest:2,jog:1,rfc2616:[],dispatch:2,walk:2,header:2,written:2,linux:2,tuesdai:1,throughout:1,admin:2,uci:2,duplic:2,quit:2,creat:[0,1,2,3],zpt:2,been:2,hellmann:2,compon:2,json:2,newcom:2,basic:2,presentations_:[],life:2,emphas:1,great:2,athom:[3,2],understand:2,docxmlrpcserv:2,ador:2,educ:1,present:[1,2],"case":2,look:[0,2],solid:2,servic:[1,2],cursor:2,defin:2,"while":3,outcom:0,abov:2,wild:2,python_web:[3,2],earli:2,pyramid:[1,2],glanc:2,advantag:2,briandorsei:[],readm:0,non:0,unit:2,cherrypi:2,lightweight:2,week06:2,minutia:1,sever:2,develop:2,xmlrpc:2,author:2,make:[3,2],week05:2,same:2,html:2,zope:2,pai:2,document:[1,2,3],complet:[0,1,2,3],week:[0,1,2],http:[3,2],assist:0,effect:2,kit:2,user:0,student:[0,1,2],extern:2,stack:2,built:2,travers:2,appropri:[0,2],off:0,entri:2,coursework:1,well:2,inherit:2,without:2,person:2,client:2,greatest:2,thi:[0,1,2,3],choos:2,model:[3,2],portabl:1,spend:2,latest:2,explan:2,protocol:[1,2],fast:2,execut:2,excel:2,laptop:0,rest:2,weekli:1,scrape:2,aspect:0,mysql:2,languag:[1,2],previous:1,web:[1,2],versu:1,now:[3,2],easi:2,drawback:2,apache2:2,blog:2,armin:2,book:2,blob:2,app:2,homework:2,build:2,real:[1,2],applic:[1,2],week01:2,march:[0,1,2],around:2,week04:2,format:2,read:2,httplib:2,arguabl:2,know:2,world:2,bit:2,licens:2,apart:2,uwpython_web:[],like:[3,2],specif:2,altough:2,manifest:2,benefit:2,either:2,week02:2,page:[1,2,3],underli:[1,2],www:2,right:[3,2],often:2,interact:[0,2],some:[0,3,2],back:[3,2],certain:2,satisfactori:1,week03:2,server:2,librari:[1,2],virtualenv:2,guid:2,cgihttpserv:2,accommod:1,noon:2,deploy:2,februari:2,leav:2,select:2,notabl:2,refer:[1,2],cgi:[1,2],cgi_exampl:[],investig:2,run:[0,2],usag:[1,2],confer:2,popular:2,step:[3,2],dissert:2,although:2,januari:[1,2],feb:2,chapter:2,about:[0,2],simplest:2,actual:[3,2],socket:[1,2],constraint:2,manag:[],microframework:2,includ:[0,2],commit:[1,3],disabl:1,block:2,fulfil:2,own:[3,2],visit:3,sql:2,washington:1,easy_instal:2,due:0,assess:1,orm:2,ensur:[0,2],chang:[3,2],your:[1,2,3],guardia:2,git:3,log:3,wai:2,transfer:2,support:[1,2],question:0,submit:[0,1,3],why:2,avail:[0,2],start:[1,2],much:0,interfac:2,pocoo:[],suit:2,forward:2,fork:[3,2],bottl:2,sqlite3:2,human:2,form:[0,2],offer:2,forc:2,criteria:2,github:[0,3,2],rpclib:2,sqlalchemi:2,link:[0,3,2],gain:2,rfc1945:[],suppli:[],pull:[3,2],made:[3,2],possibl:2,wish:2,displai:2,troubl:2,until:2,url:2,below:2,those:2,absenc:1,fundament:2,site:0,problem:[1,2],more:[1,2],similar:2,featur:2,evalu:[0,1,2],cover:2,pragmat:1,parser:2,lectur:[1,2],intro:2,exist:2,file:[3,2],pip:2,check:0,again:2,successfulli:0,want:[0,3,2],mashup:[1,2],when:3,detail:2,virtual:2,field:2,other:2,rdbm:2,test:2,htmlparser:2,you:[0,3,2],nice:[0,2],repeat:2,intend:2,devot:[0,2],urllib2:2,gcc:2,djangocon:2,consid:2,easili:2,warn:2,wife:2,directori:[3,2],wifi:1,descript:0,depth:2,train:[3,2],ignor:2,time:[0,2],push:[3,2],hello:2},objtypes:{},titles:["Final Project","Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["project","index","outline","assignments"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{all:[1,2,3],code:[0,1,2],queri:2,consum:2,four:2,concept:2,skim:2,ronach:2,abil:2,edu:[1,2],follow:[0,2],although:2,decid:[],educ:1,git:3,flask:2,tomayko:2,descript:0,program:[1,2],decis:2,text:0,sens:2,cgi:[1,2],spec:2,introduc:2,fax:1,sourc:[0,2],string:2,chameleon:2,far:2,mcdonough:2,util:2,veri:2,word:2,unexcus:1,hour:0,level:1,button:3,list:[3,2],"try":2,imaplib:2,kit:2,team:2,small:[0,1,2],pleas:2,enterpris:2,outlin:[1,2],representational_state_transf:2,cgi_exampl:[],htm:2,request:[1,2,3],restkit:2,design:2,pass:[0,1,2],further:2,carlo:2,click:3,even:2,index:1,what:[0,2],sud:2,compar:[0,2],defin:2,section:2,advanc:2,abl:[0,1],brief:2,access:[1,2],delet:2,version:2,"new":3,appeal:2,"public":2,contrast:[1,2],hasn:2,full:2,berkelei:2,gener:2,learn:[0,1,2],chang:[3,2],here:[1,2,3],met:0,let:2,cursor:2,inher:2,along:2,search:1,technolog:2,step:[3,2],prior:1,zodb:2,doctest:2,pick:2,implement:[1,2],chanc:2,ourselv:2,via:[0,1,2],repositori:[0,3,2],extra:[],activ:1,modul:[1,2],gatewai:2,api:[1,2],seattl:[],instal:2,txt:2,plone:[1,2],cloud:[1,2],highli:1,jan:2,from:[1,2,3],describ:0,commun:2,univers:1,regist:1,two:[1,2],todai:2,next:2,websit:[0,3,2],few:2,live:2,recommend:2,scope:[0,2],type:2,tell:3,memeori:1,share:2,relat:2,reign:2,enhanc:[],downtown:[],appendix:2,indic:1,particular:2,actual:[3,2],must:[0,2],topic:[1,2],account:3,retriev:2,valuabl:2,prepar:2,work:[0,1,2],focu:[1,2],histori:2,can:[0,1,2,3],http2:[],purpos:[0,2],root:2,repoz:2,quickstart:2,give:2,process:2,registr:[],smtp:2,accept:2,autumn:[],tag:2,explor:[1,2],tal:2,onlin:[0,2],differenti:2,cours:[0,1,2,3],end:[0,2],winter:1,secur:[],anoth:2,write:[3,2],how:[0,1,2],vital:0,answer:[0,2],instead:2,simpl:[1,2],chri:2,updat:2,product:2,mar:2,resourc:2,attend:1,dive:2,after:[3,2],sundai:2,lab:2,befor:2,mac:2,attent:2,date:2,philosophi:2,associ:2,demonstr:2,goal:[0,2],classroom:1,"short":[3,2],practic:2,third:2,author:2,django:[1,2],tale:2,inform:[0,1,2],combin:2,pocoo:[],allow:2,order:1,talk:2,tty:1,help:2,hypertext:2,insight:2,soon:[],through:[1,2],dynam:2,paramet:[0,1],style:[],directli:0,concis:2,late:2,grade:1,offic:1,html:2,rapidli:2,persist:[],comprehens:2,mail:1,might:2,pce:[],them:[1,2,3],good:[1,2],"return":2,thei:[1,2],python:[0,1,2],dan:2,dai:[0,2],initi:2,cew:[3,2],framework:[1,2],hateoa:2,httplib2:2,tilkov:2,discuss:2,introduct:[1,2],choic:2,term:1,name:2,anyth:0,didn:2,bonu:2,micro:2,slide:1,each:[1,2],debug:2,found:2,went:2,gui:2,compil:2,domain:2,laboratori:[1,2],individu:1,continu:2,weeknn:3,realli:2,ensur:[0,2],connect:[1,2],doug:2,our:2,happen:2,out:2,variabl:2,accomplish:2,network:[1,2],influenc:2,open:2,defend:2,publish:2,content:[1,2],dso:1,rel:2,internet:[1,2],clone:3,common:2,workflow:2,given:2,pub:2,standard:[1,2],quick:[1,2],reason:1,base:[1,2],org:2,fridai:[0,2],care:2,filter:2,lucumr:[],place:3,principl:1,assign:[0,1,2,3],south:[],first:2,origin:[3,2],softwar:0,render:2,feel:2,onc:[],qualiti:2,scene:2,mai:2,instruct:[0,2],restkit_:[],horribl:2,fantast:1,differ:2,script:[3,2],data:2,top:[3,2],system:2,stack:2,master:[3,2],zeromq:2,"final":[0,1,2,3],schema:2,option:2,relationship:2,namespac:2,tool:2,copi:3,took:3,part:[0,1,2],pars:2,mostli:2,eibrari:[],than:1,king:2,grew:2,provid:[1,2],tree:[],see:[0,2],structur:2,project:[0,1,2],were:0,video:2,browser:2,fork:[3,2],comput:[1,2],modern:2,ani:[0,1,2],packag:0,pylon:2,have:[0,1,2,3],tabl:1,need:[3,2],strength:2,techniqu:2,equival:1,rout:2,client:2,note:[3,2],also:[0,2],ideal:2,contact:1,take:[0,2],which:[0,2],soap:2,singl:2,begin:2,sure:2,distribut:1,though:2,usernam:3,object:[1,2],reach:2,most:2,plai:2,plan:2,deploi:2,phase:2,"class":[0,1,2,3],don:[1,2,3],dens:1,clear:2,cover:2,drive:2,doe:[1,2],determin:2,latest:2,fact:2,wsgi:[1,2],think:2,show:0,lightn:2,xcode:2,beautifulsoup:2,bring:1,session:[1,2],corner:3,find:[3,2],shield:2,xml:2,onli:2,submit:[0,1,2,3],execut:2,explain:2,configur:1,apach:2,enough:2,should:[0,1,2],kessler:2,disert:2,suppos:2,templat:2,smtplib:2,local:[0,3,2],over:2,move:2,variou:2,get:[0,3,2],familiar:2,express:[1,2],becaus:3,repo:2,rest:2,"import":1,requir:[0,1,2],truli:2,enabl:2,across:2,rfc:2,integr:[0,1,2],contain:[0,3],cri:2,where:[],view:2,wiki:2,certif:[1,2],set:2,lectur:[1,2],reread:2,creator:2,knowledg:2,lion:2,result:[1,2],fail:1,close:3,databas:2,review:3,wikipedia:2,urllib:2,label:3,behind:2,between:2,progress:2,neither:2,experi:[1,2],approach:[1,2],email:[0,3],attribut:2,altern:2,ftplib:[],extend:2,weak:2,extens:2,job:3,add:3,consumpt:2,solv:[1,2],come:[],addit:2,last:[0,2],pymotw:2,wsgiref:2,tour:2,tutori:2,mani:2,com:[3,2],load:2,point:2,overview:2,unittest:2,jog:1,rfc2616:[],dispatch:2,walk:2,header:2,written:2,linux:2,tuesdai:1,throughout:1,uci:2,duplic:2,quit:2,evalu:[0,1,2],due:[0,2],been:2,hellmann:2,compon:2,json:2,newcom:2,basic:2,presentations_:[],life:2,emphas:1,great:2,athom:[3,2],understand:2,docxmlrpcserv:2,ador:2,instructor:[0,1,2],present:[1,2],"case":2,look:[0,2],solid:2,servic:[1,2],employ:1,admin:2,"while":3,outcom:0,abov:2,visit:[3,2],wild:2,python_web:[3,2],real:[1,2],pyramid:[1,2],file:[3,2],advantag:2,briandorsei:[],readm:0,non:0,cherrypi:2,lightweight:2,march:[0,1,2],minutia:1,sever:2,develop:2,week04:2,minim:2,make:[3,2],format:2,same:2,check:0,complex:2,zope:2,pai:2,document:[1,2,3],complet:[0,1,2,3],week:[0,1,2],http:[3,2],assist:0,effect:2,solut:2,user:0,student:[0,1,2],extern:2,studi:2,built:2,travers:2,appropri:[0,2],off:0,entri:2,coursework:1,well:2,inherit:2,without:2,person:2,exampl:[1,2],greatest:2,thi:[0,1,2,3],choos:2,model:[3,2],portabl:1,spend:2,left:2,explan:2,protocol:[1,2],just:2,when:[3,2],laptop:0,tcp:2,weekli:1,select:2,virtual:2,aspect:0,mysql:2,languag:[1,2],previous:1,web:[1,2],versu:1,now:[3,2],easi:2,drawback:2,apache2:2,blog:2,armin:2,other:2,blob:2,app:2,homework:2,build:2,earli:2,applic:[1,2],week01:2,week06:2,around:2,xmlrpc:2,week05:2,read:2,httplib:2,arguabl:2,know:2,world:2,bit:2,licens:2,apart:2,uwpython_web:[],like:[3,2],specif:2,altough:2,manifest:2,benefit:2,either:2,week02:2,page:[1,2,3],underli:[1,2],www:2,right:[3,2],often:2,interact:[0,2],some:[0,3,2],back:[3,2],satisfactori:1,week03:2,server:2,librari:[1,2],virtualenv:2,guid:2,cgihttpserv:2,accommod:1,noon:2,deploy:2,februari:2,leav:2,unit:2,rdbm:2,notabl:2,refer:[1,2],machin:[3,2],core:2,investig:2,run:[0,2],usag:[1,2],confer:2,popular:2,host:2,dissert:2,prerequisit:1,januari:[1,2],feb:2,chapter:2,about:[0,2],postgresql:2,socket:[1,2],constraint:2,manag:2,microframework:2,includ:[0,2],commit:[1,3],disabl:1,block:2,fulfil:2,own:[3,2],curiou:2,sql:2,washington:1,easy_instal:2,curios:2,assess:1,orm:2,foreward:2,opportun:2,your:[1,2,3],guardia:2,fast:2,log:3,wai:2,transfer:2,support:[1,2],question:[0,2],"long":2,why:2,avail:[0,2],start:[1,2],much:0,interfac:2,low:1,suit:2,forward:2,submiss:2,"function":2,bottl:2,sqlite3:2,human:2,form:[0,2],offer:2,forc:2,criteria:2,github:[0,3,2],rpclib:2,sqlalchemi:2,link:[0,3,2],gain:2,rfc1945:[],suppli:[],pull:[3,2],made:[3,2],possibl:2,wish:2,displai:2,troubl:2,until:2,url:2,below:2,those:2,absenc:1,fundament:2,site:0,problem:[1,2],more:[1,2],similar:2,expect:2,featur:2,creat:[0,1,2,3],certain:2,pragmat:1,parser:2,repres:2,intro:2,exist:2,glanc:2,pip:2,simplest:2,again:2,successfulli:0,want:[0,3,2],mashup:[1,2],excel:2,detail:2,scrape:2,field:2,book:2,zpt:2,test:2,ignor:2,you:[0,3,2],nice:[0,2],matur:2,repeat:2,intend:2,devot:[0,2],urllib2:2,gcc:2,djangocon:2,consid:2,easili:2,warn:2,wife:2,directori:[3,2],wifi:1,xmlrpclib:2,depth:2,train:[3,2],htmlparser:2,time:[0,2],push:[3,2],hello:2},objtypes:{},titles:["Final Project","Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["project","index","outline","assignments"]}) \ No newline at end of file From 2109177973a04ec2230020a4c18ed5c8238ff9b4 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 11 Mar 2013 21:54:02 -0700 Subject: [PATCH 058/114] add images for Plone presentation --- presentations/img/plone-icon-256-white-bg.png | Bin 0 -> 3913 bytes presentations/img/plone_conf_2012.jpg | Bin 0 -> 166895 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 presentations/img/plone-icon-256-white-bg.png create mode 100644 presentations/img/plone_conf_2012.jpg diff --git a/presentations/img/plone-icon-256-white-bg.png b/presentations/img/plone-icon-256-white-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..14a983932a129023eced0c7511c29d492cdec79f GIT binary patch literal 3913 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
    &GpT0_!iiZ7M2K0QS9>OqR=MucR+>=cL*NMZo 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 literal 0 HcmV?d00001 From 8fa48f0f05208974411feb54862593e704187041 Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 28 Jul 2013 21:55:00 -0700 Subject: [PATCH 059/114] first stage of transforming to the week-long-format version --- _sources/index.txt | 130 ++-- _sources/outline.txt | 765 ++++------------------ assignments.html | 138 ---- genindex.html | 10 +- index.html | 184 +++--- objects.inv | Bin 228 -> 227 bytes outline.html | 772 +++++----------------- presentations/index.html | 20 +- presentations/week01.html | 634 +----------------- presentations/week02.html | 930 -------------------------- presentations/week03.html | 925 +------------------------- presentations/week04.html | 1007 +--------------------------- presentations/week05.html | 1298 +------------------------------------ presentations/week06.html | 939 +-------------------------- project.html | 141 ---- search.html | 10 +- searchindex.js | 2 +- 17 files changed, 520 insertions(+), 7385 deletions(-) delete mode 100644 assignments.html delete mode 100644 project.html diff --git a/_sources/index.txt b/_sources/index.txt index 5535c193..42447ca7 100644 --- a/_sources/index.txt +++ b/_sources/index.txt @@ -1,12 +1,12 @@ .. Internet Programming with Python documentation master file, created by sphinx-quickstart on Sat Nov 3 13:22:19 2012. -`UW Certificate Program in Python Programming -`_ +`Python Web Programming Workshop, August 5-9, 2013 in Chapel Hill, NC +`_ -================================ -Internet Programming with Python -================================ +=============================== +Python Web Programming Workshop +=============================== .. sidebar:: Table of Contents @@ -15,89 +15,101 @@ Internet Programming with Python self outline - assignments - project + readings -Winter Term, 2013 - (10 Sessions) +August 5-9, 2013 -Tuesdays, 6-9 pm, January 8 through March 10 +Chapel Hill, North Carolina -Minutiae --------- +`Registration now open `_ -:Objectives: - This course emphasizes distributed programs and web applications - how - they work and how to program them in Python. Students will explore the - underlying principles and their expression in Python libraries. Students - will learn contrasting approaches in creating applications: programming - with the low-level libraries versus using highly integrated frameworks. - All topics will be presented with a focus on solving real problems with - simple, pragmatic code. +Overview +======== +This five day workshop emphasizes network-based programming and Web +applications, how they work and how to program them in Python. Explore the +underlying principles and their expression in the Python libraries. Learn +contrasting approaches in creating applications: programming with the +low-level libraries versus using highly integrated frameworks -:Prerequisites: - Students should have previously completed `Programming in Python - `_ - or have an equivalent level of experience. Contact the instructor prior to - registering if not in the `certificate program - `_ +Prerequisites +============= +To attend this workshop you should have a working knowledge of the basic +syntax and structures of the Python programming language. You will also need +to be comfortable working at the command line to navigate a file system, +create and delete files, and execute commands. Finally, you should have some +basic knowledge of HTML. -:Requirements: - This course does not provide a computer laboratory. Students will be - required to have access to a computer in order to complete the coursework. - As in-class laboratories are an important part of the experience, students - should have a portable computer they can bring to each session. Networking - in the classroom is provided via WiFi. Students should be able to - configure their computers to connect to the network. +Requirements +============ +This workshop does not provide a computer laboratory. You will have to have a +portable computer in order to participate. Network access, both wired and +wireless, will be provided, but you will need to know how to operate the +network settings for your computer. -:Assessment: +Your computer must have Python version 2.6 or 2.7 installed. No additional +libraries will be required, but we will be installing some as the workshop +progresses. - The course is graded Pass/Fail, based on **satisfactory completion of - required programming assignments** and classroom presentations. - **Attendance is required**; more than two unexcused absences will result - in a Fail. +You will want to familiarize yourself with `virtualenv +`_. We will use it extensively in class +in order to keep our development environments clean and separate. -:Accommodation: +What to Expect +============== - The University of Washington is committed to providing access and - reasonable accommodation in its services, programs, activities, education - and employment for individuals with disabilities. For information or to - request disability accommodation contact: Disability Services Office: - 206.543.6450/V, 206.543.6452/TTY, 206.685.7264 (FAX), or e-mail at - dso@u.washington.edu. +This one-week course will cover the fundamental concepts of networked +programming in Python. You'll learn everything, starting from the sockets that +enable communications between processes and machines and the basic protocols +that govern this communication, right up to the full-stack frameworks that +enable developers to build rich applications efficiently. + +Along the way, you'll learn through a combination of lecture and activity. +Historical information will be combined with exercises designed to help you +learn the Pythonic way to create programs that interact with each-other across +networks. Each module will include reading lists for more information and +ideas for projects you can use to help cement the lessons you learn after the +the class is over. + +**This class is** intended to give students a solid grounding in the +fundamentals of network programming. You will gain a basic understanding of a +broad range of Pythonic tools and learn to choose the right tool for a given +task. + +**This class is not** an in-depth course in any single Python web framework. +The intention is to give you the information needed to select the right +framework for your task. To that end, you will learn the basics of the +frameworks covered as well as the choices and compromises that shape them. References ----------- +========== -`Python 2.6.5 Documentation `_: -Complete documentation of the language. +`Python 2 Documentation `_: Complete +documentation of the language. -`Python 2.6.5 Quick Reference `_: -Dense and complete. Good for jogging your memeory, but don't start here. +`Python 2.7 Quick Reference `_: +Dense and complete. Good for jogging your memory, but don't start here. `Python Standard Library - Internet Protocols and Support -`_: All the supported internet +`_: All the supported internet protocols as implemented in Python. -`Python Module of the Week `_: A -fantastic reference for any module in python. Examples and usage are provided -throughout. +`Python Module of the Week `_: A fantastic reference for +any module in python. Examples and usage are provided throughout. -`Weekly Lecture Presentations `_: Slides from the -classroom presentations. +`Lecture Presentations `_: Slides from the workshop +presentations. -Indices and tables -================== +Search +====== -* :ref:`genindex` -* :ref:`modindex` * :ref:`search` diff --git a/_sources/outline.txt b/_sources/outline.txt index 40922454..9a59f66c 100644 --- a/_sources/outline.txt +++ b/_sources/outline.txt @@ -1,274 +1,98 @@ Course Outline ============== -Each week will have in-class lectures, lab time, and lightning talks. There -will be recommended reading, additional reading for the curious, and an -assignment to be completed. +This course is five days long. Each day is split into morning and afternoon +sessions. Each session will consist of three or so hours of instruction and +exercises and a couple of short breaks. -Week 1 - Introduction and Sockets ---------------------------------- +Session 1 - TCP/IP and Sockets +------------------------------ -**Date**: Jan. 8, 2013 +We will begin by covering basic front-matter for the course: daily schedule, +class protocol, introductions and such. Next we will move into a disucssion of +the fundamental concepts and structures that underly the internet and +networked computing. We will learn about the TCP/IP stack (Internet Protocol +Suite) and gain some insights into how that model manifests in real life. We +will then dive into sockets and learn how to use them to communicate between +processes on a single machine, or across a network. -In this class, we will discuss the fundamental concepts and structures that -underly the internet and networked computing. We will learn about the TCP/IP -stack (Internet Protocol Suite) and gain insight into how that model is -manifested in real life. We will learn about sockets and how to use them to -communicate between processes on a single machine or across a network. +Along the way, we'll build a basic Echo server and client to demonstrate the +processes we've learned. By lunch, we'll be sending messages and receiving +replies. -Our class laboratory will focus on creating a small server-client program that -demonstrates the use of sockets. We will install the server on our Virtual -Machines, and accomplish our first networked communication. - -The class assignment will focus on extending our use of sockets to support a -more complex use-case. - -`Class Presentation `_ - -Reading -******* - -* `Wikipedia - Internet Protocol Suite - `_ -* `Kessler - TCP/IP (sections 1 and 2) - `_ -* `Wikipedia - Domain Name System - `_ -* `Wikipedia - Internet Sockets - `_ -* `RFC 5321 - SMTP (Appendix D only) - `_ +`Lecture Slides `_ References ********** -* `Python Library - socket - `_ -* `Socket Programming How-to - `_ -* `Python Library - smtplib - `_ - -For our in-class lab and our homework, you'll be forking a github repository -and making pull requests. You can read up on how this is accomplished here: - -* `Fork a Repo `_ -* `Using Pull Requests `_ - -Further Reading -*************** - -* `Python Module of the Week - socket - `_ -* `Wikipedia - Berkeley socket interface - `_ -* `RFC 821 - SMTP (initial) `_ -* `RFC 5321 - SMTP (latest) `_ - -Bonus -***** - -`ZeroMQ Guide, Chapter 1 `_: -ZeroMQ is a modern, advanced implementation of the socket concept. Read this -to find out what sockets can get up to these days. - -Assignment -********** - -You can read the assignment at - -http://github.com/cewing/training.python_web/blob/master/assignments/week01/athome/assignment.txt - -Please complete the assignment by noon on Sunday, January 13, 2013. - - -Week 2 - Web Protocols ----------------------- - -**Date**: Jan. 15, 2013 - -In this class we will discuss the various languages of the Internet. What -differentiates one protocol from another? How are they similar? How can you -use the inherent qualities of each to determine which is appropriate for a -given purpose? - -The class laboratory will cover creating a simple web server. Using the HTTP -protocol and information we learned in week one about sockets, we'll create a -simple web server that allows us to look at files and directories on our own -computers. +* `Python Library - socket `_ +* `Socket Programming How-to `_ +* `Python Module of the Week - socket `_ -The class assignment will be to extend the simple web server, adding the -ability to run dynamic processes and return the results to the client. -`Week 2 Presentation `_ - -Reading -******* +Session 2 - Web Protocols +------------------------- -Read through the list of Python Internet Protocols. If you don't know what a -protocol is for, look it up online. Think about their relationship to each -other, which are clients? Which are servers? Which clients talk to which -servers? +Protocols are the languages of the Internet. They govern how machines speak to +one-another. We will focus on finding both the similarities and differences +between protocols. Can you use the inherent qualities of each to determine +which is appropriate for a given purpose? -`Python Standard Library Internet Protocols -`_ +Along the way, we'll build a simple web server. Using the HTTP protocol and +extending what we learned in the morning about we'll create an HTTP server +that allows us to serve files and directories from our own computers. By the +end of the day, you'll be browsing your filesystem with your own web browser. -An introduction to the HTTP protocol: -`HTTP Made Really Easy `_ +`Lecture Slides `_ References ********** -Skim these before class, you'll need them for lab and your assignment: - -* `smtplib `_ -* `imaplib `_ -* `httplib `_ -* `urllib `_ -* `urllib2 `_ - -Bonus -***** - -* httplib2_ - A comprehensive HTTP client library that supports many features - left out of other HTTP libraries. -* requests_ - "... an Apache2 Licensed HTTP library, written in Python, for - human beings." - -.. _httplib2: http://code.google.com/p/httplib2/ -.. _requests: http://docs.python-requests.org/en/latest/ - -Skim these four documents from different phases of HTTP's life. Get a feel for -how the specification has changed (and how it hasn't!). - -* `HTTP/0.9 `_ -* `HTTP - as defined in 1992 `_ -* `Hypertext Transfer Protocol -- HTTP/1.0 - `_ -* `Hypertext Transfer Protocol -- HTTP/1.1 - `_ +* `smtplib `_ +* `imaplib `_ +* `httplib `_ +* `urllib `_ +* `urllib2 `_ If you have more curiosity about other Python Standard Library implementations of internet protocols, you should read Doug Hellmann's Python Module Of The Week on `Internet Protocols and Support`_. His entries on these libraries are clear and concise and have some great code examples. -.. _Internet Protocols and Support: http://www.doughellmann.com/PyMOTW/internet_protocols.html - -Assignment -********** - -You can read the assignment at - -http://github.com/cewing/training.python_web/blob/master/assignments/week02/athome/assignment.txt - -Please complete the assignment by noon on Sunday, January 20, 2013. - -Week 3 - APIs and Mashups -------------------------- - -**Date**: Jan. 22, 2013 - -In this class we will explore some of the ways that you can consume and -explore the data provided by other websites. Online data can be provided in -ways intended for consumption. But you can also use scraping techniques to get -at data the original author may not have considered valuable enough to present -as consumable. +.. _Internet Protocols and Support: http://pymotw.com/2/internet_protocols.html -We'll explore the use of tools like BeautifulSoup to help make sense of the -truly horrible HTML that is to be found in the wild. We will also look at "Web -Services" formats like XMLRPC and REST so we can understand the ways in which -we can find data, or present it ourselves. Finally, we'll look at some "Web -Service APIs" to help understand how to read them, and how to use them to get -at the data they provide. -In our class lab sessions we will practice scraping a website and using a -documented web service API. +Session 3 - APIs and Mashups +---------------------------- -For our class assignment, students will choose two (or more) sources of -information online and combine them in a mashup. +The internet is a treasure trove of information. But meaning can be hard to +find among all that data. Mashups offer a way to combine data from disparate +sources in order to derive meaning. Data online can be offered in forms ripe +for consumption. APIs built in XMLRPC, SOAP or REST offer rich tools for +extraction, but even simple websites can be scraped using tools like +BeautifulSoup. -`Week 3 Presentation `_ +We'll explore the differences between various 'Web Services' formats, learning +how to serve information and consume it. We'll also explore using BeautifulSoup +to help extract information from the sea of HTML in the wild. -Reading -******* +Along the way, we'll create a mashup of our own, using the tools we learn to +build a script that can produce derived meaning out of data we find online. -* `Wikipedia's take on 'Web Services' - `_ -* `xmlrpc overview `_ -* `xmlrpc spec (short) `_ -* `json overview and spec (short) `_ -* `How I Explained REST to My Wife (Tomayko 2004) - `_ -* `A Brief Introduction to REST (Tilkov 2007) - `_ -* `Why HATEOAS - *a simple case study on the often ignored REST constraint* - `_ +`Lecture Slides `_ References ********** -Python Standard Libraries: -++++++++++++++++++++++++++ - -* `httplib `_ -* `htmlparser `_ -* `xmlrpclib `_ -* `DocXMLRPCServer - `_ -* `json `_ - -External Libraries: -+++++++++++++++++++ - -* BeautifulSoup_ - "You didn't write that awful page. You're just trying to - get some data out of it. Right now, you don't really care what HTML is - supposed to look like. Neither does this parser." - -* httplib2_ - A comprehensive HTTP client library that supports many features - left out of other HTTP libraries. - -* restkit_ - an HTTP resource kit for Python. It allows you to easily access - to HTTP resource and build objects around it. - -.. _BeautifulSoup: http://www.crummy.com/software/BeautifulSoup/ -.. _httplib2: http://code.google.com/p/httplib2/ -.. _restkit: https://github.com/benoitc/restkit/ - -SOAP -++++ - -* rpclib_ - a simple, easily extendible soap library that provides several - useful tools for creating, publishing and consuming soap web services - -* Suds_ - a lightweight SOAP python client for consuming Web Services. - -* `the SOAP specification `_ - -.. _rpclib: https://github.com/arskom/rpclib -.. _Suds: https://fedorahosted.org/suds/ - -Bonus -***** - -* `Wikipedia on REST - ` -* `Original REST disertation - ` - -Assignment -********** - -You can read the assignment at - -http://github.com/cewing/training.python_web/blob/master/assignments/week03/athome/assignment.txt - -Please complete the assignment by noon on Sunday, January 27, 2013. +* `httplib `_ +* `htmlparser `_ +* `xmlrpclib `_ +* `DocXMLRPCServer `_ +* `json `_ -Week 4 - CGI and WSGI ---------------------- -**Date**: Jan. 29, 2013 +Session 4 - CGI and WSGI +------------------------ In this class we will explore ways of moving data from HTTP requests into the dynamic scripts that process data. We will begin by looking at the original @@ -281,302 +105,95 @@ Services Gateway Interface). We'll see the ways in which WSGI is similar to CGI, and look at the ways in which it differs. We'll create a simple interaction using WSGI and see what benefits and drawbacks it confers. -`Week 4 Presentation `_ - -Reading -******* - -* `CGI tutorial`_ - Read the following sections: Hello World, Debugging, Form. - Other sections optional. Follow along, hosting CGI scripts either via Apache - on our VMs, or locally using CGIHTTPServer. - -* `WSGI tutorial`_ - Follow along, hosting WSGI scripts either via Apache on our - VMs, or locally using wsgiref. - -.. _CGI tutorial: http://webpython.codepoint.net/cgi_tutorial -.. _WSGI tutorial: http://webpython.codepoint.net/wsgi_tutorial - -Prepare for class: -++++++++++++++++++ +`Lecture Slides `_ -* `CGI example scripts`_ - Use these examples to get started experimenting with - CGI. -.. _CGI example scripts: https://github.com/cewing/training.python_web/tree/master/assignments/week04/lab/cgi-bin - -References -********** - -* `CGI module`_ - utilities for CGI scripts, mostly form and query string parsing -* `Parse URLS into components - `_ -* `CGIHTTPServer`_ - python -m CGIHTTPServer -* `WSGI Utilities and Reference implementation - `_ -* `WSGI 1.0 specification `_ -* `WSGI 1.0.1 (Python 3 support) `_ -* `test WSGI server, like cgi.test() - `_ - -.. _CGI module: http://docs.python.org/release/2.6.5/library/cgi.html -.. _CGIHTTPServer: http://docs.python.org/release/2.6.5/library/cgihttpserver.html - -Alternate WSGI introductions: -+++++++++++++++++++++++++++++ - -* `Getting Started with WSGI`_ - by Armin Ronacher (really solid and quick!) -* `very minimal introduction to WSGI - `_ - -.. _Getting Started with WSGI: http://lucumr.pocoo.org/2007/5/21/getting-started-with-wsgi/ - -Assignment -********** - -You can read the assignment at - -http://github.com/cewing/training.python_web/blob/master/assignments/week04/athome/assignment.txt - -Please complete the assignment by noon on Sunday, February 3, 2013. - -Week 5 - Small Frameworks -------------------------- - -**Date**: Feb. 5, 2013 +Session 5 - Frameworks and Flask +-------------------------------- In this class we learn about using frameworks to help us reach our goals. We will learn what makes up a framework and some criteria for evaluating which is the right one for you. -This week we will also learn about the final project for the class and students -will begin to think about what they wish to do to complete the project. - -In our class lab we will explore using a specific framework (Flask) to create -a simple web application. We'll learn how to install the framework, how to -read the documentation for it, how to build a simple dynamic application, and -how to push further on. - -For our assignment we will extend our knowledge by trying out a different -framework. We will have the chance to repeat the class lab, or create another -dynamic system using one of the many other python web frameworks available to -us. - -`Week 5 Presentation `_ - -Reading -******* +After an introduction to the idea of frameworks, we'll look at a specific +implementation of a *microframework*, `Flask `_. +We'll install the framework and take a look at how it works. What does it have +in common with work we've already done? -* `Web Application Frameworks - `_ -* `Flask Documentation `_ - Read the Foreward, - Installation and Quickstart sections. -* `Unittest - Unit Testing Framework - `_ - We will be writing - tests from here forward. Start learning how. +Along the way we'll learn about Jinja2, the templating language that Flask +uses, and a bit about the DBAPI2 and communicating with SQL databases from +within Python. -Please also skim this: +`Lecture Slides `_ -* `sqlite3 - DB API for sqlite3 - `_ - We'll need a bit - of familiarity with the sqlite3 module. How to open connections, execute - queries, and read the results from a cursor. Just read the first two - sections ('Creating a Database' and 'Retrieving Data'). -Before Class -************ +Session 6 - A Flask Application +------------------------------- -* Install Flask in a virtualenv on your local machine. -* Walk through the examples in the Quickstart section. -* You can play with the tutorial if you want. We'll be doing this in class as - our lab work - -Reference -********* +In this class we will exercise our new-won knowledge by building a small +application using Flask. We'll write templates and forms, persist data, +implement login and logout. When we're done, we'll have a fully-functional +microblog. -* `Bottle: Python Web Framework `_ -* `CherryPy: A Minimalize Python Web Framework `_ -* `Web.py: Think about the ideal way to write a web app. Write the code to - make it happen. `_ +We'll use a test-driven development style as we go. We'll decide the +functionality we need, write tests to prove it works, and then write the code +to make those tests pass. We'll be using the ``unittest`` module from the +Python Standard Library. -These are only a few of the many python web frameworks available in the -'microframework' class. I offer these resources as a starting point. For your -assignment, pick one of these to work with, or select one from the list at the -python wiki below. **Do Not Use Django or Pyramid**. We will be covering those -specifically in class. +Along the way, we'll learn a bit more about how flask operates in a real +application. We'll learn some more about the Jinja2 templating language, and +we'll learn to tie the transactions of our database interaction to the cycles +of request and response. -* `Python Web Frameworks `_ +`Lecture Slides `_ -You may also want to do more reading on the unittest module: -* `PyMOTW - unittest - `_ - -Assignment -********** - -You can read the assignment at - -http://github.com/cewing/training.python_web/blob/master/assignments/week05/athome/assignment.txt - -Please complete the assignment by noon on Sunday, February 10, 2013. - -Week 6 - Django ---------------- - -**Date**: Feb. 12, 2013 +Session 7 - Intro to Django +--------------------------- In this class we'll get introduced to arguably the most popular full-stack -Python web framework, Django. We'll build a simple application that introduces -us to the basics of Models, Views and Templates. We'll also learn about the -Django admin and how it can help us rapidly develop effective applications. - -We'll cover basic relational modeling and talk about how to create effective -database schemas to model real-world problems. We'll take a look at how the -Django ORM (and ORMs in general) can help shield Python developers from SQL. - -For our homework, we'll take a look at a set of specifications for a project -and create a set of Django Models that will fulfill the specification. - -`Week 6 Presentation `_ - -Reading -******* - -* `Django at a Glance - `_ - introduction to - the concepts and execution of Django - -* `Quick Install Guide - `_ - lightweight - instructions on installing Django. Use Python 2.6, not 2.5. - -* `Django Tutorial, part 1 - `_ - as noted - below, please actually follow the steps in the tutorial up until you reach - *Creating Models* - -Before Class -************ - -* Install Django 1.4.3. Use a Virtualenv and pip or easy_install. (see the - installation quick-start above, and the more in-depth guide below) - -* Install an RDBMS (I personally recommend PostgreSQL, but MySQL or any other - will do. We can even live with sqlite3, so long as you understand it is - **not for production**) - -* Set up a Django project. Walk through the first part of the tutorial above - until you reach *Creating Models*. **Do Not** create models) - -Reference -********* - -* `Using Django `_ - far more - in-depth information about core topics in Django. Pay particular attention - to the installation documentation here. +Python web framework, Django. We'll install the framework, learn about how to +get it running and how to get started creating your very own app. -* `Django Design Philosophies - `_ - some - well-considered words on why Django is the way it is. +We'll be learning about the Django ORM and how Django Models can help shield +developers from much of the complexity of SQL. We'll learn how to use the +tools Django provides to explore and interact with your models while designing +them. We'll also get a brief introduction to the Django admin, Django's +*killer feature*. -Assignment -********** - -Assignment -********** +Along the way, we'll continue our test-driven development style: writing tests +to demonstrate the functionality we desire and then implementing code to make +them pass. We'll get a chance to see how to build tests within the framework +offered by Django's testrunner. -You can read the assignment at +`Lecture Slides `_ -http://github.com/cewing/training.python_web/blob/master/assignments/week06/athome/assignment.txt -Please complete the assignment by noon on Sunday, February 17, 2013. +Session 8 - A Django Application +-------------------------------- -Week 7 - Django ---------------- +In this class we'll complete our exploration of Django. We'll customize the +Django admin to help us most efficiently administer our Blog application. +We'll create and test view functions that present our application to the world +and we'll provide front-end access to forms that allow us to create, edit and +publish blog entries without needing to use the admin. -**Date**: Feb. 19, 2013 - -In this class we'll dive a bit further into Django. We'll start with a -duplicate of the micro-blog we built in week 5 and work in teams to extend the -functionality by integrating existing apps. Along the way, we'll have a chance -to explore team-based development workflow. +Along the way we'll learn that the Django template language is quite similar +to the Jinja2 language (in fact, Jinja2 was modelled on the Django version). +We'll also get a chance to learn a bit more about the features that the Django +test framework provides over and above the standard Python ``unittest`` +library. Finally, we'll discuss some of the strengths and weaknesses of Django. What makes it a good choice for some projects but not for others. -Our assignment for the week will be to prepare for working with Pyramid in -Week 8. - -`Week 7 Presentation `_ - -Reading -******* - -* `Using Django `_ - far more - in-depth information about core topics in Django. Pay attention specifically - to the following topics (you'll want to follow links in these documents): - - * `Models `_ - - details of the django modelling system. How to represent data for, - relationships between and the presentation of your objects. - - * `Queries `_ - - basic information about the Django ORM and how to use it to create, - retrieve, update and delete objects. - - * `Working with Forms - `_ - how to create, - display, and process forms in Django, including forms that are associated - with a given model. - - * `The Django Template Language - `_ - learn - template basics like variables, filters, tags and blocks, and learn about - template inheritance. - - * `Class-based Generic Views - `_ - an - introduction to the simplest way to present your objects to your adoring - public. - - * `Testing Django Applications - `_ - learn - different approaches to testing Django applications, including unit - testing and doctests. - -Reference -********* - -* `SQLAlchemy and You `_ - - A really in-depth look at the differences between the Django ORM and the - reigning king of Python database integration, SQLAlchemy. - -* `About Django from the Pyramid Guy - `_ - a talk given at - DjangoCon 2012 by Chris McDonough, one of the driving forces behind the - Pyramid framework. Also available in `video form - `_. - -Assignment -********** - -This week we will have no code assignment. Instead the assignment will be to -install Pyramid and the ZODB. - -**WARNING**: the ZODB is built with C-based extensions. Installing it requires -a c compiler. On linux, gcc will do nicely but you'll need to install python -development headers. If you are using Mac OS X, you'll need to install XCode. -This is not fast. Be sure to start early in the week to leave time for this. +`Lecture Slides `_ -Read the `Instructions -`_ -Week 8 - Pyramid ----------------- +Session 9 - Intro to Pyramid +---------------------------- -**Date**: Feb. 26, 2013 - -This week we will look at a relative newcomer to the Python Web Framework +In this class we will look at a relative newcomer to the Python Web Framework scene, Pyramid. Although the framework is a newcomer, it is represents a combination of several projects, notably Repoze and Pylons, that have been around for quite some time. In fact, the roots of Repoze go back to Zope, the @@ -588,141 +205,39 @@ frameworks. We will look at the specific problems that the creators of Pyramid are looking to solve, and we will investigate how those decisions have influenced the design of the framework. -We'll specifically look at two technologies that set the Pyramid framework -apart: the ZODB and URL Traversal. We'll do this by implementing a wiki using -these technologies and then discuss what might make such tools appealing to a -certain type of project. - -We'll also look at a very different templating system, Chameleon, which grew -out of Zope Page Templates and the Template Attribute Language. Chameleon -provides code structures via XML namespaces, allowing you to write templates -that will load in a browser looking like HTML without needing a framework to -render them. - -`Week 8 Presentation `_ - -Reading -******* - -Why you should care about `Traversal -`_. - -Compare and contrast forms of dispatch in Pyramid: - -* `URL Route Dispatch - `_ -* `Object Traversal - `_ - -Learn a bit about the `ZODB `_ - -* Read the `tutorial `_ for a - quick overview of usage (don't actually do it, though). -* Read the `more complete walk-through here - `_ altough, again, do not - actually do the code examples. -* Learn about `object references in the ZODB - `_ - - one of its greatest strengths. - -Learn a bit about the Chameleon ZPT templating language: - -* Read about `Chameleon Templates in Pyramid - `_ -* A `Quick Intro to TAL `_ - -* `Chameleon Documentation `_ - -In particular, pay attention to: - -* `Basics (TAL) - `_ -* `Expressions (TALES) - `_ - - -References -********** - -* `The ZODB Book `_ - A work in - progress by Carlos De La Guardia. - -* The `ZPT Appendix `_ to - the Zope Book +Along the way, we'll learn how Pyramid works under the covers, and how this is +like and unlike other frameworks we've seen so far. We'll get started building +the Data Model and configuration structure for the wiki application we'll be +completing in the next session. -* Read `Defending Pyramid's Design - `_ - - an excellent point-by-point explanation of the design decisions that went - into creating this framework. +And we'll continue focusing on test-driven development, specifying +functionality and writing tests to demostrate it before ever writing the code +that provides it. +`Lecture Slides `_ -Assignment -********** - -Begin work on your final project. You must communicate your plan with Dan and -I first to ensure it is of an appropriate scope. If you are having trouble -getting started, let us know. - -We will be spending most of the class over the next two weeks working. Be -prepared to take advantage of the time with Dan and me by getting started now. - -`Reread the project specification -`_ - -Week 9 - The Cloud ------------------- - -**Date**: Mar. 5, 2013 - -This week we'll talk a bit about deployment options, and take a quick tour of -deploying to one of the many possible cloud solutions. - -The lion's share of the class will be devoted to lab time, enabling students -to work on their final projects with the help of Dan and Cris - -`Week 9 Presentation `_ - -Assignment -********** - -Continue working on your final project. - -You will have one more week to complete the project after today's class. Your -final version must be up and running live by Friday, March 15 at noon. - -`Reread the project specification -`_ - -Week 10 - Plone ---------------- -**Date**: Mar. 12, 2013 +Session 10 - A Pyramid Application +---------------------------------- -This week we'll visit a full-featured Content Management System built using -Python: Plone. We'll learn a bit about what Plone is and what it does. We'll -learn about it's history and when it might be a good choice for a project. -We'll even take a quick tour of some of the features of this mature, -enterprise CMS. - -We'll also have a visit from the instructors for the third and final course in -the Python certificate program. They'll be giving you a quick introduction to -the course and what you can expect to learn. - -Finally, we'll spend lab time in the class working on completing our final -projects. The projects will be due at the end of the week, so this will be -your last opportunity to work with Dan and Cris to answer questions. - -`Week 10 Presentation `_ - -Assignment -********** +In this class we'll dive into building a real Pyramid application. We'll be +implementing a simple wiki, using traversal dispatch, ZODB persistence and +Chameleon templates. We'll get a chance to work with simple forms, see how +views work in Pyramid, and implement an ACL-based authorization scheme. -Complete and submit your final project. +Along the way we'll be taking a good look at a very different templating +system, Chameleon. It grew out of Zope Page Templates (ZPT) and the Template +Attribute Language (TAL). It's chief advantage is that it provides structure +and variable interpolation via XML namespaced attributes. This allows you to +write templates that load in a browser and look 'right' without needing the +framework to render them. -The project will be due Friday, March 15 at noon. Late submissions will not be -accepted. +And we'll continue our drive for test-driven development by writing +tests that cover the functionality we want and then writing the code to make +them pass. -`Reread the project specification -`_ +By the end of the session, you'll have a fully functional wiki you can play +with. Maybe you'll use it to track the information you leared about Python +Web Development. -Make sure you submit all of the parts requested in the specification. +`Lecture Slides `_ \ No newline at end of file diff --git a/assignments.html b/assignments.html deleted file mode 100644 index faf67003..00000000 --- a/assignments.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - Assignments — Internet Programming with Python 1.0 documentation - - - - - - - - - - - - - - -
    -
    -
    -
    - -
    -

    Assignments¶

    -

    All assignments for the course will be submitted using the Github -fork-and-pull model. Here are the steps you’ll need to complete to do the job:

    -
      -
    1. Log in to the github website

      -
    2. -
    3. Visit my repository for the class documentation: -http://github.com/cewing/training.python_web

      -
    4. -
    5. In the top right corner of the repository listing, find the button labelled -‘Fork’. Click it to fork the repository.

      -
    6. -
    7. After a short while, you’ll find that you now have a copy of this -repository in your own github account. Clone that to your own machine:

      -

      git clone http://github.com/<username>/training.python_web.git

      -
    8. -
    9. Complete the assignment, placing your final scripts into the -assignments/weekNN/athome directory in the clone on your local machine.

      -
    10. -
    11. Commit your changes to the repository (you’ll need to git add new files -you create, then git commit them, e.g.:

      -

      git commit <file> -m "some steps I took to complete the assignment"

      -
    12. -
    13. Push your committed changes back to your github account:

      -

      git push origin master

      -
    14. -
    15. Back on the github website, click on the ‘Pull Request’ button at the top -of the page listing your fork of my repository (the copy in your account). -You can write a note to me if you like when you make your pull request.

      -
    16. -
    -

    From step 8, I’ll get an email that tells me that you have made a pull -request. That email will contain links to your fork of my repository. I can -use that link to review the changes you’ve made. After I’ve reviewed your -assignment, I’ll close the pull request because I don’t actually want to pull -your changes for this assignment into my repository.

    -

    That’ll be all.

    -
    - - -
    -
    -
    -
    -
    -

    Previous topic

    -

    Course Outline

    -

    This Page

    - - - -
    -
    -
    -
    - - - - \ No newline at end of file diff --git a/genindex.html b/genindex.html index f6f9c8dd..a7caf6f3 100644 --- a/genindex.html +++ b/genindex.html @@ -10,7 +10,7 @@ - Index — Internet Programming with Python 1.0 documentation + Index — Python Web Programming Workshop 1.0 documentation @@ -27,7 +27,7 @@ - + @@ -84,11 +84,11 @@

    Navigation

  • index
  • -
  • Internet Programming with Python 1.0 documentation »
  • +
  • Python Web Programming Workshop 1.0 documentation »
  • diff --git a/index.html b/index.html index de0d6682..1ea63752 100644 --- a/index.html +++ b/index.html @@ -8,7 +8,7 @@ - Internet Programming with Python — Internet Programming with Python 1.0 documentation + Python Web Programming Workshop — Python Web Programming Workshop 1.0 documentation @@ -25,7 +25,7 @@ - + @@ -38,7 +38,7 @@

    Navigation

  • next |
  • -
  • Internet Programming with Python 1.0 documentation »
  • +
  • Python Web Programming Workshop 1.0 documentation »
  • @@ -47,101 +47,112 @@

    Navigation

    -

    UW Certificate Program in Python Programming

    -
    -

    Internet Programming with Python¶

    +

    Python Web Programming Workshop, August 5-9, 2013 in Chapel Hill, NC

    +
    +

    Python Web Programming Workshop¶

    -

    Winter Term, 2013 - (10 Sessions)

    -

    Tuesdays, 6-9 pm, January 8 through March 10

    -
    -

    Minutiae¶

    - --- - - - - - - - - - - - -
    Objectives:This course emphasizes distributed programs and web applications - how -they work and how to program them in Python. Students will explore the -underlying principles and their expression in Python libraries. Students -will learn contrasting approaches in creating applications: programming -with the low-level libraries versus using highly integrated frameworks. -All topics will be presented with a focus on solving real problems with -simple, pragmatic code.
    Prerequisites:Students should have previously completed Programming in Python -or have an equivalent level of experience. Contact the instructor prior to -registering if not in the certificate program
    Requirements:This course does not provide a computer laboratory. Students will be -required to have access to a computer in order to complete the coursework. -As in-class laboratories are an important part of the experience, students -should have a portable computer they can bring to each session. Networking -in the classroom is provided via WiFi. Students should be able to -configure their computers to connect to the network.
    Assessment:The course is graded Pass/Fail, based on satisfactory completion of -required programming assignments and classroom presentations. -Attendance is required; more than two unexcused absences will result -in a Fail.
    Accommodation:The University of Washington is committed to providing access and -reasonable accommodation in its services, programs, activities, education -and employment for individuals with disabilities. For information or to -request disability accommodation contact: Disability Services Office: -206.543.6450/V, 206.543.6452/TTY, 206.685.7264 (FAX), or e-mail at -dso@u.washington.edu.
    +

    August 5-9, 2013

    +

    Chapel Hill, North Carolina

    +

    Registration now open

    +
    +

    Overview¶

    +

    This five day workshop emphasizes network-based programming and Web +applications, how they work and how to program them in Python. Explore the +underlying principles and their expression in the Python libraries. Learn +contrasting approaches in creating applications: programming with the +low-level libraries versus using highly integrated frameworks

    +
    +
    +

    Prerequisites¶

    +

    To attend this workshop you should have a working knowledge of the basic +syntax and structures of the Python programming language. You will also need +to be comfortable working at the command line to navigate a file system, +create and delete files, and execute commands. Finally, you should have some +basic knowledge of HTML.

    +
    +
    +

    Requirements¶

    +

    This workshop does not provide a computer laboratory. You will have to have a +portable computer in order to participate. Network access, both wired and +wireless, will be provided, but you will need to know how to operate the +network settings for your computer.

    +

    Your computer must have Python version 2.6 or 2.7 installed. No additional +libraries will be required, but we will be installing some as the workshop +progresses.

    +

    You will want to familiarize yourself with virtualenv. We will use it extensively in class +in order to keep our development environments clean and separate.

    +
    +
    +

    What to Expect¶

    +

    This one-week course will cover the fundamental concepts of networked +programming in Python. You’ll learn everything, starting from the sockets that +enable communications between processes and machines and the basic protocols +that govern this communication, right up to the full-stack frameworks that +enable developers to build rich applications efficiently.

    +

    Along the way, you’ll learn through a combination of lecture and activity. +Historical information will be combined with exercises designed to help you +learn the Pythonic way to create programs that interact with each-other across +networks. Each module will include reading lists for more information and +ideas for projects you can use to help cement the lessons you learn after the +the class is over.

    +

    This class is intended to give students a solid grounding in the +fundamentals of network programming. You will gain a basic understanding of a +broad range of Pythonic tools and learn to choose the right tool for a given +task.

    +

    This class is not an in-depth course in any single Python web framework. +The intention is to give you the information needed to select the right +framework for your task. To that end, you will learn the basics of the +frameworks covered as well as the choices and compromises that shape them.

    References¶

    -

    Python 2.6.5 Documentation: -Complete documentation of the language.

    -

    Python 2.6.5 Quick Reference: -Dense and complete. Good for jogging your memeory, but don’t start here.

    -

    Python Standard Library - Internet Protocols and Support: All the supported internet +

    Python 2 Documentation: Complete +documentation of the language.

    +

    Python 2.7 Quick Reference: +Dense and complete. Good for jogging your memory, but don’t start here.

    +

    Python Standard Library - Internet Protocols and Support: All the supported internet protocols as implemented in Python.

    -

    Python Module of the Week: A -fantastic reference for any module in python. Examples and usage are provided -throughout.

    -

    Weekly Lecture Presentations: Slides from the -classroom presentations.

    -
    -

    Indices and tables¶

    +

    Python Module of the Week: A fantastic reference for +any module in python. Examples and usage are provided throughout.

    +

    Lecture Presentations: Slides from the workshop +presentations.

    +
    + -
    @@ -152,12 +163,13 @@

    Indices and tables

    Table Of Contents

    diff --git a/objects.inv b/objects.inv index d7d8bd510a293129f70412403bd9914df50d2930..8a13b67d6ca6499889c5d0151d0de5571f7e711a 100644 GIT binary patch delta 41 wcmaFD_?U5mhI~L}Nk)F2LU?MDLO@Y|dQoC-Zf0J(LU?{rc5z02!9 - Course Outline — Internet Programming with Python 1.0 documentation + Course Outline — Python Web Programming Workshop 1.0 documentation @@ -25,9 +25,9 @@ - - - + + + @@ -53,216 +53,84 @@

    Navigation

    Course Outline¶

    -

    Each week will have in-class lectures, lab time, and lightning talks. There -will be recommended reading, additional reading for the curious, and an -assignment to be completed.

    -
    -

    Week 1 - Introduction and Sockets¶

    -

    Date: Jan. 8, 2013

    -

    In this class, we will discuss the fundamental concepts and structures that -underly the internet and networked computing. We will learn about the TCP/IP -stack (Internet Protocol Suite) and gain insight into how that model is -manifested in real life. We will learn about sockets and how to use them to -communicate between processes on a single machine or across a network.

    -

    Our class laboratory will focus on creating a small server-client program that -demonstrates the use of sockets. We will install the server on our Virtual -Machines, and accomplish our first networked communication.

    -

    The class assignment will focus on extending our use of sockets to support a -more complex use-case.

    -

    Class Presentation

    - +

    This course is five days long. Each day is split into morning and afternoon +sessions. Each session will consist of three or so hours of instruction and +exercises and a couple of short breaks.

    +
    +

    Session 1 - TCP/IP and Sockets¶

    +

    We will begin by covering basic front-matter for the course: daily schedule, +class protocol, introductions and such. Next we will move into a disucssion of +the fundamental concepts and structures that underly the internet and +networked computing. We will learn about the TCP/IP stack (Internet Protocol +Suite) and gain some insights into how that model manifests in real life. We +will then dive into sockets and learn how to use them to communicate between +processes on a single machine, or across a network.

    +

    Along the way, we’ll build a basic Echo server and client to demonstrate the +processes we’ve learned. By lunch, we’ll be sending messages and receiving +replies.

    +

    Lecture Slides

    References¶

    -

    For our in-class lab and our homework, you’ll be forking a github repository -and making pull requests. You can read up on how this is accomplished here:

    - -
    - -
    -

    Bonus¶

    -

    ZeroMQ Guide, Chapter 1: -ZeroMQ is a modern, advanced implementation of the socket concept. Read this -to find out what sockets can get up to these days.

    -
    -
    -

    Assignment¶

    -

    You can read the assignment at

    -

    http://github.com/cewing/training.python_web/blob/master/assignments/week01/athome/assignment.txt

    -

    Please complete the assignment by noon on Sunday, January 13, 2013.

    -
    -
    -
    -

    Week 2 - Web Protocols¶

    -

    Date: Jan. 15, 2013

    -

    In this class we will discuss the various languages of the Internet. What -differentiates one protocol from another? How are they similar? How can you -use the inherent qualities of each to determine which is appropriate for a -given purpose?

    -

    The class laboratory will cover creating a simple web server. Using the HTTP -protocol and information we learned in week one about sockets, we’ll create a -simple web server that allows us to look at files and directories on our own -computers.

    -

    The class assignment will be to extend the simple web server, adding the -ability to run dynamic processes and return the results to the client.

    -

    Week 2 Presentation

    -
    -

    Reading¶

    -

    Read through the list of Python Internet Protocols. If you don’t know what a -protocol is for, look it up online. Think about their relationship to each -other, which are clients? Which are servers? Which clients talk to which -servers?

    -

    Python Standard Library Internet Protocols

    -

    An introduction to the HTTP protocol: -HTTP Made Really Easy

    +
    +

    Session 2 - Web Protocols¶

    +

    Protocols are the languages of the Internet. They govern how machines speak to +one-another. We will focus on finding both the similarities and differences +between protocols. Can you use the inherent qualities of each to determine +which is appropriate for a given purpose?

    +

    Along the way, we’ll build a simple web server. Using the HTTP protocol and +extending what we learned in the morning about we’ll create an HTTP server +that allows us to serve files and directories from our own computers. By the +end of the day, you’ll be browsing your filesystem with your own web browser.

    +

    Lecture Slides

    References¶

    -

    Skim these before class, you’ll need them for lab and your assignment:

    - -
    -
    -

    Bonus¶

    -
      -
    • httplib2 - A comprehensive HTTP client library that supports many features -left out of other HTTP libraries.
    • -
    • requests - ”... an Apache2 Licensed HTTP library, written in Python, for -human beings.”
    • -
    -

    Skim these four documents from different phases of HTTP’s life. Get a feel for -how the specification has changed (and how it hasn’t!).

    If you have more curiosity about other Python Standard Library implementations of internet protocols, you should read Doug Hellmann’s Python Module Of The -Week on Internet Protocols and Support. His entries on these libraries are +Week on Internet Protocols and Support. His entries on these libraries are clear and concise and have some great code examples.

    -
    -

    Assignment¶

    -

    You can read the assignment at

    -

    http://github.com/cewing/training.python_web/blob/master/assignments/week02/athome/assignment.txt

    -

    Please complete the assignment by noon on Sunday, January 20, 2013.

    -
    -
    -
    -

    Week 3 - APIs and Mashups¶

    -

    Date: Jan. 22, 2013

    -

    In this class we will explore some of the ways that you can consume and -explore the data provided by other websites. Online data can be provided in -ways intended for consumption. But you can also use scraping techniques to get -at data the original author may not have considered valuable enough to present -as consumable.

    -

    We’ll explore the use of tools like BeautifulSoup to help make sense of the -truly horrible HTML that is to be found in the wild. We will also look at “Web -Services” formats like XMLRPC and REST so we can understand the ways in which -we can find data, or present it ourselves. Finally, we’ll look at some “Web -Service APIs” to help understand how to read them, and how to use them to get -at the data they provide.

    -

    In our class lab sessions we will practice scraping a website and using a -documented web service API.

    -

    For our class assignment, students will choose two (or more) sources of -information online and combine them in a mashup.

    -

    Week 3 Presentation

    - -
    -

    References¶

    -
    -

    Python Standard Libraries:¶

    - -
    -
    -

    External Libraries:¶

    -
      -
    • BeautifulSoup - “You didn’t write that awful page. You’re just trying to -get some data out of it. Right now, you don’t really care what HTML is -supposed to look like. Neither does this parser.”
    • -
    • httplib2 - A comprehensive HTTP client library that supports many features -left out of other HTTP libraries.
    • -
    • restkit - an HTTP resource kit for Python. It allows you to easily access -to HTTP resource and build objects around it.
    • -
    -
    -
    -

    SOAP¶

    -
      -
    • rpclib - a simple, easily extendible soap library that provides several -useful tools for creating, publishing and consuming soap web services
    • -
    • Suds - a lightweight SOAP python client for consuming Web Services.
    • -
    • the SOAP specification
    • -
    -
    -
    -

    Bonus¶

    +
    +

    Session 3 - APIs and Mashups¶

    +

    The internet is a treasure trove of information. But meaning can be hard to +find among all that data. Mashups offer a way to combine data from disparate +sources in order to derive meaning. Data online can be offered in forms ripe +for consumption. APIs built in XMLRPC, SOAP or REST offer rich tools for +extraction, but even simple websites can be scraped using tools like +BeautifulSoup.

    +

    We’ll explore the differences between various ‘Web Services’ formats, learning +how to serve information and consume it. We’ll also explore using BeautifulSoup +to help extract information from the sea of HTML in the wild.

    +

    Along the way, we’ll create a mashup of our own, using the tools we learn to +build a script that can produce derived meaning out of data we find online.

    +

    Lecture Slides

    +
    +

    References¶

      -
    • Wikipedia on REST -<http://en.wikipedia.org/wiki/Representational_State_Transfer>
    • -
    • Original REST disertation -<http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm>
    • +
    • httplib
    • +
    • htmlparser
    • +
    • xmlrpclib
    • +
    • DocXMLRPCServer
    • +
    • json
    -
    -

    Assignment¶

    -

    You can read the assignment at

    -

    http://github.com/cewing/training.python_web/blob/master/assignments/week03/athome/assignment.txt

    -

    Please complete the assignment by noon on Sunday, January 27, 2013.

    -
    -
    -

    Week 4 - CGI and WSGI¶

    -

    Date: Jan. 29, 2013

    +
    +

    Session 4 - CGI and WSGI¶

    In this class we will explore ways of moving data from HTTP requests into the dynamic scripts that process data. We will begin by looking at the original specification for passing data, CGI (Common Gateway Interface). We’ll look at @@ -272,244 +140,73 @@

    Week 4 - CGI and WSGI -

    Week 4 Presentation

    -
    -

    Reading¶

    -
      -
    • CGI tutorial - Read the following sections: Hello World, Debugging, Form. -Other sections optional. Follow along, hosting CGI scripts either via Apache -on our VMs, or locally using CGIHTTPServer.
    • -
    • WSGI tutorial - Follow along, hosting WSGI scripts either via Apache on our -VMs, or locally using wsgiref.
    • -
    -
    -

    Prepare for class:¶

    - -
    -
    -
    -

    References¶

    - -
    -

    Alternate WSGI introductions:¶

    - -
    -
    -
    -

    Assignment¶

    -

    You can read the assignment at

    -

    http://github.com/cewing/training.python_web/blob/master/assignments/week04/athome/assignment.txt

    -

    Please complete the assignment by noon on Sunday, February 3, 2013.

    -
    +

    Lecture Slides

    -
    -

    Week 5 - Small Frameworks¶

    -

    Date: Feb. 5, 2013

    +
    +

    Session 5 - Frameworks and Flask¶

    In this class we learn about using frameworks to help us reach our goals. We will learn what makes up a framework and some criteria for evaluating which is the right one for you.

    -

    This week we will also learn about the final project for the class and students -will begin to think about what they wish to do to complete the project.

    -

    In our class lab we will explore using a specific framework (Flask) to create -a simple web application. We’ll learn how to install the framework, how to -read the documentation for it, how to build a simple dynamic application, and -how to push further on.

    -

    For our assignment we will extend our knowledge by trying out a different -framework. We will have the chance to repeat the class lab, or create another -dynamic system using one of the many other python web frameworks available to -us.

    -

    Week 5 Presentation

    -
    -

    Reading¶

    - -

    Please also skim this:

    -
      -
    • sqlite3 - DB API for sqlite3 - We’ll need a bit -of familiarity with the sqlite3 module. How to open connections, execute -queries, and read the results from a cursor. Just read the first two -sections (‘Creating a Database’ and ‘Retrieving Data’).
    • -
    -
    -
    -

    Before Class¶

    -
      -
    • Install Flask in a virtualenv on your local machine.
    • -
    • Walk through the examples in the Quickstart section.
    • -
    • You can play with the tutorial if you want. We’ll be doing this in class as -our lab work
    • -
    -
    -
    -

    Reference¶

    - -

    These are only a few of the many python web frameworks available in the -‘microframework’ class. I offer these resources as a starting point. For your -assignment, pick one of these to work with, or select one from the list at the -python wiki below. Do Not Use Django or Pyramid. We will be covering those -specifically in class.

    - -

    You may also want to do more reading on the unittest module:

    - -
    -
    -

    Assignment¶

    -

    You can read the assignment at

    -

    http://github.com/cewing/training.python_web/blob/master/assignments/week05/athome/assignment.txt

    -

    Please complete the assignment by noon on Sunday, February 10, 2013.

    -
    -
    -
    -

    Week 6 - Django¶

    -

    Date: Feb. 12, 2013

    +

    After an introduction to the idea of frameworks, we’ll look at a specific +implementation of a microframework, Flask. +We’ll install the framework and take a look at how it works. What does it have +in common with work we’ve already done?

    +

    Along the way we’ll learn about Jinja2, the templating language that Flask +uses, and a bit about the DBAPI2 and communicating with SQL databases from +within Python.

    +

    Lecture Slides

    +
    +
    +

    Session 6 - A Flask Application¶

    +

    In this class we will exercise our new-won knowledge by building a small +application using Flask. We’ll write templates and forms, persist data, +implement login and logout. When we’re done, we’ll have a fully-functional +microblog.

    +

    We’ll use a test-driven development style as we go. We’ll decide the +functionality we need, write tests to prove it works, and then write the code +to make those tests pass. We’ll be using the unittest module from the +Python Standard Library.

    +

    Along the way, we’ll learn a bit more about how flask operates in a real +application. We’ll learn some more about the Jinja2 templating language, and +we’ll learn to tie the transactions of our database interaction to the cycles +of request and response.

    +

    Lecture Slides

    +
    +
    +

    Session 7 - Intro to Django¶

    In this class we’ll get introduced to arguably the most popular full-stack -Python web framework, Django. We’ll build a simple application that introduces -us to the basics of Models, Views and Templates. We’ll also learn about the -Django admin and how it can help us rapidly develop effective applications.

    -

    We’ll cover basic relational modeling and talk about how to create effective -database schemas to model real-world problems. We’ll take a look at how the -Django ORM (and ORMs in general) can help shield Python developers from SQL.

    -

    For our homework, we’ll take a look at a set of specifications for a project -and create a set of Django Models that will fulfill the specification.

    -

    Week 6 Presentation

    -
    -

    Reading¶

    -
      -
    • Django at a Glance - introduction to -the concepts and execution of Django
    • -
    • Quick Install Guide - lightweight -instructions on installing Django. Use Python 2.6, not 2.5.
    • -
    • Django Tutorial, part 1 - as noted -below, please actually follow the steps in the tutorial up until you reach -Creating Models
    • -
    -
    -
    -

    Before Class¶

    -
      -
    • Install Django 1.4.3. Use a Virtualenv and pip or easy_install. (see the -installation quick-start above, and the more in-depth guide below)
    • -
    • Install an RDBMS (I personally recommend PostgreSQL, but MySQL or any other -will do. We can even live with sqlite3, so long as you understand it is -not for production)
    • -
    • Set up a Django project. Walk through the first part of the tutorial above -until you reach Creating Models. Do Not create models)
    • -
    -
    -
    -

    Reference¶

    -
      -
    • Using Django - far more -in-depth information about core topics in Django. Pay particular attention -to the installation documentation here.
    • -
    • Django Design Philosophies - some -well-considered words on why Django is the way it is.
    • -
    -
    -
    -

    Assignment¶

    -
    -
    -

    Assignment¶

    -

    You can read the assignment at

    -

    http://github.com/cewing/training.python_web/blob/master/assignments/week06/athome/assignment.txt

    -

    Please complete the assignment by noon on Sunday, February 17, 2013.

    -
    -
    -
    -

    Week 7 - Django¶

    -

    Date: Feb. 19, 2013

    -

    In this class we’ll dive a bit further into Django. We’ll start with a -duplicate of the micro-blog we built in week 5 and work in teams to extend the -functionality by integrating existing apps. Along the way, we’ll have a chance -to explore team-based development workflow.

    +Python web framework, Django. We’ll install the framework, learn about how to +get it running and how to get started creating your very own app.

    +

    We’ll be learning about the Django ORM and how Django Models can help shield +developers from much of the complexity of SQL. We’ll learn how to use the +tools Django provides to explore and interact with your models while designing +them. We’ll also get a brief introduction to the Django admin, Django’s +killer feature.

    +

    Along the way, we’ll continue our test-driven development style: writing tests +to demonstrate the functionality we desire and then implementing code to make +them pass. We’ll get a chance to see how to build tests within the framework +offered by Django’s testrunner.

    +

    Lecture Slides

    +
    +
    +

    Session 8 - A Django Application¶

    +

    In this class we’ll complete our exploration of Django. We’ll customize the +Django admin to help us most efficiently administer our Blog application. +We’ll create and test view functions that present our application to the world +and we’ll provide front-end access to forms that allow us to create, edit and +publish blog entries without needing to use the admin.

    +

    Along the way we’ll learn that the Django template language is quite similar +to the Jinja2 language (in fact, Jinja2 was modelled on the Django version). +We’ll also get a chance to learn a bit more about the features that the Django +test framework provides over and above the standard Python unittest +library.

    Finally, we’ll discuss some of the strengths and weaknesses of Django. What makes it a good choice for some projects but not for others.

    -

    Our assignment for the week will be to prepare for working with Pyramid in -Week 8.

    -

    Week 7 Presentation

    -
    -

    Reading¶

    -
      -
    • Using Django - far more -in-depth information about core topics in Django. Pay attention specifically -to the following topics (you’ll want to follow links in these documents):
        -
      • Models - -details of the django modelling system. How to represent data for, -relationships between and the presentation of your objects.
      • -
      • Queries - -basic information about the Django ORM and how to use it to create, -retrieve, update and delete objects.
      • -
      • Working with Forms - how to create, -display, and process forms in Django, including forms that are associated -with a given model.
      • -
      • The Django Template Language - learn -template basics like variables, filters, tags and blocks, and learn about -template inheritance.
      • -
      • Class-based Generic Views - an -introduction to the simplest way to present your objects to your adoring -public.
      • -
      • Testing Django Applications - learn -different approaches to testing Django applications, including unit -testing and doctests.
      • -
      -
    • -
    -
    -
    -

    Reference¶

    -
      -
    • SQLAlchemy and You -- A really in-depth look at the differences between the Django ORM and the -reigning king of Python database integration, SQLAlchemy.
    • -
    • About Django from the Pyramid Guy - a talk given at -DjangoCon 2012 by Chris McDonough, one of the driving forces behind the -Pyramid framework. Also available in video form.
    • -
    -
    -
    -

    Assignment¶

    -

    This week we will have no code assignment. Instead the assignment will be to -install Pyramid and the ZODB.

    -

    WARNING: the ZODB is built with C-based extensions. Installing it requires -a c compiler. On linux, gcc will do nicely but you’ll need to install python -development headers. If you are using Mac OS X, you’ll need to install XCode. -This is not fast. Be sure to start early in the week to leave time for this.

    -

    Read the Instructions

    -
    +

    Lecture Slides

    -
    -

    Week 8 - Pyramid¶

    -

    Date: Feb. 26, 2013

    -

    This week we will look at a relative newcomer to the Python Web Framework +

    +

    Session 9 - Intro to Pyramid¶

    +

    In this class we will look at a relative newcomer to the Python Web Framework scene, Pyramid. Although the framework is a newcomer, it is represents a combination of several projects, notably Repoze and Pylons, that have been around for quite some time. In fact, the roots of Repoze go back to Zope, the @@ -519,106 +216,34 @@

    Week 8 - PyramidWeek 8 Presentation

    -
    -

    Reading¶

    -

    Why you should care about Traversal.

    -

    Compare and contrast forms of dispatch in Pyramid:

    - -

    Learn a bit about the ZODB

    - -

    Learn a bit about the Chameleon ZPT templating language:

    - -

    In particular, pay attention to:

    - -
    -
    -

    References¶

    - -
    -
    -

    Assignment¶

    -

    Begin work on your final project. You must communicate your plan with Dan and -I first to ensure it is of an appropriate scope. If you are having trouble -getting started, let us know.

    -

    We will be spending most of the class over the next two weeks working. Be -prepared to take advantage of the time with Dan and me by getting started now.

    -

    Reread the project specification

    -
    -

    -
    -

    Week 9 - The Cloud¶

    -

    Date: Mar. 5, 2013

    -

    This week we’ll talk a bit about deployment options, and take a quick tour of -deploying to one of the many possible cloud solutions.

    -

    The lion’s share of the class will be devoted to lab time, enabling students -to work on their final projects with the help of Dan and Cris

    -

    Week 9 Presentation

    -
    -

    Assignment¶

    -

    Continue working on your final project.

    -

    You will have one more week to complete the project after today’s class. Your -final version must be up and running live by Friday, March 15 at noon.

    -

    Reread the project specification

    -
    -
    -
    -

    Week 10 - Plone¶

    -

    Date: Mar. 12, 2013

    -

    This week we’ll visit a full-featured Content Management System built using -Python: Plone. We’ll learn a bit about what Plone is and what it does. We’ll -learn about it’s history and when it might be a good choice for a project. -We’ll even take a quick tour of some of the features of this mature, -enterprise CMS.

    -

    We’ll also have a visit from the instructors for the third and final course in -the Python certificate program. They’ll be giving you a quick introduction to -the course and what you can expect to learn.

    -

    Finally, we’ll spend lab time in the class working on completing our final -projects. The projects will be due at the end of the week, so this will be -your last opportunity to work with Dan and Cris to answer questions.

    -

    Week 10 Presentation

    -
    -

    Assignment¶

    -

    Complete and submit your final project.

    -

    The project will be due Friday, March 15 at noon. Late submissions will not be -accepted.

    -

    Reread the project specification

    -

    Make sure you submit all of the parts requested in the specification.

    -
    +

    Along the way, we’ll learn how Pyramid works under the covers, and how this is +like and unlike other frameworks we’ve seen so far. We’ll get started building +the Data Model and configuration structure for the wiki application we’ll be +completing in the next session.

    +

    And we’ll continue focusing on test-driven development, specifying +functionality and writing tests to demostrate it before ever writing the code +that provides it.

    +

    Lecture Slides

    +
    +
    +

    Session 10 - A Pyramid Application¶

    +

    In this class we’ll dive into building a real Pyramid application. We’ll be +implementing a simple wiki, using traversal dispatch, ZODB persistence and +Chameleon templates. We’ll get a chance to work with simple forms, see how +views work in Pyramid, and implement an ACL-based authorization scheme.

    +

    Along the way we’ll be taking a good look at a very different templating +system, Chameleon. It grew out of Zope Page Templates (ZPT) and the Template +Attribute Language (TAL). It’s chief advantage is that it provides structure +and variable interpolation via XML namespaced attributes. This allows you to +write templates that load in a browser and look ‘right’ without needing the +framework to render them.

    +

    And we’ll continue our drive for test-driven development by writing +tests that cover the functionality we want and then writing the code to make +them pass.

    +

    By the end of the session, you’ll have a fully functional wiki you can play +with. Maybe you’ll use it to track the information you leared about Python +Web Development.

    +

    Lecture Slides

    @@ -631,90 +256,35 @@

    AssignmentTable Of Contents

    index
  • - next |
  • - previous |
  • -
  • Internet Programming with Python 1.0 documentation »
  • +
  • Python Web Programming Workshop 1.0 documentation »
  • diff --git a/presentations/index.html b/presentations/index.html index 2cd0364b..ae9ff014 100644 --- a/presentations/index.html +++ b/presentations/index.html @@ -39,16 +39,16 @@

    Course Presentations

    diff --git a/presentations/week01.html b/presentations/week01.html index edb89d10..465df483 100644 --- a/presentations/week01.html +++ b/presentations/week01.html @@ -42,647 +42,15 @@

    Internet Programming with Python

    Week 1: Networking and Sockets

    Wherein we learn about the basic structure of the internet and explore the building blocks that make it possible.

    +

    ...

    - -
    -

    But First

    -

    Mumbo-Jumbo

    -
    -
    -

    But First

    -

    Class presentations are available online for your use

    -

    http://github.com/cewing/training.python_web

    -

    Licensed with Creative Commons BY-NC-SA

    -
      -
    • You must attribute the work
    • -
    • You may not use the work for commercial purposes
    • -
    • You have to share your versions just like this one
    • -
    -

    Find mistakes? See improvements? Make a pull request.

    -
    -
    -

    But First

    -

    Class Structure

    -
      -
    • ~20 minutes of Review and Discussion
    • -
    • 5 minute break
    • -
    • ~1 hour of Lecture and Exercises
    • -
    • 10 minute break
    • -
    • ~1 hour of Lab Time
    • -
    • 5 minute break
    • -
    • ~20 minutes of Lightning Talks
    • -
    -
    -
    -

    But First

    -

    I'll spend a lot of time talking

    -

    Don't make the mistake of thinking this means I know everything

    -

    Each of us has domain expertise, share it

    -
    -
    -

    But First

    -

    Introductions

    -
    -
    -

    Finally

    -

    And now, let us begin!

    -
    -
    -

    Questions From the Reading?

    -

    do you have any?

    -
    -
    -

    Computer Communications

    -img/network_topology.png -
      -
    • processes can communicate
    • -
    • inside one machine
    • -
    • between two machines
    • -
    • among many machines
    • -
    -

    image: http://en.wikipedia.org/wiki/Internet_Protocol_Suite

    -
    -
    -

    Computer Communications

    -img/data_in_tcpip_stack.png -
      -
    • Process divided into 'layers'
    • -
    • 'Layers' are mostly arbitrary
    • -
    • Different descriptions have different layers
    • -
    • Most common is the 'TCP/IP Stack'
    • -
    -

    image: http://en.wikipedia.org/wiki/Internet_Protocol_Suite

    -
    - -
    -

    The TCP/IP Stack - Internet

    -

    Moving up, we have the 'Internet Layer'

    -
      -
    • Deals with addressing and routing
        -
      • Where are we going?
      • -
      • What path do we take to get there?
      • -
      -
    • -
    • Agnostic as to physical medium (IP over Avian Carrier - IPoAC)
    • -
    • Makes no promises of reliability
    • -
    • Two addressing systems
        -
      • IPv4 (current, limited '192.168.1.100')
      • -
      • IPv6 (future, 3.4 x 10^38 addresses, '2001:0db8:85a3:0042:0000:8a2e:0370:7334')
      • -
      -
    • -
    -
    -
    -

    The TCP/IP Stack - Internet

    -

    That's 4.3 x 10^28 addresses per person alive today

    -
    -
    -

    The TCP/IP Stack - Transport

    -

    Next up is the 'Transport Layer'

    -
      -
    • Deals with transmission and reception of data
        -
      • error correction, flow control, congestion management
      • -
      -
    • -
    • Common protocols include TCP & UDP
        -
      • TCP: Tranmission Control Protocol
      • -
      • UDP: User Datagram Protocol
      • -
      -
    • -
    • Not all Transport Protocols are 'reliable'
        -
      • TCP ensures that dropped packets are resent
      • -
      • UDP makes no such assurance
      • -
      • Reliability is slow and expensive
      • -
      -
    • -
    -
    -
    -

    The TCP/IP Stack - Transport

    -

    The 'Transport Layer' also establishes the concept of a port

    -
      -
    • IP Addresses designate a specific machine on the network
    • -
    • A port provides addressing for individual applications in a single host
    • -
    • 192.168.1.100:80 (the :80 part is the port)
    • -
    -

    This means that you don't have to worry about information intended for your -web browser being accidentally read by your email client.

    -
    -
    -

    The TCP/IP Stack - Transport

    -

    There are certain ports which are commonly understood to belong to given -applications or protocols:

    -
      -
    • 80/443 - HTTP/HTTPS
    • -
    • 20 - FTP
    • -
    • 22 - SSH
    • -
    • 23 - Telnet
    • -
    • 25 - SMTP
    • -
    • ...
    • -
    -

    (see http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers)

    -
    -
    -

    The TCP/IP Stack - Transport

    -

    Ports are grouped into a few different classes

    -
      -
    • Ports numbered 0 - 1023 are reserved
    • -
    • Ports numbered 1024 - 65535 are open
    • -
    • Ports numbered 49152 - 65535 are generally considered ephemeral
    • -
    -
    -
    -

    The TCP/IP Stack - Application

    -

    The topmost layer is the 'Application Layer'

    -
      -
    • Deals directly with data produced or consumed by an application
    • -
    • Reads or writes data using a set of understood, well-defined protocols
        -
      • HTTP, SMTP, FTP etc.
      • -
      -
    • -
    • Does not know (or need to know) about lower layer functionality
        -
      • The exception to this rule is endpoint data (or IP:Port)
      • -
      -
    • -
    -
    -
    -

    The TCP/IP Stack - Application

    -

    this is where we live and work

    -
    -
    -

    Sockets

    -

    Think back for a second to what we just finished discussing, the TCP/IP stack.

    -
      -
    • The Internet layer gives us an IP Address
    • -
    • The Transport layer establishes the idea of a port.
    • -
    • The Application layer doesn't care about what happens below...
    • -
    • Except for endpoint data (IP:Port)
    • -
    -

    A Socket is the software representation of that endpoint.

    -

    Opening a socket creates a kind of transceiver that can send and/or -receive data at a given IP address and Port.

    -
    -
    -

    Sockets in Python

    -

    Python provides a standard library module which provides socket functionality. -It is called socket. Let's spend a few minutes getting to know this -module.

    -

    We're going to do this next part together, so open up a terminal and start -python.

    -
    -
    -

    Sockets in Python

    -

    The sockets library provides tools for finding out information about hosts on -the network. For example, you can find out about the machine you are currently -using:

    -
    ->>> import socket
    ->>> socket.gethostname()
    -'heffalump.local'
    ->>> socket.gethostbyname(socket.gethostname())
    -'10.211.55.2'
    ->>> socket.gethostbyname_ex(socket.gethosthame())
    -('heffalump.local', [], ['10.211.55.2', '10.37.129.2', '192.168.1.102'])
    -
    -
    -
    -

    Sockets in Python

    -

    You can also find out about machines that are located elsewhere, for example:

    -
    ->>> socket.gethostbyname_ex('google.com')
    -('google.com', [], ['173.194.33.9', '173.194.33.14',
    -                    ...
    -                    '173.194.33.6', '173.194.33.7',
    -                    '173.194.33.8'])
    ->>> socket.gethostbyname_ex('www.rad.washington.edu')
    -('elladan.rad.washington.edu', # <- canonical hostname
    - ['www.rad.washington.edu'], # <- any aliases
    - ['128.95.247.84']) # <- all active IP addresses
    -
    -
    -
    -

    Sockets in Python

    -

    To create a socket, you use the socket method of the socket library:

    -
    ->>> foo = socket.socket()
    ->>> foo
    -<socket._socketobject object at 0x10046cec0>
    -
    -
    -
    -

    Sockets in Python

    -

    A socket has some properties that are immediately important to us. These -include the family, type and protocol of the socket:

    -
    ->>> foo.family
    -2
    ->>> foo.type
    -1
    ->>> foo.proto
    -0
    -
    -
    -
    -

    Socket Families

    -

    Think back a moment to our discussion of the Internet layer of the TCP/IP -stack. There were a couple of different types of IP addresses:

    -
      -
    • IPv4 ('192.168.1.100')
    • -
    • IPv6 ('2001:0db8:85a3:0042:0000:8a2e:0370:7334')
    • -
    -

    The family of a socket corresponds to the type of address you use to make a -connection to it.

    -
    -
    -

    A quick utility method

    -

    Let's explore these families for a moment. To do so, we're going to define -a method we can use to read contstants from the socket library. It will -take a single argument, the shared prefix for a defined set of constants:

    -
    ->>> def get_constants(prefix):
    -...     """mapping of socket module constants to their names."""
    -...     return dict( (getattr(socket, n), n)
    -...                  for n in dir(socket)
    -...                  if n.startswith(prefix)
    -...                  )
    -...
    ->>>
    -
    -
    -
    -

    Socket Families

    -

    Families defined in the socket library are prefixed by AF_:

    -
    ->>> families = get_constants('AF_')
    ->>> families
    -{0: 'AF_UNSPEC', 1: 'AF_UNIX', 2: 'AF_INET',
    - 11: 'AF_SNA', 12: 'AF_DECnet', 16: 'AF_APPLETALK',
    - 17: 'AF_ROUTE', 23: 'AF_IPX', 30: 'AF_INET6'}
    -
    -

    Your results may vary

    -

    Of all of these, the ones we care most about are 2 (IPv4) and 30 (IPv6).

    -
    -
    -

    Unix Domain Sockets

    -

    When you are on a machine with an operating system that is Unix-like, you will -find another generally useful socket family: AF_UNIX, or Unix Domain -Sockets. Sockets in this family:

    -
      -
    • connect processes on the same machine
    • -
    • are generally a bit slower than IPC connnections
    • -
    • have the benefit of allowing the same API for programs that might run on one -machine __or__ across the network
    • -
    • use an 'address' that looks like a pathname ('/tmp/foo.sock')
    • -
    -
    -
    -

    Socket Families

    -

    What is the default family for the socket we created just a moment ago?

    -

    (remember we bound the socket to the symbol foo)

    -
    -
    -

    Socket Types

    -

    The socket type determines how the socket handles connections. Socket type -constants defined in the socket library are prefixed by SOCK_:

    -
    ->>> types = get_constants('SOCK_')
    ->>> types
    -{1: 'SOCK_STREAM', 2: 'SOCK_DGRAM',
    - ...}
    -
    -

    In general, the only two of these that are widely useful are 1 -(representing TCP type connections) and 2 (representing UDP type -connections).

    -
    -
    -

    Socket Types

    -

    What is the default type for our generic socket, foo?

    -
    -
    -

    Socket Protocols

    -

    A socket also has a designated protocol. The constants for these are -prefixed by IPPROTO:

    -
    ->>> protocols = get_constants('IPPROTO_')
    ->>> protocols
    -{0: 'IPPROTO_IP', 1: 'IPPROTO_ICMP',
    - ...,
    - 255: 'IPPROTO_RAW'}
    -
    -

    The choice of which protocol to use for a socket is determined by the type of -activity the socket is intended to support. What messages are you needing to -send?

    -
    -
    -

    Socket Protocols

    -

    What is the default protocol used by our generic socket, foo?

    -
    -
    -

    Address Information

    -

    When creating a socket, you can provide family, type and protocol -as arguments to the constructor:

    -
    ->>> bar = socket.socket(socket.AF_INET,
    -...                     socket.SOCK_STREAM,
    -...                     socket.IPPROTO_IP)
    -...
    ->>> bar
    -<socket._socketobject object at 0x1005b8b40>
    -
    -
    -
    -

    Address Information

    -

    But how do you find out the right values?

    -

    You ask.

    -
    -
    -

    A quick utility method

    -

    Create the following function:

    -
    ->>> def get_address_info(host, port):
    -...     for response in socket.getaddrinfo(host, port):
    -...         fam, typ, pro, nam, add = response
    -...         print 'family: ', families[fam]
    -...         print 'type: ', types[typ]
    -...         print 'protocol: ', protocols[pro]
    -...         print 'canonical name: ', nam
    -...         print 'socket address: ', add
    -...         print
    -...
    ->>>
    -
    -
    -
    -

    On Your Own Machine

    -

    Now, ask your own machine what services are available on 'http':

    -
    ->>> get_address_info(socket.gethostname(), 'http')
    -family:  AF_INET
    -type:  SOCK_DGRAM
    -protocol:  IPPROTO_UDP
    -canonical name:
    -socket address:  ('10.211.55.2', 80)
    -
    -family:  AF_INET
    -...
    ->>>
    -
    -

    What answers do you get?

    -
    -
    -

    On the Internet

    -
    ->>> get_address_info('www.google.com', 'http')
    -family:  AF_INET
    -type:  SOCK_STREAM
    -protocol:  IPPROTO_TCP
    -canonical name:
    -socket address:  ('74.125.129.105', 80)
    -
    -family:  AF_INET
    -...
    ->>>
    -
    -

    Try a few other servers you know about.

    -
    -
    -

    First Steps

    -

    Let's put this to use

    -
    -
    -

    Client Connections

    -

    The information returned by a call to socket.getaddrinfo is all you need -to make a proper connection to a socket on a remote host. The value returned -is a tuple of

    -
      -
    • socket family
    • -
    • socket type
    • -
    • socket protocol
    • -
    • canonical name
    • -
    • socket address
    • -
    -
    -
    -

    Construct a Socket

    -

    We've already made a socket foo using the generic constructor without any -arguments. We can make a better one now by using real address information from -a real server online:

    -
    ->>> all = socket.getaddrinfo('www.google.com', 'http')
    ->>> info = all[0]
    ->>> info
    -(2, 1, 6, '', ('173.194.79.104', 80))
    ->>> google_socket = socket.socket(*info[:3])
    -
    -
    -
    -

    Connecting a Socket

    -

    Once the socket is constructed with the appropriate family, type and -protocol, we can connect it to the address of our remote server:

    -
    ->>> google_socket.connect(info[-1])
    ->>>
    -
    -
      -
    • a successful connection returns None
    • -
    • a failed connection raises an error
    • -
    • you can use the type of error returned to tell why the connection failed.
    • -
    -
    -
    -

    Sending a Message

    -

    We can send a message to the server on the other end of our connection:

    -
    ->>> msg = "GET / HTTP/1.1\r\n\r\n"
    ->>> google_socket.sendall(msg)
    ->>>
    -
    -
      -
    • the transmission continues until all data is sent or an error occurs
    • -
    • success returns None
    • -
    • failure to send raises an error
    • -
    • you can use the type of error to figure out why the transmission failed
    • -
    • you cannot know how much, if any, of your data was sent
    • -
    -
    -
    -

    Receiving an Reply

    -

    Whatever reply we get is received by the socket we created. We can read it -back out:

    -
    ->>> response = google_socket.recv(4096)
    ->>> response
    -'HTTP/1.1 200 OK\r\nDate: Thu, 03 Jan 2013 05:56:53
    -...
    -
    -
      -
    • The sole required argument is a buffer size, it should be a power of 2 and -smallish
    • -
    • the returned value will be a string of buffer size (or smaller if less data -was received)
    • -
    -
    -
    -

    Cleaning Up

    -

    When you are finished with a connection, you should always close it:

    -
    ->>> google_socket.close()
    -

    Putting it all together

    -
    ->>> all = socket.getaddrinfo('google.com', 'http')
    ->>> info = all[0]
    ->>> gs = socket.socket(*info[:3])
    ->>> gs.connect(info[-1])
    ->>> msg = "GET / HTTP/1.1\r\n\r\n"
    ->>> gs.sendall(msg)
    ->>> response = gs.recv(4096)
    ->>> response
    -... 'HTTP/1.1 200 OK\r\n...
    ->>> gs.close()
    -
    -
    -
    -

    Server Side

    -

    What about the other half of the equation?

    -
    -
    -

    Construct a Socket

    -

    For the moment, stop typing this into your interpreter.

    -

    Again, we begin by constructing a socket. Since we are actually the server -this time, we get to choose family, type and protocol:

    -
    ->>> server_socket = socket.socket(
    -...     socket.AF_INET,
    -...     socket.SOCK_STREAM,
    -...     socket.IPPROTO_IP)
    -...
    ->>> server_socket
    -<socket._socketobject object at 0x100563c90>
    -
    -
    -
    -

    Bind the Socket

    -

    Our server socket needs to be bound to an address. This is the IP Address and -Port to which clients must connect:

    -
    ->>> address = ('127.0.0.1', 50000)
    ->>> server_socket.bind(address)
    -
    -
    -
    -

    Listen for Connections

    -

    Once our socket is created, we use it to listen for attempted connections:

    -
    ->>> server_socket.listen(1)
    -
    -
      -
    • the argument to listen is the backlog
    • -
    • the backlog is the maximum number of connections that the socket will queue
    • -
    • once the limit is reached, the socket refuses new connections
    • -
    -
    -
    -

    Accept Incoming Messages

    -

    When a socket is listening, it can receive incoming messages:

    -
    ->>> connection, client_address = server_socket.accept()
    -... # note that nothing happens here until a client sends something
    ->>> connection.recv(16)
    -
    -
      -
    • the connection returned by a call to accept is a new socket
    • -
    • you do not need to know what port it uses, this is managed
    • -
    • the client_address is a two-tuple of IP Address and Port (very familiar)
    • -
    • backlog represents the maximum number of connection sockets that a -server can spin off
    • -
    • close a connection socket to accept a new connection once the max is -reached
    • -
    -
    -
    -

    Send a Reply

    -

    You can use the connection socket spun off by accept to send a reply -back to the client socket:

    -
    ->>> connection.sendall("messasge received")
    -
    -
    -
    -

    Clean Up

    -

    Once a transaction between the client and server is complete, the -connection socket should be closed so that new connections can be made:

    -
    ->>> connection.close()
    -
    -
    -
    -

    Putting it all together

    Open a second terminal next to your first, and let's try out the full connection:

    img/socket_interaction.png
    -
    -

    Lab Time

    -

    For our class lab time today, let's explore what we've learned. First, we'll -need the samples:

    - -
    -
    -

    Lab Time

    -

    In the repository you've just cloned, you'll find a directory called -assignments. This is where all our class lab and take-home assignments -will be located.

    -
      -
    • Find assignments/week01/lab
    • -
    • Open echo_server.py and echo_client.py
    • -
    • Using what you've learned today, complete the server and client by replacing -comments with real code
    • -
    • Start the server on your local machine, run the client and send some messages
    • -
    • If you complete that, then copy the server to your Blue Box VM. Run it -remotely and use the client to send it some messages
    • -
    • What do you have to change to make that work?
    • -
    -
    -
    -

    Assignment

    -

    Using what you've learned, expand on the client/server relationship. Create a -server which accepts two numbers, adds them, and returns the result to the -client.

    -
    -
    -

    Submitting the Assignment

    -
      -
    • Add sum_server.py and sum_client.py to the -assignments/week01/athome/ directory of your fork of the class -repository.
    • -
    • When you are satisfied with your code, make a pull request
    • -
    • I should be able to run the server and client scripts on my local machine -and get results.
    • -
    • For bonus points, set the server running on your VM. I should be able to run -your client script from my local machine and get the expected reply.
    • -
    • Due by Sunday morning if you want me to review it :)
    • -
    -
    diff --git a/presentations/week02.html b/presentations/week02.html index cae8584f..c466a585 100644 --- a/presentations/week02.html +++ b/presentations/week02.html @@ -38,937 +38,7 @@

    Internet Programming with Python

    -img/protocol.png -

    Week 2: Web Protocols

    -

    Wherein we learn about the languages that the internet speaks and how to -choose the right one for our message

    - -
    -

    But First

    -

    Review from the Assignment

    -
    -
    -

    Clean Up After Yourself

    -

    very few of you closed your server socket before exiting the server script:

    -
    -server = socket.socket()
    -# set up
    -try:
    -    while True
    -        # do server stuff
    -except KeyboardInterrupt:
    -    server.close()
    -    sys.exit()
    -
    -
    -
    -

    Use Module Constants

    -

    Constants are provided to help us 'do the right thing' without needing to -remember what the right thing is, exactly. So, instead of:

    -
    -socket.socket(2,1,0)
    -
    -

    use:

    -
    -socket.socket(socket.AF_INET,
    -              socket.SOCK_STREAM,
    -              socket.IPPROTO_IP)
    -
    -
    -
    -

    Interaction Can Be Good

    -
    -try:
    -    # generate two numbers
    -    while True:
    -        try:
    -            number_one = int(raw_input("Enter the first number in the sum: "))
    -            break
    -        except ValueError:
    -            print "Oops!  That was no valid number.  Try again..."
    -
    -    while True:
    -        try:
    -            number_two = int(raw_input("Enter the second number in the sum: "))
    -            break
    -        except ValueError:
    -            print "Oops!  That was no valid number.  Try again..."
    -
    -
    -
    -

    A Tricksy Bug

    -
    -...
    -while 1:
    -    conn, addr = server_socket.accept()
    -    print "Connection Established."
    -    # Keep connection alive.
    -    while 1:
    -        data = conn.recv(4096)
    -        listIn = literal_eval(data)
    -        print 'Values: %s, Type: %s' % (listIn, type(listIn))
    -        conn.sendall('Sum: %s\n' % sum(listIn))
    -
    -conn.close()
    -server_socket.close()
    -
    -
    -
    -

    The Result

    -

    Client: prints correct value

    -

    Server: prints Values: [0, 1, 2, 3], Type: <type 'list'>

    -

    Server:

    -
    -Traceback (most recent call last):
    -  File "training.python_web/assignments/week01/athome/number_server.py", line 34, in <module>
    -    listIn = literal_eval(data)
    -  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/ast.py", line 49, in literal_eval
    -    node_or_string = parse(node_or_string, mode='eval')
    -  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/ast.py", line 37, in parse
    -    return compile(expr, filename, mode, PyCF_ONLY_AST)
    -  File "<unknown>", line 0
    -
    -    ^
    -SyntaxError: unexpected EOF while parsing
    -
    -
    -
    -

    Screen

    -

    For running scripts on a *nix server and keeping them running, even after you -disconnect:

    -
    -$ screen
    -$ start_process
    -<ctrl-a ctrl-d>
    -Screen Detached
    -$ screen -ls # lists your screens
    -$ screen -r connects to only running screen
    -
    -
    -
    -

    And Second

    -

    Questions from the Reading?

    -
    -
    -

    And Third

    -

    Dan Explains Git!!!

    -
    -
    -
    -

    What is a Protocol?

    -

    a set of rules or conventions

    -

    governing communications

    -
    -
    -

    Protocols IRL

    -

    Life has lots of sets of rules for how to do things.

    -
      -
    • What do you do on a first date?
    • -
    • What do you do in a job interview?
    • -
    • What do (and don't) you talk about at a dinner party?
    • -
    • ...?
    • -
    -
    - -
    -

    Protocols In Computers

    -

    Digital life has lots of rules too:

    -
      -
    • how to identify yourself
    • -
    • how to find a conversation partner
    • -
    • how to ask for information
    • -
    • how to provide answers
    • -
    • how to say goodbye
    • -
    -
    -
    -

    Real Protocol Examples

    -

    What does this look like in practice?

    -
    -
    -

    Real Protocol Examples

    - -
    -
    -

    What does SMTP look like?

    -

    SMTP (Identify yourself and find a partner):

    -
    -S: 220 foo.com Simple Mail Transfer Service Ready
    -C: EHLO bar.com
    -S: 250-foo.com greets bar.com
    -S: 250-8BITMIME
    -S: 250-SIZE
    -S: 250-DSN
    -S: 250 HELP
    -
    -
    -
    -

    What does SMTP look like?

    -

    SMTP (Ask for information, provide answers):

    -
    -C: MAIL FROM:<Smith@bar.com>
    -S: 250 OK
    -C: RCPT TO:<Jones@foo.com>
    -S: 250 OK
    -C: RCPT TO:<Green@foo.com>
    -S: 550 No such user here
    -C: DATA
    -S: 354 Start mail input; end with <CRLF>.<CRLF>
    -C: Blah blah blah...
    -C: ...etc. etc. etc.
    -C: .
    -S: 250 OK
    -
    -
    -
    -

    What does SMTP look like?

    -

    SMTP (Say goodbye):

    -
    -C: QUIT
    -S: 221 foo.com Service closing transmission channel
    -
    -
    -
    -

    What does POP3 look like?

    -

    POP3 (Identify yourself and find a partner):

    -
    -C: <client connects to service port 110>
    -S: +OK POP3 server ready <1896.6971@mailgate.dobbs.org>
    -C: USER bob
    -S: +OK bob
    -C: PASS redqueen
    -S: +OK bob's maildrop has 2 messages (320 octets)
    -
    -
    -
    -

    What does POP3 look like?

    -

    POP3 (Ask for information, provide answers):

    -
    -C: STAT
    -S: +OK 2 320
    -C: LIST
    -S: +OK 2 messages (320 octets)
    -S: 1 120
    -S: 2 200
    -S: .
    -
    -
    -
    -

    What does POP3 look like?

    -

    POP3 (Ask for information, provide answers):

    -
    -C: RETR 1
    -S: +OK 120 octets
    -S: <the POP3 server sends the text of message 1>
    -S: .
    -C: DELE 1
    -S: +OK message 1 deleted
    -C: RETR 2
    -S: +OK 200 octets
    -S: <the POP3 server sends the text of message 2>
    -S: .
    -C: DELE 2
    -S: +OK message 2 deleted
    -
    -
    -
    -

    What does POP3 look like?

    -

    POP3 (Say goodbye):

    -
    -C: QUIT
    -S: +OK dewey POP3 server signing off (maildrop empty)
    -C: <client hangs up>
    -
    -
    -
    -

    What does IMAP look like?

    -

    IMAP (Identify yourself and find a partner):

    -
    -C: <client connects to service port 143>
    -S: * OK example.com IMAP4rev1 v12.264 server ready
    -C: A0001 USER "frobozz" "xyzzy"
    -S: * OK User frobozz authenticated
    -
    -
    -
    -

    What does IMAP look like?

    -

    IMAP (Ask for information, provide answers [connect to an inbox]):

    -
    -C: A0002 SELECT INBOX
    -S: * 1 EXISTS
    -S: * 1 RECENT
    -S: * FLAGS (\Answered \Flagged \Deleted \Draft \Seen)
    -S: * OK [UNSEEN 1] first unseen message in /var/spool/mail/esr
    -S: A0002 OK [READ-WRITE] SELECT completed
    -
    -
    -
    -

    What does IMAP look like?

    -

    IMAP (Ask for information, provide answers [Get message sizes]):

    -
    -C: A0003 FETCH 1 RFC822.SIZE
    -S: * 1 FETCH (RFC822.SIZE 2545)
    -S: A0003 OK FETCH completed
    -
    -
    -
    -

    What does IMAP look like?

    -

    IMAP (Ask for information, provide answers [Get first message header]):

    -
    -C: A0004 FETCH 1 BODY[HEADER]
    -S: * 1 FETCH (RFC822.HEADER {1425}
    -<server sends 1425 octets of message payload>
    -S: )
    -S: A0004 OK FETCH completed
    -
    -
    -
    -

    What does IMAP look like?

    -

    IMAP (Ask for information, provide answers [Get first message body]):

    -
    -C: A0005 FETCH 1 BODY[TEXT]
    -S: * 1 FETCH (BODY[TEXT] {1120}
    -<server sends 1120 octets of message payload>
    -S: )
    -S: * 1 FETCH (FLAGS (\Recent \Seen))
    -S: A0005 OK FETCH completed
    -
    -
    -
    -

    What does IMAP look like?

    -

    IMAP (Say goodbye):

    -
    -C: A0006 LOGOUT
    -S: * BYE example.com IMAP4rev1 server terminating connection
    -S: A0006 OK LOGOUT completed
    -C: <client hangs up>
    -
    -
    -
    -

    Notice Any Difference?

    -

    POP3 Commands:

    -
      -
    • STAT
    • -
    • LIST
    • -
    • RETR 1
    • -
    • DELE 1
    • -
    • QUIT
    • -
    -
    -
    -

    Notice Any Difference?

    -

    IMAP Commands:

    -
      -
    • A0001 USER "frobozz" "xyzzy"
    • -
    • A0002 SELECT INBOX
    • -
    • A0003 FETCH 1 RFC822.SIZE
    • -
    • A0004 FETCH 1 BODY[HEADER]
    • -
    • A0005 FETCH 1 BODY[TEXT]
    • -
    • A0006 LOGOUT
    • -
    -
    -
    -

    Notice Any Difference?

    -

    Sequence Identifiers allow the client to send commands without waiting for -responses.

    -
    -
    -

    Re-ordered IMAP Interaction

    -
    -C: A0001 USER "frobozz" "xyzzy"
    -S: * OK User frobozz authenticated
    -C: A0002 SELECT INBOX
    -S: ...
    -S: A0002 OK [READ-WRITE] SELECT completed
    -C: A0003 FETCH 1 RFC822.SIZE
    -C: A0004 FETCH 1 BODY[HEADER]
    -C: A0005 FETCH 1 BODY[TEXT]
    -S: * 1 FETCH (RFC822.SIZE 2545)
    -S: A0003 OK FETCH completed
    -...
    -...
    -C: A0006 LOGOUT
    -...
    -
    -
    -
    -

    Which Protocol do you Choose?

    -

    Stacking commands is more efficient, but would it work for POP3?

    -

    Why not?

    -
    -
    -

    What does HTTP look like?

    -

    HTTP (Ask for information):

    -
    -GET /index.html HTTP/1.1
    -Host: www.example.com
    -\r\n
    -
    -
    -
    -

    What does HTTP look like?

    -

    HTTP (Provide answers):

    -
    -HTTP/1.1 200 OK
    -Date: Mon, 23 May 2005 22:38:34 GMT
    -Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
    -Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
    -Etag: "3f80f-1b6-3e1cb03b"
    -Accept-Ranges:  none
    -Content-Length: 438
    -Connection: close
    -Content-Type: text/html; charset=UTF-8
    -\r\n
    -<438 bytes of content>
    -
    -
    -
    -

    Protocols in Python

    -

    Let's try this out for ourselves!

    -
    -
    -

    Protocols in Python

    -

    Fire up a Python interpreter

    -
    -
    -

    SMTP in Python

    -

    Start by importing smtplib (part of the standard library):

    -
    ->>> import smtplib
    ->>> dir(smtplib)
    -['CRLF', 'LMTP', 'LMTP_PORT', 'OLDSTYLE_AUTH',
    - 'SMTP', 'SMTPAuthenticationError', 'SMTPConnectError',
    - 'SMTPDataError', 'SMTPException', 'SMTPHeloError',
    - 'SMTPRecipientsRefused', 'SMTPResponseException',
    - 'SMTPSenderRefused', 'SMTPServerDisconnected',
    - 'SMTP_PORT', 'SMTP_SSL', 'SMTP_SSL_PORT', 'SSLFakeFile',
    - '__all__', '__builtins__', '__doc__', '__file__',
    - '__name__', '__package__', '_have_ssl', 'base64', 'email',
    - 'encode_base64', 'hmac', 'quoteaddr', 'quotedata', 're',
    - 'socket', 'ssl', 'stderr']
    -
    -
    -
    -

    SMTP in Python

    -

    Let's make a connection to a server. We'll use one I've set up in advance to -avoid needing to create one of our own:

    -
    ->>> server = smtplib.SMTP('smtp.webfaction.com', 587)
    ->>> server.set_debuglevel(True) # to see interaction
    ->>> server.ehlo()
    -send: 'ehlo heffalump.local\r\n'
    -reply: '250-smtp.webfaction.com\r\n'
    -reply: '250-PIPELINING\r\n'
    -reply: '250-SIZE 20971520\r\n'
    -reply: '250-VRFY\r\n'
    -reply: '250-ETRN\r\n'
    -reply: '250-STARTTLS\r\n'
    -...
    -
    -
    -
    -

    SMTP in Python

    -

    Does our server support TLS (secure transmissions?):

    -
    ->>> server.has_extn('STARTTLS')
    -True
    -
    -

    What other extensions are available?:

    -
    ->>> server.esmpt_features.keys()
    -['enhancedstatuscodes', 'etrn', 'starttls',
    - 'auth', 'dsn', '8bitmime', 'pipelining',
    - 'size', 'vrfy']
    -
    -
    -
    -

    SMTP in Python

    -

    Some SMTP servers require authentication. This is one such server. Before -passing our username and password, though, we should turn on TLS for the sake -of security:

    -
    ->>> server.starttls()
    ->>> server.ehlo() # re-identify after TLS begins
    ->>> server.login(username, password)
    -
    -
    -
    -

    SMTP in Python

    -

    Let's prepare a message to be sent to our server:

    -
    ->>> from_addr = "YOUR NAME <fill in this address>"
    ->>> to_addrs = "demo@crisewing.com"
    ->>> subject = "this is a test"
    ->>> message = "a message from python smtplib"
    -
    -
    -
    -

    SMTP in Python

    -

    Email sent via SMTP requires certain formatting. It's part of the Protocol. In -particular, note that the headers are separated by CRLF sequences. This is -very common across internet protocols:

    -
    ->>> template = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n"
    ->>> headers = template % (from_addr, to_addrs, subject)
    -
    -
    -
    -

    SMTP in Python

    -

    A message is the headers, plus the body of the message:

    -
    ->>> email_body = headers + message
    -
    -

    Sending the email is accomplished by calling the sendmail method on our -server object, after which we should close the connection:

    -
    ->>> server.sendmail(from_addr, [to_addrs, ], email_body)
    ->>> server.close()
    -
    -
    -
    -

    Putting it all Together

    -
    ->>> from_addr = "YOUR NAME <fill in this address>"
    ->>> to_addrs = "demo@crisewing.com"
    ->>> subject = "this is a test"
    ->>> message = "a message from python smtplib"
    ->>> template = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n"
    ->>> headers = template % (from_addr, to_addrs, subject)
    -
    -
    -
    -

    Putting it all Together

    -
    ->>> server = smtplib.SMTP('smtp.webfaction.com', 587)
    ->>> server.set_debuglevel(True)
    ->>> server.ehlo()
    ->>> server.starttls()
    ->>> server.ehlo() # re-identify after TLS begins
    ->>> server.login(username, password)
    ->>> email_body = headers + message
    ->>> server.sendmail(from_addr, [to_addrs, ], email_body)
    ->>> server.close()
    -
    -
    -
    -

    Python Means Batteries Included

    -

    So in fact we have a module in the standard library for email support:

    -
    ->>> import email.utils
    ->>> from email.mime.text import MIMEText
    ->>> from_addr = "addr@host.com"
    ->>> to_addrs = "other@another.com"
    ->>> msg = MIMEText("This is an email message")
    ->>> msg['From'] = email.utils.formataddr(("Name", from_addr))
    ->>> msg['To'] = email.utils.formataddr(("Name", to_addrs))
    ->>> msg['Subject'] = "Simple Test"
    ->>> server.sendmail(from_addr, [to_addrs, ], msg.as_string())
    -
    -
    -
    -

    IMAP in Python

    -

    Let's read that email we just sent

    -
    -
    -

    IMAP in Python

    -

    Again, begin by importing the module from the Python Standard Library:

    -
    ->>> import imaplib
    ->>> dir(imaplib)
    -['AllowedVersions', 'CRLF', 'Commands',
    - 'Continuation', 'Debug', 'Flags', 'IMAP4',
    - 'IMAP4_PORT', 'IMAP4_SSL', 'IMAP4_SSL_PORT',
    - 'IMAP4_stream', 'Int2AP', 'InternalDate',
    - 'Internaldate2tuple', 'Literal', 'MapCRLF',
    - 'Mon2num', 'ParseFlags', 'Response_code',
    - 'Time2Internaldate', 'Untagged_response',
    - 'Untagged_status', '_Authenticator', ...]
    -
    -
    -
    -

    IMAP in Python

    -

    We set up a client object. WebFaction requires SSL for connecting to IMAP -servers, so let's initialize an IMAP4_SSL client and authenticate:

    -
    ->>> conn = imaplib.IMAP4_SSL('mail.webfaction.com')
    -  57:04.83 imaplib version 2.58
    -  57:04.83 new IMAP4 connection, tag=FNHG
    ->>> conn.login(username, password)
    -('OK', ['Logged in.'])
    -
    -
    -
    -

    IMAP in Python

    -

    Let's set up debugging here too, so that we can see the communication back and -forth between client and server:

    -
    ->>> conn.debug = 4 # >3 prints all messages
    -
    -

    We can start by listing the mailboxes we have on the server:

    -
    ->>> conn.list()
    -  00:41.91 > FNHG3 LIST "" *
    -  00:41.99 < * LIST (\HasNoChildren) "." "INBOX"
    -  00:41.99 < FNHG3 OK List completed.
    -('OK', ['(\\HasNoChildren) "." "INBOX"'])
    -
    -
    -
    -

    IMAP in Python

    -

    We can find out about the mail on our server. We do this by querying for -status. IMAP provides a few different status values, let's ask for them -all:

    -
    ->>> vals = '(MESSAGES RECENT UIDNEXT'
    ->>> vals += ' UIDVALIDITY UNSEEN)'
    ->>> conn.status('INBOX', vals)
    -  12:03.91 > FNHG4 STATUS INBOX (MESSAGES RECENT UIDNEXT UIDVALIDITY UNSEEN)
    -  12:04.01 < * STATUS "INBOX" (MESSAGES 2 RECENT 0 UIDNEXT 3 UIDVALIDITY 1357449499 UNSEEN 1)
    -  12:04.01 < FNHG4 OK Status completed.
    -('OK', ['"INBOX" (MESSAGES 2 RECENT 0
    -                  UIDNEXT 3 UIDVALIDITY 1357449499
    -                  UNSEEN 1)'])
    -
    -
    -
    -

    IMAP in Python

    -

    To interact with our email, we must select a mailbox from the list we received -earlier:

    -
    ->>> conn.select('INBOX')
    -  00:00.47 > FNHG2 SELECT INBOX
    -  00:00.56 < * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
    -  00:00.56 < * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
    -  00:00.56 < * 2 EXISTS
    -  00:00.57 < * 0 RECENT
    -  00:00.57 < * OK [UNSEEN 2] First unseen.
    -  00:00.57 < * OK [UIDVALIDITY 1357449499] UIDs valid
    -  00:00.57 < * OK [UIDNEXT 3] Predicted next UID
    -  00:00.57 < FNHG2 OK [READ-WRITE] Select completed.
    -('OK', ['2'])
    -
    -
    -
    -

    IMAP in Python

    -

    We can search our selected mailbox for messages matching one or more criteria. -The return value is a string list of the UIDs of messages that match our -search:

    -
    ->>> conn.search(None, '(FROM "IPIP")')
    -  18:25.41 > FNHG5 SEARCH (FROM "IPIP")
    -  18:25.54 < * SEARCH 1 2
    -  18:25.54 < FNHG5 OK Search completed.
    -('OK', ['1 2'])
    ->>>
    -
    -
    -
    -

    IMAP in Python

    -

    Once we've found a message we want to look at, we can use the fetch -command to read it from the server. IMAP allows fetching each part of -a message independently:

    -
    ->>> conn.fetch('2', '(BODY[HEADER])')
    -...
    ->>> conn.fetch('2', '(BODY[TEXT])')
    -...
    ->>> conn.fetch('2', '(FLAGS)')
    -
    -
    -
    -

    IMAP in Python

    -

    It is even possible to download an entire message in raw format, and load that -into a python email message object:

    -
    ->>> import email
    ->>> typ, data = conn.fetch('2', '(RFC822)')
    -  28:08.40 > FNHG8 FETCH 2 (RFC822)
    -  ...
    ->>> for part in data:
    -...   if isinstance(part, tuple):
    -...     msg = email.message_from_string(part[1])
    -...
    ->>>
    -
    -
    -
    -

    IMAP in Python

    -

    Once we have that, we can play with the resulting email object:

    -
    ->>> msg['to']
    -'demo@crisewing.com'
    ->>> print msg.get_payload()
    -This is an email message
    -
    -
    -
    -

    IMAP in Python

    -

    Neat, huh?

    -
    -
    -

    What Have We Learned?

    -
      -
    • Protocols are just a set of rules for how to communicate

      -
    • -
    • A given protocol has a set of commands it knows

      -
    • -
    • If we properly format requests to a server, we can get answers

      -
    • -
    • Python supports a number of these protocols

      -
      -
        -
      • So we don't have to remember how to format the commands ourselves
      • -
      -
        -
      • But in every case we've seen so far, we could do the same thing with a -socket and some strings
      • -
      -
      -
    • -
    -
    -
    -

    HTTP

    -

    HTTP is no different

    -
    -
    -

    HTTP

    -

    We are concerned with two things in HTTP:

    -
      -
    • Requests (Asking for information)
    • -
    • Responses (Providing answers)
    • -
    -
    -
    -

    HTTP Req/Resp Format

    -

    Both share a common basic format:

    -
      -
    • Line separators are <CRLF>
    • -
    • An required initial line
    • -
    • A (mostly) optional set of headers, one per line
    • -
    • A blank line
    • -
    • An optional body
    • -
    -

    "Be strict in what you send and tolerant in what you receive"

    -
    -
    -

    HTTP Requests

    -

    In HTTP 1.0, the only required line in an HTTP request is this:

    -
    -GET /path/to/index.html HTTP/1.0
    -<CRLF>
    -
    -

    As virtual hosting grew more common, that was not enough, so HTTP 1.1 adds a -single required header, Host:

    -
    -GET /path/to/index.html HTTP/1.1
    -Host: www.mysite1.com:80
    -<CRLF>
    -
    -
    -
    -

    HTTP Verbs

    -

    GET /path/to/index.html HTTP/1.1

    -
      -
    • Every HTTP request must start with a verb

      -
    • -
    • There are four main HTTP verbs:

      -
      -
        -
      • GET
      • -
      • POST
      • -
      • PUT
      • -
      • DELETE
      • -
      -
      -
    • -
    -
      -
    • There are others, notably HEAD, but you won't see them too much
    • -
    -
    -
    -

    HTTP Verbs

    -

    These four verbs are mapped to the four basic steps of a CRUD content management -cycle:

    -
      -
    • POST = Create
    • -
    • GET = Read
    • -
    • PUT = Update
    • -
    • DELETE = Delete
    • -
    -
    -
    -

    Verbs: Safe <--> Unsafe

    -

    HTTP verbs can be categorized as safe or unsafe, based on whether they -might change something on the server:

    -
      -
    • -
      Safe HTTP Verbs
      -
        -
      • GET
      • -
      -
      -
      -
    • -
    • -
      Unsafe HTTP Verbs
      -
        -
      • POST
      • -
      • PUT
      • -
      • DELETE
      • -
      -
      -
      -
    • -
    -

    This is a normative distinction, which is to say be careful

    -
    -
    -

    Verbs: Idempoent <--> ???

    -

    HTTP verbs can be categorized as idempotent, based on whether a given -request will always have the same result:

    -
      -
    • -
      Idempotent HTTP Verbs
      -
        -
      • GET
      • -
      • PUT
      • -
      • DELETE
      • -
      -
      -
      -
    • -
    • -
      Non-Idempotent HTTP Verbs
      -
        -
      • POST
      • -
      -
      -
      -
    • -
    -

    Again, normative. The developer is responsible for ensuring that it is true.

    -
    -
    -

    HTTP Requests: URI

    -

    GET /path/to/index.html HTTP/1.1

    - -
    -
    -

    HTTP Responses

    -

    In both HTTP 1.0 and 1.1, a proper response consists of an intial line, -followed by optional headers, a single blank line, and then optionally a -response body:

    -
    -HTTP/1.1 200 OK
    -Content-Type: text/plain
    -<CRLF>
    -this is a pretty minimal response
    -
    -
    -
    -

    HTTP Response Codes

    -

    HTTP/1.1 200 OK

    -

    All HTTP responses must include a response code indicating the outcome of -the request.

    -
      -
    • 1xx (HTTP 1.1 only) - Informational message
    • -
    • 2xx - Success of some kind
    • -
    • 3xx - Redirection of some kind
    • -
    • 4xx - Client Error of some kind
    • -
    • 5xx - Server Error of some kind
    • -
    -

    The text bit makes the code more human-readable

    -
    -
    -

    Common Response Codes

    -

    There are certain HTTP response codes you are likely to see (and use) most -often:

    -
      -
    • 200 OK - Everything is good
    • -
    • 301 Moved Permanently - You should update your link
    • -
    • 304 Not Modified - You should load this from cache
    • -
    • 404 Not Found - You've asked for something that doesn't exist
    • -
    • 500 Internal Server Error - Something bad happened
    • -
    -

    Do not be afraid to use other, less common codes in building good RESTful -apps. There are a lot of them for a reason. See -http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

    -
    -
    -

    HTTP Headers

    -

    Both requests and responses can contain headers of the form Name: Value

    -
      -
    • HTTP 1.0 has 16, 1.1 has 46
    • -
    • Any number of spaces or tabs may separate the name from the value
    • -
    • If a header line starts with spaces or tabs, it is considered part of the -value for the previous header
    • -
    • Header names are not case-sensitive, but values may be
    • -
    -

    read more about HTTP headers: http://www.cs.tut.fi/~jkorpela/http.html

    -
    -
    -

    Content-Type Header

    -

    A very common header used in HTTP responses is Content-Type. It tells the -client what to expect.

    -
      -
    • uses mime-type (Multi-purpose Internet Mail Extensions)
    • -
    • foo.jpeg - Content-Type: image/jpeg
    • -
    • foo.png - Content-Type: image/png
    • -
    • bar.txt - Content-Type: text/plain
    • -
    • baz.html - Content-Type: text/html
    • -
    -

    There are many mime-type identifiers: -http://www.webmaster-toolkit.com/mime-types.shtml

    -
    -
    -

    HTTP Debugging

    -

    When working on applications, it's nice to be able to see all this going back -and forth. There are several apps that can help with this:

    - -

    These tools can show you both request and response, headers and all. Very -useful.

    Lab Time

    diff --git a/presentations/week03.html b/presentations/week03.html index 5396b8f6..493de3f2 100644 --- a/presentations/week03.html +++ b/presentations/week03.html @@ -38,917 +38,8 @@

    Internet Programming with Python

    -img/granny_mashup.png -

    Week 3: Scraping, APIs and Mashups

    -

    Wherein we learn how to make order from the chaos of the wild internet.

    -

    image: Paul Downey http://www.flickr.com/photos/psd/492139935/ - CC-BY

    +

    blah blah blah

    -

    -
    -

    But First

    -

    Review from the Assignment

    -
    -
    -

    And Second

    -

    Questions from the Reading?

    -
    -
    -

    And Now...

    -

    HTML

    -
    -
    -

    Ideally

    -
    -<!DOCTYPE html>
    -<html>
    -  <head>
    -  </head>
    -  <body>
    -    <p>A nice clean paragraph</p>
    -    <p>And another nice clean paragraph</p>
    -  </body>
    -</html>
    -
    -
    -
    -

    Yeah, Right

    -

    Is it ever actually like that?

    -
    -
    -

    HTML... IRL

    -
    -<html>
    - <form>
    -  <table>
    -   <td><input name="input1">Row 1 cell 1
    -   <tr><td>Row 2 cell 1
    -  </form>
    -  <td>Row 2 cell 2<br>This</br> sure is a long cell
    - </body>
    -</html>
    -
    -
    -
    -

    FFFFFFFFFUUUUUUUUUUUUU

    -img/scream.jpg -

    Photo by Matthew via Flickr (http://www.flickr.com/photos/purplemattfish/3918004964/) - CC-BY-NC-ND

    -
    -
    -

    The Law of The Internet

    -

    "Be strict in what you send and tolerant in what you receive"

    -
    -
    -

    But What If...

    -

    You have some information you want to get from online.

    -

    You really want to organize this information in some interesting way

    -

    You really really don't want to spend the next three weeks cutting and -pasting

    -
    -
    -

    Web Scraping

    -

    Let Python do the job for you. Fire up your interpreter!

    -
    -
    -

    First Steps

    -

    First, you need to get a web page. Let's use this one (a list of recent -blog posts about Django and PostgreSQL):

    -

    http://crisewing.com/cover/++contextportlets++ContentWellPortlets.BelowPortletManager3/open-source-posts/full_feed

    -
    -
    -

    First Steps - Get Source

    -

    Let's start by grabbing the page we want. We use the Python Standard Library -urllib2 to handle this task (note that we've shortened the URL):

    -
    ->>> import urllib2
    ->>> page = urllib2.urlopen('http://tinyurl.com/osfeeds')
    ->>> page
    -<addinfourl at 4302170088 whose fp = <socket._fileobject object at 0x1005c6410>>
    ->>> page.code
    -200
    ->>> page.headers['content-type']
    -'text/html;charset=utf-8'
    ->>> page.headers['content-length']
    -'373447'
    -
    -
    -
    -

    First Steps - Read Source

    -

    We can take the page we just opened, and read it. The object is file-like, so -it supports standard file read operations:

    -
    ->>> html = page.read()
    ->>> len(html)
    -373447
    ->>> print html
    -
    -<!DOCTYPE html PUBLIC
    -  "-//W3C//DTD XHTML 1.0 Transitional//EN"
    -  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    -
    -<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
    -...
    -</html>
    -
    -
    -
    -

    Now What?

    -

    Goal: Sort the blog post titles and URLs into two lists, one for Django -and one for PostgreSQL

    -

    What tools do we have to do this job?

    -
      -
    • String Methods?
    • -
    • Regular Expressions?
    • -
    -
    -
    -

    Brief Interlude

    -

    "Some people, when confronted with a problem, think 'I know, I'll use regular -expressions.' Now they have two problems."

    -
    - -
    -

    But Really

    -

    So what do we use?

    -

    Special-purpose Parsers

    -

    Enter BeautifulSoup

    -
    -
    -

    Step Back for a Moment

    -

    This is going to take some preparation, so let's set aside our html page in a -way that will allow us to come back to it:

    -
    ->>> fh = open('bloglist.html', 'w')
    ->>> fh.write(html)
    ->>> fh.close()
    -
    -

    Now the page is saved to a file in your current working directory.

    -

    Quit your interpreter

    -
    -
    -

    Virtualenv

    -

    We are about to install a non-standard library.

    -
      -
    • As a real-world developer you need to do this a lot
    • -
    • As a web developer you need to install different versions of the same -library
    • -
    • For every non-standard library installed into a System Python, the gods kill -a kitten
    • -
    • Use Virtualenv...
    • -
    • Always
    • -
    -
    -
    -

    Getting Virtualenv

    -

    Three options for installing virtualenv (this is the exception to the above -rule):

    -
      -
    • pip install virtualenv
    • -
    • easy_install virtualenv
    • -
    -

    These both demand that you first install something else. If you haven't -already got pip or easy_install try this way instead:

    -
      -
    • download https://raw.github.com/pypa/virtualenv/master/virtualenv.py
    • -
    • remember where it goes. You'll need it
    • -
    -
    -
    -

    Creating a Virtualenv

    -

    Creating a new virtualenv is very very simple:

    -
    -$ python virtualenv.py [options] <ENV>
    -
    -

    <ENV> is just the name of the environment you want to create. It's arbitrary. -Let's make one for our BeautifulSoup install:

    -
    -$ python virtualenv.py --distribute soupenv
    -New python executable in soupenv/bin/python2.6
    -Also creating executable in soupenv/bin/python
    -Installing distribute........................
    -.............................................
    -...done.
    -
    -
    -
    -

    What Happened?

    -

    When you ran that file, a couple of things took place:

    -
      -
    • A new directory with your requested name was created
    • -
    • A new Python executable was created in <ENV>/bin (<ENV>/Scripts on Windows)
    • -
    • The new Python was cloned from the Python used to run the file
    • -
    • The new Python was isolated from any libraries installed in the old Python
    • -
    • Distribute (a newer, better setuptools) was installed so you have easy_install
    • -
    • Pip was installed so you have pip
    • -
    -

    Cool, eh? Learn more at http://www.virtualenv.org

    -
    -
    -

    Using Virtualenv

    -

    To install new libraries into a virtualenv, the easiest process is to first -activate the env:

    -
    -$ source soupenv/bin/activate
    -(soupenv)$ which python
    -/path/to/soupenv/bin/python
    -
    -

    Or, on Windows:

    -
    -> \path\to\soupenv\Scripts\activate
    -
    -

    If you use Powershell, read the note here: -http://www.virtualenv.org/en/latest/#activate-script

    -
    -
    -

    Install BeautifulSoup

    -

    Once the virtualenv is activated, you can simply use pip or easy_install to -install the libraries you want:

    -
    -(soupenv)$ pip install beautifulsoup4
    -
    -
    -
    -

    Choose a Parsing Engine

    -

    BeautifulSoup is built to use the Python HTMLParser.

    -
      -
    • Batteries Included. It's already there
    • -
    • It kinda sucks, especially before Python 2.7.3
    • -
    -

    BeautifulSoup also supports using other parsers. Let's install one. There are -two decent choices: lxml and html5lib.

    -

    lxml is better, but harder to install. Let's use html5lib today.

    -
    -
    -

    Install a Parsing Engine

    -

    Again, this is pretty simple:

    -
    -(soupenv)$ pip install html5lib
    -
    -

    Once that is installed, BeautifulSoup will choose it instead of the standard -library module.

    -
    -
    -

    Parsing HTML

    -

    Okay, we're all set here. Let's load up our HTML page and get ready to scrape -it:

    -
    -(soupenv)$ python
    ->>> fh = open('bloglist.html', 'r')
    ->>> from bs4 import BeautifulSoup
    ->>> parsed = BeautifulSoup(fh)
    ->>>
    -
    -

    And that's it. The document is now parsed and ready to scrape.

    -
    -
    -

    Scraping HTML

    -

    The next step is to figure out what it is from the HTML page that you want to -scrape.

    -

    Goal: Sort the blog post titles and URLs into two lists, one for Django -and one for PostgreSQL

    -

    What tools do we have to allow us to look at the source and find our targets?

    -
    -
    -

    HTML Inspection Demo

    -

    We can use the developer tools that come in Safari, Chrome and IE, or use the -Firebug extension to FireFox.

    -

    So, we need to find <div> elements with the class feedEntry.

    -
    -
    -

    Searching Your Soup

    -

    BeautifulSoup has parsed our document

    -
      -
    • A parsed document acts like a tag
    • -
    • A tag can be searched using the find_all method
    • -
    • The find_all method searches the descendents of the tag on which it is -called.
    • -
    • The find_all method takes arguments which act as filters on the search -results
    • -
    -
    -
    like so:
    -

    -
    tag.find_all(name, attrs, recursive, text, limit, **kwargs)
    -
    -
    -
    -

    Searching by CSS Class

    -

    The items we are looking for are div tags which have the CSS class -feedEntry:

    -
    ->>> entries = parsed.find_all('div', class_='feedEntry')
    ->>> len(entries)
    -106
    -
    -
    -
    If you pass a simple string as the sole value to the attrs argument, that -string is treated as a CSS class:
    -

    -
    parsed.find_all('div', 'feedEntry')
    -
    -
    -
    -

    Find a Single Match

    -

    What bits of an entry have the details we need to meet our goals?

    -
      -
    • A tag also has a find method which returns only the first match
    • -
    • tag.find(name, attrs, recursive, text, **kwargs)
    • -
    • In each entry, the first <a> has title and URL
    • -
    • In each entry, the first <p> with the class discreet has the source -of the feed (Planet Django or Planet PostgreSQL)
    • -
    -
    -
    -

    Testing it out

    -
    -for e in entries:
    -    anchor = e.find('a')
    -    paragraph = e.find('p', 'discreet')
    -    title = anchor.text.strip()
    -    url = anchor.attrs['href']
    -    print title
    -    print url
    -    try:
    -        print paragraph.text.strip()
    -    except AttributeError:
    -        print 'Uncategorized'
    -    print
    -
    -

    Watch for unicode encoding errors, I don't get any, but you might.

    -
    -
    -

    Lab 1 - 20 mins

    -
      -
    • Write a function, take a BeautifulSoup object as the sole argument
    • -
    • find all the 'feedEntry' divs in the page
    • -
    • Get the title and url of the entry and put them in a dictionary
    • -
    • Categorize an entry as pgsql, django or other
    • -
    • It should return three lists of categorized entries
    • -
    -
    -
    Call it like so:
    -

    -
    -
    pgsql, django, other = my_function(parsed_page)
    -
    -
    -

    GO

    -
    -
    -

    Short Break

    -

    While you are taking a short break, you might take a moment to sign up for -the geocoding service we'll use later:

    -

    http://geoservices.tamu.edu/UserServices/Signup.aspx

    -

    You can also view your profile once you've signed up:

    -

    http://geoservices.tamu.edu/UserServices/Profile/ViewProfile.aspx

    -
    -
    -

    Another Approach

    -

    Scraping web pages is inherently brittle

    -

    The owner of the website updates their layout, your code breaks

    -

    But there is another way to get information from the web in a more normalized -fashion

    -

    Web Services

    -
    -
    -

    Web Services

    -

    "a software system designed to support interoperable machine-to-machine -interaction over a network" - W3C

    -
      -
    • provides a defined set of calls
    • -
    • returns structured data
    • -
    -
    -
    -

    Classifying Web Services

    -

    Web services can be classified in a couple of ways:

    -
      -
    • By how they are implemented (XML-RPC, SOAP, REST)
    • -
    • By what they return (XML, JSON)
    • -
    -
    -
    -

    Early Web Services

    -

    RSS is one of the earliest forms of Web Services

    - -

    A single web-based endpoint provides a dynamically updated listing of -content

    -

    Implemented in pure HTTP. Returns XML

    -

    Atom is a competing, but similar standard

    -
    -
    -

    RSS Document

    -
    -<?xml version="1.0" encoding="UTF-8" ?>
    -<rss version="2.0">
    -<channel>
    -  <title>RSS Title</title>
    -  <description>This is an example of an RSS feed</description>
    -  <link>http://www.someexamplerssdomain.com/main.html</link>
    -  <lastBuildDate>Mon, 06 Sep 2010 00:01:00 +0000 </lastBuildDate>
    -  <pubDate>Mon, 06 Sep 2009 16:45:00 +0000 </pubDate>
    -  <ttl>1800</ttl>
    -
    -  <item>
    -    <title>Example entry</title>
    -    <description>Here is some text containing an interesting description.</description>
    -    <link>http://www.wikipedia.org/</link>
    -    <guid>unique string per item</guid>
    -    <pubDate>Mon, 06 Sep 2009 16:45:00 +0000 </pubDate>
    -  </item>
    -  ...
    -</channel>
    -</rss>
    -
    -
    -
    -

    XML-RPC

    -

    If we can provide a single endpoint that returns a single data set (RSS), can -we also allow calling procedures at an endpoint?

    -

    We can! Enter XML-RPC (Remote Procedure Call)

    -
      -
    • Provides a set of defined procedures which can take arguments
    • -
    • Calls are made via HTTP GET, by passing an XML document
    • -
    • Returns from a call are sent to the client in XML
    • -
    -

    Easier to demonstrate than explain

    -
    -
    -

    XML-RPC Example - Server

    -

    xmlrpc_server.py:

    -
    -from SimpleXMLRPCServer import SimpleXMLRPCServer
    -
    -server = SimpleXMLRPCServer(('localhost', 50000))
    -
    -def multiply(a, b):
    -    return a * b
    -server.register_function(multiply)
    -
    -try:
    -    print "Use Ctrl-C to Exit"
    -    server.serve_forever()
    -except KeyboardInterrupt:
    -    print "Exiting"
    -
    -
    -
    -

    XML-RPC Example - Client

    -

    We can run a client from a terminal. First, open one terminal and run the -xmlrpc_server.py script:

    -
    -$ python xmlrcp_server.py
    -

    Then, open another terminal and start up python:

    -
    ->>> import xmlrpclib
    ->>> proxy = xmlrpclib.ServerProxy('http://localhost:50000', verbose=True)
    ->>> proxy.multiply(3, 24)
    -...
    -72
    -
    -
    -
    -

    XML-RPC Request

    -

    verbose=True allows us to see the request we sent:

    -
    -POST /RPC2 HTTP/1.0
    -Host: localhost:50000
    -User-Agent: xmlrpclib.py/1.0.1 (by www.pythonware.com)
    -Content-Type: text/xml
    -Content-Length: 192
    -
    -<?xml version='1.0'?>
    -<methodCall>
    - <methodName>multiply</methodName>
    - <params>
    -  <param>
    -   <value><int>3</int></value>
    -  </param>
    -  <param>
    -   <value><int>24</int></value>
    -  </param>
    - </params>
    -</methodCall>
    -
    -
    -
    -

    XML-RPC Response

    -

    and we can see the response, too:

    -
    -HTTP/1.0 200 OK
    -Server: BaseHTTP/0.3 Python/2.6.1
    -Date: Sun, 13 Jan 2013 03:38:00 GMT
    -Content-type: text/xml
    -Content-length: 121
    -
    -<?xml version='1.0'?>
    -<methodResponse>
    - <params>
    -  <param>
    -   <value><int>72</int></value>
    -  </param>
    - </params>
    -</methodResponse>
    -
    -
    -
    -

    More XML-RPC

    -

    Register an entire Python class as a service, exposing class methods:

    -
    -server.register_instance(MyClass())
    -
    -

    Keep an instance method private :

    -
    -class MyServiceClass(object):
    -    ...
    -    def public_method(self, arg1, arg2):
    -        """this method is public"""
    -        pass
    -
    -    def _private_method(self):
    -        """this method is private because it starts with '_'
    -        """
    -        pass
    -
    -
    -
    -

    XML-RPC Introspection

    -

    First, implement required methods on your service class:

    -
    -from SimpleXMLRPCServer import list_public_methods
    -
    -class MyServiceClass(object):
    -    ...
    -    def _listMethods(self):
    -        """custom logic for presenting method names to users
    -
    -        list_public_methods is a convenience function from the Python
    -        library, but you can make your own logic if you wish.
    -        """
    -        return list_public_methods(self)
    -
    -    def _methodHelp(self, method):
    -        """provide help text for an individual method
    -        """
    -        f = getattr(self, method)
    -        return f.__doc__
    -
    -
    -
    -

    XML-RPC Introspection

    -

    Then enable introspection via the server instance:

    -
    -server.register_introspection_functions()
    -
    -

    After this, a client proxy can call pre-defined methods to learn about what -your service offers:

    -
    ->>> for name in proxy.system.listMethods():
    -...     help = proxy.system.methodHelp(name)
    -...     print name
    -...     print "\t%s" % help
    -...
    -public_method
    -    this method is public
    -
    -
    -
    -

    Introspection Question

    -

    I told you when we added the _private_method that any method that any -method whose name starts with _ would be private.

    -

    But we also added a _listMethods method and a _methodHelp method and -those methods are listed when you run proxy.system.listMethods()

    -

    Why is this?

    -

    For a complete discussion of this, read this MOTW post

    -
    -
    -

    Beyond XML-RPC

    -
      -
    • XML-RPC allows introspection
    • -
    • XML-RPC forces you to introspect to get information
    • -
    • Wouldn't it be nice to get that automatically?
    • -
    • XML-RPC provides data types
    • -
    • XML-RPC provides only certain data types
    • -
    • Wouldn't it be nice to have an extensible system for types?
    • -
    • XML-RPC allows calling methods with parameters
    • -
    • XML-RPC only allows calling methods, nothing else
    • -
    • wouldn't it be nice to have contextual data as well?
    • -
    -

    Enter SOAP: Simple Object Access Protocol

    -
    -
    -

    SOAP

    -

    SOAP extends XML-RPC in a couple of useful ways:

    -
      -
    • It uses Web Services Description Language (WSDL) to provide meta-data about -an entire service in a machine-readable format (Automatic introspection)
    • -
    • It establishes a method for extending available data types using XML -namespaces
    • -
    • It provides a wrapper around method calls called the envelope, which -allows the inclusion of a header with system meta-data that can be used -by the application
    • -
    -
    -
    -

    SOAP in Python

    -

    There is no standard library module that supports SOAP directly.

    -
      -
    • The best-known and best-supported module available is Suds
    • -
    • The homepage is https://fedorahosted.org/suds/
    • -
    • It can be installed using easy_install or pip install
    • -
    -
    -
    -

    Install Suds

    -
      -
    • Quit your python interpreter if you have it running.
    • -
    • If you see (soupenv) at your command line prompt, cool.
    • -
    • If you do not, type source /path/to/soupenv/bin/activate
    • -
    • Windows folks: > \path\to\soupenv\Scripts\activate
    • -
    • Once activated: pip install suds
    • -
    -
    -
    -

    Creating a Suds Client

    -

    Suds allows us to create a SOAP client object. SOAP uses WSDL to define a -service. All we need to do to set this up in python is load the URL of the -WSDL for the service we want to use:

    -
    -(soupenv)$ python
    ->>> from suds.client import Client
    ->>> geo_client = Client('https://geoservices.tamu.edu/Services/Geocode/WebService/GeocoderService_V03_01.asmx?wsdl')
    ->>> geo_client
    -<suds.client.Client object at 0x10041fc10>
    -
    -
    -
    -

    Peeking at the Service

    -

    Suds allows us to visually scan the service. Simply print the client object to -see what the service has to offer:

    -
    ->>> print geo_client
    -
    -Suds ( https://fedorahosted.org/suds/ )  version: 0.4 GA  build: R699-20100913
    -
    -Service ( GeocoderService_V03_01 ) tns="https://geoservices.tamu.edu/"
    -   Prefixes (1)
    -      ns0 = "https://geoservices.tamu.edu/"
    -   Ports (2):
    -      (GeocoderService_V03_01Soap)
    -      Methods (4):
    -         ...
    -      Types (12):
    -         ...
    -
    -
    -
    -

    Debugging Suds

    -

    Suds uses python logging to deal with debug information, so if you want to see -what's going on under the hood, you configure it via the Python logging -module:

    -
    ->>> import logging
    ->>> logging.basicConfig(level=logging.INFO)
    ->>> logging.getLogger('suds.client').setLevel(logging.DEBUG)
    -
    -

    This will allow us to see the messages sent and received by our client.

    -
    -
    -

    Client Options

    -

    SOAP Servers can provide more than one service and each service might have -more than one port. Suds provides two ways to configure which service and -port you wish to use.

    -

    Via subscription:

    -
    -client.service['<service>']['<port>'].method(args)
    -
    -

    Or the way we will do it, via configuration:

    -
    -geo_client.set_options(service='GeocoderService_V03_01',
    -                       port='GeocoderService_V03_01Soap')
    -
    -
    -
    -

    Providing Arguments

    -

    Arguments to a method are set up as a dictionary. Although some may not be -required according to api documentation, it is safest to provide them all:

    -
    -apiKey = '<fill this in>'
    -args = {'apiKey': apiKey, }
    -args['streetAddress'] = '1325 4th Avenue'
    -args['city'] = 'Seattle'
    -args['state'] = 'WA'
    -args['zip'] = '98101'
    -args['version'] = 3.01
    -args['shouldReturnReferenceGeometry'] = True
    -args['shouldNotStoreTransactionDetails'] = True
    -args['shouldCalculateCensus'] = False
    -args['censusYear'] = "TwoThousandTen"
    -
    -
    -
    -

    Making the Call

    -

    Finally, once we've got the arguments all ready we can go ahead and make a call -to the server:

    -
    ->>> res = geo_client.service.GeocodeAddressNonParsed(**args)
    -DEBUG:suds.client:sending to
    -(https://geoservices.tamu.edu/Services/Geocode/WebService/GeocoderService_V03_01.asmx)
    -message:
    -...
    -
    -
    -
    -

    What does it look like?

    -
    -<?xml version="1.0" encoding="UTF-8"?>
    -<SOAP-ENV:Envelope xmlns:ns0="https://geoservices.tamu.edu/" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    -   <SOAP-ENV:Header/>
    -   <ns1:Body>
    -      <ns0:GeocodeAddressNonParsed>
    -         <ns0:streetAddress>1325 4th Avenue</ns0:streetAddress>
    -         <ns0:city>Seattle</ns0:city>
    -         <ns0:state>WA</ns0:state>
    -         <ns0:zip>98101</ns0:zip>
    -         <ns0:apiKey>a450a9181f85498598e21f8a39440e9a</ns0:apiKey>
    -         <ns0:version>3.01</ns0:version>
    -         <ns0:shouldCalculateCensus>false</ns0:shouldCalculateCensus>
    -         <ns0:censusYear>TwoThousandTen</ns0:censusYear>
    -         <ns0:shouldReturnReferenceGeometry>true</ns0:shouldReturnReferenceGeometry>
    -         <ns0:shouldNotStoreTransactionDetails>true</ns0:shouldNotStoreTransactionDetails>
    -      </ns0:GeocodeAddressNonParsed>
    -   </ns1:Body>
    -</SOAP-ENV:Envelope>
    -
    -
    -
    -

    And the Reply?

    -
    -<?xml version="1.0" encoding="utf-8"?>
    -<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    -  <soap:Body>
    -    <GeocodeAddressNonParsedResponse xmlns="https://geoservices.tamu.edu/">
    -      <GeocodeAddressNonParsedResult>
    -        <TransactionId>6ef9c110-994c-4142-93d5-a55173526b64</TransactionId>
    -        <Latitude>47.6084110119244</Latitude>
    -        <Longitude>-122.3351592971042</Longitude>
    -        <Version>3.01</Version>
    -        <Quality>QUALITY_ADDRESS_RANGE_INTERPOLATION</Quality>
    -        <MatchedLocationType>LOCATION_TYPE_STREET_ADDRESS</MatchedLocationType>
    -        <MatchType>Exact</MatchType>
    -        <FeatureMatchingResultCount>1</FeatureMatchingResultCount>
    -        ...
    -        <FArea>2910.69420560356</FArea>
    -        <FAreaType>Meters</FAreaType>
    -        <FGeometrySRID>4269</FGeometrySRID>
    -        <FGeometry>&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;LineString xmlns="http://www.opengis.net/gml"&gt;&lt;posList&gt;-122.334868 47.608226 -122.335777 47.609219&lt;/posList&gt;&lt;/LineString&gt;</FGeometry>
    -        ...
    -      </GeocodeAddressNonParsedResult>
    -    </GeocodeAddressNonParsedResponse>
    -  </soap:Body>
    -</soap:Envelope>
    -
    -
    -
    -

    And What of Our Result?

    -

    The WSDL we started with should provide type definitions for both data we send -and results we receive. The res symbol we bound to our result earlier -should now be an instance of a GeocodeAddressNonParsedResult. Lets see what -that looks like:

    -
    ->>> type(res)
    -<type 'instance'>
    ->>> dir(res)
    -['CensusTimeTaken', 'CensusYear', 'ErrorMessage', 'FArea',
    - 'FAreaType', 'FCity', 'FCounty', 'FCountySubRegion',
    - ...]
    ->>> res.Latitude, res.Longitude
    -(47.608411011924403, -122.3351592971042)
    -
    -
    -
    -

    A Word on Debugging

    -

    blerg

    -
      -
    • Messages sent to the server are long XML strings
    • -
    • Error messages are generally based on parsing errors in XML
    • -
    • These error messages can be quite cryptic:
    • -
    • "There is an error in XML document (1, 572). ---> The string '' is not a -valid Boolean value.'
    • -
    -

    Try this:

    -
    ->>> geo_client.last_sent().str().replace(" ","")[:573]
    -'...</ns0:version>\n<ns0:shouldCalculateCensus/>'
    -
    -
    -
    -

    Afterword

    -

    SOAP (and XML-RPC) have some problems:

    -
      -
    • XML is pretty damned inefficient as a data transfer medium
    • -
    • Why should I need to know method names?
    • -
    • If I can discover method names at all, I have to read a WSDL to do it?
    • -
    -

    Suds is the best we have, and it hasn't been updated since Sept. 2010.

    -
    -
    -

    If Not XML, Then What?

    -

    JSON

    -
    -
    -

    JSON

    -

    JavaScript Object Notation:

    -
      -
    • a lightweight data-interchange format
    • -
    • easy for humans to read and write
    • -
    • easy for machines to parse and generate
    • -
    -

    Based on Two Structures:

    -
      -
    • object: { string: value, ...}
    • -
    • array: [value, value, ]
    • -
    -

    pythonic, no?

    -
    -
    -

    JSON Data Types

    -

    JSON provides a few basic data types (see http://json.org/):

    -
      -
    • string: unicode, anything but ", \ and control characters
    • -
    • number: any number, but json does not use octal or hexidecimal
    • -
    • object, array (we've seen these above)
    • -
    • true
    • -
    • false
    • -
    • null
    • -
    -

    No date type? OMGWTF??!!1!1

    -
    -
    -

    Dates in JSON

    -

    Option 1 - Unix Epoch Time (number):

    -
    ->>> import time
    ->>> time.time()
    -1358212616.7691269
    -
    -

    Option 2 - ISO 8661 (string):

    -
    ->>> import datetime
    ->>> datetime.datetime.now().isoformat()
    -'2013-01-14T17:18:10.727240'
    -
    -
    -
    -

    JSON in Python

    -

    You can encode python to json, and decode json back to python:

    -
    ->>> import json
    ->>> array = [1,2,3]
    ->>> json.dumps(array)
    ->>> orig = {'foo': [1,2,3], 'bar': u'my resumé', 'baz': True}
    ->>> encoded = json.dumps(orig)
    ->>> encoded
    -'{"baz": true, "foo": [1, 2, 3], "bar": "my resum\\u00e9"}'
    ->>> decoded = json.loads(encoded)
    ->>> decoded == orig
    -True
    -
    -

    Customizing the encoder or decoder class allows for specialized serializations

    -
    -
    -

    JSON in Python

    -

    the json module also supports reading and writing to file-like objects via -json.dump(fp) and json.load(fp) (note the missing 's')

    -

    Remember duck-typing. Anything with a .write and a .read method is -file-like

    -

    Have we seen any network-related classes recently that behave that way?

    -
    -
    -

    What about WSDL?

    -

    SOAP was invented in part to provide completely machine-readable -interoperability.

    -

    Does that really work in real life?

    -

    Hardly ever

    -
    -
    -

    What about WSDL?

    -

    Another reason was to provide extensibility via custom types

    -

    Does that really work in real life?

    -

    Hardly ever

    -
    -
    -

    Why Do All The Work?

    -

    So, if neither of these goals is really achieved by using SOAP, why pay all -the overhead required to use the protocol?

    -

    Enter REST

    REST

    @@ -1106,6 +197,20 @@

    Submitting the Assignment

    output, let me know.
    +
    +

    What You Made

    +
      +
    • geographic locations of our Bluebox VMs
    • +
    • Visualization of the popularity of Facebook Friends' first names
    • +
    • Restaurants near your location with recent Health Inspection data
    • +
    • A Last-FM user's top artists, with lists of mixcloud mixes featuring each of +them
    • +
    • A list of Craigslist apartments with the nearest bars, pizza and sushi +places and their Yelp ratings
    • +
    • Geographic locations of the top 20 users returned for a twitter search, +along with other twitter data
    • +
    +
    diff --git a/presentations/week04.html b/presentations/week04.html index e7bb19fc..ad484061 100644 --- a/presentations/week04.html +++ b/presentations/week04.html @@ -5,7 +5,7 @@ -Internet Programming with Python + @@ -29,1020 +29,15 @@
    -

    Internet Programming with Python

    -img/gateway.jpg -

    Week 4: CGI, WSGI and Living Online

    -

    Wherein we discover the gateways to dynamic processes on a server.

    -

    image: The Wandering Angel http://www.flickr.com/photos/wandering_angel/1467802750/ - CC-BY

    -
    -
    -

    But First

    -

    Review from the Assignment

    -
    -
    -

    Save Memory on Loading

    -

    When you are loading data from an API, you can sometimes get more than you -bargained for. Both BeautifulSoup and the json library provide ways to help:

    -
    -page = urllib2.urlopen(url)
    -json_string = page.read()
    -json.loads(json_string)
    -
    -
    -page = urllib2.urlopen(url)
    -json.loads(page)
    -
    -

    The second form will buffer the input as it is read, and minimize memory -consumption. If you've got really large data sets this can be very good.

    -
    -
    -

    Protect Yourself From the Net

    -

    We learned in our last class that APIs can flake. Remember that. It's vital!

    -
    -page = urllib2.urlopen(url)
    -parsed = BeautifulSoup(page)
    -
    -
    -page = urllib2.urlopen(url)
    -if page.code == 200:
    -    parsed = BeautifulSoup(page)
    -else:
    -    raise SomeExceptionYouCanCatch
    -
    -

    What happens if your desired API is offline when a user comes to see your -page? Make sure you give yourself a way to be kind to your users. 500 Internal -Server Errors suck!

    -
    -
    -

    What You Made

    -
      -
    • geographic locations of our Bluebox VMs
    • -
    • Visualization of the popularity of Facebook Friends' first names
    • -
    • Restaurants near your location with recent Health Inspection data
    • -
    • A Last-FM user's top artists, with lists of mixcloud mixes featuring each of -them
    • -
    • A list of Craigslist apartments with the nearest bars, pizza and sushi -places and their Yelp ratings
    • -
    • Geographic locations of the top 20 users returned for a twitter search, -along with other twitter data
    • -
    -
    -
    -

    A Note on Homeworks

    -
      -
    • I've been saying that only attendance counts for your grade.
    • -
    • It was brought to my attention this week that my own syllabus says -differently
    • -
    • The work we've done so far is all, in some sense, foundational. We will be -using tools starting next week that build upon the tools we've encountered.
    • -
    -

    Homework from this point out should be considered required. We are now -reaching the level of tools you will use on a day to day basis. Mastery comes -with practice.

    -
    -
    -

    And Second

    -

    Questions from the Reading?

    -
    -
    -

    And Third

    -

    Open assignments/week04/lab/type-along.txt

    -

    This contains all the code examples from today's lecture. It's meant to help -you with keeping up when we are moving quickly through sample slides. I hope -it is of some use.

    -
    -
    -

    And Now...

    -

    Gateways

    -
    -
    -

    Think Back

    -

    In week two, we wrote an HTTP server.

    -

    We set up the server to be dynamic by returning the output of a python -script

    -

    But what if we want to pass information to that script?

    -

    How do we let the script have access to information about the HTTP request -itself?

    -
    -
    -

    Stepping Away

    -

    Let's think about this same problem in another realm, the command line.

    -

    Windows folks, for this next bit please open an ssh terminal on your VM.

    -

    In a bash shell we can do this:

    -
    -$ export VARIABLE='some_value'
    -$ echo this is the value: $VARIABLE
    -this is the value: some_value
    -
    -
    -
    -

    Environment

    -

    This new variable is now part of our shell environment, and we can see that:

    -
    -$ printenv
    -VARIABLE=some_value
    -TERM_PROGRAM=iTerm.app
    -TERM=xterm
    -SHELL=/bin/bash
    -...
    -
    -
    -
    -

    Environment in Python

    -

    We can see this environment in Python, too:

    -
    -$ python
    -
    -
    ->>> import os
    ->>> print os.environ['VARIABLE']
    -some_value
    ->>> print os.environ.keys()
    -['VERSIONER_PYTHON_PREFER_32_BIT', 'VARIABLE',
    - 'LOGNAME', 'USER', 'PATH', ...]
    -
    -
    -
    -

    Altering the Environment

    -

    You can alter os environment values while in Python:

    -
    ->>> os.environ['VARIABLE'] = 'new_value'
    ->>> print os.environ['VARIABLE']
    -new_value
    -
    -

    But that doesn't change the original value, outside Python:

    -
    ->>> ^D
    -$ echo this is the value: $VARIABLE
    -this is the value: some_value
    -
    -
    -
    -

    Lessons Learned

    -
      -
    • Subprocesses inherit their environment from their Parent
    • -
    • Parents do not see changes to environment in subprocesses
    • -
    • In Python, you can actually set the environment for a subprocess explicitly
    • -
    -
    -subprocess.Popen(args, bufsize=0, executable=None,
    -                 stdin=None, stdout=None, stderr=None,
    -                 preexec_fn=None, close_fds=False,
    -                 shell=False, cwd=None, env=None, # <-------
    -                 universal_newlines=False, startupinfo=None,
    -                 creationflags=0)
    -
    -
    -
    -

    Web Environment

    -

    CGI is little more than a set of standard environmental variables

    -
    -
    -

    RFC 3875

    -

    First discussed in 1993, formalized in 1997, the current version (1.1) has -been in place since 2004.

    -

    From the preamble:

    -

    This memo provides information for the Internet community. It does not specify -an Internet standard of any kind.

    -

    RFC 3875 - CGI Version 1.1: http://tools.ietf.org/html/rfc3875

    -
    -
    -

    Meta-Variables

    -
    -4.  The CGI Request . . . . . . . . . . . . . . . . . . . . . . .  10
    -    4.1. Request Meta-Variables . . . . . . . . . . . . . . . . .  10
    -         4.1.1.  AUTH_TYPE. . . . . . . . . . . . . . . . . . . .  11
    -         4.1.2.  CONTENT_LENGTH . . . . . . . . . . . . . . . . .  12
    -         4.1.3.  CONTENT_TYPE . . . . . . . . . . . . . . . . . .  12
    -         4.1.4.  GATEWAY_INTERFACE. . . . . . . . . . . . . . . .  13
    -         4.1.5.  PATH_INFO. . . . . . . . . . . . . . . . . . . .  13
    -         4.1.6.  PATH_TRANSLATED. . . . . . . . . . . . . . . . .  14
    -         4.1.7.  QUERY_STRING . . . . . . . . . . . . . . . . . .  15
    -         4.1.8.  REMOTE_ADDR. . . . . . . . . . . . . . . . . . .  15
    -         4.1.9.  REMOTE_HOST. . . . . . . . . . . . . . . . . . .  16
    -         4.1.10. REMOTE_IDENT . . . . . . . . . . . . . . . . . .  16
    -         4.1.11. REMOTE_USER. . . . . . . . . . . . . . . . . . .  16
    -         4.1.12. REQUEST_METHOD . . . . . . . . . . . . . . . . .  17
    -         4.1.13. SCRIPT_NAME. . . . . . . . . . . . . . . . . . .  17
    -         4.1.14. SERVER_NAME. . . . . . . . . . . . . . . . . . .  17
    -         4.1.15. SERVER_PORT. . . . . . . . . . . . . . . . . . .  18
    -         4.1.16. SERVER_PROTOCOL. . . . . . . . . . . . . . . . .  18
    -         4.1.17. SERVER_SOFTWARE. . . . . . . . . . . . . . . . .  19
    -
    -
    -
    -

    Running CGI

    -

    You have a couple of options:

    -
      -
    • Python Standard Library CGIHTTPServer
    • -
    • Apache
    • -
    • IIS (on Windows)
    • -
    • Some other HTTP server that implements CGI (lighttpd, ...?)
    • -
    -

    Let's start locally by using the Python module

    -

    Again, Windows folks, this is going to be most easily done on your VM

    -
    -
    -

    Running CGI - Preparations

    -

    If you are running this on your VM (Windows users, this means **you**) and -you do not already have the class repo on your vm, here's the steps to get -it:

    -
    -$ cd
    -$ mkdir git
    -$ cd git
    -$ git clone https://github.com/cewing/training.python_web.git
    -$ cd training.python_web
    -
    -
    -
    -

    Running CGI - First Test

    -

    Make sure you have the latest source of the class documentation, then:

    -
      -
    • Open two terminal windows and in both, cd to the -assignments/week04/lab directory
    • -
    • In the first terminal, run python -m CGIHTTPServer
    • -
    • Open a web browser and load http://localhost:8000/
    • -
    • (if you're running on your VM, you'll open http://<YOUR_BLUEBOX_VM>.blueboxgrid.com:8000/)
    • -
    • Click on CGI Test 1
    • -
    -
    -
    -

    Did that work?

    -
      -
    • If nothing at all happens, check your terminal window
    • -
    • Look for this: OSError: [Errno 13] Permission denied
    • -
    • If you see something like that, check permissions for cgi-bin and -cgi_1.py
    • -
    • The file must be executable, the directory needs to be readable and -executable.
    • -
    -

    Remember that you can use the bash chmod command to change permissions

    -
    -
    -

    Break It

    -

    Once that's working correctly, let's play with breaking it. Start by making -the file not executable:

    -
    -$ ls -l cgi-bin/cgi_1.py
    --rwxr-xr-x 1 cewing  staff  42 Jan 17 22:30 cgi-bin/cgi_1.py
    -$ chmod 444 cgi-bin/cgi_1.py
    -$ ls -l cgi-bin/cgi_1.py
    --r--r--r-- 1 cewing  staff  42 Jan 17 22:35 cgi-bin/cgi_1.py
    -
    -

    Reload your web browser and see what happens.

    -
    -
    Put the permissions back to how they were before:
    -
    $ chmod 755 cgi-bin/cgi_1.py
    -
    -
    -
    -

    Break It Differently

    -

    Okay, so problems with permissions can lead to failure. How about errors in -the script? What happens there?

    -
      -
    • Open assignments/week04/lab/cgi-bin/cgi_1.py in an editor
    • -
    • if you're on your VM, use nano cgi-bin/cgi_1.py (ctrl-o, <enter> to save, ctrl-x to exit)
    • -
    • Before where it says cgi.test(), add a single line:
    • -
    -
    -1 / 0
    -
    -

    Reload your browser, what happens now?

    -
    -
    -

    Errors in CGI

    -

    CGI is famously difficult to debug. There are reasons for this:

    -
      -
    • CGI is designed to provide access to runnable processes to the internet
    • -
    • The internet is a wretched hive of scum and villainy
    • -
    • Revealing error conditions can expose data that could be exploited
    • -
    -
    -
    -

    Viewing Errors in Python CGI

    -

    Back in your editor, add the following lines, just below import cgi:

    -
    -import cgitb
    -cgitb.enable()
    -
    -

    Now, reload again.

    -
    -
    -

    cgitb Output

    -img/cgitb_output.png -
    -
    -

    Another Way to Break It

    -

    Let's fix the error from our traceback. Edit your cgi_1.py file to match:

    -
    -#!/usr/bin/python
    -import cgi
    -import cgitb
    -
    -cgitb.enable()
    -
    -cgi.test()
    -
    -

    Notice the first line of that script: #!/usr/bin/python. This is called a -shebang (short for hash-bang) and it tells the system what executable -program to use when running the script.

    -
    -
    -

    CGI Process Execution

    -

    When a web server like CGIHTTPServer or Apache runs a CGI script, it -simply attempts to run the script as if it were a normal system user. This is -just like you calling:

    -
    -$ ./path/to/cgi_1.py
    -
    -

    In fact try that now (use the real path), what do you get?

    -

    What is missing?

    -
    -
    -

    CGI Process Execution

    -

    There are a couple of important facts that are related to the way CGI -processes are run:

    -
      -
    • The script must include a shebang so that the system knows how to run -it.
    • -
    • The script must be executable.
    • -
    • The executable named in the shebang will be called as the nobody user.
    • -
    • This is a security feature to prevent CGI scripts from running as a user -with any privileges.
    • -
    • This means that the executable from the script shebang must be one that -anyone can run.
    • -
    -
    -
    -

    More Permission Fun

    -

    Let's interfere with this:

    -
    -$ ls -l /usr/bin/python*
    -lrwxrwxrwx 1 root root       9 Oct  4 18:48 python -> python2.6
    -lrwxrwxrwx 1 root root       9 Oct  4 18:48 python2 -> python2.6
    --rwxr-xr-x 1 root root 2288240 Apr 16  2010 python2.6
    -$ sudo chmod 750 python
    -$ ls -l /usr/bin/python*
    -lrwxrwxrwx 1 root root       9 Oct  4 18:48 python -> python2.6
    -lrwxrwxrwx 1 root root       9 Oct  4 18:48 python2 -> python2.6
    --rwxr-x--- 1 root root 2288240 Apr 16  2010 python2.6
    -
    -

    Now, reload your web browser. Did you get anything? Check your debugging -tools.

    -
    -
    -

    Enough of That

    -

    Okay, put the permissions back on your system python:

    -
    -$ sudo chmod 755 /usr/bin/python
    -$ ls -l /usr/bin/python*
    -lrwxrwxrwx 1 root root       9 Oct  4 18:48 python -> python2.6
    -lrwxrwxrwx 1 root root       9 Oct  4 18:48 python2 -> python2.6
    --rwxr-xr-x 1 root root 2288240 Apr 16  2010 python2.6
    -
    -
    -
    -

    The CGI Environment

    -

    CGI is largely a set of agreed-upon environmental variables.

    -

    We've seen how environmental variables are found in python in os.environ

    -

    We've also seen that at least some of the variables in CGI are not in the -standard set of environment variables.

    -

    Where do they come from?

    -
    -
    -

    CGI Servers

    -

    Let's find 'em. In a terminal (on your local machine, please) fire up python:

    -
    ->>> import CGIHTTPServer
    ->>> CGIHTTPServer.__file__
    -'/big/giant/path/to/lib/python2.6/CGIHTTPServer.py'
    -
    -

    Copy this path and open the file it points to in your text editor

    -
    -
    -

    Environmental Set Up

    -

    From CGIHTTPServer.py, in the CGIHTTPServer.run_cgi method:

    -
    -# Reference: http://hoohoo.ncsa.uiuc.edu/cgi/env.html
    -# XXX Much of the following could be prepared ahead of time!
    -env = {}
    -env['SERVER_SOFTWARE'] = self.version_string()
    -env['SERVER_NAME'] = self.server.server_name
    -env['GATEWAY_INTERFACE'] = 'CGI/1.1'
    -env['SERVER_PROTOCOL'] = self.protocol_version
    -env['SERVER_PORT'] = str(self.server.server_port)
    -env['REQUEST_METHOD'] = self.command
    -...
    -ua = self.headers.getheader('user-agent')
    -if ua:
    -    env['HTTP_USER_AGENT'] = ua
    -...
    -os.environ.update(env)
    -...
    -
    -
    -
    -

    CGI Scripts

    -

    And that's it, the big secret. The server takes care of setting up the -environment so it has what is needed.

    -

    Now, in reverse. How does the information that a script creates end up in your -browser?

    -

    A CGI Script must print it's results to stdout.

    -

    As a corollary to this, the test method of the cgi module has this line: -sys.stderr = sys.stdout. Why?

    -
    -
    -

    Recap:

    -

    What the Server Does:

    -
      -
    • parses the request
    • -
    • sets up the environment, including HTTP and SERVER variables
    • -
    • figures out if the URI points to a CGI script and runs it
    • -
    • builds an appropriate HTTP Response first line ('HTTP/1.1 200 OK\r\n')
    • -
    • appends what comes from the script on stdout and sends that back
    • -
    -

    What the Script Does:

    -
      -
    • names appropriate executable in it's shebang line
    • -
    • uses os.environ to read information from the HTTP request
    • -
    • builds any and all appropriate HTTP Headers (Content-type:, -Content-length:, ...)
    • -
    • prints headers, empty line and script output (body) to stdout
    • -
    -
    -
    -

    Lab 1

    -

    You've seen the output from the cgi.test() method from the cgi module. -Let's make our own version of this.

    -
      -
    • In assignments/week04/lab/src you will find the file -lab1_cgi_template.py.
    • -
    • Copy that file to assignments/week04/lab/cgi-bin/lab1_cgi.py (note the -missing '_template' part)
    • -
    • The script contains some html with text naming elements of the CGI -environment.
    • -
    • Use elements of os.environ to fill in the blanks.
    • -
    • view your work in a browser at localhost:8000 or <yourvm>.blueboxgrid.com:8000
    • -
    -

    GO

    -
    -
    -

    Putting CGI Online

    -

    We have CGI working, how do we make it live so that others can see our -work?

    -

    Put It On A Server

    -
    -
    -

    A Word About Our VMs

    -

    We each have an individual VM that we can use for the duration of this class.

    -

    These machines, with a value of $8000 or more, have been donated to us by Blue -Box Hosting.

    -img/bluebox_logo.png -

    If you need hosting services, consider https://bluebox.net/

    -
    -
    -

    Apache

    -

    Our VMs have the Apache HTTP Server installed and ready to use. Unfortunately -for our current purposes, Apache is not the running web server software.

    -

    Load http://<your-vm-id>.blueboxgrid.com in your web browser. What do you see?

    -img/nginx.png -
    -
    -

    Managing Server Processes

    -
      -
    • Nginx is a great webserver, but it doesn't support running external processes
    • -
    • This is a good choice for security, but not good for us right now
    • -
    • We need to turn it off, and turn on Apache
    • -
    -

    SSH into your server. Then run:

    -
    -$ sudo /etc/init.d/nginx stop
    -Stopping nginx: nginx.
    -$ sudo /etc/init.d/apache2 start
    - * Starting web server apache2    [ OK ]
    -
    -
    -
    -

    Check Your Work

    -

    Reload your web browser. You should now see this:

    -img/apache.png -

    This means that you've stopped nginx and started Apache. Congrats, you are now -a sysadmin!

    -
    -
    -

    Default Site

    -
      -
    • Apache on Ubuntu is set to do virtual hosting
    • -
    • Config for individual sites is added in /etc/apache2/sites-available
    • -
    • Enabling a site makes a link to the config in -/etc/apache2/sites-enabled
    • -
    -

    Check your server to see what sites are available and enabled:

    -
    -$ cd /etc/apache2/
    -$ ls sites-available/
    -default  default-ssl
    -$ ls -l sites-enabled/
    -total 0
    -... 000-default -> ../sites-available/default
    -
    -
    -
    -

    Apache Configuration

    -
    -$ less sites-available/default
    -
    -
    -<VirtualHost *:80>
    -    ServerAdmin webmaster@localhost
    -
    -    DocumentRoot /var/www
    -    <Directory />
    -            Options FollowSymLinks
    -            AllowOverride None
    -    </Directory>
    -    <Directory /var/www/>
    -            Options Indexes FollowSymLinks MultiViews
    -            AllowOverride None
    -            Order allow,deny
    -            allow from all
    -    </Directory>
    -
    -
    -
    -

    More Apache Configuration

    -

    Skip over the ScriptAlias for a moment (we'll come back)

    -
    -    ErrorLog /var/log/apache2/error.log
    -    # Possible values include: debug, info, notice, warn, error, crit,
    -    # alert, emerg.
    -    LogLevel warn
    -    CustomLog /var/log/apache2/access.log combined
    -
    -    Alias /doc/ "/usr/share/doc/"
    -    <Directory "/usr/share/doc/">
    -        Options Indexes MultiViews FollowSymLinks
    -        AllowOverride None
    -        Order deny,allow
    -        Deny from all
    -        Allow from 127.0.0.0/255.0.0.0 ::1/128
    -    </Directory>
     
    -</VirtualHost>
    -
    -
    -
    -

    Apache CGI Configuration

    -

    This is the bit that sets up CGI for us:

    -
    -ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    -<Directory "/usr/lib/cgi-bin">
    -        AllowOverride None
    -        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    -        Order allow,deny
    -        Allow from all
    -</Directory>
    -
    -

    More about Apache Configuration: http://httpd.apache.org/docs/

    -
    -
    -

    Setting up Our Script

    -

    The directory for CGI is /usr/lib/cgi-bin/. What's there now?

    -
    -$ ls -la /usr/lib/cgi-bin/
    -total 24
    -drwxr-xr-x  2 root root  4096 Apr 13  2010 .
    -drwxr-xr-x 66 root root 20480 Nov 23  2011 ..
    -
    -
    -
    -

    No Directory Listing

    -

    Check the cgi-bin directory in your browser:

    -

    http://<your-vm-id>.blueboxgrid.com/cgi-bin/

    -img/forbidden.png -

    Apache is configured to disallow directory listings for cgi-bin (No -Option Indexes)

    -
    -
    -

    Copy CGI To The Server

    -

    To get our script to run, we have to put it in the cgi-bin directory.

    -
      -
    • The /usr/lib/cgi-bin directory is owned by root
    • -
    • It is not world-writable
    • -
    • You'll need to put it somewhere you can write without using sudo
    • -
    • Put it in your home directory
    • -
    • If you are already working on your VM, you can skip this part.
    • -
    -
    -$ cd /path/to/training.python_web
    -$ scp assignments/week04/lab/cgi-bin/cgi_1.py uw@<yourvm>:~/
    -
    -
    -
    -

    Move it to cgi-bin

    -

    Now that we have the script on the server, we can use sudo there to put it in -the right spot (execute these commands on your VM):

    -
    -$ sudo mv ~/cgi_1.py /usr/lib/cgi-bin/
    -$ ls -l /usr/lib/cgi-bin
    -total 4
    --rwxr-xr-x 1 uw uw 42 Jan 20 04:34 cgi_1.py
    -
    -

    Does the file have the right permissions to be executed successfully?

    -

    http://<your-vm-url>/cgi-bin/cgi_1.py

    -
    -
    -

    Do it again

    -

    Repeat the process. This time, move your lab1_cgi.py script from our first -lab exercise.

    -
    -
    -

    And Now

    -

    A Short Break

    -
    -
    -

    CGI Problems

    -

    CGI is great, but there are problems:

    -
      -
    • Code is executed in a new process
    • -
    • Every call to a CGI script starts a new process on the server
    • -
    • Starting a new process is expensive in terms of server resources
    • -
    • Especially for interpreted languages like Python
    • -
    -

    How do we overcome this problem?

    -
    -
    -

    Alternatives to CGI

    -

    The most popular approach is to have a long-running process inside the -server that handles CGI scripts.

    -

    FastCGI and SCGI are existing implementations of CGI in this fashion. -mod_python offers a similar capability for Python code.

    -
      -
    • Each of these options has a specific API
    • -
    • None are compatible with each-other
    • -
    • Code written for one is not portable to another
    • -
    • This makes it hard to share resources
    • -
    -
    -
    -

    WSGI

    -

    Enter WSGI, the Web Server Gateway Interface.

    -

    Where other alternatives are specific implementations of the CGI standard, -WSGI is itself a new standard, not an implementation.

    -

    WSGI is generalized to describe a set of interactions, so that developers can -write WSGI-capable apps and deploy them on any WSGI server.

    -

    Read the WSGI spec: http://www.python.org/dev/peps/pep-0333

    -
    -
    -

    WSGI: Apps and Servers

    -

    WSGI consists of two parts, a server and an application.

    -

    A WSGI Server must:

    -
      -
    • set up an environment, much like the one in CGI
    • -
    • provide a method start_response(status, headers, exc_info=None)
    • -
    • build a response body by calling an application, passing -environment and start_response as args
    • -
    • return a response with the status, headers and body
    • -
    -

    A WSGI Appliction must:

    -
      -
    • Be a callable (function, method, class)
    • -
    • Take an environment and a start_response callable as arguments
    • -
    • Return an iterable of 0 or more strings, which are treated as the body of -the response.
    • -
    -
    -
    -

    Flowcharts

    -

    WSGI Servers:

    -

    HTTP <---> WSGI

    -

    WSGI Applications:

    -

    WSGI <---> app code

    -
    -
    -

    The Whole Enchilada

    -

    The WSGI Stack can thus be expressed like so:

    -

    HTTP <---> WSGI <---> app code

    -
    -
    -

    Using wsgiref

    -

    The Python standard lib provides a reference implementation of WSGI:

    -img/wsgiref_flow.png -
    -
    -

    Apache mod_wsgi

    -

    You can also deploy with Apache as your HTTP server, using mod_wsgi:

    -img/mod_wsgi_flow.png -
    -
    -

    Proxied WSGI Servers

    -

    Finally, it is also common to see WSGI apps deployed via a proxied WSGI -server:

    -img/proxy_wsgi.png -
    -
    -

    WSGI Middleware

    -

    Another feature of WSGI is middleware:

    -
      -
    • Middleware implements both the server and application interfaces
    • -
    • Middleware acts as a server when viewed from an application
    • -
    • Middleware acts as an application when viewed from a server
    • -
    -img/wsgi_middleware_onion.png -
    -
    -

    Simplified WSGI Server

    -
    -from some_application import simple_app
    -
    -def build_env(request):
    -    # put together some environment info from the reqeuest
    -    return env
    -
    -def handle_request(request, app):
    -    environ = build_env(request)
    -    iterable = app(environ, start_response)
    -    for data in iterable:
    -        # send data to client here
    -
    -def start_response(status, headers):
    -    # start an HTTP response, sending status and headers
    -
    -# listen for HTTP requests and pass on to handle_request()
    -serve(simple_app)
    -
    -
    -
    -

    WSGI Environment

    -
    -
    REQUEST_METHOD
    -
    The HTTP request method, such as "GET" or "POST". This cannot ever be an -empty string, and so is always required.
    -
    SCRIPT_NAME
    -
    The initial portion of the request URL's "path" that corresponds to the -application object, so that the application knows its virtual "location". -This may be an empty string, if the application corresponds to the "root" of -the server.
    -
    PATH_INFO
    -
    The remainder of the request URL's "path", designating the virtual -"location" of the request's target within the application. This may be an -empty string, if the request URL targets the application root and does not -have a trailing slash.
    -
    QUERY_STRING
    -
    The portion of the request URL that follows the "?", if any. May be empty or -absent.
    -
    CONTENT_TYPE
    -
    The contents of any Content-Type fields in the HTTP request. May be empty or -absent.
    -
    -
    -
    -

    WSGI Environment

    -
    -
    CONTENT_LENGTH
    -
    The contents of any Content-Length fields in the HTTP request. May be empty -or absent.
    -
    SERVER_NAME, SERVER_PORT
    -
    When combined with SCRIPT_NAME and PATH_INFO, these variables can be used to -complete the URL. Note, however, that HTTP_HOST, if present, should be used -in preference to SERVER_NAME for reconstructing the request URL. See the URL -Reconstruction section below for more detail. SERVER_NAME and SERVER_PORT -can never be empty strings, and so are always required.
    -
    SERVER_PROTOCOL
    -
    The version of the protocol the client used to send the request. Typically -this will be something like "HTTP/1.0" or "HTTP/1.1" and may be used by the -application to determine how to treat any HTTP request headers. (This -variable should probably be called REQUEST_PROTOCOL, since it denotes the -protocol used in the request, and is not necessarily the protocol that will -be used in the server's response. However, for compatibility with CGI we -have to keep the existing name.)
    -
    -
    -
    -

    WSGI Environment

    -
    -
    HTTP_ Variables
    -
    Variables corresponding to the client-supplied HTTP request headers (i.e., -variables whose names begin with "HTTP_"). The presence or absence of these -variables should correspond with the presence or absence of the appropriate -HTTP header in the request.
    -
    -

    Seem Familiar?

    -
    -
    -

    Simple WSGI Application

    -

    Where the simplified server above is not functional, this is a complete -app:

    -
    -def application(environ, start_response)
    -    status = "200 OK"
    -    body = "Hello World\n"
    -    response_headers = [('Content-type', 'text/plain',
    -                         'Content-length', len(body))]
    -    start_response(status, response_headers)
    -    return [body]
    -
    -
    -
    -

    Simple WSGI Middleware

    -

    Here's a very simple sample of middleware:

    -
    -class Upperware:
    -    def __init__(self, app)
    -        self.wrapped_app = app
    -
    -    def __call__(self, environ, start_response)
    -        for data in self.wrapped_app(environ, start_response):
    -            return data.upper()
    -
    -

    How does this fulfill the server part of the agreement?

    -

    The application part?

    -
    -
    -

    A Word on Middleware

    -

    TRANSPARENT

    -
      -
    • loose coupling means layers should not need to know anything about each -other
    • -
    • You should be able to combine a server from one package, middleware from -another, and application code from yet another
    • -
    • A good test is this:
    • -
    -

    If you remove your middleware, does your app break?

    -

    If so, the code should be in your app, not in middleware.

    -
    -
    -

    Interesting Middleware Uses

    -

    Middleware can be used for a number of really useful purposes:

    -
      -
    • Routing (stitch together multiple wsgi apps into one site)
    • -
    • Authentication (share authentication between multiple apps, delegate)
    • -
    • Cache Control (decide what to rebuild and what can be re-used)
    • -
    • Debugging and Introspection (provide information about reqest, reponse and -processing)
    • -
    • Theming (use tools like xslt to build themes that can merge different apps)
    • -
    -
    -
    -

    WSGI on our VMs

    -

    For our lab, and for the homework, we'll be using WSGI via mod_wsgi on our -VMs.

    -

    CGI was all set for us, once we turned on Apache.

    -

    How about WSGI?

    -

    Let's find out.

    -
    -
    -

    Apache Modules

    -

    The abilities of Apache are extended using modules. You can list loaded -modules with the apache2ctl command.

    -

    Open an ssh terminal on your VM:

    -
    -$ which apache2ctl
    -/usr/sbin/apache2ctl
    -$ apache2ctl -M
    -Loaded Modules:
    - ...
    - alias_module (shared)
    - auth_basic_module (shared)
    - authn_file_module (shared)
    - authz_default_module (shared)
    - ...
    -
    -
    -
    -

    Another Way

    -

    You can also see which modules are enabled by checking the listings in -/etc/apache2/mods-enabled/:

    -
    -$ ls /etc/apache2/mods-enabled/
    -alias.conf            authz_user.load  dir.load          php5.load
    -alias.load            autoindex.conf   env.load          reqtimeout.conf
    -auth_basic.load       autoindex.load   mime.conf         reqtimeout.load
    -authn_file.load       cgi.load         mime.load         setenvif.conf
    -authz_default.load    deflate.conf     negotiation.conf  setenvif.load
    -authz_groupfile.load  deflate.load     negotiation.load  status.conf
    -authz_host.load       dir.conf         php5.conf         status.load
    -
    -
    -
    -

    Available Modules

    -

    By default, not all the modules that are available have been enabled. You -can check the /etc/apache2/mods-available/ directory to see what else is -there:

    -
    -$ ls /etc/apache2/mods-available/
    -actions.conf          cern_meta.load     ident.load           proxy_http.load
    -actions.load          cgi.load           imagemap.load        proxy_scgi.load
    -alias.conf            cgid.conf          include.load         reqtimeout.conf
    -alias.load            cgid.load          info.conf            reqtimeout.load
    -asis.load             charset_lite.load  info.load            rewrite.load
    -auth_basic.load       dav.load           ldap.load            setenvif.conf
    -auth_digest.load      dav_fs.conf        log_forensic.load    setenvif.load
    -...
    -
    -
    -
    -

    Adding New Modules

    -
      -
    • Debian/Ubuntu provide pre-packaged versions of software like Apache
    • -
    • The pre-packaged versions will come with popular extensions included
    • -
    • We want to install an Apache module which is not included in the -pre-packaged Apache
    • -
    • We can use the packaging tools in Debian/Ubuntu to install it ourselves.
    • -
    • The packaging tools are called apt (Advanced Packaging Tool)
    • -
    -

    There is more to learn about apt than we can hope to cover here. Learn it -as you need it.

    -
    -
    -

    Searching Using apt-cache

    -

    You can search for a package using apt-cache (apt-cache search text):

    -
    -$ apt-cache search mod_wsgi
    -
    -

    Once you've found the name of a package, you can use apt-cache to read the -dependencies it has:

    -
    -$ apt-cache depends libapache2-mod-wsgi
    -libapache2-mod-wsgi
    -  Depends: apache2
    -    apache2-mpm-itk
    -...
    -
    -
    -
    -

    Installing using apt-get

    -

    Okay, so we know what the package is called, and what it will require. Let's -install it! (we'll need superuser privileges to do this, so sudo)

    -
    -$ sudo apt-get install libapache2-mod-wsgi
    -Reading package lists... Done
    -Building dependency tree
    -Reading state information... Done
    -...
    -Get:1 http://us.archive.ubuntu.com/ubuntu/ lucid/universe libapache2-mod-wsgi 2.8-2ubuntu1 [63.5kB]
    -Fetched 63.5kB in 0s (197kB/s)
    -...
    -Setting up libapache2-mod-wsgi (2.8-2ubuntu1)
    - * Restarting web server apache2
    - ... waiting                                     [ OK ]
    -
    -
    -
    -

    Check Your Work

    -

    Are we done? Remember that command for checking loaded modules?

    -
    -$ apache2ctl -M
    -Loaded Modules:
    - ...
    - alias_module (shared)
    - auth_basic_module (shared)
    - ...
    - status_module (shared)
    - wsgi_module (shared)
    -Syntax OK
    -
    -

    Wahooooo!

    -
    -
    -

    Configure mod_wsgi

    -

    Like CGI, mod_wsgi requires that we do some set up in our Apache -configuration.

    -

    Open the file /etc/apache2/sites-available/default in a text editor:

    -
    -$ cd /etc/apache2
    -$ vi sites-available/default
    -
    -

    You can also use nano or pico or joe or whatever simple text -editor you like.

    -
    -
    -

    Adding WSGIScriptAlias

    -

    mod_wsgi uses the directive WSGIScriptAlias in exactly the same way that -CGI uses ScriptAlias:

    -
    -ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    -<Directory "/usr/lib/cgi-bin">
    -        AllowOverride None
    -        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    -        Order allow,deny
    -        Allow from all
    -</Directory>
    -
    -# Add this line to the file to expose a /wsgi-bin directory
    -WSGIScriptAlias /wsgi-bin/ /usr/lib/wsgi-bin/
    -
    -

    Save your work and exit the editor

    Give WSGI Something To Do

    diff --git a/presentations/week05.html b/presentations/week05.html index 714eda55..a54bafc6 100644 --- a/presentations/week05.html +++ b/presentations/week05.html @@ -5,7 +5,7 @@ -Internet Programming with Python + @@ -29,1310 +29,14 @@
    -

    Internet Programming with Python

    -img/bike.jpg -

    Week 5: Small Frameworks

    -
    -
    "Reinventing the wheel is great
    -
    if your goal is to learn more about the wheel"
    -

    -
    -- James Tauber, PyCon 2007
    -
    -

    image: Britanglishman http://www.flickr.com/photos/britanglishman/5999131365/ - CC-BY

    - -
    -
    -

    But First

    -

    Review from the Assignment

    -
    -
    -

    URL Mapping

    -

    Two basic approaches to solving the problem:

    -
    -/books?id=id1
    -/books/id1
    -
    -

    The first generally used environ['QUERY_STRING']. The second used -environ['PATH_INFO']

    -

    Both are fine. Largely a matter of taste. I find the latter more common in -daily work.

    -
    -
    -

    Regular Expressions

    -

    My personal approach to the url mapping problem was the second, which relies -on regular expression mapping:

    -
    -URLS = [(r'^$', 'books'),
    -        (r'^book/(id[\d]{1,2})$', 'book'), ]
    -
    -

    Regular expressions should be as tight as possible, it's easy to over-match

    -

    Read the Python Regexp How-to -and find a good Regular Expression Tester

    -
    -
    -

    String Formatting

    -

    This is awkward:

    -
    -bob = {'a': 'things', 'b': 'stuff'}
    -"I have lots of " + bob['a'] + " and " + bob['b'] + "."
    -
    -

    This is much less so:

    -
    -bob = {'a': 'things', 'b': 'stuff'}
    -"I have lots of %(a)s and %(b)s." % bob
    -
    -

    I am chastened. string.format() is the best (most flexible)

    -
    -
    -

    WSGIScriptAlias

    -

    CGI required a cgi directory. WSGI makes no such requirement.

    -

    You can use WSGIScriptAlias to point to a single file

    -

    Since a single file can often provide the entry point to an entire app, this -allows you to mount entire apps at arbitrary path locations:

    -
    -WSGIScriptAlias / /path/to/main/app/wsgi_app.py
    -WSGIScriptAlias /blog /path/to/blog/app/wsgi_app.py
    -WSGIScriptAlias /forum /path/to/forum/app/wsgi_app.py
    -
    -
    -
    -

    Bad HTML

    -

    I know that web browsers are forgiving, but you should be less so.

    -

    These are not good HTML:

    -
    -<p><a href = /book/id4 >foobar</p>
    -<P><A HREF='/book/id4'>foobar</A></P>
    -
    -

    This is: <p><a href="/book/id4">foobar</a></p>

    -

    The Mozilla Developer Network is a great resource for -proper HTML. It also has great reference information on JavaScript. Shun the -w3schools.

    -
    -
    -

    And Second

    -

    Questions from the Reading?

    -
    -
    -

    And Third

    -

    Class Project

    -
      -
    • Create a Website
    • -
    • It can do anything you want it to.
    • -
    • It should have some user interactions (forms users complete).
    • -
    • It should look nice-ish
    • -
    • It should show off some aspect of what you've learned
    • -
    • It should take you about 15-20 hours to create (so small)
    • -
    • It will be due Friday following the last day of class (March 15)
    • -
    • We will spend half of each of the last two class session working on it in -class.
    • -
    • Questions?
    • -
    -
    -
    -

    And Now...

    -

    Small Frameworks

    -
    -
    -

    A Moment to Reflect

    -

    We've been at this for a while now. We've learned a great deal:

    -
      -
    • Sockets, the TCP/IP Stack and Basic Mechanics
    • -
    • Web Protocols and the Importance of Clear Communication
    • -
    • APIs and Consuming Data from The Web
    • -
    • CGI and WSGI and Getting Information to Your Dynamic Applications
    • -
    -

    This concludes the foundational part of the course.

    -

    Everything we do from here out will be based on tools built using what we've -learned these first four weeks.

    -
    -
    -

    We've built

    -

    A full-featured web server

    -
    -
    -

    We've built

    -

    Data-driven applications using web-based APIs

    -
    -
    -

    We've built

    -

    CGI web pages

    -
    -
    -

    We've built

    -

    A simple wsgi application

    -
    -
    -

    Onward

    -

    We are moving up the stack

    -
    -
    -

    From Now On

    -

    Think of everything we do as sitting on top of WSGI

    -

    This may not actually be true

    -

    But we will always be working at that level of abstraction.

    -
    -
    -

    The Abstraction Stack

    -

    You can think of the libraries we use to write web applications as belonging -to one of several levels:

    -

    plumbing

    -

    tools

    -

    small frameworks

    -

    full-stack frameworks

    -

    systems

    -
    -
    -

    Plumbing

    -

    We've done this part already:

    -

    Sockets

    -

    Protocols

    -

    CGI/WSGI

    -
    -
    -

    Tools

    -

    We've started to talk about these, we'll see more soon:

    -

    cgitb

    -

    wsgi middleware

    -

    werkzeug tools

    -

    WebOb

    -
    -
    -

    Small Frameworks

    -

    We're here today:

    -

    Flask

    -

    Bottle

    -

    CherryPy

    -

    Web.py

    -

    and many many more...

    -
    -
    -

    Full Stack Frameworks

    -

    We will visit this level next:

    -

    Django

    -

    Pyramid

    -

    web2py

    -
    -
    -

    Systems

    -

    We'll finish up here

    -

    Plone

    -
    -
    -

    Frameworks

    -

    From Wikipedia:

    -

    A web application framework (WAF) is a software framework that is designed to -support the development of dynamic websites, web applications and web -services. The framework aims to alleviate the overhead associated with common -activities performed in Web development. For example, many frameworks provide -libraries for database access, templating frameworks and session management, -and they often promote code reuse

    -
    -
    -

    What Does That Mean?

    -

    You use a framework to build an application.

    -

    A framework allows you to build different kinds of applications.

    -

    A framework abstracts what needs to be abstracted, and allows control of the -rest.

    -

    Think back over the last four weeks. What were your pain points? Which bits do -you wish you didn't have to think about?

    -
    -
    -

    Level of Abstraction

    -

    This last part is important when it comes to choosing a framework

    -
      -
    • abstraction ∠1/freedom
    • -
    • The more they choose, the less you can
    • -
    • Every framework makes choices in what to abstract
    • -
    • Every framework makes different choices
    • -
    -
    -
    -

    Python Web Frameworks

    -

    There are scores of 'em (this is a partial list).

    - ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -

    Choosing a Framework

    -

    Many folks will tell you "<XYZ> is the best framework".

    -

    In most cases, what they really mean is "I know how to use <XYZ>"

    -

    In some cases, what they really mean is "<XYZ> fits my brain the best"

    -

    What they usually forget is that everyone's brain (and everyone's use-case) is -different.

    -
    -
    -

    Cris' First Law of Frameworks

    -

    Pick the Right Tool for the Job

    -

    First Corollary

    -

    The right tool is the tool that allows you to finish the job quickly and -correctly.

    -

    But how do you know which that one is?

    -
    -
    -

    Cris' Second Law of Frameworks

    -

    You can't know unless you try

    -

    so let's try

    -
    -
    -

    Preparation

    -

    We proceed under the assumption that you have installed Flask into a -virtualenv, either on your laptop or on your VM.

    -

    Start by activating the virtualenv with Flask installed. Mine is 'flaskenv'.

    -

    Next, create a new python source file: flask_intro.py

    -

    Finally, open that file in your text editor

    -
    -
    -

    Flask

    -

    Getting started with Flask is pretty straightforward. Here's a complete, -simple app. Type it into flask_intro.py:

    -
    -from flask import Flask
    -app = Flask(__name__)
    -
    -@app.route('/')
    -def hello_world():
    -    return 'Hello World!'
    -
    -if __name__ == '__main__':
    -    app.run()
    -
    -
    -
    -

    Running our App

    -

    As you might expect by now, the last block in our flask_intro.py file -allows us to run this as a python program. Save your file, and in your -terminal try this:

    -
    -(flaskenv)$ python flask_intro.py
    -
    -

    Load http://localhost:5000 in your browser to see it in action.

    -
    -
    -

    Debugging our App

    -

    Last week, cgitb provided us with useful feedback when building an app. -Flask has a similar tool. Make the following changes to your -flask_intro.py file:

    -
    -@app.route('/')
    -def hello_world():
    -    bar = 1 / 0
    -    return 'Hello World!'
    -
    -if __name__ == '__main__':
    -    app.run(debug=True)
    -
    -

    In your terminal, quit the app with ^C and then restart it. Then reload -your browser and see what happens.

    -
    -
    -

    What's Happening Here?

    -

    Flask the framework provides a Python class called Flask. This class -represents a single application in the WSGI sense.

    -
      -
    • You instantiate a Flask app with a name that represents the package or -module containing the app.
    • -
    • If your application is a single module, this should be __name__
    • -
    • This is used to help the Flask app figure out where to look for -resources
    • -
    • Resources can be static files (css, images, javascript), templates, or -additional python modules you create and need to import.
    • -
    • You define a function and route a URL to call it
    • -
    -
    -
    -

    URL Routing

    -

    Remember our bookdb homework? How did you end up solving the problem of -mapping an HTTP request to the right function?

    -

    Flask solves this problem by using the route decorator from your app.

    -

    A 'route' takes a URL rule (more on that in a minute) and maps it to an -endpoint and a function.

    -

    When a request arrives at a URL that matches a known rule, the function is -called.

    -
    -
    -

    Routes Can Be Dynamic

    -

    You can provide placeholders in dynamic urls. Each placeholder is then a -named arg to your function (add these to flask_intro.py (and delete the -1/0 bit)):

    -
    -@app.route('/profile/<username>')
    -def show_profile(username):
    -    return "My username is %s" % username
    -
    -

    These placeholders can also include converters that will ensure the -incoming argument is of the correct type.

    -
    -@app.route('/div/<float:val>/')
    -def divide(val):
    -    return "%0.2f divided by 2 is %0.2f" % (val, val / 2)
    -
    -
    -
    -

    Routes Can Be Filtered

    -

    You can also determine which HTTP methods a given route will accept:

    -
    -@app.route('/blog/entry/<int:id>/', methods=['GET',])
    -def read_entry(id):
    -    return "reading entry %d" % id
    -
    -@app.route('/blog/entry/<int:id>/', methods=['POST', ])
    -def write_entry(id):
    -    return 'writing entry %d' % id
    -
    -

    After adding that to flask_intro.py and saving, try loading -http://localhost:5000/blog/entry/23/ into your browser. Which was called?

    -
    -
    -

    Routes Can Be Reversed

    -

    Reversing a URL means the ability to generate the url that would result in a -given endpoint being called.

    -

    This means you don't have to hard-code your URLs when building links

    -

    That means you can change the URLs for your app without changing code or -templates

    -

    This is called decoupling and it is a good thing

    -
    -
    -

    Reversing URLs in Flask

    -

    In Flask, you reverse a url with the url_for function.

    -
      -
    • url_for requires an HTTP request context to work
    • -
    • You can fake an HTTP request when working in a terminal (or testing)
    • -
    • Use the test_request_context method of your app object
    • -
    • This is a great chance to learn about the Python with statement
    • -
    • Don't type this
    • -
    -
    -from flask import url_for
    -with app.test_request_context():
    -  print url_for('endpoint', **kwargs)
    -
    -
    -
    -

    Reversing in Action

    -

    Quit your Flask app with ^C. Then start a python interpreter in that same -terminal and import your flask_intro.py module:

    -
    -import flask_intro
    -from flask_intro import app
    -from flask import url_for
    -with app.test_request_context():
    -    print url_for('show_profile', username="cris")
    -    print url_for('divide', val=23.7)
    -
    -'/profile/cris/'
    -'/div/23.7/'
    -
    -
    -
    -

    Generating HTML

    -

    I enjoy writing building HTML in Python strings

    -

    -- nobody, ever

    -
    -
    -

    Templating

    -

    A good framework will provide some way of generating HTML with a templating -system.

    -

    There are nearly as many templating systems as there are frameworks

    -

    Each has advantages and disadvantages

    -

    Flask includes the Jinja2 templating system (perhaps because it's built by -the same folks)

    -
    -
    -

    Jinja2 Template Basics

    -

    There are a few basic things to know:

    -
      -
    • Variables in templates can be printed by surrounding the variable name with -double curly braces: {{ name }}.
    • -
    • If a variable points to something like a dictionary or object, you can use -either dot or subscript notation: {{ obj[attr] }}, {{ dict.key -}}.
    • -
    • Variables in templates can be filtered: {{ name|capitalize }}. There -is a list of builtin filters.
    • -
    • Logic can be put into templates using the processor marker: {% for x in y -%}{{ x }}{% endfor %}
    • -
    • Logic comes in pairs. Any start must have an explicit end.
    • -
    -
    -
    -

    Advanced Jinja2

    -

    There is way too much about writing templates in Jinja2 for us to cover here -today. Read more here:

    -

    http://jinja.pocoo.org/docs/templates/

    -
    -
    -

    Templates in Flask

    -

    Use the render_template function:

    -
    -from flask import render_template
    -
    -@app.route('/hello/')
    -@app.route('/hello/<name>')
    -def hello(name=None):
    -    return render_template('hello.html', name=name)
    -
    -

    Flask looks for a templates directory in the same location as your app -module (remember app = Flask(__name__)?).

    -

    Any extra variables you want to pass to the template should be keyword -arguments to render_template

    -
    -
    -

    Flask Template Context

    -

    Flask adds a few things to the context of templates. You can use these

    -
      -
    • config: contains the current configuration object
    • -
    • request: contains the current request object
    • -
    • session: any session data that might be available
    • -
    • g: the request-local object to which global variables are bound
    • -
    • get_flashed_messages: a function that returns messages you flash to your -users (more on this later).
    • -
    • url_for: so you can easily reverse urls from within your templates
    • -
    -
    -
    -

    Lab 1

    -

    Open a terminal, change directories to the class repository, then to -assignments/week05/lab/book_app.

    -
      -
    • You'll find a file book_app.py which is all set up and ready to go
    • -
    • You'll also find a templates directory with some templates
    • -
    • Complete the functions to provide the right stuff to the templates
    • -
    • Complete the templates to display the data to the end-user
    • -
    • At the end you should have a reproduced version of last week's homework
    • -
    -

    GO

    -
    -
    -

    Lab 2 - Part 1

    -

    The rest of class today will be devoted to building and deploying a simple -micro-blog app using flask.

    -

    This is based almost entirely on the Flaskr tutorial from the Flask website.

    -
    -
    -

    Data Persistence

    -

    There are many models for persistance of data.

    -
      -
    • Flat files
    • -
    • Relational Database (SQL RDBMs like PostgreSQL, MySQL, SQLServer, Oracle)
    • -
    • Object Stores (Pickle, ZODB)
    • -
    • NoSQL Databases (CouchDB, MongoDB, etc)
    • -
    -

    It's also one of the most contentious issues in app design.

    -

    For this reason, it's one of the things that most Small Frameworks leave -undecided.

    -
    -
    -

    Simple SQL

    -

    For our second lab exercise today, we're going to use a simple SQL database.

    -

    Python PEP 249 describes a -common API for database connections called DB API.

    -

    The Python Standard Library comes with an implementation of this for a common, -light-weight sql database, sqlite3

    -

    I am not going to talk a lot about SQL. It's too deep a pool for us to get -into. We'll concentrate only on those bits we need to get along.

    -
    -
    -

    Our Database

    -

    We're going to keep this really really simple.

    -

    In assignments/week05/lab/ find the flaskr_1 directory and open the -schema.sql file in your editor. Add the following and save the file:

    -
    -drop table if exists entries;
    -create table entries (
    -    id integer primary key autoincrement,
    -    title string not null,
    -    text string not null
    -);
    -
    -
    -
    -

    Our App

    -

    We'll also need to do some configuration for our app.

    -

    In that same directory, find the file flaskr.py and open it in your -editor. Add the following and save the file:

    -
    -# configuration goes here
    -DATABASE = '/tmp/flaskr.db'
    -SECRET_KEY = 'development key'
    -
    -app = Flask(__name__) # this is already in the file
    -app.config.from_object(__name__)
    -
    -

    Windows users, you will need to create C:\tmp or change the pathname for -DATABASE

    -
    -
    -

    Creating the Database

    -

    Still in flaskr.py let's add a function that will connect to our database:

    -
    -# add this at the very top
    -import sqlite3
    -
    -# add the rest of this below the app.config statement
    -def connect_db():
    -    return sqlite3.connect(app.config['DATABASE'])
    -
    -

    This will be a convenience to us later on, and it will allow us to write our -very first test.

    -
    -
    -

    Tests and TDD

    -

    If it isn't tested, it's broken

    -

    Test-Driven Development means writing the tests before writing the functions. -As your tests pass, you know you're building what you want.

    -

    We are going to write tests at every step of this lab. Along the way, we'll -learn a bit about the Python Standard Library module unittest.

    -

    You'll want to read more about this module. See our outline for reading -suggestions.

    -
    -
    -

    Testing Setup

    -

    In the same flaskr_1 directory, find and open the flaskr_tests.py file -in your editor. Edit it to look like this:

    -
    -import os
    -import flaskr
    -import unittest
    -import tempfile
     
    -class FlaskrTestCase(unittest.TestCase):
    -
    -    def setUp(self):
    -        db_fd = tempfile.mkstemp()
    -        self.db_fd, flaskr.app.config['DATABASE'] = db_fd
    -        flaskr.app.config['TESTING'] = True
    -        self.client = flaskr.app.test_client()
    -        self.app = flaskr.app
    -
    -
    -
    -

    Testing Teardown

    -

    Add the following method to your test class:

    -
    -class FlaskrTestCase(unittest.TestCase):
    -    ...
    -
    -    def tearDown(self):
    -        os.close(self.db_fd)
    -        os.unlink(flaskr.app.config['DATABASE'])
    -
    -
    -
    -

    Make Tests Runnable

    -

    And finally, add the following at the bottom of your flaskr_tests.py file:

    -
    -if __name__ == '__main__':
    -    unittest.main()
    -
    -

    Now, we're ready to add our first method.

    -
    -
    -

    Test Databse Setup

    -

    We'd like to test that our database is correctly initialized. The schema has -one table with three columns. Let's test that.

    -

    Add the following method to your test class in flaskr_tests.py:

    -
    -def test_database_setup(self):
    -    con = flaskr.connect_db()
    -    cur = con.execute('PRAGMA table_info(entries);')
    -    rows = cur.fetchall()
    -    self.assertEquals(len(rows), 3)
    -
    -
    -
    -

    Run the Tests

    -

    Since we added that if __name__ == '__main__' block, we can simply run our -tests with a flask-aware python executable:

    -
    -(flaskenv)$ python flaskr_tests.py
    -F
    -======================================================================
    -FAIL: test_database_setup (__main__.FlaskrTestCase)
    -----------------------------------------------------------------------
    -Traceback (most recent call last):
    -  File "flaskr_tests.py", line 23, in test_database_setup
    -    self.assertTrue(len(rows) == 3)
    -AssertionError: False is not True
    -
    -----------------------------------------------------------------------
    -Ran 1 test in 0.011s
    -
    -FAILED (failures=1)
    -
    -
    -
    -

    Make the Test Pass

    -

    Our database hasn't actually be properly created. We have no table and so no -rows are returned when we try to describe it. Let's fix that. Add the -following to flaskr.py:

    -
    -# add this import at the top
    -from contextlib import closing
    -
    -# add this function after the connect_db function
    -def init_db():
    -    with closing(connect_db()) as db:
    -        with app.open_resource('schema.sql') as f:
    -            db.cursor().executescript(f.read())
    -        db.commit()
    -
    -
    -
    -

    Initialize the DB in Tests

    -

    We also need to call that function in our flaskr_tests.py, in the -setUp method of our test case.

    -

    Add the following line at the end of that setUp method:

    -
    -def setUp(self):
    -    ...
    -    flaskr.init_db() # <- add this at the end
    -
    -

    Then, re-run the tests (python flaskr_tests.py) and see what you get.

    -

    Wahoooo!

    -
    -
    -

    Initialize the DB IRL

    -

    Okay, so we know the init_db function we added sets up the database -properly.

    -

    We still need to do this in real life, so that we can work against the -database.

    -

    Start up a python interpreter in your flaskr_1 folder and do the -following:

    -
    -import flaskr
    -flaskr.init_db()
    -^D
    -
    -
    -
    -

    Lab 2 - Part 2

    -

    Okay, we have a database. Now it's time to write stuff into it, and read it -back.

    -

    Once again, we're going to start by writing tests.

    -

    If you've fallen behind, or if you just want to start fresh, you can find the -base of what we've done so far in the flaskr_2 folder.

    -
    -
    -

    Managing DB Connections

    -

    Database connections should be bound to the borders of a request/response.

    -

    Flask provides decorators that mark functions to be run at these borders:

    -
      -
    • @before_request: any method decorated by this will be called before the -cycle begins
    • -
    • @after_request: any method decorated by this will be called after the -cycle is complete. If an unhandled exception occurs, these functions are -skipped.
    • -
    • @teardown_request: any method decorated by this will be called at the -end of the cycle, even if an unhandled exception occurs.
    • -
    -
    -
    -

    Manage our DB

    -

    Add the following code to our app (flaskr.py):

    -
    -# add this import at the top:
    -from flask import g
    -
    -# add these function after init_db
    -@app.before_request
    -def before_request():
    -    g.db = connect_db()
    -
    -@app.teardown_request
    -def teardown_request(exception):
    -    g.db.close()
    -
    -

    We bind our db connection to the 'g' object, which is a global context flask -supplies to each request.

    -
    -
    -

    Test Writing Entries

    -

    We want to test that we can write an entry by providing a title and text. Add -the following method to flaskr_tests.py:

    -
    -def test_write_entry(self):
    -    expected = ("My Title", "My Text")
    -    with self.app.test_request_context('/'):
    -        self.app.preprocess_request()
    -        flaskr.write_entry(*expected)
    -        con = flaskr.connect_db()
    -        cur = con.execute("select * from entries;")
    -        rows = cur.fetchall()
    -    self.assertEquals(len(rows), 1)
    -    for val in expected:
    -        self.assertTrue(val in rows[0])
    -
    -

    Note that we have to set up a request context, and preprocess it to get our -@before_request method run.

    -
    -
    -

    Write an Entry

    -

    Now we are ready to write an entry to our database. Add this function to -flaskr.py:

    -
    -def write_entry(title, text):
    -    g.db.execute('insert into entries (title, text) values (?, ?)',
    -                 [title, text])
    -    g.db.commit()
    -
    -

    When you're done, re-run your tests. You should now be two for two.

    -
    -
    -

    Test Reading Entries

    -
    -def test_get_all_entries_empty(self):
    -    with self.app.test_request_context('/'):
    -        self.app.preprocess_request()
    -        entries = flaskr.get_all_entries()
    -        self.assertEquals(len(entries), 0)
    -
    -def test_get_all_entries(self):
    -    expected = ("My Title", "My Text")
    -    with self.app.test_request_context('/'):
    -        self.app.preprocess_request()
    -        flaskr.write_entry(*expected)
    -        entries = flaskr.get_all_entries()
    -        self.assertEquals(len(entries), 1)
    -        for entry in entries:
    -            self.assertEquals(expected[0], entry['title'])
    -            self.assertEquals(expected[1], entry['text'])
    -
    -
    -
    -

    Read Entries

    -

    Okay, so now we have 4 tests, and two fail, add this function to flaskr.py:

    -
    -def get_all_entries():
    -    cur = g.db.execute('select title, text from entries order by id desc')
    -    entries = [dict(title=row[0], text=row[1]) for row in cur.fetchall()]
    -    return entries
    -
    -

    Re-run your tests. You should now have four passing tests. Great Job!

    -
    -
    -

    Lab 2 - Part 3

    -

    Now we can read and write blog entries, let's add views so we can see what -we're doing.

    -

    Again. Tests come first.

    -

    And again, if you've fallen behind or want to start clean, the completed code -from our last step is in flaskr_3

    -
    -
    -

    Test the Front Page

    -

    Add the following tests to flaskr_tests.py:

    -
    -def test_empty_listing(self):
    -    rv = self.client.get('/')
    -    assert 'No entries here so far' in rv.data
    -
    -def test_listing(self):
    -    expected = ("My Title", "My Text")
    -    with self.app.test_request_context('/'):
    -        self.app.preprocess_request()
    -        flaskr.write_entry(*expected)
    -    rv = self.client.get('/')
    -    for value in expected:
    -        assert value in rv.data
    -
    -
    -
    -

    Template Inheritance

    -

    One aspect of Jinja2 templates we haven't seen yet is that templates can -inherit structure from other templates.

    -
      -
    • you can make replaceable blocks in templates with blocks: {% block foo -%}{% endblock %}.
    • -
    • you can build on a template in a second template by extending: {% extends -"layout.html" %} (this must be first)
    • -
    -

    We want the parts of our app to look alike, so let's create a basic layout -first. Create a file layout.html in the templates directory.

    -
    -
    -

    Creating Layout

    -
    -<!DOCTYPE html>
    -<html>
    -  <head>
    -    <title>Flaskr</title>
    -  </head>
    -  <body>
    -    <h1>Flaskr</h1>
    -    <div class="content">
    -    {% block body %}{% endblock %}
    -    </div>
    -  </body>
    -</html>
    -
    -
    -
    -

    Extending Layout

    -

    Create a new file, show_entries.html in templates:

    -
    -{% extends "layout.html" %}
    -{% block body %}
    -  <h2>Posts</h2>
    -  <ul class="entries">
    -  {% for entry in entries %}
    -    <li>
    -      <h2>{{ entry.title }}</h2>
    -      <div class="entry_body">
    -      {{ entry.text|safe }}
    -      </div>
    -    </li>
    -  {% else %}
    -    <li><em>No entries here so far</em></li>
    -  {% endfor %}
    -  </ul>
    -{% endblock %}
    -
    -
    -
    -

    Creating a View

    -

    Now, we just need to hook up our entries to that template. In flaskr.py -add the following code:

    -
    -# at the top, import
    -from flask import render_template
    -
    -# and after our last functions:
    -@app.route('/')
    -def show_entries():
    -    entries = get_all_entries()
    -    return render_template('show_entries.html', entries=entries)
    -
    -

    Run our tests. Should be 6 for 6 now.

    -
    -
    -

    Authentication

    -

    We don't want just anyone to be able to add new entries. So we want to be able -to authenticate a user.

    -

    We'll be using built-in functionality of Flask to do this, but this -simplest-possible implementation should serve only as a guide.

    -

    We'll start with the tests, of course.

    -
    -
    -

    Test Authentication

    -

    Back in flaskr_tests.py add new test methods:

    -
    -def test_login_passes(self):
    -    with self.app.test_request_context('/'):
    -        self.app.preprocess_request()
    -        flaskr.do_login(flaskr.app.config['USERNAME'],
    -                        flaskr.app.config['PASSWORD'])
    -        self.assertTrue(session.get('logged_in', False))
    -
    -def test_login_fails(self):
    -    with self.app.test_request_context('/'):
    -        self.app.preprocess_request()
    -        self.assertRaises(ValueError, flaskr.do_login,
    -                          flaskr.app.config['USERNAME'],
    -                          'incorrectpassword')
    -
    -
    -
    -

    Set Up Authentication

    -

    Now, let's add the code in flaskr.py to support this:

    -
    -# add an import
    -from flask import session
    -
    -# and configuration
    -USERNAME = 'admin'
    -PASSWORD = 'default'
    -
    -# and a function
    -def do_login(usr, pwd):
    -    if usr != app.config['USERNAME']:
    -        raise ValueError
    -    elif pwd != app.config['PASSWORD']:
    -        raise ValueError
    -    else:
    -        session['logged_in'] = True
    -
    -
    -
    -

    Login/Logout in Tests

    -

    Let's add tests for a view. We'll set up a form that redirects back to the -main view on success. First, methods to actually do the login/logout (in -flaskr_tests.py):

    -
    -def login(self, username, password):
    -    return self.client.post('/login', data=dict(
    -        username=username,
    -        password=password
    -    ), follow_redirects=True)
    -
    -def logout(self):
    -    return self.client.get('/logout',
    -                           follow_redirects=True)
    -
    -
    -
    -

    Test Authentication

    -

    And now the test itself (again, flaskr_tests.py):

    -
    -def test_login_logout(self):
    -    rv = self.login('admin', 'default')
    -    assert 'You were logged in' in rv.data
    -    rv = self.logout()
    -    assert 'You were logged out' in rv.data
    -    rv = self.login('adminx', 'default')
    -    assert 'Invalid Login' in rv.data
    -    rv = self.login('admin', 'defaultx')
    -    assert 'Invalid Login' in rv.data
    -
    -

    We should be up to 9 tests, one failing

    -
    -
    -

    Add Login Template

    -

    Add login.html to templates:

    -
    -{% extends "layout.html" %}
    -{% block body %}
    -  <h2>Login</h2>
    -  {% if error -%}
    -    <p class="error"><strong>Error</strong> {{ error }}
    -  {%- endif %}
    -  <form action="{{ url_for('login') }}" method="POST">
    -    <div class="field">
    -      <label for="username">Username</label>
    -      <input type="text" name="username" id="username"/>
    -    </div>
    -    <div class="field">
    -      <label for="password">Password</label>
    -      <input type="password" name="password" id="password"/>
    -    </div>
    -    <div class="control_row">
    -      <input type="submit" name="Login" value="Login"/>
    -    </div>
    -  </form>
    -{% endblock %}
    -
    -
    -
    -

    Add Login/Logout Views

    -

    And back in flaskr.py add new code. Let's start with imports:

    -
    -# at the top, new imports
    -from flask import request
    -from flask import redirect
    -from flask import flash
    -from flask import url_for
    -
    -
    -
    -

    And the View Code

    -
    -@app.route('/login', methods=['GET', 'POST'])
    -def login():
    -    error = None
    -    if request.method == 'POST':
    -        try:
    -            do_login(request.form['username'],
    -                     request.form['password'])
    -        except ValueError:
    -            error = "Invalid Login"
    -        else:
    -            flash('You were logged in')
    -            return redirect(url_for('show_entries'))
    -    return render_template('login.html', error=error)
    -
    -@app.route('/logout')
    -def logout():
    -    session.pop('logged_in', None)
    -    flash('You were logged out')
    -    return redirect(url_for('show_entries'))
    -
    -
    -
    -

    About Flash

    -

    Flask provides flash as a way of sending messages to the user from view -code. We need a place to show these messages. Add it to layout.html (along -with links to log in and out)

    -
    -<h1>Flaskr</h1>       <!-- already there -->
    -<div class="metanav"> <!-- add all this -->
    -{% if not session.logged_in %}
    -  <a href="{{ url_for('login') }}">log in</a>
    -{% else %}
    -  <a href="{{ url_for('logout') }}">log_out</a>
    -{% endif %}
    -</div>
    -{% for message in get_flashed_messages() %}
    -<div class="flash">{{ message }}</div>
    -{% endfor %}
    -<div class="content"> <!-- already there -->
    -
    -
    -
    -

    Adding an Entry

    -

    We still lack a way to add an entry. We need a view to do that. Again, tests -first (in flaskr_tests.py):

    -
    -def test_add_entries(self):
    -    self.login('admin', 'default')
    -    rv = self.client.post('/add', data=dict(
    -        title='Hello',
    -        text='This is a post'
    -    ), follow_redirects=True)
    -    assert 'No entries here so far' not in rv.data
    -    assert 'Hello' in rv.data
    -    assert 'This is a post' in rv.data
    -
    -
    -
    -

    Add the View

    -

    We've already got all the stuff we need to write entries, we just need an -endpoint that will do it via the web (in flaskr.py):

    -
    -# add an import
    -from flask import abort
    -
    -@app.route('/add', methods=['POST'])
    -def add_entry():
    -    if not session.get('logged_in'):
    -        abort(401)
    -    try:
    -        write_entry(request.form['title'], request.form['text'])
    -        flash('New entry was successfully posted')
    -    except sqlite3.Error as e:
    -        flash('There was an error: %s' % e.args[0])
    -    return redirect(url_for('show_entries'))
    -
    -
    -
    -

    Where do Entries Come From

    -

    Finally, we're almost done. We can log in and log out. We can add entries and -view them. But look at that last view. Do you see a call to -render_template in there at all?

    -

    There isn't one. That's because that view is never meant to be be visible. -Look carefully at the logic. What happens?

    -

    So where do the form values come from?

    -

    Let's add a form to the main view. Open show_entries.html

    -
    -
    -

    Provide a Form

    -
    -{% block body %}  <!-- already there -->
    -{% if session.logged_in %}
    -<form action="{{ url_for('add_entry') }}" method="POST" class="add_entry">
    -  <div class="field">
    -    <label for="title">Title</label>
    -    <input type="text" size="30" name="title" id="title"/>
    -  </div>
    -  <div class="field">
    -    <label for="text">Text</label>
    -    <textarea name="text" id="text" rows="5" cols="80"></textarea>
    -  </div>
    -  <div class="control_row">
    -    <input type="submit" value="Share" name="Share"/>
    -  </div>
    -</form>
    -{% endif %}
    -<h2>Posts</h2>  <!-- already there -->
    -
    -
    -
    -

    All Done

    -

    Okay. That's it. We've got an app all written.

    -

    So far, we haven't actually touched our browsers at all, but we have -reasonable certainty that this works because of our tests. Let's try it.

    -

    In the terminal where you've been running tests, run our flaskr app:

    -
    -(flaskenv)$ python flaskr.py
    -* Running on http://127.0.0.1:5000/
    -* Restarting with reloader
    -
    -
    -
    -

    The Big Payoff

    -

    Now load http://localhost:5000/ in your browser and enjoy your reward.

    -
    -
    -

    Lab 2 - Part 4

    -

    On the other hand, what we've got here is pretty ugly. We could prettify it.

    -

    Again, if you want to start fresh or you fell behind you can find code -completed to this point in flaskr_4.

    -

    In that directory inside the static directory you will find -styles.css. Open it in your editor. It contains basic CSS for this app.

    -

    We'll need to include this file in our layout.html.

    -
    -
    -

    Static Files

    -

    Like page templates, Flask locates static resources like images, css and -javascript by looking for a static directory next to the app module.

    -

    You can use the special url endpoint static to build urls that point here. -Open layout.html and add the following:

    -
    -<head>  <!-- you only need to add the <link> below -->
    -  <title>Flaskr</title>
    -  <link href="{{ url_for('static', filename='style.css') }}" rel="stylesheet" type="text/css">
    -</head>
    -
    -
    -
    -

    Deploying

    -

    First, move the source code to your VM:

    -
    -(flaskenv)$ cd ../
    -(flaskenv)$ tar -czvf flaskr.tgz flaskr
    -(flaskenv)$ scp flaskr.tgz <your_vm>:~/
    -(flaskenv)$ ssh <your_vm>
    -$ tar -zxvf flaskr.tgz
    -
    -

    Then, on your VM, set up a virtualenv with Flask installed

    -
    -
    -

    Deploying

    -

    You'll need to make some changes to mod_wsgi configuration.

    -
      -
    • Open /etc/apache2/sites-available/default in an editor (on the VM)
    • -
    • Add the following line at the top (outside the VirtualHost block): -WSGIPythonHome /path/to/flaskenv
    • -
    • Delete all other lines refering to mod_wsgi configuration
    • -
    • Add the following in the VirtualHost block:
    • -
    -
    -WSGIScriptAlias / /var/www/flaskr.wsgi
    -
    -
    -
    -

    Deploying

    -

    Finally, you'll need to add the named wsgi file and edit it to match:

    -
    -$ sudo touch /var/www/flaskr.wsgi
    -$ sudo vi /var/www/flasrk.wsgi
    -
    -
    -import sys
    -sys.path.insert(0, 'path/to/flaskr') # the flaskr app you uploaded
    -
    -from flaskr import app as application
    -
    -
    -
    -

    Deploying

    -

    Finally, restart apache and bask in the glow:

    -
    -$ sudo apache2ctl configtest
    -$ sudo /etc/init.d/apache2 graceful
    -
    -

    Load http://your_vm/

    -

    Wheeee!

    -
    -
    -

    Going Further

    -

    It's not too hard to see ways you could improve this.

    -
      -
    • For my part, I made a version using Bootstrap.js.
    • -
    • You could limit the number of posts shown on the front page.
    • -
    • You could add dates to the posts and provide archived views for older posts.
    • -
    • You could add the ability to edit existing posts (and add an updated date to the schema)
    • -
    • ...
    • -
    -
    -
    -

    But Instead

    -

    Instead of doing any of that, this week's assignment is a bit different.

    -

    You've implemented an app in one Small Framework. I want you to do it all -again, in a different Small Framework.

    -

    While you're working on it, think about the differences between your new -Framework and Flask. What do you like more? What do you like less? How might -this influence your choice of Frameworks in the future?

    -
    -
    -

    Assignment

    -
      -
    • Re-implement the Flaskr app we built in class in a different Small -Framework.
    • -
    • There are several named in the class outline, and in this presentation.
    • -
    • Pick one of them, or a different one of your choice. It must be Python.
    • -
    • When you are finished, add your source code and a README that talks about -your experience to the athome folder of week05.
    • -
    • Tell me about your new Framework. Discuss the points above regarding -differences.
    • -
    -
    -
    -

    Submitting The Assignment

    -
      -
    • Try to get your code running on your VM
    • -
    • Add your source code, in it's entirety, to the athome folder for week 5
    • -
    • Add a README.txt file that discusses the experience.
    • -
    • Commit your changes to your fork of the class repository and send me a pull -request
    • -
    diff --git a/presentations/week06.html b/presentations/week06.html index a81de52f..71ac779a 100644 --- a/presentations/week06.html +++ b/presentations/week06.html @@ -38,895 +38,8 @@

    Internet Programming with Python

    -img/django-pony.png -

    Week 6: Django - Part 1

    -

    Wherein we become 'perfectionists with deadlines'

    -

    image: http://djangopony.com/

    +

    blah blah blah

    - -
    -

    But First

    -

    Review from the Assignment

    -
    -
    -

    And Second

    -

    Questions from the Reading?

    -
    -
    -

    And Now

    -img/django_lead.png -
    -
    -

    Full Stack Framework

    -

    Django comes with:

    -
      -
    • Persistence via the Django ORM
    • -
    • CRUD content editing via the automatic Django Admin
    • -
    • URL Mapping via urlpatterns
    • -
    • Templating via the Django Template Language
    • -
    • Caching with levels of configurability
    • -
    • Internationalization via i18n hooks
    • -
    • Form rendering and handling
    • -
    -

    Pretty much everything you need to make a solid website quickly

    -
    -
    -

    What Sets it Apart?

    -

    Lots of frameworks offer some of these features, if not all.

    -

    What is Django's killer feature

    -

    The Django Admin

    -
    -
    -

    The Django Admin

    -

    Works in concert with the Django ORM to provide automatic CRUD functionality

    -

    You write the models, it provides the UI

    -

    Really

    -
    -
    -

    The Pareto Principle

    -

    The Django Admin is a perfect embodiment of the Pareto Priciple, a.k.a. the -80/20 rule:

    -

    80% of the problems can be solved by 20% of the effort

    -

    The converse also holds true:

    -

    Fixing the last 20% of the problems will take the remaining 80% of the effort.

    -
    -
    -

    Other Django Advantages

    -

    Clearly the most popular Python web framework at this time

    -

    Popularity translates into:

    -
      -
    • Active, present community
    • -
    • Plethora of good examples to be found online
    • -
    • Rich ecosystem of apps (encapsulated add-on functionality)
    • -
    -

    Jobs

    -
    -
    -

    Active Development

    -

    Popular frameworks tend to be actively developed.

    -

    Django releases in the last 12 months:

    -
      -
    • 1.5 (any day now)
    • -
    • 1.4.3 (December 2012)
    • -
    • 1.3.5 (December 2012)
    • -
    • 1.4.2 (November 2012)
    • -
    • 1.3.3 (August 2012)
    • -
    • 1.4.1 (July 2012)
    • -
    • 1.3.2 (July 2012)
    • -
    • 1.4 (March 2012)
    • -
    -
    -
    -

    Great Documentation

    -

    Thorough, readable, and discoverable.

    -

    Led the way to better documentation for all Python

    -

    Read The Docs - built in connection with -Django, sponsored by the Django Software Foundation.

    -

    Write documentation as part of your python package, and render new versions of -that documentation for every commit

    -

    this is awesome

    -
    -
    -

    History

    -

    Django was created to power the website of the Lawrence Journal-World -newspaper, Lawrence, KS

    -

    This birth in practicality is reflected in the design of the system.

    -

    Pretty much every design decision was made to solve a real problem.

    -

    You can read more in this Quora post

    -
    -
    -

    Django Organization

    -

    Django is organized into projects and apps

    -

    A Django project represents the totality of a website, all the pages it -will contain and all the functionality it supports

    -

    A Django app represents an individual unit of functionality: a blog, a -forum, a registration system, a content tagging system, etc.

    -

    One project can (and likely will) consist of many apps

    -
    -
    -

    Starting a Project

    -

    You should already have done this at home, but we'll look at it together -quickly, in case:

    -
      -
    • Set up a Django virtualenv
    • -
    • Activate that env and pip install django
    • -
    • Create a new Django project:
    • -
    -
    -(djangoenv)$ django-admin.py startproject mysite
    -
    -

    This will create a folder called 'mysite'. Let's take a look at it:

    -
    -
    -

    Project Layout

    -

    The folder created by django-admin.py contains the following structure:

    -
    -mysite/
    -    manage.py
    -    mysite/
    -        __init__.py
    -        settings.py
    -        urls.py
    -        wsgi.py
    -
    -

    If what you see doesn't match that, you're using an older version of Django. -Make sure you've installed 1.4.3.

    -
    -
    -

    What Got Created

    -
      -
    • outer *mysite* folder: this is just a container and can be renamed or -moved at will
    • -
    • inner *mysite* folder: this is your project directory. It should not be -renamed.
    • -
    • __init__.py: magic file that makes mysite a python package.
    • -
    • settings.py: file which holds configuration for your project, more soon.
    • -
    • urls.py: file which holds top-level URL configuration for your project, -more soon.
    • -
    • wsgi.py: the .wsgi file which allows your project to be run in a wsgi -server, like mod_wsgi.
    • -
    • manage.py: a management control script.
    • -
    -
    -
    -

    django-admin.py and manage.py

    -

    django-admin.py provides a hook for administrative tasks and abilities:

    -
      -
    • creating a new project or app
    • -
    • running the development server
    • -
    • executing tests
    • -
    • entering a python interpreter
    • -
    • entering a database shell session with your database
    • -
    • much much more (run django-admin.py without an argument)
    • -
    -

    manage.py wraps this functionality, adding the full environment of your -project.

    -
    -
    -

    Development Server

    -

    At this point, you should be ready to use the development server:

    -
    -(djangoenv)$ cd mysite
    -(djangoenv)$ python manage.py runserver
    -...
    -
    -

    Load http://localhost:8000 in your browser.

    -
    -
    -

    A Blank Slate

    -

    You should see this:

    -img/django-start.png -

    Do you?

    -
    -
    -

    Connecting A Database

    -

    Django comes with its own ORM (Object-Relational Mapper)

    -

    The first step in working with Django is to connect it to your database (this -is set in settings.py)

    -
    -DATABASES = {
    -    'default': {
    -        'ENGINE': 'django.db.backends.<your_db_backend>',
    -        'NAME': '<your_db_name>',
    -        'USER': '<your_db_user>',
    -        'PASSWORD': '<your_db_password>',
    -        'HOST': '<not_needed_on_localhost>',
    -        'PORT': '<not_needed_on_localhost>',
    -    }
    -}
    -
    -
    -
    -

    A Quick Word about Databases

    -

    Sqlite3 is not a production-capable database. Do not attempt to use it as -such. Do not start a real project using sqlite3, expecting to move 'when -you go to production'.

    -

    That being said, proper database administration is out-of-scope for this -class. If you haven't already got a PostgreSQL or MySQL database set up and -ready to use, just use sqlite3 so we can get through this.

    -
    -
    -

    Building DB Tables

    -

    The Django ORM builds tables. Django models describe the objects you want, the -ORM does the rest.

    -

    Django comes with some apps set up and ready to use. These define models, -and need tables to power them. You create the tables by running the management -command syncdb:

    -
    -(djangoenv)$ python manage.py syncdb
    -
    -

    Add your first admin user when prompted (remember the password)

    -
    -
    -

    Lab

    -

    The remainder of our class today will be lab time. We'll be directly playing -with Django from here on out.

    -

    Todays lab is drawn from the Django Tutorial, with some minor -adjustments.

    -
    -
    -

    Lab - Part One

    -

    We are going to create an app to add to our project. This app will:

    -
      -
    • Allow a user to create poll questions
    • -
    • Allow a user to provide choices for these questions
    • -
    • Allow visitors to a site to see these questions and vote for an answer
    • -
    • Allow the total vote tallies for the answers to a poll question to be -displayed.
    • -
    -

    As stated above, an app should represent a unit of functionality within a -larger system, the project. We have a project, we need to create an app

    -
    -
    -

    Create an App

    -

    This is accomplished using manage.py.

    -

    In your terminal, make sure you are in the outer mysite directory, where the -file manage.py is located. Then:

    -
    -(djangoenv)$ python manage.py startapp polls
    -
    -
    -
    -

    What is Created

    -

    This should leave you with the following structure:

    -
    -mysite/
    -    manage.py
    -    mysite/
    -        ...
    -    polls/
    -        __init__.py
    -        models.py
    -        tests.py
    -        views.py
    -
    -

    We'll start by defining the objects we will work with: poll questions and -choices.

    -
    -
    -

    Models

    -

    Open the file models.py in your editor, and add the following code:

    -
    -from django.db import models
    -
    -class Poll(models.Model):
    -    question = models.CharField(max_length=200)
    -    pub_date = models.DateTimeField('date published')
    -
    -class Choice(models.Model):
    -    poll = models.ForeignKey(Poll)
    -    choice = models.CharField(max_length=200)
    -    votes = models.IntegerField(default=0)
    -
    -
    -
    -

    Model Details

    -

    Let's look at that a bit more closely:

    -
    -class Poll(models.Model):
    -
    - -
      -
    • Our Models are Python classes that inherit from the Model class
    • -
    • The Model class provides a standard API for interacting with a database, -centered on the object defined by the model.
    • -
    • You can add functionality to your object by adding methods to these models.
    • -
    • Consider methods added to a model to be row-level operations. They will work -on a single record from the database, not on entire tables
    • -
    • You can read much more about the Model API
    • -
    -
    -
    -

    Field Details

    -

    A model has attributes defined by Fields:

    -
    -question = models.CharField(max_length=200)
    -pub_date = models.DateTimeField('date published')
    -poll = models.ForeignKey(Poll)
    -votes = models.IntegerField(default=0)
    -
    -
      -
    • Fields map to columns in a database table
    • -
    • Note there are no explicit primary key fields. Django does this -automatically
    • -
    • Different field types map to different SQL column types, the ORM handles -this.
    • -
    • Django fields can handle complex relationships between objects.
    • -
    • Field constructors take arguments, some are common to all Fields, others -particular to a given Field type.
    • -
    • ALL Django model fields default to being NOT NULL (required). You change -this with the blank and null constructor arguments
    • -
    • You can read much more about Model Fields
    • -
    -
    -
    -

    Hooking it Up

    -

    Okay, we've got a couple of models, now we need to add our app to our -project.

    -

    In Django, this is accomplished by configuration.

    -

    Configuration takes place in the project settings.py file.

    -

    Open that file now, in your editor.

    -
    -
    -

    Installing Apps

    -

    You extend Django functionality by installing apps. Find the following block -in settings.py and edit it like so:

    -
    -INSTALLED_APPS = (
    -    'django.contrib.auth',
    -    'django.contrib.contenttypes',
    -    'django.contrib.sessions',
    -    'django.contrib.sites',
    -    'django.contrib.messages',
    -    'django.contrib.staticfiles',
    -    # Uncomment the next line to enable the admin:
    -    # 'django.contrib.admin',
    -    # Uncomment the next line to enable admin documentation:
    -    # 'django.contrib.admindocs',
    -    'polls', # <- YOU ADD THIS PART
    -)
    -
    -
    -
    -

    Setting Up the Database

    -

    By now, we should have some guess as to what the next step will be

    -
    -(djangoenv)$ python manage.py syncdb
    -
    -

    This will execute the SQL commands needed to create the new tables in your -database.

    -
    -
    -

    A Word About Development

    -

    These models we've created are not going to change. This is unusual for a -development cycle.

    -

    The syncdb management command only creates tables that do not yet exist. -It does not update tables.

    -

    It is easy to get your model definitions out of sync with your database.

    -

    Django provides the management command sqlclear to handle this. It drops -all tables, so you can run syncdb again.

    -
    -
    -

    ACK!!!

    -

    That doesn't sound very nice, does it?

    -

    We'll learn a better way next week

    -
    -
    -

    The Django Shell

    -

    Django provides a management command shell:

    -
      -
    • Shares the same sys.path as your project, so all installed python -packages are present.
    • -
    • Imports the settings.py file from your project, and so shares all -installed apps and other settings.
    • -
    • Handles connections to your database, so you can interact with live data -directly.
    • -
    -

    Let's explore the Model Instance API directly using this shell

    -
    -
    -

    Model Instance API

    -
    -(djangoenv)$ python manage.py shell
    -
    -
    ->>> from polls.models import Poll
    ->>> Poll.objects.count()
    -0
    ->>> p1 = Poll(question="What is your name?")
    ->>> p1.full_clean()
    -Traceback (most recent call last):
    -  ...
    ->>> from django.utils import timezone
    ->>> p1.pub_date = timezone.now()
    ->>> p1.full_clean()
    ->>> p1.save()
    ->>> Poll.objects.count()
    -1
    -
    -
    -
    -

    More API

    -
    ->>> Poll.objects.filter(id=1)
    -[<Poll: Poll object>]
    ->>> what_polls = Poll.objects.filter(question__startswith="What")
    -[<Poll: Poll object>]
    ->>> mypoll = Poll.objects.get(pk=1)
    ->>> mypoll.choice_set.all()
    -[]
    ->>> from polls.models import Choice
    ->>> c1 = Choice(choice="King Arthur of the Britons", poll=mypoll)
    ->>> c1.save
    ->>> mypoll.choice_set.all()
    -[<Choice: Choice object>]
    ->>> mypoll.choice_set.create(choice="Lancelot of Camelot")
    ->>> mypoll.choice_set.all()
    -[<Choice: Choice object>, <Choice: Choice object>]
    -
    -
    -
    -

    Enhancing Models

    -

    It's clear that the representation of our objects leaves something to be -desired. Django can help

    -

    Back in models.py, add these methods:

    -
    -class Poll(models.Model):
    -    # ...
    -    def __unicode__(self):
    -        return self.question
    -
    -class Choice(models.Model):
    -    # ...
    -    def __unicode__(self):
    -        return self.choice
    -
    -
    -
    -

    Model Methods

    -

    This __unicode__ method is a normal python instance method. You can add -other methods, too (still models.py):

    -
    -from django.utils import timezone
    -
    -class Poll(models.Model):
    -    # ...
    -    def published_today(self):
    -        now = timezone.now()
    -        time_delta = now - self.pub_date
    -        return time_delta.days == 0
    -
    -

    Save that, then start up the Django shell again (python manage.py shell)

    -
    -
    -

    Check Custom Methods

    -
    ->>> from polls.models import Poll
    ->>> mypoll = Poll.objects.get(pk=1)
    ->>> mypoll
    -<Poll: What is your name?>
    ->>> mypoll.choice_set.all()
    -[<Choice: King Arthur of the Britons>,
    - <Choice: Lancelot of Camelot>,
    - <Choice: Robin of Camelot>]
    ->>> mypoll.published_today()
    -True
    -
    -
    -
    -

    Testing Our Models

    -

    As with any project, we want to test our work. Django provides a testing -framework to allow this.

    -

    Django supports both unit tests and doctests. I strongly suggest using -unit tests.

    -

    You add tests for your app to the file tests.py, which should be at the -same package level as models.py.

    -

    Locate and open this file in your editor. We are going to add a few tests for -the models we've just written.

    -
    -
    -

    Testing Setup

    -
    -from datetime import timedelta
    -
    -from django.test import TestCase
    -from django.utils import timezone
    -
    -from polls.models import Poll
    -
    -class PollTest(TestCase):
    -    def setUp(self):
    -        self.expected_question = "what is the question?"
    -        self.expected_choice = "do you like spongecake?"
    -        self.poll = Poll.objects.create(
    -            question=self.expected_question,
    -            pub_date=timezone.now())
    -        self.choice = self.poll.choice_set.create(
    -            choice=self.expected_choice)
    -
    -
    -
    -

    Writing Tests

    -
    -def test_poll_display(self):
    -    self.assertEquals(unicode(self.poll), self.expected_question)
    -    new_question = "What is the answer?"
    -    self.poll.question = new_question
    -    self.assertEquals(unicode(self.poll), new_question)
    -
    -def test_choice_display(self):
    -    self.assertEquals(unicode(self.choice), self.expected_choice)
    -    new_choice = "is left better than right?"
    -    self.choice.choice = new_choice
    -    self.assertEquals(unicode(self.choice), new_choice)
    -
    -def test_published_today(self):
    -    self.assertTrue(self.poll.published_today())
    -    delta = timedelta(hours=26)
    -    self.poll.pub_date = self.poll.pub_date - delta
    -    self.assertFalse(self.poll.published_today())
    -
    -
    -
    -

    Running Tests

    -

    You can run your tests using a management command provided by Django:

    -
    -(djangoenv)$ python manage.py test polls
    -
    -
      -
    • This will run the tests for the polls app
    • -
    • You can provide the name of any installed app
    • -
    • If you provide no name, the tests for all installed apps will run
    • -
    • You can run subsets by providing dotted names: polls.PollTest, -polls.PollTest.test_poll_display
    • -
    -

    There is a lot more to know about Testing Django applications

    -
    -
    -

    What to Test

    -

    In any framework, the question arises of what exactly to test. Much of the -functioning of your app is provided by framework tools. Do you need to test -that stuff?

    -

    I usually don't write tests covering features provided directly by the -framework.

    -

    I do write tests for functionality I add, and for places where I make -changes to how the default functionality works.

    -

    This is largely a matter of style and taste (and of how much development time -you have).

    -
    -
    -

    Lab - Part Two

    -

    In this part, we'll be adding our app to the Django Admin. This will allow -us to add, edit and delete objects with a minimum of work.

    -

    We'll focus instead on how to customize the admin to get the best results we -can.

    -
    -
    -

    Install the Admin

    -

    The Django Admin is, itself, an app. It is not installed by default.

    -

    Open the settings.py file from our mysite project package and uncomment -the admin bit:

    -
    -INSTALLED_APPS = (
    -    # ...
    -    'django.contrib.staticfiles',
    -    # Uncomment the next line to enable the admin:
    -    'django.contrib.admin', # <- THIS LINE HERE
    -    # Uncomment the next line to enable admin documentation:
    -    # 'django.contrib.admindocs',
    -    'polls',
    -)
    -
    -
    -
    -

    Add the Admin Tables

    -

    As you might expect, enabling the admin alters our DB. We'll need to run -the syncdb management command:

    -
    -(djangoenv)$ python manage.py syncdb
    -Creating tables ...
    -Creating table django_admin_log
    -Installing custom SQL ...
    -Installing indexes ...
    -Installed 0 object(s) from 0 fixture(s)
    -
    -

    All set. Let's add URLs next

    -
    -
    -

    Django URL Resolution

    -

    Like Flas, Django has a system for routing URLs to code: the urlconf.

    -
      -
    • a urlconf is a list of mappings
    • -
    • each mapping has a regexp rule, representing the URL
    • -
    • each mapping names or provides the callable to be invoked
    • -
    • each mapping can have a name, used to reverse the URL
    • -
    • a urlconf should be created using functions from the django.conf.urls -module
    • -
    • django will load the urlconf named urlpatterns that it finds in the file -named in settings.ROOT_URLCONF.
    • -
    • That urlconf must include any others it requires
    • -
    -
    -
    -

    Django URL Patterns

    -

    Open the file urls.py from your mysite project package:

    -
    -from django.conf.urls import patterns, include, url
    -...
    -urlpatterns = patterns('',
    -    # list of url patterns
    -)
    -
    -

    You can include lists of urls from installed apps by using the include -function as the callable in a url pattern:

    -
    -url(r'^blog/', include('my.blog.app.urls'))
    -
    -
    -
    -

    Including the Admin

    -

    Using this knowledge, we can add all the URLs provided by the Django admin -in one stroke. Edit urls.py, which is open in your editor, and uncomment -three lines:

    -
    -from django.contrib import admin #<- Uncomment these two
    -admin.autodiscover()
    -
    -urlpatterns = patterns('',
    -
    -    # Uncomment the next line to enable the admin:
    -    url(r'^admin/', include(admin.site.urls)), #<- and this
    -)
    -
    -
    -
    -

    Using the Development Server

    -

    We can now view the admin. We'll use the Django development server.

    -

    In your terminal, use the runserver management command to start the -development server:

    -
    -(djangoenv)$ python manage.py runserver
    -Validating models...
    -
    -0 errors found
    -Django version 1.4.3, using settings 'mysite.settings'
    -Development server is running at http://127.0.0.1:8000/
    -Quit the server with CONTROL-C.
    -
    -
    -
    -

    Viewing the Admin

    -

    Load http://localhost:8000/. You should see this:

    -img/django-admin-login.png -

    Login with the name and password you created before.

    -
    -
    -

    The Admin Index

    -

    The index will provide a list of all the installed apps and each model -registered. You should see this:

    -img/admin_index.png -

    Click on Users. Find yourself? Edit yourself, but don't uncheck -superuser.

    -
    -
    -

    Add Polls to the Admin

    -

    Okay, let's add our app, and the models therein, to the admin.

    -

    Add a new file to the polls app package: admin.py. Edit it and add the -following:

    -
    -from django.contrib import admin
    -from polls.models import Poll, Choice
    -
    -admin.site.register(Poll)
    -admin.site.register(Choice)
    -
    -

    Restart your Development server and reload the admin index

    -
    -
    -

    Customized Admin

    -

    The Django Admin displays ModelAdmin instances for any models that are -registered

    -
      -
    • The object admin.site is a global instance of the Admin class.
    • -
    • Each call to admin.site.register adds a new model to the global site
    • -
    • register takes two args: a Model subclass and a ModelAdmin subclass
    • -
    • If you call it with only the Model subclass, the ModelAdmin is -automatically generated.
    • -
    • You can create, and customize, a ModelAdmin subclass for your models.
    • -
    -
    -
    -

    Create a PollAdmin

    -

    In admin.py add the following code (above the calls to register):

    -
    -class PollAdmin(admin.ModelAdmin):
    -    list_display = ('pub_date', 'question',
    -                    'published_today')
    -    list_filter = ('pub_date', )
    -    ordering = ('pub_date', )
    -
    -

    Then add this new class to the register call for our Poll:

    -
    -admin.site.register(Poll, PollAdmin)
    -
    -
    -
    -

    More Convenient Relations

    -

    In our Admin site, you can see the Poll to which a Choice belongs.

    -

    It'd be a lot nicer to be able to manage the Choices for a Poll from -the poll admin page, wouldn't it?

    -

    The Django Admin provides a special type of ModelAdmin for just this -purpose: The InlineModelAdmin.

    -

    There are two flavors, stacked and tabular. The tabular version is more -compact as it displays each related object in a single table row.

    -
    -
    -

    Create a Choice Inline

    -

    Add the following code above our PollAdmin class in admin.py:

    -
    -class ChoiceInline(admin.TabularInline):
    -    model = Choice
    -    extra = 3
    -    ordering = ('choice', )
    -
    -

    Then, add the inline to PollAdmin:

    -
    -class PollAdmin(admin.ModelAdmin):
    -    # ...
    -    inlines = (ChoiceInline, )
    -
    -
    -
    -

    Method Attributes for the Admin

    -

    For example, methods of a class you use in the admin can have special -attributes that alter how it works. Make these changes to models.py

    -
    -class Poll(models.Model):
    -    ...
    -    def published_today(self):
    -        now = timezone.now()
    -        time_delta = now - self.pub_date
    -        return time_delta.days == 0
    -    published_today.boolean = True
    -    published_today.short_description = "Published Today?"
    -
    -
    -
    -

    Reap the Rewards

    -

    Good work. You've set up a fully functional CRUD admin interface for your -application database in about 25 lines of code.

    -

    Play with it for a bit.

    -
    -
    -

    Lab - Part Three

    -

    In this part, we'll add public views and set up a way for visitors to vote -in our poll.

    -

    Along the way, we'll learn a bit about Django's Generic Views and the -Django Templating Language

    -
    -
    -

    Django Views

    -

    Django views are callables that take a request and return a response.

    -

    From the beginning, these have been functions. They still can be.

    -

    Version 1.3 added support for Class-based Views.

    -

    Really, they've always been there implicitly. The Admin is just a big -class-based view.

    -
    -
    -

    Generic Views

    -

    One of the most common uses for Class-based Views is in creating Generic Views.

    -

    Some public views are so common that providing a simple and generic interface -for making them is a big win.

    -
      -
    • Showing a list of objects of some type.
    • -
    • Showing the details of a single object of some type.
    • -
    • Displaying a static HTML template (or a template with some dynamic context)
    • -
    • Displaying and processing a simple HTML form.
    • -
    -
    -
    -

    Our Application

    -

    We'd like to be able to add some views that show our polls to the public.

    -

    What views would we like to have?

    -
      -
    • A list of all polls, perhaps ordered by publication date
    • -
    • A display of a single poll, showing each choice and allowing a vote
    • -
    • A view that processes a vote
    • -
    • A view that shows the poll results after you vote.
    • -
    -

    I start by configuring my URLs, it helps me think about the app API.

    -
    -
    -

    Configure URLs

    -

    In your polls app package, add a new file: urls.py. Open it in an -editor:

    -
    -from django.conf.urls import patterns, url
    -from django.http import HttpResponse
    -
    -def stub(request, *args, **kwargs):
    -    return HttpResponse('stub view', mimetype="text/plain")
    -
    -urlpatterns = patterns('',
    -    url(r'^$', stub, name="poll_list"),
    -    url(r'^(?P<pk>\d+)/$', stub, name="poll_detail"),
    -    url(r'^(?P<pk>\d+)/vote/$' stub, name="poll_vote"),
    -    url(r'^(?P<pk>\d+)/result/$', stub, name="poll_result"),
    -)
    -
    -
    -
    -

    Hook URLs to the Root

    -

    Like with the Django Admin, we can now add all the urls for our poll app at -once.

    -

    In the urls.py in our mysite project package, add the following:

    -
    -urlpatterns = patterns('',
    -    url(r'^admin/', include(admin.site.urls)),
    -    url(r'^polls/', include('polls.urls')), # ADD
    -)
    -
    -

    Restart the development server and load http://localhost:8000/polls/

    -
    -
    -

    Generic Poll List

    -

    Django's Generic Views allow you to do quite a lot with just a little code. -Edit urls.py:

    -
    -# add this import
    -from django.views.generic import ListView
    -
    -# edit the url pattern for the poll list:
    -url(r'^$',
    -    ListView.as_view(
    -        queryset=Poll.objects.order_by('-pub_date')[:5],
    -        context_object_name='polls',
    -        template_name="polls/list.html"
    -    ),
    -    name="poll_list"),
    -
    -

    Now, we just need to make that template

    -
    -
    -

    Django Templates

    -

    The Django Template Language looks a lot like -Jinja2. It is, however, quite a bit more limited.

    -
      -
    • variables available in context may be printed with {{ name }}
    • -
    • variables that are objects or dictionaries may be addressed with dots: {{ -name.attr }}
    • -
    • filters are available and look the same {{ name|upper }}
    • -
    • logical tags: {% for x in y %}{{ x }}{% endfor %}
    • -
    • available filters and tags may be extended with custom code
    • -
    • templates can be extended and included
    • -
    • you may define blocks in templates to be filled by other templates.
    • -
    • you may not execute arbitrary python or assign variables and use them
    • -
    -
    -
    -

    Setting Up

    -

    In assignments/week06/lab/source you'll find a file base.html.

    -

    Create a new directory, templates in your polls app package.

    -

    Copy the base.html file into that new directory.

    -

    Next, create a folder polls inside that new templates directory. We'll -add our individual templates here.

    -
    -
    -

    List Template

    -

    Add list.html inside templates/polls:

    -
    -{% extends "base.html" %}
    -
    -{% block content %}
    -<h1>Latest Polls</h1>
    -{% for poll in polls %}
    -<div class="poll">
    -  <h2><a href="{% url poll_detail poll.pk %}">{{ poll }}</a></h2>
    -</div>
    -{% endfor %}
    -{% endblock %}
    -
    -

    Now, load http://localhost:8000/polls/ again.

    Detail View

    @@ -1118,56 +231,6 @@

    Play a Bit

    Take a few minutes to add some polls in the Admin.

    Then return to the public side and vote. See how it goes.

    -
    -

    Next Week

    -

    We are going to mix it up quite a bit this week.

    -

    I would like you all to divide into teams. Each team should have 4-6 people. -Each team should have both experienced and inexperienced members. Try to match -up with people whose strengths are different from your own.

    -

    Now, each team, pick a 'facilitator'. This person will be responsible for -managing the operation of the team. This person will help to ensure that each -team member has a task. This should be a more experienced team member.

    -
    -
    -

    Assignment

    -

    During this week, each non-leader member will duplicate the Flaskr app -using Django.

    -
      -
    • Create a new app which will hold all the code required.
    • -
    • Define the model for the 'entry' object.
    • -
    • Extend that model with two additional fields: publication_date -(DateTimeField), and author (ForeignKey to -django.contrib.auth.models.User)
    • -
    • Define the URLs you'll need (an entry list, a form processor)
    • -
    • Define the Views you'll need (see the two above).
    • -
    -
    -
    -

    Assignment

    -

    During this week, each team leader will communicate with me to build a -plan for implementing a new feature for the Django flaskr app.

    -
      -
    • User Registration
    • -
    • 'Archive' views based on date or author
    • -
    • WYSIWYG visual editor for entry posts.
    • -
    • Tagging
    • -
    • Theme (make it beautiful)
    • -
    • Search (this is a bigger one than you might think)
    • -
    -
    -
    -

    Submitting the Assignment

    -

    Leaders, you will communicate with me to make a plan

    -

    Members, you will do the usual submission of your code.

    -

    DO NOT ATTEMPT TO GET YOUR CODE RUNNING ON A VM

    -
    -
    -

    Next Week

    -

    Our class next week will be a little different. Each team will be implementing -a new feature for our micro-blog application.

    -

    We will work in teams for the entire class up until 8:30, when we will show -off our results.

    -
    diff --git a/project.html b/project.html deleted file mode 100644 index c82c08f0..00000000 --- a/project.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - Final Project — Internet Programming with Python 1.0 documentation - - - - - - - - - - - - - -
    -
    -
    -
    - -
    -

    Final Project¶

    -

    This course has a Final Project which is an integral part of the -evaluation. Students must complete the final project to successfully pass the -course.

    -
    -

    Project Parameters¶

    -
      -
    • Create a Website
    • -
    • It can do anything you want it to.
    • -
    • It should have some user interactions (forms users complete).
    • -
    • It should look nice
    • -
    • It should show off some aspect of what you’ve learned
    • -
    • It should take you about 15-20 hours to create (so small)
    • -
    • It will be due Friday following the last day of class (March 15)
    • -
    -

    Students should check with the instructor or TA to ensure project scope is -appropriate for the time available.

    -

    Much of the class time in weeks 9 and 10 will be devoted to working on this -project. Students will be able to work directly with the instructor and TA to -answer questions and get assistance.

    -
    -
    -

    Submitting The Project¶

    -

    The assignment is due at the end of the last week of class.

    -

    Assignments will be submitted via an email containing:

    -
      -
    • A Link to the project site running online
    • -
    • A Link to the project source code repository in Github.
    • -
    • Text describing the goals and outcomes of the project. (This can also -be in the form of a README in the source code repository)
    • -
    • Instructions on how to run the project locally on a laptop (including -information about any required packages or non-python software required)
    • -
    -
    -
    -

    Evaluating the Project¶

    -

    For evaluation purposes, the running site is the vital part. The instructor -will compare the description of project goals with the running site to see if -the goals were met.

    -
    -
    - - -
    -
    -
    -
    -
    -

    Table Of Contents

    - - -

    This Page

    - - - -
    -
    -
    -
    - - - - \ No newline at end of file diff --git a/search.html b/search.html index 1b0eb9bf..bbd38d48 100644 --- a/search.html +++ b/search.html @@ -8,7 +8,7 @@ - Search — Internet Programming with Python 1.0 documentation + Search — Python Web Programming Workshop 1.0 documentation @@ -26,7 +26,7 @@ - + @@ -40,7 +40,7 @@

    Navigation

  • index
  • -
  • Internet Programming with Python 1.0 documentation »
  • +
  • Python Web Programming Workshop 1.0 documentation »
  • @@ -88,11 +88,11 @@

    Navigation

  • index
  • -
  • Internet Programming with Python 1.0 documentation »
  • +
  • Python Web Programming Workshop 1.0 documentation »
  • diff --git a/searchindex.js b/searchindex.js index 6916ee85..a9a548c6 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{all:[1,2,3],code:[0,1,2],queri:2,consum:2,four:2,concept:2,skim:2,ronach:2,abil:2,edu:[1,2],follow:[0,2],although:2,decid:[],educ:1,git:3,flask:2,tomayko:2,descript:0,program:[1,2],decis:2,text:0,sens:2,cgi:[1,2],spec:2,introduc:2,fax:1,sourc:[0,2],string:2,chameleon:2,far:2,mcdonough:2,util:2,veri:2,word:2,unexcus:1,hour:0,level:1,button:3,list:[3,2],"try":2,imaplib:2,kit:2,team:2,small:[0,1,2],pleas:2,enterpris:2,outlin:[1,2],representational_state_transf:2,cgi_exampl:[],htm:2,request:[1,2,3],restkit:2,design:2,pass:[0,1,2],further:2,carlo:2,click:3,even:2,index:1,what:[0,2],sud:2,compar:[0,2],defin:2,section:2,advanc:2,abl:[0,1],brief:2,access:[1,2],delet:2,version:2,"new":3,appeal:2,"public":2,contrast:[1,2],hasn:2,full:2,berkelei:2,gener:2,learn:[0,1,2],chang:[3,2],here:[1,2,3],met:0,let:2,cursor:2,inher:2,along:2,search:1,technolog:2,step:[3,2],prior:1,zodb:2,doctest:2,pick:2,implement:[1,2],chanc:2,ourselv:2,via:[0,1,2],repositori:[0,3,2],extra:[],activ:1,modul:[1,2],gatewai:2,api:[1,2],seattl:[],instal:2,txt:2,plone:[1,2],cloud:[1,2],highli:1,jan:2,from:[1,2,3],describ:0,commun:2,univers:1,regist:1,two:[1,2],todai:2,next:2,websit:[0,3,2],few:2,live:2,recommend:2,scope:[0,2],type:2,tell:3,memeori:1,share:2,relat:2,reign:2,enhanc:[],downtown:[],appendix:2,indic:1,particular:2,actual:[3,2],must:[0,2],topic:[1,2],account:3,retriev:2,valuabl:2,prepar:2,work:[0,1,2],focu:[1,2],histori:2,can:[0,1,2,3],http2:[],purpos:[0,2],root:2,repoz:2,quickstart:2,give:2,process:2,registr:[],smtp:2,accept:2,autumn:[],tag:2,explor:[1,2],tal:2,onlin:[0,2],differenti:2,cours:[0,1,2,3],end:[0,2],winter:1,secur:[],anoth:2,write:[3,2],how:[0,1,2],vital:0,answer:[0,2],instead:2,simpl:[1,2],chri:2,updat:2,product:2,mar:2,resourc:2,attend:1,dive:2,after:[3,2],sundai:2,lab:2,befor:2,mac:2,attent:2,date:2,philosophi:2,associ:2,demonstr:2,goal:[0,2],classroom:1,"short":[3,2],practic:2,third:2,author:2,django:[1,2],tale:2,inform:[0,1,2],combin:2,pocoo:[],allow:2,order:1,talk:2,tty:1,help:2,hypertext:2,insight:2,soon:[],through:[1,2],dynam:2,paramet:[0,1],style:[],directli:0,concis:2,late:2,grade:1,offic:1,html:2,rapidli:2,persist:[],comprehens:2,mail:1,might:2,pce:[],them:[1,2,3],good:[1,2],"return":2,thei:[1,2],python:[0,1,2],dan:2,dai:[0,2],initi:2,cew:[3,2],framework:[1,2],hateoa:2,httplib2:2,tilkov:2,discuss:2,introduct:[1,2],choic:2,term:1,name:2,anyth:0,didn:2,bonu:2,micro:2,slide:1,each:[1,2],debug:2,found:2,went:2,gui:2,compil:2,domain:2,laboratori:[1,2],individu:1,continu:2,weeknn:3,realli:2,ensur:[0,2],connect:[1,2],doug:2,our:2,happen:2,out:2,variabl:2,accomplish:2,network:[1,2],influenc:2,open:2,defend:2,publish:2,content:[1,2],dso:1,rel:2,internet:[1,2],clone:3,common:2,workflow:2,given:2,pub:2,standard:[1,2],quick:[1,2],reason:1,base:[1,2],org:2,fridai:[0,2],care:2,filter:2,lucumr:[],place:3,principl:1,assign:[0,1,2,3],south:[],first:2,origin:[3,2],softwar:0,render:2,feel:2,onc:[],qualiti:2,scene:2,mai:2,instruct:[0,2],restkit_:[],horribl:2,fantast:1,differ:2,script:[3,2],data:2,top:[3,2],system:2,stack:2,master:[3,2],zeromq:2,"final":[0,1,2,3],schema:2,option:2,relationship:2,namespac:2,tool:2,copi:3,took:3,part:[0,1,2],pars:2,mostli:2,eibrari:[],than:1,king:2,grew:2,provid:[1,2],tree:[],see:[0,2],structur:2,project:[0,1,2],were:0,video:2,browser:2,fork:[3,2],comput:[1,2],modern:2,ani:[0,1,2],packag:0,pylon:2,have:[0,1,2,3],tabl:1,need:[3,2],strength:2,techniqu:2,equival:1,rout:2,client:2,note:[3,2],also:[0,2],ideal:2,contact:1,take:[0,2],which:[0,2],soap:2,singl:2,begin:2,sure:2,distribut:1,though:2,usernam:3,object:[1,2],reach:2,most:2,plai:2,plan:2,deploi:2,phase:2,"class":[0,1,2,3],don:[1,2,3],dens:1,clear:2,cover:2,drive:2,doe:[1,2],determin:2,latest:2,fact:2,wsgi:[1,2],think:2,show:0,lightn:2,xcode:2,beautifulsoup:2,bring:1,session:[1,2],corner:3,find:[3,2],shield:2,xml:2,onli:2,submit:[0,1,2,3],execut:2,explain:2,configur:1,apach:2,enough:2,should:[0,1,2],kessler:2,disert:2,suppos:2,templat:2,smtplib:2,local:[0,3,2],over:2,move:2,variou:2,get:[0,3,2],familiar:2,express:[1,2],becaus:3,repo:2,rest:2,"import":1,requir:[0,1,2],truli:2,enabl:2,across:2,rfc:2,integr:[0,1,2],contain:[0,3],cri:2,where:[],view:2,wiki:2,certif:[1,2],set:2,lectur:[1,2],reread:2,creator:2,knowledg:2,lion:2,result:[1,2],fail:1,close:3,databas:2,review:3,wikipedia:2,urllib:2,label:3,behind:2,between:2,progress:2,neither:2,experi:[1,2],approach:[1,2],email:[0,3],attribut:2,altern:2,ftplib:[],extend:2,weak:2,extens:2,job:3,add:3,consumpt:2,solv:[1,2],come:[],addit:2,last:[0,2],pymotw:2,wsgiref:2,tour:2,tutori:2,mani:2,com:[3,2],load:2,point:2,overview:2,unittest:2,jog:1,rfc2616:[],dispatch:2,walk:2,header:2,written:2,linux:2,tuesdai:1,throughout:1,uci:2,duplic:2,quit:2,evalu:[0,1,2],due:[0,2],been:2,hellmann:2,compon:2,json:2,newcom:2,basic:2,presentations_:[],life:2,emphas:1,great:2,athom:[3,2],understand:2,docxmlrpcserv:2,ador:2,instructor:[0,1,2],present:[1,2],"case":2,look:[0,2],solid:2,servic:[1,2],employ:1,admin:2,"while":3,outcom:0,abov:2,visit:[3,2],wild:2,python_web:[3,2],real:[1,2],pyramid:[1,2],file:[3,2],advantag:2,briandorsei:[],readm:0,non:0,cherrypi:2,lightweight:2,march:[0,1,2],minutia:1,sever:2,develop:2,week04:2,minim:2,make:[3,2],format:2,same:2,check:0,complex:2,zope:2,pai:2,document:[1,2,3],complet:[0,1,2,3],week:[0,1,2],http:[3,2],assist:0,effect:2,solut:2,user:0,student:[0,1,2],extern:2,studi:2,built:2,travers:2,appropri:[0,2],off:0,entri:2,coursework:1,well:2,inherit:2,without:2,person:2,exampl:[1,2],greatest:2,thi:[0,1,2,3],choos:2,model:[3,2],portabl:1,spend:2,left:2,explan:2,protocol:[1,2],just:2,when:[3,2],laptop:0,tcp:2,weekli:1,select:2,virtual:2,aspect:0,mysql:2,languag:[1,2],previous:1,web:[1,2],versu:1,now:[3,2],easi:2,drawback:2,apache2:2,blog:2,armin:2,other:2,blob:2,app:2,homework:2,build:2,earli:2,applic:[1,2],week01:2,week06:2,around:2,xmlrpc:2,week05:2,read:2,httplib:2,arguabl:2,know:2,world:2,bit:2,licens:2,apart:2,uwpython_web:[],like:[3,2],specif:2,altough:2,manifest:2,benefit:2,either:2,week02:2,page:[1,2,3],underli:[1,2],www:2,right:[3,2],often:2,interact:[0,2],some:[0,3,2],back:[3,2],satisfactori:1,week03:2,server:2,librari:[1,2],virtualenv:2,guid:2,cgihttpserv:2,accommod:1,noon:2,deploy:2,februari:2,leav:2,unit:2,rdbm:2,notabl:2,refer:[1,2],machin:[3,2],core:2,investig:2,run:[0,2],usag:[1,2],confer:2,popular:2,host:2,dissert:2,prerequisit:1,januari:[1,2],feb:2,chapter:2,about:[0,2],postgresql:2,socket:[1,2],constraint:2,manag:2,microframework:2,includ:[0,2],commit:[1,3],disabl:1,block:2,fulfil:2,own:[3,2],curiou:2,sql:2,washington:1,easy_instal:2,curios:2,assess:1,orm:2,foreward:2,opportun:2,your:[1,2,3],guardia:2,fast:2,log:3,wai:2,transfer:2,support:[1,2],question:[0,2],"long":2,why:2,avail:[0,2],start:[1,2],much:0,interfac:2,low:1,suit:2,forward:2,submiss:2,"function":2,bottl:2,sqlite3:2,human:2,form:[0,2],offer:2,forc:2,criteria:2,github:[0,3,2],rpclib:2,sqlalchemi:2,link:[0,3,2],gain:2,rfc1945:[],suppli:[],pull:[3,2],made:[3,2],possibl:2,wish:2,displai:2,troubl:2,until:2,url:2,below:2,those:2,absenc:1,fundament:2,site:0,problem:[1,2],more:[1,2],similar:2,expect:2,featur:2,creat:[0,1,2,3],certain:2,pragmat:1,parser:2,repres:2,intro:2,exist:2,glanc:2,pip:2,simplest:2,again:2,successfulli:0,want:[0,3,2],mashup:[1,2],excel:2,detail:2,scrape:2,field:2,book:2,zpt:2,test:2,ignor:2,you:[0,3,2],nice:[0,2],matur:2,repeat:2,intend:2,devot:[0,2],urllib2:2,gcc:2,djangocon:2,consid:2,easili:2,warn:2,wife:2,directori:[3,2],wifi:1,xmlrpclib:2,depth:2,train:[3,2],htmlparser:2,time:[0,2],push:[3,2],hello:2},objtypes:{},titles:["Final Project","Internet Programming with Python","Course Outline","Assignments"],objnames:{},filenames:["project","index","outline","assignments"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{breadth:4,all:[1,3,2],code:[0,3,4],queri:4,consum:[3,4],commun:[1,3],focus:3,four:[],concept:[1,3,4],skim:4,ronach:4,abil:[],edu:4,follow:[0,4],decid:3,instructor:0,advantag:3,flask:[1,3,4],tomayko:4,send:3,human:4,program:[1,3,4],decis:[3,4],under:3,sens:[],spec:4,introduc:3,fax:[],sourc:[0,3,4],string:4,chameleon:[3,4],far:[3,4],mcdonough:4,util:4,wikipedia:4,govern:[1,3],veri:[3,4],word:4,brows:3,chapel:1,unexcus:[],hour:[0,3],level:1,button:2,list:[1,2,4],"try":4,imaplib:3,supplement:4,team:[],small:[0,3],wednesdai:[],pleas:[],enterpris:[],repres:3,outlin:[1,3],representational_state_transf:4,core:4,htm:4,restkit:4,design:[1,3,4],pass:[0,3],further:[],carlo:4,click:2,even:[3,4],index:[],what:[0,1,3,4],sud:4,compar:[0,4],repli:3,section:4,workflow:[],abl:0,brief:[3,4],access:[1,3,4],delet:1,version:[1,3],"new":[2,3],appeal:[],ever:[3,4],"public":[],contrast:[1,4],can:[0,1,2,3,4],hasn:[],full:[1,3],deriv:3,berkelei:4,gener:4,learn:[0,1,3,4],here:[1,2,4],met:0,let:[],inher:3,along:[1,3,4],strong:4,search:1,convers:4,technolog:[],host:[],prior:[],vener:[],base:[1,3],doctest:[],pick:4,studi:4,transact:3,chanc:3,ourselv:[],via:[0,3],repositori:[0,2],extra:[],apach:[],modul:[1,3,4],gatewai:3,api:[1,3,4],seattl:[],instal:[1,3,4],txt:[],plone:[],cloud:[],highli:1,kessler:4,from:[1,2,3,4],describ:0,memori:1,univers:[],regist:[],two:4,todai:[],next:[3,4],websit:[0,2,3],few:[],live:[],morn:3,recommend:[],scope:0,type:[],tell:2,memeori:[],desir:3,minim:4,share:[],relat:4,reign:[],enhanc:[],downtown:[],appendix:4,indic:[],particular:4,postgresql:[],must:[0,1],topic:4,account:2,retriev:4,valuabl:[],prepar:[],work:[0,1,3,4],focu:[3,4],histori:[],remain:4,thursdai:[],http2:[],purpos:[0,3],root:3,repoz:3,quickstart:4,give:1,process:[1,3],registr:1,smtp:4,accept:[],autumn:[],critic:4,tag:[],explor:[1,3],tal:[3,4],onlin:[0,3],acl:3,differenti:[],cours:[0,1,2,3,4],end:[0,1,3,4],winter:[],sit:4,anoth:3,comfort:1,xmlrpclib:3,write:[2,3,4],concis:3,vital:0,low:1,answer:0,instead:[],simpl:[3,4],chri:4,updat:[],product:4,mar:[],resourc:4,attend:1,clone:2,after:[1,3,2],sundai:[],lab:[],prerequisit:1,befor:3,mac:[],attent:4,date:[],philosophi:4,associ:[],parallel:4,demonstr:3,goal:[0,3],classroom:[],ssh2:4,"short":[2,3,4],practic:[],third:[],interpol:3,secur:4,django:[1,3,4],tale:4,inform:[0,1,3,4],chief:3,dispar:3,combin:[1,3],allow:[3,4],order:[1,3],talk:[3,4],oper:[1,3],tty:[],help:[1,3,4],hypertext:4,insight:3,soon:[],brain:4,through:[1,4],left:4,curios:3,dynam:3,paramet:0,style:3,render:3,fit:4,how:[0,1,3,4],chosen:4,complex:3,comprehend:4,late:[],grade:[],offic:[],lightn:[],rapidli:[],persist:3,comprehens:4,mail:[],might:4,easier:4,pce:[],them:[1,3,2],good:[1,3],"return":[],greater:4,thei:[1,3,4],python:[0,1,3,4],dan:[],killer:3,dai:[0,1,3,4],initi:4,number:4,cew:2,framework:[1,3,4],hateoa:4,jinja2:[3,4],httplib2:4,front:3,tilkov:4,discuss:3,introduct:[3,4],choic:[1,3,4],term:[],name:4,anyth:0,edit:3,perspect:4,didn:4,instruct:[0,3,4],bonu:[],separ:1,micro:[],slide:[1,3],each:[1,3],debug:4,found:[],went:4,gui:[],mean:[3,4],compil:4,domain:4,laboratori:1,individu:[],hard:3,continu:3,weeknn:2,realli:4,foreward:4,connect:4,doug:3,our:[1,3,4],happen:4,extract:3,out:[3,4],variabl:3,accomplish:4,network:[1,3,4],influenc:3,fantast:1,defend:4,publish:[3,4],content:1,dso:[],hill:1,rel:3,internet:[1,3,4],dive:3,integr:[0,1],model:[2,3],navig:1,advanc:[],differ:3,pub:4,standard:[1,3,4],quick:[1,4],reason:4,zodb:[3,4],org:4,fridai:0,care:4,question:0,could:4,keep:[1,4],filter:[],thing:4,lucumr:[],enforc:4,place:2,principl:1,assign:[0,2],south:[],first:[3,4],origin:[2,3,4],softwar:0,rang:1,directli:0,feel:[],onc:[],qualiti:3,scene:3,yourself:1,mai:4,unlik:3,alreadi:3,done:3,restkit_:[],horribl:[],open:[1,4],given:[1,3,4],"long":3,script:[2,3,4],bookmark:4,data:[3,4],top:[2,4],system:[1,3,4],messag:3,stack:[1,3],master:2,too:4,zeromq:4,scheme:3,"final":[0,1,2,3,4],store:[],includ:[0,1],option:4,relationship:[],namespac:3,tool:[1,3,4],copi:2,took:2,specifi:3,task:1,employ:[],github:[0,2],pars:4,mostli:4,eibrari:[],than:4,serv:3,king:[],grew:3,provid:[1,3,4],tree:[],lion:[],structur:[1,3],exampl:[1,3,4],project:[0,1,3],matter:3,were:0,video:4,schema:[],bet:4,browser:3,"function":3,comput:[1,3,4],modern:3,mind:4,ani:[0,1,3,4],packag:0,pylon:3,have:[0,1,2,3,4],tabl:1,need:[1,2,3,4],seen:3,paramiko:4,strength:[3,4],techniqu:[],equival:[],rout:4,thorough:4,note:2,also:[0,1,3,4],ideal:4,contact:[],accommod:[],take:[0,3,4],which:[0,3,4],environ:1,soap:[3,4],singl:[1,3],begin:[3,4],sure:[],aspen:4,distribut:[],though:4,usernam:2,object:4,reach:3,most:[3,4],plai:3,plan:[],deploi:[],phase:[],homepag:4,"class":[0,1,2,3,4],don:[1,2,4],filesystem:[3,4],dens:1,clear:3,request:[2,3,4],drive:[3,4],doe:[1,3,4],part:0,carolin:[],determin:3,unchang:4,someth:4,fact:3,wsgi:[1,3,4],think:4,show:0,text:0,xcode:[],syntax:1,bring:[],session:[1,3,4],corner:2,find:[2,3,4],ground:1,xml:3,onli:4,just:4,explain:4,configur:3,activ:1,behind:4,should:[0,1,3,4],jan:[],disert:4,suppos:4,rich:[1,3],smtplib:3,local:[0,2],over:[1,3,4],hope:4,carolina:1,move:3,variou:3,get:[0,2,3,4],familiar:[1,4],express:[1,4],curiou:[],becaus:2,repo:[],solut:[],tcp:[1,3,4],progress:[1,4],increas:4,requir:[0,1],truli:[],bat:4,enabl:1,organ:4,administ:3,email:[0,2],rfc:4,remot:4,common:3,contain:[0,2],cri:[],where:[],view:[3,4],wiki:[3,4],certif:[],set:1,reread:[],creator:[3,4],knowledg:[1,3,4],disucss:3,see:[0,3],result:4,sea:3,respons:3,fail:[],close:2,htmlparser:3,best:4,subject:4,wire:1,eachoth:[],databas:[3,4],review:2,particip:1,urllib:3,label:2,favor:4,enough:[],won:3,between:[1,3],"import":[],neither:4,experi:4,approach:1,across:[1,3],attribut:3,altern:4,ftplib:[],internet_protocol:[],august:1,extend:[3,4],weak:3,metal:4,extens:1,job:2,add:2,consumpt:[3,4],solv:3,come:[],addit:[1,4],both:[1,3,4],toward:[],last:0,cycl:3,pymotw:[],trove:3,wsgiref:4,tour:[],tutori:4,logout:3,login:3,com:2,load:3,among:3,technic:4,point:[],overview:[1,4],unittest:[3,4],jog:1,rfc2616:[],dispatch:[3,4],walk:4,header:[],written:4,linux:[],tuesdai:[],throughout:1,admin:3,uci:4,duplic:[],quit:3,creat:[0,1,2,3,4],coupl:3,due:0,been:3,hellmann:3,compon:4,json:[3,4],much:[0,3,4],interest:4,basic:[1,3,4],presentations_:[],eloqu:4,templat:[3,4],life:3,treasur:3,emphas:1,underpin:[],great:3,argument:4,athom:2,understand:1,docxmlrpcserv:3,ador:[],educ:[],present:[1,3],"case":4,look:[0,3,4],solid:[1,4],servic:[3,4],histor:[1,4],cursor:4,defin:4,"while":[2,3],outcom:0,abov:3,wild:3,exist:[],dbapi2:3,python_web:2,earli:[],pyramid:[1,3,4],glanc:4,ripe:3,briandorsei:[],readm:0,non:[0,4],cherrypi:4,lightweight:4,week06:[],minutia:[],sever:[3,4],disabl:[],develop:[1,3],demostr:3,author:3,receiv:3,newcom:3,make:[2,3,4],mayb:3,same:[3,4],html:[1,3,4],split:3,testrunn:3,zope:[3,4],pai:4,document:[1,2,4],complet:[0,1,2,3,4],week:[0,1,3,4],http:[2,3,4],assist:0,effect:[],cement:1,kit:4,driven:3,user:0,student:[0,1],mani:4,extern:4,chang:[2,4],built:[3,4],"break":3,travers:[3,4],appropri:[0,3],off:[0,4],lunch:3,macro:4,coursework:[],well:[1,4],inherit:[],without:3,person:[],client:[3,4],command:1,greatest:4,thi:[0,1,2,3,4],choos:1,everyth:[1,4],portabl:1,spend:[],latest:4,explan:4,compromis:1,protocol:[1,3,4],entri:3,nosql:[],excel:4,laptop:0,rest:[3,4],weekli:[],shape:1,scrape:3,aspect:0,mysql:[],languag:[1,3,4],previous:[],web:[1,3,4],versu:1,now:[1,2,4],easi:4,drawback:3,apache2:4,blog:3,armin:4,book:4,blob:[],exercis:[1,3],schedul:3,save:[],app:[3,4],homework:[],build:[1,3,4],real:3,applic:[1,3,4],week01:[],march:0,around:[3,4],week04:[],format:3,read:[1,3,4],httplib:3,arguabl:3,five:[1,3],know:[1,4],world:[3,4],bit:[3,4],licens:4,apart:[],uwpython_web:[],leisur:4,like:[2,3,4],specif:[3,4],microblog:3,altough:4,manifest:3,benefit:3,either:[],week02:[],page:[1,2,3,4],underli:[1,3],www:4,right:[1,2,3,4],often:4,interact:[0,1,3],some:[0,1,2,3,4],back:[2,3],certain:[],satisfactori:[],authent:4,week03:[],server:[3,4],librari:[1,3,4],virtualenv:1,guid:4,cgihttpserv:4,easili:4,broad:1,noon:[],deploy:[],februari:[],lear:3,track:3,leav:[],unit:4,fast:[],three:3,notabl:3,refer:[1,3,4],cgi:[1,3,4],cgi_exampl:[],investig:3,run:[0,3,4],power:[],usag:[1,4],confer:3,speak:3,popular:3,step:2,dissert:4,although:3,januari:[],feb:[],appli:4,chapter:4,comparison:4,about:[0,3,4],simplest:[],actual:[2,4],socket:[1,3,4],constraint:4,materi:4,prove:3,shield:3,side:4,microframework:[3,4],afternoon:3,commit:2,produc:3,block:[],fulfil:[],own:[2,3],effici:[1,3],consid:4,primarili:4,visit:2,within:3,washington:[],easy_instal:[],zpt:[3,4],assess:[],orm:[3,4],ensur:0,opportun:[],lesson:[1,4],your:[1,2,3,4],manag:[],guardia:4,git:2,log:2,wai:[1,3,4],transfer:4,execut:[1,4],support:[1,3,4],xmlrpc:[3,4],submit:[0,2],custom:3,avail:0,start:[1,3,4],workshop:1,interfac:[3,4],pocoo:[],suit:[3,4],forward:[],submiss:[],machin:[1,2,3,4],select:1,fork:2,bottl:4,sqlite3:4,north:1,form:[0,3,4],offer:[3,4],forc:4,week05:[],criteria:3,idea:[1,3],wireless:1,rpclib:4,sqlalchemi:4,link:[0,2],gain:[1,3],rfc1945:[],line:1,suppli:[],pull:2,made:[2,4],consist:3,possibl:3,wish:[],displai:[],troubl:4,until:[],url:4,below:[],those:3,absenc:[],fundament:[1,3],site:0,problem:3,more:[1,3,4],similar:3,expect:1,featur:[3,4],evalu:[0,3],cover:[1,3,4],pragmat:[],parser:4,deep:4,lectur:[1,3],beautifulsoup:[3,4],intro:[1,3,4],implement:[1,3,4],file:[1,3,2],pip:[],check:0,echo:3,again:4,successfulli:0,encrypt:4,want:[0,1,3,2],mashup:[1,3,4],when:[2,3,4],detail:[],virtual:[],field:4,other:[1,3,4],rdbm:[],test:[3,4],tie:3,you:[0,1,2,3,4],nice:0,matur:[],repeat:[],intend:1,clean:1,fulli:3,devot:0,why:4,urllib2:3,gcc:[],djangocon:4,intent:1,mondai:[],sql:3,pool:4,warn:[],wife:4,directori:[2,3],wifi:[],descript:0,depth:[1,4],train:2,ignor:4,time:[0,3,4],push:2,hello:4,daili:3},objtypes:{},titles:["Final Project","Python Web Programming Workshop","Assignments","Course Outline","Course Readings"],objnames:{},filenames:["project","index","assignments","outline","readings"]}) \ No newline at end of file From 4e4449994e238545a901d65599f8e74b8190073d Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 28 Jul 2013 21:57:24 -0700 Subject: [PATCH 060/114] adding new content for the shift --- presentations/img/flask_cover.png | Bin 0 -> 24248 bytes presentations/img/flask_full.png | Bin 0 -> 213488 bytes presentations/img/flask_square.png | Bin 0 -> 26836 bytes presentations/img/mac-icon.png | Bin 0 -> 24910 bytes presentations/session01.html | 908 ++++++++++++++++ presentations/session02.html | 1241 +++++++++++++++++++++ presentations/session03-addenda.html | 386 +++++++ presentations/session03.html | 1485 ++++++++++++++++++++++++++ presentations/session04.html | 948 ++++++++++++++++ presentations/session05.html | 1095 +++++++++++++++++++ presentations/session06.html | 1172 ++++++++++++++++++++ presentations/session07.html | 1182 ++++++++++++++++++++ presentations/session08.html | 920 ++++++++++++++++ presentations/session09.html | 952 +++++++++++++++++ presentations/session10.html | 471 ++++++++ 15 files changed, 10760 insertions(+) create mode 100644 presentations/img/flask_cover.png create mode 100644 presentations/img/flask_full.png create mode 100644 presentations/img/flask_square.png create mode 100644 presentations/img/mac-icon.png create mode 100644 presentations/session01.html create mode 100644 presentations/session02.html create mode 100644 presentations/session03-addenda.html create mode 100644 presentations/session03.html create mode 100644 presentations/session04.html create mode 100644 presentations/session05.html create mode 100644 presentations/session06.html create mode 100644 presentations/session07.html create mode 100644 presentations/session08.html create mode 100644 presentations/session09.html create mode 100644 presentations/session10.html diff --git a/presentations/img/flask_cover.png b/presentations/img/flask_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..128122d50297dde74b6c6e262dcc8b5072847786 GIT binary patch literal 24248 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 VEBC;&-Tnb^sVZtJ)XBXK{SRaV7Wx1H literal 0 HcmV?d00001 diff --git a/presentations/img/flask_full.png b/presentations/img/flask_full.png new file mode 100644 index 0000000000000000000000000000000000000000..f98ce466e407b10035f04aff906a34a5ffe8ef96 GIT binary patch literal 213488 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

    =Qfc`p=dH`I<~}jGa#?TX>hd74arH~ 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 z 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 AMF0Q* literal 0 HcmV?d00001 diff --git a/presentations/img/flask_square.png b/presentations/img/flask_square.png new file mode 100644 index 0000000000000000000000000000000000000000..e61caef187dcd0053a1278a231d693f48787abea GIT binary patch literal 26836 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 Nl~jaOe){_3e*mfFYsvrs literal 0 HcmV?d00001 diff --git a/presentations/img/mac-icon.png b/presentations/img/mac-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f902bd7937930b6e487940a62c45edea24837f43 GIT binary patch literal 24910 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 + + + + + + +Python Web Programming + + + + + + + + + + + + +

    +
    +
    +

    Python Web Programming

    + +img/python.png +

    Session 1: Networking and Sockets

    +

    Wherein we learn about the basic structure of the internet and explore the +building blocks that make it possible.

    + +
    +
    +

    But First

    +

    Class presentations are available online for your use

    +

    http://github.com/cewing/training.python_web

    +

    Licensed with Creative Commons BY-NC-SA

    +
      +
    • You must attribute the work
    • +
    • You may not use the work for commercial purposes
    • +
    • You have to share your versions just like this one
    • +
    +

    Find mistakes? See improvements? Make a pull request.

    +
    +
    +

    But First

    +

    Daily Schedule

    +
      +
    • 9:00 am to 10:30 am - Session 1a
    • +
    • 15 minute break
    • +
    • 10:45 am to 12:30 pm - Session 1b
    • +
    • 1 hour lunch
    • +
    • 1:30 pm to 3:00 pm - Session 2a
    • +
    • 15 minute break
    • +
    • 3:15 pm to 5:00 pm - Session 2b
    • +
    +
    +
    +

    But First

    +

    Classroom Protocol

    +

    Question to ask:

    +
      +
    • What did you just say?
    • +
    • Please explain what we just did again?
    • +
    • Why didn't that work for me?
    • +
    • Is that a typo?
    • +
    +
    +
    +

    But First

    +

    Classroom Protocol

    +

    Question not to ask:

    +
      +
    • Hypotheticals: What happens if I do X?
    • +
    • Research: Can Python do Y?
    • +
    • Syllabus: Are we going to cover Z in class?
    • +
    • Marketing questions: please just don't.
    • +
    • Performance questions: Is Python fast enough?
    • +
    • Unpythonic: Why doesn't Python do it some other way?
    • +
    • Show off: Look what I just did!
    • +
    +
    +
    +

    But First

    +

    Introductions

    +
    +
    +

    Computer Communications

    +img/network_topology.png +
      +
    • processes can communicate
    • +
    • inside one machine
    • +
    • between two machines
    • +
    • among many machines
    • +
    +

    image: http://en.wikipedia.org/wiki/Internet_Protocol_Suite

    +
    +
    +

    Computer Communications

    +img/data_in_tcpip_stack.png +
      +
    • Process divided into 'layers'
    • +
    • 'Layers' are mostly arbitrary
    • +
    • Different descriptions have different layers
    • +
    • Most common is the 'TCP/IP Stack'
    • +
    +

    image: http://en.wikipedia.org/wiki/Internet_Protocol_Suite

    +
    + +
    +

    The TCP/IP Stack - Internet

    +

    Moving up, we have the 'Internet Layer'

    +
      +
    • Deals with addressing and routing
        +
      • Where are we going and how do we get there?
      • +
      +
    • +
    • Agnostic as to physical medium (IP over Avian Carrier - IPoAC)
    • +
    • Makes no promises of reliability
    • +
    • Two addressing systems
        +
      • IPv4 (current, limited '192.168.1.100')
      • +
      • IPv6 (future, 3.4 x 10^38 addresses, '2001:0db8:85a3:0042:0000:8a2e:0370:7334')
      • +
      +
    • +
    +
    +
    +

    The TCP/IP Stack - Internet

    +

    That's 4.3 x 10^28 addresses per person alive today

    +
    +
    +

    The TCP/IP Stack - Transport

    +

    Next up is the 'Transport Layer'

    +
      +
    • Deals with transmission and reception of data
        +
      • error correction, flow control, congestion management
      • +
      +
    • +
    • Common protocols include TCP & UDP
        +
      • TCP: Tranmission Control Protocol
      • +
      • UDP: User Datagram Protocol
      • +
      +
    • +
    • Not all Transport Protocols are 'reliable'
        +
      • TCP ensures that dropped packets are resent
      • +
      • UDP makes no such assurance
      • +
      • Reliability is slow and expensive
      • +
      +
    • +
    +
    +
    +

    The TCP/IP Stack - Transport

    +

    The 'Transport Layer' also establishes the concept of a port

    +
      +
    • IP Addresses designate a specific machine on the network
    • +
    • A port provides addressing for individual applications in a single host
    • +
    • 192.168.1.100:80 (the :80 part is the port)
    • +
    +

    This means that you don't have to worry about information intended for your +web browser being accidentally read by your email client.

    +
    +
    +

    The TCP/IP Stack - Transport

    +

    There are certain ports which are commonly understood to belong to given +applications or protocols:

    +
      +
    • 80/443 - HTTP/HTTPS
    • +
    • 20 - FTP
    • +
    • 22 - SSH
    • +
    • 23 - Telnet
    • +
    • 25 - SMTP
    • +
    • ...
    • +
    +

    (see http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers)

    +
    +
    +

    The TCP/IP Stack - Transport

    +

    Ports are grouped into a few different classes

    +
      +
    • Ports numbered 0 - 1023 are reserved
    • +
    • Ports numbered 1024 - 65535 are open
    • +
    • Ports numbered 49152 - 65535 are generally considered ephemeral
    • +
    +
    +
    +

    The TCP/IP Stack - Application

    +

    The topmost layer is the 'Application Layer'

    +
      +
    • Deals directly with data produced or consumed by an application
    • +
    • Reads or writes data using a set of understood, well-defined protocols
        +
      • HTTP, SMTP, FTP etc.
      • +
      +
    • +
    • Does not know (or need to know) about lower layer functionality
        +
      • The exception to this rule is endpoint data (or IP:Port)
      • +
      +
    • +
    +
    +
    +

    The TCP/IP Stack - Application

    +

    this is where we live and work

    +
    +
    +

    Sockets

    +

    Think back for a second to what we just finished discussing, the TCP/IP stack.

    +
      +
    • The Internet layer gives us an IP Address
    • +
    • The Transport layer establishes the idea of a port.
    • +
    • The Application layer doesn't care about what happens below...
    • +
    • Except for endpoint data (IP:Port)
    • +
    +

    A Socket is the software representation of that endpoint.

    +

    Opening a socket creates a kind of transceiver that can send and/or +receive data at a given IP address and Port.

    +
    +
    +

    Sockets in Python

    +

    Python provides a standard library module which provides socket functionality. +It is called socket. Let's spend a few minutes getting to know this +module.

    +

    We're going to do this next part together, so open up a terminal and start a +python interpreter

    +
    +
    +

    Sockets in Python

    +

    The sockets library provides tools for finding out information about hosts on +the network. For example, you can find out about the machine you are currently +using:

    +
    +>>> import socket
    +>>> socket.gethostname()
    +'heffalump.local'
    +>>> socket.gethostbyname(socket.gethostname())
    +'10.211.55.2'
    +
    +
    +
    +

    Sockets in Python

    +

    You can also find out about machines that are located elsewhere, assuming you +know their hostname. For example:

    +
    +>>> socket.gethostbyname('google.com')
    +'173.194.33.4'
    +>>> socket.gethostbyname('unc.edu')
    +'152.19.240.120'
    +>>> socket.gethostbyname('crisewing.com')
    +'108.59.11.99'
    +
    +
    +
    +

    Sockets in Python

    +

    The gethostbyname_ex method of the socket library provides more +information about the machines we are exploring:

    +
    +>>> socket.gethostbyname_ex('google.com')
    +('google.com', [], ['173.194.33.9', '173.194.33.14',
    +                    ...
    +                    '173.194.33.6', '173.194.33.7',
    +                    '173.194.33.8'])
    +>>> socket.gethostbyname_ex('crisewing.com')
    +('crisewing.com', [], ['108.59.11.99'])
    +>>> socket.gethostbyname_ex('www.rad.washington.edu')
    +('elladan.rad.washington.edu', # <- canonical hostname
    + ['www.rad.washington.edu'], # <- any machine aliases
    + ['128.95.247.84']) # <- all active IP addresses
    +
    +
    +
    +

    Sockets in Python

    +

    To create a socket, you use the socket method of the socket library. +It takes up to three optional positional arguments (here we use none to get +the default behavior):

    +
    +>>> foo = socket.socket()
    +>>> foo
    +<socket._socketobject object at 0x10046cec0>
    +
    +
    +
    +

    Sockets in Python

    +

    A socket has some properties that are immediately important to us. These +include the family, type and protocol of the socket:

    +
    +>>> foo.family
    +2
    +>>> foo.type
    +1
    +>>> foo.proto
    +0
    +
    +

    You might notice that the values for these properties are integers. In fact, +these integers are constants defined in the socket library.

    +
    +
    +

    A quick utility method

    +

    Let's define a method in place to help us see these constants. It will take a +single argument, the shared prefix for a defined set of constants:

    +
    +>>> def get_constants(prefix):
    +...     """mapping of socket module constants to their names."""
    +...     return dict( (getattr(socket, n), n)
    +...                  for n in dir(socket)
    +...                  if n.startswith(prefix)
    +...                  )
    +...
    +>>>
    +
    +
    +
    +

    Socket Families

    +

    Think back a moment to our discussion of the Internet layer of the TCP/IP +stack. There were a couple of different types of IP addresses:

    +
      +
    • IPv4 ('192.168.1.100')
    • +
    • IPv6 ('2001:0db8:85a3:0042:0000:8a2e:0370:7334')
    • +
    +

    The family of a socket corresponds to the addressing system it uses for +connecting.

    +
    +
    +

    Socket Families

    +

    Families defined in the socket library are prefixed by AF_:

    +
    +>>> families = get_constants('AF_')
    +>>> families
    +{0: 'AF_UNSPEC', 1: 'AF_UNIX', 2: 'AF_INET',
    + 11: 'AF_SNA', 12: 'AF_DECnet', 16: 'AF_APPLETALK',
    + 17: 'AF_ROUTE', 23: 'AF_IPX', 30: 'AF_INET6'}
    +
    +

    Your results may vary

    +

    Of all of these, the ones we care most about are 2 (IPv4) and 30 (IPv6).

    +
    +
    +

    Unix Domain Sockets

    +

    When you are on a machine with an operating system that is Unix-like, you will +find another generally useful socket family: AF_UNIX, or Unix Domain +Sockets. Sockets in this family:

    +
      +
    • connect processes on the same machine
    • +
    • are generally a bit slower than IPC connnections
    • +
    • have the benefit of allowing the same API for programs that might run on one +machine __or__ across the network
    • +
    • use an 'address' that looks like a pathname ('/tmp/foo.sock')
    • +
    +
    +
    +

    Test your skills

    +

    What is the default family for the socket we created just a moment ago?

    +

    (remember we bound the socket to the symbol foo)

    +
    +
    +

    Socket Types

    +

    The socket type determines the semantics of socket communications.

    +

    Look up socket type constants with the SOCK_ prefix:

    +
    +>>> types = get_constants('SOCK_')
    +>>> types
    +{1: 'SOCK_STREAM', 2: 'SOCK_DGRAM',
    + ...}
    +
    +

    The most common are 1 (TCP type communication) and 2 (UDP type +communication).

    +
    +
    +

    Test your skills

    +

    What is the default type for our generic socket, foo?

    +
    +
    +

    Socket Protocols

    +

    A socket also has a designated protocol. The constants for these are +prefixed by IPPROTO_:

    +
    +>>> protocols = get_constants('IPPROTO_')
    +>>> protocols
    +{0: 'IPPROTO_IP', 1: 'IPPROTO_ICMP',
    + ...,
    + 255: 'IPPROTO_RAW'}
    +
    +

    The choice of which protocol to use for a socket is determined by the +communications protocol you intend to use. IP? ICMP? UDP?

    +
    +
    +

    Test your skills

    +

    What is the default protocol used by our generic socket, foo?

    +
    +
    +

    Address Information

    +

    These three properties of a socket correspond to the three positional arguments +you may pass to the constructor. This allows you to create sockets that have +specific communications profiles:

    +
    +>>> bar = socket.socket(socket.AF_INET,
    +...                     socket.SOCK_DGRAM,
    +...                     socket.IPPROTO_UDP)
    +...
    +>>> bar
    +<socket._socketobject object at 0x1005b8b40>
    +
    +
    +
    +

    Address Information

    +

    But when you are creating a socket to communicate with a remote service, how +can you determine the correct values to use?

    +

    You ask.

    +
    +
    +

    Client Connections

    +

    The information returned by a call to socket.getaddrinfo is all you need +to make a proper connection to a socket on a remote host. The value returned +is a tuple of

    +
      +
    • socket family
    • +
    • socket type
    • +
    • socket protocol
    • +
    • canonical name (usually empty, unless requested by flag)
    • +
    • socket address
    • +
    +
    +
    +

    A quick utility method

    +

    Again, let's create a utility method in-place so we can see this in action:

    +
    +>>> def get_address_info(host, port):
    +...     for response in socket.getaddrinfo(host, port):
    +...         fam, typ, pro, nam, add = response
    +...         print 'family: ', families[fam]
    +...         print 'type: ', types[typ]
    +...         print 'protocol: ', protocols[pro]
    +...         print 'canonical name: ', nam
    +...         print 'socket address: ', add
    +...         print
    +...
    +>>>
    +
    +
    +
    +

    On Your Own Machine

    +

    Now, ask your own machine what services are available on 'http':

    +
    +>>> get_address_info(socket.gethostname(), 'http')
    +family:  AF_INET
    +type:  SOCK_DGRAM
    +protocol:  IPPROTO_UDP
    +canonical name:
    +socket address:  ('10.211.55.2', 80)
    +
    +family:  AF_INET
    +...
    +>>>
    +
    +

    What answers do you get?

    +
    +
    +

    On the Internet

    +
    +>>> get_address_info('crisewing.com', 'http')
    +family:  AF_INET
    +type:  SOCK_DGRAM
    +...
    +
    +family:  AF_INET
    +type:  SOCK_STREAM
    +...
    +>>>
    +
    +

    Try a few other servers you know about.

    +
    +
    +

    First Steps

    +

    Let's put this to use

    +
    +
    +

    Construct a Socket

    +

    We've already made a socket foo using the generic constructor without any +arguments. We can make a better one now by using real address information from +a real server online:

    +
    +>>> streams = [info
    +...     for info in socket.getaddrinfo('crisewing.com', 'http')
    +...     if info[1] == socket.SOCK_STREAM]
    +>>> streams
    +[(2, 1, 6, '', ('108.59.11.99', 80))]
    +>>> info = streams[0]
    +>>> cewing_socket = socket.socket(*info[:3])
    +
    +
    +
    +

    Connecting a Socket

    +

    Once the socket is constructed with the appropriate family, type and +protocol, we can connect it to the address of our remote server:

    +
    +>>> cewing_socket.connect(info[-1])
    +>>>
    +
    +
      +
    • a successful connection returns None
    • +
    • a failed connection raises an error
    • +
    • you can use the type of error returned to tell why the connection failed.
    • +
    +
    +
    +

    Sending a Message

    +

    Send a message to the server on the other end of our connection (we'll +learn later today about the message we are sending):

    +
    +>>> msg = "GET / HTTP/1.1\r\n"
    +>>> msg += "Host: crisewing.com\r\n\r\n"
    +>>> cewing_socket.sendall(msg)
    +>>>
    +
    +
      +
    • the transmission continues until all data is sent or an error occurs
    • +
    • success returns None
    • +
    • failure to send raises an error
    • +
    • you can use the type of error to figure out why the transmission failed
    • +
    • you cannot know how much, if any, of your data was sent
    • +
    +
    +
    +

    Receiving a Reply

    +

    Whatever reply we get is received by the socket we created. We can read it +back out:

    +
    +>>> response = cewing_socket.recv(4096)
    +>>> response
    +'HTTP/1.1 200 OK\r\nDate: Thu, 03 Jan 2013 05:56:53
    +...
    +
    +
      +
    • The sole required argument is buffer_size (an integer). It should be a +power of 2 and smallish
    • +
    • It returns a byte string of buffer_size (or smaller if less data was +received)
    • +
    • If the response is longer than buffer size, you can call the method +repeatedly. The last bunch will be less than buffer size.
    • +
    +
    +
    +

    Cleaning Up

    +

    When you are finished with a connection, you should always close it:

    +
    +>>> cewing_socket.close()
    +
    +
    +
    +

    Putting it all together

    +

    First, connect and send a message:

    +
    +>>> streams = [info
    +...     for info in socket.getaddrinfo('crisewing.com', 'http')
    +...     if info[1] == socket.SOCK_STREAM]
    +>>> info = streams[0]
    +>>> cewing_socket = socket.socket(*info[:3])
    +>>> cewing_socket.connect(info[-1])
    +>>> msg = "GET / HTTP/1.1\r\n\r\n"
    +>>> cewing_socket.sendall(msg)
    +
    +
    +
    +

    Putting it all together

    +

    Then, receive a reply, iterating until it is complete:

    +
    +
    +>>> buffsize = 4096
    +>>> response = ''
    +>>> done = False
    +>>> while not done:
    +...     msg_part = cewing_socket.recv(buffsize)
    +...     if len(msg_part) < buffsize:
    +...         done = True
    +...         cewing_socket.close()
    +...     response += msg_part
    +>>> len(response)
    +19427
    +
    +
    +
    +
    +

    Server Side

    +

    What about the other half of the equation?

    +
    +
    +

    Construct a Socket

    +

    For the moment, stop typing this into your interpreter.

    +

    Again, we begin by constructing a socket. Since we are actually the server +this time, we get to choose family, type and protocol:

    +
    +>>> server_socket = socket.socket(
    +...     socket.AF_INET,
    +...     socket.SOCK_STREAM,
    +...     socket.IPPROTO_IP)
    +...
    +>>> server_socket
    +<socket._socketobject object at 0x100563c90>
    +
    +
    +
    +

    Bind the Socket

    +

    Our server socket needs to be bound to an address. This is the IP Address and +Port to which clients must connect:

    +
    +>>> address = ('127.0.0.1', 50000)
    +>>> server_socket.bind(address)
    +
    +

    Terminology Note: In a server/client relationship, the server binds to +an address and port. The client connects

    +
    +
    +

    Listen for Connections

    +

    Once our socket is bound to an address, we can listen for attempted +connections:

    +
    +>>> server_socket.listen(1)
    +
    +
      +
    • The argument to listen is the backlog
    • +
    • The backlog is the maximum number of connections that the socket will +queue
    • +
    • Once the limit is reached, the socket refuses new connections
    • +
    +
    +
    +

    Accept Incoming Messages

    +

    When a socket is listening, it can receive incoming messages:

    +
    +>>> connection, client_address = server_socket.accept()
    +... # this blocks until a client connects
    +>>> connection.recv(16)
    +
    +
      +
    • The connection returned by a call to accept is a new socket
    • +
    • It is this new socket that is used for communications with the client +socket
    • +
    • the client_address is a two-tuple of IP Address and Port for the client +socket
    • +
    • The number of new sockets that can be spun off by a listening socket is +equal to backlog
    • +
    +
    +
    +

    Send a Reply

    +

    The same socket that received a message from the client may be used to return +a reply:

    +
    +>>> connection.sendall("messasge received")
    +
    +
    +
    +

    Clean Up

    +

    Once a transaction between the client and server is complete, the +connection socket should be closed:

    +
    +>>> connection.close()
    +
    +
      +
    • Closing the connection socket will decrement the number of active sockets in +the queue
    • +
    • If the maximum specified by backlog had been reached, this will allow a +new connection to be made.
    • +
    +
    +
    +

    Getting the Flow

    +

    The flow of this interaction can be a bit confusing. Let's see it in action +step-by-step.

    +

    Open a second python interpreter and place it next to your first so you can +see both of them at the same time.

    +
    +
    +

    Create a Server

    +

    In your first python interpreter, create a server socket and prepare it for +connections:

    +
    +>>> server_socket = socket.socket(
    +...     socket.AF_INET,
    +...     socket.SOCK_STREAM,
    +...     socket.IPPROTO_IP)
    +>>> server_socket.bind(('127.0.0.1', 50000))
    +>>> server_socket.listen(1)
    +>>> conn, addr = server_socket.accept()
    +
    +

    At this point, you should not get back a prompt. The server socket is +waiting for a connection to be made.

    +
    +
    +

    Create a Client

    +

    In your second interpreter, create a client socket and prepare to send a +message:

    +
    +>>> import socket
    +>>> client_socket = socket.socket(
    +...     socket.AF_INET
    +...     socket.SOCK_STREAM,
    +...     socket.IPPROTO_IP)
    +
    +

    Before connecting, keep your eye on the server interpreter:

    +
    +>>> client_socket.connect(('127.0.0.1', 50000))
    +
    +
    +
    +

    Send a Message Client->Server

    +

    As soon as you made the connection above, you should have seen the prompt +return in your server interpreter. The accept method finally returned a +new connection socket.

    +

    When you're ready, type the following in the client interpreter. Watch the +server!

    +
    +>>> client_socket.sendall("Hey, can you hear me?")
    +
    +
    +
    +

    Receive and Respond

    +

    Back in your server interpreter, go ahead and receive the message from your +client:

    +
    +>>> conn.receive(32)
    +'Hey, can you hear me?'
    +
    +

    Send a message back, and then close up your connection:

    +
    +>>> conn.sendall("Yes, I hear you.")
    +>>> conn.close()
    +
    +
    +
    +

    Finish Up

    +

    Back in your client interpreter, take a look at the response to your message, +then be sure to close your client socket too:

    +
    +>>> client_socket.recv(32)
    +'Yes, I hear you.'
    +>>> client_socket.close()
    +
    +

    And now that we're done, we can close up the server too (back in the server +iterpreter):

    +
    +>>> server_socket.close()
    +
    +
    +
    +

    Congratulations!

    +

    You've run your first client-server interaction

    +
    +
    +

    Take it to the Next Level

    +

    That's pretty much everything we need to build a simple echo server and +client.

    +

    We are now going to move to writing python files.

    +

    Quit both interpreters and open a new file in your favorite text editor. Call +it echo_client.py

    +
    +
    +

    The Echo Client - 1

    +
    +import socket
    +import sys
    +
    +def client(msg):
    +    print >> sys.stderr, "sending: %s" % msg
    +
    +if __name__ == '__main__':
    +    if len(sys.argv) != 2:
    +        usg = '\nusage: python echo_client.py "this is my message"\n'
    +        print >>sys.stderr, usg
    +        sys.exit(1)
    +
    +    msg = sys.argv[1]
    +    client(msg)
    +
    +

    Save that and try it out

    +
    +
    +

    The Echo Client - 2

    +
    +def client(msg):
    +    server_address = ('localhost', 10000)
    +    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    +    print >>sys.stderr, 'connecting to %s port %s' % server_address
    +    sock.connect(server_address)
    +    try:
    +        # Send data
    +        print >>sys.stderr, 'sending "%s"' % msg
    +        sock.sendall(msg)
    +        # Look for the response
    +        amount_received = 0
    +        amount_expected = len(msg)
    +        while amount_received < amount_expected:
    +            data = sock.recv(16)
    +            amount_received += len(data)
    +            print >>sys.stderr, 'received "%s"' % data
    +    finally:
    +        print >>sys.stderr, 'closing socket'
    +        sock.close()
    +
    +
    +
    +

    It Takes Two

    +

    The client script at this point is no good without a server to receive the +message and send it back. Let's make that next.

    +

    Again, open a new file in your text editor. Call it echo_server.py.

    +
    +
    +

    The Echo Server - 1

    +
    +import socket
    +import sys
    +
    +def server():
    +    address = ('127.0.0.1', 10000)
    +    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    +    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    +    print >>sys.stderr, "making a server on %s:%s" % address
    +    sock.bind(address)
    +    sock.listen(1)
    +    try:
    +        pass
    +    except KeyboardInterrupt:
    +        sock.close()
    +        return
    +
    +if __name__ == '__main__':
    +    server()
    +    sys.exit(0)
    +
    +
    +
    +

    The Echo Server - 2

    +
    +try:
    +    while True:
    +        print >>sys.stderr, 'waiting for a connection'
    +        conn, addr = sock.accept() # blocking
    +        try:
    +            print >>sys.stderr, 'connection - %s:%s' % addr
    +            while True:
    +                data = conn.recv(16)
    +                print >>sys.stderr, 'received "%s"' % data
    +                if data:
    +                    msg = 'sending data back to client'
    +                    print >>sys.stderr, msg
    +                    conn.sendall(data)
    +                else:
    +                    msg = 'no more data from %s:%s' % addr
    +                    print >>sys.stderr, msg
    +                    break
    +        finally:
    +            conn.close()
    +except KeyboardInterrupt:
    +    # ...
    +
    +
    +
    +

    Playing With Your Toy

    +

    In one terminal, start the server:

    +
    +$ python echo_server.py
    +making a server on 127.0.0.1:10000
    +waiting for a connection
    +
    +

    In a second, use the client to send a message:

    +
    +$ python echo_client.py "I am sending a longer message."
    +
    +
    +
    +

    Next Steps

    +

    You've now seen the basics of socket-based communication.

    +

    This afternoon, we'll learn about the protocols that govern these types of +communications.

    +

    As an exercise, we'll extend this simple echo server into a basic HTTP +server, and we'll be able to ditch the client and use a web browser instead.

    +
    +
    +

    Lunch Time

    +

    We'll see you back here in an hour. Enjoy!

    +
    +
    + + diff --git a/presentations/session02.html b/presentations/session02.html new file mode 100644 index 00000000..ff6e4d7a --- /dev/null +++ b/presentations/session02.html @@ -0,0 +1,1241 @@ + + + + + + + +Python Web Programming + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    Python Web Programming

    + +img/protocol.png +

    Session 2: Web Protocols

    +

    Wherein we learn about the languages that machines speak to each other

    + +
    +
    +

    What is a Protocol?

    +

    a set of rules or conventions

    +

    governing communications

    +
    +
    +

    Protocols IRL

    +

    Life has lots of sets of rules for how to do things.

    +
      +
    • What do you say when you get on the elevator?
    • +
    • What do you do on a first date?
    • +
    • What do you wear to a job interview?
    • +
    • What do (and don't) you talk about at a dinner party?
    • +
    • ...?
    • +
    +
    + +
    +

    Protocols In Computers

    +

    Digital life has lots of rules too:

    +
      +
    • how to say hello
    • +
    • how to identify yourself
    • +
    • how to ask for information
    • +
    • how to provide answers
    • +
    • how to say goodbye
    • +
    +
    +
    +

    Real Protocol Examples

    +

    What does this look like in practice?

    +
    +
    +

    Real Protocol Examples

    + +
    +
    +

    What does SMTP look like?

    +

    SMTP (Say hello and identify yourself):

    +
    +S: 220 foo.com Simple Mail Transfer Service Ready
    +C: EHLO bar.com
    +S: 250-foo.com greets bar.com
    +S: 250-8BITMIME
    +S: 250-SIZE
    +S: 250-DSN
    +S: 250 HELP
    +
    +
    +
    +

    What does SMTP look like?

    +

    SMTP (Ask for information, provide answers):

    +
    +C: MAIL FROM:<Smith@bar.com>
    +S: 250 OK
    +C: RCPT TO:<Jones@foo.com>
    +S: 250 OK
    +C: RCPT TO:<Green@foo.com>
    +S: 550 No such user here
    +C: DATA
    +S: 354 Start mail input; end with <CRLF>.<CRLF>
    +C: Blah blah blah...
    +C: ...etc. etc. etc.
    +C: .
    +S: 250 OK
    +
    +
    +
    +

    What does SMTP look like?

    +

    SMTP (Say goodbye):

    +
    +C: QUIT
    +S: 221 foo.com Service closing transmission channel
    +
    +
    +
    +

    SMTP Characteristics

    +
      +
    • Interaction consists of commands and replies
    • +
    • Each command or reply is one line terminated by <CRLF>
    • +
    • The exception is message payload, terminated by <CRLF>.<CRLF>
    • +
    • Each command has a verb and one or more arguments
    • +
    • Each reply has a formal code and an informal explanation
    • +
    +
    +
    +

    What does POP3 look like?

    +

    POP3 (Say hello and identify yourself):

    +
    +C: <client connects to service port 110>
    +S: +OK POP3 server ready <1896.6971@mailgate.dobbs.org>
    +C: USER bob
    +S: +OK bob
    +C: PASS redqueen
    +S: +OK bob's maildrop has 2 messages (320 octets)
    +
    +
    +
    +

    What does POP3 look like?

    +

    POP3 (Ask for information, provide answers):

    +
    +C: STAT
    +S: +OK 2 320
    +C: LIST
    +S: +OK 1 messages (120 octets)
    +S: 1 120
    +S: .
    +
    +
    +
    +

    What does POP3 look like?

    +

    POP3 (Ask for information, provide answers):

    +
    +C: RETR 1
    +S: +OK 120 octets
    +S: <server sends the text of message 1>
    +S: .
    +C: DELE 1
    +S: +OK message 1 deleted
    +
    +
    +
    +

    What does POP3 look like?

    +

    POP3 (Say goodbye):

    +
    +C: QUIT
    +S: +OK dewey POP3 server signing off (maildrop empty)
    +C: <client hangs up>
    +
    +
    +
    +

    POP3 Characteristics

    +
      +
    • Interaction consists of commands and replies
    • +
    • Each command or reply is one line terminated by <CRLF>
    • +
    • The exception is message payload, terminated by <CRLF>.<CRLF>
    • +
    • Each command has a verb and one or more arguments
    • +
    • Each reply has a formal code and an informal explanation
    • +
    +

    The codes don't really look the same, though, do they?

    +
    +
    +

    One Other Difference

    +

    The exception to the one-line-per-message rule is payload

    +

    In both SMTP and POP3 this is terminated by <CRLF>.<CRLF>

    +

    In SMTP, the client has this ability

    +

    But in POP3, it belongs to the server. Why?

    +
    +
    +

    What does IMAP look like?

    +

    IMAP (Say hello and identify yourself):

    +
    +C: <client connects to service port 143>
    +S: * OK example.com IMAP4rev1 v12.264 server ready
    +C: A0001 USER "frobozz" "xyzzy"
    +S: * OK User frobozz authenticated
    +
    +
    +
    +

    What does IMAP look like?

    +

    IMAP (Ask for information, provide answers [connect to an inbox]):

    +
    +C: A0002 SELECT INBOX
    +S: * 1 EXISTS
    +S: * 1 RECENT
    +S: * FLAGS (\Answered \Flagged \Deleted \Draft \Seen)
    +S: * OK [UNSEEN 1] first unseen message in /var/spool/mail/esr
    +S: A0002 OK [READ-WRITE] SELECT completed
    +
    +
    +
    +

    What does IMAP look like?

    +

    IMAP (Ask for information, provide answers [Get message sizes]):

    +
    +C: A0003 FETCH 1 RFC822.SIZE
    +S: * 1 FETCH (RFC822.SIZE 2545)
    +S: A0003 OK FETCH completed
    +
    +
    +
    +

    What does IMAP look like?

    +

    IMAP (Ask for information, provide answers [Get first message header]):

    +
    +C: A0004 FETCH 1 BODY[HEADER]
    +S: * 1 FETCH (RFC822.HEADER {1425}
    +<server sends 1425 octets of message payload>
    +S: )
    +S: A0004 OK FETCH completed
    +
    +
    +
    +

    What does IMAP look like?

    +

    IMAP (Ask for information, provide answers [Get first message body]):

    +
    +C: A0005 FETCH 1 BODY[TEXT]
    +S: * 1 FETCH (BODY[TEXT] {1120}
    +<server sends 1120 octets of message payload>
    +S: )
    +S: * 1 FETCH (FLAGS (\Recent \Seen))
    +S: A0005 OK FETCH completed
    +
    +
    +
    +

    What does IMAP look like?

    +

    IMAP (Say goodbye):

    +
    +C: A0006 LOGOUT
    +S: * BYE example.com IMAP4rev1 server terminating connection
    +S: A0006 OK LOGOUT completed
    +C: <client hangs up>
    +
    +
    +
    +

    IMAP Characteristics

    +
      +
    • Interaction consists of commands and replies
    • +
    • Each command or reply is one line terminated by <CRLF>
    • +
    • Each command has a verb and one or more arguments
    • +
    • Each reply has a formal code and an informal explanation
    • +
    +
    +
    +

    IMAP Differences

    +
      +
    • Commands and replies are prefixed by 'sequence identifier'
    • +
    • Payloads are prefixed by message size, rather than terminated by reserved +sequence
    • +
    +

    Compared with POP3, what do these differences suggest?

    +
    +
    +

    Protocols in Python

    +

    Let's try this out for ourselves!

    +
    +
    +

    Protocols in Python

    +

    Fire up your python interpreters and prepare to type.

    +
    +
    +

    IMAP in Python

    +

    Begin by importing the imaplib module from the Python Standard Library:

    +
    +>>> import imaplib
    +>>> dir(imaplib)
    +['AllowedVersions', 'CRLF', 'Commands',
    + 'Continuation', 'Debug', 'Flags', 'IMAP4',
    + 'IMAP4_PORT', 'IMAP4_SSL', 'IMAP4_SSL_PORT',
    + 'IMAP4_stream', 'Int2AP', 'InternalDate',
    + 'Internaldate2tuple', 'Literal', 'MapCRLF',
    + ...
    + 'socket', 'ssl', 'sys', 'time']
    +
    +
    +
    +

    IMAP in Python

    +

    I've prepared a server for us to use, we'll need to set up a client to speak +to it. Our server requires SSL for connecting to IMAP servers, so let's +initialize an IMAP4_SSL client and authenticate:

    +
    +>>> conn = imaplib.IMAP4_SSL('mail.webfaction.com')
    +  57:04.83 imaplib version 2.58
    +  57:04.83 new IMAP4 connection, tag=FNHG
    +>>> conn.login(username, password)
    +('OK', ['Logged in.'])
    +
    +
    +
    +

    IMAP in Python

    +

    Let's set up debugging so that we can see the communication back and forth +between client and server:

    +
    +>>> conn.debug = 4 # >3 prints all messages
    +
    +

    We can start by listing the mailboxes we have on the server:

    +
    +>>> conn.list()
    +  00:41.91 > FNHG3 LIST "" *
    +  00:41.99 < * LIST (\HasNoChildren) "." "INBOX"
    +  00:41.99 < FNHG3 OK List completed.
    +('OK', ['(\\HasNoChildren) "." "INBOX"'])
    +
    +
    +
    +

    IMAP in Python

    +

    To interact with our email, we must select a mailbox from the list we received +earlier:

    +
    +>>> conn.select('INBOX')
    +  00:00.47 > FNHG2 SELECT INBOX
    +  00:00.56 < * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
    +  00:00.56 < * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
    +  00:00.56 < * 2 EXISTS
    +  00:00.57 < * 0 RECENT
    +  00:00.57 < * OK [UNSEEN 2] First unseen.
    +  00:00.57 < * OK [UIDVALIDITY 1357449499] UIDs valid
    +  00:00.57 < * OK [UIDNEXT 3] Predicted next UID
    +  00:00.57 < FNHG2 OK [READ-WRITE] Select completed.
    +('OK', ['2'])
    +
    +
    +
    +

    IMAP in Python

    +

    We can search our selected mailbox for messages matching one or more criteria. +The return value is a string list of the UIDs of messages that match our +search:

    +
    +>>> conn.search(None, '(FROM "IPIP")')
    +  18:25.41 > FNHG5 SEARCH (FROM "IPIP")
    +  18:25.54 < * SEARCH 1 2
    +  18:25.54 < FNHG5 OK Search completed.
    +('OK', ['1 2'])
    +>>>
    +
    +
    +
    +

    IMAP in Python

    +

    Once we've found a message we want to look at, we can use the fetch +command to read it from the server. IMAP allows fetching each part of +a message independently:

    +
    +>>> conn.fetch('2', '(BODY[HEADER])')
    +...
    +>>> conn.fetch('2', '(BODY[TEXT])')
    +...
    +>>> conn.fetch('2', '(FLAGS)')
    +
    +
    +
    +

    Python Means Batteries Included

    +

    So we can download an entire message and then make a Python email message +object

    +
    +>>> import email
    +>>> typ, data = conn.fetch('2', '(RFC822)')
    +  28:08.40 > FNHG8 FETCH 2 (RFC822)
    +  ...
    +
    +

    Parse the returned data to get to the actual message

    +
    +>>> for part in data:
    +...   if isinstance(part, tuple):
    +...     msg = email.message_from_string(part[1])
    +...
    +>>>
    +
    +
    +
    +

    IMAP in Python

    +

    Once we have that, we can play with the resulting email object:

    +
    +>>> msg['to']
    +'demo@crisewing.com'
    +>>> print msg.get_payload()
    +This is an email message
    +
    +

    Neat, huh?

    +
    +
    +

    What Have We Learned?

    +
      +
    • Protocols are just a set of rules for how to communicate
    • +
    • Protocols tell us how to delimit messages
    • +
    • Protocols tell us what messages are valid
    • +
    • If we properly format request messages to a server, we can get answer +messages
    • +
    • Python supports a number of these protocols
    • +
    • So we don't have to remember how to format the commands ourselves
    • +
    +

    But in every case we've seen, we could do the same thing with a socket and +some strings

    +
    +
    +

    HTTP

    +

    HTTP is no different

    +
    +
    +

    HTTP

    +

    HTTP is also message-centered, with two-way communications:

    +
      +
    • Requests (Asking for information)
    • +
    • Responses (Providing answers)
    • +
    +
    +
    +

    What does HTTP look like?

    +

    HTTP (Ask for information):

    +
    +GET /index.html HTTP/1.1
    +Host: www.example.com
    +<CRLF>
    +
    +
    +
    +

    What does HTTP look like?

    +

    HTTP (Provide answers):

    +
    +HTTP/1.1 200 OK
    +Date: Mon, 23 May 2005 22:38:34 GMT
    +Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
    +Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
    +Etag: "3f80f-1b6-3e1cb03b"
    +Accept-Ranges:  none
    +Content-Length: 438
    +Connection: close
    +Content-Type: text/html; charset=UTF-8
    +<CRLF>
    +<438 bytes of content>
    +
    +
    +
    +

    HTTP Req/Resp Format

    +

    Both share a common basic format:

    +
      +
    • Line separators are <CRLF> (familiar, no?)
    • +
    • An required initial line (a command or a response code)
    • +
    • A (mostly) optional set of headers, one per line
    • +
    • A blank line
    • +
    • An optional body
    • +
    +
    +
    +

    HTTP In Real Life

    +

    Let's investigate the HTTP protocol a bit in real life.

    +

    We'll do so by building a simplified HTTP server, one step at a time.

    +

    We'll bootstrap ourselves by using the echo_server.py file we created +earlier.

    +

    Make a copy of that file now. Call it http_server_1.py. Open it in your +text editors.

    +
    +
    +

    Viewing an HTTP Request

    +

    In a terminal, start your server running, like so:

    +
    +$ python http_server_1.py
    +making a server on 127.0.0.1:10000
    +waiting for a connection
    +
    +

    This time, instead of using your echo client to make a connection, let's use +a web browser

    +

    Point your favorite browser at http://localhost:10000

    +
    +
    +

    A Bad Interaction

    +

    First, look at the printed output from your echo server.

    +

    Second, note that your browser is still waiting to finish loading the page

    +

    Moreover, your server should also be hung, waiting for more from the 'client'

    +

    This is because we are not yet following the right protocol.

    +
    +
    +

    Echoing A Request

    +

    Kill your server with ctrl-c (the keyboard interrupt) and you should see +some printed content:

    +
    +GET / HTTP/1.1
    +Host: localhost:10000
    +User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:22.0) Gecko/20100101 Firefox/22.0
    +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    +Accept-Language: en-US,en;q=0.5
    +Accept-Encoding: gzip, deflate
    +DNT: 1
    +Cookie: __utma=111872281.383966302.1364503233.1364503233.1364503233.1; __utmz=111872281.1364503233.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); csrftoken=uiqj579iGRbReBHmJQNTH8PFfAz2qRJS
    +Connection: keep-alive
    +Cache-Control: max-age=0
    +
    +

    Your results will vary from mine.

    +
    +
    +

    HTTP Debugging

    +

    When working on applications, it's nice to be able to see all this going back +and forth. There are several apps that can help with this:

    + +

    These tools can show you both request and response, headers and all. Very +useful.

    +
    +
    +

    HTTP Requests

    +

    In HTTP 1.0, the only required line in an HTTP request is this:

    +
    +GET /path/to/index.html HTTP/1.0
    +<CRLF>
    +
    +

    As virtual hosting grew more common, that was not enough, so HTTP 1.1 adds a +single required header, Host:

    +
    +GET /path/to/index.html HTTP/1.1
    +Host: www.mysite1.com:80
    +<CRLF>
    +
    +
    +
    +

    HTTP Responses

    +

    In both HTTP 1.0 and 1.1, a proper response consists of an intial line, +followed by optional headers, a single blank line, and then optionally a +response body:

    +
    +HTTP/1.1 200 OK
    +Content-Type: text/plain
    +<CRLF>
    +this is a pretty minimal response
    +
    +

    Let's update our server to return such a response.

    +
    +
    +

    Basic HTTP Protocol

    +

    Begin by implementing a new function in your http_server_1.py script called +response_ok.

    +

    It can be super-simple for now. We'll improve it later.

    +

    It needs to return our minimal response from above:

    +
    +HTTP/1.1 200 OK
    +Content-Type: text/plain
    +<CRLF>
    +this is a pretty minimal response
    +
    +
    +
    +

    My Solution

    +
    +def response_ok():
    +    """returns a basic HTTP response"""
    +    resp = []
    +    resp.append("HTTP/1.1 200 OK")
    +    resp.append("Content-Type: text/plain")
    +    resp.append("")
    +    resp.append("this is a pretty minimal response")
    +    return "\r\n".join(resp)
    +
    +
    +
    +

    Server Modifications

    +

    Next, we need to rebuild the server loop from our echo server for it's new +purpose:

    +

    It should be able to return a response built by our function when a request +is finished

    +

    We could also bump up the buffer size to something more reasonable for HTTP +traffic, say 1024

    +
    +
    +

    My Solution

    +
    +# ...
    +try:
    +    while True:
    +        print >>sys.stderr, 'waiting for a connection'
    +        conn, addr = sock.accept() # blocking
    +        try:
    +            print >>sys.stderr, 'connection - %s:%s' % addr
    +            while True:
    +                data = conn.recv(1024)
    +                if len(data) < 1024:
    +                    break
    +
    +            print >>sys.stderr, 'sending response'
    +            response = response_ok()
    +            conn.sendall(response)
    +        finally:
    +            conn.close()
    +# ...
    +
    +
    +
    +

    Test Your Work

    +

    Once you've got that set, restart your server:

    +
    +$ python http_server_1.py
    +
    +

    reload your browser pointing to http://localhost:10000 and watch the magic!

    +
    +
    +

    Parts of a Request

    +

    Every HTTP request must begin with a single line, broken by whitespace into +three parts:

    +
    +GET /path/to/index.html HTTP/1.1
    +
    +

    The three parts are the method, the URI, and the protocol

    +

    Let's look at each in turn.

    +
    +
    +

    HTTP Methods

    +

    GET /path/to/index.html HTTP/1.1

    +
      +
    • Every HTTP request must start with a method

      +
    • +
    • There are four main HTTP methods:

      +
      +
        +
      • GET
      • +
      • POST
      • +
      • PUT
      • +
      • DELETE
      • +
      +
      +
    • +
    +
      +
    • There are others, notably HEAD, but you won't see them too much
    • +
    +
    +
    +

    HTTP Methods

    +

    These four methods are mapped to the four basic steps (CRUD) of persistent +storage:

    +
      +
    • POST = Create
    • +
    • GET = Read
    • +
    • PUT = Update
    • +
    • DELETE = Delete
    • +
    +
    +
    +

    Verbs: Safe <--> Unsafe

    +

    HTTP verbs can be categorized as safe or unsafe, based on whether they +might change something on the server:

    +
      +
    • +
      Safe HTTP Verbs
      +
        +
      • GET
      • +
      +
      +
      +
    • +
    • +
      Unsafe HTTP Verbs
      +
        +
      • POST
      • +
      • PUT
      • +
      • DELETE
      • +
      +
      +
      +
    • +
    +

    This is a normative distinction, which is to say be careful

    +
    +
    +

    Verbs: Idempoent <--> ???

    +

    HTTP verbs can be categorized as idempotent, based on whether a given +request will always have the same result:

    +
      +
    • +
      Idempotent HTTP Verbs
      +
        +
      • GET
      • +
      • PUT
      • +
      • DELETE
      • +
      +
      +
      +
    • +
    • +
      Non-Idempotent HTTP Verbs
      +
        +
      • POST
      • +
      +
      +
      +
    • +
    +

    Again, normative. The developer is responsible for ensuring that it is true.

    +
    +
    +

    HTTP Method Handling

    +

    Let's keep things simple, our server will only respond to GET requests.

    +

    We need to create a function that parses a request and determines if we can +respond to it: parse_request.

    +

    If the request method is not GET, our method should raise an error

    +

    Remember, although a request is more than one line long, all we care about +here is the first line

    +
    +
    +

    My Solution

    +
    +def parse_request(request):
    +    first_line = request.split("\r\n", 1)[0]
    +    method, uri, protocol = first_line.split()
    +    if method != "GET":
    +        raise NotImplementedError("We only accept GET")
    +    print >>sys.stderr, 'request is okay'
    +
    +
    +
    +

    Update the Server

    +

    We'll also need to update the server code. It should

    +
      +
    • save the request as it comes in
    • +
    • check the request using our new function
    • +
    • send an OK response if things go well
    • +
    +
    +
    +

    My Solution

    +
    +# ...
    +conn, addr = sock.accept() # blocking
    +try:
    +    print >>sys.stderr, 'connection - %s:%s' % addr
    +    request = ""
    +    while True:
    +        data = conn.recv(1024)
    +        request += data
    +        if len(data) < 1024 or not data:
    +            break
    +
    +    parse_request(request)
    +    print >>sys.stderr, 'sending response'
    +    response = response_ok()
    +    conn.sendall(response)
    +finally:
    +    conn.close()
    +# ...
    +
    +
    +
    +

    Test Your Work

    +

    Quit and restart your server, now that you've updated the code.

    +

    Reload your browser. It should work fine.

    +

    We can use the echo_client.py script from yesterday to test our error +condition. In a second terminal window run the script like so:

    +
    +$ python echo_client.py "POST / HTTP/1.0\r\n\r\n"
    +
    +

    You'll have to quit the client pretty quickly with ctrl-c

    +
    +
    +

    Error Responses

    +

    Okay, so the outcome there was pretty ugly. The client went off the rails, and +our server has terminated as well.

    +

    The HTTP protocol allows us to handle errors like this more gracefully.

    +

    Enter the Response Code

    +
    +
    +

    HTTP Response Codes

    +

    HTTP/1.1 200 OK

    +

    All HTTP responses must include a response code indicating the outcome of +the request.

    +
      +
    • 1xx (HTTP 1.1 only) - Informational message
    • +
    • 2xx - Success of some kind
    • +
    • 3xx - Redirection of some kind
    • +
    • 4xx - Client Error of some kind
    • +
    • 5xx - Server Error of some kind
    • +
    +

    The text bit makes the code more human-readable

    +
    +
    +

    Common Response Codes

    +

    There are certain HTTP response codes you are likely to see (and use) most +often:

    +
      +
    • 200 OK - Everything is good
    • +
    • 301 Moved Permanently - You should update your link
    • +
    • 304 Not Modified - You should load this from cache
    • +
    • 404 Not Found - You've asked for something that doesn't exist
    • +
    • 500 Internal Server Error - Something bad happened
    • +
    +

    Do not be afraid to use other, less common codes in building good apps. There +are a lot of them for a reason. See +http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

    +
    +
    +

    Handling our Error

    +

    Luckily, there's an error code that is tailor-made for this situation.

    +

    The client has made a request using a method we do not support

    +

    405 Method Not Allowed

    +

    Let's add a new function that returns this error code. It should be called +response_method_not_allowed

    +
    +
    +

    My Solution

    +
    +def response_method_not_allowed():
    +    """returns a 405 Method Not Allowed response"""
    +    resp = []
    +    resp.append("HTTP/1.1 405 Method Not Allowed")
    +    resp.append("")
    +    return "\r\n".join(resp)
    +
    +
    +
    +

    Server Updates

    +

    Again, we'll need to update the server to handle this error condition +correctly. It should

    +
      +
    • catch the exception raised by the parse_request function
    • +
    • return our new error response as a result
    • +
    • if no exception is raised, then return the OK response
    • +
    +
    +
    +

    My Solution

    +
    +# ...
    +while True:
    +    data = conn.recv(1024)
    +    request += data
    +    if len(data) < 1024 or not data:
    +        break
    +
    +try:
    +    parse_request(request)
    +except NotImplementedError:
    +    response = response_method_not_allowed()
    +else:
    +    response = response_ok()
    +
    +print >>sys.stderr, 'sending response'
    +conn.sendall(response)
    +# ...
    +
    +
    +
    +

    Test Your Work

    +

    Start your server (or restart it if by some miracle it's still going).

    +

    Then test this out by using the echo_client.py script again:

    +
    +$ python echo_client.py "POST / HTTP/1.1\r\n\r\n"
    +connecting to localhost port 10000
    +sending "POST / HTTP/1.1\r\n\r\n"
    +received "HTTP/1.1 405 Met"
    +received "hod Not Allowed
    +closing socket
    +
    +
    +
    +

    HTTP - Resources

    +

    We've got a very simple server that accepts a request and sends a response. +But what happens if we make a different request?

    +
    +

    In your web browser, enter the following URL:

    +
    +http://localhost:10000/page
    +
    +
    +
    +

    What happened? What happens if you use this URL:

    +
    +http://localhost:10000/section/page?
    +
    +
    +
    +
    +

    HTTP - Resources

    +

    We expect different urls to result in different responses.

    +

    But this isn't happening with our server, for obvious reasons.

    +

    It brings us back to the second element of that first line of an HTTP request.

    +

    The Return of the URI

    +
    +
    +

    HTTP Requests: URI

    +

    GET /path/to/index.html HTTP/1.1

    + +
    +
    +

    Responding to URIs

    +

    We should expand our server's capabilities so that it can make different +responses to different URIs.

    +

    To simplify things for ourselves, let's allow our server to serve up +directories and files from our own filesystem.

    +

    This will be much like other common HTTP servers, like Apache or nginx.

    +

    Save your http_server_1.py module as http_server_2.py. If you've +fallen behind, you can find a copy of http_server_2.py in the class +resources folder.

    +
    +
    +

    Getting a URI

    +

    First, let's update our parse_request method so that it returns the URI it +parses from the first line of our request:

    +
    +def parse_request(request):
    +    first_line = request.split("\r\n", 1)[0]
    +    method, uri, protocol = first_line.split()
    +    if method != "GET":
    +        raise NotImplementedError("We only accept GET")
    +    print >>sys.stderr, 'serving request for %s' % uri
    +    return uri
    +
    +

    Next, we need to write a function that handles this uri for us: +resolve_uri.

    +
    +
    +

    What Should It Do?

    +

    Let's think for a bit about the specs for our function:

    +
      +
    • It should take a URI as the sole argument
    • +
    • It should use the pathname represented by the URI as a search path for a +filesystem location
    • +
    • It should have a 'home directory', someplace that serves as the root of the +search path.
    • +
    • If the URI represents a directory, the method should return a directory +listing
    • +
    • If the URI represents a file of some sort, the method should return the +contents of that file.
    • +
    • If the URI does not map to a real location, it should raise an exception.
    • +
    +
    +
    +

    My Solution

    +
    +# at the top of the file:
    +import os
    +
    +# add this function
    +def resolve_uri(uri):
    +    """return the filesystem resources identified by 'uri'"""
    +    home = 'webroot' # this is relative to the location of
    +                     # the server script, could be a full path
    +    filename = os.path.join(home, uri.lstrip('/'))
    +    if os.path.isfile(filename):
    +        contents = open(filename, 'rb').read()
    +        return contents:
    +    elif os.path.isdir(filename):
    +        listing = "\n".join(os.listdir(filename))
    +        return listing
    +    else:
    +        raise ValueError("Not Found")
    +
    +
    +
    +

    Returning Content

    +

    Now we have to do something with the return value of that function.

    +

    The value should be returned to the client as a response.

    +

    Let's update our response_ok function to incorporate this stuff.

    +

    Remember, this new material is the body of our response.

    +
    +
    +

    My Solution

    +
    +def response_ok(body):
    +    """returns a basic HTTP response"""
    +    resp = []
    +    resp.append("HTTP/1.1 200 OK")
    +    resp.append("Content-Type: text/plain")
    +    resp.append("")
    +    resp.append(body)
    +    return "\r\n".join(resp)
    +
    +
    +
    +

    Handling The Error

    +

    Our resolve_uri function also adds a new possible error condition, one +that maps nicely to a common HTTP response code.

    +

    We'll need a function that generates that response for us

    +
    +def response_not_found():
    +    """return a 404 Not Found response"""
    +    resp = []
    +    resp.append("HTTP/1.1 404 Not Found")
    +    resp.append("")
    +    return "\r\n".join(resp)
    +
    +
    +
    +

    Server Updates

    +

    Finally, we need to update the code in our server loop to handle this new +stuff.

    +
      +
    • It should bind the return value of parse_request to a symbol
    • +
    • It should pass that value in to our new resolve_uri function
    • +
    • It should bind the return value of that function to another symbol
    • +
    • It should use that value to build an OK response
    • +
    • It should return that response to the client via the open connection socket.
    • +
    • If the ValueError from resolve_uri is raised, it should handle it by +returning the proper response.
    • +
    +
    +
    +

    My Solution

    +
    +# ...
    +while True:
    +    data = conn.recv(1024)
    +    request += data
    +    if len(data) < 1024 or not data:
    +        break
    +
    +try:
    +    uri = parse_request(request)
    +    content = resolve_uri(uri)
    +except NotImplementedError:
    +    response = response_method_not_allowed()
    +except ValueError:
    +    response = response_not_found()
    +else:
    +    response = response_ok(content)
    +print >>sys.stderr, 'sending response'
    +conn.sendall(response)
    +# ...
    +
    +
    +
    +

    Test Your Work

    +

    To test our new functionality, we need a bit of extra stuff, like a directory +with interesting material in it.

    +

    In the class resources folder, I've provided a suitable directory. It's called +webroot.

    +

    Copy that directory and all its contents into the location where you've been +creating your server files.

    +

    Restart your server: $ python http_server_2.py

    +
    +
    +

    What's Missing?

    +

    Point your browser at http://localhost:10000/.

    +

    Try http://localhost:10000/a_web_page.html.

    +

    How about http://localhost:10000/images/JPEG_example.jpg?

    +

    What's going wrong here?

    +
    +
    +

    HTTP Headers

    +

    The problem is that we're identifying all the content we return as plain +text.

    +

    We can fix this by passing information about exactly what we are returning as +part of the response.

    +

    HTTP provides for this type of thing with the generic idea of Headers

    +
    +
    +

    HTTP Headers

    +

    Both requests and responses can contain headers of the form Name: Value

    +
      +
    • HTTP 1.0 has 16 valid headers, 1.1 has 46
    • +
    • Any number of spaces or tabs may separate the name from the value
    • +
    • If a header line starts with spaces or tabs, it is considered part of the +value for the previous header
    • +
    • Header names are not case-sensitive, but values may be
    • +
    +

    read more about HTTP headers: http://www.cs.tut.fi/~jkorpela/http.html

    +
    +
    +

    Content-Type Header

    +

    A very common header used in HTTP responses is Content-Type. It tells the +client what to expect.

    +
      +
    • uses mime-type (Multi-purpose Internet Mail Extensions)
    • +
    • foo.jpeg - Content-Type: image/jpeg
    • +
    • foo.png - Content-Type: image/png
    • +
    • bar.txt - Content-Type: text/plain
    • +
    • baz.html - Content-Type: text/html
    • +
    +

    There are many mime-type identifiers: +http://www.webmaster-toolkit.com/mime-types.shtml

    +
    +
    +

    Mapping Mime-types

    +

    By mapping a given file to a mime-type, we can write a header.

    +

    The standard lib module mimetypes does just this.

    +
    +

    We can guess the mime-type of a file based on the filename or map a file +extension to a type:

    +
    +>>> import mimetypes
    +>>> mimetypes.guess_type('file.txt')
    +('text/plain', None)
    +>>> mimetypes.types_map['.txt']
    +'text/plain'
    +
    +
    +
    +
    +

    Build a Content-type Header

    +

    We'll need to do a couple of things:

    +
      +
    • Extend the resolve_uri function to return content and mime-type
    • +
    • Extend the response_ok function to accept both content and mime-type as +arguments
    • +
    • Extend the response_ok function to write a Content-Type: XYZ header
    • +
    • Adjust the server loop appropriately
    • +
    +
    +
    +

    My Solution

    +

    for resolve_uri:

    +
    +# at the top of the file:
    +import mimetypes
    +
    +# in the existing function:
    +# ...
    +    if os.path.isfile(filename):
    +        ext = os.path.splitext(filename)[1]
    +        mimetype = mimetypes.types_map.get(ext, 'text/plain')
    +        contents = open(filename, 'rb').read()
    +        return contents, mimetype
    +    elif os.path.isdir(filename):
    +    listing = "\n".join(os.listdir(filename))
    +    return listing, 'text/plain'
    +else:
    +    raise ValueError("Not Found")
    +
    +
    +
    +

    My Solution

    +

    for response_ok:

    +
    +def response_ok(body, mimetype):
    +    """returns a basic HTTP response"""
    +    resp = []
    +    resp.append("HTTP/1.1 200 OK")
    +    resp.append("Content-Type: %s" % mimetype)
    +    resp.append("")
    +    resp.append(body)
    +    return "\r\n".join(resp)
    +
    +
    +
    +

    My Solution

    +

    for the server loop:

    +
    +# ...
    +try:
    +    uri = parse_request(request)
    +    content, mimetype = resolve_uri(uri)
    +except NotImplementedError:
    +    response = response_method_not_allowed()
    +except ValueError:
    +    response = response_not_found()
    +else:
    +    response = response_ok(content, mimetype)
    +
    +print >>sys.stderr, 'sending response'
    +conn.sendall(response)
    +# ...
    +
    +
    +
    +

    Test Your Work

    +

    Now, restart your server script and point your browser at various URLs, starting +from the root (http://localhost:10000/).

    +

    Much better results, no?

    +
    +
    +

    A Few Steps Further

    +
      +
    • Format directory listings as actual HTML, so you can make file names into +links.
    • +
    • Add a GMT Date: header in the proper format (RFC-1123) to responses. +hint: see email.utils.formatdate in the python standard library
    • +
    • Add a Content-Length: header for OK responses that provides a +correct value.
    • +
    • Protect your server against errors by providing, and using, a function that +returns a 500 Internal Server Error response.
    • +
    • Instead of returning the python script in webroot as plain text, execute +the file and return the results as HTML.
    • +
    +
    +
    +

    Wrap-Up

    +

    For comparison, you might wish to take a look at the code in the Python +Standard Library's SocketServer, BaseHTTPServer and +SimpleHTTPServer modules:

    +
    +>>> import SocketServer, BaseHTTPServer, SimpleHTTPServer
    +>>> SocketServer.__file__
    +'/full/path/to/your/copy/of/SocketServer.py'
    +...
    +
    +

    See You Tomorrow!

    +
    +
    + + diff --git a/presentations/session03-addenda.html b/presentations/session03-addenda.html new file mode 100644 index 00000000..d47df60a --- /dev/null +++ b/presentations/session03-addenda.html @@ -0,0 +1,386 @@ + + + + + + + +Python Web Programming + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    Python Web Programming

    + +

    API Addenda

    + +
    +
    +

    XML-RPC

    +

    Examples of XML-RPC using the Python Standard Library

    +
    +
    +

    XML-RPC Example - Server

    +

    xmlrpc_server.py:

    +
    +from SimpleXMLRPCServer import SimpleXMLRPCServer
    +
    +server = SimpleXMLRPCServer(('localhost', 50000))
    +
    +def multiply(a, b):
    +    return a * b
    +server.register_function(multiply)
    +
    +try:
    +    print "Use Ctrl-C to Exit"
    +    server.serve_forever()
    +except KeyboardInterrupt:
    +    print "Exiting"
    +
    +
    +
    +

    XML-RPC Example - Client

    +

    We can run a client from a terminal. First, open one terminal and run the +xmlrpc_server.py script:

    +
    +$ python xmlrcp_server.py
    +

    Then, open another terminal and start up python:

    +
    +>>> import xmlrpclib
    +>>> proxy = xmlrpclib.ServerProxy('http://localhost:50000', verbose=True)
    +>>> proxy.multiply(3, 24)
    +...
    +72
    +
    +
    +
    +

    XML-RPC Request

    +

    verbose=True allows us to see the request we sent:

    +
    +POST /RPC2 HTTP/1.0
    +Host: localhost:50000
    +User-Agent: xmlrpclib.py/1.0.1 (by www.pythonware.com)
    +Content-Type: text/xml
    +Content-Length: 192
    +
    +<?xml version='1.0'?>
    +<methodCall>
    + <methodName>multiply</methodName>
    + <params>
    +  <param>
    +   <value><int>3</int></value>
    +  </param>
    +  <param>
    +   <value><int>24</int></value>
    +  </param>
    + </params>
    +</methodCall>
    +
    +
    +
    +

    XML-RPC Response

    +

    and we can see the response, too:

    +
    +HTTP/1.0 200 OK
    +Server: BaseHTTP/0.3 Python/2.6.1
    +Date: Sun, 13 Jan 2013 03:38:00 GMT
    +Content-type: text/xml
    +Content-length: 121
    +
    +<?xml version='1.0'?>
    +<methodResponse>
    + <params>
    +  <param>
    +   <value><int>72</int></value>
    +  </param>
    + </params>
    +</methodResponse>
    +
    +
    +
    +

    More XML-RPC

    +

    Register an entire Python class as a service, exposing class methods:

    +
    +server.register_instance(MyClass())
    +
    +

    Keep an instance method private :

    +
    +class MyServiceClass(object):
    +    ...
    +    def public_method(self, arg1, arg2):
    +        """this method is public"""
    +        pass
    +
    +    def _private_method(self):
    +        """this method is private because it starts with '_'
    +        """
    +        pass
    +
    +
    +
    +

    XML-RPC Introspection

    +

    First, implement required methods on your service class:

    +
    +from SimpleXMLRPCServer import list_public_methods
    +
    +class MyServiceClass(object):
    +    ...
    +    def _listMethods(self):
    +        """custom logic for presenting method names to users
    +
    +        list_public_methods is a convenience function from the Python
    +        library, but you can make your own logic if you wish.
    +        """
    +        return list_public_methods(self)
    +
    +    def _methodHelp(self, method):
    +        """provide help text for an individual method
    +        """
    +        f = getattr(self, method)
    +        return f.__doc__
    +
    +
    +
    +

    XML-RPC Introspection

    +

    Then enable introspection via the server instance:

    +
    +server.register_introspection_functions()
    +
    +

    After this, a client proxy can call pre-defined methods to learn about what +your service offers:

    +
    +>>> for name in proxy.system.listMethods():
    +...     help = proxy.system.methodHelp(name)
    +...     print name
    +...     print "\t%s" % help
    +...
    +public_method
    +    this method is public
    +
    +
    +
    +

    Introspection Question

    +

    I told you when we added the _private_method that any method that any +method whose name starts with _ would be private.

    +

    But we also added a _listMethods method and a _methodHelp method and +those methods are listed when you run proxy.system.listMethods()

    +

    Why is this?

    +

    For a complete discussion of this, read this MOTW post

    +
    +
    +

    SOAP

    +

    Example of Using SOAP via the suds package

    +
    +
    +

    Install Suds

    +
      +
    • Quit your python interpreter if you have it running.
    • +
    • If you see (soupenv) at your command line prompt, cool.
    • +
    • If you do not, type source /path/to/soupenv/bin/activate
    • +
    • Windows folks: > \path\to\soupenv\Scripts\activate
    • +
    • Once activated: pip install suds
    • +
    +
    +
    +

    Creating a Suds Client

    +

    Suds allows us to create a SOAP client object. SOAP uses WSDL to define a +service. All we need to do to set this up in python is load the URL of the +WSDL for the service we want to use:

    +
    +(soupenv)$ python
    +>>> from suds.client import Client
    +>>> geo_client = Client('https://geoservices.tamu.edu/Services/Geocode/WebService/GeocoderService_V03_01.asmx?wsdl')
    +>>> geo_client
    +<suds.client.Client object at 0x10041fc10>
    +
    +
    +
    +

    Peeking at the Service

    +

    Suds allows us to visually scan the service. Simply print the client object to +see what the service has to offer:

    +
    +>>> print geo_client
    +
    +Suds ( https://fedorahosted.org/suds/ )  version: 0.4 GA  build: R699-20100913
    +
    +Service ( GeocoderService_V03_01 ) tns="https://geoservices.tamu.edu/"
    +   Prefixes (1)
    +      ns0 = "https://geoservices.tamu.edu/"
    +   Ports (2):
    +      (GeocoderService_V03_01Soap)
    +      Methods (4):
    +         ...
    +      Types (12):
    +         ...
    +
    +
    +
    +

    Debugging Suds

    +

    Suds uses python logging to deal with debug information, so if you want to see +what's going on under the hood, you configure it via the Python logging +module:

    +
    +>>> import logging
    +>>> logging.basicConfig(level=logging.INFO)
    +>>> logging.getLogger('suds.client').setLevel(logging.DEBUG)
    +
    +

    This will allow us to see the messages sent and received by our client.

    +
    +
    +

    Client Options

    +

    SOAP Servers can provide more than one service and each service might have +more than one port. Suds provides two ways to configure which service and +port you wish to use.

    +

    Via subscription:

    +
    +client.service['<service>']['<port>'].method(args)
    +
    +

    Or the way we will do it, via configuration:

    +
    +geo_client.set_options(service='GeocoderService_V03_01',
    +                       port='GeocoderService_V03_01Soap')
    +
    +
    +
    +

    Providing Arguments

    +

    Arguments to a method are set up as a dictionary. Although some may not be +required according to api documentation, it is safest to provide them all:

    +
    +apiKey = '<fill this in>'
    +args = {'apiKey': apiKey, }
    +args['streetAddress'] = '1325 4th Avenue'
    +args['city'] = 'Seattle'
    +args['state'] = 'WA'
    +args['zip'] = '98101'
    +args['version'] = 3.01
    +args['shouldReturnReferenceGeometry'] = True
    +args['shouldNotStoreTransactionDetails'] = True
    +args['shouldCalculateCensus'] = False
    +args['censusYear'] = "TwoThousandTen"
    +
    +
    +
    +

    Making the Call

    +

    Finally, once we've got the arguments all ready we can go ahead and make a call +to the server:

    +
    +>>> res = geo_client.service.GeocodeAddressNonParsed(**args)
    +DEBUG:suds.client:sending to
    +(https://geoservices.tamu.edu/Services/Geocode/WebService/GeocoderService_V03_01.asmx)
    +message:
    +...
    +
    +
    +
    +

    What does it look like?

    +
    +<?xml version="1.0" encoding="UTF-8"?>
    +<SOAP-ENV:Envelope xmlns:ns0="https://geoservices.tamu.edu/" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    +   <SOAP-ENV:Header/>
    +   <ns1:Body>
    +      <ns0:GeocodeAddressNonParsed>
    +         <ns0:streetAddress>1325 4th Avenue</ns0:streetAddress>
    +         <ns0:city>Seattle</ns0:city>
    +         <ns0:state>WA</ns0:state>
    +         <ns0:zip>98101</ns0:zip>
    +         <ns0:apiKey>a450a9181f85498598e21f8a39440e9a</ns0:apiKey>
    +         <ns0:version>3.01</ns0:version>
    +         <ns0:shouldCalculateCensus>false</ns0:shouldCalculateCensus>
    +         <ns0:censusYear>TwoThousandTen</ns0:censusYear>
    +         <ns0:shouldReturnReferenceGeometry>true</ns0:shouldReturnReferenceGeometry>
    +         <ns0:shouldNotStoreTransactionDetails>true</ns0:shouldNotStoreTransactionDetails>
    +      </ns0:GeocodeAddressNonParsed>
    +   </ns1:Body>
    +</SOAP-ENV:Envelope>
    +
    +
    +
    +

    And the Reply?

    +
    +<?xml version="1.0" encoding="utf-8"?>
    +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    +  <soap:Body>
    +    <GeocodeAddressNonParsedResponse xmlns="https://geoservices.tamu.edu/">
    +      <GeocodeAddressNonParsedResult>
    +        <TransactionId>6ef9c110-994c-4142-93d5-a55173526b64</TransactionId>
    +        <Latitude>47.6084110119244</Latitude>
    +        <Longitude>-122.3351592971042</Longitude>
    +        <Version>3.01</Version>
    +        <Quality>QUALITY_ADDRESS_RANGE_INTERPOLATION</Quality>
    +        <MatchedLocationType>LOCATION_TYPE_STREET_ADDRESS</MatchedLocationType>
    +        <MatchType>Exact</MatchType>
    +        <FeatureMatchingResultCount>1</FeatureMatchingResultCount>
    +        ...
    +        <FArea>2910.69420560356</FArea>
    +        <FAreaType>Meters</FAreaType>
    +        <FGeometrySRID>4269</FGeometrySRID>
    +        <FGeometry>&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;LineString xmlns="http://www.opengis.net/gml"&gt;&lt;posList&gt;-122.334868 47.608226 -122.335777 47.609219&lt;/posList&gt;&lt;/LineString&gt;</FGeometry>
    +        ...
    +      </GeocodeAddressNonParsedResult>
    +    </GeocodeAddressNonParsedResponse>
    +  </soap:Body>
    +</soap:Envelope>
    +
    +
    +
    +

    And What of Our Result?

    +

    The WSDL we started with should provide type definitions for both data we send +and results we receive. The res symbol we bound to our result earlier +should now be an instance of a GeocodeAddressNonParsedResult. Lets see what +that looks like:

    +
    +>>> type(res)
    +<type 'instance'>
    +>>> dir(res)
    +['CensusTimeTaken', 'CensusYear', 'ErrorMessage', 'FArea',
    + 'FAreaType', 'FCity', 'FCounty', 'FCountySubRegion',
    + ...]
    +>>> res.Latitude, res.Longitude
    +(47.608411011924403, -122.3351592971042)
    +
    +
    +
    +

    A Word on Debugging

    +

    blerg

    +
      +
    • Messages sent to the server are long XML strings
    • +
    • Error messages are generally based on parsing errors in XML
    • +
    • These error messages can be quite cryptic:
    • +
    • "There is an error in XML document (1, 572). ---> The string '' is not a +valid Boolean value.'
    • +
    +

    Try this:

    +
    +>>> geo_client.last_sent().str().replace(" ","")[:573]
    +'...</ns0:version>\n<ns0:shouldCalculateCensus/>'
    +
    +
    +
    + + diff --git a/presentations/session03.html b/presentations/session03.html new file mode 100644 index 00000000..27e9b178 --- /dev/null +++ b/presentations/session03.html @@ -0,0 +1,1485 @@ + + + + + + + +Python Web Programming + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    Python Web Programming

    + +img/granny_mashup.png +

    Session 3: Scraping, APIs and Mashups

    +

    Wherein we learn how to make order from the chaos of the wild internet.

    +

    image: Paul Downey http://www.flickr.com/photos/psd/492139935/ - CC-BY

    + +
    +
    +

    A Dilemma

    +

    The internet makes a vast quantity of data available.

    +

    But not always in the form or combination you want.

    +

    It would be nice to be able to combine data from different source to create +meaning.

    +
    +
    +

    The Big Question

    +

    But How?

    +
    +
    +

    The Big Answer

    +

    Mashups

    +
    +
    +

    Mashups

    +

    A mashup is:

    +
    +a web page, or web application, that uses and combines data, presentation +or functionality from two or more sources to create new services.
    +

    definition courtsey of wikipedia

    +
    +
    +

    Data Sources

    +

    The key to mashups is the idea of data sources.

    +

    These come in many flavors:

    +
      +
    • Simple websites with data in HTML
    • +
    • Web services providing structured data
    • +
    • Web services providing tranformative service (geocoding)
    • +
    • Web services providing presentation (mapping)
    • +
    +
    +
    +

    HTML Sources

    +

    It would be nice if all online data were available in well-structured formats.

    +

    The reality is that much data is available only in HTML.

    +

    Still we can get at it, with some effort.

    +

    By scraping the data from the web pages.

    +
    +
    +

    HTML, Ideally

    +
    +<!DOCTYPE html>
    +<html>
    +  <head>
    +  </head>
    +  <body>
    +    <p>A nice clean paragraph</p>
    +    <p>And another nice clean paragraph</p>
    +  </body>
    +</html>
    +
    +
    +
    +

    HTML... IRL

    +
    +<html>
    + <form>
    +  <table>
    +   <td><input name="input1">Row 1 cell 1
    +   <tr><td>Row 2 cell 1
    +  </form>
    +  <td>Row 2 cell 2<br>This</br> sure is a long cell
    + </body>
    +</html>
    +
    +
    +
    +

    FFFFFFFFFUUUUUUUUUUUUU

    +img/scream.jpg +

    Photo by Matthew via Flickr (http://www.flickr.com/photos/purplemattfish/3918004964/) - CC-BY-NC-ND

    +
    +
    +

    The Law of The Internet

    +

    "Be strict in what you send and tolerant in what you receive"

    +
    +
    +

    Taming the Mess

    +

    Luckily, there's a tool to help with this: BeautifulSoup.

    +

    BeautifulSoup is a great tool, but it's not in the Standard Library. We'll +need to install it.

    +
      +
    • As a real-world developer you need to do this a lot
    • +
    • As a web developer you need to install different versions of the same +library
    • +
    • For every non-standard library installed into a System Python, the gods kill +a kitten
    • +
    • Use Virtualenv...
    • +
    • Always
    • +
    +
    +
    +

    Getting Virtualenv

    +

    Three options for installing virtualenv (this is the exception to the above +rule):

    +
      +
    • pip install virtualenv
    • +
    • easy_install virtualenv
    • +
    +

    These both demand that you have already got pip or easy_install. If +you haven't, try this way instead:

    +
      +
    • download https://raw.github.com/pypa/virtualenv/master/virtualenv.py
    • +
    • remember where it goes. You'll need it
    • +
    +
    +
    +

    Creating a Virtualenv

    +

    Creating a new virtualenv is very very simple:

    +
    +$ python virtualenv.py [options] <ENV>
    +<or>
    +$ virtualenv [options] <ENV>
    +
    +
    +

    <ENV> is just the name of the environment you want to create. It's +arbitrary. Let's make one for our BeautifulSoup install:

    +
    +$ python virtualenv.py soupenv
    +New python executable in soupenv/bin/python2.6
    +New python executable in soupenv/bin/python
    +Installing setuptools........................done.
    +Installing pip...................done.
    +
    +
    +
    +
    +

    What Happened?

    +

    When you ran that file, a couple of things took place:

    +
      +
    • A new directory with your requested name was created
    • +
    • A new Python executable was created in <ENV>/bin (<ENV>/Scripts on Windows)
    • +
    • The new Python was cloned from the Python used to run the file
    • +
    • The new Python was isolated from any libraries installed in the old Python
    • +
    • Setuptools was installed so you have easy_install for this new python
    • +
    • Pip was installed so you have pip for this new python
    • +
    +

    Cool, eh? Learn more at http://www.virtualenv.org

    +
    +
    +

    Using Virtualenv

    +

    To install new libraries into a virtualenv, first activate the env:

    +
    +$ source soupenv/bin/activate
    +(soupenv)$ which python
    +/path/to/soupenv/bin/python
    +
    +

    Or, on Windows:

    +
    +> \path\to\soupenv\Scripts\activate
    +
    +

    If you use Powershell, read the note here: +http://www.virtualenv.org/en/latest/#activate-script

    +
    +
    +

    Install BeautifulSoup

    +

    Once the virtualenv is activated, you can simply use pip or easy_install to +install the libraries you want:

    +
    +(soupenv)$ pip install beautifulsoup4
    +
    +
    +
    +

    Choose a Parsing Engine

    +

    BeautifulSoup is built to use the Python HTMLParser.

    +
      +
    • Batteries Included. It's already there
    • +
    • It kinda sucks, especially before Python 2.7.3
    • +
    +

    BeautifulSoup also supports using other parsers. Let's install one. There are +two decent choices: lxml and html5lib.

    +

    lxml is better, but harder to install. Let's use html5lib today.

    +
    +
    +

    Install a Parsing Engine

    +

    Again, this is pretty simple:

    +
    +(soupenv)$ pip install html5lib
    +
    +

    Once that is installed, BeautifulSoup will choose it instead of the standard +library module.

    +

    BeautifulSoup will choose the best available, you don't need to worry about it +(though you can specify).

    +
    +
    +

    Install Requests

    +

    Python provides tools for opening urls and communicating with servers. It's +spread across the urllib and urllib2 packages.

    +

    These packages have pretty unintuitive APIs.

    +

    The requests library is becoming the de-facto standard for this type of +work. Let's install it too.

    +
    +(soupenv)$ pip install requests
    +
    +
    +
    +

    Our Class Mashup

    +

    We're going to build a mashup together today.

    +

    It will give us an annotated list of apartment rentals, so the next time we +have to move, we can find the exact right place.

    +

    We'll start by getting a raw list of apartment rentals from today's canonical +source:

    +

    Craigslist

    +

    Open a new file in your editor: mashup.py.

    +
    +
    +

    Examine the Source

    +

    Craigslist doesn't have an api, just a website, so we'll need to dig a bit

    +

    By going to the website and playing with the form there, we can derive a +formula for a search URL

    +
      +
    • Base URL: http://raleigh.craigslist.org/search/apa
    • +
    • keywords: query=keyword+values+here
    • +
    • price: minAsk=NNN maxAsk=NNN
    • +
    • bedrooms: bedrooms=N (N in range 1-8)
    • +
    +

    We can make a request with these parameters using the requests library we +installed a moment ago

    +
    +
    +

    Opening URLs with Requests

    +

    Requests has a very nice API for doing HTTP requests.

    +

    Each HTTP method is represented by a module-level function:

    +
      +
    • GET == requests.get(url, **kwargs)
    • +
    • POST == requests.post(url, **kwargs)
    • +
    • ...
    • +
    +

    Keyword arguments allow for other parts of an HTTP request:

    +
      +
    • params: url parameters (?foo=bar&baz=bim)
    • +
    • headers: headers to send with the request
    • +
    • data: the body of the request, if any (form data for POST goes here)
    • +
    • ...
    • +
    +
    +
    +

    Getting Responses with Requests

    +

    Once you've made a request using one of these methods, the return value is a +response.

    +

    This object has a number of useful attributes:

    +
      +
    • response.status_code: see the HTTP Status Code returned
    • +
    • response.ok: True if response.status_code is not an error code
    • +
    • response.headers: The headers sent in the response from the server
    • +
    • response.text: Body of the response, decoded to a unicode string
    • +
    • response.encoding: The encoding used to decode response.text
    • +
    • response.content: The original response body, not decoded (useful for +binary content)
    • +
    +

    If an error status is returned, you can raise a Python error by calling +response.raise_for_status.

    +
    +
    +

    Fetch Search Results

    +

    We can start our work by writing a function fetch_search_results

    +
      +
    • It will accept one keyword argument for each of the possible query values
    • +
    • It will build a dictionary of request query parameters from incoming keywords
    • +
    • It will make a request to the craigslist server using this query
    • +
    • It will return the body of the response if there is no error
    • +
    • It will raise an error if there is a problem with the response
    • +
    +

    Using what you've learned, take a stab at writing this function. Put it in +mashup.py

    +
    +
    +

    My Solution

    +

    Here's the one I created:

    +
    +import requests
    +
    +def fetch_search_results(**kwargs):
    +    base = 'http://raleigh.craigslist.org/search/apa'
    +    valid_kws = ('query', 'minAsk', 'maxAsk', 'bedrooms')
    +    use_kwargs = dict(
    +        [(key, val) for key, val in kwargs.items() if key in valid_kws])
    +    if not use_kwargs:
    +        raise ValueError("No valid keywords")
    +
    +    resp = requests.get(base, params=use_kwargs, timeout=3)
    +    if resp.ok:
    +        return resp.text, resp.encoding
    +    else:
    +        resp.raise_for_status()
    +
    +
    +
    +

    Parse the Results

    +

    Next, we need a function parse_source to set up HTML for scraping. It will +need to:

    +
      +
    • Take the response body from the previous method (or some other source)
    • +
    • Parse it using BeautifulSoup
    • +
    • Return the parsed object for further processing
    • +
    +

    Before you start, a word about parsing HTML with BeautifulSoup

    +
    +
    +

    Parsing HTML with BeautifulSoup

    +

    The BeautifulSoup object can be instantiated with a string or a file-like +object as the sole argument:

    +
    +from bs4 import BeautifulSoup
    +parsed = BeautifulSoup('<h1>Some HTML</h1>')
    +
    +fh = open('a_page.html', 'r')
    +parsed = BeautifulSoup(fh)
    +
    +page = urllib2.urlopen('http://site.com/page.html')
    +parsed = BeautifulSoup(page)
    +
    +

    You might want to open the documentation as reference +(http://www.crummy.com/software/BeautifulSoup/bs4/doc)

    +
    +
    +

    My Solution

    +

    Take a shot at writing this new function in mashup.py

    +
    +# add this import at the top
    +from bs4 import BeautifulSoup
    +
    +# then add this function lower down
    +def parse_source(html, encoding='utf-8'):
    +    parsed = BeautifulSoup(html, from_encoding=encoding)
    +    return parsed
    +
    +
    +
    +

    Put It Together

    +

    To see how we're doing, we'll need to make our script do something when run.

    +

    Add an if __name__ == '__main__`: block to the bottom of our library

    +
      +
    • Fetch a search results page
    • +
    • Parse the resulting HTML
    • +
    • For now, print out the results so we can see what we get
    • +
    +
    +

    You can print nice-looking output with BeautifulSoup:

    +
    +print parsed.prettify()
    +
    +
    +
    +
    +

    My Solution

    +

    Try to come up with the proper code on your own. Add it to mashup.py

    +
    +if __name__ == '__main__':
    +    params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2}
    +    html, encoding = fetch_search_results(**params)
    +    doc = parse_source(html, encoding)
    +    print doc.prettify(encoding=encoding)
    +
    +
    +
    +

    Test Your Work

    +

    Assuming your virtualenv is still active, you should be able to execute the +script.

    +
    +(soupenv)$ python mashup.py
    +<!DOCTYPE html>
    +<html class="nojs">
    + <head>
    +  <title>
    +   raleigh apts/housing for rent classifieds  - craigslist
    +  </title>
    +...
    +
    +
    +

    Try it again, this time redirect the output to a local file, so we can use +it without needing to hit the craiglist servers each time:

    +
    +(soupenv)$ python mashup.py > craigslist_results.html
    +
    +
    +
    +
    +

    Finding The Needle

    +

    The next step is to find the bits of this pile of HTML that matter to us.

    +

    We've got this HTML file, so let's open it in a browser and take a look

    +

    We'll want to find:

    +
      +
    • The HTML element that contains a single listing
    • +
    • The source of location data, listings without location should be abandoned
    • +
    • The description of a listing
    • +
    • The link to a full listing page on craigslist
    • +
    • Relevant price or size data.
    • +
    +
    +
    +

    Pulling it Out

    +

    Now that we know what we are looking for, we can extract it. In BeautifulSoup:

    +
      +
    • All HTML elements (including the parsed document itself) act like tags
    • +
    • A tag can be searched using the find_all method
    • +
    • The find_all method searches the descendents of the tag on which it is +called.
    • +
    • The find_all method takes arguments which act as filters on the search +results
    • +
    +
    +
    like so:
    +

    +
    tag.find_all(name, attrs, recursive, text, limit, **kwargs)
    +
    +
    +
    +

    Searching by CSS Class

    +

    The items we are looking for are p tags which have the CSS class +row:

    +

    find_all supports keyword arguments. If the keyword you use isn't one of +the listed arguments, it is treated as an attribute

    +

    In Python, class is a reserved word, so we can't use it as a keyword, but +you can use class_!

    +
    +parsed.find_all('p', class_='row')
    +
    +
    +
    +

    Try It Out

    +

    Let's fire up a python interpreter and get our hands dirty here:

    +
    +(soupenv)$ python
    +
    +
    +>>> html = open('craigslist_results.html', 'r').read()
    +>>> from bs4 import BeautifulSoup
    +>>> parsed = BeautifulSoup(html)
    +>>> listings = parsed.find_all('p', class_='row')
    +>>> len(entries)
    +100
    +
    +

    That sounds about right. Let's see if we can get only those with location +data.

    +
    +
    +

    Filtering Tricks

    +

    Attribute filters given a True value match tags with that attribute

    +

    Location data was in the data-latitude and data-longitude attributes.

    +
    +>>> location_attrs = {
    +...     'data-longitude': True,
    +...     'data-latitude': True}
    +>>> locatable = parsed.find_all(
    +...     'p', class_='row', attrs=location_attrs)
    +>>> len(locatable)
    +43
    +
    +

    Great. That worked nicely

    +
    +
    +

    Parsing a Row

    +

    Now that we have the rows we want, we need to parse them. We want to preserve:

    +
      +
    • Location data (latitude and longitude)
    • +
    • Source link (to craiglist detailed listing)
    • +
    • Description text
    • +
    • Price and size data
    • +
    +

    Which parts of a single row contain each of these elements?

    +
    +
    +

    Extracting Location

    +

    Location data is in the data- attributes we used to filter rows.

    +
    +

    We can read the HTML attributes of a 'tag' easily, using attrs:

    +
    +>>> row1 = locatable[0]
    +>>> row1.attrs
    +{u'data-pid': u'3949023084', u'data-latitude': u'35.8625743108992',
    + u'class': [u'row'], u'data-longitude': u'-78.6232739959049'}
    +>>> lat = row1.attrs.get('data-latitude', None)
    +>>> lon = row1.attrs.get('data-longitude', None)
    +>>> print lat, lon
    +35.8625743108992 -78.6232739959049
    +
    +
    +
    + +
    +

    Extracting Price and Size

    +

    Both price and size are held in the pnr span:

    +
    +>>> pnr = row1.find('span', class_='pnr')
    +
    +
    +

    Price, conveniently, is in it's own container:

    +
    +>>> price_span = pnr.find('span', class_='price')
    +>>> price = price_span.string.strip()
    +
    +
    +

    But the size element is not. It is a standalone text node.

    +

    Try finding it by reading the string property of our pnr tag.

    +
    +
    +

    Simple Navigation and Text

    +

    We can get to a simple text node by navigating there.

    +

    BeautifulSoup tags support navigation up, down and across document nodes.

    +
    +

    We already have the price span, the size text node is next at the same +level:

    +
    +>>> size = price.next_sibling.strip(' \n-/')
    +u'2br - 1160ft\xb2'
    +
    +
    +

    You may have noticed that we keep using strip. There are two reasons for +this.

    +
    +
    +

    The NavigableString Element

    +

    The most obvious reason is that we don't really want all the extra whitespace.

    +

    The second reason is more subtle. The values returned by string are +not simple unicode strings

    +
    +

    They are actually instances of a class called NavigableString:

    +
    +>>> price.next_sibling.__class__
    +<class 'bs4.element.NavigableString'>
    +
    +
    +

    These things hold references to their surroundings.

    +

    Calling strip or casting them to unicode converts them, saving memory

    +
    +
    +

    Put It All Together

    +

    Okay, a challenge. Combine everything we've done into a function that:

    +
      +
    • Extracts all the locatable listings from our html page
    • +
    • Iterates over each of them, and builds a dictionary of data +* include location, href, description, price and size
    • +
    • Returns a list of these dictionaries
    • +
    +

    Call it extract_listings

    +

    Put this new function into mashup.py and call it from __main__, +printing the result

    +
    +
    +

    My Solution

    +
    +def extract_listings(doc):
    +    location_attrs = {'data-latitude': True,
    +                      'data-longitude': True}
    +    for row in doc.find_all('p', class_='row',
    +                            attrs=location_attrs):
    +        location = dict(
    +            [(key, row.attrs.get(key)) for key in location_attrs])
    +        link = row.find('span', class_='pl').find('a')
    +        price_span = row.find('span', class_='price')
    +        listing = {
    +            'location': location,
    +            'href': link.attrs['href'],
    +            'description': link.string.strip(),
    +            'price': price_span.string.strip(),
    +            'size': price_span.next_sibling.strip(' \n-/')
    +        }
    +        yield listing
    +
    +
    +
    +

    My Solution

    +
    +if __name__ == '__main__':
    +    params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2}
    +    html, encoding = fetch_search_results(**params)
    +    doc = parse_source(html, encoding)
    +    for listing in extract_listings(doc):
    +        pprint.pprint(listing)
    +
    +
    +
    +

    Another Approach

    +

    Scraping web pages is tedious and inherently brittle

    +

    The owner of the website updates their layout, your code breaks

    +

    But there is another way to get information from the web in a more normalized +fashion

    +

    Web Services

    +
    +
    +

    Web Services

    +

    "a software system designed to support interoperable machine-to-machine +interaction over a network" - W3C

    +
      +
    • provides a defined set of calls
    • +
    • returns structured data
    • +
    +
    +
    +

    Early Web Services

    +

    RSS is one of the earliest forms of Web Services

    + +

    A single web-based endpoint provides a dynamically updated listing of +content

    +

    Implemented in pure HTTP. Returns XML

    +

    Atom is a competing, but similar standard

    +
    +
    +

    RSS Document

    +
    +<?xml version="1.0" encoding="UTF-8" ?>
    +<rss version="2.0">
    +<channel>
    +  <title>RSS Title</title>
    +  <description>This is an example of an RSS feed</description>
    +  <link>http://www.someexamplerssdomain.com/main.html</link>
    +  <lastBuildDate>Mon, 06 Sep 2010 00:01:00 +0000 </lastBuildDate>
    +  <pubDate>Mon, 06 Sep 2009 16:45:00 +0000 </pubDate>
    +  <ttl>1800</ttl>
    +
    +  <item>
    +    <title>Example entry</title>
    +    <description>Here is some text containing an interesting description.</description>
    +    <link>http://www.wikipedia.org/</link>
    +    <guid>unique string per item</guid>
    +    <pubDate>Mon, 06 Sep 2009 16:45:00 +0000 </pubDate>
    +  </item>
    +  ...
    +</channel>
    +</rss>
    +
    +
    +
    +

    XML-RPC

    +

    RSS provides a pre-defined data set, can we also allow calling procedures to +get more dynamic data?

    +

    We can! Enter XML-RPC (Remote Procedure Call)

    +
      +
    • Provides a set of defined procedures which can take arguments
    • +
    • Calls are made via HTTP GET, by passing an XML document
    • +
    • Returns from a call are sent to the client in XML
    • +
    +

    There is an interactive example of this at the end of this session. We will +not go through it here, though.

    +
    +
    +

    Beyond XML-RPC

    +
      +
    • XML-RPC allows introspection
    • +
    • XML-RPC forces you to introspect to get information
    • +
    • Wouldn't it be nice to get that automatically?
    • +
    • XML-RPC provides data types
    • +
    • XML-RPC provides only certain data types
    • +
    • Wouldn't it be nice to have an extensible system for types?
    • +
    • XML-RPC allows calling methods with parameters
    • +
    • XML-RPC only allows calling methods, nothing else
    • +
    • wouldn't it be nice to have contextual data as well?
    • +
    +

    Enter SOAP: Simple Object Access Protocol

    +
    +
    +

    SOAP

    +

    SOAP extends XML-RPC in a couple of useful ways:

    +
      +
    • It uses Web Services Description Language (WSDL) to provide meta-data about +an entire service in a machine-readable format (Automatic introspection)
    • +
    • It establishes a method for extending available data types using XML +namespaces
    • +
    • It provides a wrapper around method calls called the envelope, which +allows the inclusion of a header with system meta-data that can be used +by the application
    • +
    +
    +
    +

    SOAP in Python

    +

    There is no standard library module that supports SOAP directly.

    +
      +
    • The best-known and best-supported module available is Suds
    • +
    • The homepage is https://fedorahosted.org/suds/
    • +
    • It can be installed using easy_install or pip install
    • +
    +

    Again, there is a good example of using SOAP via the suds library at the +end of this session.

    +

    But we're going to move on

    +
    +
    +

    Afterword

    +

    SOAP (and XML-RPC) have some problems:

    +
      +
    • XML is pretty damned inefficient as a data transfer medium
    • +
    • Why should I need to know method names?
    • +
    • If I can discover method names at all, I have to read a WSDL to do it?
    • +
    +

    Suds is the best we have, and it hasn't been updated since Sept. 2010.

    +
    +
    +

    If Not XML, Then What?

    +

    JSON

    +
    +
    +

    JSON

    +

    JavaScript Object Notation:

    +
      +
    • a lightweight data-interchange format
    • +
    • easy for humans to read and write
    • +
    • easy for machines to parse and generate
    • +
    +

    Based on Two Structures:

    +
      +
    • object: { string: value, ...}
    • +
    • array: [value, value, ]
    • +
    +

    pythonic, no?

    +
    +
    +

    JSON Data Types

    +

    JSON provides a few basic data types (see http://json.org/):

    +
      +
    • string: unicode, anything but ", \ and control characters
    • +
    • number: any number, but json does not use octal or hexidecimal
    • +
    • object, array (we've seen these above)
    • +
    • true
    • +
    • false
    • +
    • null
    • +
    +

    No date type? OMGWTF??!!1!1

    +
    +
    +

    Dates in JSON

    +

    Option 1 - Unix Epoch Time (number):

    +
    +>>> import time
    +>>> time.time()
    +1358212616.7691269
    +
    +

    Option 2 - ISO 8661 (string):

    +
    +>>> import datetime
    +>>> datetime.datetime.now().isoformat()
    +'2013-01-14T17:18:10.727240'
    +
    +
    +
    +

    JSON in Python

    +

    You can encode python to json, and decode json back to python:

    +
    +>>> import json
    +>>> array = [1,2,3]
    +>>> json.dumps(array)
    +>>> orig = {'foo': [1,2,3], 'bar': u'my resumé', 'baz': True}
    +>>> encoded = json.dumps(orig)
    +>>> encoded
    +'{"baz": true, "foo": [1, 2, 3], "bar": "my resum\\u00e9"}'
    +>>> decoded = json.loads(encoded)
    +>>> decoded == orig
    +True
    +
    +

    Customizing the encoder or decoder class allows for specialized serializations

    +
    +
    +

    JSON in Python

    +

    the json module also supports reading and writing to file-like objects via +json.dump(fp) and json.load(fp) (note the missing 's')

    +

    Remember duck-typing. Anything with a .write and a .read method is +file-like

    +

    Have we seen any network-related classes recently that behave that way?

    +
    +
    +

    What about WSDL?

    +

    SOAP was invented in part to provide completely machine-readable +interoperability.

    +

    Does that really work in real life?

    +

    Hardly ever

    +
    +
    +

    What about WSDL?

    +

    Another reason was to provide extensibility via custom types

    +

    Does that really work in real life?

    +

    Hardly ever

    +
    +
    +

    Why Do All The Work?

    +

    So, if neither of these goals is really achieved by using SOAP, why pay all +the overhead required to use the protocol?

    +

    Enter REST

    +
    +
    +

    REST

    +

    Representational State Transfer

    +
      +
    • Originally described by Roy T. Fielding (did you read it?)
    • +
    • Use HTTP for what it can do
    • +
    • Read more in this book*
    • +
    +

    * Seriously. Buy it and read +(<http://www.crummy.com/writing/RESTful-Web-Services/)

    +
    +
    +

    A Comparison

    +

    The XML-RCP/SOAP way:

    +
      +
    • POST /getComment HTTP/1.1
    • +
    • POST /getComments HTTP/1.1
    • +
    • POST /addComment HTTP/1.1
    • +
    • POST /editComment HTTP/1.1
    • +
    • POST /deleteComment HTTP/1.1
    • +
    +

    The RESTful way:

    +
      +
    • GET /comment/<id> HTTP/1.1
    • +
    • GET /comment HTTP/1.1
    • +
    • POST /comment HTTP/1.1
    • +
    • PUT /comment/<id> HTTP/1.1
    • +
    • DELETE /comment/<id> HTTP/1.1
    • +
    +
    +
    +

    ROA

    +

    This is Resource Oriented Architecture

    +

    The URL represents the resource we are working with

    +

    The HTTP Verb represents the action to be taken

    +

    The HTTP Code returned tells us the result (whether success or failure)

    +
    +
    +

    HTTP Codes Revisited

    +

    POST /comment HTTP/1.1 (creating a new comment):

    +
      +
    • Success: HTTP/1.1 201 Created
    • +
    • Failure (unauthorized): HTTP/1.1 401 Unauthorized
    • +
    • Failure (NotImplemented): HTTP/1.1 405 Not Allowed
    • +
    • Failure (ValueError): HTTP/1.1 406 Not Acceptable
    • +
    +

    PUT /comment/<id> HTTP/1.1 (edit comment):

    +
      +
    • Success: HTTP/1.1 200 OK
    • +
    • Failure: HTTP/1.1 409 Conflict
    • +
    +

    DELETE /comment/<id> HTTP/1.1 (delete comment):

    +
      +
    • Success: HTTP/1.1 204 No Content
    • +
    +
    +
    +

    HTTP Is Stateless

    +

    No individual request may be assumed to know anything about any other request.

    +

    All the required information for to represent the possible actions to take +should be present in either the request or the response.

    +

    Thus: HATEOAS

    +
    +
    +

    HATEOAS

    +

    Hypermedia As The Engine Of Application State

    +
    +
    +

    Applications are State Engines

    +

    A State Engine is a machine that provides states for a resource to be in and +transitions to move resources between states. A Restful api should:

    +
      +
    • provide information about the current state of a resource
    • +
    • provide information about available transitions for that resource (URIs)
    • +
    • provide all this in each HTTP response
    • +
    +
    +
    +

    Playing With REST

    +

    Let's take a moment to play with REST.

    +

    We'll use a common, public API provided by Google.

    +

    Geocoding

    +
    +
    +

    Geocoding with Google APIs

    +

    https://developers.google.com/maps/documentation/geocoding

    +
    +

    Open a python interpreter using our virtualenv:

    +
    +(soupenv)$ python
    +
    +
    +
    +>>> import requests
    +>>> import json
    +>>> from pprint import pprint
    +>>> url = 'http://maps.googleapis.com/maps/api/geocode/json'
    +>>> addr = '120 E. Cameron Avenue Chapel Hill, NC 27599'
    +>>> parameters = {'address': addr, 'sensor': 'false' }
    +>>> resp = requests.get(url, params=parameters)
    +>>> data = json.loads(resp.text)
    +>>> if data['status'] == 'OK':
    +...     pprint(data)
    +
    +
    +
    +

    Reverse Geocoding

    +

    You can do the same thing in reverse, supply latitude and longitude and get +back address information:

    +
    +>>> location = lookup['results'][0]['geometry']['location']
    +>>> latlng = '%f,%f' % (location['lat'], location['lng'])
    +>>> parameters = {'latlng': latlng, 'sensor': 'false'}
    +>>> resp = requests.get(url, params=paramters)
    +>>> data = json.loads(resp.text)
    +>>> if data['status'] == 'OK':
    +...     pprint(data)
    +
    +

    Notice that there are a number of results returned, ordered from most specific +to least.

    +
    +
    +

    Mash It Up

    +

    Let's add a new function to mashup.py. It will:

    +
      +
    • take a single listing from our craiglist work
    • +
    • format the location data provided in that listing properly
    • +
    • make a reverse geocoding lookup using the google api above
    • +
    • add the best available address to the listing
    • +
    • return the updated listing
    • +
    +

    Call it add_address

    +
    +
    +

    My Solution

    +
    +# add an import
    +import json
    +
    +# and a function
    +def add_address(listing):
    +    api_url = 'http://maps.googleapis.com/maps/api/geocode/json'
    +    loc = listing['location']
    +    parameters = {
    +        'sensor': 'false',
    +        'latlng': "%s,%s" % (loc['data-latitude'],
    +                             loc['data-longitude'])
    +    }
    +    resp = requests.get(api_url, params=parameters)
    +    data = json.loads(resp.text)
    +    if data['status'] == 'OK':
    +        best = data['results'][0]
    +        listing['address'] = best['formatted_address']
    +    else:
    +        listing['address'] = 'unavailable'
    +    return listing
    +
    +
    +
    +

    Add Address to Output

    +

    Go ahead and bolt the new function into our __main__ block:

    +
    +if __name__ == '__main__':
    +    params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2}
    +    html, encoding = fetch_search_results(**params)
    +    doc = parse_source(html, encoding)
    +    for listing in extract_listings(doc):
    +        listing = add_address(listing)
    +        pprint.pprint(listing)
    +
    +
    +

    And give the result a whirl:

    +
    +(soupenv)$ python mashup.py
    +{'address': u'800 Bethlehem Road, Knightdale, NC 27545, USA',
    + 'description': u'3 bedroom 2 bathroom unit is move in ready!'
    + ...
    +}
    +
    +
    +
    +
    +

    One More Step

    +

    I'm a big fan of walking places.

    +

    So I'd like to find an apartment that is located somewhere 'walkable'

    +

    There's an API for that!

    +

    http://www.walkscore.com/professional/api.php

    +

    Take a second here and sign up for an api key. Use a real email address, +they'll email you an API key.

    +
    +
    +

    Getting a Walk Score

    +

    The API documentation tells us we have to provide lat, lon and address to get +a walk score, along with our API key.

    +

    It also tells us we have a choice of XML or JSON output. Let's use JSON

    +

    Let's poke at it and see what we get back

    +

    Fire up your virtualenv Python interpreter again

    +
    +
    +

    Making an API Call

    +
    +(soupenv)$ python
    +
    +
    +>>> import requests
    +>>> import json
    +>>> from pprint import pprint
    +>>> api_url = 'http://api.walkscore.com/score'
    +>>> lat, lon = 35.9108986, -79.053783
    +>>> addr = '120 E. Cameron Avenue Chapel Hill, NC 27599'
    +>>> params = {'lat': lat, 'lon', lon, 'address': addr}
    +>>> params['wsapikey'] = '<type your api key here>'
    +>>> params['format'] = 'json'
    +>>> resp = requests.get(api_url, params=params)
    +>>> data = json.loads(resp.text)
    +>>> if data['status'] == 1:
    +...     pprint(data)
    +
    +
    +
    +

    Mash It Up

    +

    Add a function to mashup.py that:

    +
      +
    • takes a single listing from our craigslist search
    • +
    • uses the location and address to make a walkscore api call
    • +
    • adds the description, walkscore and ws_link parameters to the listing
    • +
    • returns the updated listing
    • +
    +

    Call the function add_walkscore

    +

    Bolt it into our script's __main__ block where it fits best

    +
    +
    +

    My Solution

    +
    +def add_walkscore(listing):
    +    api_url = 'http://api.walkscore.com/score'
    +    apikey = '<your api key goes here>'
    +    loc = listing['location']
    +    if listing['address'] == 'unavailable':
    +        return listing
    +    parameters = {
    +        'lat': loc['data-latitude'], 'lon': loc['data-longitude'],
    +        'address': listing['address'], 'wsapikey': apikey,
    +        'format': 'json'
    +    }
    +    resp = requests.get(api_url, params=parameters)
    +    data = json.loads(resp.text)
    +    if data['status'] == 1:
    +        listing['ws_description'] = data['description']
    +        listing['ws_score'] = data['walkscore']
    +        listing['ws_link'] = data['ws_link']
    +    return listing
    +
    +
    +
    +

    My Results

    +
    +if __name__ == '__main__':
    +    params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2}
    +    html, encoding = fetch_search_results(**params)
    +    doc = parse_source(html, encoding)
    +    for listing in extract_listings(doc):
    +        listing = add_address(listing)
    +        listing = add_walkscore(listing)
    +        pprint.pprint(listing)
    +
    +

    Let's try it out:

    +
    +(soupenv)$ python mashup.py
    +
    +
    +
    +

    Wrap Up

    +

    We've built a simple mashup combining data from three different sources.

    +

    As a result we can now make a listing of apartments ranked by the walkability +of their neighborhood.

    +

    What other data sources might we use? Check out +http://www.programmableweb.com/apis/directory to see some of the possibilities

    +
    +
    +

    Next Steps

    +

    We've spent this session consuming data produced by other people.

    +

    In the next session we'll see how to take input from clients and use it to +create our own responses.

    +

    See you back here soon!

    +
    +
    +

    Addenda

    +

    The following are provided as self-directed exercises. We just don't have the +time to cover them in depth in class.

    +
    +
    +

    XML-RPC

    +

    Examples of XML-RPC using the Python Standard Library

    +
    +
    +

    XML-RPC Example - Server

    +

    xmlrpc_server.py:

    +
    +from SimpleXMLRPCServer import SimpleXMLRPCServer
    +
    +server = SimpleXMLRPCServer(('localhost', 50000))
    +
    +def multiply(a, b):
    +    return a * b
    +server.register_function(multiply)
    +
    +try:
    +    print "Use Ctrl-C to Exit"
    +    server.serve_forever()
    +except KeyboardInterrupt:
    +    print "Exiting"
    +
    +
    +
    +

    XML-RPC Example - Client

    +

    We can run a client from a terminal. First, open one terminal and run the +xmlrpc_server.py script:

    +
    +$ python xmlrcp_server.py
    +

    Then, open another terminal and start up python:

    +
    +>>> import xmlrpclib
    +>>> proxy = xmlrpclib.ServerProxy('http://localhost:50000', verbose=True)
    +>>> proxy.multiply(3, 24)
    +...
    +72
    +
    +
    +
    +

    XML-RPC Request

    +

    verbose=True allows us to see the request we sent:

    +
    +POST /RPC2 HTTP/1.0
    +Host: localhost:50000
    +User-Agent: xmlrpclib.py/1.0.1 (by www.pythonware.com)
    +Content-Type: text/xml
    +Content-Length: 192
    +
    +<?xml version='1.0'?>
    +<methodCall>
    + <methodName>multiply</methodName>
    + <params>
    +  <param>
    +   <value><int>3</int></value>
    +  </param>
    +  <param>
    +   <value><int>24</int></value>
    +  </param>
    + </params>
    +</methodCall>
    +
    +
    +
    +

    XML-RPC Response

    +

    and we can see the response, too:

    +
    +HTTP/1.0 200 OK
    +Server: BaseHTTP/0.3 Python/2.6.1
    +Date: Sun, 13 Jan 2013 03:38:00 GMT
    +Content-type: text/xml
    +Content-length: 121
    +
    +<?xml version='1.0'?>
    +<methodResponse>
    + <params>
    +  <param>
    +   <value><int>72</int></value>
    +  </param>
    + </params>
    +</methodResponse>
    +
    +
    +
    +

    More XML-RPC

    +

    Register an entire Python class as a service, exposing class methods:

    +
    +server.register_instance(MyClass())
    +
    +

    Keep an instance method private :

    +
    +class MyServiceClass(object):
    +    ...
    +    def public_method(self, arg1, arg2):
    +        """this method is public"""
    +        pass
    +
    +    def _private_method(self):
    +        """this method is private because it starts with '_'
    +        """
    +        pass
    +
    +
    +
    +

    XML-RPC Introspection

    +

    First, implement required methods on your service class:

    +
    +from SimpleXMLRPCServer import list_public_methods
    +
    +class MyServiceClass(object):
    +    ...
    +    def _listMethods(self):
    +        """custom logic for presenting method names to users
    +
    +        list_public_methods is a convenience function from the Python
    +        library, but you can make your own logic if you wish.
    +        """
    +        return list_public_methods(self)
    +
    +    def _methodHelp(self, method):
    +        """provide help text for an individual method
    +        """
    +        f = getattr(self, method)
    +        return f.__doc__
    +
    +
    +
    +

    XML-RPC Introspection

    +

    Then enable introspection via the server instance:

    +
    +server.register_introspection_functions()
    +
    +

    After this, a client proxy can call pre-defined methods to learn about what +your service offers:

    +
    +>>> for name in proxy.system.listMethods():
    +...     help = proxy.system.methodHelp(name)
    +...     print name
    +...     print "\t%s" % help
    +...
    +public_method
    +    this method is public
    +
    +
    +
    +

    Introspection Question

    +

    I told you when we added the _private_method that any method that any +method whose name starts with _ would be private.

    +

    But we also added a _listMethods method and a _methodHelp method and +those methods are listed when you run proxy.system.listMethods()

    +

    Why is this?

    +

    For a complete discussion of this, read this MOTW post

    +
    +
    +

    SOAP

    +

    Example of Using SOAP via the suds package

    +
    +
    +

    Install Suds

    +
      +
    • Quit your python interpreter if you have it running.
    • +
    • If you see (soupenv) at your command line prompt, cool.
    • +
    • If you do not, type source /path/to/soupenv/bin/activate
    • +
    • Windows folks: > \path\to\soupenv\Scripts\activate
    • +
    • Once activated: pip install suds
    • +
    +
    +
    +

    Creating a Suds Client

    +

    Suds allows us to create a SOAP client object. SOAP uses WSDL to define a +service. All we need to do to set this up in python is load the URL of the +WSDL for the service we want to use:

    +
    +(soupenv)$ python
    +>>> from suds.client import Client
    +>>> geo_client = Client('https://geoservices.tamu.edu/Services/Geocode/WebService/GeocoderService_V03_01.asmx?wsdl')
    +>>> geo_client
    +<suds.client.Client object at 0x10041fc10>
    +
    +
    +
    +

    Peeking at the Service

    +

    Suds allows us to visually scan the service. Simply print the client object to +see what the service has to offer:

    +
    +>>> print geo_client
    +
    +Suds ( https://fedorahosted.org/suds/ )  version: 0.4 GA  build: R699-20100913
    +
    +Service ( GeocoderService_V03_01 ) tns="https://geoservices.tamu.edu/"
    +   Prefixes (1)
    +      ns0 = "https://geoservices.tamu.edu/"
    +   Ports (2):
    +      (GeocoderService_V03_01Soap)
    +      Methods (4):
    +         ...
    +      Types (12):
    +         ...
    +
    +
    +
    +

    Debugging Suds

    +

    Suds uses python logging to deal with debug information, so if you want to see +what's going on under the hood, you configure it via the Python logging +module:

    +
    +>>> import logging
    +>>> logging.basicConfig(level=logging.INFO)
    +>>> logging.getLogger('suds.client').setLevel(logging.DEBUG)
    +
    +

    This will allow us to see the messages sent and received by our client.

    +
    +
    +

    Client Options

    +

    SOAP Servers can provide more than one service and each service might have +more than one port. Suds provides two ways to configure which service and +port you wish to use.

    +

    Via subscription:

    +
    +client.service['<service>']['<port>'].method(args)
    +
    +

    Or the way we will do it, via configuration:

    +
    +geo_client.set_options(service='GeocoderService_V03_01',
    +                       port='GeocoderService_V03_01Soap')
    +
    +
    +
    +

    Providing Arguments

    +

    Arguments to a method are set up as a dictionary. Although some may not be +required according to api documentation, it is safest to provide them all:

    +
    +apiKey = '<fill this in>'
    +args = {'apiKey': apiKey, }
    +args['streetAddress'] = '1325 4th Avenue'
    +args['city'] = 'Seattle'
    +args['state'] = 'WA'
    +args['zip'] = '98101'
    +args['version'] = 3.01
    +args['shouldReturnReferenceGeometry'] = True
    +args['shouldNotStoreTransactionDetails'] = True
    +args['shouldCalculateCensus'] = False
    +args['censusYear'] = "TwoThousandTen"
    +
    +
    +
    +

    Making the Call

    +

    Finally, once we've got the arguments all ready we can go ahead and make a call +to the server:

    +
    +>>> res = geo_client.service.GeocodeAddressNonParsed(**args)
    +DEBUG:suds.client:sending to
    +(https://geoservices.tamu.edu/Services/Geocode/WebService/GeocoderService_V03_01.asmx)
    +message:
    +...
    +
    +
    +
    +

    What does it look like?

    +
    +<?xml version="1.0" encoding="UTF-8"?>
    +<SOAP-ENV:Envelope xmlns:ns0="https://geoservices.tamu.edu/" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    +   <SOAP-ENV:Header/>
    +   <ns1:Body>
    +      <ns0:GeocodeAddressNonParsed>
    +         <ns0:streetAddress>1325 4th Avenue</ns0:streetAddress>
    +         <ns0:city>Seattle</ns0:city>
    +         <ns0:state>WA</ns0:state>
    +         <ns0:zip>98101</ns0:zip>
    +         <ns0:apiKey>a450a9181f85498598e21f8a39440e9a</ns0:apiKey>
    +         <ns0:version>3.01</ns0:version>
    +         <ns0:shouldCalculateCensus>false</ns0:shouldCalculateCensus>
    +         <ns0:censusYear>TwoThousandTen</ns0:censusYear>
    +         <ns0:shouldReturnReferenceGeometry>true</ns0:shouldReturnReferenceGeometry>
    +         <ns0:shouldNotStoreTransactionDetails>true</ns0:shouldNotStoreTransactionDetails>
    +      </ns0:GeocodeAddressNonParsed>
    +   </ns1:Body>
    +</SOAP-ENV:Envelope>
    +
    +
    +
    +

    And the Reply?

    +
    +<?xml version="1.0" encoding="utf-8"?>
    +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    +  <soap:Body>
    +    <GeocodeAddressNonParsedResponse xmlns="https://geoservices.tamu.edu/">
    +      <GeocodeAddressNonParsedResult>
    +        <TransactionId>6ef9c110-994c-4142-93d5-a55173526b64</TransactionId>
    +        <Latitude>47.6084110119244</Latitude>
    +        <Longitude>-122.3351592971042</Longitude>
    +        <Version>3.01</Version>
    +        <Quality>QUALITY_ADDRESS_RANGE_INTERPOLATION</Quality>
    +        <MatchedLocationType>LOCATION_TYPE_STREET_ADDRESS</MatchedLocationType>
    +        <MatchType>Exact</MatchType>
    +        <FeatureMatchingResultCount>1</FeatureMatchingResultCount>
    +        ...
    +        <FArea>2910.69420560356</FArea>
    +        <FAreaType>Meters</FAreaType>
    +        <FGeometrySRID>4269</FGeometrySRID>
    +        <FGeometry>&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;LineString xmlns="http://www.opengis.net/gml"&gt;&lt;posList&gt;-122.334868 47.608226 -122.335777 47.609219&lt;/posList&gt;&lt;/LineString&gt;</FGeometry>
    +        ...
    +      </GeocodeAddressNonParsedResult>
    +    </GeocodeAddressNonParsedResponse>
    +  </soap:Body>
    +</soap:Envelope>
    +
    +
    +
    +

    And What of Our Result?

    +

    The WSDL we started with should provide type definitions for both data we send +and results we receive. The res symbol we bound to our result earlier +should now be an instance of a GeocodeAddressNonParsedResult. Lets see what +that looks like:

    +
    +>>> type(res)
    +<type 'instance'>
    +>>> dir(res)
    +['CensusTimeTaken', 'CensusYear', 'ErrorMessage', 'FArea',
    + 'FAreaType', 'FCity', 'FCounty', 'FCountySubRegion',
    + ...]
    +>>> res.Latitude, res.Longitude
    +(47.608411011924403, -122.3351592971042)
    +
    +
    +
    +

    A Word on Debugging

    +

    blerg

    +
      +
    • Messages sent to the server are long XML strings
    • +
    • Error messages are generally based on parsing errors in XML
    • +
    • These error messages can be quite cryptic:
    • +
    • "There is an error in XML document (1, 572). ---> The string '' is not a +valid Boolean value.'
    • +
    +

    Try this:

    +
    +>>> geo_client.last_sent().str().replace(" ","")[:573]
    +'...</ns0:version>\n<ns0:shouldCalculateCensus/>'
    +
    +
    +
    + + diff --git a/presentations/session04.html b/presentations/session04.html new file mode 100644 index 00000000..bf07344b --- /dev/null +++ b/presentations/session04.html @@ -0,0 +1,948 @@ + + + + + + + +Python Web Programming + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    Python Web Programming

    + +img/gateway.jpg +

    Session 4: CGI, WSGI and Living Online

    +

    Wherein we discover the gateways to dynamic processes on a server.

    +

    image: The Wandering Angel http://www.flickr.com/photos/wandering_angel/1467802750/ - CC-BY

    + +
    +
    +

    Yesterday

    +
      +
    • We learned about passing messages back and forth with sockets
    • +
    • We created a simple HTTP server using sockets
    • +
    • We may even have made our server dynamic by returning the output of a +python script.
    • +
    +

    What if we want to pass information to that script?

    +

    How do we let the script have access to information about the HTTP request +itself?

    +
    +
    +

    Stepping Away

    +

    A computer has an environment:

    +
    +

    in *nix, you can see this in a shell:

    +
    +$ printenv
    +TERM_PROGRAM=iTerm.app
    +...
    +
    +
    +
    +

    or in Windows at the command prompt:

    +
    +C:\> set
    +ALLUSERSPROFILE=C:\ProgramData
    +...
    +
    +
    +
    +
    +

    Setting The Environment

    +

    This can be manipulated:

    +
    +

    In a bash shell we can do this:

    +
    +$ export VARIABLE='some value'
    +$ echo $VARIABLE
    +some value
    +
    +
    +
    +

    or at a Windows command prompt:

    +
    +C:\Users\Administrator\> set VARIABLE='some value'
    +C:\Users\Administrator\> echo %VARIABLE%
    +'some value'
    +
    +
    +
    +
    +

    Viewing the Results

    +

    These new values are now part of the environment

    +
    +

    *nix:

    +
    +$ printenv
    +TERM_PROGRAM=iTerm.app
    +...
    +VARIABLE=some value
    +
    +
    +
    +

    Windows:

    +
    +C:\> set
    +ALLUSERSPROFILE=C:\ProgramData
    +...
    +VARIABLE='some value'
    +
    +
    +
    +
    +

    Environment in Python

    +

    We can see this environment in Python, too:

    +
    +$ python
    +
    +
    +>>> import os
    +>>> print os.environ['VARIABLE']
    +some_value
    +>>> print os.environ.keys()
    +['VERSIONER_PYTHON_PREFER_32_BIT', 'VARIABLE',
    + 'LOGNAME', 'USER', 'PATH', ...]
    +
    +
    +
    +

    Altering the Environment

    +

    You can alter os environment values while in Python:

    +
    +>>> os.environ['VARIABLE'] = 'new_value'
    +>>> print os.environ['VARIABLE']
    +new_value
    +
    +
    +

    But that doesn't change the original value, outside Python:

    +
    +>>> ^D
    +
    +$ echo this is the value: $VARIABLE
    +this is the value: some_value
    +<OR>
    +C:\> \Users\Administrator\> echo %VARIABLE%
    +'some value'
    +
    +
    +
    +
    +

    Lessons Learned

    +
      +
    • Subprocesses inherit their environment from their Parent
    • +
    • Parents do not see changes to environment in subprocesses
    • +
    • In Python, you can actually set the environment for a subprocess explicitly
    • +
    +
    +subprocess.Popen(args, bufsize=0, executable=None,
    +                 stdin=None, stdout=None, stderr=None,
    +                 preexec_fn=None, close_fds=False,
    +                 shell=False, cwd=None, env=None, # <-------
    +                 universal_newlines=False, startupinfo=None,
    +                 creationflags=0)
    +
    +
    +
    +

    Web Environment

    +

    CGI is little more than a set of standard environmental variables

    +
    +
    +

    RFC 3875

    +

    First discussed in 1993, formalized in 1997, the current version (1.1) has +been in place since 2004.

    +

    From the preamble:

    +

    This memo provides information for the Internet community. It does not specify +an Internet standard of any kind.

    +

    RFC 3875 - CGI Version 1.1: http://tools.ietf.org/html/rfc3875

    +
    +
    +

    Meta-Variables

    +
    +4.  The CGI Request . . . . . . . . . . . . . . . . . . . . . . .  10
    +    4.1. Request Meta-Variables . . . . . . . . . . . . . . . . .  10
    +         4.1.1.  AUTH_TYPE. . . . . . . . . . . . . . . . . . . .  11
    +         4.1.2.  CONTENT_LENGTH . . . . . . . . . . . . . . . . .  12
    +         4.1.3.  CONTENT_TYPE . . . . . . . . . . . . . . . . . .  12
    +         4.1.4.  GATEWAY_INTERFACE. . . . . . . . . . . . . . . .  13
    +         4.1.5.  PATH_INFO. . . . . . . . . . . . . . . . . . . .  13
    +         4.1.6.  PATH_TRANSLATED. . . . . . . . . . . . . . . . .  14
    +         4.1.7.  QUERY_STRING . . . . . . . . . . . . . . . . . .  15
    +         4.1.8.  REMOTE_ADDR. . . . . . . . . . . . . . . . . . .  15
    +         4.1.9.  REMOTE_HOST. . . . . . . . . . . . . . . . . . .  16
    +         4.1.10. REMOTE_IDENT . . . . . . . . . . . . . . . . . .  16
    +         4.1.11. REMOTE_USER. . . . . . . . . . . . . . . . . . .  16
    +         4.1.12. REQUEST_METHOD . . . . . . . . . . . . . . . . .  17
    +         4.1.13. SCRIPT_NAME. . . . . . . . . . . . . . . . . . .  17
    +         4.1.14. SERVER_NAME. . . . . . . . . . . . . . . . . . .  17
    +         4.1.15. SERVER_PORT. . . . . . . . . . . . . . . . . . .  18
    +         4.1.16. SERVER_PROTOCOL. . . . . . . . . . . . . . . . .  18
    +         4.1.17. SERVER_SOFTWARE. . . . . . . . . . . . . . . . .  19
    +
    +
    +
    +

    Running CGI

    +

    You have a couple of options:

    +
      +
    • Python Standard Library CGIHTTPServer
    • +
    • Apache
    • +
    • IIS (on Windows)
    • +
    • Some other HTTP server that implements CGI (lighttpd, ...?)
    • +
    +

    Let's keep it simple by using the Python module

    +
    +
    +

    Preparations

    +

    In the class resources, you'll find a directory named cgi. Make a copy of +that folder in your class working directory.

    +

    Windows Users, you will have to edit the first line of +cgi/cgi-bin/cgi_1.py to point to your python executable.

    +
      +
    • Open two terminal windows in this cgi directory
    • +
    • In the first terminal, run python -m CGIHTTPServer
    • +
    • Open a web browser and load http://localhost:8000/
    • +
    • Click on CGI Test 1
    • +
    +
    +
    +

    Did that work?

    +
      +
    • If nothing at all happens, check your terminal window
    • +
    • Look for this: OSError: [Errno 13] Permission denied
    • +
    • If you see something like that, check permissions for cgi-bin and +cgi_1.py
    • +
    • The file must be executable, the directory needs to be readable and +executable.
    • +
    +

    Remember that you can use the bash chmod command to change permissions in +*nix

    +

    Windows users, use the 'properties' context menu to get to permissions, just +grant 'full'

    +
    +
    +

    Break It

    +

    Problems with permissions can lead to failure. So can scripting errors

    +
      +
    • Open cgi/cgi-bin/cgi_1.py in an editor
    • +
    • Before where it says cgi.test(), add a single line:
    • +
    +
    +1 / 0
    +
    +

    Reload your browser, what happens now?

    +
    +
    +

    Errors in CGI

    +

    CGI is famously difficult to debug. There are reasons for this:

    +
      +
    • CGI is designed to provide access to runnable processes to the internet
    • +
    • The internet is a wretched hive of scum and villainy
    • +
    • Revealing error conditions can expose data that could be exploited
    • +
    +
    +
    +

    Viewing Errors in Python CGI

    +

    Back in your editor, add the following lines, just below import cgi:

    +
    +import cgitb
    +cgitb.enable()
    +
    +

    Now, reload again.

    +
    +
    +

    cgitb Output

    +img/cgitb_output.png +
    +
    +

    Repair the Error

    +

    Let's fix the error from our traceback. Edit your cgi_1.py file to match:

    +
    +#!/usr/bin/python
    +import cgi
    +import cgitb
    +
    +cgitb.enable()
    +
    +cgi.test()
    +
    +

    Notice the first line of that script: #!/usr/bin/python. This is called a +shebang (short for hash-bang) and it tells the system what executable +program to use when running the script.

    +
    +
    +

    CGI Process Execution

    +

    When a web server like CGIHTTPServer or Apache runs a CGI script, it +simply attempts to run the script as if it were a normal system user. This is +just like you calling:

    +
    +$ ./cgi_bin/cgi_1.py
    +
    +

    In fact try that now in your second terminal (use the real path), what do you +get?

    +

    Windows folks, you may need C:\>python cgi_1.py

    +

    What is missing?

    +
    +
    +

    CGI Process Execution

    +

    There are a couple of important facts that are related to the way CGI +processes are run:

    +
      +
    • The script must include a shebang so that the system knows how to run +it.
    • +
    • The script must be executable.
    • +
    • The executable named in the shebang will be called as the nobody user.
    • +
    • This is a security feature to prevent CGI scripts from running as a user +with any privileges.
    • +
    • This means that the executable from the script shebang must be one that +anyone can run.
    • +
    +
    +
    +

    The CGI Environment

    +

    CGI is largely a set of agreed-upon environmental variables.

    +

    We've seen how environmental variables are found in python in os.environ

    +

    We've also seen that at least some of the variables in CGI are not in the +standard set of environment variables.

    +

    Where do they come from?

    +
    +
    +

    CGI Servers

    +

    Let's find 'em. In a terminal (on your local machine, please) fire up python:

    +
    +>>> import CGIHTTPServer
    +>>> CGIHTTPServer.__file__
    +'/big/giant/path/to/lib/python2.6/CGIHTTPServer.py'
    +
    +

    Copy this path and open the file it points to in your text editor

    +
    +
    +

    Environmental Set Up

    +

    From CGIHTTPServer.py, in the CGIHTTPServer.run_cgi method:

    +
    +# Reference: http://hoohoo.ncsa.uiuc.edu/cgi/env.html
    +# XXX Much of the following could be prepared ahead of time!
    +env = {}
    +env['SERVER_SOFTWARE'] = self.version_string()
    +env['SERVER_NAME'] = self.server.server_name
    +env['GATEWAY_INTERFACE'] = 'CGI/1.1'
    +env['SERVER_PROTOCOL'] = self.protocol_version
    +env['SERVER_PORT'] = str(self.server.server_port)
    +env['REQUEST_METHOD'] = self.command
    +...
    +ua = self.headers.getheader('user-agent')
    +if ua:
    +    env['HTTP_USER_AGENT'] = ua
    +...
    +os.environ.update(env)
    +...
    +
    +
    +
    +

    CGI Scripts

    +

    And that's it, the big secret. The server takes care of setting up the +environment so it has what is needed.

    +

    Now, in reverse. How does the information that a script creates end up in your +browser?

    +

    A CGI Script must print it's results to stdout.

    +

    Use the same method as above to import and open the source file for the +cgi module. Note what test does for an example of this.

    +
    +
    +

    Recap:

    +

    What the Server Does:

    +
      +
    • parses the request
    • +
    • sets up the environment, including HTTP and SERVER variables
    • +
    • figures out if the URI points to a CGI script and runs it
    • +
    • builds an appropriate HTTP Response first line ('HTTP/1.1 200 OK\r\n')
    • +
    • appends what comes from the script on stdout and sends that back
    • +
    +

    What the Script Does:

    +
      +
    • names appropriate executable in it's shebang line
    • +
    • uses os.environ to read information from the HTTP request
    • +
    • builds any and all appropriate HTTP Headers (Content-type:, +Content-length:, ...)
    • +
    • prints headers, empty line and script output (body) to stdout
    • +
    +
    +
    +

    In-Class Exercise

    +

    You've seen the output from the cgi.test() method from the cgi module. +Let's make our own version of this.

    +
      +
    • In the directory cgi-bin you will find the file cgi_2.py.
    • +
    • Open that file in your editor.
    • +
    • The script contains some html with text naming elements of the CGI +environment.
    • +
    • You should use the values in os.environ to fill in the blanks.
    • +
    • You should be able to view the results of your work by loading +http://localhost:8000/ and clicking on Exercise One
    • +
    +

    GO

    +
    +
    +

    User Provided Data

    +

    All this is well and good, but where's the dynamic stuff?

    +

    It'd be nice if a user could pass form data to our script for it to use.

    +
    +

    In HTTP, these types of inputs show up in the URL query (the part after +the ?):

    +
    +http://myhost.com/script.py?a=23&b=37
    +
    +
    +
    +
    +

    Form Data in CGI

    +

    In the cgi module, we get access to this with the FieldStorage class:

    +
    +import cgi
    +
    +form = cgi.FieldStorage()
    +stringval = form.getvalue('a', None)
    +listval = form.getlist('b')
    +
    +
      +
    • The values in the FieldStorage are always strings
    • +
    • getvalue allows you to return a default, in case the field isn't present
    • +
    • getlist always returns a list: empty, one-valued, or as many values as +are present
    • +
    +
    +
    +

    In-Class Exercise

    +

    Let's create a dynamic adding machine.

    +
      +
    • In the cgi-bin directory you'll find cgi_sums.py.
    • +
    • In the index.html file in the cgi directory, the third link leads to +this file.
    • +
    • You will use the structure of that link, and what you learned just now about +cgi.FieldStorage.
    • +
    • Complete the cgi script in cgi_sums.py so that the result of adding all +operands sent via the url query is returned.
    • +
    +

    For extra fun, return the results in json format (mimetype: +'application/json').

    +
    +
    +

    My Solution

    +
    +form = cgi.FieldStorage()
    +operands = form.getlist('operand')
    +total = 0
    +for operand in operands:
    +    try:
    +        value = int(operand)
    +    except ValueError:
    +        value = 0
    +    total += value
    +
    +output = {'result': total}
    +json_output = json.dumps(output)
    +
    +print "Content-Type: application/json"
    +print "Content-Length: %s" % len(json_output)
    +print
    +print json_output
    +
    +
    +
    +

    Stopping Point

    +

    Let's take a break here, before continuing

    +
    +
    +

    CGI Problems

    +

    CGI is great, but there are problems:

    +
      +
    • Code is executed in a new process
    • +
    • Every call to a CGI script starts a new process on the server
    • +
    • Starting a new process is expensive in terms of server resources
    • +
    • Especially for interpreted languages like Python
    • +
    +

    How do we overcome this problem?

    +
    +
    +

    Alternatives to CGI

    +

    The most popular approach is to have a long-running process inside the +server that handles CGI scripts.

    +

    FastCGI and SCGI are existing implementations of CGI in this fashion. +mod_python offers a similar capability for Python code.

    +
      +
    • Each of these options has a specific API
    • +
    • None are compatible with each-other
    • +
    • Code written for one is not portable to another
    • +
    +

    This makes it much more difficult to share resources

    +
    +
    +

    WSGI

    +

    Enter WSGI, the Web Server Gateway Interface.

    +

    Where other alternatives are specific implementations of the CGI standard, +WSGI is itself a new standard, not an implementation.

    +

    WSGI is generalized to describe a set of interactions, so that developers can +write WSGI-capable apps and deploy them on any WSGI server.

    +

    Read the WSGI spec: http://www.python.org/dev/peps/pep-0333

    +
    +
    +

    WSGI: Apps and Servers

    +

    WSGI consists of two parts, a server and an application.

    +

    A WSGI Server must:

    +
      +
    • set up an environment, much like the one in CGI
    • +
    • provide a method start_response(status, headers, exc_info=None)
    • +
    • build a response body by calling an application, passing +environment and start_response as args
    • +
    • return a response with the status, headers and body
    • +
    +

    A WSGI Appliction must:

    +
      +
    • Be a callable (function, method, class)
    • +
    • Take an environment and a start_response callable as arguments
    • +
    • Call the start_response method.
    • +
    • Return an iterable of 0 or more strings, which are treated as the body of +the response.
    • +
    +
    +
    +

    Simplified WSGI Server

    +
    +from some_application import simple_app
    +
    +def build_env(request):
    +    # put together some environment info from the reqeuest
    +    return env
    +
    +def handle_request(request, app):
    +    environ = build_env(request)
    +    iterable = app(environ, start_response)
    +    for data in iterable:
    +        # send data to client here
    +
    +def start_response(status, headers):
    +    # start an HTTP response, sending status and headers
    +
    +# listen for HTTP requests and pass on to handle_request()
    +serve(simple_app)
    +
    +
    +
    +

    Simple WSGI Application

    +

    Where the simplified server above is not functional, this is a complete +app:

    +
    +def application(environ, start_response)
    +    status = "200 OK"
    +    body = "Hello World\n"
    +    response_headers = [('Content-type', 'text/plain',
    +                         'Content-length', len(body))]
    +    start_response(status, response_headers)
    +    return [body]
    +
    +
    +
    +

    WSGI Middleware

    +

    A third part of the puzzle is something called WSGI middleware

    +
      +
    • Middleware implements both the server and application interfaces
    • +
    • Middleware acts as a server when viewed from an application
    • +
    • Middleware acts as an application when viewed from a server
    • +
    +img/wsgi_middleware_onion.png +
    +
    +

    Flowcharts

    +

    WSGI Servers:

    +

    HTTP <---> WSGI

    +

    WSGI Applications:

    +

    WSGI <---> app code

    +
    +
    +

    The Whole Enchilada

    +

    The WSGI Stack can thus be expressed like so:

    +

    HTTP <---> WSGI <---> app code

    +
    +
    +

    Using wsgiref

    +

    The Python standard lib provides a reference implementation of WSGI:

    +img/wsgiref_flow.png +
    +
    +

    Apache mod_wsgi

    +

    You can also deploy with Apache as your HTTP server, using mod_wsgi:

    +img/mod_wsgi_flow.png +
    +
    +

    Proxied WSGI Servers

    +

    Finally, it is also common to see WSGI apps deployed via a proxied WSGI +server:

    +img/proxy_wsgi.png +
    +
    +

    The WSGI Environment

    +
    +
    REQUEST_METHOD
    +
    The HTTP request method, such as "GET" or "POST". This cannot ever be an +empty string, and so is always required.
    +
    SCRIPT_NAME
    +
    The initial portion of the request URL's "path" that corresponds to the +application object, so that the application knows its virtual "location". +This may be an empty string, if the application corresponds to the "root" of +the server.
    +
    PATH_INFO
    +
    The remainder of the request URL's "path", designating the virtual +"location" of the request's target within the application. This may be an +empty string, if the request URL targets the application root and does not +have a trailing slash.
    +
    QUERY_STRING
    +
    The portion of the request URL that follows the "?", if any. May be empty or +absent.
    +
    CONTENT_TYPE
    +
    The contents of any Content-Type fields in the HTTP request. May be empty or +absent.
    +
    +
    +
    +

    The WSGI Environment

    +
    +
    CONTENT_LENGTH
    +
    The contents of any Content-Length fields in the HTTP request. May be empty +or absent.
    +
    SERVER_NAME, SERVER_PORT
    +
    When combined with SCRIPT_NAME and PATH_INFO, these variables can be used to +complete the URL. Note, however, that HTTP_HOST, if present, should be used +in preference to SERVER_NAME for reconstructing the request URL. See the URL +Reconstruction section below for more detail. SERVER_NAME and SERVER_PORT +can never be empty strings, and so are always required.
    +
    SERVER_PROTOCOL
    +
    The version of the protocol the client used to send the request. Typically +this will be something like "HTTP/1.0" or "HTTP/1.1" and may be used by the +application to determine how to treat any HTTP request headers. (This +variable should probably be called REQUEST_PROTOCOL, since it denotes the +protocol used in the request, and is not necessarily the protocol that will +be used in the server's response. However, for compatibility with CGI we +have to keep the existing name.)
    +
    +
    +
    +

    The WSGI Environment

    +
    +
    HTTP_ Variables
    +
    Variables corresponding to the client-supplied HTTP request headers (i.e., +variables whose names begin with "HTTP_"). The presence or absence of these +variables should correspond with the presence or absence of the appropriate +HTTP header in the request.
    +
    +

    Seem Familiar?

    +
    +
    +

    A Bit of Repetition

    +

    Let's start simply. We'll begin by repeating our first CGI exercise in WSGI

    +
      +
    • Find the wsgi directory in the class resources. Copy it to your working +directory.
    • +
    • Open the file wsgi_1.py in your text editor.
    • +
    • We will fill in the missing values using the wsgi environ, just as we +use os.environ in cgi
    • +
    +

    But First

    +
    +
    +

    Orientation

    +
    +if __name__ == '__main__':
    +    from wsgiref.simple_server import make_server
    +    srv = make_server('localhost', 8080, application)
    +    srv.serve_forever()
    +
    +

    Note that we pass our application function to the server factory

    +

    We don't have to write a server, wsgiref does that for us.

    +

    In fact, you should never have to write a WSGI server.

    +
    +
    +

    Orientation

    +
    +def application(environ, start_response):
    +    response_body = body % (
    +         environ.get('SERVER_NAME', 'Unset'), # server name
    +            ...
    +         )
    +    status = '200 OK'
    +    response_headers = [('Content-Type', 'text/html'),
    +                        ('Content-Length', str(len(response_body)))]
    +    start_response(status, response_headers)
    +    return [response_body]
    +
    +

    We do not define start_response, the application does that.

    +

    We are responsible for determining the HTTP status.

    +
    +
    +

    Running a WSGI Script

    +

    You can run this script with python:

    +
    +$ python wsgi_1.py
    +
    +

    This will start a wsgi server. What host and port will it use?

    +

    Point your browser at http://localhost:8080/. Did it work?

    +

    Go ahead and fill in the missing bits. Use the environ passed into +application

    +
    +
    +

    Some Tips

    +

    Because WSGI is a long-running process, the file you are editing is not +reloaded after you edit it.

    +

    You'll need to quit and re-run the script between edits.

    +

    You may also want to consider using print environ in your application so +you can see the dictionary.

    +

    If you do that, where will the printed environment appear?

    +
    +
    +

    A More Complex Example

    +

    Let's create a multi-page wsgi application. It will serve a small database of +python books.

    +

    The database (with a very simple api) can be found in wsgi/bookdb.py

    +
      +
    • We'll need a listing page that shows the titles of all the books
    • +
    • Each title will link to a details page for that book
    • +
    • The details page for each book will display all the information and have a +link back to the list
    • +
    +
    +
    +

    Some Questions to Ponder

    +

    When viewing our first wsgi app, do we see the name of the wsgi application +script anywhere?

    +

    In our wsgi application script, how many applications did we actually have?

    +

    How are we going to serve different types of information out of a single +application?

    +
    +
    +

    Routing

    +

    We have to write an app that will map our incoming request path to some code +that can handle that request.

    +

    This process is called routing. There are many possible approaches

    +

    Let's begin by designing this piece of it.

    +

    Open bookapp.py from the wsgi folder. We'll do our work here.

    +
    +
    +

    PATH

    +

    The wsgi environment gives us access to PATH_INFO, which maps to the URI the +user requested when they loaded the page.

    +

    We can design the URLs that our app will use to assist us in routing.

    +

    Let's declare that any request for / will map to the list page

    +
    +

    We can furthermore say that the URL for a book will look like this:

    +
    +http://localhost:8080/book/<identifier>
    +
    +
    +
    +
    +

    Writing resolve_path

    +

    Let's write a function, called resolve_path in our application file.

    +
      +
    • It should take the PATH_INFO value from environ as an argument.
    • +
    • It should return the function that will be called.
    • +
    • It should also return any arguments needed to call that function.
    • +
    • This implies of course that the arguments should be part of the PATH
    • +
    +
    +
    +

    My Solution

    +
    +def resolve_path(path):
    +    urls = [(r'^$', books),
    +            (r'^book/(id[\d]+)$', book)]
    +    matchpath = path.lstrip('/')
    +    for regexp, func in urls:
    +        match = re.match(regexp, matchpath)
    +        if match is None:
    +            continue
    +        args = match.groups([])
    +        return func, args
    +    # we get here if no url matches
    +    raise NameError
    +
    +
    +
    +

    Application Updates

    +

    We need to hook our new router into the application.

    +
      +
    • The path should be extracted from environ.
    • +
    • The router should be used to get a function and arguments
    • +
    • The body to return should come from calling that function with those +arguments
    • +
    • If an error is raised by calling the function, an appropriate response +should be returned
    • +
    • If the router raises a NameError, the application should return a 404 +response
    • +
    +
    +
    +

    My Solution

    +
    +def application(environ, start_response):
    +    headers = [("Content-type", "text/html")]
    +    try:
    +        path = environ.get('PATH_INFO', None)
    +        if path is None:
    +            raise NameError
    +        func, args = resolve_path(path)
    +        body = func(*args)
    +        status = "200 OK"
    +    except NameError:
    +        status = "404 Not Found"
    +        body = "<h1>Not Found</h1>"
    +    except Exception:
    +        status = "500 Internal Server Error"
    +        body = "<h1>Internal Server Error</h1>"
    +    finally:
    +        headers.append(('Content-length', str(len(body))))
    +        start_response(status, headers)
    +        return [body]
    +
    +
    +
    +

    Test Your Work

    +

    Once you've got your script settled, run it:

    +
    +$ python bookapp.py
    +
    +

    Then point your browser at http://localhost:8080/

    +
      +
    • http://localhost/book/id3
    • +
    • http://localhost/book/id73/
    • +
    • http://localhost/sponge/damp
    • +
    +

    Did that all work as you would have expected?

    +
    +
    +

    Building the List

    +

    The function books should return an html list of book titles where each +title is a link to the detail page for that book

    +
      +
    • You'll need all the ids and titles from the book database.
    • +
    • You'll need to build a list in HTML using this information
    • +
    • Each list item should have the book title as a link
    • +
    • The href for the link should be of the form /book/<id>
    • +
    +
    +
    +

    My Solution

    +
    +def books():
    +    all_books = DB.titles()
    +    body = ['<h1>My Bookshelf</h1>', '<ul>']
    +    item_template = '<li><a href="/book/%(id)s">%(title)s</a></li>'
    +    for book in all_books:
    +        body.append(item_template % book)
    +    body.append('</ul>')
    +    return '\n'.join(body)
    +
    +
    +
    +

    Test Your Work

    +

    Quit and then restart your application script:

    +
    +$ python bookapp.py
    +
    +
    +

    Then reload the root of your application:

    +
    +http://localhost:8080/
    +
    +
    +

    You should see a nice list of the books in the database. Do you?

    +

    Click on a link to view the detail page. Does it load without error?

    +
    +
    +

    Showing Details

    +

    The next step of course is to polish up those detail pages.

    +
      +
    • You'll need to retrieve a single book from the database
    • +
    • You'll need to format the details about that book and return them as HTML
    • +
    • You'll need to guard against ids that do not map to books
    • +
    +

    In this last case, what's the right HTTP response code to send?

    +
    +
    +

    My Solution

    +
    +def book(book_id):
    +    page = """
    +<h1>%(title)s</h1>
    +<table>
    +    <tr><th>Author</th><td>%(author)s</td></tr>
    +    <tr><th>Publisher</th><td>%(publisher)s</td></tr>
    +    <tr><th>ISBN</th><td>%(isbn)s</td></tr>
    +</table>
    +<a href="/">Back to the list</a>
    +"""
    +    book = DB.title_info(book_id)
    +    if book is None:
    +        raise NameError
    +    return page % book
    +
    +
    +
    +

    Revel in Your Success

    +

    Quit and restart your script one more time

    +

    Then poke around at your application and see the good you've made

    +

    And your application is portable and sharable

    +

    It should run equally well under any wsgi server

    +
    +
    +

    A Few Steps Further

    +

    Next steps for an app like this might be:

    +
      +
    • Create a shared full page template and incorporate it into your app
    • +
    • Improve the error handling by emitting error codes other than 404 and 500
    • +
    • Swap out the basic backend here with a different one, maybe a Web Service?
    • +
    • Think about ways to make the application less tightly coupled to the pages +it serves
    • +
    +
    +
    +

    Wrap-Up

    +

    For educational purposes, you might wish to take a look at the source code for +the wsgiref module. It's the canonical example of a simple wsgi server

    +
    +
    +>>> import wsgiref
    +>>> wsgiref.__file__
    +'/full/path/to/your/copy/of/wsgiref.py'
    +...
    +
    +
    +

    See You Tomorrow!

    +
    +
    + + diff --git a/presentations/session05.html b/presentations/session05.html new file mode 100644 index 00000000..25119284 --- /dev/null +++ b/presentations/session05.html @@ -0,0 +1,1095 @@ + + + + + + + +Python Web Programming + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    Python Web Programming

    + +img/bike.jpg +

    Session 5: Frameworks and Flask

    +
    +
    "Reinventing the wheel is great
    +
    if your goal is to learn more about the wheel"
    +

    +
    -- James Tauber, PyCon 2007
    +
    +

    image: Britanglishman http://www.flickr.com/photos/britanglishman/5999131365/ - CC-BY

    + +
    +
    +

    A Moment to Reflect

    +

    We've been at this for a couple of days now. We've learned a great deal:

    +
      +
    • Sockets, the TCP/IP Stack and Basic Mechanics
    • +
    • Web Protocols and the Importance of Clear Communication
    • +
    • APIs and Consuming Data from The Web
    • +
    • CGI and WSGI and Getting Information to Your Dynamic Applications
    • +
    +

    Everything we do from here out will be based on tools built using these +foundational technologies.

    +
    +
    +

    From Now On

    +

    Think of everything we do as sitting on top of WSGI

    +

    This may not actually be true

    +

    But we will always be working at that level of abstraction.

    +
    +
    +

    Frameworks

    +

    From Wikipedia:

    +

    A web application framework (WAF) is a software framework that is designed to +support the development of dynamic websites, web applications and web +services. The framework aims to alleviate the overhead associated with common +activities performed in Web development. For example, many frameworks provide +libraries for database access, templating frameworks and session management, +and they often promote code reuse

    +
    +
    +

    What Does That Mean?

    +

    You use a framework to build an application.

    +

    A framework allows you to build different kinds of applications.

    +

    A framework abstracts what needs to be abstracted, and allows control of the +rest.

    +

    Think back over the last four weeks. What were your pain points? Which bits do +you wish you didn't have to think about?

    +
    +
    +

    Level of Abstraction

    +

    This last part is important when it comes to choosing a framework

    +
      +
    • abstraction ∠1/freedom
    • +
    • The more they choose, the less you can
    • +
    • Every framework makes choices in what to abstract
    • +
    • Every framework makes different choices
    • +
    +
    +
    +

    Python Web Frameworks

    +

    There are scores of 'em (this is a partial list).

    + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Choosing a Framework

    +

    Many folks will tell you "<XYZ> is the best framework".

    +

    In most cases, what they really mean is "I know how to use <XYZ>"

    +

    In some cases, what they really mean is "<XYZ> fits my brain the best"

    +

    What they usually forget is that everyone's brain (and everyone's use-case) is +different.

    +
    +
    +

    Cris' First Law of Frameworks

    +

    Pick the Right Tool for the Job

    +

    First Corollary

    +

    The right tool is the tool that allows you to finish the job quickly and +correctly.

    +

    But how do you know which that one is?

    +
    +
    +

    Cris' Second Law of Frameworks

    +

    You can't know unless you try

    +

    so let's try

    +
    +
    +

    Practice Safe Development

    +

    We are going to install Flask, and the packages it requires, into a +virtualenv.

    +

    This will ensure that it is isolated from everything else we do in class (and +vice versa)

    +
    +

    Remember the basic format for creating a virtualenv:

    +
    +$ python virtualenv.py [options] <ENV>
    +<or>
    +$ virtualenv [options] <ENV>
    +
    +
    +
    +
    +

    Set Up a VirtualEnv

    +

    Start by creating your virtualenv:

    +
    +$ python virtualenv.py flaskenv
    +<or>
    +$ virtualenv flaskenv
    +...
    +
    +
    +

    Then, activate it:

    +
    +$ source flaskenv/bin/activate
    +<or>
    +C:\> flaskenv\Scripts\activate
    +
    +
    +
    +
    +

    Install Flask

    +

    Finally, install Flask using setuptools or pip:

    +
    +(flaskenv)$ pip install flask
    +Downloading/unpacking flask
    +  Downloading Flask-0.10.1.tar.gz (544kB): 544kB downloaded
    +...
    +Installing collected packages: flask, Werkzeug, Jinja2,
    +  itsdangerous, markupsafe
    +...
    +Successfully installed flask Werkzeug Jinja2 itsdangerous
    +  markupsafe
    +
    +
    +
    +

    Kicking the Tires

    +

    We've installed the Flask microframework and all of its dependencies.

    +

    Now, let's see what it can do

    +

    In your class working directory, create a file called flask_intro.py and +open it in your text editor.

    +
    +
    +

    Flask

    +

    Getting started with Flask is pretty straightforward. Here's a complete, +simple app. Type it into flask_intro.py:

    +
    +from flask import Flask
    +app = Flask(__name__)
    +
    +@app.route('/')
    +def hello_world():
    +    return 'Hello World!'
    +
    +if __name__ == '__main__':
    +    app.run()
    +
    +
    +
    +

    Running our App

    +

    As you might expect by now, the last block in our flask_intro.py file +allows us to run this as a python program. Save your file, and in your +terminal try this:

    +
    +(flaskenv)$ python flask_intro.py
    +
    +

    Load http://localhost:5000 in your browser to see it in action.

    +
    +
    +

    Debugging our App

    +

    Last week, cgitb provided us with useful feedback when building an app. +Flask has similar functionality. Make the following changes to your +flask_intro.py file:

    +
    +def hello_world():
    +    bar = 1 / 0
    +    return 'Hello World!'
    +
    +if __name__ == '__main__':
    +    app.run(debug=True)
    +
    +

    Restart your app and then reload your browser to see what happens (clean up +the error when you're done).

    +
    +
    +

    What's Happening Here?

    +

    Flask the framework provides a Python class called Flask. This class +functions as a single application in the WSGI sense.

    +

    Remember, a WSGI application must be a callable that takes the arguments +environ and start_response.

    +

    It has to call the start_response method, providing status and headers.

    +

    And it has to return an iterable that represents the HTTP response body.

    +
    +
    +

    Under the Covers

    +

    In Python, an object is a callable if it has a __call__ method.

    +
    +

    Here's the __call__ method of the Flask class:

    +
    +def __call__(self, environ, start_response):
    +    """Shortcut for :attr:`wsgi_app`."""
    +    return self.wsgi_app(environ, start_response)
    +
    +
    +

    As you can see, it calls another method, called wsgi_app. Let's follow +this down...

    +
    +
    +

    Flask.wsgi_app

    +
    +def wsgi_app(self, environ, start_response):
    +    """The actual WSGI application.
    +    ...
    +    """
    +    ctx = self.request_context(environ)
    +    ctx.push()
    +    error = None
    +    try:
    +        try:
    +            response = self.full_dispatch_request()
    +        except Exception as e:
    +            error = e
    +            response = self.make_response(self.handle_exception(e))
    +        return response(environ, start_response)
    +    #...
    +
    +

    response is another WSGI app. Flask is actually middleware

    +
    +
    +

    Abstraction Layers

    +

    Finally, way down in a package called werkzeug, we find this response object +and it's __call__ method:

    +
    +def __call__(self, environ, start_response):
    +    """Process this response as WSGI application.
    +
    +    :param environ: the WSGI environment.
    +    :param start_response: the response callable provided by the WSGI
    +                           server.
    +    :return: an application iterator
    +    """
    +    app_iter, status, headers = self.get_wsgi_response(environ)
    +    start_response(status, headers)
    +    return app_iter
    +
    +
    +
    +

    Common Threads

    +

    All Python web frameworks that operate under the WSGI spec will do this same +sort of thing.

    +

    They have to do it.

    +

    And these layers of abstraction allow you, the developer to focus only on the +thing that really matters to you.

    +

    Getting input from a request, and returning a response.

    +
    +
    +

    Popping Back Up the Stack

    +

    Returning up to the level where we will be working, remember what you've done:

    +
      +
    • You instantiated a Flask app with a name that represents the package or +module containing the app
        +
      • Because our app is a single Python module, this should be __name__
      • +
      • This is used to help the Flask app figure out where to look for +resources
      • +
      +
    • +
    • You defined a function that returned a response body
    • +
    • You told the app which requests should use that function with a route
    • +
    +

    Let's take a look at how that last bit works for a moment...

    +
    +
    +

    URL Routing

    +

    Remember our bookdb exercise? How did you end up solving the problem of +mapping an HTTP request to the right function?

    +

    Flask solves this problem by using the route decorator from your app.

    +

    A 'route' takes a URL rule (more on that in a minute) and maps it to an +endpoint and a function.

    +

    When a request arrives at a URL that matches a known rule, the function is +called.

    +
    +
    +

    URL Rules

    +

    URL Rules are strings that represent what environ['PATH_INFO'] will look like.

    +

    They are added to a mapping on the Flask object called the url_map

    +

    You can call app.add_url_rule() to add a new one

    +

    Or you can use what we've used, the app.route() decorator

    +
    +
    +

    Function or Decorator

    +
    +def index():
    +    """some function that returns something"""
    +    # ...
    +
    +app.add_url_rule('/', 'homepage', index)
    +
    +
    +

    is identical to

    +
    +@app.route('/', 'homepage')
    +def index():
    +    """some function that returns something"""
    +    # ...
    +
    +
    +
    +
    +

    Routes Can Be Dynamic

    +

    A placeholder in a URL rule becomes a named arg to your function (add these +to flask_intro.py):

    +
    +@app.route('/profile/<username>')
    +def show_profile(username):
    +    return "My username is %s" % username
    +
    +

    And converters ensure the incoming argument is of the correct type.

    +
    +@app.route('/div/<float:val>/')
    +def divide(val):
    +    return "%0.2f divided by 2 is %0.2f" % (val, val / 2)
    +
    +
    +
    +

    Routes Can Be Filtered

    +

    You can also determine which HTTP methods a given route will accept:

    +
    +@app.route('/blog/entry/<int:id>/', methods=['GET',])
    +def read_entry(id):
    +    return "reading entry %d" % id
    +
    +@app.route('/blog/entry/<int:id>/', methods=['POST', ])
    +def write_entry(id):
    +    return 'writing entry %d' % id
    +
    +

    After adding that to flask_intro.py and saving, try loading +http://localhost:5000/blog/entry/23/ into your browser. Which was called?

    +
    +
    +

    Routes Can Be Reversed

    +

    Reversing a URL means the ability to generate the url that would result in a +given endpoint being called.

    +

    This means you don't have to hard-code your URLs when building links

    +

    That means you can change the URLs for your app without changing code or +templates

    +

    This is called decoupling and it is a good thing

    +
    +
    +

    Reversing URLs in Flask

    +

    In Flask, you reverse a url with the url_for function.

    +
      +
    • url_for requires an HTTP request context to work
    • +
    • You can fake an HTTP request when working in a terminal (or testing)
    • +
    • Use the test_request_context method of your app object
    • +
    • This is a great chance to use the Python with statement
    • +
    • Don't type this
    • +
    +
    +from flask import url_for
    +with app.test_request_context():
    +  print url_for('endpoint', **kwargs)
    +
    +
    +
    +

    Reversing in Action

    +

    Quit your Flask app with ^C. Then start a python interpreter in that same +terminal and import your flask_intro.py module:

    +
    +import flask_intro
    +from flask_intro import app
    +from flask import url_for
    +with app.test_request_context():
    +    print url_for('show_profile', username="cris")
    +    print url_for('divide', val=23.7)
    +
    +'/profile/cris/'
    +'/div/23.7/'
    +
    +
    +
    +

    Break Time

    +

    Now's a good time to take a rest.

    +

    When we return, we'll take a look at templating and data persistence.

    +
    +
    +

    Generating HTML

    +

    "I enjoy writing HTML in Python"

    +

    -- nobody, ever

    +
    +
    +

    Templating

    +

    A good framework will provide some way of generating HTML with a templating +system.

    +

    There are nearly as many templating systems as there are frameworks

    +

    Each has advantages and disadvantages

    +

    Flask includes the Jinja2 templating system (perhaps because it's built by +the same folks)

    +
    +
    +

    Jinja2 Template Basics

    +

    Let's start with the absolute basics.

    +
    +

    Fire up a Python interpreter, using your flask virtualenv:

    +
    +(flaskenv)$ python
    +>>> from jinja2 import Template
    +
    +
    +
    +

    A template is built of a simple string:

    +
    +>>> t1 = Template("Hello {{ name }}, how are you?")
    +
    +
    +
    +
    +

    Rendering a Template

    +

    Call the render method, providing some context:

    +
    +>>> t1.render(name="Freddy")
    +u'Hello Freddy, how are you?'
    +>>> t1.render({'name': "Roberto"})
    +u'Hello Roberto, how are you?'
    +>>>
    +
    +

    Context can either be keyword arguments, or a dictionary

    +
    +
    +

    Dictionaries in Context

    +

    Dictionaries passed in as part of the context can be addressed with either +subscript or dotted notation:

    +
    +>>> person = {'first_name': 'Frank',
    +...           'last_name': 'Herbert'}
    +>>> t2 = Template("{{ person.last_name }}, {{ person['first_name'] }}")
    +>>> t2.render(person=person)
    +u'Herbert, Frank'
    +
    +
      +
    • Jinja2 will try the correct way first (attr for dotted, item for +subscript).
    • +
    • If nothing is found, it will try the opposite.
    • +
    • If nothing is found, it will return an undefined object.
    • +
    +
    +
    +

    Objects in Context

    +

    The exact same is true of objects passed in as part of context:

    +
    +>>> t3 = Template("{{ obj.x }} + {{ obj['y'] }} = Fun!")
    +>>> class Game(object):
    +...   x = 'babies'
    +...   y = 'bubbles'
    +...
    +>>> bathtime = Game()
    +>>> t3.render(obj=bathtime)
    +u'babies + bubbles = Fun!'
    +
    +

    This means your templates can be a bit agnostic as to the nature of the things +in context

    +
    +
    +

    Filtering values in Templates

    +

    You can apply filters to the data passed in context with the pipe ('|') +operator:

    +
    +t4 = Template("shouted: {{ phrase|upper }}")
    +>>> t4.render(phrase="this is very important")
    +u'shouted: THIS IS VERY IMPORTANT'
    +
    +
    +

    You can also chain filters together:

    +
    +t5 = Template("confusing: {{ phrase|upper|reverse }}")
    +>>> t5.render(phrase="howdy doody")
    +u'confusing: YDOOD YDWOH'
    +
    +
    +
    +
    +

    Control Flow

    +

    Logical control structures are also available:

    +
    +tmpl = """
    +... {% for item in list %}{{ item }}, {% endfor %}
    +... """
    +>>> t6 = Template(tmpl)
    +>>> t6.render(list=[1,2,3,4,5,6])
    +u'\n1, 2, 3, 4, 5, 6, '
    +
    +

    Any control structure introduced in a template must be paired with an +explicit closing tag ({% for %}...{% endfor %})

    +
    +
    +

    Template Tests

    +

    There are a number of specialized tests available for use with the +if...elif...else control structure:

    +
    +>>> tmpl = """
    +... {% if phrase is upper %}
    +...   {{ phrase|lower }}
    +... {% elif phrase is lower %}
    +...   {{ phrase|upper }}
    +... {% else %}{{ phrase }}{% endif %}"""
    +>>> t7 = Template(tmpl)
    +>>> t7.render(phrase="FOO")
    +u'\n\n  foo\n'
    +>>> t7.render(phrase="bar")
    +u'\n\n  BAR\n'
    +>>> t7.render(phrase="This should print as-is")
    +u'\nThis should print as-is'
    +
    +
    +
    +

    Basic Python Expressions

    +

    Basic Python expressions are also supported:

    +
    +tmpl = """
    +... {% set sum = 0 %}
    +... {% for val in values %}
    +... {{ val }}: {{ sum + val }}
    +...   {% set sum = sum + val %}
    +... {% endfor %}
    +... """
    +>>> t8 = Template(tmpl)
    +>>> t8.render(values=range(1,11))
    +u'\n\n\n1: 1\n  \n\n2: 3\n  \n\n3: 6\n  \n\n4: 10\n
    +  \n\n5: 15\n  \n\n6: 21\n  \n\n7: 28\n  \n\n8: 36\n
    +  \n\n9: 45\n  \n\n10: 55\n  \n'
    +
    +
    +
    +

    Much, Much More

    +

    There's more that Jinja2 templates can do, and we'll see more in the next +session when we write templates for our Flask app.

    +
    +

    Make sure that you bookmark the Jinja2 documentation for later use:

    +
    +http://jinja.pocoo.org/docs/templates/
    +
    +
    +
    +
    +

    Data Persistence

    +

    There are many models for persistance of data.

    +
      +
    • Flat files
    • +
    • Relational Database (SQL RDBMs like PostgreSQL, MySQL, SQLServer, Oracle)
    • +
    • Object Stores (Pickle, ZODB)
    • +
    • NoSQL Databases (CouchDB, MongoDB, etc)
    • +
    +

    It's also one of the most contentious issues in app design.

    +

    For this reason, it's one of the things that most Small Frameworks leave +undecided, Flask included.

    +
    +
    +

    Simple SQL

    +

    PEP 249 describes a +common API for database connections called DB-API 2.

    +
    +

    The goal was to

    +
    +

    achieve a consistency leading to more easily understood modules, code +that is generally more portable across databases, and a broader reach +of database connectivity from Python

    +

    source: http://www.python.org/dev/peps/pep-0248/

    +
    +
    +
    +
    +

    A Note on DB API

    +

    It is important to remember that PEP 249 is only a specification.

    +

    There is no code or package for DB-API 2 on it's own.

    +

    Since 2.5, the Python Standard Library has provided a reference +implementation of the api +based on SQLite3

    +

    Before Python 2.5, this package was available as pysqlite

    +
    +
    +

    Using DB API

    +

    To use the DB API with any database other than SQLite3, you must have an +underlying API package available.

    +
    +

    Implementations are available for:

    +
      +
    • PostgreSQL (psycopg2, txpostgres, ...)
    • +
    • MySQL (mysql-python, PyMySQL, ...)
    • +
    • MS SQL Server (adodbapi, pymssql, mxODBC, pyodbc, ...)
    • +
    • Oracle (cx_Oracle, mxODBC, pyodbc, ...)
    • +
    • and many more...
    • +
    +

    source: http://wiki.python.org/moin/DatabaseInterfaces

    +
    +
    +
    +

    Installing API Packages

    +

    Most db api packages can be installed using typical Pythonic methods:

    +
    +$ easy_install psycopg2
    +$ pip install mysql-python
    +...
    +
    +

    Most api packages will require that the development headers for the underlying +database system be available. Without these, the C symbols required for +communication with the db are not present and the wrapper cannot work.

    +
    +
    +

    Not Today

    +

    We don't want to spend the next hour getting a package installed, so let's use +sqlite3 instead.

    +

    I do not recommend using sqlite3 for production web applications, there are +too many ways in which it falls short

    +

    But it will provide a solid learning tool

    +
    +
    +

    Getting Started

    +

    In the class resources folder, you'll find an sql directory. Copy that to +your working directory.

    +

    Open the file createdb.py in your text editor. Edit main like so:

    +
    +def main():
    +    conn =  sqlite3.connect(DB_FILENAME)
    +    if DB_IS_NEW:
    +        print 'Need to create database and schema'
    +    else:
    +        print 'Database exists, assume schema does, too.'
    +    conn.close()
    +
    +
    +
    +

    Try It Out

    +

    Run the createdb.py script to see it in effect:

    +
    +$ python createdb.py
    +Need to create database and schema
    +$ python createdb.py
    +Database exists, assume schema does, too.
    +$ ls
    +books.db
    +...
    +
    +

    Sqlite3 will automatically create a new database when you connect for the +first time, if one does not exist.

    +
    +
    +

    Set Up A Schema

    +

    Make the following changes to createdb.py:

    +
    +DB_FILENAME = 'books.db'
    +SCHEMA_FILENAME = 'ddl.sql' # <- this is new
    +DB_IS_NEW = not os.path.exists(DB_FILENAME)
    +
    +def main():
    +    with sqlite3.connect(DB_FILENAME) as conn: # <- context mgr
    +        if DB_IS_NEW: # A whole new if clause:
    +            print 'Creating schema'
    +            with open(SCHEMA_FILENAME, 'rt') as f:
    +                schema = f.read()
    +            conn.executescript(schema)
    +        else:
    +            print 'Database exists, assume schema does, too.'
    +    # delete the `conn.close()` that was here.
    +
    +
    +
    +

    Verify Your Work

    +

    Quit your python interpreter and delete the file books.db

    +
    +

    Then run the script from the command line again to try it out:

    +
    +$ python createdb.py
    +Creating schema
    +$ python createdb.py
    +Database exists, assume schema does, too.
    +
    +
    +
    +
    +

    Introspect the Database

    +

    Add the following to createdb.py:

    +
    +# in the imports, add this line:
    +from utils import show_table_metadata
    +
    +else:
    +    # in the else clause, replace the print statement with this:
    +    print "Database exists, introspecting:"
    +    tablenames = ['author', 'book']
    +    cursor = conn.cursor()
    +    for name in tablenames:
    +        print "\n"
    +        show_table_metadata(cursor, name)
    +
    +

    Then try running python createdb.py again

    +
    +
    +

    My Results

    +
    +$ python createdb.py
    +Table Metadata for 'author':
    +cid        | name       | type       | notnull    | dflt_value | pk         |
    +-----------+------------+------------+------------+------------+------------+-
    +0          | authorid   | INTEGER    | 1          | None       | 1          |
    +-----------+------------+------------+------------+------------+------------+-
    +1          | name       | TEXT       | 0          | None       | 0          |
    +-----------+------------+------------+------------+------------+------------+-
    +
    +
    +Table Metadata for 'book':
    +cid        | name       | type       | notnull    | dflt_value | pk         |
    +-----------+------------+------------+------------+------------+------------+-
    +0          | bookid     | INTEGER    | 1          | None       | 1          |
    +-----------+------------+------------+------------+------------+------------+-
    +1          | title      | TEXT       | 0          | None       | 0          |
    +-----------+------------+------------+------------+------------+------------+-
    +2          | author     | INTEGER    | 1          | None       | 0          |
    +-----------+------------+------------+------------+------------+------------+-
    +
    +
    +
    +

    Inserting Data

    +

    Let's load up some data. Fire up your interpreter and type:

    +
    +>>> import sqlite3
    +>>> insert = """
    +... INSERT INTO author (name) VALUES("Iain M. Banks");"""
    +>>> with sqlite3.connect("books.db") as conn:
    +...     cur = conn.cursor()
    +...     cur.execute(insert)
    +...     cur.rowcount
    +...     cur.close()
    +...
    +<sqlite3.Cursor object at 0x10046e880>
    +1
    +>>>
    +
    +

    Did that work?

    +
    +
    +

    Querying Data

    +

    Let's query our database to find out:

    +
    +>>> query = """
    +... SELECT * from author;"""
    +>>> with sqlite3.connect("books.db") as conn:
    +...     cur = conn.cursor()
    +...     cur.execute(query)
    +...     rows = cur.fetchall()
    +...     for row in rows:
    +...         print row
    +...
    +<sqlite3.Cursor object at 0x10046e8f0>
    +(1, u'Iain M. Banks')
    +
    +

    Alright! We've got data in there. Let's make it more efficient

    +
    +
    +

    Parameterized Statements

    +

    Try this:

    +
    +>>> insert = """
    +... INSERT INTO author (name) VALUES(?);"""
    +>>> authors = [["China Mieville"], ["Frank Herbert"],
    +... ["J.R.R. Tolkien"], ["Susan Cooper"], ["Madeline L'Engle"]]
    +>>> with sqlite3.connect("books.db") as conn:
    +...     cur = conn.cursor()
    +...     cur.executemany(insert, authors)
    +...     print cur.rowcount
    +...     cur.close()
    +...
    +<sqlite3.Cursor object at 0x10046e8f0>
    +5
    +
    +
    +
    +

    Check Your Work

    +

    Again, query the database:

    +
    +>>> query = """
    +... SELECT * from author;"""
    +>>> with sqlite3.connect("books.db") as conn:
    +...     cur = conn.cursor()
    +...     cur.execute(query)
    +...     rows = cur.fetchall()
    +...     for row in rows:
    +...         print row
    +...
    +<sqlite3.Cursor object at 0x10046e8f0>
    +(1, u'Iain M. Banks')
    +...
    +(4, u'J.R.R. Tolkien')
    +(5, u'Susan Cooper')
    +(6, u"Madeline L'Engle")
    +
    +
    +
    +

    Transactions

    +

    Transactions group operations together, allowing you to verify them before +the results hit the database.

    +

    In SQLite3, data-altering statements require an explicit commit unless +auto-commit has been enabled.

    +

    The with statements we've used take care of committing when the context +manager closes.

    +

    Let's change that so we can see what happens explicitly

    +
    +
    +

    Populating the Database

    +

    Let's start by seeing what happens when you try to look for newly added data +before the insert transaction is committed.

    +

    Begin by quitting your interpreter and deleting books.db.

    +
    +

    Then re-create the database, empty:

    +
    +$ python createdb.py
    +Creating schema
    +
    +
    +
    +
    +

    Setting Up the Test

    +

    Open populatedb.py in your editor, replace the final print:

    +
    +conn1 = sqlite3.connect(DB_FILENAME)
    +conn2 = sqlite3.connect(DB_FILENAME)
    +print "\nOn conn1, before insert:"
    +show_authors(conn1)
    +authors = ([author] for author in AUTHORS_BOOKS.keys())
    +cur = conn1.cursor()
    +cur.executemany(author_insert, authors)
    +print "\nOn conn1, after insert:"
    +show_authors(conn1)
    +print "\nOn conn2, before commit:"
    +show_authors(conn2)
    +conn1.commit()
    +print "\nOn conn2, after commit:"
    +show_authors(conn2)
    +conn1.close()
    +conn2.close()
    +
    +
    +
    +

    Running the Test

    +

    Quit your python interpreter and run the populatedb.py script:

    +
    +On conn1, before insert:
    +no rows returned
    +On conn1, after insert:
    +(1, u'China Mieville')
    +(2, u'Frank Herbert')
    +(3, u'Susan Cooper')
    +(4, u'J.R.R. Tolkien')
    +(5, u"Madeline L'Engle")
    +
    +On conn2, before commit:
    +no rows returned
    +On conn2, after commit:
    +(1, u'China Mieville')
    +(2, u'Frank Herbert')
    +(3, u'Susan Cooper')
    +(4, u'J.R.R. Tolkien')
    +(5, u"Madeline L'Engle")
    +
    +
    +
    +

    Rollback

    +

    That's all well and good, but what happens if an error occurs?

    +

    Transactions can be rolled back in order to wipe out partially completed work.

    +

    Like with commit, using connect as a context manager in a with +statement will automatically rollback for exceptions.

    +

    Let's rewrite our populatedb script so it explicitly commits or rolls back a +transaction depending on exceptions occurring

    +
    +
    +

    Edit populatedb.py (slide 1)

    +

    First, add the following function above the if __name__ == '__main__' +block:

    +
    +def populate_db(conn):
    +    authors = ([author] for author in AUTHORS_BOOKS.keys())
    +    cur = conn.cursor()
    +    cur.executemany(author_insert, authors)
    +
    +    for author in AUTHORS_BOOKS.keys():
    +        params = ([book, author] for book in AUTHORS_BOOKS[author])
    +        cur.executemany(book_insert, params)
    +
    +
    +
    +

    Edit populatedb.py (slide 2)

    +

    Then, in the runner:

    +
    +with sqlite3.connect(DB_FILENAME) as conn1:
    +    with sqlite3.connect(DB_FILENAME) as conn2:
    +        try:
    +            populate_db(conn1)
    +            print "\nauthors and books on conn2 before commit:"
    +            show_authors(conn2)
    +            show_books(conn2)
    +        except sqlite3.Error:
    +            conn1.rollback()
    +            print "\nauthors and books on conn2 after rollback:"
    +            show_authors(conn2)
    +            show_books(conn2)
    +            raise
    +        else:
    +            conn1.commit()
    +            print "\nauthors and books on conn2 after commit:"
    +            show_authors(conn2)
    +            show_books(conn2)
    +
    +
    +
    +

    Try it Out

    +

    Remove books.db and recrete the database, then run our script:

    +
    +$ rm books.db
    +$ python createdb.py
    +Creating schema
    +$ python populatedb.py
    +
    +
    +authors and books on conn2 after rollback:
    +no rows returned
    +no rows returned
    +Traceback (most recent call last):
    +  File "populatedb.py", line 57, in <module>
    +    populate_db(conn1)
    +  File "populatedb.py", line 46, in populate_db
    +    cur.executemany(book_insert, params)
    +sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.
    +
    +
    +
    +

    Oooops, Fix It

    +

    Okay, we got an error, and the transaction was rolled back correctly.

    +
    +

    Open utils.py and find this:

    +
    +'Susan Cooper': ["The Dark is Rising", ["The Greenwitch"]],
    +
    +
    +
    +

    Fix it like so:

    +
    +'Susan Cooper': ["The Dark is Rising", "The Greenwitch"],
    +
    +
    +

    It appears that we were attempting to bind a list as a parameter. Ooops.

    +
    +
    +

    Try It Again

    +
    +

    Now that the error in our data is repaired, let's try again:

    +
    +$ python populatedb.py
    +
    +
    +
    +Reporting authors and books on conn2 before commit:
    +no rows returned
    +no rows returned
    +Reporting authors and books on conn2 after commit:
    +(1, u'China Mieville')
    +(2, u'Frank Herbert')
    +(3, u'Susan Cooper')
    +(4, u'J.R.R. Tolkien')
    +(5, u"Madeline L'Engle")
    +(1, u'Perdido Street Station', 1)
    +(2, u'The Scar', 1)
    +(3, u'King Rat', 1)
    +(4, u'Dune', 2)
    +(5, u"Hellstrom's Hive", 2)
    +(6, u'The Dark is Rising', 3)
    +(7, u'The Greenwitch', 3)
    +(8, u'The Hobbit', 4)
    +(9, u'The Silmarillion', 4)
    +(10, u'A Wrinkle in Time', 5)
    +(11, u'A Swiftly Tilting Planet', 5)
    +
    +
    +
    +

    Next Steps

    +

    We've learned a bit about the basics of using Flask, writing templates and +using DB API to persist data.

    +

    This afternoon, we'll put this to use by writing a small application in Flask

    +

    By the end of the day, we'll have a fully-tested microblog ready to go.

    +
    +
    +

    Lunch Time

    +

    We'll see you back here in an hour. Enjoy!

    +
    +
    + + diff --git a/presentations/session06.html b/presentations/session06.html new file mode 100644 index 00000000..f2987f15 --- /dev/null +++ b/presentations/session06.html @@ -0,0 +1,1172 @@ + + + + + + + +Python Web Programming + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    Python Web Programming

    + +img/flask_cover.png +

    Session 6: A Flask Application

    +
    +
    "Web Development,
    +
    one drop at a time"
    +
    +

    image: Flask Logo (http://flask.pocoo.org/community/logos/)

    + +
    +
    +

    A Quick Reminder

    +

    In our last session we set up a virtualenv in which we have installed the +microframework Flask

    +

    We spent a few minutes exploring how Flask works, and how it is similar to the +wsgi app we wrote ourselves.

    +

    We then took a detour to introduce Jinja2, the templating language Flask +uses out of the box.

    +

    Finally, we learned about the Python DB API 2 by seeing how we can set up a +sqlite3 database and work with it safely.

    +
    +
    +

    Moving On

    +

    Now it is time to put all that together.

    +

    We'll spend this session building a "microblog" application.

    +

    Let's dive right in.

    +

    Start by activating your Flask virtualenv

    +
    +
    +

    Our Database

    +

    We need first to define what an entry for our microblog might look like.

    +

    Let's keep it a simple as possible for now.

    +

    Create a new directory microblog, and open a new file in it: +schema.sql

    +
    +drop table if exists entries;
    +create table entries (
    +    id integer primary key autoincrement,
    +    title string not null,
    +    text string not null
    +);
    +
    +
    +
    +

    App Configuration

    +

    For any but the most trivial applications, you'll need some configuration.

    +

    Flask provides a number of ways of loading configuration. We'll be using a +config file

    +

    Create a new file microblog.cfg in the same directory.

    +
    +# application configuration for a Flask microblog
    +DATABASE = 'microblog.db'
    +
    +
    +
    +

    Our App Skeleton

    +

    Finally, we'll need a basic app skeleton to work from.

    +

    Create one more file microblog.py in the same directory, and enter the +following:

    +
    +from flask import Flask
    +
    +app = Flask(__name__)
    +
    +app.config.from_pyfile('microblog.cfg')
    +
    +if __name__ == '__main__':
    +    app.run(debug=True)
    +
    +
    +
    +

    Test Your Work

    +

    This is enough to get us off the ground.

    +
    +

    From a terminal in the microblog directory, run the app:

    +
    +(flaskenv)$ python microblog.py
    +* Running on http://127.0.0.1:5000/
    +* Restarting with reloader
    +
    +
    +

    Then point your browser at http://localhost:5000/

    +

    What do you see in your browser? In the terminal? Why?

    +
    +
    +

    Creating the Database

    +

    Quit the app with ^C. Then return to microblog.py and add the +following:

    +
    +# add this up at the top
    +import sqlite3
    +
    +# add the rest of this below the app.config statement
    +def connect_db():
    +    return sqlite3.connect(app.config['DATABASE'])
    +
    +

    This should look familiar. What will happen?

    +

    This convenience method allows us to write our very first test.

    +
    +
    +

    Tests and TDD

    +

    If it isn't tested, it's broken

    +

    Test-Driven Development means writing the tests before writing the code. +As your tests pass, you know you're building what you want.

    +

    We are going to write tests at every step of this exercise using the +unittest module.

    +

    You'll want to read more about this module. See the reading list for +suggestions.

    +
    +
    +

    Testing Envrionment

    +

    The Python unittest module defines a class called a TestCase. It +serves as a container for a set of tests and the code needed to run them.

    +

    This class provides setUp and tearDown methods to control the +environment for each test.

    +

    These methods are run before and after each test, and may be used to provide +isolation between tests.

    +

    Create a microblog_tests.py file. Open it in your editor

    +
    +
    +

    Testing Setup

    +

    Add the following to provide minimal test setup.

    +
    +import os
    +import tempfile
    +import unittest
    +
    +import microblog
    +
    +class MicroblogTestCase(unittest.TestCase):
    +
    +    def setUp(self):
    +        db_fd = tempfile.mkstemp()
    +        self.db_fd, microblog.app.config['DATABASE'] = db_fd
    +        microblog.app.config['TESTING'] = True
    +        self.client = microblog.app.test_client()
    +        self.app = microblog.app
    +
    +
    +
    +

    Testing Teardown

    +

    Add this method to your test case class to tear down after each test:

    +
    +class MicroblogTestCase(unittest.TestCase):
    +    # ...
    +
    +    def tearDown(self):
    +        os.close(self.db_fd)
    +        os.unlink(microblog.app.config['DATABASE'])
    +
    +
    +
    +

    Make Tests Runnable

    +

    To make the test module runnable, we need a __main__ block.

    +

    Calling the unittest.main() function here will find test cases and run +their tests.

    +
    +

    Add the following at the end of microblog_tests.py:

    +
    +if __name__ == '__main__':
    +    unittest.main()
    +
    +
    +

    Now, we're ready to add our first actual test..

    +
    +
    +

    Test Databse Setup

    +

    We'd like to test that our database is correctly initialized. The schema has +one table with three columns. Let's test that.

    +
    +

    Add the following method to your test class in microblog_tests.py:

    +
    +def test_database_setup(self):
    +    con = microblog.connect_db()
    +    cur = con.execute('PRAGMA table_info(entries);')
    +    rows = cur.fetchall()
    +    self.assertEquals(len(rows), 3)
    +
    +
    +
    +
    +

    Run the Tests

    +

    We can now run our test module:

    +
    +(flaskenv)$ python microblog_tests.py
    +F
    +======================================================================
    +FAIL: test_database_setup (__main__.MicroblogTestCase)
    +----------------------------------------------------------------------
    +Traceback (most recent call last):
    +  File "microblog_tests.py", line 23, in test_database_setup
    +    self.assertEquals(len(rows) == 3)
    +AssertionError: 0 != 3
    +
    +----------------------------------------------------------------------
    +Ran 1 test in 0.011s
    +
    +FAILED (failures=1)
    +
    +
    +
    +

    Make the Test Pass

    +

    This is an expected failure. Why?

    +
    +

    Let's add some code to microblog.py that will actually create our +database schema:

    +
    +# add this import at the top
    +from contextlib import closing
    +
    +# add this function after the connect_db function
    +def init_db():
    +    with closing(connect_db()) as db:
    +        with app.open_resource('schema.sql') as f:
    +            db.cursor().executescript(f.read())
    +        db.commit()
    +
    +
    +
    +
    +

    Initialize the DB in Tests

    +

    We also need to call that function in our microblog_tests.py to set up the +database schema for each test.

    +
    +

    Add the following line at the end of that setUp method:

    +
    +def setUp(self):
    +    # ...
    +    microblog.init_db() # <- add this at the end
    +
    +
    +
    +(flaskenv)$ python microblog_tests.py
    +
    +
    +
    +

    Success?

    +

    \o/ Wahoooo!

    +
    +
    +

    Initialize the DB IRL

    +

    Our test passed, so we have confidence that init_db does what it should

    +

    We'll need to have a working database for our app, so let's go ahead and do +this "in real life"

    +

    (flaskenv)$ python

    +
    +>>> import microblog
    +>>> microblog.init_db()
    +>>> ^D
    +
    +
    +
    +

    Reading and Writing Data

    +

    After you quit the interpreter, you should see microblog.db in your +directory.

    +

    It's time now to think about writing and reading data for our blog.

    +

    We'll start by writing tests.

    +

    But first, a word or two about the circle of life.

    +
    +
    +

    The Request/Response Cycle

    +

    Every interaction in HTTP is bounded by the interchange of one request and one +response.

    +

    No HTTP application can do anything until some client makes a request.

    +

    And no action by an application is complete until a response has been sent +back to the client.

    +

    This is the lifecycle of an http web application.

    +
    +
    +

    Managing DB Connections

    +

    It makes sense to bind the lifecycle of a database connection to this same +border.

    +

    Flask does not dictate that we write an application that uses a database.

    +

    Because of this, managing the lifecycle of database connection so that they +are connected to the request/response cycle is up to us.

    +

    Happily, Flask does have a way to help us.

    +
    +
    +

    Request Boundary Decorators

    +

    The Flask app provides decorators we can use on our database lifecycle +functions:

    +
      +
    • @app.before_request: any method decorated by this will be called before +the cycle begins
    • +
    • @app.after_request: any method decorated by this will be called after +the cycle is complete. If an unhandled exception occurs, these functions are +skipped.
    • +
    • @app.teardown_request: any method decorated by this will be called at +the end of the cycle, even if an unhandled exception occurs.
    • +
    +
    +
    +

    Managing our DB

    +

    Think about the following functions:

    +
    +def get_database_connection():
    +    db = connect_db()
    +    return db
    +
    +@app.teardown_request
    +def teardown_request(exception):
    +    db.close()
    +
    +

    How does the db object get from one place to the other?

    +
    +
    +

    Global Context in Flask

    +

    Our flask app is only really instantiated once

    +

    This means that anything we tie to it will be shared across all requests.

    +

    This is what we call global context.

    +

    What happens if two clients make a request at the same time?

    +
    +
    +

    Local Context in Flask

    +

    Flask provides something it calls a local global: "g".

    +

    This is an object that looks global (you can import it anywhere)

    +

    But in reality, it is local to a single request.

    +

    Resources tied to this object are not shared among requests. Perfect for +things like a database connection.

    +
    +
    +

    Working DB Functions

    +

    Add the following, working methods to microblog.py:

    +
    +# add this import at the top:
    +from flask import g
    +
    +# add these function after init_db
    +def get_database_connection():
    +    db = getattr(g, 'db', None)
    +    if db is None:
    +        g.db = db = connect_db()
    +    return db
    +
    +@app.teardown_request
    +def teardown_request(exception):
    +    db = getattr(g, 'db', None)
    +    if db is not None:
    +        db.close()
    +
    +
    +
    +

    Writing Blog Entries

    +

    Our microblog will have entries. We've set up a simple database schema to +represent them.

    +

    To write an entry, what would we need to do?

    +
      +
    • Provide a title
    • +
    • Provide some body text
    • +
    • Write them to a row in the database
    • +
    +

    Let's write a test of a function that would do that.

    +
    +
    +

    Test Writing Entries

    +

    The database connection is bound by a request. We'll need to mock one (in +microblog_tests.py)

    +
    +

    Flask provides app.test_request_context to do just that

    +
    +def test_write_entry(self):
    +    expected = ("My Title", "My Text")
    +    with self.app.test_request_context('/'):
    +        microblog.write_entry(*expected)
    +        con = microblog.connect_db()
    +        cur = con.execute("select * from entries;")
    +        rows = cur.fetchall()
    +    self.assertEquals(len(rows), 1)
    +    for val in expected:
    +        self.assertTrue(val in rows[0])
    +
    +
    +
    +
    +

    Run Your Test

    +
    +(flaskenv)$ python microblog_tests.py
    +.E
    +======================================================================
    +ERROR: test_write_entry (__main__.MicroblogTestCase)
    +----------------------------------------------------------------------
    +Traceback (most recent call last):
    +  File "microblog_tests.py", line 30, in test_write_entry
    +    microblog.write_entry(*expected)
    +AttributeError: 'module' object has no attribute 'write_entry'
    +
    +----------------------------------------------------------------------
    +Ran 2 tests in 0.018s
    +
    +FAILED (errors=1)
    +
    +

    Great. Two tests, one passing.

    +
    +
    +

    Make It Pass

    +

    Now we are ready to write an entry to our database. Add this function to +microblog.py:

    +
    +def write_entry(title, text):
    +    con = get_database_connection()
    +    con.execute('insert into entries (title, text) values (?, ?)',
    +                 [title, text])
    +    con.commit()
    +
    +
    +(flaskenv)$ python microblog_tests.py
    +..
    +----------------------------------------------------------------------
    +Ran 2 tests in 0.146s
    +
    +OK
    +
    +
    +
    +

    Reading Entries

    +

    We'd also like to be able to read the entries in our blog

    +
    +

    We need a method that returns all of them for a listing page

    +
      +
    • The return value should be a list of entries
    • +
    • If there are none, it should return an empty list
    • +
    • Each entry in the list should be a dictionary of 'title' and 'text'
    • +
    +
    +

    Let's begin by writing tests.

    +
    +
    +

    Test Reading Entries

    +

    In microblog_tests.py:

    +
    +def test_get_all_entries_empty(self):
    +    with self.app.test_request_context('/'):
    +        entries = microblog.get_all_entries()
    +        self.assertEquals(len(entries), 0)
    +
    +def test_get_all_entries(self):
    +    expected = ("My Title", "My Text")
    +    with self.app.test_request_context('/'):
    +        microblog.write_entry(*expected)
    +        entries = microblog.get_all_entries()
    +        self.assertEquals(len(entries), 1)
    +        for entry in entries:
    +            self.assertEquals(expected[0], entry['title'])
    +            self.assertEquals(expected[1], entry['text'])
    +
    +
    +
    +

    Run Your Tests

    +
    +(flaskenv)$ python microblog_tests.py
    +.EE.
    +======================================================================
    +ERROR: test_get_all_entries (__main__.MicroblogTestCase)
    +----------------------------------------------------------------------
    +Traceback (most recent call last):
    +  File "microblog_tests.py", line 47, in test_get_all_entries
    +    entries = microblog.get_all_entries()
    +AttributeError: 'module' object has no attribute 'get_all_entries'
    +
    +======================================================================
    +ERROR: test_get_all_entries_empty (__main__.MicroblogTestCase)
    +----------------------------------------------------------------------
    +Traceback (most recent call last):
    +  File "microblog_tests.py", line 40, in test_get_all_entries_empty
    +    entries = microblog.get_all_entries()
    +AttributeError: 'module' object has no attribute 'get_all_entries'
    +
    +----------------------------------------------------------------------
    +Ran 4 tests in 0.021s
    +
    +FAILED (errors=2)
    +
    +
    +
    +

    Make Them Pass

    +

    Now we have 4 tests, and two fail, add this function to microblog.py:

    +
    +def get_all_entries():
    +    con = get_database_connection()
    +    cur = con.execute('SELECT title, text FROM entries ORDER BY id DESC')
    +    return [dict(title=row[0], text=row[1]) for row in cur.fetchall()]
    +
    +
    +

    And back in your terminal:

    +
    +(flaskenv)$ python microblog_tests.py
    +....
    +----------------------------------------------------------------------
    +Ran 4 tests in 0.021s
    +
    +OK
    +
    +
    +
    +
    +

    Where We Stand

    +

    We've moved quite a ways in implementing our microblog:

    +
      +
    • We've created code to initialize our database schema
    • +
    • We've added functions to manage the lifecycle of our database connection
    • +
    • We've put in place functions to write and read blog entries
    • +
    • And, since it's tested, we are reasonably sure our code does what we think +it does.
    • +
    +

    We're ready now to put a face on it, so we can see what we're doing!

    +
    +
    +

    Templates In Flask

    +

    First, though, a detour into templates as they work in Flask

    +
    +

    Jinja2 templates use the concept of an Environment to:

    +
      +
    • Figure out where to look for templates
    • +
    • Set configuration for the templating system
    • +
    • Add some commonly used functionality to the template context
    • +
    +
    +

    Flask sets up a proper Jinja2 Environment when you instantiate your app.

    +
    +
    +

    Flask Environment

    +

    Flask uses the value you pass to the app constructor to calculate the root +of your application on the filesystem.

    +

    From that root, it expects to find templates in a directory name templates

    +
    +

    This allows you to use the render_template command from flask like +so:

    +
    +from flask import render_template
    +page_html = render_template('hello_world.html', name="Cris")
    +
    +
    +
    +
    +

    Flask Context

    +

    Keyword arguments you pass to render_template become the context passed +to the template for rendering.

    +

    Flask will add a few things to this context.

    +
      +
    • config: contains the current configuration object
    • +
    • request: contains the current request object
    • +
    • session: any session data that might be available
    • +
    • g: the request-local object to which global variables are bound
    • +
    • url_for: so you can easily reverse urls from within your templates
    • +
    • get_flashed_messages: a function that returns messages you flash to your +users (more on this later).
    • +
    +
    +
    +

    Setting Up Our Templates

    +

    In your microblog directory, add a new templates directory

    +
    +

    In this directory create a new file layout.html

    +
    +<!DOCTYPE html>
    +<html>
    +  <head>
    +    <title>Microblog!</title>
    +  </head>
    +  <body>
    +    <h1>My Microblog</h1>
    +    <div class="content">
    +    {% block body %}{% endblock %}
    +    </div>
    +  </body>
    +</html>
    +
    +
    +
    +
    +

    Template Inheritance

    +

    You can combine templates in a number of different ways.

    +
      +
    • you can make replaceable blocks in templates with blocks
        +
      • {% block foo %}{% endblock %}
      • +
      +
    • +
    • you can build on a template in a second template by extending
        +
      • {% extends "layout.html" %}
      • +
      • this must be the first text in the template
      • +
      +
    • +
    • you can re-use common structure with include:
        +
      • {% include "footer.html" %}
      • +
      +
    • +
    +
    +
    +

    Template Inheritance

    +

    You can even build libraries of template macros and import them:

    +
    +{% macro input(label, name='input', value='', type='text') -%}
    +    <label>{{ label }}
    +    <input type="{{ type }}" value="{{ value|e }}" name="{{ name }}"/>
    +    </label>
    +{%- endmacro %}
    +
    +
    +{% import "forms.html" as forms %}
    +<form id="user_login" action="" method="POST">
    +    {{ forms.input("Username", name="username") }}
    +    {{ forms.input("Password", name="password" type="password") }}
    +    {{ forms.input("", type="submit" name="submit" value="Log in") }}
    +</form>
    +
    +
    +
    +

    Displaying an Entries List

    +

    Create a new file, show_entries.html in templates:

    +
    +{% extends "layout.html" %}
    +{% block body %}
    +  <h2>Posts</h2>
    +  <ul class="entries">
    +  {% for entry in entries %}
    +    <li>
    +      <h2>{{ entry.title }}</h2>
    +      <div class="entry_body">
    +      {{ entry.text|safe }}
    +      </div>
    +    </li>
    +  {% else %}
    +    <li><em>No entries here so far</em></li>
    +  {% endfor %}
    +  </ul>
    +{% endblock %}
    +
    +
    +
    +

    Viewing Entries

    +

    We just need a Python function that will:

    +
      +
    • build a list of entries
    • +
    • pass the list to our template to be rendered
    • +
    • return the result to a client's browser
    • +
    +

    As usual, we'll start by writing tests for this new function

    +
    +
    +

    Test Viewing Entries

    +

    Add the following two tests to microblog_tests.py:

    +
    +def test_empty_listing(self):
    +    response = self.client.get('/')
    +    assert 'No entries here so far' in response.data
    +
    +def test_listing(self):
    +    expected = ("My Title", "My Text")
    +    with self.app.test_request_context('/'):
    +        microblog.write_entry(*expected)
    +    response = self.client.get('/')
    +    for value in expected:
    +        assert value in response.data
    +
    +

    app.test_client() creates a mock http client for us.

    +
    +
    +

    Run Your Tests

    +
    +(flaskenv)$ python microblog_tests.py
    +.F..F.
    +======================================================================
    +FAIL: test_empty_listing (__main__.MicroblogTestCase)
    +----------------------------------------------------------------------
    +Traceback (most recent call last):
    +  File "microblog_tests.py", line 55, in test_empty_listing
    +    assert 'No entries here so far' in response.data
    +AssertionError
    +======================================================================
    +FAIL: test_listing (__main__.MicroblogTestCase)
    +----------------------------------------------------------------------
    +Traceback (most recent call last):
    +  File "microblog_tests.py", line 63, in test_listing
    +    assert value in response.data
    +AssertionError
    +----------------------------------------------------------------------
    +Ran 6 tests in 0.138s
    +
    +FAILED (failures=2)
    +
    +
    +
    +

    Make Them Pass

    +

    In microblog.py:

    +
    +# at the top, import
    +from flask import render_template
    +
    +# and after our last functions:
    +@app.route('/')
    +def show_entries():
    +    entries = get_all_entries()
    +    return render_template('show_entries.html', entries=entries)
    +
    +
    +(flaskenv)$ python microblog_tests.py
    +......
    +----------------------------------------------------------------------
    +Ran 6 tests in 0.100s
    +
    +OK
    +
    +
    +
    +

    Authentication

    +

    We don't want just anyone to be able to add new entries. So we want to be able +to authenticate a user.

    +

    Flask provides session concept as a way to store and access data for a given +client.

    +

    The session in Flask uses encrypted HTTP Cookies

    +

    We will require a few changes to our app configuration to use this session.

    +
    +
    +

    Additional Config

    +

    In microblog.cfg add the following lines:

    +
    +SECRET_KEY = "sooperseekritvaluenooneshouldknow"
    +USERNAME = "admin"
    +PASSWORD = "secret"
    +
    +

    SECRET_KEY is a value that will be used to encrypt the session cookie. If +it isn't set, sessions won't be created.

    +

    USERNAME and PASSWORD are our admin credentials.

    +

    obviously this is not a robust login system, do not do this in real life

    +
    +
    +

    Test Authentication

    +

    Back in microblog_tests.py add new test methods:

    +
    +# up with the imports
    +from flask import session
    +
    +# at the end of our list of test methods
    +def test_login_passes(self):
    +    with self.app.test_request_context('/'):
    +        microblog.do_login(microblog.app.config['USERNAME'],
    +                           microblog.app.config['PASSWORD'])
    +        self.assertTrue(session.get('logged_in', False))
    +
    +def test_login_fails(self):
    +    with self.app.test_request_context('/'):
    +        self.assertRaises(ValueError,
    +                          microblog.do_login,
    +                          microblog.app.config['USERNAME'],
    +                          'incorrectpassword')
    +
    +
    +
    +

    Run Your Tests

    +
    +(flaskenv)$ python microblog_tests.py
    +.....EE.
    +======================================================================
    +ERROR: test_login_fails (__main__.MicroblogTestCase)
    +----------------------------------------------------------------------
    +Traceback (most recent call last):
    +  File "microblog_tests.py", line 76, in test_login_fails
    +    microblog.do_login,
    +AttributeError: 'module' object has no attribute 'do_login'
    +======================================================================
    +ERROR: test_login_passes (__main__.MicroblogTestCase)
    +----------------------------------------------------------------------
    +Traceback (most recent call last):
    +  File "microblog_tests.py", line 69, in test_login_passes
    +    microblog.do_login(microblog.app.config['USERNAME'],
    +AttributeError: 'module' object has no attribute 'do_login'
    +----------------------------------------------------------------------
    +Ran 8 tests in 0.082s
    +
    +FAILED (errors=2)
    +
    +
    +
    +

    Make Them Pass

    +

    In microblog.py:

    +
    +# add an import
    +from flask import session
    +
    +# and a function
    +def do_login(usr, pwd):
    +    if usr != app.config['USERNAME']:
    +        raise ValueError
    +    elif pwd != app.config['PASSWORD']:
    +        raise ValueError
    +    else:
    +        session['logged_in'] = True
    +
    +

    Re-run your tests, you should now be 8 for 8

    +
    +
    +

    Creating Login/Logout

    +

    We need to have the ability to log in and out of our application.

    +
    +

    This means we need views that will

    +
      +
    • Allow a user to provide credentials and attempt to login
    • +
    • Redirect to the listing page if they succeed
    • +
    • Give appropriate feedback if they fail
    • +
    • Allow a user to log out if they are logged in
    • +
    • Redirect to the listing page after logging out
    • +
    +
    +

    Let's begin as usual by writing some tests

    +
    +
    +

    Helper Methods in Tests

    +

    We will need to log in or out a few times in our test.

    +
    +

    Add helper methods to our microblog_tests.py TestCase:

    +
    +def login(self, username, password):
    +    return self.client.post('/login', data=dict(
    +        username=username,
    +        password=password
    +    ), follow_redirects=True)
    +
    +def logout(self):
    +    return self.client.get('/logout',
    +                           follow_redirects=True)
    +
    +
    +

    Note: Methods that do not begin with test will not be run as tests.

    +
    +
    +

    Testing Login/Logout

    +

    And now the test itself:

    +
    +def test_login_logout(self):
    +    # verify we can log in
    +    response = self.login('admin', 'secret')
    +    assert 'You were logged in' in response.data
    +    # verify we can log back out
    +    response = self.logout()
    +    assert 'You were logged out' in response.data
    +    # verify that incorrect credentials get a proper message
    +    response = self.login('notadmin', 'secret')
    +    assert 'Invalid Login' in response.data
    +    response = self.login('admin', 'notsosecret')
    +    assert 'Invalid Login' in response.data
    +
    +
    +
    +

    Run Your Tests

    +

    You should now have nine tests, with one failure:

    +
    +(flaskenv)$ python microblog_tests.py
    +......F..
    +======================================================================
    +FAIL: test_login_logout (__main__.MicroblogTestCase)
    +----------------------------------------------------------------------
    +Traceback (most recent call last):
    +  File "microblog_tests.py", line 93, in test_login_logout
    +    assert 'You were logged in' in response.data
    +AssertionError
    +
    +----------------------------------------------------------------------
    +Ran 9 tests in 0.047s
    +
    +FAILED (failures=1)
    +
    +
    +
    +

    Login Form Template

    +

    Add login.html to the templates directory:

    + +
    +
    +

    Required Imports

    +

    Back in microblog.py, we need to import some symbols from flask:

    +
    +# at the top, new imports
    +from flask import request
    +from flask import redirect
    +from flask import flash
    +from flask import url_for
    +
    +

    And finally, we'll add the view functions we need to fix our tests

    +
    +
    +

    Make the Test Pass

    +
    +@app.route('/login', methods=['GET', 'POST'])
    +def login():
    +    error = None
    +    if request.method == 'POST':
    +        try:
    +            do_login(request.form['username'],
    +                     request.form['password'])
    +        except ValueError:
    +            error = "Invalid Login"
    +        else:
    +            flash('You were logged in')
    +            return redirect(url_for('show_entries'))
    +    return render_template('login.html', error=error)
    +
    +@app.route('/logout')
    +def logout():
    +    session.pop('logged_in', None)
    +    flash('You were logged out')
    +    return redirect(url_for('show_entries'))
    +
    +
    +
    +

    About Flash

    +

    flash allows sending messages to clients. We need a place to show these +messages. Add it to layout.html (along with links to log in and out)

    +
    +<h1>My Microblog</h1>       <!-- already there -->
    +<div class="metanav"> <!-- add all this -->
    +{% if not session.logged_in %}
    +  <a href="{{ url_for('login') }}">log in</a>
    +{% else %}
    +  <a href="{{ url_for('logout') }}">log_out</a>
    +{% endif %}
    +</div>
    +{% for message in get_flashed_messages() %}
    +<div class="flash">{{ message }}</div>
    +{% endfor %}
    +<div class="content"> <!-- already there -->
    +
    +
    +
    +

    Nine For Nine

    +

    At this point, we are displaying the messages we sent from the view code, so +our tests should pass:

    +
    +(flaskenv)$ python microblog_tests.py
    +.........
    +----------------------------------------------------------------------
    +Ran 9 tests in 0.064s
    +
    +OK
    +
    +
    +
    +

    Creating Entries

    +

    We still lack a way to add an entry. We need a view that will:

    +
      +
    • Verify that the user is authenticated
    • +
    • Accept incoming form data from a request
    • +
    • Get the data for title and text
    • +
    • Create a new entry in the database
    • +
    • Provide feedback to the user on success or failure
    • +
    +

    Again, first come the tests.

    +
    +
    +

    Testing Add an Entry

    +

    Add this to microblog_tests.py:

    +
    +def test_add_entries(self):
    +    self.login('admin', 'secret')
    +    response = self.client.post('/add', data=dict(
    +        title='Hello',
    +        text='This is a post'
    +    ), follow_redirects=True)
    +    assert 'No entries here so far' not in response.data
    +    assert 'Hello' in response.data
    +    assert 'This is a post' in response.data
    +
    +
    +
    +

    Run Your Tests

    +

    Verify that our test fails as expected:

    +
    +(flaskenv)$ python microblog_tests.py
    +F.........
    +======================================================================
    +FAIL: test_add_entries (__main__.MicroblogTestCase)
    +----------------------------------------------------------------------
    +Traceback (most recent call last):
    +  File "microblog_tests.py", line 110, in test_add_entries
    +    assert 'Hello' in response.data
    +AssertionError
    +
    +----------------------------------------------------------------------
    +Ran 10 tests in 0.071s
    +
    +FAILED (failures=1)
    +
    +
    +
    +

    Make Them Pass

    +

    We have all we need to write entries, all we lack is an endpoint (in +microblog.py):

    +
    +# add an import
    +from flask import abort
    +
    +@app.route('/add', methods=['POST'])
    +def add_entry():
    +    if not session.get('logged_in'):
    +        abort(401)
    +    try:
    +        write_entry(request.form['title'], request.form['text'])
    +        flash('New entry was successfully posted')
    +    except sqlite3.Error as e:
    +        flash('There was an error: %s' % e.args[0])
    +    return redirect(url_for('show_entries'))
    +
    +
    +
    +

    And...?

    +
    +(flaskenv)$ python microblog_tests.py
    +..........
    +----------------------------------------------------------------------
    +Ran 10 tests in 0.075s
    +
    +OK
    +
    +

    Hooray!

    +
    +
    +

    Where do Entries Come From

    +

    Finally, we're almost done. We can log in and log out. We can add entries and +view them. But look at that last view. Do you see a call to +render_template in there at all?

    +

    There isn't one. That's because that view is never meant to be be visible. +Look carefully at the logic. What happens?

    +

    So where do the form values come from?

    +

    Let's add a form to the main view. Open show_entries.html

    +
    +
    +

    Provide a Form

    +
    +{% block body %}  <!-- already there -->
    +{% if session.logged_in %}
    +<form action="{{ url_for('add_entry') }}" method="POST" class="add_entry">
    +  <div class="field">
    +    <label for="title">Title</label>
    +    <input type="text" size="30" name="title" id="title"/>
    +  </div>
    +  <div class="field">
    +    <label for="text">Text</label>
    +    <textarea name="text" id="text" rows="5" cols="80"></textarea>
    +  </div>
    +  <div class="control_row">
    +    <input type="submit" value="Share" name="Share"/>
    +  </div>
    +</form>
    +{% endif %}
    +<h2>Posts</h2>  <!-- already there -->
    +
    +
    +
    +

    All Done

    +

    Okay. That's it. We've got an app all written.

    +

    So far, we haven't actually touched our browsers at all, but we have +reasonable certainty that this works because of our tests. Let's try it.

    +

    In the terminal where you've been running tests, run our microblog app:

    +
    +(flaskenv)$ python microblog.py
    +* Running on http://127.0.0.1:5000/
    +* Restarting with reloader
    +
    +
    +
    +

    The Big Payoff

    +

    Now load http://localhost:5000/ in your browser and enjoy your reward.

    +
    +
    +

    Making It Pretty

    +

    What we've got here is pretty ugly.

    +

    If you've fallen behind, or want to start fresh, you can find the finished +microblog directory in the class resources.

    +

    In that directory inside the static directory you will find +styles.css. Open it in your editor. It contains basic CSS for this app.

    +

    We'll need to include this file in our layout.html.

    +
    +
    +

    Static Files

    +

    Like page templates, Flask locates static resources like images, css and +javascript by looking for a static directory relative to the app root.

    +

    You can use the special url endpoint static to build urls that point here. +Open layout.html and add the following:

    +
    +<head>  <!-- you only need to add the <link> below -->
    +  <title>Flaskr</title>
    +  <link href="{{ url_for('static', filename='style.css') }}" rel="stylesheet" type="text/css">
    +</head>
    +
    +
    +
    +

    Going Further

    +

    It's not too hard to see ways you could improve this.

    +
      +
    • For my part, I made a version with styles from Bootstrap.js.
    • +
    • You could limit the number of posts shown on the front page and add +pagination.
    • +
    • You could add created date to the entry schema and provide archived views +for older posts.
    • +
    • You could add the ability to edit existing posts (and add a modified date to +the schema)
    • +
    • You could support multi-user blogging by providing a more complex +authentication system and some more views.
    • +
    +
    +
    +

    Wrap-Up

    +

    For educational purposes you might try taking a look at the source code for +Flask and Werkzeug. Neither is too large a package.

    +

    In particular seeing how Werkzeug sets up a Request and Response--and how +these relate to the WSGI specification--can be very enlightening.

    +

    See You Tomorrow!

    +
    +
    + + diff --git a/presentations/session07.html b/presentations/session07.html new file mode 100644 index 00000000..eb82d757 --- /dev/null +++ b/presentations/session07.html @@ -0,0 +1,1182 @@ + + + + + + + +Python Web Programming + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    Python Web Programming

    + +img/django-pony.png +

    Session 7: Introducing Django

    +

    Wherein we become 'perfectionists with deadlines'

    +

    image: http://djangopony.com/

    + +
    +
    +

    Full Stack Framework

    +

    Django comes with:

    +
      +
    • Persistence via the Django ORM
    • +
    • CRUD content editing via the automatic Django Admin
    • +
    • URL Mapping via urlpatterns
    • +
    • Templating via the Django Template Language
    • +
    • Caching with levels of configurability
    • +
    • Internationalization via i18n hooks
    • +
    • Form rendering and handling
    • +
    • User authentication and authorization
    • +
    +

    Pretty much everything you need to make a solid website quickly

    +
    +
    +

    What Sets it Apart?

    +

    Lots of frameworks offer some of these features, if not all.

    +

    What is Django's killer feature

    +

    The Django Admin

    +
    +
    +

    The Django Admin

    +

    Works in concert with the Django ORM to provide automatic CRUD functionality

    +

    You write the models, it provides the UI

    +

    Really

    +
    +
    +

    The Pareto Principle

    +

    The Django Admin is a great example of the Pareto Priciple, a.k.a. the 80/20 +rule:

    +

    80% of the problems can be solved by 20% of the effort

    +

    The converse also holds true:

    +

    Fixing the last 20% of the problems will take the remaining 80% of the +effort.

    +
    +
    +

    Other Django Advantages

    +

    Clearly the most popular full-stack Python web framework at this time

    +

    Popularity translates into:

    +
      +
    • Active, present community
    • +
    • Plethora of good examples to be found online
    • +
    • Rich ecosystem of apps (encapsulated add-on functionality)
    • +
    +

    Jobs

    +
    +
    +

    Active Development

    +

    Django releases in the last 12+ months:

    +
      +
    • 1.5.1 (March 2013)
    • +
    • 1.5 (February 2013)
    • +
    • 1.4.5 (February 2013)
    • +
    • 1.3.7 (February 2013)
    • +
    • 1.4.3 (December 2012)
    • +
    • 1.3.5 (December 2012)
    • +
    • 1.4.2 (November 2012)
    • +
    • 1.3.3 (August 2012)
    • +
    • 1.4.1 (July 2012)
    • +
    • 1.3.2 (July 2012)
    • +
    • 1.4 (March 2012)
    • +
    +
    +
    +

    Great Documentation

    +

    Thorough, readable, and discoverable.

    +

    Led the way to better documentation for all Python

    +

    Read The Docs - built in connection with +Django, sponsored by the Django Software Foundation.

    +

    Write documentation as part of your python package, and render new versions of +that documentation for every commit

    +

    this is awesome

    +
    +
    +

    Django Organization

    +

    A Django project represents a whole website:

    +
      +
    • global configuration settings
    • +
    • inclusion points for additional functionality
    • +
    • master list of URL endpoints
    • +
    +

    A Django app encapsulates a unit of functionality:

    +
      +
    • A blog section
    • +
    • A discussion forum
    • +
    • A content tagging system
    • +
    +
    +
    +

    Apps Make Up a Project

    +

    One project can (and likely will) consist of many apps

    +
    +
    +

    Practice Safe Development

    +

    We'll install Django and any other packages we use with it in a virtualenv.

    +

    This will ensure that it is isolated from everything else we do in class (and +vice versa)

    +
    +

    Remember the basic format for creating a virtualenv:

    +
    +$ python virtualenv.py [options] <ENV>
    +<or>
    +$ virtualenv [options] <ENV>
    +
    +
    +
    +
    +

    Set Up a VirtualEnv

    +

    Start by creating your virtualenv:

    +
    +$ python virtualenv.py djangoenv
    +<or>
    +$ virtualenv djangoenv
    +...
    +
    +
    +

    Then, activate it:

    +
    +$ source djangoenv/bin/activate
    +<or>
    +C:\> djangoenv\Scripts\activate
    +
    +
    +
    +
    +

    Install Django

    +

    Finally, install Django 1.5.1 using setuptools or pip:

    +
    +(djangoenv)$ pip install Django==1.5.1
    +Downloading/unpacking Django==1.5.1
    +  Downloading Django-1.5.1.tar.gz (8.0MB): 8.0MB downloaded
    +  Running setup.py egg_info for package Django
    +     changing mode of /path/to/djangoenv/bin/django-admin.py to 755
    +Successfully installed Django
    +Cleaning up...
    +(djangoenv)$
    +
    +
    +
    +

    Starting a Project

    +

    Everything in Django stems from the project

    +

    To get started learning, we'll create one

    +

    We'll use a script installed by Django, django-admin.py:

    +
    +(djangoenv)$ django-admin.py startproject mysite
    +
    +

    This will create a folder called 'mysite'. Let's take a look at it:

    +
    +
    +

    Project Layout

    +

    The folder created by django-admin.py contains the following structure:

    +
    +mysite/
    +    manage.py
    +    mysite/
    +        __init__.py
    +        settings.py
    +        urls.py
    +        wsgi.py
    +
    +

    If what you see doesn't match that, you're using an older version of Django. +Make sure you've installed 1.5.1.

    +
    +
    +

    What Got Created

    +
      +
    • outer *mysite* folder: this is just a container and can be renamed or +moved at will
    • +
    • inner *mysite* folder: this is your project directory. It should not be +renamed.
    • +
    • __init__.py: magic file that makes mysite a python package.
    • +
    • settings.py: file which holds configuration for your project, more soon.
    • +
    • urls.py: file which holds top-level URL configuration for your project, +more soon.
    • +
    • wsgi.py: binds a wsgi application created from your project to the +symbol application
    • +
    • manage.py: a management control script.
    • +
    +
    +
    +

    Django and WSGI

    +

    If you open wsgi.py, you'll see the following:

    +
    +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
    +
    +from django.core.wsgi import get_wsgi_application
    +application = get_wsgi_application()
    +
    +
    +

    Django is pointing the python environment at your settings file and then +getting a wsgi application:

    +
    +def get_wsgi_application():
    +    return WSGIHandler()
    +
    +
    +
    +
    +

    The Django WSGIHandler

    +
    +class WSGIHandler(base.BaseHandler):
    +    #...
    +    def __call__(self, environ, start_response):
    +        if self._request_middleware is None:
    +            #... set up django middleware
    +        #...
    +        try:
    +            request = self.request_class(environ)
    +        except UnicodeDecodeError:
    +            #...
    +            response = http.HttpResponseBadRequest()
    +        else:
    +            response = self.get_response(request)
    +        #...
    +        try:
    +            status_text = STATUS_CODE_TEXT[response.status_code]
    +        except KeyError:
    +            status_text = 'UNKNOWN STATUS CODE'
    +        status = '%s %s' % (response.status_code, status_text)
    +        response_headers = [(str(k), str(v)) for k, v in response.items()]
    +        for c in response.cookies.values():
    +            response_headers.append((str('Set-Cookie'), str(c.output(header=''))))
    +        start_response(force_str(status), response_headers)
    +        return response
    +
    +
    +
    +

    django-admin.py and manage.py

    +

    django-admin.py provides a hook for administrative tasks and abilities:

    +
      +
    • creating a new project or app
    • +
    • running the development server
    • +
    • executing tests
    • +
    • entering a python interpreter
    • +
    • entering a database shell session with your database
    • +
    • much much more (run django-admin.py without an argument)
    • +
    +

    manage.py wraps this functionality, adding the full environment of your +project.

    +
    +
    +

    Development Server

    +

    At this point, you should be ready to use the development server:

    +
    +(djangoenv)$ cd mysite
    +(djangoenv)$ python manage.py runserver
    +...
    +
    +

    Load http://localhost:8000 in your browser.

    +
    +
    +

    A Blank Slate

    +

    You should see this:

    +img/django-start.png +

    Do you?

    +
    +
    +

    Connecting A Database

    +

    Django comes with its own ORM (Object-Relational Mapper)

    +

    The first step in working with Django is to connect it to your database (this +is set in settings.py)

    +
    +DATABASES = {
    +    'default': {
    +        'ENGINE': 'django.db.backends.<your_db_backend>',
    +        'NAME': '<your_db_name>',
    +        'USER': '<your_db_user>',
    +        'PASSWORD': '<your_db_password>',
    +        'HOST': '<not_needed_on_localhost>',
    +        'PORT': '<not_needed_on_localhost>',
    +    }
    +}
    +
    +
    +
    +

    A Quick Word about Databases

    +

    Sqlite3 is not a production-capable database. Do not attempt to use it as +such.

    +

    Do not start a real project using sqlite3, expecting to move 'when you go to +production'.

    +

    That being said, proper database administration is out-of-scope for this +class.

    +

    So we'll be using sqlite3 for todays work.

    +
    +
    +

    Your Database Settings

    +

    Edit settings.py in your project package to match:

    +
    +DATABASES = {
    +    'default': {
    +        'ENGINE': 'django.db.backends.sqlite3',
    +        'NAME': 'mysite.db',
    +        # The following settings are not used with sqlite3:
    +        'USER': '',
    +        'PASSWORD': '',
    +        'HOST': '',
    +        'PORT': '',
    +    }
    +}
    +
    +
    +
    +

    Django and Your Database

    +

    Django interfaces with the database using an ORM (Object Relational Mapping)

    +

    You write Python models describing the object that make up your system.

    +

    The ORM handles converting data from these objects into SQL statements (and +back)

    +

    We'll learn much more about this in a bit

    +
    +
    +

    Core Django Apps

    +

    Django already includes some apps for you.

    +
    +

    They're in settings.py in the INSTALLED_APPS setting:

    +
    +INSTALLED_APPS = (
    +    'django.contrib.auth',
    +    'django.contrib.contenttypes',
    +    'django.contrib.sessions',
    +    'django.contrib.sites',
    +    'django.contrib.messages',
    +    'django.contrib.staticfiles',
    +    # Uncomment the next line to enable the admin:
    +    # 'django.contrib.admin',
    +    # Uncomment the next line to enable admin documentation:
    +    # 'django.contrib.admindocs',
    +)
    +
    +
    +
    +
    +

    Creating the Database

    +

    These apps define models of their own, tables must be created.

    +
    +

    You make them by running the syncdb management command:

    +
    +(djangoenv)$ python manage.py syncdb
    +Creating tables ...
    +Creating table auth_permission
    +Creating table auth_group_permissions
    +Creating table auth_group
    +...
    +You just installed Django's auth system, ...
    +Would you like to create one now? (yes/no):
    +
    +
    +

    Add your first user at this prompt (remember the password)

    +
    +
    +

    Our Class App

    +

    We are going to build an app to add to our project. To start with our app +will:

    +
      +
    • allow a user to create and edit blog posts
    • +
    • allow a user to define categories
    • +
    • allow a user to place a post in one or more categories
    • +
    +

    As stated above, an app represents a unit within a system, the project. We +have a project, we need to create an app

    +
    +
    +

    Create an App

    +

    This is accomplished using manage.py.

    +

    In your terminal, make sure you are in the outer mysite directory, where the +file manage.py is located. Then:

    +
    +(djangoenv)$ python manage.py startapp myblog
    +
    +
    +
    +

    What is Created

    +

    This should leave you with the following structure:

    +
    +mysite/
    +    manage.py
    +    mysite/
    +        ...
    +    myblog/
    +        __init__.py
    +        models.py
    +        tests.py
    +        views.py
    +
    +

    We'll start by defining the main Python class in our blog system, a Post.

    +
    +
    +

    Django Models

    +

    Any Python class in Django that is meant to be persisted must inherit from +the Django Model class.

    +

    This base class provides all the functionality that connects the Python code +you write to your database.

    +

    You can override methods from the base Model class to alter how this works +or write new methods to add functionality.

    +

    Learn more about models

    +
    +
    +

    Our Post Model

    +

    Open the models.py file created in our myblog package. Add the +following:

    +
    +from django.db import models
    +from django.contrib.auth.models import User
    +
    +class Post(models.Model):
    +    title = models.CharField(max_length=128)
    +    text = models.TextField(blank=True)
    +    author = models.ForeignKey(User)
    +    created_date = models.DateTimeField(auto_now_add=True)
    +    modified_date = models.DateTimeField(auto_now=True)
    +    published_date = models.DateTimeField(blank=True, null=True)
    +
    +
    +
    +

    Model Fields

    +

    We've created a subclass of the Django Model class and added a bunch of +attributes.

    +
      +
    • These attributes are all instances of Field classes defined in Django
    • +
    • Field attributes on a model map to columns in a database table
    • +
    • The arguments you provide to each Field customize how it works
        +
      • This means both how it operates in Django and how it is defined in SQL
      • +
      +
    • +
    • There are arguments shared by all Field types
    • +
    • There are also arguments specific to individual types
    • +
    +

    You can read much more about Model Fields and options

    +
    +
    +

    Field Details

    +

    There are some features of our fields worth mentioning in specific:

    +

    Notice we have no field that is designated as the primary key

    +
      +
    • You can make a field the primary key by adding primary_key=True in the +arguments
    • +
    • If you do not, Django will automatically create one. This field is always +called id
    • +
    • No matter what the primary key field is called, its value is always +available on a model instance as pk
    • +
    +
    +
    +

    Field Details

    +
    +title = models.CharField(max_length=128)
    +
    +

    The required max_length argument is specific to CharField fields.

    +

    It affects both the Python and SQL behavior of a field.

    +

    In python, it is used to validate supplied values during model validation

    +

    In SQL it is used in the column definition: VARCHAR(128)

    +
    +
    +

    Field Details

    +
    +text = models.TextField(blank=True)
    +# ...
    +published_date = models.DateTimeField(blank=True, null=True)
    +
    +

    The argument blank is shared across all field types. The default is +False

    +

    This argument affects only the Python behavior of a field, determining if the +field is required

    +

    The related null argument affects the SQL definition of a field: is the +column NULL or NOT NULL

    +
    +
    +

    Field Details

    +
    +created_date = models.DateTimeField(auto_now_add=True)
    +modified_date = models.DateTimeField(auto_now=True)
    +
    +

    auto_now_add is available on all date and time fields. It sets the value +of the field to now when an instance is first saved.

    +

    auto_now is similar, but sets the value anew each time an instance is +saved.

    +

    Setting either of these will cause the editable attribute of a field to be +set to False.

    +
    +
    +

    Field Details

    +
    +author = models.ForeignKey(User)
    +
    +

    Django also models SQL relationships as specific field types.

    +

    The required positional argument is the class of the related Model.

    +

    By default, the reverse relation is implemented as the attribute +<fieldname>_set.

    +

    You can override this by providing the related_name argument.

    +
    +
    +

    Our Category Model

    +

    Our app specification says that a user should be able to place a post in one +or more categories.

    +

    We'll create a second Model to represent this. It should:

    +
      +
    • Have a unique name
    • +
    • Have a description
    • +
    • Be in a many-to-many relationship with our Post model
    • +
    • Instances of Category should have a posts attribute that provides +access to all posts in that category
    • +
    • Instances of Post should have a categories attribute that provides +access to all the categories it has been placed in.
    • +
    +
    +
    +

    My Solution

    +

    Add this new Model class to models.py.

    +

    https://docs.djangoproject.com/en/1.5/ref/models/fields/

    +
    +

    Here's my model code:

    +
    +class Category(models.Model):
    +    name = models.CharField(max_length=128)
    +    description = models.TextField(blank=True)
    +    posts = models.ManyToManyField(Post,
    +        blank=True,
    +        null=True,
    +        related_name='categories'
    +    )
    +
    +
    +
    +
    +

    Hooking it Up

    +

    In order to use our new models, we need Django to know about our app

    +

    This is accomplished by configuration in the settings.py file.

    +

    Open that file now, in your editor, and find the INSTALLED_APPS setting.

    +
    +
    +

    Installing Apps

    +

    You extend Django functionality by installing apps. This is pretty simple:

    +
    +INSTALLED_APPS = (
    +    'django.contrib.auth',
    +    'django.contrib.contenttypes',
    +    'django.contrib.sessions',
    +    'django.contrib.sites',
    +    'django.contrib.messages',
    +    'django.contrib.staticfiles',
    +    # Uncomment the next line to enable the admin:
    +    # 'django.contrib.admin',
    +    # Uncomment the next line to enable admin documentation:
    +    # 'django.contrib.admindocs',
    +    'myblog', # <- YOU ADD THIS PART
    +)
    +
    +
    +
    +

    Setting Up the Database

    +

    You know what the next step will be:

    +
    +(djangoenv)$ python manage.py syncdb
    +Creating tables ...
    +Creating table myblog_post
    +Creating table myblog_category_posts
    +Creating table myblog_category
    +Installing custom SQL ...
    +Installing indexes ...
    +Installed 0 object(s) from 0 fixture(s)
    +
    +

    Django has now created tables for our app. How many did it create?

    +
    +
    +

    ORM and SQL

    +

    That third table is the SQL mechanism by which a Post is related to a +Category.

    +

    The ORM shields us, as Python developers, from SQL intricacies.

    +

    We don't need to know that a join table is needed for a ManyToMany relation.

    +

    This is but one of the ways that the ORM helps us. More soon.

    +
    +
    +

    A Word About Development

    +

    These models we've created are not going to change often. This is unusual for +a development cycle.

    +

    The syncdb management command only creates tables that do not yet exist. +It does not update tables.

    +

    The sqlclear <appname> command will print the DROP TABLE statements to +remove the tables for your app.

    +

    Or sql <appname> will show the CREATE TABLE statements, and you can work +out the differences and update manually.

    +
    +
    +

    ACK!!!

    +

    That doesn't sound very nice, does it?

    +

    Luckily, there is an app available for Django that helps with this: South

    +

    South allows you to incrementally update your database in a simplified way.

    +

    South supports forward, backward and data migrations.

    +

    We won't have time to cover it in this class, but know it's there.

    +
    +
    +

    Break Time

    +

    Let's take a break here and return in 10 minutes.

    +
    +
    +

    The Django Shell

    +

    Django provides a management command shell:

    +
      +
    • Shares the same sys.path as your project, so all installed python +packages are present.
    • +
    • Imports the settings.py file from your project, and so shares all +installed apps and other settings.
    • +
    • Handles connections to your database, so you can interact with live data +directly.
    • +
    +

    Let's explore the Model Instance API directly using this shell:

    +
    +(djangoenv)$ python manage.py shell
    +
    +
    +
    +

    Creating Instances

    +

    Instances of our model can be created by simple instantiation:

    +
    +>>> from myblog.models import Post
    +>>> p1 = Post(title="My first post",
    +...           text="This is the first post I've written")
    +>>> p1
    +<Post: Post object>
    +
    +
    +

    We can also validate that our new object is okay before we try to save it:

    +
    +>>> p1.full_clean()
    +Traceback (most recent call last):
    +  ...
    +ValidationError: {'author': [u'This field cannot be null.']}
    +
    +
    +
    +
    +

    Django Model Managers

    +

    We have to hook our Post to an author, which must be a User.

    +

    To do this, we need to have an instance of the User class.

    +

    We can use the User model manager to run table-level operations like +SELECT:

    +

    All Django models have a manager. By default it is accessed through the +objects class attribute.

    +
    +
    +

    Making a ForeignKey Relation

    +

    Let's use the manager to get an instance of the User class:

    +
    +>>> from django.contrib.auth.models import User
    +>>> all_users = User.objects.all()
    +>>> all_users
    +[<User: cewing>]
    +>>> u1 = all_users[0]
    +>>> p1.author = u1
    +
    +
    +

    And now our instance should validate properly:

    +
    +>>> p1.full_clean()
    +>>>
    +
    +
    +
    +
    +

    Saving New Objects

    +

    Our model has three date fields, two of which are supposed to be +auto-populated:

    +
    +>>> print(p1.created_date)
    +None
    +>>> print(p1.modified_date)
    +None
    +
    +
    +

    When we save our post, these fields will get values assigned:

    +
    +>>> p1.save()
    +>>> p1.created_date
    +datetime.datetime(2013, 7, 26, 20, 2, 38, 104217, tzinfo=<UTC>)
    +>>> p1.modified_date
    +datetime.datetime(2013, 7, 26, 20, 2, 38, 104826, tzinfo=<UTC>)
    +
    +
    +
    +
    +

    Updating An Instance

    +

    Models operate much like 'normal' python objects.

    +
    +

    To change the value of a field, simply set the instance attribute to a new +value. Call save() to persist the change:

    +
    +>>> p1.title = p1.title + " (updated)"
    +>>> p1.save()
    +>>> p1.title
    +'My first post (updated)'
    +
    +
    +
    +
    +

    Create a Few Posts

    +

    Let's create a few more posts so we can explore the Django model manager query +API:

    +
    +>>> p2 = Post(title="Another post",
    +...           text="The second one created",
    +...           author=u1).save()
    +>>> p3 = Post(title="The third one",
    +...           text="With the word 'heffalump'",
    +...           author=u1).save()
    +>>> p4 = Post(title="Posters are great decoration",
    +...           text="When you are a poor college student",
    +...           author=u1).save()
    +>>> Post.objects.count()
    +4
    +
    +
    +
    +

    The Django Query API

    +

    The manager on each model class supports a full-featured query API.

    +

    API methods take keyword arguments, where the keywords are special +constructions combining field names with field lookups:

    +
      +
    • title__exact="The exact title"
    • +
    • text__contains="decoration"
    • +
    • id__in=range(1,4)
    • +
    • published_date__lte=datetime.datetime.now()
    • +
    +

    Each keyword argument generates an SQL clause.

    +
    +
    +

    QuerySets

    +

    API methods can be divided into two basic groups: methods that return +QuerySets and those that do not.

    +

    The former may be chained without hitting the database:

    +
    +>>> a = Post.objects.all() #<-- no query yet
    +>>> b = a.filter(title__icontains="post") #<-- not yet
    +>>> c = b.exclude(text__contains="created") #<-- nope
    +>>> [(p.title, p.text) for p in c] #<-- This will issue the query
    +
    +
    +

    Conversely, the latter will issue an SQL query when executed.

    +
    +>>> a.count() # immediately executes an SQL query
    +
    +
    +
    +
    +

    QuerySets and SQL

    +

    If you are curious, you can see the SQL that a given QuerySet will use:

    +
    +>>> print(c.query)
    +SELECT "myblog_post"."id", "myblog_post"."title",
    +    "myblog_post"."text", "myblog_post"."author_id",
    +    "myblog_post"."created_date", "myblog_post"."modified_date",
    +    "myblog_post"."published_date"
    +FROM "myblog_post"
    +WHERE ("myblog_post"."title" LIKE %post% ESCAPE '\'
    +       AND NOT ("myblog_post"."text" LIKE %created% ESCAPE '\' )
    +)
    +
    +

    The exact SQL will vary automatically depending on the database you are using.

    +
    +
    +

    Exploring the QuerySet API

    +

    See https://docs.djangoproject.com/en/1.5/ref/models/querysets

    +
    +>>> [p.pk for p in Post.objects.all().order_by('created_date')]
    +[1, 2, 3, 4]
    +>>> [p.pk for p in Post.objects.all().order_by('-created_date')]
    +[4, 3, 2, 1]
    +>>> [p.pk for p in Post.objects.filter(title__contains='post')]
    +[1, 2, 4]
    +>>> [p.pk for p in Post.objects.exclude(title__contains='post')]
    +[3]
    +>>> qs = Post.objects.exclude(title__contains='post')
    +>>> qs = qs.exclude(id__exact=3)
    +>>> [p.pk for p in qs]
    +[]
    +>>> qs = Post.objects.exclude(title__contains='post', id__exact=3)
    +>>> [p.pk for p in qs]
    +[1, 2, 3, 4]
    +
    +
    +
    +

    Updating via QuerySets

    +

    You can update all selected objects at the same time.

    +

    Changes are persisted without needing to call save.

    +
    +>>> qs = Post.objects.all()
    +>>> [p.published_date for p in qs]
    +[None, None, None, None]
    +>>> from datetime import datetime
    +>>> from django.utils.timezone import UTC
    +>>> utc = UTC()
    +>>> now = datetime.now(utc)
    +>>> qs.update(published_date=now)
    +4
    +>>> [p.published_date for p in qs]
    +[datetime.datetime(2013, 7, 27, 1, 20, 30, 505307, tzinfo=<UTC>),
    + ...]
    +
    +
    +
    +

    Testing Our Models

    +

    As with any project, we want to test our work. Django provides a testing +framework to allow this.

    +

    Django supports both unit tests and doctests. I strongly suggest using +unit tests.

    +

    You add tests for your app to the file tests.py, which should be at the +same package level as models.py.

    +

    Locate and open this file in your editor.

    +
    +
    +

    Django TestCase Classes

    +

    SimpleTestCase is for basic unit testing with no ORM requirements

    +

    TransactionTestCase is useful if you need to test transactional +actions (commit and rollback) in the ORM

    +

    TestCase is used when you require ORM access and a test client

    +

    LiveServerTestCase launches the django server during test runs for +front-end acceptance tests.

    +
    +
    +

    Testing Data

    +

    Sometimes testing requires base data to be present. We need a User for ours.

    +

    Django provides fixtures to handle this need.

    +

    Create a directory called fixtures inside your myblog app directory.

    +

    Copy the file myblog_test_fixture.json from the class resources into this +directory, it contains a user for us.

    +
    +
    +

    Setting Up Our Tests

    +

    Now that we have a fixture, we need to instruct our tests to use it.

    +
    +

    Edit tests.py (which comes with one test already) to look like this:

    +
    +from django.test import TestCase
    +from django.contrib.auth.models import User
    +
    +class PostTestCase(TestCase):
    +    fixtures = ['myblog_test_fixture.json', ]
    +
    +    def setUp(self):
    +        self.user = User.objects.get(pk=1)
    +
    +
    +
    +
    +

    Our First Enhancement

    +

    Look at the way our Post represents itself in the Django shell:

    +
    +>>> [p for p in Post.objects.all()]
    +[<Post: Post object>, <Post: Post object>,
    + <Post: Post object>, <Post: Post object>]
    +
    +

    Wouldn't it be nice if the posts showed their titles instead?

    +

    In Django, the __unicode__ method is used to determine how a Model +instance represents itself.

    +

    Then, calling unicode(instance) gives the desired result.

    +
    +
    +

    Write The Test

    +

    Let's write a test that demonstrates our desired outcome:

    +
    +# add this import at the top
    +from myblog.models import Post
    +
    +# and this test method to the PostTestCase
    +test_unicode(self):
    +    expected = "This is a title"
    +    p1 = Post(title=expected)
    +    actual = unicode(p1)
    +    self.assertEqual(expected, actual)
    +
    +
    +
    +

    Run The Test

    +

    To run tests, use the test management command

    +

    Without arguments, it will run all TestCases it finds in all installed apps

    +

    You can pass the name of a single app to focus on those tests

    +

    Quit your Django shell and in your terminal run the test we wrote:

    +
    +(djangoenv)$ python manage.py test myblog
    +
    +
    +
    +

    The Result

    +

    We have yet to implement this enhancement, so our test should fail:

    +
    +Creating test database for alias 'default'...
    +F
    +======================================================================
    +FAIL: test_unicode (myblog.tests.PostTestCase)
    +----------------------------------------------------------------------
    +Traceback (most recent call last):
    +  File "/Users/cewing/projects/training/uw_pce/training.python_web/scripts/session07/mysite/myblog/tests.py", line 15, in test_unicode
    +    self.assertEqual(expected, actual)
    +AssertionError: 'This is a title' != u'Post object'
    +
    +----------------------------------------------------------------------
    +Ran 1 test in 0.007s
    +
    +FAILED (failures=1)
    +Destroying test database for alias 'default'...
    +
    +
    +
    +

    Make it Pass

    +

    Let's add an appropriate __unicode__ method to our Post class

    +

    It will take self as its only argument

    +

    And it should return its own title as the result

    +

    Go ahead and take a stab at this in models.py

    +
    +class Post(models.Model):
    +    #...
    +
    +    def __unicode__(self):
    +        return self.title
    +
    +
    +
    +

    Did It Work?

    +

    Re-run the tests to see:

    +
    +(djangoenv)$ python manage.py test myblog
    +Creating test database for alias 'default'...
    +.
    +----------------------------------------------------------------------
    +Ran 1 test in 0.007s
    +
    +OK
    +Destroying test database for alias 'default'...
    +
    +

    YIPEEEE!

    +
    +
    +

    Repeat the Exercise

    +

    Although we haven't played with it yet, our Category class could use the same +treatment, using the name field.

    +

    Add a CategoryTestCase to tests.py with one test that shows this.

    +

    Run the tests, demonstrating that you have two tests and one failure

    +

    Add the appropriate method to the appropriate class in models.py and +re-run the tests.

    +
    +
    +

    My Test

    +
    +# another import
    +from myblog.models import Category
    +
    +# and the test case and test
    +class CategoryTestCase(TestCase):
    +
    +    def test_unicode(self):
    +        expected = "A Category"
    +        c1 = Category(name=expected)
    +        actual = unicode(c1)
    +        self.assertEqual(expected, actual)
    +
    +
    +
    +

    My Method

    +
    +class Category(models.Model):
    +    #...
    +
    +    def __unicode__(self):
    +        return self.name
    +
    +
    +
    +

    What to Test

    +

    In any framework, the question arises of what to test. Much of your app's +functionality is provided by framework tools. Does that need testing?

    +

    I usually don't write tests covering features provided directly by the +framework.

    +

    I do write tests for functionality I add, and for places where I make +changes to how the default functionality works.

    +

    This is largely a matter of style and taste (and of budget).

    +
    +
    +

    More Later

    +

    We've only begun to test our blog app.

    +

    We'll be adding many more tests later

    +

    In between, you might want to take a look at the Django testing documentation:

    +

    https://docs.djangoproject.com/en/1.5/topics/testing/

    +
    +
    +

    The Django Admin

    +

    As I stated earlier, the Django admin is really Django's killer feature

    +

    To demonstrate this, we are going to set up the admin for our blog

    +
    +
    +

    Install the Admin

    +

    The Django Admin is, itself, an app. It is not installed by default.

    +

    Open the settings.py file from our mysite project package and +uncomment the admin bit:

    +
    +INSTALLED_APPS = (
    +    # ...
    +    'django.contrib.staticfiles',
    +    # Uncomment the next line to enable the admin:
    +    'django.contrib.admin', # <- THIS LINE HERE
    +    # Uncomment the next line to enable admin documentation:
    +    # 'django.contrib.admindocs',
    +    'myblog',
    +)
    +
    +
    +
    +

    Add the Admin Tables

    +

    As you might expect, enabling the admin alters our DB. We'll need to run +the syncdb management command:

    +
    +(djangoenv)$ python manage.py syncdb
    +Creating tables ...
    +Creating table django_admin_log
    +Installing custom SQL ...
    +Installing indexes ...
    +Installed 0 object(s) from 0 fixture(s)
    +
    +

    All set. Now let's make it visitable

    +
    +
    +

    Django URL Resolution

    +

    Django too has a system for routing URLs to code: the urlconf.

    +
      +
    • A urlconf is a list of calls to the django.conf.urls.url function
    • +
    • This function takes:
        +
      • a regexp rule, representing the URL
      • +
      • a callable to be invoked (or a name identifying one)
      • +
      • an optional name kwarg, used to reverse the URL
      • +
      • other optional arguments we will skip for now
      • +
      +
    • +
    • The function returns a resolver that matches the request path to the +callable
    • +
    • django will load the urlconf named urlpatterns that it finds in the file +named in settings.ROOT_URLCONF.
    • +
    +
    +
    +

    Including URLs

    +

    Many Django add-on apps, like the Django Admin, come with their own urlconf

    +

    It is standard to include these urlconfs by rooting them at some path in your +site.

    +
    +

    You can do this by using the include function as the callable in a +url call:

    +
    +url(r'^forum/', include('random.forum.app.urls'))
    +
    +
    +
    +
    +

    Including the Admin

    +

    We can use this to add all the URLs provided by the Django admin in one +stroke.

    +
    +

    Uncomment three lines in urls.py:

    +
    +from django.contrib import admin #<- Uncomment these two
    +admin.autodiscover()             #<-
    +
    +urlpatterns = patterns('',
    +
    +    # Uncomment the next line to enable the admin:
    +    url(r'^admin/', include(admin.site.urls)), #<- and this
    +)
    +
    +
    +
    +
    +

    Using the Development Server

    +

    We can now view the admin. We'll use the Django development server.

    +

    In your terminal, use the runserver management command to start the +development server:

    +
    +(djangoenv)$ python manage.py runserver
    +Validating models...
    +
    +0 errors found
    +Django version 1.4.3, using settings 'mysite.settings'
    +Development server is running at http://127.0.0.1:8000/
    +Quit the server with CONTROL-C.
    +
    +
    +
    +

    Viewing the Admin

    +

    Load http://localhost:8000/admin/. You should see this:

    +img/django-admin-login.png +

    Login with the name and password you created before.

    +
    +
    +

    The Admin Index

    +

    The index will provide a list of all the installed apps and each model +registered. You should see this:

    +img/admin_index.png +

    Click on Users. Find yourself? Edit yourself, but don't uncheck +superuser.

    +
    +
    +

    Add Posts to the Admin

    +

    Okay, let's add our app models to the admin.

    +

    Add a new file to the myblog app package: admin.py. Open it and add +the following:

    +
    +from django.contrib import admin
    +from myblog.models import Post, Category
    +
    +admin.site.register(Post)
    +admin.site.register(Category)
    +
    +

    Restart your Development server and reload the admin index

    +
    +
    +

    Play A Bit

    +

    Visit the admin page for Posts. You should see the posts we created earlier in +the Django shell.

    +

    Look at the listing of Posts. Because of our __unicode__ method we see a +nice title.

    +

    Are there other fields you'd like to see listed?

    +

    Click on a Post, note what is and is not shown.

    +

    Poke at the Category admin a bit too.

    +
    +
    +

    Next Steps

    +

    We've learned a great deal about Django's ORM and Models.

    +

    We've also spent some time getting to know the Query API provided by model +managers and QuerySets.

    +

    We've also hooked up the Django Admin and noted some shortcomings.

    +

    In our next session we'll improve how the admin works for us.

    +

    Then we'll put a front-end on this blog.

    +
    +
    +

    Break Time

    +

    See you back soon.

    +
    +
    + + diff --git a/presentations/session08.html b/presentations/session08.html new file mode 100644 index 00000000..610f7585 --- /dev/null +++ b/presentations/session08.html @@ -0,0 +1,920 @@ + + + + + + + +Internet Programming with Python + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    Internet Programming with Python

    + +img/django-pony.png +

    Session 8: A Django Application

    +

    Wherein we complete our Django blog app.

    +

    image: http://djangopony.com/

    + +
    +
    +

    Where We Stand

    +

    We've created a couple of models, Post and Category, that make up our blog +app.

    +

    We've taken some time to get familiar with the basic workings of the Django +ORM.

    +

    We've made a minor modification to our model classes and written tests for it.

    +

    And we've installed the Django Admin site and added our app to it.

    +
    +
    +

    Customizing the Admin

    +

    We have noted, however, that the admin isn't exactly right for our needs.

    +
      +
    • Listing of posts should show created, modified and published dates
    • +
    • Listing of posts should show the author of a post, with a link to the author
    • +
    • It should be possible to add a post to a category while creating or editing +it
    • +
    +

    https://docs.djangoproject.com/en/1.5/ref/contrib/admin/

    +
    +
    +

    The ModelAdmin Class

    +

    Open admin.py from your myblog package.

    +
      +
    • The admin.site is a globally available instance of the Admin class.
    • +
    • It is initialized at runtime automatically.
    • +
    • It stores a registry of the models that are registered with it.
    • +
    • Each call to admin.site.register adds a new model to the global site.
    • +
    • register takes two args: a Model subclass and an optional ModelAdmin subclass
    • +
    • If you call it without the optional subclass, you get the default.
    • +
    +

    Most usable admin functions are provided by the ModelAdmin.

    +
    +
    +

    Custom ModelAdmin

    +

    Our first task is to list date and author information.

    +
    +

    In admin.py add the following code ():

    +
    +# this is new
    +class PostAdmin(admin.ModelAdmin):
    +    list_display = ('__unicode__', 'created_date', 'modified_date',
    +                    'published_date', 'author')
    +
    +admin.site.register(Post, PostAdmin) #<- update this registration
    +
    +
    +

    Let's see what that did.

    +
    +
    +

    View The Results

    +

    If you haven't already, activate your virtualenv then fire up the development +server:

    +
    +(djangoenv)$ python manage.py runserver
    +
    +

    Load http://localhost:8000/admin and click through to the Post admin.

    +

    Pretty simple, eh?

    +
    +
    +

    List Display

    +

    A Couple of things about the list_display option are important to know:

    +
      +
    • The value you provide must be an iterable even if it has only one item
    • +
    • Each item in the iterable becomes a column in the list
    • +
    • The first item is the one that links to the change page for that object
        +
      • That can be customized by the list_display_links option
      • +
      +
    • +
    • Listed items can be field names or callables.
    • +
    • Callables can be module-level functions, or methods on the ModelAdmin or +Model
    • +
    +
    +
    +

    A Better Author Listing

    +

    Let's use this last bit to fix the author listing.

    +

    We'll need functionality that provides:

    +
      +
    • The full name of the author, if present, otherwise the username.
    • +
    • A link to the admin change form for that author.
    • +
    +

    Where should this go? Module? ModelAdmin? Model?

    +
      +
    • The first could be useful in public listings
    • +
    • The second is really only useful on the backend
    • +
    +
    +
    +

    Add Tests

    +

    In tests.py add the following test:

    +
    +class PostTestCase(TestCase):
    +    #...
    +    def test_author_name(self):
    +        for author in User.objects.all():
    +            fn, ln, un = (author.first_name,
    +                          author.last_name,
    +                          author.username)
    +            author_name = Post(author=author).author_name()
    +            if not (fn and ln):
    +                self.assertEqual(author_name, un)
    +            else:
    +                if fn:
    +                    self.assertTrue(fn in author_name)
    +                if ln:
    +                    self.assertTrue(ln in author_name)
    +
    +
    +
    +

    Add Tests

    +

    To test the admin, we'll first need a new TestClass:

    +
    +# new imports
    +from django.contrib.admin.sites import AdminSite
    +from myblog.admin import PostAdmin
    +
    +# new TestCase
    +class PostAdminTestCase(TestCase):
    +    fixtures = ['myblog_test_fixture.json', ]
    +
    +    def setUp(self):
    +        admin = AdminSite()
    +        self.ma = PostAdmin(Post, admin)
    +        for author in User.objects.all():
    +            title = "%s's title" % author.username
    +            post = Post(title=title, author=author)
    +            post.save()
    +
    +
    +
    +

    Add Tests

    +

    And then we need a test added to it:

    +
    +def test_author_link(self):
    +    expected_link_path = '/admin/auth/user/%s'
    +    for post in Post.objects.all():
    +        expected = expected_link_path % post.author.pk
    +        actual = self.ma.author_link(post)
    +        self.assertTrue(expected in actual)
    +
    +
    +

    Quit the django server and run your tests:

    +
    +(djangoenv)$ python manage.py test myblog
    +...
    +Ran 4 tests in 0.026s
    +FAILED (errors=2)
    +
    +
    +
    +
    +

    Make Them Pass

    +

    First, add the author_name method to our Post model in models.py:

    +
    +def author_name(self):
    +    raw_name = "%s %s" % (self.author.first_name,
    +                          self.author.last_name)
    +    name = raw_name.strip()
    +    if not name:
    +        name = self.author.username
    +    return name
    +
    +
    +(djangoenv)$ python manage.py test myblog
    +...
    +Ran 4 tests in 0.027s
    +FAILED (errors=1)
    +
    +
    +
    +

    Make Them Pass

    +

    Finally, add the author_link method to the PostAdmin in admin.py:

    +
    +# add an import
    +from django.core.urlresolvers import reverse
    +
    +# and a method
    +class PostAdmin(admin.ModelAdmin):
    +    #...
    +    def author_link(self, post):
    +        url = reverse('admin:auth_user_change', args=(post.id,))
    +        name = post.author_name()
    +        return '<a href="%s">%s</a>' % (url, name)
    +
    +
    +(djangoenv)$ python manage.py test myblog
    +...Ran 4 tests in 0.035s
    +OK
    +
    +
    +
    +

    Hook It Up

    +

    First, replace the 'author' name in list_display with +'author_link':

    +
    +list_display = (..., 'author_link')
    +
    +
    +

    We also need to let the admin know our HTML is safe:

    +
    +def author_link(self, post):
    +    #... method body
    +author_link.allow_tags = True
    +
    +
    +
    +
    +

    Wait, What??

    +

    In Python, everything is an object. Even methods of classes.

    +

    The Django admin uses special method attributes to control the methods you +create for list_display.

    +
    +

    Another special attribute controls the column title used in the list page:

    +
    +def author_link(self, post):
    +    #... method body
    +author_link.allow_tags = True
    +author_link.short_description = "Author" #<- add this
    +
    +
    +
    +
    +

    See The Results

    +

    Start up the Django server again and see what you've done:

    +
    +(djangoenv)$ python manage.py runserver
    +
    +

    Reload your admin site, click on the Post admin and see the new 'Author' +column.

    +
      +
    • Click on an author name.
    • +
    • Set the first and last names (if you haven't already).
    • +
    • Go back to Posts and see the outcome of this change.
    • +
    +

    Not bad, eh?

    +
    +
    +

    Categorize Posts

    +

    We'd like to be able to add categories to posts while adding or editing them.

    +

    But there is no field on the Post model that would show them.

    +

    Django provides the concept of an inline form to allow adding objects that +are related when there is no field available.

    +

    In the Django Admin, these are created using subclasses of the +InlineAdmin.

    +
    +
    +

    Create an Inline Admin

    +

    In admin.py add the following code above the definition of PostAdmin:

    +
    +class CategoryInlineAdmin(admin.TabularInline):
    +    model = Category.posts.through
    +    extra = 1
    +
    +
    +

    And then add one line to the PostAdmin class definition:

    +
    +class PostAdmin(admin.ModelAdmin):
    +    #... other options
    +    inlines = [CategoryInlineAdmin, ]
    +
    +    #... methods
    +
    +
    +
    +
    +

    Try It Out

    +

    Restart the Django server and see what you've done:

    +
    +(djangoenv)$ python manage.py runserver
    +
    +

    Note that you can even add new categories via the inline form.

    +

    But, in the form for a category, you see the field for Post. That shouldn't be +there.

    +
    +
    +

    A Final Tweak

    +

    See if you can figure out how to remove the posts field from the +CategoryAdmin.

    +
    +# create a custom model admin class
    +class CategoryAdmin(admin.ModelAdmin):
    +    exclude = ('posts', )
    +
    +# and register Category to use it in the Admin
    +admin.site.register(Category, CategoryAdmin)
    +
    +
    +
    +

    PLACEHOLDER

    +

    Do we have time to do an admin action here? if so, add actions to publish, +unpublish items in bulk

    +
    +
    +

    A Public Face

    +

    Point your browser at http://localhost:8000/

    +

    What do you see?

    +

    Why?

    +

    We need to add some public pages for our blog.

    +

    In Django, the code that builds a page that you can see is called a view.

    +
    +
    +

    Django Views

    +

    A view can be defined as a callable that takes a request and returns a +response.

    +

    This should sound pretty familiar to you.

    +

    Classically, Django views were functions.

    +

    Version 1.3 added support for Class-based Views (a class with a __call__ +method is a callable)

    +
    +
    +

    A Basic View

    +

    Let's add a really simple view to our app.

    +

    It will be a stub for our public UI. Add this to views.py in myblog

    +
    +from django.http import HttpResponse
    +
    +def stub_view(request, *args, **kwargs):
    +    body = "Stub View\n\n"
    +    if args:
    +        body += "Args:\n"
    +        body += "\n".join(["\t%s" % a for a in args])
    +    if kwargs:
    +        body += "Kwargs:\n"
    +        body += "\n".join(["\t%s: %s" % i for i in kwargs.items()])
    +    return HttpResponse(body, content_type="text/plain")
    +
    +
    +
    +

    Hooking It Up

    +

    We talked in the previous session about the Django urlconf

    +

    We used our project urlconf to hook the Django admin into our project.

    +

    We want to do the same thing for our new app.

    +

    In general, an app that serves any sort of views should contain its own +urlconf.

    +

    The project urlconf should mainly include these where possible.

    +
    +
    +

    Adding A Urlconf

    +

    Create a new file urls.py inside the myblog app package.

    +
    +

    Open it in your editor and add the following code:

    +
    +from django.conf.urls import patterns, url
    +
    +urlpatterns = patterns('myblog.views',
    +    url(r'^$',
    +        'stub_view',
    +        name="blog_index"),
    +)
    +
    +
    +
    +
    +

    Include Blog Urls

    +

    In order for our new urls to load, we'll need to include them in our project +urlconf

    +
    +

    Open urls.py from the mysite project package and add this:

    +
    +urlpatterns = patterns('',
    +    url(r'^', include('myblog.urls')), #<- add this
    +    #... other included urls
    +)
    +
    +
    +

    Try reloading http://localhost:8000/

    +

    You should see some output now.

    +
    +
    +

    A Word On Prefixes

    +

    The patterns function takes a first argument called the prefix

    +

    When it is not empty, it is added to any view names in url() calls in the +same patterns.

    +

    In a root urlconf like the one in mysite, this isn't too useful

    +

    But in myblog.urls it lets us refer to views by simple function name

    +

    No need to import every view.

    +
    +
    +

    Project URL Space

    +

    A project is defined by the urls a user can visit.

    +

    What should our users be able to see when they visit our blog?

    +
      +
    • A list view that shows blog posts, most recent first.
    • +
    • An individual post view, showing a single post (a permalink).
    • +
    • A category view that shows all posts in a given category.
    • +
    +

    Let's add urls for each of these, use the stub view for now.

    +
    +
    +

    Our URLs

    +

    We've already got a good url for the list page: blog_index at '/'

    +
    +

    For the view of a single post, we'll need to capture the id of the post. +Add this to urlpatterns:

    +
    +url(r'^posts/(\d+)/$',
    +    'stub_view',
    +    name="blog_detail"),
    +
    +
    +

    (\d+) captures one or more digits as the post_id.

    +

    Load http://localhost:8000/posts/1234/ and see what you get.

    +
    +
    +

    A Word on Capture in URLs

    +

    When you load the above url, you should see 1234 listed as an arg

    +
    +

    Try changing the regexp like so:

    +
    +r'^posts/(?P<post_id>\d+)/$'
    +
    +
    +

    Reload the same url. Notice the change.

    +

    How you declare a capture group in your url pattern regexp influenced how it +will be passed to the view callable.

    +
    +
    +

    Category View URL

    +

    Try writing the URL pattern for the category view on your own.

    +
    +

    My version looks like this:

    +
    +url(r'^category/(?P<category_id>\d+)/$',
    +    'stub_view',
    +    name="category_view"),
    +
    +
    +

    At this point, we should have three url patterns in our urlconf

    +
    +
    +

    Full Urlconf

    +
    +from django.conf.urls import patterns, url
    +
    +urlpatterns = patterns('myblog.views',
    +    url(r'^$',
    +        'stub_view',
    +        name="blog_index"),
    +    url(r'^posts/(?P<post_id>\d+)/$',
    +        'stub_view',
    +        name="blog_detail"),
    +    url(r'^category/(?P<category_id>\d+)/$',
    +        'stub_view',
    +        name="category_view")
    +)
    +
    +
    +
    +

    Testing Views

    +

    Before we begin, we need to add some tests for the views we are about to +create.

    +

    We'll need tests for a list view, a detail view and a category view

    +

    To save us time, I've written these tests already

    +

    You can find them in the class resources directory: blog_view_tests.py

    +

    Copy the TestCase and imports from that file into our blog tests.py file.

    +
    +
    +

    Run The Tests

    +
    +(djangoenv)$ python manage.py test myblog
    +...
    +----------------------------------------------------------------------
    +Ran 8 tests in 0.478s
    +
    +FAILED (failures=3)
    +Destroying test database for alias 'default'...
    +
    +
    +
    +

    Our First View

    +

    Add the view for listing blog posts to views.py.

    +
    +# add these imports
    +from django.template import RequestContext, loader
    +from myblog.models import Post
    +
    +# and this view
    +def list_view(request):
    +    published = Post.objects.exclude(published_date__exact=None)
    +    posts = published.order_by('-published_date')
    +    template = loader.get_template('list.html')
    +    context = RequestContext(request, {
    +        'posts': posts,
    +    })
    +    body = template.render(context)
    +    return HttpResponse(body, content_type="text/html")
    +
    +
    +
    +

    Getting Posts

    +
    +published = Post.objects.exclude(published_date__exact=None)
    +posts = published.order_by('-published_date')
    +
    +

    We begin by using the QuerySet API to fetch all the posts that have +published_date set

    +

    Using the chaining nature of the API we order these posts by +published_date

    +

    Remember, at this point, no query has actually been issued to the database.

    +
    +
    +

    Getting a Template

    +
    +template = loader.get_template('list.html')
    +
    +

    Django uses configuration to determine how to find templates.

    +

    By default, Django looks in installed apps for a templates directory

    +

    It also provides a place to list specific directories.

    +

    Let's set that up in settings.py

    +
    +
    +

    Project Templates

    +

    In settings.py find TEMPLATE_DIRS and add the absolute path to your +mysite project package:

    +
    +TEMPLATE_DIRS = ('/absolute/path/to/mysite/mysite/templates', )
    +
    +

    Then add a templates directory to your mysite project package

    +

    Finally, in that directory add a new file base.html and populate it with +the following:

    +
    +
    +

    base.html

    +
    +<!DOCTYPE html>
    +<html>
    +  <head>
    +    <title>My Django Blog</title>
    +  </head>
    +  <body>
    +    <div id="container">
    +      <div id="content">
    +      {% block content %}
    +       [content will go here]
    +      {% endblock %}
    +      </div>
    +    </div>
    +  </body>
    +</html>
    +
    +
    +
    +

    Templates in Django

    +

    Before we move on, a quick word about Django templates.

    +

    We've seen Jinja2 which was "inspired by Django's templating system".

    +

    Basically, you already know how to write Django templates.

    +

    Django templates do not allow any python expressions.

    +

    https://docs.djangoproject.com/en/1.5/ref/templates/builtins/

    +
    +
    +

    Blog Templates

    +

    Our view tries to load list.html.

    +

    This template is probably specific to the blog functionality of our site

    +

    It is common to keep shared templates in your project directory and +specialized ones in app directories.

    +

    Add a templates directory to your myblog app, too.

    +

    In it, create a new file list.html and add this:

    +
    +
    +

    list.html

    +
    +{% extends "base.html" %}
    +
    +{% block content %}
    +  <h1>Recent Posts</h1>
    +
    +  {% comment %} here is where the query happens {% endcomment %}
    +  {% for post in posts %}
    +  <div class="post">
    +    <h2>{{ post }}</h2>
    +    <p class="byline">
    +      Posted by {{ post.author_name }} &mdash; {{ post.published_date }}
    +    </p>
    +    <div class="post-body">
    +      {{ post.text }}
    +    </div>
    +    <ul class="categories">
    +      {% for category in post.categories.all %}
    +        <li>{{ category }}</li>
    +      {% endfor %}
    +    </ul>
    +  </div>
    +  {% endfor %}
    +{% endblock %}
    +
    +
    +
    +

    Template Context

    +
    +context = RequestContext(request, {
    +    'posts': posts,
    +})
    +body = template.render(context)
    +
    +

    Like Jinja2, django templates are rendered by passing in a context

    +

    Django's RequestContext provides common bits, similar to the global context in +Flask

    +

    We add our posts to that context so they can be used by the template.

    +
    +
    +

    Return a Response

    +
    +return HttpResponse(body, content_type="text/html")
    +
    +

    Finally, we build an HttpResponse and return it.

    +

    This is, fundamentally, no different from the stub_view just above.

    +
    +
    +

    Fix URLs

    +

    We need to fix the url for our blog index page

    +
    +

    Update urls.py in myblog:

    +
    +url(r'^$',
    +    'list_view',
    +    name="blog_index"),
    +
    +
    +
    +(djangoenv)$ python manage.py test myblog
    +...
    +Ran 8 tests in 0.494s
    +FAILED (failures=2)
    +
    +
    +
    +

    Common Patterns

    +

    This is a common pattern in Django views:

    +
      +
    • get a template from the loader
    • +
    • build a context, usually using a RequestContext
    • +
    • render the template
    • +
    • return an HttpResponse
    • +
    +

    So common in fact that Django provides two shortcuts for us to use:

    +
      +
    • render(request, template[, ctx][, ctx_instance])
    • +
    • render_to_response(template[, ctx][, ctx_instance])
    • +
    +
    +
    +

    Shorten Our View

    +

    Let's replace most of our view with the render shortcut

    +
    +# replace RequestContext and loader import
    +from django.shortcuts import render
    +
    +# rewrite our view
    +def list_view(request):
    +    published = Post.objects.exclude(published_date__exact=None)
    +    posts = published.order_by('-published_date')
    +    context = {'posts': posts}
    +    return render(request, 'list.html', context)
    +
    +

    Remember though, all we did manually before is still happening

    +
    +
    +

    Detail View

    +

    Next, let's write a view function for the detail view of a post

    +
    +

    It should have the following signature:

    +
    +detail_view(request, post_id)
    +
    +
    +

    We will call the template detail.html

    +

    Let's start with the code in views.py

    +
    +
    +

    detail_view

    +
    +def detail_view(request, post_id):
    +    published = Post.objects.exclude(published_date__exact=None)
    +    try:
    +        post = published.get(pk=post_id)
    +    except Post.DoesNotExist:
    +        raise Http404
    +    context = {'post': post}
    +    return render(request, 'detail.html', context)
    +
    +

    All models raise a DoesNotExist exception if get returns nothing.

    +

    We can use that fact to raise a Not Found exception.

    +

    Django will handle the rest for us.

    +
    +
    +

    detail.html

    +
    +{% extends "base.html" %}
    +
    +{% block content %}
    +<a class="backlink" href="/">Home</a>
    +<h1>{{ post }}</h1>
    +<p class="byline">
    +  Posted by {{ post.author_name }} &mdash; {{ post.published_date }}
    +</p>
    +<div class="post-body">
    +  {{ post.text }}
    +</div>
    +<ul class="categories">
    +  {% for category in post.categories.all %}
    +    <li>{{ category }}</li>
    +  {% endfor %}
    +</ul>
    +{% endblock %}
    +
    +
    +
    +

    Hook it Up

    +

    In order to view a single post, we'll need a link from the list view

    +
    +

    We can use the url template tag (like flask url_for):

    +
    +{% url '<view_name>' arg1 arg2 %}
    +
    +
    +

    In our list.html template, let's link the post titles:

    +
    +{% for post in posts %}
    +<div class="post">
    +  <h2>
    +    <a href="{% url 'blog_detail' post.pk %}">{{ post }}</a>
    +  </h2>
    +  ...
    +
    +
    +
    +

    Fix URLs

    +

    Again, we need to insert our new view into the existing urls.py in +myblog:

    +
    +url(r'^posts/(?P<post_id>\d+)/$',
    +    'detail_view',
    +    name="blog_detail"),
    +
    +
    +(djangoenv)$ python manage.py test myblog
    +...
    +Ran 8 tests in 0.513s
    +FAILED (failures=1)
    +
    +
    +
    +

    A Moment To Play

    +

    We've got some good stuff to look at now. Fire up the server

    +

    Reload your blog index page and click around a bit.

    +

    You can now move back and forth between list and detail view.

    +

    Try loading the detail view for a post that doesn't exist

    +
    +
    +

    Category Lists

    +

    Let's implement the category listing next

    +

    Before we do so, make sure you have added categories to any posts you've +created.

    +

    Go to http://localhost:8000/admin/ and make sure:

    +
      +
    • you have at least three or four posts
    • +
    • each post is in one or more categories
    • +
    • at least one category has more than one post
    • +
    +
    +
    +

    Category View

    +

    The view should have the following signature:

    +
    +category_view(request, category_id):
    +
    +

    We can re-use the list.html template with some minor modifications

    +

    Let's start by adding view code to views.py

    +
    +
    +

    category_view

    +
    +# add an import
    +from myblog.models import Category
    +
    +# and this function
    +def category_view(request, category_id):
    +    try:
    +        category = Category.objects.get(pk=category_id)
    +    except Category.DoesNotExist:
    +        raise Http404
    +    published = category.posts.exclude(published_date__exact=None)
    +    context = {
    +        'posts': published.order_by('-published_date'),
    +        'title': "Posts in %s" % category.name,
    +        'description': category.description
    +    }
    +    return render(request, 'list.html', context)
    +
    +
    +
    +

    Backport Changes

    +

    We've added two new items to the template context

    +

    Let's update list.html to use title and description

    +
    +{% block content %}
    +  <h1>{{ title }}</h1>
    +  <p class="pageDescription">{{ description }}</p>
    +
    +
    +

    Also go back and update the template context in list_view

    +
    +context = {'posts': posts, 'title': 'Recent Posts',
    +           'description': ''}
    +
    +
    +
    +
    +

    Hook It Up

    +

    To view a category, we'll need to link categories to in templates to this view

    +

    Again, use the url template tag

    +

    The categories for a post are listed in both list.html and detail.html

    +

    Add links to both places now.

    +
    +
    +

    My Version

    +
    +# in both templates
    +<ul class="categories">
    +  {% for category in post.categories.all %}
    +    <li>
    +      <a href="{% url 'category_view' category.pk %}">
    +        {{ category }}</a>
    +    </li>
    +  {% endfor %}
    +</ul>
    +
    +
    +
    +

    Fix URLs

    +

    Substitute the view name category_view into urls.py:

    +
    +url(r'^category/(?P<category_id>\d+)/$',
    +    'category_view',
    +    name="category_view")
    +
    +
    +(djangoenv)$ python manage.py test myblog
    +...
    +Ran 8 tests in 0.547s
    +OK
    +
    +
    +
    +

    Congratulations

    +

    You've got a functional Blog

    +

    It's not very pretty, though.

    +

    We can fix that by adding some css

    +

    This gives us a chance to learn about Django's handling of static files

    +
    +
    +

    Static Files

    +

    Like templates, Django expects to find static files in particular locations

    +

    It will look for them in a directory named static in any installed apps.

    +

    They will be served from the url path in the STATIC_URL setting.

    +

    By default, this is /static/

    +
    +
    +

    Add CSS

    +

    I've prepared a css file for us to use. You can find it in the class resources

    +

    Create a new directory static in the myblog app.

    +

    Copy the django_css file into that new directory.

    +
    +

    Then add this link to the <head> of base.html:

    +
    +<title>My Django Blog</title>
    +<link type="text/css" rel="stylesheet" href="/static/django_blog.css">
    +
    +
    +
    +
    + + diff --git a/presentations/session09.html b/presentations/session09.html new file mode 100644 index 00000000..76629aca --- /dev/null +++ b/presentations/session09.html @@ -0,0 +1,952 @@ + + + + + + + +Internet Programming with Python + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    Internet Programming with Python

    + +img/pyramid-medium.png +

    Session 9: Intro To Pyramid

    +
    +
    The flexible framework.
    +
    Totally not built by aliens.
    +
    + +
    +
    +

    What is Pyramid?

    +

    A Web Framework

    +

    "Its primary job is to make it easier for a developer to create an arbitrary +web application"

    +

    Makes as few decisions as possible for you.

    +

    Allows you to make decisions, and provides tools to support you when you do

    +

    "Pay only for what you eat"

    +
    +
    +

    Why is Pyramid?

    +

    Micro-frameworks are great for lightweight apps

    +

    Micro-frameworks do not scale up or change specs easily

    +

    Full-stack frameworks have lots of opinions. Bending them can be difficult.

    +

    Pyramid can build a lightweight app easily, but it can also scale and bend

    +
    +
    +

    History - Zope and Repoze

    +

    Many of the core developers of Pyramid started as Zope developers.

    +

    Born in 1996, Zope was the first Python web framework, and possibly the first +in any language.

    +

    After 14 years, the developers of Zope had seen and learned a lot.

    +

    Repoze was a short-lived (2008-2010) framework intended to embody the lessons +learned from Zope.

    +
    +
    +

    History - Pylons

    +

    Pylons was released in 2005.

    +

    It was among the first frameworks to fully embrace the WSGI specification.

    +

    The creators of Pylons built WebOb (abstracted HTTP request and response +objects).

    +

    This forms the foundation of Pylons much as Werkzeug is the foundation of +Flask.

    +
    +
    +

    History - 2010

    +

    In 2010, the authors of Repoze and Pylons got together and made an unusual +decision.

    +

    Why duplicate efforts when there are already so many other frameworks?

    +

    Repoze was re-named 'Pyramid' and the 'Pylons Project' was born to shepherd +this new combined project.

    +
    +
    +

    Implications

    +

    Pylons was a framework predicated largely on relational persistence and URL +Dispatch.

    +

    Zope/Repoze was based on the ZODB and Object Traversal.

    +

    Each of these approaches has strengths and weaknesses.

    +

    Pyramid supports using neither, both and even combinations of the two.

    +
    +
    +

    Relational DB / URL Dispatch

    +

    You've seen this before, both in Flask and Django

    +

    SQLite3, the Django ORM, both are examples of relational persistence models

    +

    Routes/urlpatterns, both are examples of URL Dispatch

    +

    Pyramid can work this way too. SQLAlchemy, Route-based views.

    +

    Been there, done that. Let's see something else.

    +
    +
    +

    ZODB

    +

    ORMs allow developers to pretend that Objects are like DB Tables.

    +

    But Objects are not tables, so there's a conceptual mismatch between +the two.

    +

    The ZODB is an object store, rather than a relational database.

    +

    If your data is best represented by heterogenous objects, it's a better +persistence solution.

    +
    +
    +

    Traversal

    +

    In URL Dispatch, the PATH is a virtual construct.

    +

    In our Django app /admin/myblog/post/13/ doesn't map to any series of +real locations.

    +

    This is unlike a filesystem where /usr/local/bin/python points to a real +location.

    +

    When you use the cd command to move from place to place in a filesystem, +that is traversal

    +
    +
    +

    Object Graphs

    +

    In Python, objects can contain other objects.

    +

    Using dict-like structures, you can build a graph of objects:

    +
    +Family
    +├── Parents
    +│  ├── Cris
    +│  ├── Kristina
    +├── Children
    +│  ├── Kieran
    +│  ├── Finnian
    +
    +
    +
    +

    We Got Both Directions

    +

    __getitem__ allows movement from container to contained

    +
    +

    What if the contained can keep track of its container?

    +
    +>>> class node(dict):
    +...   __parent__ = None
    +...   def __init__(self, parent=None):
    +...     self.__parent__ = parent
    +...
    +>>> x = node()
    +>>> x['y'] = node(x)
    +>>> y = x['y']
    +>>> y.__parent__ == x
    +True
    +
    +
    +
    +
    +

    Traversal - Path Lookup

    +

    You can traverse across the object graph by treating a URL as a series of +object names

    +
    +http://family/parents/cris -> family['parents']['cris']
    +
    +

    If you have more names than objects, the remainder can be passed to the final +object as data:

    +
    +http://family/parents/cris/edit -> subpath = /edit
    +http://family/parents/cris/next/steps -> subpath = /next/steps
    +
    +

    The subpath can be used to find object methods or views

    +
    +
    +

    Preparation

    +

    You should at this point have a virtualenv in which you have installed the +ZODB.

    +

    Now, let's install pyramid too.

    +
    +

    In your terminal, change directories to where you build that virtualenv and +activate it:

    +
    +$ cd /path/to/right/place
    +$ source pyramidenv/bin/activate
    +<or>
    +C:\> pyramidenv\Scripts\activate
    +
    +
    +
    +
    +

    Installation

    +

    Next, install Pyramid and the extras we'll be using:

    +
    +(pyramidenv)$ pip install pyramid
    +...
    +(pyramidenv)$ pip install docutils nose coverage
    +...
    +(pyramidenv)$ pip install pyramid_zodbconn pyramid_tm
    +...
    +(pyramidenv)$ pip install pyramid_debugtoolbar
    +
    +

    These tools will allow us to manage ZODB connections, debug our app, and run +cool tests.

    +
    +
    +

    Required Setup

    +

    In Django startproject and startapp gave us the boilerplate we needed.

    +

    Pyramid uses what it calls scaffolds for the same purpose.

    +

    When you installed it, a new pcreate command was generated in your +virtualenv.

    +
    +

    Let's use it:

    +
    +(pyramidenv)$ pcreate -s zodb wikitutorial
    +...
    +
    +
    +
    +
    +

    Scaffolds and Opinions

    +

    When you ran pcreate -s zodb wikitutorial you invoked the zodb scaffold

    +

    Pyramid the framework is highly un-opinionated.

    +

    Scaffolds, conversely, can be quite opinionated. The one we used has chosen +our persistence mechanism (ZODB) and how we will reach our code (Traversal).

    +

    You do not have to use scaffolds to start a project, but it can help.

    +
    +
    +

    Project Layout

    +

    Running pcreate has set up a file structure for us:

    +
    +wikitutorial/
    +    CHANGES.txt
    +    development.ini
    +    MANIFEST.in
    +    production.ini
    +    README.txt
    +    setup.cfg
    +    setup.py
    +    wikitutorial/
    +        __init__.py
    +        models.py
    +        static/
    +        templates/
    +        tests.py
    +        views.py
    +
    +
    +
    +

    Similarities to Django

    +

    Our project is organized with an outer project folder and an inner package +folder (see the __init__.py?)

    +

    The name of that outer directory is not really important.

    +

    Our inner package folder has a models.py, tests.py and views.py module

    +

    Our inner package folder has a static/ and templates/ directory

    +
    +
    +

    Differences from Django

    +

    Our outer module has a setup.py file, which allows it to be installed +with pip or easy_install

    +

    There is no manage.py file. Pyramid commands are console scripts (look in +pyramidenv/bin).

    +

    There is nothing magical in Pyramid about the name of the models.py +module.

    +

    There is nothing magical in Pyramid about the names of the static/ or +templates/ directories.

    +
    +
    +

    Pyramid System Configuration

    +

    Pyramid keeps configuration intended for an entire installation in .ini +files at the top of a project.

    +

    When you deploy an app to some wsgi server, you'll reference one of these files

    +

    Settings there affect the environment of all apps that are running in that +wsgi server.

    +

    Like Django's settings.py, but not python.

    +
    +
    +

    INI format

    +

    INI-style files have a particular format.

    +

    Individual sections are marked by [SECTION_NAMES] in square brackets

    +

    Each section will contain name = value pairs of settings.

    +

    INI files are parsed using the Python ConfigParser module.

    +
    +{'SECTION_NAME': {'name': 'value', ...}, ...}
    +
    +
    +
    +

    Pyramid is Python

    +

    Running a Pyramid application is really just like running a Python module. In +the __init__.py file of your app package, you'll find a main +function:

    +
    +def main(global_config, **settings):
    +    """ This function returns a Pyramid WSGI application.
    +    """
    +    config = Configurator(root_factory=root_factory,
    +                          settings=settings)
    +    config.add_static_view('static', 'static', cache_max_age=3600)
    +    config.scan()
    +    return config.make_wsgi_app()
    +
    +

    Let's take a closer look at this, line by line.

    +
    +
    +

    INI Configuration

    +
    +def main(global_config, **settings):
    +
    +

    Arguments passed to main are configuration from .ini.

    +

    global_config is a dictionary of settings in [DEFAULT]

    +

    settings will be the name-value pairs for your app.

    +
    +

    [app:<name>] sections are mapped to apps by the use setting

    +
    +[app:main]
    +use = egg:wikitutorial
    +
    +
    +
    +
    +

    App Configuration

    +
    +config = Configurator(root_factory=root_factory,
    +                      settings=settings)
    +config.add_static_view('static', 'static', cache_max_age=3600)
    +config.scan()
    +
    +

    Pyramid configuration is done by the Configurator class.

    +

    Configuration can be imperative (function calls) or declarative +(decorators)

    +

    Either way, .scan() sets it all up and reports errors.

    +

    Read more in the pyramid.config documentation

    +
    +
    +

    WSGI Hookup

    +
    +return config.make_wsgi_app()
    +
    +

    Like Django and Flask, Pyramid runs in a WSGI world.

    +

    .make_wsgi_app() returns a Router object for your app.

    +
    +

    Router has the following __call__ method:

    +
    +def __call__(self, environ, start_response):
    +    request = self.request_factory(environ)
    +    response = self.invoke_subrequest(request, use_tweens=True)
    +    return response(request.environ, start_response)
    +
    +
    +

    Familiar, no?

    +
    +
    +

    The Application Root

    +

    The Configurator constructor takes a root_factory kwarg.

    +

    This callable returns something to handle dispatching requests.

    +

    The default root factory uses URL Dispatch.

    +

    We want to use Traversal for our app, so we provide one.

    +
    +
    +

    Our Root Factory

    +
    +from pyramid_zodbconn import get_connection
    +from .models import appmaker
    +
    +def root_factory(request):
    +    conn = get_connection(request)
    +    return appmaker(conn.root())
    +
    +

    get_connection returns a connection to the ZODB.

    +

    The root of this connection is then passed to appmaker

    +

    This is another factory method that returns the app root.

    +

    So what exactly does appmaker do?

    +
    +
    +

    The appmaker

    +
    +def appmaker(zodb_root):
    +    if not 'app_root' in zodb_root:
    +        app_root = MyModel()
    +        zodb_root['app_root'] = app_root
    +        import transaction
    +        transaction.commit()
    +    return zodb_root['app_root']
    +
    +

    Remember, the ZODB is an object store, dict-like.

    +

    We look for an app_root inside this container

    +

    If there is none, we build one and put it there.

    +

    This simple Python object will manage Traversal for our app.

    +
    +
    +

    Install Our App

    +

    Our app is, in fact, a Python package.

    +

    In order for us to use it, we must install it.

    +

    setup.py allows us to do this: python setup.py install BUT

    +

    Install will make a copy of our code and use that.

    +

    We don't want that, since updates we make here would not be picked up.

    +
    +
    +

    Develop Installation

    +

    We can use an alternate method called develop.

    +

    This will install a pointer to our package, but leave the code here.

    +

    In a terminal, move to the wikitutorial project folder (find +development.ini) and develop the app:

    +
    +(pyramidenv)$ cd wikitutorial
    +(pyramidenv)$ python setup.py develop
    +
    +
    +
    +

    See It Live

    +

    Use the pserve command installed by pyramid to serve our app:

    +
    +(pyramidenv)$ pserve development.ini
    +Starting server in PID 16698.
    +serving on http://0.0.0.0:6543
    +
    +

    This brings up a new wsgi server provided by waitress serving our app.

    +

    Load http://localhost:6543 and view your app root.

    +
    +
    +

    Why is it Pretty?

    +

    We should be looking at an instance of MyModel:

    +
    +class MyModel(PersistentMapping):
    +    __parent__ = __name__ = None
    +
    +

    What makes it look like this?

    +

    The secret sauce lies in view configuration

    +
    +
    +

    Pyramid Views

    +
    +from pyramid.view import view_config
    +from .models import MyModel
    +
    +@view_config(context=MyModel, renderer='templates/mytemplate.pt')
    +def my_view(request):
    +    return {'project': 'wikitutorial'}
    +
    +

    Pyramid views can be configured with the @view_config() decorator.

    +

    Or call config.add_view() method in your app main.

    +

    config.scan() in main picks up all config decorators.

    +
    +
    +

    View Config - Predicates

    +

    View configuration takes many arguments. Here we use two.

    +

    context determines the type of object to which this view can be applied

    +

    It's an example of a predicate argument

    +

    Predicates place restrictions on how and when a view is used.

    +

    Read more about predicates in view configuration

    +
    +
    +

    View Config - Renderers

    +

    Pyramid separates the concerns of view and renderer

    +

    So far, views prepare a data context and render it

    +

    In Pyramid, the view only prepares the data to be rendered

    +

    A renderer transforms this to something suitable for an HTTP response.

    +

    In this case, renderer is a template that will return HTML

    +
    +
    +

    View Config - Summary

    +

    In summary, then, our view configuration:

    +
      +
    • checks to see that we have traversed to an instance of MyModel
    • +
    • calls the my_view function, which returns a simple dictionary
    • +
    • passes that dictionary to the mytemplate template
    • +
    • the template is rendered and returned as the body of an HTTP response.
    • +
    +

    And that is how we end up looking at that very pretty page.

    +
    +
    +

    Break Time

    +

    So far:

    +
      +
    • we've taken a look at where Pyramid comes from
    • +
    • we've seen how it is like and unlike other frameworks we've seen.
    • +
    • we've met the ZODB object store and talked about how it differs from a +database
    • +
    • we've learned about traversal and how it differs from URL dispatch
    • +
    • we've set up a Pyramid app using both
    • +
    • we've looked at how the example code in that application works.
    • +
    +

    Next, we'll start working on building our app, starting with Models.

    +
    +
    +

    Before We Begin

    +

    In your package directory you should see a file: Data.fs.

    +

    We are going to be starting over, so let's clear it.

    +

    Make sure Pyramid is not running.

    +

    Delete Data.fs. It will be re-created as needed.

    +

    You can also delete Data.fs.* (.tmp, .index, .lock)

    +
    +
    +

    Wiki Models

    +

    First, we want a wiki class to serve as our app root.

    +

    We also need a page class representing a wiki page.

    +

    This will be the type we view when we are looking at the wiki.

    +

    These two classes will need to be stored in our ZODB

    +

    This means we need to talk about persistence.

    +
    +
    +

    Persistence Magic

    +

    In SQL, data about an object is written to tables.

    +

    In the ZODB, the object itself is saved in the database.

    +

    The ZODB provides special classes that help us with this.

    +

    Instances of these classes are able to know when they've been changed.

    +

    When a ZODB transaction is committed, all changes objects are saved.

    +
    +
    +

    Persistent Base Classes

    +

    We'll be using two of these classes in our wiki:

    +
      +
    • Persistent - automatically saves changes to class attributes
    • +
    • PersistentMapping - like a dictionary, saves changes to itself and +its keys and values.
    • +
    +

    Other structures like lists and B-Trees are also available, but we wont use +them here.

    +

    By subclassing these, we automatically gain persistence.

    +
    +
    +

    Traversal Magic

    +

    Our wiki system will use traversal dispatch

    +

    Two object attributes support traversal:

    +
      +
    • __name__ (who am I)
    • +
    • __parent__ (where am I)
    • +
    +

    Every object in a traversal-based system must provide these two +attributes.

    +

    The root object will set these to None.

    +
    +
    +

    The Wiki Class

    +

    Open models.py from our wikitutorial package directory.

    +

    First, delete the MyModel class. We won't need it.

    +

    Add the following in its place:

    +
    +class Wiki(PersistentMapping):
    +    __name__ = None
    +    __parent__ = None
    +
    +
    +
    +

    The Page Class

    +

    To that same file (models.py) add one import and a second class definition:

    +
    +from persistent import Persistent
    +
    +class Page(Persistent):
    +    def __init__(self, data):
    +        self.data = data
    +
    +

    What about __name__ and __parent__?

    +

    We'll add those to each instance when we create it.

    +
    +
    +

    Update Appmaker

    +

    Update appmaker for our new models:

    +
    +def appmaker(zodb_root):
    +    if not 'app_root' in zodb_root:
    +        app_root = Wiki()
    +        frontpage = Page('This is the front page')
    +        app_root['FrontPage'] = frontpage
    +        frontpage.__name__ = 'FrontPage'
    +        frontpage.__parent__ = app_root
    +        zodb_root['app_root'] = app_root
    +        import transaction
    +        transaction.commit()
    +    return zodb_root['app_root']
    +
    +
    +
    +

    A Last Bit of Cleanup

    +

    We've deleted the MyModel class.

    +

    But we still have views that reference the class.

    +
    +

    Open views.py and delete everything except the first import

    +
    +from pyramid.view import view_config
    +
    +
    +

    Next come tests for our new models.

    +
    +
    +

    Test the Wiki Model

    +

    Open tests.py from the package directory. Delete the ViewTests +class and replace it with the following:

    +
    +class WikiModelTests(unittest.TestCase):
    +
    +    def _getTargetClass(self):
    +        from wikitutorial.models import Wiki
    +        return Wiki
    +
    +    def _makeOne(self):
    +        return self._getTargetClass()()
    +
    +    def test_constructor(self):
    +        wiki = self._makeOne()
    +        self.assertEqual(wiki.__parent__, None)
    +        self.assertEqual(wiki.__name__, None)
    +
    +
    +
    +

    Test the Page Model

    +

    Add the following test class as well:

    +
    +class PageModelTests(unittest.TestCase):
    +
    +    def _getTargetClass(self):
    +        from wikitutorial.models import Page
    +        return Page
    +
    +    def _makeOne(self, data=u'some data'):
    +        return self._getTargetClass()(data=data)
    +
    +    def test_constructor(self):
    +        instance = self._makeOne()
    +        self.assertEqual(instance.data, u'some data')
    +
    +
    +
    +

    Test Appmaker

    +

    One more test class:

    +
    +class AppmakerTests(unittest.TestCase):
    +
    +    def _callFUT(self, zodb_root):
    +        from wikitutorial.models import appmaker
    +        return appmaker(zodb_root)
    +
    +    def test_initialization(self):
    +        root = {}
    +        self._callFUT(root)
    +        self.assertEqual(root['app_root']['FrontPage'].data,
    +                         'This is the front page')
    +
    +
    +
    +

    A Side Note

    +

    Note that there are few module level imports in tests.py

    +

    Also note that each TestCase has a helper method to import the class it will +test.

    +

    This is unusual, but it reflects Pyramid testing best practices

    +

    In short, the idea is to prevent import problems from breaking all your +tests.

    +
    +
    +

    Run our Tests

    +

    Finally, let's run our tests:

    +
    +(pyramidenv)$ python setup.py test
    +...
    +Ran 3 tests in 0.000s
    +
    +OK
    +
    +

    We can also run tests to tell us our code-coverage:

    +
    +(pyramidenv)$ nosetests --cover-package=tutorial --cover-erase\
    +    --with-coverage
    +
    +
    +
    +

    Preparing for Views

    +

    The data attribute of our Page model holds the text of the page.

    +

    We'll use ReStructuredText, which can be rendered to HTML

    +

    Rendering is provided by a python package called docutils.

    +

    Our application is a python package, and can declare its own dependencies.

    +

    We need to add the docutils package to this list.

    +
    +
    +

    Package Dependencies

    +

    Open the setup.py file from our project directory. Add docutils to +the list requires:

    +
    +requires = [
    +    'pyramid',
    +    'pyramid_zodbconn',
    +    'transaction',
    +    'pyramid_tm',
    +    'pyramid_debugtoolbar',
    +    'ZODB3',
    +    'waitress',
    +    'docutils', # <- ADD THIS
    +    ]
    +
    +
    +
    +

    Complete the Change

    +

    Changes to setup.py always require a re-install:

    +
    +(pyramidenv)$ python setup.py develop
    +
    +

    You'll see a whole bunch of stuff flicker by. In it will be a reference to +Searching for docutils.

    +
    +
    +

    Adding Views

    +

    We are ready to add views now. We'll need:

    +
      +
    • A view of the Wiki itself, which redirects to the front page.
    • +
    • A view of an existing Page
    • +
    • A view that allows us to add a new Page
    • +
    • A view that allows us to edit and existing Page
    • +
    +

    As we move forward, we'll be writing tests first, then building the code to +pass them.

    +
    +
    +

    Testing the Wiki View

    +

    We want our wiki to automaticall redirect to FrontPage.

    +
    +

    Add this new TestCase to tests.py:

    +
    +class WikiViewTests(unittest.TestCase):
    +
    +    def test_redirect(self):
    +        from wikitutorial.views import view_wiki
    +        context = testing.DummyResource()
    +        request = testing.DummyRequest()
    +        response = view_wiki(context, request)
    +        self.assertEqual(response.location,
    +                         'http://example.com/FrontPage')
    +
    +
    +
    +
    +

    Run The Tests

    +
    +(pyramidenv)$ python setup.py test
    +...
    +
    +======================================================================
    +ERROR: test_redirect (wikitutorial.tests.WikiViewTests)
    +----------------------------------------------------------------------
    +Traceback (most recent call last):
    +  File "/path/to/wikitutorial/wikitutorial/tests.py", line 51, in test_redirect
    +    from wikitutorial.views import view_wiki
    +ImportError: cannot import name view_wiki
    +
    +----------------------------------------------------------------------
    +Ran 4 tests in 0.001s
    +
    +FAILED (errors=1)
    +
    +
    +
    +

    Adding view_wiki

    +

    Open views.py again. Add the following:

    +
    +from pyramid.httpexceptions import HTTPFound
    +from pyramid.view import view_config # <- ALREADY THERE
    +
    +@view_config(context='.models.Wiki')
    +def view_wiki(context, request):
    +    return HTTPFound(location=request.resource_url(context,
    +                                                   'FrontPage'))
    +
    +
    +

    And re-run tests:

    +
    +(pyramidenv)$ python setup.py test
    +...
    +Ran 4 tests in 0.001s
    +OK
    +
    +
    +
    +
    +

    Some Notes

    +

    Note that @view_config has no renderer argument.

    +

    It will never be shown, so there's no need

    +

    Instead, it returns HTTPFound, (302 Found), which requires a +location

    +

    The .resource_url() method of a request object builds a URL for us.

    +
    +
    +

    A Page View

    +

    Our view of a page will need to accomplish a few things:

    +
      +
    • convert the Page data to HTML
    • +
    • make WikiWords in the HTML into appropriate links
    • +
    • provide a url for editing itself
    • +
    +

    Let's test and implement these features one at a time

    +
    +
    +

    Test HTML Rendering

    +

    Add the following new TestCase to tests.py

    +
    +class PageViewTests(unittest.TestCase):
    +    def _callFUT(self, context, request):
    +        from wikitutorial.views import view_page
    +        return view_page(context, request)
    +
    +    def test_it(self):
    +        wiki = testing.DummyResource()
    +        context = testing.DummyResource(data='Hello CruelWorld IDoExist')
    +        context.__parent__ = wiki
    +        context.__name__ = 'thepage'
    +        request = testing.DummyRequest()
    +        info = self._callFUT(context, request)
    +        self.assertTrue('<div class="document">' in info['content'])
    +        for word in context.data.split():
    +            self.assertTrue(word in info['content'])
    +
    +
    +
    +

    Run The Tests

    +

    Verify that you now have five, and that one is failing

    +

    Our tests is relying on an artifact of how docutils builds HTML

    +

    It makes it a weak tests, but okay for illustrative purposes.

    +

    Now, let's get it passing

    +
    +
    +

    Start view_page

    +

    Add this code to views.py:

    +
    +# an import
    +from docutils.core import publish_parts
    +
    +# and a method
    +@view_config(context='.models.Page', renderer='templates/view.pt')
    +def view_page(context, request):
    +    content = publish_parts(
    +        context.data, writer_name='html')['html_body']
    +    return dict(page=context, content=content)
    +
    +
    +(pyramidenv)$ python setup.py test
    +...
    +Ran 5 tests in 0.143s
    +OK
    +
    +
    + +
    +

    Finding WikiWords

    +

    We'll use a regular expression to find WikiWords in our page data

    +
    +

    Add the following to views.py:

    +
    +# one import
    +import re
    +
    +# and one module constant
    +WIKIWORDS = re.compile(r"\b([A-Z]\w+[A-Z]+\w+)")
    +
    +
    +

    Now, we use this to build a curried function that converts WikiWords to links

    +
    +
    +

    Converting WikiWords

    +
    +# in views.py
    +def view_page(context, request):
    +    wiki = context.__parent__
    +
    +    def check(match):
    +        word = match.group(1)
    +        if word in wiki:
    +            page = wiki[word]
    +            view_url = request.resource_url(page)
    +            return '<a href="%s">%s</a>' % (view_url, word)
    +        else:
    +            add_url = request.application_url + '/add_page/' + word
    +            return '<a href="%s">%s</a>' % (add_url, word)
    +
    +    content = publish_parts(
    +        context.data, writer_name='html')['html_body']
    +    content = WIKIWORDS.sub(check, content) #<- add this line
    +    return #... <- this already exists
    +
    +
    +
    +

    Check Your Progress

    +

    Tests should now be five for five again.

    +
    + + +
    +

    Next Steps

    +

    We've learned a great deal about Pyramid so far.

    +

    We've covered traversal and learned about object persistence with the ZODB.

    +

    Finally, we've implemented the Data model for our wiki application and begun +to implement views.

    +

    In our next session, we'll complete the wiki, adding page creation and editing +and an auth mechanism.

    +
    +
    +

    Break Time

    +

    See you back soon.

    +
    +
    + + diff --git a/presentations/session10.html b/presentations/session10.html new file mode 100644 index 00000000..796597f6 --- /dev/null +++ b/presentations/session10.html @@ -0,0 +1,471 @@ + + + + + + + +Internet Programming with Python + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    +

    Internet Programming with Python

    + +img/pyramid-medium.png +

    Session 10: A Pyramid Application

    +
    +
    The flexible framework.
    +
    Totally not built by aliens.
    +
    + +
    +
    +

    Adding Templates

    +

    What is the page template name for view_page?

    +

    Create view.pt in your templates directory.

    +

    Also copy the file base.pt from the class resources.

    +

    Pyramid can use a number of different templating engines.

    +

    We'll be using Chameleon, which also supports extending other templates.

    +
    +
    +

    Chameleon Templates

    +

    Chameleon page templates are valid XML/HTML.

    +

    You can validate and view templates in browsers without the templating engine.

    +

    This can be helpful in working with designers or front-end folks

    +

    Instead of using special tags for processing directives, Chameleon uses XML +tag attributes.

    +
    +
    +

    TAL/METAL

    +

    Chameleon is descended from Zope Page Templates (ZPT)

    +

    It uses two XML namespaces for directives:

    +
      +
    • TAL (Template Attribute Language)
    • +
    • METAL (Macro Extension to the Template Attribute Language)
    • +
    +

    TAL provides basic directives for logical structures

    +

    METAL provides directives for creating and using template Macros

    +
    +
    +

    TAL Statements

    +

    TAL and METAL statements are XML tag attributes.

    +

    This means they look just like id="foo" or class="bar"

    +
      +
    • tal:<operator>=â€<expression>â€
    • +
    • The tal: is a ‘namespace identifier’ (xml)
        +
      • Not strictly required, but helpful
      • +
      • Strongly encouraged :)
      • +
      +
    • +
    +
    +
    +

    TAL Operators

    +

    There are seven basic TAL operators, which are processed in this order

    +
      +
    • tal:define - set a value or values
    • +
    • tal:condition - test truth value to execute
    • +
    • tal:repeat - loop over sets of values
    • +
    • tal:content - set the content of a tag
    • +
    • tal:replace - replace an entire tag
    • +
    • tal:attributes - set html/xml attributes of a tag
    • +
    • tal:omit-tag - if expression is false, omit the tag
    • +
    +

    content and replace are mutually exclusive.

    +
    +
    +

    TAL Expressions

    +

    The right half of a TAL statement is an expression using the TAL expression +syntax (TALES):

    +
      +
    • Exists - exists:foo
    • +
    • Import - import:foo.bar.baz
    • +
    • Load = load:../other_template.pt
    • +
    • Not - not: is_anon
    • +
    • Python - python: here.Title()
    • +
    • String - string:my ${value}
    • +
    • Structure - structure:some_html
    • +
    +
    +
    +

    METAL Operators

    +

    METAL provides operators related to creating and using template macros:

    +
      +
    • metal:define-macro - designates a DOM scope as a macro
    • +
    • metal:use-macro - indicates that a macro should be used
    • +
    • metal:extend-macro - extend an existing macro
    • +
    • metal:define-slot - designate a customization point for a macro
    • +
    • metal:fill-slot - provide custom content for a macro slot
    • +
    +

    Much of this will become clearer as we actually create our templates.

    +
    +
    +

    The view.pt Template

    +

    Type this code into your view.pt file:

    +
    +<metal:main use-macro="load: base.pt">
    + <metal:content metal:fill-slot="main-content">
    +  <div tal:replace="structure:content">
    +    Page text goes here.
    +  </div>
    +  <p>
    +    <a tal:attributes="href edit_url" href="">
    +      Edit this page
    +    </a>
    +  </p>
    + </metal:content>
    +</metal:main>
    +
    +
    +
    +

    A Few Notes

    +

    <metal> and <tal> tags are processed and removed by the engine.

    +
      +
    • use-macro="load: base.pt": we will be using base.pt as our main +template macro.
    • +
    • Template macros define one or more slots.
    • +
    • metal:fill-slot="main-content": everything goes in the main-content +slot.
    • +
    +
    +
    +

    More Notes

    +
    +<div tal:replace="structure:content">
    +  Page text goes here.
    +</div>
    +
    +

    The tal directive replace replaces the <div> tag with content.

    +

    The structure expression ensures that the HTML is not escaped.

    +
    +
    +<a tal:attributes="href edit_url" href="">
    +  Edit this page
    +</a>
    +
    +

    Here, we use the tal directive attributes to set the href for +our anchor to the value passed into our template as edit_url.

    +
    +
    +
    +

    View Your Work

    +

    We've created the following:

    +
      +
    • A wiki view that redirects to the automatically-created FrontPage page
    • +
    • A page view that will render the data from a page, along with a url for +editing that page
    • +
    • A page template to show a wiki page.
    • +
    +

    That's all we need to be able to see our work. Start Pyramid:

    +
    +(pyramidenv)$ pserve development.ini
    +Starting server in PID 43925.
    +serving on http://0.0.0.0:6543
    +
    +

    Load http://localhost:6543/

    +
    +
    +

    What You Should See

    +img/wiki_frontpage.png +
    +
    +

    Page Editing

    +

    You'll notice that the page has a link to Edit This Page

    +

    If you click it, you get a 404. We haven't created that view yet.

    +

    Let's start by adding tests to ensure:

    +
      +
    • the edit view will submit to itself
    • +
    • will save page data updates
    • +
    • will redirect back to the page view after saving
    • +
    +
    +
    +

    Test Page Editing

    +

    In tests.py:

    +
    +class EditPageTests(unittest.TestCase):
    +    def _callFUT(self, context, request):
    +        from .views import edit_page
    +        return edit_page(context, request)
    +
    +    def test_it_notsubmitted(self):
    +        context = testing.DummyResource()
    +        request = testing.DummyRequest()
    +        info = self._callFUT(context, request)
    +        self.assertEqual(info['page'], context)
    +        self.assertEqual(info['save_url'],
    +                         request.resource_url(context, 'edit_page'))
    +
    +
    +
    +

    One More Method

    +
    +class EditPageTests(unittest.TestCase):
    +    # ...
    +
    +    def test_it_submitted(self):
    +        context = testing.DummyResource()
    +        request = testing.DummyRequest({'form.submitted':True,
    +                                        'body':'Chapel Hill Rocks'})
    +        response = self._callFUT(context, request)
    +        self.assertEqual(response.location, 'http://example.com/')
    +        self.assertEqual(context.data, 'Chapel Hill Rocks')
    +
    +
    +(pyramidenv)$ python setup.py test
    +Ran 7 tests in 0.110s
    +FAILED (errors=2)
    +
    +
    +
    +

    Editing a Page

    +

    Back in views.py add the following:

    +
    +@view_config(name='edit_page', context='.models.Page',
    +             renderer='templates/edit.pt')
    +def edit_page(context, request):
    +    if 'form.submitted' in request.params:
    +        context.data = request.params['body']
    +        return HTTPFound(location = request.resource_url(context))
    +
    +    return dict(page=context,
    +                save_url=request.resource_url(context, 'edit_page'))
    +
    +

    Note the name in view_config.

    +

    When traversal runs out of objects, it tries to find views by name

    +
    +
    +

    Check Your Tests

    +

    Even without a template we can run our tests:

    +
    +(pyramidenv)$ python setup.py test
    +...
    +----------------------------------------------------------------------
    +Ran 7 tests in 0.112s
    +
    +OK
    +
    +
    +
    +

    The Edit Template

    +

    Create and fill edit.pt in templates:

    +
    +<metal:main use-macro="load: base.pt">
    +  <metal:pagename metal:fill-slot="page-name">
    +  Editing
    +  <b><span tal:replace="page.__name__">Page Name Goes Here
    +     </span></b>
    +  </metal:pagename>
    +  <metal:content metal:fill-slot="main-content">
    +    <form action="${save_url}" method="post">
    +      <textarea name="body" tal:content="page.data" rows="10"
    +                cols="60"/><br/>
    +      <input type="submit" name="form.submitted" value="Save"/>
    +    </form>
    +  </metal:content>
    +</metal:main>
    +
    +
    +
    +

    FrontPage Content

    +

    Restart Pyramid, then back in your browser, click the Edit this page link.

    +

    Erase the existing text and add this instead:

    +
    +==========
    +Front Page
    +==========
    +
    +This is the front page.  It features
    +
    +* a heading
    +* a list
    +* a wikiword link to AnotherPage
    +
    +
    +
    +

    View Your Work

    +

    Click the Save button and see what you've gotten.

    +

    If you get strangely formatted text that warns you about Title overline too +short, you didn't add enough equals signs above or below the page title. Go +back and ensure that there are the same number of equal signs as the total +number of characters in the title.

    +

    Note that AnotherPage is a link, click it.

    +
    +
    +

    Page Creation

    +

    Again, we need a new view. This one will

    +
      +
    • have the wiki itself as context
    • +
    • allow us to fill out the new page content
    • +
    • save the new page when submitted
    • +
    • return us to a view of the new page
    • +
    +

    Again, we start by testing for this

    +
    +
    +

    Test Adding a Page

    +

    In tests.py:

    +
    +class AddPageTests(unittest.TestCase):
    +    def _callFUT(self, context, request):
    +        from .views import add_page
    +        return add_page(context, request)
    +
    +    def test_it_notsubmitted(self):
    +        context = testing.DummyResource()
    +        request = testing.DummyRequest()
    +        request.subpath = ['AnotherPage']
    +        info = self._callFUT(context, request)
    +        self.assertEqual(info['page'].data,'')
    +        self.assertEqual(
    +            info['save_url'],
    +            request.resource_url(context, 'add_page', 'AnotherPage'))
    +
    +
    +
    +

    One More Method

    +
    +class AddPageTests(unittest.TestCase):
    +    #...
    +
    +    def test_it_submitted(self):
    +        context = testing.DummyResource()
    +        request = testing.DummyRequest({'form.submitted':True,
    +                                        'body':'Go UNC!'})
    +        request.subpath = ['AnotherPage']
    +        self._callFUT(context, request)
    +        page = context['AnotherPage']
    +        self.assertEqual(page.data, 'Go UNC!')
    +        self.assertEqual(page.__name__, 'AnotherPage')
    +        self.assertEqual(page.__parent__, context)
    +
    +
    +(pyramidenv)$ python setup.py test
    +Ran 9 tests in 0.117s
    +FAILED (errors=2)
    +
    +
    +
    +

    Adding a Page

    +

    Back in views.py add the code for creating a new page

    +
    +

    Start with imports and the view_config:

    +
    +# add an import
    +from wikitutorial.models import Page
    +
    +@view_config(name='add_page', context='.models.Wiki',
    +             renderer='templates/edit.pt')
    +
    +
    +
    +
    +

    The View Function

    +
    +@view_config(...) #<- already there.
    +def add_page(context, request):
    +    pagename = request.subpath[0]
    +    if 'form.submitted' in request.params:
    +        body = request.params['body']
    +        page = Page(body)
    +        page.__name__ = pagename
    +        page.__parent__ = context
    +        context[pagename] = page
    +        return HTTPFound(location = request.resource_url(page))
    +    save_url = request.resource_url(context, 'add_page', pagename)
    +    page = Page('')
    +    page.__name__ = pagename
    +    page.__parent__ = context
    +    return dict(page=page, save_url=save_url)
    +
    +
    +
    +

    A Few Notes

    +

    Note that this view also has a name.

    +

    pagename = request.subpath[0] gives us the first element of the path +after the current context and view name. What is that?

    +

    Notice that here is where we set the __name__ and __parent__ +attributes of our new Page.

    +

    We add a new Page to the wiki as if the wiki were a Python dict: +context[pagename] = page

    +
    +
    +

    One More Note

    +

    Look at the similarity in how a form is handled here to the way it is handled +in Django and Flask (in pseudocode):

    +
    +if the_form_is_submitted:
    +    handle_the_form()
    +    return go_to_the_success_url()
    +return an_empty_form()
    +
    +

    Forms that modify data should only be handled on POST.

    +

    Could you improve this code to ensure that?

    +
    +
    +

    And a Question

    +

    Why do we create a new, empty Page object at the end of the add_page view?

    +
    +
    +

    Check Your Tests

    +
    +(pyramidenv)$ python setup.py test
    +...
    +test_it_notsubmitted (wikitutorial.tests.AddPageTests) ... ok
    +test_it_submitted (wikitutorial.tests.AddPageTests) ... ok
    +test_initialization (wikitutorial.tests.AppmakerTests) ... ok
    +test_it_notsubmitted (wikitutorial.tests.EditPageTests) ... ok
    +test_it_submitted (wikitutorial.tests.EditPageTests) ... ok
    +test_constructor (wikitutorial.tests.PageModelTests) ... ok
    +test_it (wikitutorial.tests.PageViewTests) ... ok
    +test_constructor (wikitutorial.tests.WikiModelTests) ... ok
    +test_redirect (wikitutorial.tests.WikiViewTests) ... ok
    +
    +----------------------------------------------------------------------
    +Ran 9 tests in 0.111s
    +
    +OK
    +
    +

    WAHOOOOOOO!!!

    +
    +
    +

    In-Class Exercises

    +

    Try to accomplish as many of these as you can before you leave:

    +
      +
    • Make the add_page view show "Adding <NewPage>" in the header (do not create +a new template to do this)
    • +
    • Make the edit_page and add_page views only change data on POST.
    • +
    • Make the link that says "You can return to the FrontPage" disappear when you +are viewing the front page.
    • +
    +
    +
    + + From 196e902c001253aaf33b2cc4864ec4c4f49743e6 Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 28 Jul 2013 21:57:40 -0700 Subject: [PATCH 061/114] add readings list --- readings.html | 321 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 321 insertions(+) create mode 100644 readings.html diff --git a/readings.html b/readings.html new file mode 100644 index 00000000..671e2960 --- /dev/null +++ b/readings.html @@ -0,0 +1,321 @@ + + + + + + + + + + Course Readings — Python Web Programming Workshop 1.0 documentation + + + + + + + + + + + + + + +
    +
    +
    +
    + +
    +

    Course Readings¶

    +

    Web programming is a deep pool. There’s more to cover than a one-week course +could ever hope to accomplish. To that end, I’ve compiled a list of related +readings that will support the information you’ll learn in class. Think of +this as supplemental materials. You can read it at your leisure to help +increase both the depth and breadth of your knowledge.

    +

    The readings are organized like the class, by day, time and topic.

    +
    +

    Session 1 - TCP/IP and Sockets¶

    + +

    In addition, you may find it interesting to take a look at ZeroMQ, a +next-generation implementation of the socket concept built with parallel and +networked computing in mind:

    + +
    +
    +

    Session 2 - Web Protocols¶

    + +

    Python offers a number of external libraries that offer extended support for +covered web protocols, or support for protocols not covered in the Standard +Library:

    +
      +
    • httplib2 - A comprehensive HTTP client library that supports many features +left out of other HTTP libraries.
    • +
    • requests - ”... an Apache2 Licensed HTTP library, written in Python, for +human beings.”
    • +
    • paramiko - “a module for python 2.5 or greater that implements the SSH2 +protocol for secure (encrypted and authenticated) connections to remote +machines”
    • +
    +

    For a historical perspective on how protocols can change (as well as how they +remain unchanged) over time, skim these specifications for HTTP and SMTP:

    + +
    +
    +

    Session 3 - APIs and Mashups¶

    + +

    Python offers a number of solid external libraries to support Web Services, +both from the side of production and consumption:

    +
      +
    • BeautifulSoup - “You didn’t write that awful page. You’re just trying to +get some data out of it. Right now, you don’t really care what HTML is +supposed to look like. Neither does this parser.”
    • +
    • httplib2 - A comprehensive HTTP client library that supports many features +left out of other HTTP libraries.
    • +
    • rpclib - a simple, easily extendible soap library that provides several +useful tools for creating, publishing and consuming soap web services
    • +
    • Suds - a lightweight SOAP python client for consuming Web Services.
    • +
    • restkit - an HTTP resource kit for Python. It allows you to easily access +to HTTP resource and build objects around it.
    • +
    +
    +
    +

    Session 4 - CGI and WSGI¶

    + +

    For alternative introductions to WSGI, try these two sources. They are a bit +more minimal and may be easier to comprehend off the bat.

    + +
    +
    +

    Sessions 5 & 6 - Flask¶

    + +

    Flask is the microframework I’ve chosen as the subject of this course, but it +is by no means the only choice. A strong argument can be made in favor of any +of the following options, or even others. Your best bet is to experiment and +pick the one that fits your brain best.

    +
      +
    • Bottle: Python Web Framework.
    • +
    • CherryPy: A Minimalize Python Web Framework.
    • +
    • Web.py: Think about the ideal way to write a web app. +Write the code to make it happen.
    • +
    • Aspen: A Python web framework that makes the most of +the filesystem.
    • +
    +
    +
    +

    Sessions 7 & 8 - Django¶

    +

    Though it’s way too much to read in any one sitting (or even in 10 or 20), the +Django documentation is excellent and thorough. As a start, take a look at +these sections:

    +
      +
    • Django at a Glance - introduction to +the concepts and execution of Django
    • +
    • Quick Install Guide - lightweight +instructions on installing Django. Use Python 2.6, or 2.7.
    • +
    • Django Tutorial +- The tutorial covers many of the same concepts we will in class. Go over it +to re-enforce the lessons you learn
    • +
    • Using Django - far more +in-depth information about core topics in Django. In particular, the +installation instructions here can be helpful when you run into trouble.
    • +
    +

    Bookmark the Django Documentation homepage. It really is “everything you need +to know about Django”

    +

    When you have some time, read Django Design Philosophies - for some +well-considered words on why Django is the way it is.

    +

    Conversely, for some well-considered criticisms of Django and the way it is, +read this in-depth comparison of SQLAlchemy and the Django ORM by the creator +of Flask: SQLAlchemy and You

    +

    Or consider viewing this video +of a talk given at DjangoCon 2012 by Chris McDonough, one of the driving +forces behind the Pyramid framework.

    +
    +
    +

    Sessions 9 & 10 - Pyramid¶

    +

    Why you should care about Traversal.

    +

    Compare and contrast forms of dispatch in Pyramid:

    + +

    Learn a bit about the ZODB

    + +

    Learn a bit about the Chameleon ZPT templating language:

    + +

    In particular, pay attention to:

    + +

    You might also consider keeping the following around for reference:

    +
      +
    • The ZODB Book - A work in +progress by Carlos De La Guardia.
    • +
    • The ZPT Appendix to +the Zope Book. It was written for ZPT, but applies also to Chameleon.
    • +
    +

    Finally, if you are interested in such things, read this eloquent explanation +of the decisions that went into Pyramid’s design:

    + +
    +
    + + +
    +
    +
    +
    +
    +

    Table Of Contents

    + + +

    Previous topic

    +

    Course Outline

    +

    This Page

    + + + +
    +
    +
    +
    + + + + \ No newline at end of file From c20ff62a8e5e0975a3fbc39b9702d9b3958c8d64 Mon Sep 17 00:00:00 2001 From: cewing Date: Wed, 31 Jul 2013 01:13:21 -0700 Subject: [PATCH 062/114] finish session10 presentation, fix readings list canonical links --- presentations/session10.html | 449 ++++++++++++++++++++++++++++++++++- readings.html | 6 +- searchindex.js | 2 +- 3 files changed, 447 insertions(+), 10 deletions(-) diff --git a/presentations/session10.html b/presentations/session10.html index 796597f6..62c60e53 100644 --- a/presentations/session10.html +++ b/presentations/session10.html @@ -455,17 +455,454 @@

    Check Your Tests

    WAHOOOOOOO!!!

    -
    -

    In-Class Exercises

    -

    Try to accomplish as many of these as you can before you leave:

    +
    +

    Security

    +

    We've got a solid start on a wiki that works.

    +

    But everyone who visits the wiki can author and edit pages.

    +

    It's a recipe for TOTAL CHAOS

    +

    Let's lock it down a bit.

    +
    +
    +

    AuthN and AuthZ

    +

    There are two aspects to the process of access control online.

      -
    • Make the add_page view show "Adding <NewPage>" in the header (do not create -a new template to do this)
    • -
    • Make the edit_page and add_page views only change data on POST.
    • +
    • Authentication: Verification of the identity of a principal
    • +
    • Authorization: Enumeration of the rights of that principal in a +context.
    • +
    +

    All systems with access control involve both of these aspects.

    +

    AuthZ in our Flask and Django apps was minimal

    +
    +
    +

    Pyramid Security

    +

    In Pyramid these two aspects are handled by separate configuration settings:

    +
      +
    • config.set_authentication_policy(AuthnPolicy())
    • +
    • config.set_authorization_policy(AuthzPolicy())
    • +
    +

    If you set one, you must set the other.

    +

    Pyramid comes with a few policy classes included.

    +

    You can also roll your own, so long as they fulfill the contract.

    +
    +
    +

    Our Wiki Security

    +

    We'll be using two built-in policies today:

    +
      +
    • AuthTktAuthenticationPolicy: sets an expirable authentication ticket +cookie.
    • +
    • ACLAuthorizationPolicy: uses an Access Control List to grant +permissions to principals
    • +
    +

    Our access control system will have the following properties:

    +
      +
    • Everyone can view pages
    • +
    • Users who log in may be added to an 'editors' group
    • +
    • Editors can add and edit pages.
    • +
    +
    +
    +

    Testing First

    +

    Let's begin by testing for our desired properties.

    +

    We'll need to create a new TestCase for this.

    +

    This TestCase will be a bit different. We need a request to engage security

    +

    These tests will be functional tests where our earlier tests were unit +tests

    +

    We'll set up a zodb and a full-fledged app.

    +
    +
    +

    In tests.py

    +

    We'll need some information for testing logging in:

    +
    +class FunctionalTests(unittest.TestCase):
    +
    +    viewer_login = '/login?login=viewer&password=viewer' \
    +                   '&came_from=FrontPage&form.submitted=Login'
    +    viewer_wrong_login = '/login?login=viewer&password=incorrect' \
    +                   '&came_from=FrontPage&form.submitted=Login'
    +    editor_login = '/login?login=editor&password=editor' \
    +                   '&came_from=FrontPage&form.submitted=Login'
    +
    +
    +
    +

    Test Setup

    +

    We'll also need to create an app and provide a zodb to hold it:

    +
    +class FunctionalTests(unittest.TestCase):
    +    #...
    +    def setUp(self):
    +        import tempfile
    +        import os.path
    +        from wikitutorial import main
    +        self.tmpdir = tempfile.mkdtemp()
    +
    +        dbpath = os.path.join( self.tmpdir, 'test.db')
    +        uri = 'file://' + dbpath
    +        settings = { 'zodbconn.uri' : uri ,
    +                     'pyramid.includes': ['pyramid_zodbconn',
    +                                          'pyramid_tm'] }
    +
    +        app = main({}, **settings)
    +        self.db = app.registry._zodb_databases['']
    +        from webtest import TestApp
    +        self.testapp = TestApp(app)
    +
    +
    +
    +

    Test Teardown

    +

    And since we set all that up, we need to destroy it after each test, too:

    +
    +def tearDown(self):
    +    import shutil
    +    self.db.close()
    +    shutil.rmtree( self.tmpdir )
    +
    +
    +
    +

    Testing Login

    +

    Let's add a few tests to demonstrate that AuthN works:

    +
    +def test_successful_log_in(self):
    +    res = self.testapp.get( self.viewer_login, status=302)
    +    self.assertEqual(res.location, 'http://localhost/FrontPage')
    +
    +def test_failed_log_in(self):
    +    res = self.testapp.get( self.viewer_wrong_login, status=200)
    +    self.assertTrue('login' in res.body)
    +
    +
    +
    +

    Testing Anonymous Users

    +

    We should verify that anonymous users can see pages, but cannot edit or add:

    +
    +def test_anonymous_user_cannot_edit(self):
    +    res = self.testapp.get('/FrontPage/edit_page', status=200)
    +    self.assertTrue('Login' in res.body)
    +
    +def test_anonymous_user_cannot_add(self):
    +    res = self.testapp.get('/add_page/NewPage', status=200)
    +    self.assertTrue('Login' in res.body)
    +
    +
    +
    +

    Testing Viewers

    +

    Authenticated users who are not editors should be the same:

    +
    +def test_viewer_user_cannot_edit(self):
    +    res = self.testapp.get( self.viewer_login, status=302)
    +    res = self.testapp.get('/FrontPage/edit_page', status=200)
    +    self.assertTrue('Login' in res.body)
    +
    +def test_viewer_user_cannot_add(self):
    +    res = self.testapp.get( self.viewer_login, status=302)
    +    res = self.testapp.get('/add_page/NewPage', status=200)
    +    self.assertTrue('Login' in res.body)
    +
    +
    +
    +

    Testing Editors

    +

    Finally, editors should be able to do it all:

    +
    +def test_editors_member_user_can_edit(self):
    +    res = self.testapp.get( self.editor_login, status=302)
    +    res = self.testapp.get('/FrontPage/edit_page', status=200)
    +    self.assertTrue('Editing' in res.body)
    +
    +def test_editors_member_user_can_add(self):
    +    res = self.testapp.get( self.editor_login, status=302)
    +    res = self.testapp.get('/add_page/NewPage', status=200)
    +    self.assertTrue('Editing' in res.body)
    +
    +def test_editors_member_user_can_view(self):
    +    res = self.testapp.get( self.editor_login, status=302)
    +    res = self.testapp.get('/FrontPage', status=200)
    +    self.assertTrue('FrontPage' in res.body)
    +
    +
    +
    +

    One Bit of Cleanup

    +

    These lines in our test setup will cause us problems:

    +
    +from webtest import TestApp
    +self.testapp = TestApp(app)
    +
    +

    We have introduced a dependency on the package webtest

    +

    Our package should be explicit about its dependencies.

    +

    Do you remember how to declare a dependency?

    +
    +
    +

    Fix setup.py / re-install

    +

    In setup.py find requires and add the following:

    +
    +requires = [
    +    #...
    +    'docutils',
    +    'webtest', #<- we are adding this line
    +    ]
    +
    +

    Then, re-install our package using develop:

    +
    +(pyramidenv)$ python setup.py develop
    +
    +
    +
    +

    Run Our Tests

    +

    We can run these tests, to verify that they don't just work:

    +
    +(pyramidenv)$ python setup.py test
    +
    +----------------------------------------------------------------------
    +Ran 18 tests in 1.032s
    +
    +FAILED (failures=2, errors=7)
    +
    +

    Great! Lot's of problems to fix!

    +
    +
    +

    Contextual ACLs

    +

    In Pyramid, ACL security is contextual.

    +

    What a user is allowed to do is dependent on context.

    +

    In a traversal app, context is defined as the object you are viewing.

    +

    A view can require a given permission.

    +

    The object viewed is responsible for determining who has what rights.

    +
    +
    +

    ACL Inheritance

    +

    Under the default ACL policy, permissions are inherited.

    +

    If this object does not declare an ACL, then its __parent__ is checked

    +

    If you get all the way back to the root without hitting an ACL, then access is +denied.

    +

    Thus, the default ACL policy is secure by default.

    +

    Let's set up our policy.

    +
    +
    +

    Our Users and Groups

    +

    Create a new file security.py in your wikitutorial package and add the +following:

    +
    +USERS = {
    +    'editor': 'editor',
    +    'viewer': 'viewer',
    +}
    +
    +GROUPS = {
    +    'editor': ['group:editors'],
    +}
    +
    +def groupfinder(userid, request):
    +    if userid in USERS:
    +        return GROUPS.get(userid, [])
    +
    +
    +
    +

    Security Configuration

    +

    In our __init__.py file, add the following:

    +
    +# a few imports
    +from pyramid.authentication import AuthTktAuthenticationPolicy
    +from pyramid.authorization import ACLAuthorizationPolicy
    +from .security import groupfinder
    +
    +# and some configuration
    +def main(global_config, **settings):
    +    """ This function returns a Pyramid WSGI application.
    +    """
    +    authn_policy = AuthTktAuthenticationPolicy(
    +        'youdontknowit', callback=groupfinder, hashalg='sha512')
    +    authz_policy = ACLAuthorizationPolicy()
    +    config = Configurator(...) #<- already there
    +    config.set_authentication_policy(authn_policy)
    +    config.set_authorization_policy(authz_policy)
    +    #...
    +
    +
    +
    +

    Add an ACL

    +

    We can set a global ACL on our wiki root class:

    +
    +# add an import
    +from pyramid.security import Allow, Everyone
    +
    +# and alter our wiki class:
    +class Wiki(PersistentMapping):
    +    #...
    +    __acl__ = [(Allow, Everyone, 'view'),
    +               (Allow, 'group:editors', 'edit')]
    +
    +

    An ACL is a list of Access Control Entries

    +

    Each ACE is a tuple of action, principal and permission

    +
    +
    +

    Require Permission

    +

    In order to match, an ACE must Allow the current principal the required +permission

    +

    Our views are responsible for saying what permission is required

    +
    +# for the view_page() view:
    +@view_config(context='.models.Page', renderer='templates/view.pt',
    +             permission='view')
    +
    +# for add_page() and edit_page()
    +@view_config(route_name='<name>', renderer='templates/edit.pt',
    +             permission='edit')
    +
    +
    +
    +

    Provide Login/Logout

    +

    We need to allow users a way to log in and out. Start with the views:

    +
    +# add imports to views.py
    +from pyramid.view import forbidden_view_config
    +from pyramid.security import remember, forget
    +from wikitutorial.security import USERS
    +
    +# and a logout view:
    +@view_config(context='.models.Wiki', name='logout')
    +def logout(context, request):
    +    headers = forget(request)
    +    return HTTPFound(location=request.resource_url(context),
    +                     headers=headers)
    +
    +

    Next, add the login view

    +
    +
    +

    The Login View

    +
    +@view_config(context='.models.Wiki', name='login',
    +             renderer='templates/login.pt')
    +@forbidden_view_config(renderer='templates/login.pt')
    +def login(request):
    +    login_url = request.resource_url(request.context, 'login')
    +    referrer = request.url
    +    if referrer == login_url:
    +        referrer = '/' # never use the login form itself as came_from
    +    came_from = request.params.get('came_from', referrer)
    +    message = login = password = ''
    +    if 'form.submitted' in request.params:
    +        login = request.params['login']
    +        password = request.params['password']
    +        if USERS.get(login) == password:
    +            headers = remember(request, login)
    +            return HTTPFound(location = came_from,
    +                             headers = headers)
    +        message = 'Failed login'
    +
    +    ctxt = dict(message=message, came_from=came_from,
    +                login=login, password=password,
    +                url=request.application_url + '/login',)
    +    return ctxt
    +
    +
    +
    +

    The Login Template

    +

    Add login.pt to the templates directory

    +
    +<metal:main use-macro="load: base.pt">
    +  <metal:pagename metal:fill-slot="page-name">
    +    <b>Login</b><br/>
    +    <span tal:replace="message"/>
    +  </metal:pagename>
    +  <metal:login metal:fill-slot="login"></metal:login>
    +  <metal:content metal:fill-slot="main-content">
    +    <form action="${url}" method="post">
    +      <input type="hidden" name="came_from" value="${came_from}"/>
    +      <input type="text" name="login" value="${login}"/><br/>
    +      <input type="password" name="password"
    +             value="${password}"/><br/>
    +      <input type="submit" name="form.submitted" value="Log In"/>
    +    </form>
    +  </metal:content>
    +</metal:main>
    +
    +
    + +
    +

    Conditional Logout

    +

    Look at base.pt:

    +
    +<metal:login define-slot="login">
    +<span tal:condition="logged_in">
    +  <a href="${request.application_url}/logout">Logout</a>
    +</span>
    +</metal:login>
    +
    +

    Showing the 'logout' link is dependent on logged_in

    +

    We have to make sure that this boolean flag is in the template context

    +
    +
    +

    Add logged_in Flag

    +

    Back in views.py add the following import:

    +
    +from pyramid.security import authenticated_userid
    +
    +

    This will return the id of the authenticated user, or None.

    +
    +

    Add this to all return contexts for our views (except login):

    +
    +logged_in = authenticated_userid(request)
    +
    +
    +
    +
    +

    Check Your Work

    +
    +(pyramidenv)$ python setup.py test
    +...
    +test_anonymous_user_cannot_add (wikitutorial.tests.FunctionalTests) ... ok
    +test_anonymous_user_cannot_edit (wikitutorial.tests.FunctionalTests) ... ok
    +test_editors_member_user_can_add (wikitutorial.tests.FunctionalTests) ... ok
    +test_editors_member_user_can_edit (wikitutorial.tests.FunctionalTests) ... ok
    +test_editors_member_user_can_view (wikitutorial.tests.FunctionalTests) ... ok
    +test_failed_log_in (wikitutorial.tests.FunctionalTests) ... ok
    +test_successful_log_in (wikitutorial.tests.FunctionalTests) ... ok
    +test_viewer_user_cannot_add (wikitutorial.tests.FunctionalTests) ... ok
    +test_viewer_user_cannot_edit (wikitutorial.tests.FunctionalTests) ... ok
    +...
    +----------------------------------------------------------------------
    +Ran 18 tests in 1.143s
    +
    +OK
    +
    +
    +
    +

    Reap the Reward

    +

    Check your work in a browser:

    +
    +(pyramidenv)$ pserve development.ini
    +Starting server in PID 36414.
    +serving on http://0.0.0.0:6543
    +
    +

    Visit http://localhost:6543 and play for a bit

    +
    +
    +

    Next Steps

    +

    We've got a workable basic wiki here, but there are some improvements that +could be nice:

    +
      +
    • Make the add_page view show "Adding <NewPage>" in the header without +creating a new template
    • +
    • Improve messaging to let users know when they've saved or created a page.
    • Make the link that says "You can return to the FrontPage" disappear when you are viewing the front page.
    • +
    • Improve security by forcing the edit_page and add_page views only change +data on POST.
    • +
    • Improve the security model a bit: 'viewers' can add pages, and retain the +ability to edit pages they created.
    +
    +

    Closing Up

    +

    But all that's for another time.

    +

    For this session, we are done.

    +
    diff --git a/readings.html b/readings.html index 671e2960..5195780c 100644 --- a/readings.html +++ b/readings.html @@ -214,11 +214,11 @@

    Sessions 7 & 8 - Django

    Sessions 9 & 10 - Pyramid¶

    -

    Why you should care about Traversal.

    +

    Why you should care about Traversal.

    Compare and contrast forms of dispatch in Pyramid:

    Learn a bit about the ZODB

    diff --git a/searchindex.js b/searchindex.js index a9a548c6..aef1dd4e 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{breadth:4,all:[1,3,2],code:[0,3,4],queri:4,consum:[3,4],commun:[1,3],focus:3,four:[],concept:[1,3,4],skim:4,ronach:4,abil:[],edu:4,follow:[0,4],decid:3,instructor:0,advantag:3,flask:[1,3,4],tomayko:4,send:3,human:4,program:[1,3,4],decis:[3,4],under:3,sens:[],spec:4,introduc:3,fax:[],sourc:[0,3,4],string:4,chameleon:[3,4],far:[3,4],mcdonough:4,util:4,wikipedia:4,govern:[1,3],veri:[3,4],word:4,brows:3,chapel:1,unexcus:[],hour:[0,3],level:1,button:2,list:[1,2,4],"try":4,imaplib:3,supplement:4,team:[],small:[0,3],wednesdai:[],pleas:[],enterpris:[],repres:3,outlin:[1,3],representational_state_transf:4,core:4,htm:4,restkit:4,design:[1,3,4],pass:[0,3],further:[],carlo:4,click:2,even:[3,4],index:[],what:[0,1,3,4],sud:4,compar:[0,4],repli:3,section:4,workflow:[],abl:0,brief:[3,4],access:[1,3,4],delet:1,version:[1,3],"new":[2,3],appeal:[],ever:[3,4],"public":[],contrast:[1,4],can:[0,1,2,3,4],hasn:[],full:[1,3],deriv:3,berkelei:4,gener:4,learn:[0,1,3,4],here:[1,2,4],met:0,let:[],inher:3,along:[1,3,4],strong:4,search:1,convers:4,technolog:[],host:[],prior:[],vener:[],base:[1,3],doctest:[],pick:4,studi:4,transact:3,chanc:3,ourselv:[],via:[0,3],repositori:[0,2],extra:[],apach:[],modul:[1,3,4],gatewai:3,api:[1,3,4],seattl:[],instal:[1,3,4],txt:[],plone:[],cloud:[],highli:1,kessler:4,from:[1,2,3,4],describ:0,memori:1,univers:[],regist:[],two:4,todai:[],next:[3,4],websit:[0,2,3],few:[],live:[],morn:3,recommend:[],scope:0,type:[],tell:2,memeori:[],desir:3,minim:4,share:[],relat:4,reign:[],enhanc:[],downtown:[],appendix:4,indic:[],particular:4,postgresql:[],must:[0,1],topic:4,account:2,retriev:4,valuabl:[],prepar:[],work:[0,1,3,4],focu:[3,4],histori:[],remain:4,thursdai:[],http2:[],purpos:[0,3],root:3,repoz:3,quickstart:4,give:1,process:[1,3],registr:1,smtp:4,accept:[],autumn:[],critic:4,tag:[],explor:[1,3],tal:[3,4],onlin:[0,3],acl:3,differenti:[],cours:[0,1,2,3,4],end:[0,1,3,4],winter:[],sit:4,anoth:3,comfort:1,xmlrpclib:3,write:[2,3,4],concis:3,vital:0,low:1,answer:0,instead:[],simpl:[3,4],chri:4,updat:[],product:4,mar:[],resourc:4,attend:1,clone:2,after:[1,3,2],sundai:[],lab:[],prerequisit:1,befor:3,mac:[],attent:4,date:[],philosophi:4,associ:[],parallel:4,demonstr:3,goal:[0,3],classroom:[],ssh2:4,"short":[2,3,4],practic:[],third:[],interpol:3,secur:4,django:[1,3,4],tale:4,inform:[0,1,3,4],chief:3,dispar:3,combin:[1,3],allow:[3,4],order:[1,3],talk:[3,4],oper:[1,3],tty:[],help:[1,3,4],hypertext:4,insight:3,soon:[],brain:4,through:[1,4],left:4,curios:3,dynam:3,paramet:0,style:3,render:3,fit:4,how:[0,1,3,4],chosen:4,complex:3,comprehend:4,late:[],grade:[],offic:[],lightn:[],rapidli:[],persist:3,comprehens:4,mail:[],might:4,easier:4,pce:[],them:[1,3,2],good:[1,3],"return":[],greater:4,thei:[1,3,4],python:[0,1,3,4],dan:[],killer:3,dai:[0,1,3,4],initi:4,number:4,cew:2,framework:[1,3,4],hateoa:4,jinja2:[3,4],httplib2:4,front:3,tilkov:4,discuss:3,introduct:[3,4],choic:[1,3,4],term:[],name:4,anyth:0,edit:3,perspect:4,didn:4,instruct:[0,3,4],bonu:[],separ:1,micro:[],slide:[1,3],each:[1,3],debug:4,found:[],went:4,gui:[],mean:[3,4],compil:4,domain:4,laboratori:1,individu:[],hard:3,continu:3,weeknn:2,realli:4,foreward:4,connect:4,doug:3,our:[1,3,4],happen:4,extract:3,out:[3,4],variabl:3,accomplish:4,network:[1,3,4],influenc:3,fantast:1,defend:4,publish:[3,4],content:1,dso:[],hill:1,rel:3,internet:[1,3,4],dive:3,integr:[0,1],model:[2,3],navig:1,advanc:[],differ:3,pub:4,standard:[1,3,4],quick:[1,4],reason:4,zodb:[3,4],org:4,fridai:0,care:4,question:0,could:4,keep:[1,4],filter:[],thing:4,lucumr:[],enforc:4,place:2,principl:1,assign:[0,2],south:[],first:[3,4],origin:[2,3,4],softwar:0,rang:1,directli:0,feel:[],onc:[],qualiti:3,scene:3,yourself:1,mai:4,unlik:3,alreadi:3,done:3,restkit_:[],horribl:[],open:[1,4],given:[1,3,4],"long":3,script:[2,3,4],bookmark:4,data:[3,4],top:[2,4],system:[1,3,4],messag:3,stack:[1,3],master:2,too:4,zeromq:4,scheme:3,"final":[0,1,2,3,4],store:[],includ:[0,1],option:4,relationship:[],namespac:3,tool:[1,3,4],copi:2,took:2,specifi:3,task:1,employ:[],github:[0,2],pars:4,mostli:4,eibrari:[],than:4,serv:3,king:[],grew:3,provid:[1,3,4],tree:[],lion:[],structur:[1,3],exampl:[1,3,4],project:[0,1,3],matter:3,were:0,video:4,schema:[],bet:4,browser:3,"function":3,comput:[1,3,4],modern:3,mind:4,ani:[0,1,3,4],packag:0,pylon:3,have:[0,1,2,3,4],tabl:1,need:[1,2,3,4],seen:3,paramiko:4,strength:[3,4],techniqu:[],equival:[],rout:4,thorough:4,note:2,also:[0,1,3,4],ideal:4,contact:[],accommod:[],take:[0,3,4],which:[0,3,4],environ:1,soap:[3,4],singl:[1,3],begin:[3,4],sure:[],aspen:4,distribut:[],though:4,usernam:2,object:4,reach:3,most:[3,4],plai:3,plan:[],deploi:[],phase:[],homepag:4,"class":[0,1,2,3,4],don:[1,2,4],filesystem:[3,4],dens:1,clear:3,request:[2,3,4],drive:[3,4],doe:[1,3,4],part:0,carolin:[],determin:3,unchang:4,someth:4,fact:3,wsgi:[1,3,4],think:4,show:0,text:0,xcode:[],syntax:1,bring:[],session:[1,3,4],corner:2,find:[2,3,4],ground:1,xml:3,onli:4,just:4,explain:4,configur:3,activ:1,behind:4,should:[0,1,3,4],jan:[],disert:4,suppos:4,rich:[1,3],smtplib:3,local:[0,2],over:[1,3,4],hope:4,carolina:1,move:3,variou:3,get:[0,2,3,4],familiar:[1,4],express:[1,4],curiou:[],becaus:2,repo:[],solut:[],tcp:[1,3,4],progress:[1,4],increas:4,requir:[0,1],truli:[],bat:4,enabl:1,organ:4,administ:3,email:[0,2],rfc:4,remot:4,common:3,contain:[0,2],cri:[],where:[],view:[3,4],wiki:[3,4],certif:[],set:1,reread:[],creator:[3,4],knowledg:[1,3,4],disucss:3,see:[0,3],result:4,sea:3,respons:3,fail:[],close:2,htmlparser:3,best:4,subject:4,wire:1,eachoth:[],databas:[3,4],review:2,particip:1,urllib:3,label:2,favor:4,enough:[],won:3,between:[1,3],"import":[],neither:4,experi:4,approach:1,across:[1,3],attribut:3,altern:4,ftplib:[],internet_protocol:[],august:1,extend:[3,4],weak:3,metal:4,extens:1,job:2,add:2,consumpt:[3,4],solv:3,come:[],addit:[1,4],both:[1,3,4],toward:[],last:0,cycl:3,pymotw:[],trove:3,wsgiref:4,tour:[],tutori:4,logout:3,login:3,com:2,load:3,among:3,technic:4,point:[],overview:[1,4],unittest:[3,4],jog:1,rfc2616:[],dispatch:[3,4],walk:4,header:[],written:4,linux:[],tuesdai:[],throughout:1,admin:3,uci:4,duplic:[],quit:3,creat:[0,1,2,3,4],coupl:3,due:0,been:3,hellmann:3,compon:4,json:[3,4],much:[0,3,4],interest:4,basic:[1,3,4],presentations_:[],eloqu:4,templat:[3,4],life:3,treasur:3,emphas:1,underpin:[],great:3,argument:4,athom:2,understand:1,docxmlrpcserv:3,ador:[],educ:[],present:[1,3],"case":4,look:[0,3,4],solid:[1,4],servic:[3,4],histor:[1,4],cursor:4,defin:4,"while":[2,3],outcom:0,abov:3,wild:3,exist:[],dbapi2:3,python_web:2,earli:[],pyramid:[1,3,4],glanc:4,ripe:3,briandorsei:[],readm:0,non:[0,4],cherrypi:4,lightweight:4,week06:[],minutia:[],sever:[3,4],disabl:[],develop:[1,3],demostr:3,author:3,receiv:3,newcom:3,make:[2,3,4],mayb:3,same:[3,4],html:[1,3,4],split:3,testrunn:3,zope:[3,4],pai:4,document:[1,2,4],complet:[0,1,2,3,4],week:[0,1,3,4],http:[2,3,4],assist:0,effect:[],cement:1,kit:4,driven:3,user:0,student:[0,1],mani:4,extern:4,chang:[2,4],built:[3,4],"break":3,travers:[3,4],appropri:[0,3],off:[0,4],lunch:3,macro:4,coursework:[],well:[1,4],inherit:[],without:3,person:[],client:[3,4],command:1,greatest:4,thi:[0,1,2,3,4],choos:1,everyth:[1,4],portabl:1,spend:[],latest:4,explan:4,compromis:1,protocol:[1,3,4],entri:3,nosql:[],excel:4,laptop:0,rest:[3,4],weekli:[],shape:1,scrape:3,aspect:0,mysql:[],languag:[1,3,4],previous:[],web:[1,3,4],versu:1,now:[1,2,4],easi:4,drawback:3,apache2:4,blog:3,armin:4,book:4,blob:[],exercis:[1,3],schedul:3,save:[],app:[3,4],homework:[],build:[1,3,4],real:3,applic:[1,3,4],week01:[],march:0,around:[3,4],week04:[],format:3,read:[1,3,4],httplib:3,arguabl:3,five:[1,3],know:[1,4],world:[3,4],bit:[3,4],licens:4,apart:[],uwpython_web:[],leisur:4,like:[2,3,4],specif:[3,4],microblog:3,altough:4,manifest:3,benefit:3,either:[],week02:[],page:[1,2,3,4],underli:[1,3],www:4,right:[1,2,3,4],often:4,interact:[0,1,3],some:[0,1,2,3,4],back:[2,3],certain:[],satisfactori:[],authent:4,week03:[],server:[3,4],librari:[1,3,4],virtualenv:1,guid:4,cgihttpserv:4,easili:4,broad:1,noon:[],deploy:[],februari:[],lear:3,track:3,leav:[],unit:4,fast:[],three:3,notabl:3,refer:[1,3,4],cgi:[1,3,4],cgi_exampl:[],investig:3,run:[0,3,4],power:[],usag:[1,4],confer:3,speak:3,popular:3,step:2,dissert:4,although:3,januari:[],feb:[],appli:4,chapter:4,comparison:4,about:[0,3,4],simplest:[],actual:[2,4],socket:[1,3,4],constraint:4,materi:4,prove:3,shield:3,side:4,microframework:[3,4],afternoon:3,commit:2,produc:3,block:[],fulfil:[],own:[2,3],effici:[1,3],consid:4,primarili:4,visit:2,within:3,washington:[],easy_instal:[],zpt:[3,4],assess:[],orm:[3,4],ensur:0,opportun:[],lesson:[1,4],your:[1,2,3,4],manag:[],guardia:4,git:2,log:2,wai:[1,3,4],transfer:4,execut:[1,4],support:[1,3,4],xmlrpc:[3,4],submit:[0,2],custom:3,avail:0,start:[1,3,4],workshop:1,interfac:[3,4],pocoo:[],suit:[3,4],forward:[],submiss:[],machin:[1,2,3,4],select:1,fork:2,bottl:4,sqlite3:4,north:1,form:[0,3,4],offer:[3,4],forc:4,week05:[],criteria:3,idea:[1,3],wireless:1,rpclib:4,sqlalchemi:4,link:[0,2],gain:[1,3],rfc1945:[],line:1,suppli:[],pull:2,made:[2,4],consist:3,possibl:3,wish:[],displai:[],troubl:4,until:[],url:4,below:[],those:3,absenc:[],fundament:[1,3],site:0,problem:3,more:[1,3,4],similar:3,expect:1,featur:[3,4],evalu:[0,3],cover:[1,3,4],pragmat:[],parser:4,deep:4,lectur:[1,3],beautifulsoup:[3,4],intro:[1,3,4],implement:[1,3,4],file:[1,3,2],pip:[],check:0,echo:3,again:4,successfulli:0,encrypt:4,want:[0,1,3,2],mashup:[1,3,4],when:[2,3,4],detail:[],virtual:[],field:4,other:[1,3,4],rdbm:[],test:[3,4],tie:3,you:[0,1,2,3,4],nice:0,matur:[],repeat:[],intend:1,clean:1,fulli:3,devot:0,why:4,urllib2:3,gcc:[],djangocon:4,intent:1,mondai:[],sql:3,pool:4,warn:[],wife:4,directori:[2,3],wifi:[],descript:0,depth:[1,4],train:2,ignor:4,time:[0,3,4],push:2,hello:4,daili:3},objtypes:{},titles:["Final Project","Python Web Programming Workshop","Assignments","Course Outline","Course Readings"],objnames:{},filenames:["project","index","assignments","outline","readings"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{breadth:2,all:[0,1],code:[1,2],queri:2,consum:[1,2],commun:[0,1],focus:1,four:[],concept:[0,1,2],skim:2,ronach:2,abil:[],edu:2,follow:2,although:1,decid:1,educ:[],git:[],flask:[0,1,2],tomayko:2,descript:[],send:1,human:2,program:[0,1,2],decis:[1,2],under:1,sens:[],spec:2,introduc:1,fax:[],sourc:[1,2],string:2,chameleon:[1,2],far:[1,2],mcdonough:2,util:2,govern:[0,1],veri:[1,2],word:2,brows:1,chapel:0,unexcus:[],hour:1,level:0,button:[],list:[0,2],"try":2,imaplib:1,supplement:2,kit:2,team:[],small:1,wednesdai:[],pleas:[],enterpris:[],outlin:[0,1],representational_state_transf:2,cgi_exampl:[],htm:2,request:[1,2],restkit:2,design:[0,1,2],pass:1,further:[],carlo:2,click:[],even:[1,2],index:[],what:[0,1,2],sud:2,compar:2,defin:2,repli:1,section:2,advanc:[],abl:[],brief:[1,2],mysql:[],access:[0,1,2],delet:0,version:[0,1],"new":1,appeal:[],ever:[1,2],"public":[],contrast:[0,2],can:[0,1,2],hasn:[],full:[0,1],deriv:1,berkelei:2,gener:2,learn:[0,1,2],here:[0,2],met:[],let:[],cursor:2,inher:1,along:[0,1,2],strong:2,ignor:2,leav:[],search:0,produc:1,convers:2,technolog:[],step:[],prior:[],zodb:[1,2],doctest:[],pick:2,chang:2,explain:2,chanc:1,ourselv:[],via:1,repositori:[],extra:[],activ:0,modul:[0,1,2],gatewai:1,api:[0,1,2],seattl:[],instal:[0,1,2],txt:[],plone:[],cloud:[],highli:0,jan:[],from:[0,1,2],describ:[],memori:0,univers:[],regist:[],two:2,todai:[],next:[1,2],websit:1,few:[],live:[],morn:1,recommend:[],scope:[],type:[],tell:[],memeori:[],desir:1,share:[],relat:2,reign:[],enhanc:[],downtown:[],appendix:2,indic:[],particular:2,actual:2,must:0,topic:2,account:[],retriev:2,valuabl:[],prepar:[],work:[0,1,2],focu:[1,2],histori:[],remain:2,week04:[],thursdai:[],http2:[],purpos:1,root:1,appropri:1,repoz:1,quickstart:2,give:0,process:[0,1],registr:0,smtp:2,accept:[],autumn:[],critic:2,tag:[],explor:[0,1],tal:[1,2],onlin:1,differenti:[],cours:[0,1,2],end:[0,1,2],winter:[],sit:2,anoth:1,comfort:0,write:[1,2],how:[0,1,2],vital:[],answer:[],instead:[],perspect:2,chri:2,updat:[],product:2,mar:[],resourc:2,attend:0,dive:1,after:[0,1],sundai:[],lab:[],befor:1,mac:[],particip:0,attent:2,date:[],philosophi:2,associ:[],parallel:2,demonstr:1,goal:1,classroom:[],"short":[1,2],practic:[],third:[],secur:2,django:[0,1,2],tale:2,inform:[0,1,2],chief:1,dispar:1,combin:[0,1],pocoo:[],allow:[1,2],order:[0,1],talk:[1,2],origin:[1,2],tty:[],help:[0,1,2],hypertext:2,insight:1,soon:[],brain:2,through:[0,2],dynam:1,paramet:[],style:1,directli:[],fit:2,concis:1,chosen:2,comprehend:2,late:[],feel:[],offic:[],lightn:[],rapidli:[],persist:1,comprehens:2,mail:[],might:2,easier:2,pce:[],them:[0,1],good:[0,1],"return":[],greater:2,thei:[0,1,2],python:[0,1,2],dan:[],killer:1,dai:[0,1,2],initi:2,scene:1,cew:[],framework:[0,1,2],hateoa:2,jinja2:[1,2],httplib2:2,front:1,studi:2,tilkov:2,discuss:1,introduct:[1,2],choic:[0,1,2],term:[],name:2,anyth:[],edit:1,simpl:[1,2],didn:2,unlik:1,bonu:[],separ:0,easili:2,slide:[0,1],each:[0,1],debug:2,found:[],went:2,gui:[],mean:[1,2],compil:2,everyth:[0,2],domain:2,laboratori:0,individu:[],hard:1,continu:1,weeknn:[],realli:2,ensur:[],connect:2,doug:1,our:[0,1,2],happen:2,extract:1,out:[1,2],variabl:1,accomplish:2,network:[0,1,2],ripe:1,influenc:1,open:[0,2],defend:2,publish:[1,2],content:0,dso:[],hill:0,rel:1,internet:[0,1,2],clone:[],common:1,navig:0,workflow:[],given:[0,1,2],pub:2,standard:[0,1,2],quick:[0,2],reason:2,base:[0,1],latest:2,org:2,fridai:[],care:2,could:2,keep:[0,2],filter:[],thing:2,lucumr:[],enforc:2,place:[],due:[],principl:0,assign:[],south:[],first:[1,2],oper:[0,1],softwar:[],rang:0,render:1,grade:[],onc:[],qualiti:1,number:2,yourself:0,mai:2,instruct:[1,2],alreadi:1,done:1,restkit_:[],horribl:[],fantast:0,differ:1,script:[1,2],bookmark:2,data:[1,2],top:2,system:[0,1,2],messag:1,stack:[0,1],master:[],too:2,zeromq:2,scheme:1,"final":[0,1,2],store:[],includ:0,option:2,relationship:[],namespac:1,tool:[0,1,2],copi:[],took:[],specifi:1,github:[],pars:2,mostli:2,eibrari:[],than:2,serv:1,king:[],grew:1,provid:[0,1,2],tree:[],see:1,structur:[0,1],project:[0,1],matter:1,express:[0,2],were:[],video:2,schema:[],bet:2,browser:1,fork:[],comput:[0,1,2],modern:1,mind:2,ani:[0,1,2],packag:[],pylon:1,have:[0,1,2],tabl:0,need:[0,1,2],seen:1,paramiko:2,strength:[1,2],techniqu:[],equival:[],rout:2,thorough:2,client:[1,2],note:[],also:[0,1,2],ideal:2,contact:[],accommod:[],take:[1,2],which:[1,2],environ:0,soap:[1,2],singl:[0,1],begin:[1,2],sure:[],aspen:2,distribut:[],though:2,usernam:[],object:2,reach:1,most:[1,2],plai:1,plan:[],deploi:[],phase:[],choos:0,homepag:2,"class":[0,1,2],don:[0,2],filesystem:[1,2],dens:0,clear:1,side:2,cover:[0,1,2],drive:[1,2],doe:[0,1,2],part:[],carolin:[],determin:1,unchang:2,review:[],fact:1,wsgi:[0,1,2],think:2,show:[],text:[],xcode:[],syntax:0,bring:[],session:[0,1,2],corner:[],find:[1,2],ground:0,xml:1,onli:2,submit:[],nosql:[],much:[1,2],transact:1,configur:1,apach:[],enough:[],should:[0,1,2],kessler:2,disert:2,suppos:2,rich:[0,1],smtplib:1,local:[],over:[0,1,2],hope:2,carolina:0,move:1,variou:1,get:[1,2],familiar:[0,2],vener:[],becaus:[],repo:[],rest:[1,2],"import":[],increas:2,requir:0,truli:[],bat:2,enabl:0,organ:2,across:[0,1],rfc:2,remot:2,integr:0,contain:[],cri:[],where:[],view:[1,2],wiki:[1,2],certif:[],set:0,lectur:[0,1],reread:[],creator:[1,2],knowledg:[0,1,2],disucss:1,lion:[],result:2,sea:1,respons:1,fail:[],close:[],best:2,subject:2,wire:0,eachoth:[],databas:[1,2],someth:2,wikipedia:2,urllib:1,label:[],favor:2,behind:2,won:1,between:[0,1],progress:[0,2],neither:2,experi:2,approach:0,email:[],attribut:1,altern:2,ftplib:[],internet_protocol:[],august:0,extend:[1,2],weak:1,extens:0,job:[],add:[],consumpt:[1,2],solv:1,come:[],addit:[0,2],both:[0,1,2],toward:[],last:[],cycl:1,pymotw:[],trove:1,wsgiref:2,tour:[],tutori:2,logout:1,login:1,com:[],load:1,among:1,author:1,technic:2,point:[],overview:[0,2],unittest:[1,2],jog:0,rfc2616:[],dispatch:[1,2],walk:2,header:[],written:2,linux:[],tuesdai:[],throughout:0,uci:2,duplic:[],quit:1,three:1,evalu:1,coupl:1,zpt:[1,2],been:1,hellmann:1,compon:2,json:[1,2],workshop:0,interest:2,basic:[0,1,2],presentations_:[],eloqu:2,templat:[1,2],life:1,treasur:1,emphas:0,underpin:[],great:1,argument:2,athom:[],understand:0,docxmlrpcserv:1,ador:[],instructor:[],present:[0,1],"case":2,look:[1,2],solid:[0,2],servic:[1,2],histor:[0,2],employ:[],admin:1,"while":1,outcom:[],abov:1,visit:[],wild:1,dbapi2:1,python_web:[],real:1,pyramid:[0,1,2],file:[0,1],advantag:1,briandorsei:[],readm:[],non:2,cherrypi:2,lightweight:2,march:[],minutia:[],sever:[1,2],develop:[0,1],demostr:1,minim:2,receiv:1,make:[1,2],format:1,same:[1,2],check:[],complex:1,split:1,testrunn:1,zope:[1,2],pai:2,document:[0,2],complet:[0,1,2],week:[0,1,2],http:[1,2],assist:[],effect:[],cement:0,solut:[],driven:1,user:[],student:0,mani:2,extern:2,implement:[0,1,2],built:[1,2],"break":1,travers:[1,2],task:0,off:2,lunch:1,macro:2,coursework:[],well:[0,2],inherit:[],without:1,person:[],exampl:[0,1,2],command:0,greatest:2,thi:[0,1,2],interpol:1,model:1,portabl:0,spend:[],left:2,explan:2,compromis:0,protocol:[0,1,2],entri:1,just:2,when:[1,2],laptop:[],tcp:[0,1,2],weekli:[],shape:0,virtual:[],aspect:[],administ:1,languag:[0,1,2],previous:[],web:[0,1,2],versu:0,now:[0,2],easi:2,drawback:1,apache2:2,blog:1,armin:2,other:[0,1,2],blob:[],exercis:[0,1],schedul:1,save:[],app:[1,2],homework:[],build:[0,1,2],earli:[],applic:[0,1,2],week01:[],week06:[],around:[1,2],xmlrpc:[1,2],mayb:1,read:[0,1,2],httplib:1,arguabl:1,five:[0,1],know:[0,2],world:[1,2],bit:[1,2],licens:2,apart:[],uwpython_web:[],leisur:2,like:[1,2],specif:[1,2],microblog:1,altough:2,html:[0,1,2],manifest:1,benefit:1,either:[],week02:[],page:[0,1,2],underli:[0,1],www:2,right:[0,1,2],often:2,interact:[0,1],some:[0,1,2],back:1,certain:[],satisfactori:[],authent:2,week03:[],server:[1,2],librari:[0,1,2],virtualenv:0,guid:2,cgihttpserv:2,micro:[],broad:0,noon:[],deploy:[],februari:[],lear:1,track:1,ssh2:2,unit:2,speak:1,notabl:1,refer:[0,1,2],cgi:[0,1,2],core:2,investig:1,run:[1,2],power:[],usag:[0,2],confer:1,popular:1,host:[],dissert:2,prerequisit:0,januari:[],feb:[],appli:2,chapter:2,comparison:2,about:[1,2],postgresql:[],socket:[0,1,2],constraint:2,materi:2,prove:1,shield:1,acl:1,microframework:[1,2],afternoon:1,commit:[],disabl:[],block:[],fulfil:[],own:1,effici:[0,1],mondai:[],primarili:2,curiou:[],within:1,washington:[],easy_instal:[],curios:1,assess:[],orm:[1,2],foreward:2,opportun:[],lesson:[0,2],your:[0,1,2],manag:[],guardia:2,fast:[],log:[],wai:[0,1,2],transfer:2,execut:[0,2],support:[0,1,2],question:[],"long":1,custom:1,avail:[],start:[0,1,2],newcom:1,interfac:[1,2],low:0,suit:[1,2],forward:[],submiss:[],machin:[0,1,2],select:0,"function":1,bottl:2,sqlite3:2,north:0,form:[1,2],offer:[1,2],forc:2,week05:[],criteria:1,idea:[0,1],wireless:0,rpclib:2,sqlalchemi:2,link:[],gain:[0,1],rfc1945:[],line:0,suppli:[],pull:[],made:2,consist:1,possibl:1,wish:[],displai:[],troubl:2,until:[],url:2,below:[],those:1,absenc:[],fundament:[0,1],site:[],problem:1,more:[0,1,2],similar:1,expect:0,featur:[1,2],creat:[0,1,2],metal:2,pragmat:[],parser:2,deep:2,repres:1,beautifulsoup:[1,2],intro:[0,1,2],exist:[],glanc:2,pip:[],simplest:[],echo:1,again:2,successfulli:[],encrypt:2,want:[0,1],mashup:[0,1,2],excel:2,detail:[],scrape:1,field:2,book:2,rdbm:[],test:[1,2],tie:1,you:[0,1,2],nice:[],matur:[],repeat:[],intend:0,clean:0,fulli:1,devot:[],why:2,urllib2:1,gcc:[],djangocon:2,intent:0,consid:2,sql:1,pool:2,warn:[],wife:2,directori:1,wifi:[],xmlrpclib:1,depth:[0,2],train:[],htmlparser:1,time:[1,2],push:[],hello:2,daili:1},objtypes:{},titles:["Python Web Programming Workshop","Course Outline","Course Readings"],objnames:{},filenames:["index","outline","readings"]}) \ No newline at end of file From 57d04b4b5394cc2fd1ad7f466fb45da6b8b46724 Mon Sep 17 00:00:00 2001 From: cewing Date: Wed, 31 Jul 2013 01:14:35 -0700 Subject: [PATCH 063/114] remove old presentations from gh-pages source --- presentations/week01.html | 56 --- presentations/week02.html | 171 -------- presentations/week03.html | 216 ---------- presentations/week04.html | 146 ------- presentations/week05.html | 43 -- presentations/week06.html | 236 ----------- presentations/week07.html | 323 --------------- presentations/week08.html | 832 -------------------------------------- presentations/week09.html | 369 ----------------- presentations/week10.html | 241 ----------- 10 files changed, 2633 deletions(-) delete mode 100644 presentations/week01.html delete mode 100644 presentations/week02.html delete mode 100644 presentations/week03.html delete mode 100644 presentations/week04.html delete mode 100644 presentations/week05.html delete mode 100644 presentations/week06.html delete mode 100644 presentations/week07.html delete mode 100644 presentations/week08.html delete mode 100644 presentations/week09.html delete mode 100644 presentations/week10.html diff --git a/presentations/week01.html b/presentations/week01.html deleted file mode 100644 index 465df483..00000000 --- a/presentations/week01.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - -Internet Programming with Python - - - - - - - - - - - - -
    -
    -
    - - -
    -
    -
    -

    Internet Programming with Python

    - -img/python.png -

    Week 1: Networking and Sockets

    -

    Wherein we learn about the basic structure of the internet and explore the -building blocks that make it possible.

    -

    ...

    - -
    -
    -

    Putting it all together

    -

    Open a second terminal next to your first, and let's try out the full -connection:

    -img/socket_interaction.png -
    -
    - - diff --git a/presentations/week02.html b/presentations/week02.html deleted file mode 100644 index c466a585..00000000 --- a/presentations/week02.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - -Internet Programming with Python - - - - - - - - - - - - -
    -
    -
    - - -
    -
    -
    -

    Internet Programming with Python

    - - -
    -
    -

    Lab Time

    -

    For this lab, we'll be building a basic HTTP server.

    -
      -
    • update your fork of the class repository by pulling from the upstream remote

      -
    • -
    • find the folder assignments/week02/lab and open echo_server.py

      -
      -
        -
      • this is a canonical example of what we built last week
      • -
      -
      -
    • -
    • We'll move in steps to turn this into an HTTP server.

      -
    • -
    -
    -
    -

    Lab Time - Step 1

    -

    First, echo an HTTP request

    -
      -
    • Run echo_server.py in a terminal
    • -
    • Point your browser at http://localhost:5000, what do you get back?
    • -
    • Save the script as http_serve1.py, then edit it to make it return the -HTML you find in tiny_html.html
    • -
    • What does this look like?
    • -
    -
    -
    -

    Lab Time - Step 2

    -

    Return a proper HTTP response:

    -
      -
    • Save the file as http_serve2.py
    • -
    • Add a new method that takes a string 'body' and returns a proper 200 OK -HTTP response. Call the method ok_response.
    • -
    • Bonus Points: add a GMT Date: header in the proper format (RFC-1123). -hint: see email.utils.formatdate in the python standard library
    • -
    • How does the returned HTML look now?
    • -
    -
    -
    -

    Lab Time - Step 3

    -

    Parse an incoming request to get the URI:

    -
      -
    • Save the file as http_serve3.py
    • -
    • Add a new method called parse_request that takes a request and returns a -URI. Have the server print the URI to the console (rudimentary logging).
    • -
    • Make sure that the method validates that the incoming request is HTTP and -that the verb is GET. If either is not true, it should raise a -ValueError
    • -
    • Bonus points: add an client_error_response method that returns an -appropriate HTTP code if the validation from parse_request fails. What -is the right response code?
    • -
    -
    -
    -

    Lab Time - Step 4

    -

    Serve directory listings:

    -
      -
    • Save the file as http_serve4.py * Add a method called resolve_uri -which takes as an argument the URI returned from our previous step and -returns an HTTP response. The method should start from a given directory -('web') and check the URI:

      -
      -
        -
      • If the URI names a directory, return the content listing as a 200 OK
      • -
      • If the URI names a file, raise a NotImplementedError (coming soon)
      • -
      • If the URI does not exist, raise a ValueError
      • -
      -
      -
    • -
    • Bonus points: add a notfound_response method that returns a proper 404 -Not Found response to the client. Use it when appropriate. (where is -that?)

      -
    • -
    -
    -
    -

    Lab Time - Step 5

    -

    Serve different types of files:

    -
      -
    • Save the file as http_serve5.py
    • -
    • Update the resolve_uri method. If the URI names a file, return it as the -body of a 200 OK response.
    • -
    • You'll need a way to return the approprate Content-Type: header.
    • -
    • Support at least .html, .txt, .jpeg, and .png files
    • -
    • Try it out.
    • -
    -

    You've now got a reasonably functional HTTP web server. Congratulations!

    -
    -
    -

    Assignment

    -

    Using what you've learned this week, take your new webserver to the next -level. Accomplish as many of the following as you can:

    -
      -
    • If you were unable to complete the first five steps in class, circle back -and finish them
    • -
    • Complete the 'Bonus point' parts from the first five steps, if you haven't -already done so
    • -
    • Format your directory listing as HTML
    • -
    • In the HTML directory listing, make the files clickable links
    • -
    • Add a new, dynamic endpoint. If the URI /time-page is requested, return an -HTML page with the current time displayed.
    • -
    -
    -
    -

    Submitting the Assignment

    -
      -
    • Copy your final html server into the assignments/week02/athome -directory in your fork of the repository.
    • -
    • Copy the assignments/week02/lab/web directory into -assignments/week02/at_home
    • -
    • Make a new plain-text file at the top level of the web directory. Tell me -what you did in it.
    • -
    • Make a new pull request for the week02 assignments.
    • -
    • I should be able to run the server on my local machine, open your plain text -file in my browser, and evaluate your work from there.
    • -
    • For bonus points, set the server running on your VM, with the web home -directory. I should be able to load http://yourserver.bluboxgrid.com:50000 -in my web browser and evaluate your results.
    • -
    -
    -
    -

    Lightning Talks

    -

    Ready, Steady, GO!

    -
    -
    - - diff --git a/presentations/week03.html b/presentations/week03.html deleted file mode 100644 index 493de3f2..00000000 --- a/presentations/week03.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - -Internet Programming with Python - - - - - - - - - - - - -
    -
    -
    - - -
    -
    -
    -

    Internet Programming with Python

    - -

    blah blah blah

    - -
    -
    -

    REST

    -

    Representational State Transfer

    -
      -
    • Originally described by Roy T. Fielding (did you read it?)
    • -
    • Use HTTP for what it can do
    • -
    • Read more in this book*
    • -
    -

    * Seriously. Buy it and read -(<http://www.crummy.com/writing/RESTful-Web-Services/)

    -
    -
    -

    A Comparison

    -

    The XML-RCP/SOAP way:

    -
      -
    • POST /getComment HTTP/1.1
    • -
    • POST /getComments HTTP/1.1
    • -
    • POST /addComment HTTP/1.1
    • -
    • POST /editComment HTTP/1.1
    • -
    • POST /deleteComment HTTP/1.1
    • -
    -

    The RESTful way:

    -
      -
    • GET /comment/<id> HTTP/1.1
    • -
    • GET /comment HTTP/1.1
    • -
    • POST /comment HTTP/1.1
    • -
    • PUT /comment/<id> HTTP/1.1
    • -
    • DELETE /comment/<id> HTTP/1.1
    • -
    -
    -
    -

    ROA

    -

    This is Resource Oriented Architecture

    -

    The URL represents the resource we are working with

    -

    The HTTP Verb represents the action to be taken

    -

    The HTTP Code returned tells us the result (whether success or failure)

    -
    -
    -

    HTTP Codes Revisited

    -

    POST /comment HTTP/1.1 (creating a new comment):

    -
      -
    • Success: HTTP/1.1 201 Created
    • -
    • Failure (unauthorized): HTTP/1.1 401 Unauthorized
    • -
    • Failure (NotImplemented): HTTP/1.1 405 Not Allowed
    • -
    • Failure (ValueError): HTTP/1.1 406 Not Acceptable
    • -
    -

    PUT /comment/<id> HTTP/1.1 (edit comment):

    -
      -
    • Success: HTTP/1.1 200 OK
    • -
    • Failure: HTTP/1.1 409 Conflict
    • -
    -

    DELETE /comment/<id> HTTP/1.1 (delete comment):

    -
      -
    • Success: HTTP/1.1 204 No Content
    • -
    -
    -
    -

    HTTP Is Stateless

    -

    No individual request may be assumed to know anything about any other request.

    -

    All the required information for to represent the possible actions to take -should be present in either the request or the response.

    -

    Thus: HATEOAS

    -
    -
    -

    HATEOAS

    -

    Hypermedia As The Engine Of Application State

    -
    -
    -

    Applications are State Engines

    -

    A State Engine is a machine that provides states for a resource to be in and -transitions to move resources between states. A Restful api should:

    -
      -
    • provide information about the current state of a resource
    • -
    • provide information about available transitions for that resource (URIs)
    • -
    • provide all this in each HTTP response
    • -
    -
    -
    -

    Playing With REST

    -

    Let's take a moment to play with REST.

    -

    We tried geocoding with SOAP. Let's repeat the exercise with a REST/JSON API

    -

    Back to your interpreter

    -
    -
    -

    Geocoding with Google APIs

    -

    https://developers.google.com/maps/documentation/geocoding

    -
    ->>> import urllib
    ->>> import urllib2
    ->>> from pprint import pprint
    ->>> base = 'http://maps.googleapis.com/maps/api/geocode/json'
    ->>> addr = '1325 4th Ave, Seattle, WA 98101'
    ->>> data = {'address': addr, 'sensor': False }
    ->>> query = urllib.urlencode(data)
    ->>> res = urllib2.urlopen('?'.join([base, query]))
    ->>> response = json.load(res)
    ->>> pprint(response)
    -
    -
    -
    -

    RESTful Job Listings

    -

    https://github.com/mattnull/techsavvyapi

    -
    ->>> base = 'http://api.techsavvy.io/jobs'
    ->>> search = 'python+web'
    ->>> res = urllib2.urlopen('/'.join([base, search]))
    ->>> response = json.load(res)
    ->>> type(response)
    -<type 'dict'>
    ->>> response.keys()
    -[u'count', u'data']
    ->>> response['count']
    -50
    ->>> for post in response['data']:
    -...   for key in sorted(post.keys()):
    -...     print "%s:\n    %s" % (key, post[key])
    -...   print
    -...
    -
    -
    -
    -

    Lab 2 - Mashup

    -

    Some of the job postings from our TechSavvy api returned lat/lon pairs.

    -

    Google provides a reverse address lookup service via the geocoding api -(https://developers.google.com/maps/documentation/geocoding/#ReverseGeocoding)

    -

    Create a list of job postings, with an address for those postings that provide -the needed data

    -

    GO

    -
    -
    -

    Assignment

    -

    Using what you've learned this week, create a more complex mashup of some data -that interests you. Map the locations of the breweries near your house. Chart -a multi-axial graph of the popularity of various cities across several -categories. Visualize the most effective legislators in Congress. You have -interests, the Web has tools. Put them together to make something.

    -
    -
    -

    Submitting the Assignment

    -

    Place the following in the assignments/week03/athome directory and make a -pull request:

    -
    -
    A textual description of your mashup (README.txt).
    -
    What data sources did you scan, what tools did you use, what is the -outcome you wanted to create?
    -
    -
    -
    Your source code (mashup.py).
    -
    Give me an executable python script that I can run to get output.
    -
    -
    -
    Any instructions I need.
    -
    If I need instructions beyond 'python mashup.py' to get the right -output, let me know.
    -
    -
    -
    -

    What You Made

    -
      -
    • geographic locations of our Bluebox VMs
    • -
    • Visualization of the popularity of Facebook Friends' first names
    • -
    • Restaurants near your location with recent Health Inspection data
    • -
    • A Last-FM user's top artists, with lists of mixcloud mixes featuring each of -them
    • -
    • A list of Craigslist apartments with the nearest bars, pizza and sushi -places and their Yelp ratings
    • -
    • Geographic locations of the top 20 users returned for a twitter search, -along with other twitter data
    • -
    -
    -
    - - diff --git a/presentations/week04.html b/presentations/week04.html deleted file mode 100644 index ad484061..00000000 --- a/presentations/week04.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -
    -
    -
    - - -
    -
    -
    - - - -
    -
    -

    Give WSGI Something To Do

    -

    We've set Apache to look in /usr/lib/wsgi-bin/ for wsgi scripts. We need -to make that directory since it doesn't exist by default:

    -
    -$ sudo mkdir /usr/lib/wsgi-bin
    -
    -

    On your local machine find the wsgi_test.py file in -assignments/week04/lab/. Use scp to move it to your home directory on -the VM. Then on the VM:

    -
    -$ sudo cp ~/wsgi_test.py /usr/lib/wsgi-bin/
    -$ ls -l /usr/lib/wsgi-bin/
    -total 4
    --rwxr-xr-x 1 root root 955 Jan 22 00:06 wsgi_test.py
    -
    -
    -
    -

    Reload Apache

    -

    Any time you change Apache configuration, you need to restart to pick up the -changes. First, you should check your work to avoid -crashing Apache:

    -
    -$ apache2ctl configtest
    -Syntax OK
    -
    -

    Okay, our syntax is good, no problems there. Let's restart:

    -
    -$ sudo /etc/init.d/apache2 graceful
    -* Reloading web server config apache2           [ OK ]
    -
    -

    Hit http://YOUR_VM.blueboxgrid.com/wsgi-bin/wsgi_test.py with your browser.

    -
    -
    -

    Looking at wsgi_test.py

    -
    -#!/usr/bin/python
    -
    -# This is our application object. It could have any name,
    -# except when using mod_wsgi where it must be "application"
    -def application(environ, start_response):
    -
    -    # build the response body possibly using the environ dictionary
    -    response_body = 'The request method was %s' % environ['REQUEST_METHOD']
    -
    -    # HTTP response code and message
    -    status = '200 OK'
    -
    -    # These are HTTP headers expected by the client.
    -    # They must be wrapped as a list of tupled pairs:
    -    # [(Header name, Header value)].
    -    response_headers = [('Content-Type', 'text/plain'),
    -                        ('Content-Length', str(len(response_body)))]
    -
    -    # Send them to the server using the supplied function
    -    start_response(status, response_headers)
    -
    -    # Return the response body.
    -    # Notice it is wrapped in a list although it could be any iterable.
    -    return [response_body]
    -
    -
    -
    -

    Lab 2

    -

    Let's repeat what we did for CGI with WSGI:

    -
      -
    • In assignments/week04/lab/src you will find the file -lab2_wsgi_template.py.
    • -
    • Copy that file to assignments/week04/lab/wsgi-bin/lab2_wsgi.py (note the -missing '_template' part)
    • -
    • The script contains some html with text naming elements of the WSGI -environment.
    • -
    • Use elements of environ to fill in the blanks.
    • -
    • You can test and debug changes locally by running the script (python -lab2_wsgi.py) and then pointing your browser to localhost:8080
    • -
    -

    GO

    -
    -
    -

    Assignment

    -

    Using what you've learned this week, Attempt the following:

    -
      -
    • Create a small, multi-page WSGI application
    • -
    • Use assignments/week04/athome/bookdb.py as a data source
    • -
    • Your app index page should list the books in the db
    • -
    • Each listing should supply a link to a detail page
    • -
    • Each detail page should list information about the book
    • -
    -

    Use the Armin Ronacher reading from the class outline as a source for hints: -http://lucumr.pocoo.org/2007/5/21/getting-started-with-wsgi/

    -
    -
    -

    Submitting the Assignment

    -

    This week we are going to do something a bit different. Get your application -running on your VM. Then add the following to assignments/week04/athome -and submit a pull request:

    -
      -
    • A README.txt file containing the URL I can visit to see your application. -You can also put questions or comments in this file.
    • -
    • Your source code, whatever is up on your VM.
    • -
    -
    -
    - - diff --git a/presentations/week05.html b/presentations/week05.html deleted file mode 100644 index a54bafc6..00000000 --- a/presentations/week05.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -
    -
    -
    - - -
    -
    -
    - - -
    -
    - - diff --git a/presentations/week06.html b/presentations/week06.html deleted file mode 100644 index 71ac779a..00000000 --- a/presentations/week06.html +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - - -Internet Programming with Python - - - - - - - - - - - - -
    -
    -
    - - -
    -
    -
    -

    Internet Programming with Python

    - -

    blah blah blah

    - -
    -
    -

    Detail View

    -

    Back in our polls app, let's edit urls.py again:

    -
    -# add this import
    -from django.views.generic import ListView
    -
    -# and edit the detail url like so:
    -url(r'^(?P<pk>\d+)/$',
    -    DetailView.as_view(
    -        model=Poll,
    -        template_name="polls/detail.html"
    -    ),
    -    name="poll_detail"),
    -
    -

    Again, we only need to add a template.

    -
    -
    -

    Forms in Django

    -

    We want to be able to vote on a poll.

    -

    Because doing so involves changing data on the server, we should do this with -a POST request.

    -

    An html form is a simple way to allow us to force a POST request.

    -

    Data-altering requests are vulnerable to Cross-Site Request Forgery, a common -attack vector.

    -
    -
    -

    Danger: CSRF

    -

    Django not only provides a convenient system to fight this, it requires it -for any POST requests.

    -

    The Django middleware that does this is enabled by default. All you need to do -is include the {% csrf_token %} tag in your form template.

    -

    Create a new file detail.html in your templates/polls directory

    -
    -
    -

    Detail Template

    -
    -{% extends "base.html" %}
    -{% block content %}
    -<h1>{{ poll }}</h1>
    -{% if poll.choice_set.count > 0 %}
    -<form action="{% url poll_vote poll.pk %}" method="POST">
    -  {% csrf_token %}
    -  {% for choice in poll.choice_set.all %}
    -  <div class="choice">
    -    <label for="choice_{{ choice.pk }}">
    -      <input type="radio" name="choice" id="choice_{{ choice.pk }}"
    -             value="{{ choice.pk }}"/>
    -      {{ choice }}</label></div>
    -  {% endfor %}
    -  <input type="submit" name="vote" value="Vote"/>
    -</form>
    -{% else %}
    -<p>No choices are available for this poll</p>
    -{% endif %}
    -{% endblock %}
    -
    -
    -
    -

    Processing The Vote

    -

    We can now submit a form to the poll_vote url. We need to process that -vote

    -

    Here, a class-based generic view is just going to get in our way. Let's use -an old-fashioned view function.

    -

    How is our user's vote reaching the server?

    -

    It gets there as POST data, the value for the key 'choice'.

    -
    -
    -

    Django GET and POST Data

    -

    Django provides the same type of Request/Response based interaction model that -most frameworks are based on. Views are called with the first argument being a -request object.

    -

    request.GET and request.POST are dictionary-like objects containing data -parsed from incoming HTTP request.

    -

    You can use normal dictionary syntax to read values from these:

    -
    -bar = request.POST['bucko']
    -foo = request.GET.get('somevar', None)
    -
    -
    -
    -

    Vote View Skeleton

    -

    In views.py from our polls app package:

    -
    -from django.core.urlresolvers import reverse
    -from django.http import HttpResponseRedirect
    -
    -def vote_view(request, pk):
    -    if request.method == "POST":
    -        try:
    -            # attempt to get a choice
    -        except NoGoodChoice: # send back to detail
    -            url = reverse('poll_detail', args=[pk, ])
    -        else: # vote and send to result
    -            url = reverse('poll_result', args=[pk])
    -    else: # submitted via GET, ignore it
    -        url = reverse('poll_detail', args=[pk, ])
    -
    -    return HttpResponseRedirect(url)
    -
    -
    -
    -

    Get the Choice

    -

    Let's start by filling out the process of getting the choice:

    -
    -# add imports
    -from django.shortcuts import get_object_or_404
    -from django.contrib import messages
    -from polls.models import Poll, Choice
    -# and edit our skeleton
    -def vote_view(request, pk):
    -    poll = get_object_or_404(Poll, pk=pk)
    -    if request.method == "POST":
    -        try:
    -            choice = poll.choice_set.get(
    -                pk=request.POST.get('choice', 0))
    -        except Choice.DoesNotExist:
    -            msg = "Ooops, pick a choice that exists, please"
    -            messages.add_message(request, messages.ERROR, msg)
    -            url = reverse('poll_detail', args=[pk, ])
    -
    -
    -
    -

    Add a Vote

    -

    Next, let's record a vote on our choice:

    -
    -def vote_view(request, pk):
    -    ...
    -    try:
    -        # choice = ...
    -    except Choice.DoesNotExist:
    -        # ...
    -    else:
    -        choice.votes += 1
    -        choice.save()
    -        messages.add_message(request, messages.INFO,
    -                             "You voted for %s" % choice)
    -        url = reverse('poll_result', args=[pk])
    -
    -
    -
    -

    Add the URL

    -

    Finally, we need to add this view to our urlconf. Back in urls.py in the -polls app package, edit the url for the voting view like so:

    -
    -url(r'^(?P<pk>\d+)/vote/$',
    -    'polls.views.vote_view',
    -    name="poll_vote"),
    -
    -

    Notice that the 'callable' in this pattern is a string. Django allows you to -use this sort of dotted name reference. It will resolve it (or throw an -error if it can't)

    -
    -
    -

    Display Result

    -

    The last view we need is the poll result. This can simply be a different -version of the Generic DetailView. Still in urls.py edit the pattern for -the results view:

    -
    -url(r'^(?P<pk>\d+)/result/$',
    -    DetailView.as_view(
    -        model=Poll,
    -        template_name="polls/result.html"),
    -    name="poll_result")
    -
    -

    And, of course, we will need to create that final template

    -
    -
    -

    Result Template

    -

    In templates/polls create a new file, result.html:

    -
    -{% extends "base.html" %}
    -
    -{% block content %}
    -<h1>{{ poll }}</h1>
    -<ul>
    -  {% for choice in poll.choice_set.all %}
    -  <li>{{ choice }} ({{choice.votes}} votes)</li>
    -  {% endfor %}
    -</ul>
    -<a href="{% url poll_list %}">Back to the polls, please</a>
    -{% endblock %}
    -
    -
    -
    -

    Play a Bit

    -

    Alright. You've done it.

    -

    Take a few minutes to add some polls in the Admin.

    -

    Then return to the public side and vote. See how it goes.

    -
    -
    - - diff --git a/presentations/week07.html b/presentations/week07.html deleted file mode 100644 index 3046bba2..00000000 --- a/presentations/week07.html +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - - -Internet Programming with Python - - - - - - - - - - - - -
    -
    -
    - - -
    -
    -
    -

    Internet Programming with Python

    - -img/django-pony.png -

    Week 7: Django - Part 2

    -

    Wherein we extend Django's built-in features

    -

    image: http://djangopony.com/

    - -
    -
    -

    But First

    -

    Questions from the Reading?

    -
    -
    -

    And Second

    -

    A reminder of our task for today:

    -

    Extend a basic micro-blog application with one of the following features:

    -
      -
    • User Registration
    • -
    • 'Archive' views based on date or author
    • -
    • WYSIWYG visual editor for entry posts.
    • -
    • Tagging
    • -
    • Theme (make it beautiful)
    • -
    -
    -
    -

    Your Teams

    -

    Team 1:

    -

    Leader: Jon B

    -

    Members: Tyler, Matt K, John C, Wilson, Divesh

    -

    Your Task: User Registration with django-registration

    -
    -
    -

    Your Teams

    -

    Team 2:

    -

    Leader: Matt O

    -

    Members: David, Pho, Phil, Chris

    -

    Your Task: Archive Views using Generic date-based views

    -
    -
    -

    Your Teams

    -

    Team 3:

    -

    Leader: Austin

    -

    Members: Edet, Eric, Allan

    -

    Your Task: Content Tagging with django-taggit

    -
    -
    -

    Your Teams

    -

    Team 4:

    -

    Leader: Jason

    -

    Members: Daniel, Conor, Maria

    -

    Your Task: WYSIWYG Editing with django-ckeditor

    -
    -
    -

    My Guidelines

    -

    Each team can work from a single core repository.

    -

    Break the job into discreet tasks.

    -

    Work in twos or threes, each small group take a task and complete it.

    -

    Create a local branch. Complete your task then merge.

    -

    Team leaders manage communications, keep an eye on the big picture.

    -
    -
    -

    First Step - Setup

    -

    Get a 'core' repository (perhaps leaders fork mine):

    -
    -https://github.com/cewing/training.django_microblog
    -
    -

    Add your teammates as collaborators:

    -
      -
    • In your browser, view the repo you'll be working from in github.
    • -
    • Click on the 'settings' tab (in the grey bar below the repo name)
    • -
    • Click on the 'collaborators' menu item on the left
    • -
    • Add your teammates by github id to the list of collaborators
    • -
    -

    Now you should all have read-write access to this core repo.

    -
    -
    -

    Second Step - Workflow

    -

    Each small group, pick a driver

    -

    Each driver, clone the core repo to your local machine

    -

    Pick a task. Before you start to work, make a local branch:

    -
    -$ git checkout -b <task_name>
    -
    -

    Complete your task, making commits as you go (you're on a branch)

    -
    -
    -

    Third Step - Cleanup

    -

    When you're finished with a task, you'll merge your branch:

    -
    -$ git branch
    -  master
    -* <task_name>
    -$ git checkout master
    -Switched to branch 'master'
    -$ git pull origin master
    -From ...
    - * branch            master     -> FETCH_HEAD
    -Already up-to-date.
    -$ git merge <task_name>
    -$ git push origin master
    -
    -

    Rinse and repeat

    -
    -
    -

    In The End

    -

    Leaders, make a copy of the core repository on your machine

    -

    When your team is done, set up your machine to show off your results

    -

    At 8:30 we'll come together. Each team will have 5 minutes to show a quick -demo of their work, and say something about what they learned along the way.

    -
    -
    -

    Almost There

    -

    Any Questions?

    -
    -
    -

    And Now

    -

    begin

    -
    -
    -

    Reference

    -

    A Few useful git commands:

    -
    -$ git clone <repo_url>          # make a clone
    -$ git checkout -b <branch_name> # make a new local branch
    -$ git checkout master           # return to the master
    -$ git branch                    # list branches (and show current)
    -$ git commit -m "message"       # make a commit locally
    -$ git pull [origin [branch]]    # pull recent changes from remote
    -$ git push [origin [branch]]    # push committed changes to remote
    -$ git merge <branch_name>       # merge changes from other to current
    -
    -
    -
    -

    Assignment

    -

    For this week, you have no code assignment.

    -

    Instead I want you to focus on installing software and reading for next week. -Software we'll be installing uses C extensions, and so installing it on OS X -or Linux requires a compiler and python's development headers.

    -

    There are a few steps here, so follow along carefully.

    -
    -
    -

    Assignment - Linux Prep

    -

    For Linux machines, we'll need to have gcc (a c compiler) and python's -development headers in order to complete our tasks. The VMs we have access to -already have gcc installed, so all we need there is:

    -
    -::
    -
    -
    -$ sudo apt-get install python-dev
    -
    -
    -

    Assignment - OSX Prep

    -

    OS X does not come with a c compiler installed. You'll need to have XCode -installed. It's free, but big expect it to take a while if you don't already -have it.

    -

    Once it is installed, there's one more step, you have to install the -'optional' command line tools:

    -
      -
    • Launch XCode
    • -
    • From the XCode menu, click 'preferences' > 'Downloads' > 'Install Command -Line Tools'
    • -
    • Once it completes, you can quit XCode again.
    • -
    -
    -
    -

    Assignment - Windows Prep

    -

    There are pre-compiled binaries available for Windows, but we need one -.bat file in order to properly install them. We'll need to install Visual -Studio 2008 Express to get this file (if you already have another copy of VS, -you can probably skip this)

    -
      -
    • Download the installer (894MB): -http://download.microsoft.com/download/8/B/5/8B5804AD-4990-40D0-A6AA-CE894CBBB3DC/VS2008ExpressENUX1397868.iso
    • -
    • Extract the files to a folder (call it VS2008ExpressENUX1397868—it will be -2.68GB) using something like 7zip
    • -
    • Inside that folder double-click on Setup.hta
    • -
    • On the screen that comes up, click on the installer for Visual C++ 2008 -Express Edition and follow the instructions. Note: It does work if you -include the following two options which are pre-selected for you: (1) MSDN -Express Library for Visual Studio 2008, and (2) Microsoft SQL Server 2005 -Express Edition (x86).
    • -
    -
    -
    -

    Assignment - Virtualenv

    -

    With that prep work out of the way, you're ready to start. First, set up a -virtualenv:

    -
    -$ python2.6 virtualenv.py --distribute pyramidenv
    -...
    -$ source pyramidenv/bin/activate
    -(pyramidenv)$
    -
    -

    Remeber, Windows users: > pyramidenv\Scripts\activate

    -
    -
    -

    Assignment - Install Pyramid

    -

    Once you've got a virtualenv set up and ready to go, install Pyramid:

    -
    -(pyramidenv)$ easy_install pyramid
    -
    -

    This will install a number of dependency packages, do not be alarmed.

    -

    Next, we'll install a different kind of Database, the ZODB.

    -
    -
    -

    Assignment - Install ZODB

    -

    If you're on OS X or Linux:

    -
    -(pyramidenv)$ easy_install ZODB3==3.10.5
    -
    -

    This will take some time. If you get errors, contact me directly or via the -Google Group.

    -

    Windows users, you'll have it a bit easier here. You have to install a binary -egg:

    -
    -[pyramidenv]> pip install --egg ZODB3==3.10.5
    -
    -
    -
    -

    Pause for Self Evaluation

    -

    At this point, you can check your work. Fire up a python interpreter in your -virtualenv:

    -
    -(pyramidenv)$ python
    ->>> import ZODB
    ->>> ^D
    -(pyramidenv)$
    -
    -

    If you get an ImportError when you try that, you're not done. Contact me.

    -
    -
    -

    Assignment - Extras

    -

    Next, we'll need to finish installing the bits we need for our work next -week:

    -
    -(pyramidenv)$ easy_install docutils nose coverage
    -...
    -(pyramidenv)$ easy_install pyramid_zodbconn pyramid_tm
    -...
    -(pyramidenv)$ easy_install pyramid_debugtoolbar
    -
    -

    These tools will allow us to manage ZODB connections, debug our app, and run -cool tests.

    -
    -
    -

    Assignment - Set Up Project

    -

    And finally, we'll set up a project for ourselves. This is like running -'startproject' for django in a way:

    -

    (pyramidenv)$ pcreate -s zodb wikitutorial

    -

    Do not be alarmed by the 'sorry for the convenience' message.

    -

    You get a folder called wikitutorial. In it you should see files like -setup.py and development.ini among others.

    -

    This is an installable package. You can install this package with -easy_install.

    -
    -
    -

    Final Self Evaluation

    -

    In fact, let's do that now, so we can prove to ourselves this all worked:

    -
    -(pyramidenv)$ cd wikitutorial
    -(pyramidenv)$ python setup.py develop
    -...
    -
    -

    You'll see a bunch of output. When it's over, run tests:

    -
    -(pyramidenv)$ python setup.py test -q
    -
    -
    -
    -

    Congratulations

    -

    When you've made it this far, and you see 1 test run successfully, you're -done.

    -

    If you like, you can see your work by running the new project:

    -
    -(pyramidenv)$ pserve development.ini
    -Starting server in PID 3056.
    -serving on http://0.0.0.0:6543
    -
    -

    Visit http://localhost:6543 to see your work in action. then go grab a -beer and curl up with the reading for the week. There's a lot.

    -
    -
    - - diff --git a/presentations/week08.html b/presentations/week08.html deleted file mode 100644 index c7fb367d..00000000 --- a/presentations/week08.html +++ /dev/null @@ -1,832 +0,0 @@ - - - - - - - -Internet Programming with Python - - - - - - - - - - - - -
    -
    -
    - - -
    -
    -
    -

    Internet Programming with Python

    - -img/pyramid-medium.png -

    Week 8: Pyramid

    -
    -
    Wherein we learn
    -
    it's not built by aliens
    -
    - -
    -
    -

    But First

    -

    Questions from the Reading?

    -
    -
    -

    And Now

    -img/sheep_pyramid.jpg -

    image: Ionics http://www.flickr.com/photos/ionics/6337525967/ - CC_BY

    -
    -
    -

    What is Pyramid?

    -

    A Web Framework

    -

    "Its primary job is to make it easier for a developer to create an arbitrary -web application"

    -

    Makes as few decisions as possible for you.

    -

    Allows you to make decisions, and provides tools to support you when you do

    -

    "Pay only for what you eat"

    -
    -
    -

    Why is Pyramid?

    -

    Micro-frameworks are great for lightweight apps

    -

    Micro-frameworks do not scale up or change specs easily

    -

    Full-stack frameworks have lots of opinions. Bending them can be difficult.

    -

    Pyramid can build a lightweight app easily, but it can also scale and bend

    -
    -
    -

    History - Zope and Repoze

    -

    Many of the core developers of Pyramid started as Zope developers.

    -

    Born in 1996, Zope was the first Python web framework, and possibly the first -in any language.

    -

    After 14 years, the developers of Zope had seen and learned a lot.

    -

    Repoze was a short-lived (2008-2010) framework intended to embody the lessons -learned from Zope.

    -
    -
    -

    History - Pylons

    -

    Pylons was released in 2005.

    -

    It was among the first frameworks to fully embrace the WSGI specification.

    -

    The creators of Pylons build WebTest, WebError and WebOb (abstracted HTTP -request and response objects)

    -
    -
    -

    History - 2010

    -

    In 2010, the authors of Repoze and Pylons got together and made an unusual -decision.

    -

    Why duplicate efforts when there are already so many other frameworks?

    -

    Repoze was re-named 'Pyramid' and the 'Pylons Project' was born to shepherd -this new combined project.

    -
    -
    -

    Implications

    -

    Pylons was a framework predicated largely on relational persistence and URL -Dispatch.

    -

    Zope/Repoze was based on the ZODB and Object Traversal.

    -

    Each of these approaches has strengths and weaknesses.

    -

    Pyramid supports neither, both and even combinations of the two.

    -
    -
    -

    Relational DB / URL Dispatch

    -

    You've seen this before, both in Flask and Django

    -

    SQLite3, the Django ORM, both are examples of relational persistence models

    -

    Routes/urlpatterns, both are examples of URL Dispatch

    -

    Pyramid can work this way too. SQLAlchemy, Route-based views.

    -

    Been there, done that. Let's see something else.

    -
    -
    -

    ZODB

    -

    ORMs allow developers to pretend that Objects are like DB Tables.

    -

    But Objects are not tables, so there's a conceptual mismatch between -the two.

    -

    The ZODB is an object store, rather than a relational database.

    -

    If your data is best represented by heterogenous objects, it's a better -persistence solution.

    -
    -
    -

    Traversal - Object Graphs

    -

    Python objects can contain other objects.

    -

    Using dict-like structures, you can build a graph of objects:

    -
    -Family
    -├── Parents
    -│  ├── Cris
    -│  ├── Kristina
    -├── Children
    -│  ├── Kieran
    -│  ├── Finnian
    -
    -
    -
    -

    Traversal - Path Lookup

    -

    You can traverse across the object graph by treating a URL as a series of -node names

    -
    -http://family/parents/cris -> family['parents']['cris']
    -
    -

    Further path segments can be view names or information passed to the view

    -
    -http://family/parents/cris/edit -> edit view
    -http://family/parents/cris/next/steps -> subpath = /next/steps
    -
    -
    -
    -

    Break Time

    -

    We've got the concept of object stores and traversal

    -

    The next step is to see how those work in real life.

    -

    Take the next few minutes here to ensure that you have a working Pyramid setup -with the ZODB and a project created with pcreate -s zodb.

    -
    -
    -

    Lab - Part One

    -

    Getting To Know Pyramid

    -
    -
    -

    Scaffolds and Opinions

    -

    Pyramid uses what it calls scaffolds to get you started on a new project.

    -

    When you ran pcreate -s zodb wikitutorial you were invoking the zodb -scaffold

    -

    Pyramid the framework is highly un-opinionated.

    -

    Scaffolds, conversely, can be quite opinionated. The one we used has chosen -our persistence mechanism (ZODB) and how we will reach our code (Traversal).

    -
    -
    -

    Project Layout

    -

    Running pcreate has set up a file structure for us:

    -
    -wikitutorial/
    -    CHANGES.txt
    -    development.ini
    -    MANIFEST.in
    -    production.ini
    -    README.txt
    -    setup.cfg
    -    setup.py
    -    wikitutorial/
    -        __init__.py
    -        models.py
    -        static/
    -        templates/
    -        tests.py
    -        views.py
    -
    -
    -
    -

    Similarities to Django

    -

    Our project is organized with an outer project folder and an inner package -folder (see the __init__.py?)

    -

    The name of that outer directory is not really important.

    -

    Our inner package folder has a models.py, tests.py and views.py module

    -

    Our inner package folder has a static/ and templates/ directory

    -
    -
    -

    Differences from Django

    -

    Our outer module has a setup.py file, which allows it to be installed -with pip or easy_install

    -

    There is no manage.py file. Pyramid commands are console scripts.

    -

    There is nothing magical in Pyramid about the name of the models.py -module.

    -

    There is nothing magical in Pyramid about the names of the static/ or -templates/ directories.

    -
    -
    -

    Pyramid System Configuration

    -

    Pyramid keeps configuration intended for an entire installation in .ini -files at the top of a project.

    -

    When you deploy an app to some wsgi server, you'll reference one of these files

    -

    Settings there affect the environment of all apps that are running in that -wsgi server.

    -

    It is much like Django's settings.py but is not a python module.

    -
    -
    -

    Pyramid is Python

    -

    Running a Pyramid application is really just like running a Python module. In -the __init__.py file of your app package, you'll find a main -function:

    -
    -def main(global_config, **settings):
    -    """ This function returns a Pyramid WSGI application.
    -    """
    -    config = Configurator(root_factory=root_factory,
    -                          settings=settings)
    -    config.add_static_view('static', 'static', cache_max_age=3600)
    -    config.scan()
    -    return config.make_wsgi_app()
    -
    -

    App-level configuration is done here.

    -
    -
    -

    App Configuration

    -
    -def main(global_config, **settings):
    -
    -

    global_config will be a dictionary of the settings from your .ini file -that come in the [DEFAULT] section (if there is one). These settings will be -shared across all apps that are involved in the system.

    -

    The settings passed in here are the settings from your .ini file that -come in the section that corresponds to your application. They will be used -only by your app.

    -
    -
    -

    App Configuration

    -
    -config = Configurator(root_factory=root_factory,
    -                      settings=settings)
    -config.add_static_view('static', 'static', cache_max_age=3600)
    -config.scan()
    -
    -

    Pyramid does configuration work when an app is run using the Configurator -class.

    -

    The Configurator provides an extensible API for configuring just about -everything.

    -

    You can read more in the pyramid.config documentation

    -
    -
    -

    The Application Root

    -

    The Configurator constructor can take a root_factory keyword argument.

    -

    The root_factory of your app returns the router that determines how to -dispatch individual requests.

    -

    If you do not provide this argument, the default root factory, which uses URL -Dispatch, will be used.

    -

    In our case, we want to use Traversal for our app, so we provide a custom -root_factory.

    -
    -
    -

    Our Root Factory

    -
    -from pyramid_zodbconn import get_connection
    -from .models import appmaker
    -
    -def root_factory(request):
    -    conn = get_connection(request)
    -    return appmaker(conn.root())
    -
    -

    We grab a connection to the ZODB and pass that into a call to appmaker, -the result is returned (and becomes our app root).

    -

    So what exactly does appmaker do?

    -
    -
    -

    The appmaker

    -
    -def appmaker(zodb_root):
    -    if not 'app_root' in zodb_root:
    -        app_root = MyModel()
    -        zodb_root['app_root'] = app_root
    -        import transaction
    -        transaction.commit()
    -    return zodb_root['app_root']
    -
    -

    We ensure that there is an app_root object stored in the ZODB, and return -it. That simple Python object will manage our Traversal based application.

    -
    -
    -

    Seeing It Live

    -

    You've done this at home, but let's repeat the exercise here.

    -

    In a terminal, change directories into your wikitutorial project folder -(where you see development.ini). Fire up your pyramid virtualenv and serve -our app:

    -
    -(pyramidenv)$ pserve development.ini
    -Starting server in PID 16698.
    -serving on http://0.0.0.0:6543
    -
    -

    Load http://localhost:6543 and view your app root.

    -
    -
    -

    Why is it Pretty?

    -

    If we understand correctly what is happening so far, we are looking at an -instance of MyModel.

    -

    What makes it look like this?

    -

    The secret sauce lies in view configuration

    -
    -
    -

    Pyramid Views

    -
    -from pyramid.view import view_config
    -from .models import MyModel
    -
    -@view_config(context=MyModel, renderer='templates/mytemplate.pt')
    -def my_view(request):
    -    return {'project': 'wikitutorial'}
    -
    -

    Pyramid views can be configured with the @view_config() decorator.

    -

    Or call config.add_view() method in your app main.

    -

    config.scan() in main picks up all config decorators.

    -
    -
    -

    View Configuration

    -

    The view_config decorator (and the add_view method) take a number of -interesting arguments. In our case there are two.

    -

    renderer is used to designate how the results returned by the view -callable will be handled. In our case, it's a template that will render to an -HTML page.

    -

    context determines the type of object for which this view may be used. It -is an example of a predicate argument, which can be used to place -restrictions on when and how a view may be called.

    -

    Predicates are a very powerful system for choosing views. Read more about them -in view configuration

    -
    -
    -

    Lab - Part Two

    -

    Data Models and Tests

    -
    -
    -

    Wiki Models

    -

    Now that we have a basic idea of what's going on in the code generated for us, -it's time to build our wiki models.

    -

    We'll need to have a Python class that corresponds to a page in our wiki.

    -

    This will be the type of object we view when we are looking at the wiki.

    -

    We'll also need to have a root object, which will be a container for all the -pages we create for the wiki.

    -
    -
    -

    Persistence Magic

    -

    In an SQL database, data about an object is written to tables. In the ZODB, -the object itself is saved in the database.

    -

    The ZODB provides base classes that will automatically save themselves. We -will use two of these:

    -
      -
    • Persistent - a class that automatically tracks changes to class -attributes and saves them.
    • -
    • PersistentMapping - roughly equivalent to a Python dictionary, this -class will save changes to itself and its keys and values.
    • -
    -

    The ZODB also provides lists and more complex persistent data structures like -BTrees.

    -
    -
    -

    Traversal Magic

    -

    Traversal is supported by two object properties: __name__ and -__parent__.

    -

    Every object in a system which is going to use Traversal must provide -these two attributes.

    -

    The root object in a Traversal system will have both of these attributes set -to None.

    -
    -
    -

    The Wiki Class

    -

    Open models.py from our wikitutorial package directory.

    -

    First, delete the MyModel class. We won't need it.

    -

    Add the following in its place:

    -
    -class Wiki(PersistentMapping):
    -    __name__ = None
    -    __parent__ = None
    -
    -
    -
    -

    The Page Class

    -

    To that same file (models.py) add one import and a second class definition:

    -
    -from persistent import Persistent
    -
    -class Page(Persistent):
    -    def __init__(self, data):
    -        self.data = data
    -
    -

    What about __name__ and __parent__?

    -

    We'll add those to each instance when we create it.

    -
    -
    -

    Update Appmaker

    -

    The existing appmaker function needs to be updated for our new models:

    -
    -def appmaker(zodb_root):
    -    if not 'app_root' in zodb_root:
    -        app_root = Wiki()
    -        frontpage = Page('This is the front page')
    -        app_root['FrontPage'] = frontpage
    -        frontpage.__name__ = 'FrontPage'
    -        frontpage.__parent__ = app_root
    -        zodb_root['app_root'] = app_root
    -        import transaction
    -        transaction.commit()
    -    return zodb_root['app_root']
    -
    -
    -
    -

    A Last Bit of Cleanup

    -

    We've deleted the MyModel class. But we still have views that -reference the class.

    -

    Open the views.py file in your package directory and comment out -everything except the first line:

    -
    -from pyramid.view import view_config
    -
    -

    Next, we'll test our models.

    -
    -
    -

    Test the Wiki Model

    -

    Open tests.py from the package directory. Delete the ViewTests -class and replace it with the following:

    -
    -class WikiModelTests(unittest.TestCase):
    -
    -    def _getTargetClass(self):
    -        from wikitutorial.models import Wiki
    -        return Wiki
    -
    -    def _makeOne(self):
    -        return self._getTargetClass()()
    -
    -    def test_it(self):
    -        wiki = self._makeOne()
    -        self.assertEqual(wiki.__parent__, None)
    -        self.assertEqual(wiki.__name__, None)
    -
    -
    -
    -

    Test the Page Model

    -

    Add the following test class as well:

    -
    -class PageModelTests(unittest.TestCase):
    -
    -    def _getTargetClass(self):
    -        from wikitutorial.models import Page
    -        return Page
    -
    -    def _makeOne(self, data=u'some data'):
    -        return self._getTargetClass()(data=data)
    -
    -    def test_constructor(self):
    -        instance = self._makeOne()
    -        self.assertEqual(instance.data, u'some data')
    -
    -
    -
    -

    Test Appmaker

    -

    One more test class:

    -
    -class AppmakerTests(unittest.TestCase):
    -
    -    def _callFUT(self, zodb_root):
    -        from .models import appmaker
    -        return appmaker(zodb_root)
    -
    -    def test_it(self):
    -        root = {}
    -        self._callFUT(root)
    -        self.assertEqual(root['app_root']['FrontPage'].data,
    -                         'This is the front page')
    -
    -
    -
    -

    A Quick Interlude

    -

    In your package directory you should see a file: Data.fs.

    -

    This is the ZODB. It contains references to a class that doesn't exist -anymore (MyModel). This means it is broken.

    -

    Make sure Pyramid is not running.

    -

    Delete Data.fs. It will be re-created as needed.

    -

    You can also delete Data.fs.* (.tmp, .index, .lock)

    -
    -
    -

    Run our Tests

    -

    Finally, let's run our tests:

    -
    -(pyramidenv)$ python setup.py test
    -...
    -Ran 3 tests in 0.000s
    -
    -OK
    -
    -

    We can also run tests to tell us our code-coverage:

    -
    -(pyramidenv)$ nosetests --cover-package=tutorial --cover-erase --with-coverage
    -
    -
    -
    -

    Break

    -

    Take a few minutes to breathe

    -
    -
    -

    Lab - Part Three

    -

    Views and Templates

    -
    -
    -

    Preparing for Views

    -

    Our Page model has a data attribute, which represents the text in the -page.

    -

    Our pages will use ReStructuredText, a plain-text format that can be rendered -to HTML with a Python module called docutils.

    -

    Our project is installable as a python package. It declares its own -dependencies so that they will also be installed.

    -

    We need to add the docutils package to this list.

    -
    -
    -

    Package Dependencies

    -

    Open the setup.py file from our project directory. Add docutils to -the list requires:

    -
    -requires = [
    -    'pyramid',
    -    'pyramid_zodbconn',
    -    'transaction',
    -    'pyramid_tm',
    -    'pyramid_debugtoolbar',
    -    'ZODB3',
    -    'waitress',
    -    'docutils', # <- ADD THIS
    -    ]
    -
    -
    -
    -

    Complete the Change

    -

    Any time you make a change to setup.py for a package you are working on, -you need to re-install that package to pick up the changes:

    -
    -(pyramidenv)$ python setup.py develop
    -
    -

    You'll see a whole bunch of stuff flicker by. In it will be a reference to -Searching for docutils.

    -
    -
    -

    Adding Views

    -

    Open views.py again. Add the following:

    -
    -from docutils.core import publish_parts
    -import re
    -
    -from pyramid.httpexceptions import HTTPFound
    -from pyramid.view import view_config # <- ALREADY THERE
    -
    -from wikitutorial.models import Page
    -
    -# regular expression used to find WikiWords
    -wikiwords = re.compile(r"\b([A-Z]\w+[A-Z]+\w+)")
    -
    -@view_config(context='.models.Wiki')
    -def view_wiki(context, request):
    -    return HTTPFound(location=request.resource_url(context,
    -                                                   'FrontPage'))
    -
    -
    -
    -

    Some Notes

    -

    New pages in a typical wiki are added by writing WikiWords into the page.

    -

    r"\b([A-Z]\w+[A-Z]+\w+)" is a regular expression that will locate -WikiWords.

    -

    Note that the @view_config for the view_wiki function has no -renderer argument. It will never be shown

    -

    Instead, it returns HTTPFound, (302 Found). Calling -request.resource_url provides a URL for the redirect.

    -
    -
    -

    Add a Page View

    -
    -@view_config(context='.models.Page', renderer='templates/view.pt')
    -def view_page(context, request):
    -    wiki = context.__parent__
    -
    -    def check(match):
    -        word = match.group(1)
    -        if word in wiki:
    -            page = wiki[word]
    -            view_url = request.resource_url(page)
    -            return '<a href="%s">%s</a>' % (view_url, word)
    -        else:
    -            add_url = request.application_url + '/add_page/' + word
    -            return '<a href="%s">%s</a>' % (add_url, word)
    -
    -    content = publish_parts(
    -        context.data, writer_name='html')['html_body']
    -    content = wikiwords.sub(check, content)
    -    edit_url = request.resource_url(context, 'edit_page')
    -    return dict(page=context, content=content, edit_url=edit_url)
    -
    -
    -
    -

    Adding Templates

    -

    What will the page template for the view_page function need to be called?

    -

    Go ahead and create view.pt in your templates directory.

    -

    While you're there, also copy the file base.pt from -assignments/week08/lab in the class repo.

    -

    Like Django templates, Chameleon templates can extend other templates. Our -base.pt template will be the master, and our view.pt and edit.pt -templates will extend it.

    -
    -
    -

    The view.pt Template

    -

    Type this code into your view.pt file:

    -
    -<metal:main use-macro="load: base.pt">
    - <metal:content metal:fill-slot="main-content">
    -  <div tal:replace="structure content">
    -    Page text goes here.
    -  </div>
    -  <p>
    -    <a tal:attributes="href edit_url" href="">
    -      Edit this page
    -    </a>
    -  </p>
    - </metal:content>
    -</metal:main>
    -
    -
    -
    -

    A Few Notes

    -

    Chameleon page templates are valid XML. The templating language uses tal/metal -namespace XML tag attributes.

    -

    <metal:main use-macro="load: base.pt"> tells us we will be using -base.pt as our main template macro.

    -

    Template macros can define one or more slots. These are like the blocks -in Jinja2 or Django templates.

    -

    <metal:content metal:fill-slot="main-content"> tells us that everything -here will go in the main-content slot.

    -
    -
    -

    More Notes

    -
    -<div tal:replace="structure content">
    -  Page text goes here.
    -</div>
    -
    -

    This uses the tal directive replace to completely replace the -<div> tag with whatever html is in content.

    -
    -<a tal:attributes="href edit_url" href="">
    -  Edit this page
    -</a>
    -
    -

    Here, we use the tal directive attributes to set the href for our -anchor to the value passed into our template as edit_url.

    -
    -
    -

    View Your Work

    -

    We've created the following:

    -
      -
    • A wiki view that redirects to the automatically-created FrontPage page
    • -
    • A page view that will render the data from a page, along with a url for -editing that page
    • -
    • A page template to show a wiki page.
    • -
    -

    That's all we need to be able to see our work. Start Pyramid:

    -
    -(pyramidenv)$ pserve development.ini
    -Starting server in PID 43925.
    -serving on http://0.0.0.0:6543
    -
    -

    Load http://localhost:6543/

    -
    -
    -

    What You Should See

    -img/wiki_frontpage.png -
    -
    -

    Editing a Page

    -

    Back in views.py add the following:

    -
    -@view_config(name='edit_page', context='.models.Page',
    -             renderer='templates/edit.pt')
    -def edit_page(context, request):
    -    if 'form.submitted' in request.params:
    -        context.data = request.params['body']
    -        return HTTPFound(location = request.resource_url(context))
    -
    -    return dict(page=context,
    -                save_url=request.resource_url(context, 'edit_page'))
    -
    -
    -
    -

    The Edit Template

    -

    Create and fill edit.pt in templates:

    -
    -<metal:main use-macro="load: base.pt">
    -  <metal:pagename metal:fill-slot="page-name">
    -  Editing
    -  <b><span tal:replace="page.__name__">Page Name Goes Here
    -     </span></b>
    -  </metal:pagename>
    -  <metal:content metal:fill-slot="main-content">
    -    <form action="${save_url}" method="post">
    -      <textarea name="body" tal:content="page.data" rows="10"
    -                cols="60"/><br/>
    -      <input type="submit" name="form.submitted" value="Save"/>
    -    </form>
    -  </metal:content>
    -</metal:main>
    -
    -
    -
    -

    FrontPage Content

    -

    Restart Pyramid, then back in your browser, click the Edit this page link.

    -

    Erase the existing text and add this instead:

    -
    -==========
    -Front Page
    -==========
    -
    -This is the front page.  It features
    -
    -* a heading
    -* a list
    -* a wikiword link to AnotherPage
    -
    -
    -
    -

    View Your Work

    -

    Click the Save button and see what you've gotten.

    -

    If you get strangely formatted text that warns you about Title overline too -short, you didn't add enough equals signs above or below the page title. Go -back and ensure that there are the same number of equal signs as the total -number of characters in the title.

    -

    Note that AnotherPage is a link, click it.

    -
    -
    -

    Adding a Page

    -

    Back in views.py add the code for creating a new page:

    -
    -@view_config(name='add_page', context='.models.Wiki',
    -             renderer='templates/edit.pt')
    -def add_page(context, request):
    -    pagename = request.subpath[0]
    -    if 'form.submitted' in request.params:
    -        body = request.params['body']
    -        page = Page(body)
    -        page.__name__ = pagename
    -        page.__parent__ = context
    -        context[pagename] = page
    -        return HTTPFound(location = request.resource_url(page))
    -    save_url = request.resource_url(context, 'add_page', pagename)
    -    page = Page('')
    -    page.__name__ = pagename
    -    page.__parent__ = context
    -    return dict(page=page, save_url=save_url)
    -
    -
    -
    -

    A Few Notes

    -

    Notice that the context for this view is the Wiki model

    -

    pagename = request.subpath[0] gives us the first element of the path -after the current context and view. What is that?

    -

    Notice that here is where we set the __name__ and __parent__ -attributes of our new Page.

    -

    We add a new Page to the wiki as if the wiki were a Python dict: -context[pagename] = page

    -
    -
    -

    One More Note

    -

    Look at the similarity in how a form is handled here to the way it is handled -in Django (in pseudocode):

    -
    -if the_form_is_submitted:
    -    handle_the_form()
    -    return go_to_the_success_url()
    -return an_empty_form()
    -
    -

    Forms that modify data should only be handled on POST.

    -

    Could you improve this code to ensure that?

    -
    -
    -

    And a Question

    -

    Why do we create a new, empty Page object at the end of the add_page view?

    -
    -
    -

    In-Class Exercises

    -

    Try to accomplish as many of these as you can before you leave:

    -
      -
    • Make the add_page view show "Adding <NewPage>" in the header (do not create -a new template to do this)
    • -
    • Make the edit_page and add_page views only change data on POST.
    • -
    • Make the link that says "You can return to the FrontPage" disappear when you -are viewing the front page.
    • -
    -
    -
    -

    Assignment

    -

    By now you should have some idea what you want to do for your final project.

    -

    Your assignment this week is to get started on it.

    -

    If you have not already done so, please talk to Dan or me about your ideas. I -want to help you pick something you can get done in time.

    -

    If you are stuck on how to start, reach out to Dan or me. We are here to help -you.

    -
    -
    -

    Next Week

    -

    Next week we will have a short lecture about deployment options for Python web -applications.

    -

    We'll look at deploying to shared hosting servers, VPSs and 'the cloud'.

    -

    Your classmate Austin will give a short talk on the tools he used to deploy -djangor to his VM in last week's class.

    -

    And the rest of the time (about 1.5-2 hours) will be reserved for working on -your final projects.

    -
    -
    - - diff --git a/presentations/week09.html b/presentations/week09.html deleted file mode 100644 index c16b4d0c..00000000 --- a/presentations/week09.html +++ /dev/null @@ -1,369 +0,0 @@ - - - - - - - -Internet Programming with Python - - - - - - - - - - - - -
    -
    -
    - - -
    -
    -
    -

    Internet Programming with Python

    - -img/cloud_cover.jpg -

    Week 9: The Cloud

    -
    -
    Every cloud has its silver lining
    -
    but it is sometimes a little difficult
    -
    to get it to the mint.
    -
    --Don Marquis
    -
    -

    image: mnsc http://www.flickr.com/photos/mnsc/2768391365/ - CC-BY

    - -
    -
    -

    Deployment

    -

    You've built your app, tested it, now it's time to go live

    -

    What are your options?

    -

    It Depends

    -
    -
    -

    The Traditional Way

    -

    In the old daysâ„¢ you had one option

    -

    Buy a server, build it and host it yourself

    -

    You have total control

    -
      -
    • buy exactly the hardware you want
    • -
    • run only the services you need
    • -
    -

    You also have total responsibility

    -
      -
    • when something breaks, you have to fix it
    • -
    • you bear all the costs yourself
    • -
    -
    -
    -

    Traditional Drawbacks

    -

    Expensive

    -
      -
    • Server-class hardware $2k-$10k or more
    • -
    • Systems Administrator $90K/year
    • -
    -

    Inefficient

    -
      -
    • Most web sites don't get enough traffic to tax a good server
    • -
    • Web traffic tends to be assymetrical
    • -
    • Systems administration tasks also highly assymetrical
    • -
    -

    A problem of resource utilization

    -
    -
    -

    The First Solution

    -

    VPS (Virtual Private Server)

    -

    A part of a server (or perhaps an entire server) purchased from a provider.

    -

    You pay for only a portion of a server and a portion of a systems -administrator.

    -

    You retain control of the system

    -

    You also retain responsibility for everything above the bare iron.

    -
    -
    -

    VPS Outcomes

    -

    Benefits

    -
      -
    • Reduced cost ($30-$100+/month vs server and salary)
    • -
    • Reduced burden (The provider handles hardware upkeep and low-level -maintenance)
    • -
    • Retain control of your full software stack
    • -
    -

    Drawbacks

    -
      -
    • You install and maintain the web stack (requires knowledge)
    • -
    • You lose control over resource utilization
    • -
    • Your resources are still fixed (always the same size)
    • -
    -
    -
    -

    The Second Solution

    -

    Shared Hosting

    -

    You pay a provider to set you up with a [django/flask/pyramid/etc.] system.

    -

    Hardware and most software maintenance is provided

    -

    You are able to install some (but perhaps not all) add-ons

    -

    This solution is very popular in the PHP world

    -

    Much less so with Python. Why?...

    -
    -
    -

    Shared Hosting Outcomes

    -

    Benefits

    -
      -
    • Enormously less expensive ($5-$15+/month)
    • -
    • Much lower maintenance burden
    • -
    • Simplified installation process
    • -
    -

    Drawbacks

    -
      -
    • Tight resource restrictions (cpu, ram, disk space)
    • -
    • Little to no control over most of the stack
    • -
    • Reduced availability of some frameworks or packages
    • -
    -

    And still, no ability to grow if you need

    -
    -
    -

    The Third Solution

    -

    The Cloud

    -

    (cue fanfare)

    -
    -
    -

    The Cloud Concept

    -

    You don't know today what you will need tomorrow

    -

    Today your website is getting 100-500 unique visitors

    -

    Tomorrow you might have 10,000, 100,000. Who knows?

    -

    Should you have to buy enough hardware to handle that traffic today?

    -

    Cloud computing offers rapid deployment solutions so you can scale at will

    -
    -
    -

    What is 'the Cloud'?

    -

    Really, it differs from place to place.

    -

    Some are more do-it-yourself (Amazon EC2, Rackspace Cloud)

    -

    Some are more automated (Heroku, Elastic Beanstalk, AppEngine)

    -

    All try to abstract common deployment tasks to make it easy to repeat

    -

    So, how does that work?

    -
    -
    -

    Fabric

    -

    Fabric is not a cloud service. Instead, it's a tool built to help developers -simplify the process of deploying complex apps to a server.

    -

    It can be used in any setup where you have ssh access to the filesystem -of the remote server.

    -

    Your classmate Austin used it a couple of weeks back to deploy Django to his -bluebox VM.

    -

    Today, he's going to share that experience with you...

    -
    -
    -

    Heroku

    -img/heroku-logo.png -

    I tried a number of cloud providers

    -

    This was hands-down the easiest.

    -
    -
    -

    Heroku - Sign-up

    -

    You'll need a Heroku account to do anything, so the first step is to get that

    -

    Go to http://www.heroku.com

    -

    Click on 'Sign Up' and enter your email address

    -

    When the email arrives, click the link and create your password

    -

    Once you've signed up, you'll see your 'dashboard' page with tips on getting -started.

    -
    -
    -

    Heroku - Setup

    -

    Like pretty much all the 'cloud' providers out there, Heroku has some -command-line tools you need to use.

    -

    You can find them at https://toolbelt.heroku.com/

    -

    Download and install the package, and then login:

    -
    -$ heroku login
    -Email: your-email@your.domain.com
    -Password: <fill it in>
    -
    -

    The tool will find, or help you create, an ssh public key

    -
    -
    -

    Heroku - Branch my App

    -

    As an exercise, I decided to deploy the djangor micro-blog app we created in -class.

    -

    The first step was to clone the app, then create a local branch for deployment:

    -
    -$ mkdir heroku-test
    -$ cd heroku-test
    -$ git clone git@github.com:cewing/training.django_microblog.git
    -...
    -$ cd training.django_microblog
    -$ git checkout -b heroku-deploy
    -Switched to a new branch 'heroku-deploy'
    -$
    -
    -
    -
    -

    Heroku - Setup Virtualenv

    -

    Again, like many cloud providers Heroku uses virtualenvs to ensure it's -installed correctly

    -

    I set up a python 2.7 virtualenv right in my git repository:

    -
    -$ ~/pythons/bin/virtualenv-2.7 --distribute venv
    -...
    -$ source venv/bin/activate
    -(venv)$
    -
    -

    I don't want to check that virtualenv into git, so I add venv to my -.gitignore file.

    -

    That way, git will ignore that directory and everything in it.

    -
    -
    -

    Heroku - Install Dependencies

    -

    For Heroku to work, it needs to know what packages you'll need installed.

    -

    We can use pip to take care of this:

    -
    -(venv)$ pip install Django=1.4.5 psycopg2 dj-database-url
    -
    -

    Psycopg2 is a DBAPI connector for PostgreSQL. Heroku requires Postgresql

    -

    dj-database-url allows the Django DB settings to come from an env variable.

    -
    -
    -

    Heroku - Freeze Dependencies

    -

    Heroku uses pip too. It uses a file called requirements.txt to know -what to do.

    -

    You create that file:

    -
    -(venv)$ pip freeze > requirements.txt
    -
    -

    Then, add the file to your repository and commit:

    -
    -(venv)$ git add requirements.txt
    -(venv)$ git commit -m "setting requirements for heroku"
    -
    -
    -
    -

    Heroku - Django Settings

    -

    To adapt Django to the Heroku environment, we need to add the following to the -end of our settings.py file:

    -
    -# Parse database configuration from $DATABASE_URL
    -import dj_database_url
    -DATABASES['default'] =  dj_database_url.config()
    -
    -# Honor the 'X-Forwarded-Proto' header for request.is_secure()
    -SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    -
    -

    Commit these changes to your heroku-deploy branch.

    -

    Local development settings are different. You can use different settings for -production and development

    -
    -
    -

    Heroku - Procfile

    -

    Finally, we need to create a file named Procfile.

    -

    Heroku uses this to learn about the processes we want running.

    -

    Lines in the file take the form process_type: command,

    -

    Create the file Procfile and add the following text:

    -

    web: python manage.py runserver 0.0.0.0:$PORT --noreload

    -

    Then, add and commit that file to the repository.

    -
    -
    -

    Heroku - Create and Deploy

    -

    At this point, we're ready to go.

    -

    First, we create a new app in heroku with our repo:

    -
    -(venv)$ heroku create
    -Creating fierce-plains-6505... done, stack is cedar
    -http://fierce-plains-6505.herokuapp.com/ | git@heroku.com:fierce-plains-6505.git
    -Git remote heroku added
    -(venv)$
    -
    -

    Then, deploy it by 'pushing' to the heroku remote (master branch):

    -
    -(venv)$ git push heroku heroku-deploy:master
    -
    -
    -
    -

    Heroku - What Happens

    -

    Heroku works like github, in a way.

    -

    When our repository is pushed, a hook script detects the update and starts -working.

    -
      -
    • Heroku detects that we -are building a python project
    • -
    • A python virtualenv is created
    • -
    • pip installs the dependencies in requirements.txt
    • -
    • Heroku further detects that we are building a Django app and runs -collectstatic
    • -
    • Our Procfile is read, and data about the processes we want is written to -the environment
    • -
    -
    -
    -

    Heroku - Syncdb

    -

    Heroku will not run syncdb for us. We have to do that on our own.

    -

    Heroku does provide us with a way to run one-off commands on our server, though:

    -
    -(venv)$ heroku run python manage.py syncdb
    -
    -

    This command is run through an ssh tunnel. We can interact with it.

    -

    We can use other commands, like shell with heroku run.

    -
    -
    -

    Heroku - Reap the Rewards

    -

    All we have to do now is start a process so we can see our work:

    -
    -(venv)$ heroku ps:scale web=1
    -Scaling web processes... done, now running 1
    -(venv)$ heroku ps
    -=== web: `python manage.py runserver 0.0.0.0:$PORT --noreload`
    -web.1: up 2013/03/05 06:28:13 (~ 21m ago)
    -(venv)$ heroku open
    -
    -

    That last bit will automatically open a web browser pointing at the URL where -may be seen.

    -
    -
    -

    Heroku - DNS

    -

    Heroku does not want you to point A record DNS names at it's services. -www.mydomain.com is okay, but mydomain.com is not.

    -

    They also don't want you to use IP addresses, since their architecture means -IP addresses change.

    -

    I set up a CNAME record for microblog.crisewing.com. It points to the URL -opened when I type heroku open.

    -

    So long as I keep this heroku app, that domain name will not change.

    -
    -
    -

    Clean-up

    -

    This is but one example of a cloud deployment.

    -

    It is considerably easier to do than most other cloud deployments.

    -

    It is also considerably more constrained than other deployments.

    -
    -
    -

    Take-away

    -

    When you are making choices about deployment, you must take into -consideration your needs, both now and in the future:

    -
      -
    • What type of Framework will you use?
    • -
    • What type of Database will you use?
    • -
    • What growth do you expect to experience (best and worst case)?
    • -
    • How much control do you want over all the processes that make your website -run?
    • -
    • How much time/expertise do you have (or can you afford to acquire)?
    • -
    -

    Carefully consider these questions, and you will find an appropriate solution.

    -
    -
    -

    Lab Time

    -

    For the rest of today, we work on your projects.

    -
    -
    - - diff --git a/presentations/week10.html b/presentations/week10.html deleted file mode 100644 index 42efb82e..00000000 --- a/presentations/week10.html +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - - -Internet Programming with Python - - - - - - - - - - - - -
    -
    -
    - - -
    -
    -
    -

    Internet Programming with Python

    - -img/plone-icon-256-white-bg.png -
    -
    Week 9: System Example:
    -
    The Plone CMS
    -
    -

    Content management done right.

    -

    The Plone logo is a trademark of the Plone Foundation.

    - -
    -
    -

    This Week

    -

    We'll have an introduction to the Plone Content Management System

    -

    We'll see a demo of this system in action

    -

    We'll talk a bit about the differences between a system and a framework

    -

    We'll spend the rest of the time working on your Final Projects.

    -
    -
    -

    What is Plone?

    -

    Plone is a Content Management System

    -

    System: A tightly integrated set of tools oriented to a purpose

    -

    Content Management: The task of creating, editing, organizing and -controlling access to content throughout it's lifecycle.

    -

    Content: Information and materials stored in a website which has value -that can be maintained over time.

    -
    -
    -

    Plone Features

    -

    Plone comes with an extensive feature set OOTB:

    -
      -
    • Fully translated UI, with over 40 languages supported
    • -
    • Fine-grained permissions system for access to content and actions
    • -
    • Built-in, fully configurable user and group management
    • -
    • Workflow configurable per content type
    • -
    • Automatic and configurable versioning of content
    • -
    • Built-in system for event handling, including user notifications
    • -
    • Built-in content rules allowing for complex automation of common actions
    • -
    • Content Type framework allowing for TTW creation of new types
    • -
    • Theme engine allowing for TTW creation of custom themes
    • -
    -
    -
    -

    And There's More

    -

    By installing additional packages in the core distribution get:

    -
      -
    • In-place content staging (working copies)
    • -
    • Powerfully flexible caching
    • -
    • Per-location workflow configuration
    • -
    -

    And with other add-ons you can have

    -
      -
    • Multi-lingual content
    • -
    • TTW form building
    • -
    • layered calendars
    • -
    • much, much more...
    • -
    -
    -
    -

    Separators

    -

    What is it that separates Plone from other web-based CMS solutions?

    -
      -
    • Simplicity
    • -
    • Scalability
    • -
    • Speed
    • -
    • Security
    • -
    -
    -
    -

    Simplicity

    -

    Plone features an in-place content editing model

    -

    Users create content in the place where they want it to be located

    -

    There is no separate authoring back-end where you must go to create and place -content

    -

    All aspects of management: workflow, security, versioning and staging can be -managed in-place.

    -
    -
    -

    Scalability

    -

    Plone is fast and easy enough to support small websites

    -

    But you can scale it up to the very largest sizes

    -

    Corporate or Education intranets with over 100,000 pieces of content are not -unusual.

    -
    -
    -

    Speed

    -

    Out of the box, Plone can serves content faster than Drupal, WordPress or -SharePoint.

    -

    With the simple installation of a caching add-on, this speed is greatly -accelerated.

    -

    Support for load-balancing and HTTP acceleration means you can push it further -yet.

    -
    -
    -

    Security

    -

    Issues reported for various technologies in CVE (last 3 years):

    -
      -
    • Plone: 13 (9)
    • -
    • Zope: 27 (9)
    • -
    • Python: 111 (65)
    • -
    • Drupal: 371 (269)
    • -
    • Joomla: 653 (441)
    • -
    • MySQL: 282 (84)
    • -
    • PostgreSQL: 82 (22)
    • -
    • PHP: 18,859 (5,813)
    • -
    -

    And then there is Plone's true secret weapon

    -
    -
    -

    Community

    -img/plone_conf_2012.jpg -
    -
    -

    About the Community

    -

    Plone has more than 300 active core contributors.

    -

    The add-on ecosystem contains ~850 public -repositories

    -

    The community averages one major sprint each month, in locations in Asia, -Africa, Europe, South America, North America and Australia.

    -

    Plone is a "do-ocracy", meaning that your standing in the community is -determined by your contributions

    -
    -
    -

    History

    -

    In 1999 Plone is a theme for the Zope Content Management Framework.

    -
      -
    • By 2001, it had grown popular enough to warrant a public release.
    • -
    • In 2003 Plone 1.0 is released
    • -
    • In 2004 Plone 2.0 brings the Archetypes Content Type Framework
    • -
    • In 2005 Plone 2.1 brings default content types via Archetypes
    • -
    • In 2006 Plone 2.5 brings versioning and pluggable authentication
    • -
    • In 2007 Plone 3.0 integrates the Zope Component Architecture
    • -
    • In 2010 Plone 4.0 brings speed and the Dexterity Content Framework
    • -
    • This week, Plone 4.3rc1 brings through the web theming
    • -
    -
    -
    -

    Installation

    -

    Plone is an application that runs on top of the Zope Application Server.

    -

    Installing Plone involves installing Zope, the ZODB and a number of other -technologies.

    -

    Forget all that, just use the installers

    -

    Go to http://plone.org, click "download now", pick the right installer and go.

    -
    -
    -

    Running Plone

    -

    After running the installer of your choice, you start Plone from the command -line:

    -
    -$ bin/instance fg
    -
    -

    This runs plone in the foreground which allows you to see errors if they -happen and get tracebacks.

    -

    Once you see the message "Zope Ready to handle requests", the system is running

    -
    -
    -

    Setting up Your First Site

    -

    When the site is running, you'll find it at localhost:8080

    -

    Load that page and you see a message instructing you to add your first site

    -

    Click the button, and your site is created with a bit of default content

    -

    At that point, you can start managing content

    -
    -
    -

    Demo of Plone

    -

    Let's see it in action

    -
    -
    -

    Take-away

    -

    Plone is a full-featured and flexible Content Management System

    -

    Plone customization is generally going to be integration - altering existing -functionality to fit business needs.

    -

    Treating Plone as a framework - trying to build arbitrary web applications - -is not easy.

    -

    But if the feature set it offers is in largely in line with your needs, you -won't find a better tool.

    -
    -
    -

    Reminder

    -

    Your final projects are due Friday at noon.

    -

    I will not accept submissions that arrive after noon on Friday (March 15).

    -

    You will need to supply:

    -
      -
    • A Link to your site deployed online (your VM, in the cloud, ...)
    • -
    • A Link to your project source code repository in Github.
    • -
    • Text describing the goals and outcomes of your project.
    • -
    • Instructions on how I can run your project locally on my laptop
    • -
    -
    -
    -

    Another reminder

    -

    LEAVE TIME FOR DEPLOYMENT

    -
    -
    -

    Final Word

    -

    thank you all

    -
    -
    -

    Lab Time

    -

    For the rest of today, we work on your projects.

    -
    -
    - - From 450f1fa27d4d5d38e5ad185144381d7e215f82cc Mon Sep 17 00:00:00 2001 From: cewing Date: Wed, 31 Jul 2013 11:07:02 -0700 Subject: [PATCH 064/114] split out addenda exercises for session03 --- presentations/session03-addenda.html | 9 +- presentations/session03.html | 352 +-------------------------- 2 files changed, 12 insertions(+), 349 deletions(-) diff --git a/presentations/session03-addenda.html b/presentations/session03-addenda.html index d47df60a..ecd5df5c 100644 --- a/presentations/session03-addenda.html +++ b/presentations/session03-addenda.html @@ -5,7 +5,7 @@ -Python Web Programming +Web Service API Addenda @@ -29,16 +29,17 @@
    -

    Python Web Programming

    +

    Web Service API Addenda

    -

    API Addenda

    +

    The following are provided as self-directed exercises. We just don't have the +time to cover them in depth in class.

    diff --git a/presentations/session03.html b/presentations/session03.html index 27e9b178..8c7bf589 100644 --- a/presentations/session03.html +++ b/presentations/session03.html @@ -1128,6 +1128,13 @@

    Wrap Up

    What other data sources might we use? Check out http://www.programmableweb.com/apis/directory to see some of the possibilities

    +
    +

    Addenda

    +

    Altough we do not have class time to do walkthrough examples of using XML-RPC +and SOAP, I have provided exercises in each as an addenda to this session. If +you have the time and the interest, please try them out.

    +

    Web Service API Addenda

    +

    Next Steps

    We've spent this session consuming data produced by other people.

    @@ -1135,351 +1142,6 @@

    Next Steps

    create our own responses.

    See you back here soon!

    -
    -

    Addenda

    -

    The following are provided as self-directed exercises. We just don't have the -time to cover them in depth in class.

    -
    -
    -

    XML-RPC

    -

    Examples of XML-RPC using the Python Standard Library

    -
    -
    -

    XML-RPC Example - Server

    -

    xmlrpc_server.py:

    -
    -from SimpleXMLRPCServer import SimpleXMLRPCServer
    -
    -server = SimpleXMLRPCServer(('localhost', 50000))
    -
    -def multiply(a, b):
    -    return a * b
    -server.register_function(multiply)
    -
    -try:
    -    print "Use Ctrl-C to Exit"
    -    server.serve_forever()
    -except KeyboardInterrupt:
    -    print "Exiting"
    -
    -
    -
    -

    XML-RPC Example - Client

    -

    We can run a client from a terminal. First, open one terminal and run the -xmlrpc_server.py script:

    -
    -$ python xmlrcp_server.py
    -

    Then, open another terminal and start up python:

    -
    ->>> import xmlrpclib
    ->>> proxy = xmlrpclib.ServerProxy('http://localhost:50000', verbose=True)
    ->>> proxy.multiply(3, 24)
    -...
    -72
    -
    -
    -
    -

    XML-RPC Request

    -

    verbose=True allows us to see the request we sent:

    -
    -POST /RPC2 HTTP/1.0
    -Host: localhost:50000
    -User-Agent: xmlrpclib.py/1.0.1 (by www.pythonware.com)
    -Content-Type: text/xml
    -Content-Length: 192
    -
    -<?xml version='1.0'?>
    -<methodCall>
    - <methodName>multiply</methodName>
    - <params>
    -  <param>
    -   <value><int>3</int></value>
    -  </param>
    -  <param>
    -   <value><int>24</int></value>
    -  </param>
    - </params>
    -</methodCall>
    -
    -
    -
    -

    XML-RPC Response

    -

    and we can see the response, too:

    -
    -HTTP/1.0 200 OK
    -Server: BaseHTTP/0.3 Python/2.6.1
    -Date: Sun, 13 Jan 2013 03:38:00 GMT
    -Content-type: text/xml
    -Content-length: 121
    -
    -<?xml version='1.0'?>
    -<methodResponse>
    - <params>
    -  <param>
    -   <value><int>72</int></value>
    -  </param>
    - </params>
    -</methodResponse>
    -
    -
    -
    -

    More XML-RPC

    -

    Register an entire Python class as a service, exposing class methods:

    -
    -server.register_instance(MyClass())
    -
    -

    Keep an instance method private :

    -
    -class MyServiceClass(object):
    -    ...
    -    def public_method(self, arg1, arg2):
    -        """this method is public"""
    -        pass
    -
    -    def _private_method(self):
    -        """this method is private because it starts with '_'
    -        """
    -        pass
    -
    -
    -
    -

    XML-RPC Introspection

    -

    First, implement required methods on your service class:

    -
    -from SimpleXMLRPCServer import list_public_methods
    -
    -class MyServiceClass(object):
    -    ...
    -    def _listMethods(self):
    -        """custom logic for presenting method names to users
    -
    -        list_public_methods is a convenience function from the Python
    -        library, but you can make your own logic if you wish.
    -        """
    -        return list_public_methods(self)
    -
    -    def _methodHelp(self, method):
    -        """provide help text for an individual method
    -        """
    -        f = getattr(self, method)
    -        return f.__doc__
    -
    -
    -
    -

    XML-RPC Introspection

    -

    Then enable introspection via the server instance:

    -
    -server.register_introspection_functions()
    -
    -

    After this, a client proxy can call pre-defined methods to learn about what -your service offers:

    -
    ->>> for name in proxy.system.listMethods():
    -...     help = proxy.system.methodHelp(name)
    -...     print name
    -...     print "\t%s" % help
    -...
    -public_method
    -    this method is public
    -
    -
    -
    -

    Introspection Question

    -

    I told you when we added the _private_method that any method that any -method whose name starts with _ would be private.

    -

    But we also added a _listMethods method and a _methodHelp method and -those methods are listed when you run proxy.system.listMethods()

    -

    Why is this?

    -

    For a complete discussion of this, read this MOTW post

    -
    -
    -

    SOAP

    -

    Example of Using SOAP via the suds package

    -
    -
    -

    Install Suds

    -
      -
    • Quit your python interpreter if you have it running.
    • -
    • If you see (soupenv) at your command line prompt, cool.
    • -
    • If you do not, type source /path/to/soupenv/bin/activate
    • -
    • Windows folks: > \path\to\soupenv\Scripts\activate
    • -
    • Once activated: pip install suds
    • -
    -
    -
    -

    Creating a Suds Client

    -

    Suds allows us to create a SOAP client object. SOAP uses WSDL to define a -service. All we need to do to set this up in python is load the URL of the -WSDL for the service we want to use:

    -
    -(soupenv)$ python
    ->>> from suds.client import Client
    ->>> geo_client = Client('https://geoservices.tamu.edu/Services/Geocode/WebService/GeocoderService_V03_01.asmx?wsdl')
    ->>> geo_client
    -<suds.client.Client object at 0x10041fc10>
    -
    -
    -
    -

    Peeking at the Service

    -

    Suds allows us to visually scan the service. Simply print the client object to -see what the service has to offer:

    -
    ->>> print geo_client
    -
    -Suds ( https://fedorahosted.org/suds/ )  version: 0.4 GA  build: R699-20100913
    -
    -Service ( GeocoderService_V03_01 ) tns="https://geoservices.tamu.edu/"
    -   Prefixes (1)
    -      ns0 = "https://geoservices.tamu.edu/"
    -   Ports (2):
    -      (GeocoderService_V03_01Soap)
    -      Methods (4):
    -         ...
    -      Types (12):
    -         ...
    -
    -
    -
    -

    Debugging Suds

    -

    Suds uses python logging to deal with debug information, so if you want to see -what's going on under the hood, you configure it via the Python logging -module:

    -
    ->>> import logging
    ->>> logging.basicConfig(level=logging.INFO)
    ->>> logging.getLogger('suds.client').setLevel(logging.DEBUG)
    -
    -

    This will allow us to see the messages sent and received by our client.

    -
    -
    -

    Client Options

    -

    SOAP Servers can provide more than one service and each service might have -more than one port. Suds provides two ways to configure which service and -port you wish to use.

    -

    Via subscription:

    -
    -client.service['<service>']['<port>'].method(args)
    -
    -

    Or the way we will do it, via configuration:

    -
    -geo_client.set_options(service='GeocoderService_V03_01',
    -                       port='GeocoderService_V03_01Soap')
    -
    -
    -
    -

    Providing Arguments

    -

    Arguments to a method are set up as a dictionary. Although some may not be -required according to api documentation, it is safest to provide them all:

    -
    -apiKey = '<fill this in>'
    -args = {'apiKey': apiKey, }
    -args['streetAddress'] = '1325 4th Avenue'
    -args['city'] = 'Seattle'
    -args['state'] = 'WA'
    -args['zip'] = '98101'
    -args['version'] = 3.01
    -args['shouldReturnReferenceGeometry'] = True
    -args['shouldNotStoreTransactionDetails'] = True
    -args['shouldCalculateCensus'] = False
    -args['censusYear'] = "TwoThousandTen"
    -
    -
    -
    -

    Making the Call

    -

    Finally, once we've got the arguments all ready we can go ahead and make a call -to the server:

    -
    ->>> res = geo_client.service.GeocodeAddressNonParsed(**args)
    -DEBUG:suds.client:sending to
    -(https://geoservices.tamu.edu/Services/Geocode/WebService/GeocoderService_V03_01.asmx)
    -message:
    -...
    -
    -
    -
    -

    What does it look like?

    -
    -<?xml version="1.0" encoding="UTF-8"?>
    -<SOAP-ENV:Envelope xmlns:ns0="https://geoservices.tamu.edu/" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    -   <SOAP-ENV:Header/>
    -   <ns1:Body>
    -      <ns0:GeocodeAddressNonParsed>
    -         <ns0:streetAddress>1325 4th Avenue</ns0:streetAddress>
    -         <ns0:city>Seattle</ns0:city>
    -         <ns0:state>WA</ns0:state>
    -         <ns0:zip>98101</ns0:zip>
    -         <ns0:apiKey>a450a9181f85498598e21f8a39440e9a</ns0:apiKey>
    -         <ns0:version>3.01</ns0:version>
    -         <ns0:shouldCalculateCensus>false</ns0:shouldCalculateCensus>
    -         <ns0:censusYear>TwoThousandTen</ns0:censusYear>
    -         <ns0:shouldReturnReferenceGeometry>true</ns0:shouldReturnReferenceGeometry>
    -         <ns0:shouldNotStoreTransactionDetails>true</ns0:shouldNotStoreTransactionDetails>
    -      </ns0:GeocodeAddressNonParsed>
    -   </ns1:Body>
    -</SOAP-ENV:Envelope>
    -
    -
    -
    -

    And the Reply?

    -
    -<?xml version="1.0" encoding="utf-8"?>
    -<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    -  <soap:Body>
    -    <GeocodeAddressNonParsedResponse xmlns="https://geoservices.tamu.edu/">
    -      <GeocodeAddressNonParsedResult>
    -        <TransactionId>6ef9c110-994c-4142-93d5-a55173526b64</TransactionId>
    -        <Latitude>47.6084110119244</Latitude>
    -        <Longitude>-122.3351592971042</Longitude>
    -        <Version>3.01</Version>
    -        <Quality>QUALITY_ADDRESS_RANGE_INTERPOLATION</Quality>
    -        <MatchedLocationType>LOCATION_TYPE_STREET_ADDRESS</MatchedLocationType>
    -        <MatchType>Exact</MatchType>
    -        <FeatureMatchingResultCount>1</FeatureMatchingResultCount>
    -        ...
    -        <FArea>2910.69420560356</FArea>
    -        <FAreaType>Meters</FAreaType>
    -        <FGeometrySRID>4269</FGeometrySRID>
    -        <FGeometry>&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;LineString xmlns="http://www.opengis.net/gml"&gt;&lt;posList&gt;-122.334868 47.608226 -122.335777 47.609219&lt;/posList&gt;&lt;/LineString&gt;</FGeometry>
    -        ...
    -      </GeocodeAddressNonParsedResult>
    -    </GeocodeAddressNonParsedResponse>
    -  </soap:Body>
    -</soap:Envelope>
    -
    -
    -
    -

    And What of Our Result?

    -

    The WSDL we started with should provide type definitions for both data we send -and results we receive. The res symbol we bound to our result earlier -should now be an instance of a GeocodeAddressNonParsedResult. Lets see what -that looks like:

    -
    ->>> type(res)
    -<type 'instance'>
    ->>> dir(res)
    -['CensusTimeTaken', 'CensusYear', 'ErrorMessage', 'FArea',
    - 'FAreaType', 'FCity', 'FCounty', 'FCountySubRegion',
    - ...]
    ->>> res.Latitude, res.Longitude
    -(47.608411011924403, -122.3351592971042)
    -
    -
    -
    -

    A Word on Debugging

    -

    blerg

    -
      -
    • Messages sent to the server are long XML strings
    • -
    • Error messages are generally based on parsing errors in XML
    • -
    • These error messages can be quite cryptic:
    • -
    • "There is an error in XML document (1, 572). ---> The string '' is not a -valid Boolean value.'
    • -
    -

    Try this:

    -
    ->>> geo_client.last_sent().str().replace(" ","")[:573]
    -'...</ns0:version>\n<ns0:shouldCalculateCensus/>'
    -
    -
    From a10daf0b0f2427dc38d0e7c2cc33af49b8c8de61 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 5 Aug 2013 08:24:55 -0400 Subject: [PATCH 065/114] final pre-class push --- presentations/session01.html | 53 +++- presentations/session02.html | 71 +++--- presentations/session03.html | 142 +++++------ presentations/session04.html | 12 +- presentations/session05.html | 18 +- presentations/session06.html | 65 ++--- presentations/session07.html | 102 +++----- presentations/session08.html | 463 +++++++++++++++++++++++++---------- readings.html | 4 + searchindex.js | 2 +- 10 files changed, 585 insertions(+), 347 deletions(-) diff --git a/presentations/session01.html b/presentations/session01.html index 9d9e054c..ee22b0fe 100644 --- a/presentations/session01.html +++ b/presentations/session01.html @@ -48,6 +48,7 @@

    Python Web Programming

    But First

    Class presentations are available online for your use

    http://github.com/cewing/training.python_web

    +

    Use the week-long-format branch for this class

    Licensed with Creative Commons BY-NC-SA

    • You must attribute the work
    • @@ -441,7 +442,7 @@

      Client Connections

    • socket type
    • socket protocol
    • canonical name (usually empty, unless requested by flag)
    • -
    • socket address
    • +
    • socket address (tuple of IP and Port)
    @@ -529,7 +530,7 @@

    Connecting a Socket

    Sending a Message

    Send a message to the server on the other end of our connection (we'll -learn later today about the message we are sending):

    +learn is session 2 about the message we are sending):

     >>> msg = "GET / HTTP/1.1\r\n"
     >>> msg += "Host: crisewing.com\r\n\r\n"
    @@ -581,14 +582,14 @@ 

    Putting it all together

    >>> cewing_socket = socket.socket(*info[:3]) >>> cewing_socket.connect(info[-1]) >>> msg = "GET / HTTP/1.1\r\n\r\n" +>>> msg += "Host: crisewing.com\r\n\r\n" >>> cewing_socket.sendall(msg)

    Putting it all together

    Then, receive a reply, iterating until it is complete:

    -
    -
    +
     >>> buffsize = 4096
     >>> response = ''
     >>> done = False
    @@ -601,7 +602,19 @@ 

    Putting it all together

    >>> len(response) 19427
    -
    +
    +
    +

    Break Time

    +

    So far we have:

    +
      +
    • learned about the "layers" of the TCP/IP Stack
    • +
    • discussed families, types and protocols in sockets
    • +
    • learned some API for finding out how to connect to a remote server
    • +
    • made our first connection to a server
    • +
    • and sent and received our first messages through a socket.
    • +
    +

    Not bad for a Monday morning.

    +

    Let's take 10 minutes and return to learn about the other end of this wire.

    Server Side

    @@ -610,6 +623,7 @@

    Server Side

    Construct a Socket

    For the moment, stop typing this into your interpreter.

    +

    Again, we begin by constructing a socket. Since we are actually the server this time, we get to choose family, type and protocol:

    @@ -622,6 +636,7 @@ 

    Construct a Socket

    <socket._socketobject object at 0x100563c90>
    +

    Bind the Socket

    Our server socket needs to be bound to an address. This is the IP Address and @@ -630,7 +645,7 @@

    Bind the Socket

    >>> address = ('127.0.0.1', 50000) >>> server_socket.bind(address) -

    Terminology Note: In a server/client relationship, the server binds to +

    Terminology Note: In a server/client relationship, the server binds to an address and port. The client connects

    @@ -655,7 +670,7 @@

    Accept Incoming Messages

    ... # this blocks until a client connects >>> connection.recv(16) -
      +
      • The connection returned by a call to accept is a new socket
      • It is this new socket that is used for communications with the client socket
      • @@ -670,7 +685,7 @@

        Send a Reply

        The same socket that received a message from the client may be used to return a reply:

        ->>> connection.sendall("messasge received")
        +>>> connection.sendall("message received")
         
    @@ -721,11 +736,13 @@

    Create a Client

    ... socket.SOCK_STREAM, ... socket.IPPROTO_IP) -

    Before connecting, keep your eye on the server interpreter:

    +
    +

    Before connecting, keep your eye on the server interpreter:

     >>> client_socket.connect(('127.0.0.1', 50000))
     
    +

    Send a Message Client->Server

    As soon as you made the connection above, you should have seen the prompt @@ -798,6 +815,18 @@

    The Echo Client - 1

    Save that and try it out

    +
    +

    Check Your Work

    +

    In your terminal, where you created and saved echo_client.py:

    +
    +$ python echo_client.py
    +
    +usage: python echo_client.py "this is my message"
    +
    +$ python echo_client.py "my baloney has a first name"
    +sending "my baloney has a first name"
    +
    +

    The Echo Client - 2

    @@ -842,7 +871,7 @@ 

    The Echo Server - 1

    sock.bind(address) sock.listen(1) try: - pass + pass #<- what goes here comes in the next slide except KeyboardInterrupt: sock.close() return @@ -894,8 +923,8 @@

    Playing With Your Toy

    Next Steps

    You've now seen the basics of socket-based communication.

    -

    This afternoon, we'll learn about the protocols that govern these types of -communications.

    +

    In the next session, we'll learn about the protocols that govern these types +of communications.

    As an exercise, we'll extend this simple echo server into a basic HTTP server, and we'll be able to ditch the client and use a web browser instead.

    diff --git a/presentations/session02.html b/presentations/session02.html index ff6e4d7a..008b6a37 100644 --- a/presentations/session02.html +++ b/presentations/session02.html @@ -303,11 +303,11 @@

    IMAP in Python

    ['AllowedVersions', 'CRLF', 'Commands', 'Continuation', 'Debug', 'Flags', 'IMAP4', 'IMAP4_PORT', 'IMAP4_SSL', 'IMAP4_SSL_PORT', - 'IMAP4_stream', 'Int2AP', 'InternalDate', - 'Internaldate2tuple', 'Literal', 'MapCRLF', ... 'socket', 'ssl', 'sys', 'time'] +>>> imaplib.Debug = 4
    +

    Setting imap.Debug shows us what is sent and received

    IMAP in Python

    @@ -318,17 +318,15 @@

    IMAP in Python

    >>> conn = imaplib.IMAP4_SSL('mail.webfaction.com') 57:04.83 imaplib version 2.58 57:04.83 new IMAP4 connection, tag=FNHG + ... >>> conn.login(username, password) + 12:16.50 > IMAD1 LOGIN username password + 12:18.52 < IMAD1 OK Logged in. ('OK', ['Logged in.'])

    IMAP in Python

    -

    Let's set up debugging so that we can see the communication back and forth -between client and server:

    -
    ->>> conn.debug = 4 # >3 prints all messages
    -

    We can start by listing the mailboxes we have on the server:

     >>> conn.list()
    @@ -362,11 +360,11 @@ 

    IMAP in Python

    The return value is a string list of the UIDs of messages that match our search:

    ->>> conn.search(None, '(FROM "IPIP")')
    -  18:25.41 > FNHG5 SEARCH (FROM "IPIP")
    -  18:25.54 < * SEARCH 1 2
    +>>> conn.search(None, '(FROM "cris")')
    +  18:25.41 > FNHG5 SEARCH (FROM "cris")
    +  18:25.54 < * SEARCH 1
       18:25.54 < FNHG5 OK Search completed.
    -('OK', ['1 2'])
    +('OK', ['1'])
     >>>
     
    @@ -376,11 +374,11 @@

    IMAP in Python

    command to read it from the server. IMAP allows fetching each part of a message independently:

    ->>> conn.fetch('2', '(BODY[HEADER])')
    +>>> conn.fetch('1', '(BODY[HEADER])')
     ...
    ->>> conn.fetch('2', '(BODY[TEXT])')
    +>>> conn.fetch('1', '(BODY[TEXT])')
     ...
    ->>> conn.fetch('2', '(FLAGS)')
    +>>> conn.fetch('1', '(FLAGS)')
     
    @@ -389,8 +387,8 @@

    Python Means Batteries Included

    object

     >>> import email
    ->>> typ, data = conn.fetch('2', '(RFC822)')
    -  28:08.40 > FNHG8 FETCH 2 (RFC822)
    +>>> typ, data = conn.fetch('1', '(RFC822)')
    +  28:08.40 > FNHG8 FETCH 1 (RFC822)
       ...
     

    Parse the returned data to get to the actual message

    @@ -405,11 +403,15 @@

    Python Means Batteries Included

    IMAP in Python

    Once we have that, we can play with the resulting email object:

    -
    ->>> msg['to']
    +
    +>>> msg.keys()
    +['Return-Path', 'X-Original-To', 'Delivered-To', 'Received',
    + ...
    + 'To', 'Mime-Version', 'X-Mailer']
    +>>> msg['To']
     'demo@crisewing.com'
     >>> print msg.get_payload()
    -This is an email message
    +If you are reading this email, ...
     

    Neat, huh?

    @@ -417,9 +419,9 @@

    IMAP in Python

    What Have We Learned?

    • Protocols are just a set of rules for how to communicate
    • -
    • Protocols tell us how to delimit messages
    • +
    • Protocols tell us how to parse and delimit messages
    • Protocols tell us what messages are valid
    • -
    • If we properly format request messages to a server, we can get answer +
    • If we properly format request messages to a server, we can get response messages
    • Python supports a number of these protocols
    • So we don't have to remember how to format the commands ourselves
    • @@ -427,6 +429,11 @@

      What Have We Learned?

      But in every case we've seen, we could do the same thing with a socket and some strings

    +
    +

    Break Time

    +

    Let's take a few minutes here to clear our heads.

    +

    See you back here in 10 minutes.

    +

    HTTP

    HTTP is no different

    @@ -672,13 +679,13 @@

    HTTP Methods

  • DELETE = Delete
  • -
    -

    Verbs: Safe <--> Unsafe

    -

    HTTP verbs can be categorized as safe or unsafe, based on whether they -might change something on the server:

    +
    +

    Methods: Safe <--> Unsafe

    +

    HTTP methods can be categorized as safe or unsafe, based on whether +they might change something on the server:

    • -
      Safe HTTP Verbs
      +
      Safe HTTP Methods
      • GET
      @@ -686,7 +693,7 @@

      Verbs: Safe <--> Unsafe

    • -
      Unsafe HTTP Verbs
      +
      Unsafe HTTP Methods
      • POST
      • PUT
      • @@ -698,13 +705,13 @@

        Verbs: Safe <--> Unsafe

      This is a normative distinction, which is to say be careful

    -
    -

    Verbs: Idempoent <--> ???

    -

    HTTP verbs can be categorized as idempotent, based on whether a given +

    +

    Methods: Idempoent <--> ???

    +

    HTTP methods can be categorized as idempotent, based on whether a given request will always have the same result:

    • -
      Idempotent HTTP Verbs
      +
      Idempotent HTTP Methods
      • GET
      • PUT
      • @@ -714,7 +721,7 @@

        Verbs: Idempoent <--> ???

    • -
      Non-Idempotent HTTP Verbs
      +
      Non-Idempotent HTTP Methods
      • POST
      diff --git a/presentations/session03.html b/presentations/session03.html index 8c7bf589..88c3f7d3 100644 --- a/presentations/session03.html +++ b/presentations/session03.html @@ -145,11 +145,11 @@

      Getting Virtualenv

    • pip install virtualenv
    • easy_install virtualenv
    -

    These both demand that you have already got pip or easy_install. If -you haven't, try this way instead:

    +

    You must have pip or easy_install installed. Try this:

    • download https://raw.github.com/pypa/virtualenv/master/virtualenv.py
    • remember where it goes. You'll need it
    • +
    • there is a copy in the class resources (common)
    @@ -213,11 +213,11 @@

    Choose a Parsing Engine

    BeautifulSoup is built to use the Python HTMLParser.

    • Batteries Included. It's already there
    • -
    • It kinda sucks, especially before Python 2.7.3
    • +
    • It's not great, especially before Python 2.7.3
    -

    BeautifulSoup also supports using other parsers. Let's install one. There are -two decent choices: lxml and html5lib.

    -

    lxml is better, but harder to install. Let's use html5lib today.

    +

    BeautifulSoup also supports using other parsers.

    +

    There are two good choices: lxml and html5lib.

    +

    lxml is better, but much harder to install. Let's use html5lib.

    Install a Parsing Engine

    @@ -225,10 +225,9 @@

    Install a Parsing Engine

     (soupenv)$ pip install html5lib
     
    -

    Once that is installed, BeautifulSoup will choose it instead of the standard -library module.

    -

    BeautifulSoup will choose the best available, you don't need to worry about it -(though you can specify).

    +

    Once installed, BeautifulSoup will choose it automatically.

    +

    BeautifulSoup will choose the "best" available.

    +

    You can specify the parser if you need to for some reason.

    Install Requests

    @@ -262,46 +261,41 @@

    Examine the Source

  • price: minAsk=NNN maxAsk=NNN
  • bedrooms: bedrooms=N (N in range 1-8)
  • -

    We can make a request with these parameters using the requests library we -installed a moment ago

    +

    We'll make an HTTP request with these parameters

    Opening URLs with Requests

    -

    Requests has a very nice API for doing HTTP requests.

    -

    Each HTTP method is represented by a module-level function:

    +

    In requests, each HTTP method has a module-level function:

    • GET == requests.get(url, **kwargs)
    • POST == requests.post(url, **kwargs)
    • ...
    -

    Keyword arguments allow for other parts of an HTTP request:

    +

    kwargs represent other parts of an HTTP request:

      -
    • params: url parameters (?foo=bar&baz=bim)
    • -
    • headers: headers to send with the request
    • +
    • params: a dict of url parameters (?foo=bar&baz=bim)
    • +
    • headers: a dict of headers to send with the request
    • data: the body of the request, if any (form data for POST goes here)
    • ...

    Getting Responses with Requests

    -

    Once you've made a request using one of these methods, the return value is a -response.

    -

    This object has a number of useful attributes:

    +

    The return value from one of these functions is a response which provides:

    • response.status_code: see the HTTP Status Code returned
    • -
    • response.ok: True if response.status_code is not an error code
    • -
    • response.headers: The headers sent in the response from the server
    • -
    • response.text: Body of the response, decoded to a unicode string
    • -
    • response.encoding: The encoding used to decode response.text
    • -
    • response.content: The original response body, not decoded (useful for -binary content)
    • +
    • response.ok: True if response.status_code is not an error
    • +
    • response.raise_for_status(): call to raise a python error if it is
    • +
    • response.headers: The headers sent from the server
    • +
    • response.text: Body of the response, decoded to unicode
    • +
    • response.encoding: The encoding used to decode
    • +
    • response.content: The original response body as bytes
    -

    If an error status is returned, you can raise a Python error by calling -response.raise_for_status.

    +

    requests documentation: http://docs.python-requests.org/en/latest/

    Fetch Search Results

    -

    We can start our work by writing a function fetch_search_results

    +

    We'll start by writing a function fetch_search_results

    • It will accept one keyword argument for each of the possible query values
    • It will build a dictionary of request query parameters from incoming keywords
    • @@ -309,8 +303,7 @@

      Fetch Search Results

    • It will return the body of the response if there is no error
    • It will raise an error if there is a problem with the response
    -

    Using what you've learned, take a stab at writing this function. Put it in -mashup.py

    +

    Try writing this function. Put it in mashup.py

    My Solution

    @@ -327,10 +320,8 @@

    My Solution

    raise ValueError("No valid keywords") resp = requests.get(base, params=use_kwargs, timeout=3) - if resp.ok: - return resp.text, resp.encoding - else: - resp.raise_for_status() + resp.raise_for_status() #<- no-op if status==200 + return resp.text, resp.encoding
    @@ -376,15 +367,18 @@

    My Solution

    Put It Together

    -

    To see how we're doing, we'll need to make our script do something when run.

    -

    Add an if __name__ == '__main__`: block to the bottom of our library

    +

    We'll need to make our script do something when run.

    +
    +if __name__ == '__main__':
    +    # do something
    +
    • Fetch a search results page
    • Parse the resulting HTML
    • For now, print out the results so we can see what we get
    -

    You can print nice-looking output with BeautifulSoup:

    +

    Use the prettify method on a BeautifulSoup object:

     print parsed.prettify()
     
    @@ -393,7 +387,7 @@

    Put It Together

    My Solution

    Try to come up with the proper code on your own. Add it to mashup.py

    -
    +
     if __name__ == '__main__':
         params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2}
         html, encoding = fetch_search_results(**params)
    @@ -425,8 +419,8 @@ 

    Test Your Work

    Finding The Needle

    -

    The next step is to find the bits of this pile of HTML that matter to us.

    -

    We've got this HTML file, so let's open it in a browser and take a look

    +

    Next we find the bits of this pile of HTML that matter to us.

    +

    Open your html file in a browser and take a look.

    We'll want to find:

    • The HTML element that contains a single listing
    • @@ -438,19 +432,18 @@

      Finding The Needle

    Pulling it Out

    -

    Now that we know what we are looking for, we can extract it. In BeautifulSoup:

    +

    We can extract this information now. In BeautifulSoup:

      -
    • All HTML elements (including the parsed document itself) act like tags
    • -
    • A tag can be searched using the find_all method
    • -
    • The find_all method searches the descendents of the tag on which it is -called.
    • -
    • The find_all method takes arguments which act as filters on the search -results
    • +
    • All HTML elements (including the parsed document itself) are tags
    • +
    • A tag can be searched using its find_all method
    • +
    • This searches the descendents of the tag on which it is called.
    • +
    • It takes arguments which act as filters on the search results
    -
    -
    like so:
    -

    -
    tag.find_all(name, attrs, recursive, text, limit, **kwargs)
    +
    +

    like so:

    +
    +tag.find_all(name, attrs, recursive, text, limit, **kwargs)
    +
    @@ -567,7 +560,7 @@

    Extracting Price and Size

    Simple Navigation and Text

    We can get to a simple text node by navigating there.

    -

    BeautifulSoup tags support navigation up, down and across document nodes.

    +

    You can navigate up, down and across document nodes.

    We already have the price span, the size text node is next at the same level:

    @@ -581,7 +574,7 @@

    Simple Navigation and Text

    The NavigableString Element

    -

    The most obvious reason is that we don't really want all the extra whitespace.

    +

    The most obvious reason is that we don't want extra whitespace.

    The second reason is more subtle. The values returned by string are not simple unicode strings

    @@ -591,7 +584,6 @@

    The NavigableString Element

    <class 'bs4.element.NavigableString'>
    -

    These things hold references to their surroundings.

    Calling strip or casting them to unicode converts them, saving memory

    @@ -599,14 +591,25 @@

    Put It All Together

    Okay, a challenge. Combine everything we've done into a function that:

    • Extracts all the locatable listings from our html page
    • -
    • Iterates over each of them, and builds a dictionary of data -* include location, href, description, price and size
    • +
    • Iterates over each of them, and builds a dictionary of data
        +
      • include location, href, description, price and size
      • +
      +
    • Returns a list of these dictionaries

    Call it extract_listings

    Put this new function into mashup.py and call it from __main__, printing the result

    +
    +

    Break Time

    +

    Once you have this working, take a break.

    +

    When we return, we'll try a saner approach to getting data from online

    +
    +

    While you have a moment, sign up for an API key from this service:

    +

    http://www.walkscore.com/professional/api.php

    +
    +

    My Solution

    @@ -713,13 +716,13 @@ 

    Beyond XML-RPC

    • XML-RPC allows introspection
    • XML-RPC forces you to introspect to get information
    • -
    • Wouldn't it be nice to get that automatically?
    • +
    • Wouldn't it be nice to get that automatically?
    • XML-RPC provides data types
    • XML-RPC provides only certain data types
    • -
    • Wouldn't it be nice to have an extensible system for types?
    • +
    • Wouldn't it be nice to have an extensible system for types?
    • XML-RPC allows calling methods with parameters
    • XML-RPC only allows calling methods, nothing else
    • -
    • wouldn't it be nice to have contextual data as well?
    • +
    • wouldn't it be nice to have contextual data as well?

    Enter SOAP: Simple Object Access Protocol

    @@ -853,7 +856,7 @@

    Why Do All The Work?

    REST

    Representational State Transfer

      -
    • Originally described by Roy T. Fielding (did you read it?)
    • +
    • Originally described by Roy T. Fielding (worth reading)
    • Use HTTP for what it can do
    • Read more in this book*
    @@ -883,7 +886,7 @@

    A Comparison

    ROA

    This is Resource Oriented Architecture

    The URL represents the resource we are working with

    -

    The HTTP Verb represents the action to be taken

    +

    The HTTP Method represents the action to be taken

    The HTTP Code returned tells us the result (whether success or failure)

    @@ -908,8 +911,8 @@

    HTTP Codes Revisited

    HTTP Is Stateless

    No individual request may be assumed to know anything about any other request.

    -

    All the required information for to represent the possible actions to take -should be present in either the request or the response.

    +

    All the required information representing the possible actions to take should +be present in every response.

    Thus: HATEOAS

    @@ -959,7 +962,7 @@

    Reverse Geocoding

    You can do the same thing in reverse, supply latitude and longitude and get back address information:

    ->>> location = lookup['results'][0]['geometry']['location']
    +>>> location = data['results'][0]['geometry']['location']
     >>> latlng = '%f,%f' % (location['lat'], location['lng'])
     >>> parameters = {'latlng': latlng, 'sensor': 'false'}
     >>> resp = requests.get(url, params=paramters)
    @@ -1023,7 +1026,7 @@ 

    Add Address to Output

    And give the result a whirl:

     (soupenv)$ python mashup.py
    -{'address': u'800 Bethlehem Road, Knightdale, NC 27545, USA',
    +{'address': u'123 Some Street, Chapel Hill, NC ...',
      'description': u'3 bedroom 2 bathroom unit is move in ready!'
      ...
     }
    @@ -1036,8 +1039,7 @@ 

    One More Step

    So I'd like to find an apartment that is located somewhere 'walkable'

    There's an API for that!

    http://www.walkscore.com/professional/api.php

    -

    Take a second here and sign up for an api key. Use a real email address, -they'll email you an API key.

    +

    If you haven't already, sign up for an API key now.

    Getting a Walk Score

    @@ -1115,11 +1117,13 @@

    My Results

    listing = add_walkscore(listing) pprint.pprint(listing) -

    Let's try it out:

    +
    +

    Let's try it out:

     (soupenv)$ python mashup.py
     
    +

    Wrap Up

    We've built a simple mashup combining data from three different sources.

    diff --git a/presentations/session04.html b/presentations/session04.html index bf07344b..fac43719 100644 --- a/presentations/session04.html +++ b/presentations/session04.html @@ -738,16 +738,16 @@

    A More Complex Example

    Some Questions to Ponder

    When viewing our first wsgi app, do we see the name of the wsgi application -script anywhere?

    +script anywhere in the URL?

    In our wsgi application script, how many applications did we actually have?

    How are we going to serve different types of information out of a single application?

    -
    -

    Routing

    +
    +

    Dispatch

    We have to write an app that will map our incoming request path to some code that can handle that request.

    -

    This process is called routing. There are many possible approaches

    +

    This process is called dispatch. There are many possible approaches

    Let's begin by designing this piece of it.

    Open bookapp.py from the wsgi folder. We'll do our work here.

    @@ -758,7 +758,7 @@

    PATH

    We can design the URLs that our app will use to assist us in routing.

    Let's declare that any request for / will map to the list page

    -

    We can furthermore say that the URL for a book will look like this:

    +

    We can also say that the URL for a book will look like this:

     http://localhost:8080/book/<identifier>
     
    @@ -807,7 +807,7 @@

    Application Updates

    My Solution

    -
    +
     def application(environ, start_response):
         headers = [("Content-type", "text/html")]
         try:
    diff --git a/presentations/session05.html b/presentations/session05.html
    index 25119284..5bdf49b9 100644
    --- a/presentations/session05.html
    +++ b/presentations/session05.html
    @@ -83,8 +83,8 @@ 

    What Does That Mean?

    A framework allows you to build different kinds of applications.

    A framework abstracts what needs to be abstracted, and allows control of the rest.

    -

    Think back over the last four weeks. What were your pain points? Which bits do -you wish you didn't have to think about?

    +

    Think back over the last four sessions. What were your pain points? Which bits +do you wish you didn't have to think about?

    Level of Abstraction

    @@ -467,15 +467,15 @@

    Reversing in Action

    Quit your Flask app with ^C. Then start a python interpreter in that same terminal and import your flask_intro.py module:

    -import flask_intro
    -from flask_intro import app
    -from flask import url_for
    -with app.test_request_context():
    -    print url_for('show_profile', username="cris")
    -    print url_for('divide', val=23.7)
    -
    +>>> from flask_intro import app
    +>>> from flask import url_for
    +>>> with app.test_request_context():
    +...     print url_for('show_profile', username="cris")
    +...     print url_for('divide', val=23.7)
    +...
     '/profile/cris/'
     '/div/23.7/'
    +>>>
     
    diff --git a/presentations/session06.html b/presentations/session06.html index f2987f15..9fd00ca9 100644 --- a/presentations/session06.html +++ b/presentations/session06.html @@ -146,15 +146,16 @@

    Tests and TDD

    You'll want to read more about this module. See the reading list for suggestions.

    -
    -

    Testing Envrionment

    +
    +

    Testing Environment

    The Python unittest module defines a class called a TestCase. It serves as a container for a set of tests and the code needed to run them.

    This class provides setUp and tearDown methods to control the environment for each test.

    These methods are run before and after each test, and may be used to provide isolation between tests.

    -

    Create a microblog_tests.py file. Open it in your editor

    +

    In your microblog folder create a microblog_tests.py file.

    +

    Open it in your editor.

    Testing Setup

    @@ -512,14 +513,15 @@

    Run Your Tests

    Make Them Pass

    -

    Now we have 4 tests, and two fail, add this function to microblog.py:

    -
    +

    Now we have 4 tests, and two fail.

    +

    add the get_all_entries function to microblog.py:

    +
     def get_all_entries():
         con = get_database_connection()
         cur = con.execute('SELECT title, text FROM entries ORDER BY id DESC')
         return [dict(title=row[0], text=row[1]) for row in cur.fetchall()]
     
    -
    +

    And back in your terminal:

     (flaskenv)$ python microblog_tests.py
    @@ -543,9 +545,13 @@ 

    Where We Stand

    We're ready now to put a face on it, so we can see what we're doing!

    +
    +

    Break Time

    +

    But first, let's take a quick break to clear our heads.

    +

    Templates In Flask

    -

    First, though, a detour into templates as they work in Flask

    +

    We'll start with a detour into templates as they work in Flask

    Jinja2 templates use the concept of an Environment to:

      @@ -903,29 +909,28 @@

      Run Your Tests

      Login Form Template

      Add login.html to the templates directory:

      - +
      +{% extends "layout.html" %}
      +{% block body %}
      +  <h2>Login</h2>
      +  {% if error -%}
      +    <p class="error"><strong>Error</strong> {{ error }}
      +  {%- endif %}
      +  <form action="{{ url_for('login') }}" method="POST">
      +    <div class="field">
      +      <label for="username">Username</label>
      +      <input type="text" name="username" id="username"/>
      +    </div>
      +    <div class="field">
      +      <label for="password">Password</label>
      +      <input type="password" name="password" id="password"/>
      +    </div>
      +    <div class="control_row">
      +      <input type="submit" name="Login" value="Login"/>
      +    </div>
      +  </form>
      +{% endblock %}
      +

      Required Imports

      diff --git a/presentations/session07.html b/presentations/session07.html index eb82d757..c0cd67df 100644 --- a/presentations/session07.html +++ b/presentations/session07.html @@ -244,29 +244,24 @@

      Django and WSGI

      The Django WSGIHandler

      -
      +
       class WSGIHandler(base.BaseHandler):
           #...
           def __call__(self, environ, start_response):
      -        if self._request_middleware is None:
      -            #... set up django middleware
      -        #...
      +        #... set up django middleware
               try:
      +            #... build a request
                   request = self.request_class(environ)
               except UnicodeDecodeError:
      -            #...
      -            response = http.HttpResponseBadRequest()
      +            #... handle request errors
               else:
      +            # build a response
                   response = self.get_response(request)
      -        #...
      -        try:
      -            status_text = STATUS_CODE_TEXT[response.status_code]
      -        except KeyError:
      -            status_text = 'UNKNOWN STATUS CODE'
      +        #... determine response status
               status = '%s %s' % (response.status_code, status_text)
      +        #... build response headers
               response_headers = [(str(k), str(v)) for k, v in response.items()]
      -        for c in response.cookies.values():
      -            response_headers.append((str('Set-Cookie'), str(c.output(header=''))))
      +        #... start a response with status and headers
               start_response(force_str(status), response_headers)
               return response
       
      @@ -303,35 +298,15 @@

      A Blank Slate

      Connecting A Database

      -

      Django comes with its own ORM (Object-Relational Mapper)

      -

      The first step in working with Django is to connect it to your database (this -is set in settings.py)

      -
      -DATABASES = {
      -    'default': {
      -        'ENGINE': 'django.db.backends.<your_db_backend>',
      -        'NAME': '<your_db_name>',
      -        'USER': '<your_db_user>',
      -        'PASSWORD': '<your_db_password>',
      -        'HOST': '<not_needed_on_localhost>',
      -        'PORT': '<not_needed_on_localhost>',
      -    }
      -}
      -
      -
      -
      -

      A Quick Word about Databases

      -

      Sqlite3 is not a production-capable database. Do not attempt to use it as -such.

      -

      Do not start a real project using sqlite3, expecting to move 'when you go to -production'.

      -

      That being said, proper database administration is out-of-scope for this -class.

      -

      So we'll be using sqlite3 for todays work.

      +

      Django supplies its own ORM (Object-Relational Mapper)

      +

      This ORM sits on top of the DB-API implementation you choose.

      +

      You must provide connection information through Django configuration.

      +

      All Django configuration takes place in settings.py in your project +folder.

      Your Database Settings

      -

      Edit settings.py in your project package to match:

      +

      Edit your settings.py to match:

       DATABASES = {
           'default': {
      @@ -348,7 +323,7 @@ 

      Your Database Settings

      Django and Your Database

      -

      Django interfaces with the database using an ORM (Object Relational Mapping)

      +

      Django's ORM provides a layer of abstraction between you and SQL

      You write Python models describing the object that make up your system.

      The ORM handles converting data from these objects into SQL statements (and back)

      @@ -434,8 +409,8 @@

      What is Created

      Django Models

      Any Python class in Django that is meant to be persisted must inherit from the Django Model class.

      -

      This base class provides all the functionality that connects the Python code -you write to your database.

      +

      This base class hooks in to the ORM functionality converting Python code to +SQL.

      You can override methods from the base Model class to alter how this works or write new methods to add functionality.

      Learn more about models

      @@ -567,6 +542,26 @@

      My Solution

    +
    +

    A Word About Development

    +

    These models we've created are not going to change often. This is unusual for +a development cycle.

    +

    The syncdb management command only creates tables that do not yet exist. +It does not update tables.

    +

    The sqlclear <appname> command will print the DROP TABLE statements to +remove the tables for your app.

    +

    Or sql <appname> will show the CREATE TABLE statements, and you can work +out the differences and update manually.

    +
    +
    +

    ACK!!!

    +

    That doesn't sound very nice, does it?

    +

    Luckily, there is an app available for Django that helps with this: South

    +

    South allows you to incrementally update your database in a simplified way.

    +

    South supports forward, backward and data migrations.

    +

    We won't have time to cover it in +this class, but know it's there.

    +

    Hooking it Up

    In order to use our new models, we need Django to know about our app

    @@ -615,25 +610,6 @@

    ORM and SQL

    We don't need to know that a join table is needed for a ManyToMany relation.

    This is but one of the ways that the ORM helps us. More soon.

    -
    -

    A Word About Development

    -

    These models we've created are not going to change often. This is unusual for -a development cycle.

    -

    The syncdb management command only creates tables that do not yet exist. -It does not update tables.

    -

    The sqlclear <appname> command will print the DROP TABLE statements to -remove the tables for your app.

    -

    Or sql <appname> will show the CREATE TABLE statements, and you can work -out the differences and update manually.

    -
    -
    -

    ACK!!!

    -

    That doesn't sound very nice, does it?

    -

    Luckily, there is an app available for Django that helps with this: South

    -

    South allows you to incrementally update your database in a simplified way.

    -

    South supports forward, backward and data migrations.

    -

    We won't have time to cover it in this class, but know it's there.

    -

    Break Time

    Let's take a break here and return in 10 minutes.

    @@ -800,7 +776,7 @@

    QuerySets and SQL

    AND NOT ("myblog_post"."text" LIKE %created% ESCAPE '\' ) ) -

    The exact SQL will vary automatically depending on the database you are using.

    +

    The SQL will vary depending on which DBAPI backend you use (yay ORM!!!)

    Exploring the QuerySet API

    @@ -867,7 +843,7 @@

    Testing Data

    Django provides fixtures to handle this need.

    Create a directory called fixtures inside your myblog app directory.

    Copy the file myblog_test_fixture.json from the class resources into this -directory, it contains a user for us.

    +directory, it contains users for our tests.

    Setting Up Our Tests

    diff --git a/presentations/session08.html b/presentations/session08.html index 610f7585..e6fdd085 100644 --- a/presentations/session08.html +++ b/presentations/session08.html @@ -332,11 +332,6 @@

    A Final Tweak

    admin.site.register(Category, CategoryAdmin)
    -
    -

    PLACEHOLDER

    -

    Do we have time to do an admin action here? if so, add actions to publish, -unpublish items in bulk

    -

    A Public Face

    Point your browser at http://localhost:8000/

    @@ -429,7 +424,6 @@

    Project URL Space

    • A list view that shows blog posts, most recent first.
    • An individual post view, showing a single post (a permalink).
    • -
    • A category view that shows all posts in a given category.

    Let's add urls for each of these, use the stub view for now.

    @@ -461,19 +455,6 @@

    A Word on Capture in URLs

    How you declare a capture group in your url pattern regexp influenced how it will be passed to the view callable.

    -
    -

    Category View URL

    -

    Try writing the URL pattern for the category view on your own.

    -
    -

    My version looks like this:

    -
    -url(r'^category/(?P<category_id>\d+)/$',
    -    'stub_view',
    -    name="category_view"),
    -
    -
    -

    At this point, we should have three url patterns in our urlconf

    -

    Full Urlconf

    @@ -486,9 +467,6 @@ 

    Full Urlconf

    url(r'^posts/(?P<post_id>\d+)/$', 'stub_view', name="blog_detail"), - url(r'^category/(?P<category_id>\d+)/$', - 'stub_view', - name="category_view") )
    @@ -496,10 +474,10 @@

    Full Urlconf

    Testing Views

    Before we begin, we need to add some tests for the views we are about to create.

    -

    We'll need tests for a list view, a detail view and a category view

    +

    We'll need tests for a list view and a detail view

    To save us time, I've written these tests already

    You can find them in the class resources directory: blog_view_tests.py

    -

    Copy the TestCase and imports from that file into our blog tests.py file.

    +

    Copy the contents of that file into our blog tests.py file.

    Run The Tests

    @@ -507,9 +485,9 @@

    Run The Tests

    (djangoenv)$ python manage.py test myblog ... ---------------------------------------------------------------------- -Ran 8 tests in 0.478s +Ran 7 tests in 0.478s -FAILED (failures=3) +FAILED (failures=2) Destroying test database for alias 'default'...
    @@ -666,8 +644,8 @@

    Fix URLs

     (djangoenv)$ python manage.py test myblog
     ...
    -Ran 8 tests in 0.494s
    -FAILED (failures=2)
    +Ran 7 tests in 0.494s
    +FAILED (failures=1)
     
    @@ -782,8 +760,8 @@

    Fix URLs

     (djangoenv)$ python manage.py test myblog
     ...
    -Ran 8 tests in 0.513s
    -FAILED (failures=1)
    +Ran 7 tests in 0.513s
    +OK
     
    @@ -793,101 +771,6 @@

    A Moment To Play

    You can now move back and forth between list and detail view.

    Try loading the detail view for a post that doesn't exist

    -
    -

    Category Lists

    -

    Let's implement the category listing next

    -

    Before we do so, make sure you have added categories to any posts you've -created.

    -

    Go to http://localhost:8000/admin/ and make sure:

    -
      -
    • you have at least three or four posts
    • -
    • each post is in one or more categories
    • -
    • at least one category has more than one post
    • -
    -
    -
    -

    Category View

    -

    The view should have the following signature:

    -
    -category_view(request, category_id):
    -
    -

    We can re-use the list.html template with some minor modifications

    -

    Let's start by adding view code to views.py

    -
    -
    -

    category_view

    -
    -# add an import
    -from myblog.models import Category
    -
    -# and this function
    -def category_view(request, category_id):
    -    try:
    -        category = Category.objects.get(pk=category_id)
    -    except Category.DoesNotExist:
    -        raise Http404
    -    published = category.posts.exclude(published_date__exact=None)
    -    context = {
    -        'posts': published.order_by('-published_date'),
    -        'title': "Posts in %s" % category.name,
    -        'description': category.description
    -    }
    -    return render(request, 'list.html', context)
    -
    -
    -
    -

    Backport Changes

    -

    We've added two new items to the template context

    -

    Let's update list.html to use title and description

    -
    -{% block content %}
    -  <h1>{{ title }}</h1>
    -  <p class="pageDescription">{{ description }}</p>
    -
    -
    -

    Also go back and update the template context in list_view

    -
    -context = {'posts': posts, 'title': 'Recent Posts',
    -           'description': ''}
    -
    -
    -
    -
    -

    Hook It Up

    -

    To view a category, we'll need to link categories to in templates to this view

    -

    Again, use the url template tag

    -

    The categories for a post are listed in both list.html and detail.html

    -

    Add links to both places now.

    -
    -
    -

    My Version

    -
    -# in both templates
    -<ul class="categories">
    -  {% for category in post.categories.all %}
    -    <li>
    -      <a href="{% url 'category_view' category.pk %}">
    -        {{ category }}</a>
    -    </li>
    -  {% endfor %}
    -</ul>
    -
    -
    -
    -

    Fix URLs

    -

    Substitute the view name category_view into urls.py:

    -
    -url(r'^category/(?P<category_id>\d+)/$',
    -    'category_view',
    -    name="category_view")
    -
    -
    -(djangoenv)$ python manage.py test myblog
    -...
    -Ran 8 tests in 0.547s
    -OK
    -
    -

    Congratulations

    You've got a functional Blog

    @@ -915,6 +798,336 @@

    Add CSS

    +
    +

    View Your Results

    +

    Reload http://localhost:8000/ and view the results of your work

    +

    We now have a reasonable view of the posts of our blog on the front end

    +

    And we have a way to create and categorize posts using the admin

    +

    However, we lack a way to move between the two.

    +

    Let's add that ability next.

    +
    +
    +

    Adding A Control Bar

    +

    We'll start by adding a control bar to our base.html template:

    +
    +<!DOCTYPE html>
    +  ...
    +    <div id="header">
    +      <ul id="control-bar">
    +      {% if user.is_authenticated %}
    +        {% if user.is_admin %}<li>admin</li>{% endif %}
    +        <li>logout</li>
    +      {% else %}
    +        <li>login</li>
    +      {% endif %}
    +      </ul>
    +    </div>
    +    <div id="container">
    +      ...
    +
    +
    +
    +

    Request Context Revisited

    +

    When we set up our views, we used the render shortcut, which provides a +RequestContext

    +

    This gives us access to user in our templates

    +

    It provides access to methods about the state and rights of that user

    +

    We can use these to conditionally display links or UI elements.

    +
    +
    +

    Login/Logout

    +

    Django provides a reasonable set of views for login/logout.

    +

    The first step to using them is to hook them into a urlconf.

    +
    +

    Add the following to mysite/urls.py:

    +
    +url(r'^', include('myblog.urls')), #<- already there
    +url(r'^login/$',
    +    'django.contrib.auth.views.login',
    +    {'template_name': 'login.html'},
    +    name="login"),
    +url(r'^logout/$',
    +    'django.contrib.auth.views.logout',
    +    {'next_page': '/'},
    +    name="logout"),
    +
    +
    +
    +
    +

    Login Template

    +

    We need to create a new login.html template in mysite/templates:

    +
    +{% extends "base.html" %}
    +
    +{% block content %}
    +<h1>My Blog Login</h1>
    +<form action="" method="POST">{% csrf_token %}
    +  {{ form.as_p }}
    +  <p><input type="submit" value="Log In"></p>
    +</form>
    +{% endblock %}
    +
    +
    +
    +

    Submitting Forms

    +

    In a web application, submitting forms is potentially hazardous

    +

    Data is being sent to our application from some remote place

    +

    If that data is going to alter the state of our application, we must use +POST

    +

    Even so, we are vulnerable to Cross-Site Request Forgery, a common attack +vector.

    +
    +
    +

    Danger: CSRF

    +

    Django provides a convenient system to fight this.

    +

    In fact, for POST requests, it requires that you use it.

    +

    The Django middleware that does this is enabled by default.

    +

    All you need to do is include the {% csrf_token %} tag in your form.

    +
    +
    +

    Hooking It Up

    +

    In base.html make the following updates:

    +
    +<!-- admin link -->
    +<a href="{% url 'admin:index' %}">admin</a>
    +<!-- logout link -->
    +<a href="{% url 'logout' %}">logout</a>
    +<!-- login link -->
    +<a href="{% url 'login' %}">login</a>
    +
    +
    +

    Finally, in settings.py add the following:

    +
    +LOGIN_URL = '/login/'
    +LOGIN_REDIRECT_URL = '/'
    +
    +
    +
    +
    +

    Handling Forms

    +

    Adding login and logout has given us a sneak peek at forms.

    +

    But there is a lot of magic happening that we should see directly.

    +

    As a last task, let's add a non-admin way to create new posts.

    +

    We'll use a form, submit it to a view, and have it create a new Post object

    +
    +
    +

    Django Forms

    +

    Forms are, like Models, a Django class

    +

    Like Models, you add fields to a form as class attributes

    +

    Like Model fields, the fields on a form are also Python class instances.

    +

    Unlike Model fields, Form fields are built to interact with data in a +request

    +

    By tradition, they are created in a module called forms.py

    +
    +
    +

    Post Form

    +

    Create forms.py in myblog and open it in your editor.

    +
    +from django import forms
    +from myblog.models import Post
    +
    +class PostForm(forms.ModelForm):
    +
    +    class Meta:
    +        model = Post
    +        fields = ('title', 'text', 'author')
    +
    +

    The ModelForm class generates fields based on the model.

    +

    Use fields to force only a subset of those.

    +
    +
    +

    A View for Our Form

    +

    The basic approach to handling forms in Django always follows this pattern:

    +
    +if request.method == 'POST':
    +    # bind a form instance to POST data
    +    if form.is_valid():
    +        # process the form data here
    +        # tell the user about the success
    +    else:
    +        # tell the user about the problem
    +else:
    +    # create an unbound form
    +# render the form template
    +
    +

    Let's create a add_post view that does this with our PostForm

    +
    +
    +

    add_post view

    +
    +# add imports to views.py
    +from django.core.exceptions import PermissionDenied
    +from django.contrib import messages
    +from django.core.urlresolvers import reverse
    +from myblog.forms import PostForm
    +
    +# and a new view function:
    +def add_view(request):
    +    user = request.user
    +    if not user.is_authenticated:
    +        raise PermissionDenied
    +    if request.method == 'POST':
    +        form = PostForm(request.POST)
    +        # handle form submission
    +    else:
    +        form = PostForm()
    +    context = {'form': form}
    +    return render(request, 'add.html', context)
    +
    +
    +
    +

    Add A URL

    +

    In myblog/urls.py add a new entry to our urlconf:

    +
    +url(r'^add/$',
    +    'add_view',
    +    name="add_post"),
    +
    +
    +

    And hook it up to the control bar link in base.html

    +
    +<!-- update new post link -->
    +<a href="{% url 'add_post' %}">new post</a>
    +
    +
    +
    +
    +

    Create add.html

    +

    Finally, we need to create a template, add.html in myblog/templates:

    +
    +{% extends "base.html" %}
    +
    +{% block content %}
    +<h1>New Blog Post</h1>
    +<form action="" method="POST">{% csrf_token %}
    +  {{ form.as_p }}
    +  <p><input type="submit" value="Save"></p>
    +</form>
    +{% endblock %}
    +
    +
    +
    +

    Try it Out

    +

    You should be able to click on the 'new post' button in the control bar.

    +

    How does the form look?

    +

    It would be nice if the 'author' field were auto-populated, and even hidden.

    +

    Let's do that next.

    +
    +
    +

    Form 'initial'

    +

    When instantiating a form, you can pass it initial values.

    +
    +

    In views.py make the following changes to the add_view:

    +
    +def add_view(request):
    +    user = request.user
    +    if not user.is_authenticated:
    +        raise PermissionDenied
    +    if request.method == 'POST':
    +        #... not quite ready for this yet.
    +    else:
    +        initial = {'author': user} #<- add this
    +        form = PostForm(initial=initial) #<- updated
    +
    +
    +
    +
    +

    Hidden Fields

    +

    If you reload, you should now see author pre-popluated.

    +
    +

    To hide it, we must update the 'widget' it will use in forms.py:

    +
    +class PostForm(forms.ModelForm):
    +
    +    class Meta:
    +        #...
    +        widgets = {
    +            'author': forms.HiddenInput(),
    +        }
    +
    +
    +

    Reload again to see the input disappear. Check page source to see the 'hidden' +input.

    +
    +
    +

    Form Submission

    +

    That's all we need to have for processing. We want to:

    +
      +
    • Validate the form input
    • +
    • Report validation errors to the user and return the bound form
    • +
    • If no errors occur, save the form, creating an instance
    • +
    • Report success to the user and redirect to the list homepage.
    • +
    +

    Django's messages framework will allow notifications.

    +
    +
    +

    Handle a Submitted Form

    +

    In views.py, update the add_view:

    +
    +def add_view(request):
    +    user = request.user
    +    if not user.is_authenticated:
    +        raise PermissionDenied
    +    if request.method == 'POST':
    +        form = PostForm(request.POST)
    +        if form.is_valid:
    +            post = form.save()
    +            msg = "post '%s' saved" % post
    +            messages.add_message(request, messages.INFO, msg)
    +            return HttpResponseRedirect(reverse('blog_index'))
    +        else:
    +            messages.add_message("please fix the errors below")
    +    else:
    +        #...
    +
    +
    +
    +

    Showing Messages

    +

    The messages framework pushes messages onto a stack.

    +

    You can then pop them back off by printing them in a template.

    +
    +

    In base.html let's give them a place to go:

    +
    +<div id="container">
    +  {% if messages %}
    +  <div class="notifications">
    +   {% for message in messages %}
    +   <p>{{ message }}</p>
    +   {% endfor %}
    +  </div>
    +  {% endif %}
    +  <!-- main content div below here -->
    +
    +
    +
    +
    +

    Final Run

    +

    That should be enough to get us going.

    +

    Fill out your form, supplying title and text.

    +

    Submit the form, and notice the messaging from the system.

    +

    Why is your new post not appearing in the blog list?

    +
    +
    +

    Next Steps

    +

    There are a number of improvements one could make to this blog system:

    +
      +
    • Send email notifications to "blog administrators" that would notify them of +new posts awaiting publication.
    • +
    • Provide a second list view giving users access to edit their unpublished +posts.
    • +
    • Provide restricted access to certain users to view all unpublished posts and +choose to publish them.
    • +
    • Add a form field for the post category and put the post in a category when +processing the form
    • +
    • Provide a list view of a category, showing all posts in it.
    • +
    • Provide HTML editing for post text.
    • +
    +
    +
    +

    That's All For Now

    +

    But this is all we have time for in this session.

    +

    We'll see you next session!

    +
    diff --git a/readings.html b/readings.html index 5195780c..46d7c3cf 100644 --- a/readings.html +++ b/readings.html @@ -122,6 +122,7 @@

    Session 3 - APIs and MashupsBeautifulSoup - “You didn’t write that awful page. You’re just trying to get some data out of it. Right now, you don’t really care what HTML is supposed to look like. Neither does this parser.” +
  • requests - HTTP for humans
  • httplib2 - A comprehensive HTTP client library that supports many features left out of other HTTP libraries.
  • rpclib - a simple, easily extendible soap library that provides several @@ -203,6 +204,9 @@

    Sessions 7 & 8 - Django

    Bookmark the Django Documentation homepage. It really is “everything you need to know about Django”

    +

    Learn about South and make a +habit of using it in developing Django apps. It will save you time, money and +brain cells.

    When you have some time, read Django Design Philosophies - for some well-considered words on why Django is the way it is.

    Conversely, for some well-considered criticisms of Django and the way it is, diff --git a/searchindex.js b/searchindex.js index aef1dd4e..8723c044 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({objects:{},terms:{breadth:2,all:[0,1],code:[1,2],queri:2,consum:[1,2],commun:[0,1],focus:1,four:[],concept:[0,1,2],skim:2,ronach:2,abil:[],edu:2,follow:2,although:1,decid:1,educ:[],git:[],flask:[0,1,2],tomayko:2,descript:[],send:1,human:2,program:[0,1,2],decis:[1,2],under:1,sens:[],spec:2,introduc:1,fax:[],sourc:[1,2],string:2,chameleon:[1,2],far:[1,2],mcdonough:2,util:2,govern:[0,1],veri:[1,2],word:2,brows:1,chapel:0,unexcus:[],hour:1,level:0,button:[],list:[0,2],"try":2,imaplib:1,supplement:2,kit:2,team:[],small:1,wednesdai:[],pleas:[],enterpris:[],outlin:[0,1],representational_state_transf:2,cgi_exampl:[],htm:2,request:[1,2],restkit:2,design:[0,1,2],pass:1,further:[],carlo:2,click:[],even:[1,2],index:[],what:[0,1,2],sud:2,compar:2,defin:2,repli:1,section:2,advanc:[],abl:[],brief:[1,2],mysql:[],access:[0,1,2],delet:0,version:[0,1],"new":1,appeal:[],ever:[1,2],"public":[],contrast:[0,2],can:[0,1,2],hasn:[],full:[0,1],deriv:1,berkelei:2,gener:2,learn:[0,1,2],here:[0,2],met:[],let:[],cursor:2,inher:1,along:[0,1,2],strong:2,ignor:2,leav:[],search:0,produc:1,convers:2,technolog:[],step:[],prior:[],zodb:[1,2],doctest:[],pick:2,chang:2,explain:2,chanc:1,ourselv:[],via:1,repositori:[],extra:[],activ:0,modul:[0,1,2],gatewai:1,api:[0,1,2],seattl:[],instal:[0,1,2],txt:[],plone:[],cloud:[],highli:0,jan:[],from:[0,1,2],describ:[],memori:0,univers:[],regist:[],two:2,todai:[],next:[1,2],websit:1,few:[],live:[],morn:1,recommend:[],scope:[],type:[],tell:[],memeori:[],desir:1,share:[],relat:2,reign:[],enhanc:[],downtown:[],appendix:2,indic:[],particular:2,actual:2,must:0,topic:2,account:[],retriev:2,valuabl:[],prepar:[],work:[0,1,2],focu:[1,2],histori:[],remain:2,week04:[],thursdai:[],http2:[],purpos:1,root:1,appropri:1,repoz:1,quickstart:2,give:0,process:[0,1],registr:0,smtp:2,accept:[],autumn:[],critic:2,tag:[],explor:[0,1],tal:[1,2],onlin:1,differenti:[],cours:[0,1,2],end:[0,1,2],winter:[],sit:2,anoth:1,comfort:0,write:[1,2],how:[0,1,2],vital:[],answer:[],instead:[],perspect:2,chri:2,updat:[],product:2,mar:[],resourc:2,attend:0,dive:1,after:[0,1],sundai:[],lab:[],befor:1,mac:[],particip:0,attent:2,date:[],philosophi:2,associ:[],parallel:2,demonstr:1,goal:1,classroom:[],"short":[1,2],practic:[],third:[],secur:2,django:[0,1,2],tale:2,inform:[0,1,2],chief:1,dispar:1,combin:[0,1],pocoo:[],allow:[1,2],order:[0,1],talk:[1,2],origin:[1,2],tty:[],help:[0,1,2],hypertext:2,insight:1,soon:[],brain:2,through:[0,2],dynam:1,paramet:[],style:1,directli:[],fit:2,concis:1,chosen:2,comprehend:2,late:[],feel:[],offic:[],lightn:[],rapidli:[],persist:1,comprehens:2,mail:[],might:2,easier:2,pce:[],them:[0,1],good:[0,1],"return":[],greater:2,thei:[0,1,2],python:[0,1,2],dan:[],killer:1,dai:[0,1,2],initi:2,scene:1,cew:[],framework:[0,1,2],hateoa:2,jinja2:[1,2],httplib2:2,front:1,studi:2,tilkov:2,discuss:1,introduct:[1,2],choic:[0,1,2],term:[],name:2,anyth:[],edit:1,simpl:[1,2],didn:2,unlik:1,bonu:[],separ:0,easili:2,slide:[0,1],each:[0,1],debug:2,found:[],went:2,gui:[],mean:[1,2],compil:2,everyth:[0,2],domain:2,laboratori:0,individu:[],hard:1,continu:1,weeknn:[],realli:2,ensur:[],connect:2,doug:1,our:[0,1,2],happen:2,extract:1,out:[1,2],variabl:1,accomplish:2,network:[0,1,2],ripe:1,influenc:1,open:[0,2],defend:2,publish:[1,2],content:0,dso:[],hill:0,rel:1,internet:[0,1,2],clone:[],common:1,navig:0,workflow:[],given:[0,1,2],pub:2,standard:[0,1,2],quick:[0,2],reason:2,base:[0,1],latest:2,org:2,fridai:[],care:2,could:2,keep:[0,2],filter:[],thing:2,lucumr:[],enforc:2,place:[],due:[],principl:0,assign:[],south:[],first:[1,2],oper:[0,1],softwar:[],rang:0,render:1,grade:[],onc:[],qualiti:1,number:2,yourself:0,mai:2,instruct:[1,2],alreadi:1,done:1,restkit_:[],horribl:[],fantast:0,differ:1,script:[1,2],bookmark:2,data:[1,2],top:2,system:[0,1,2],messag:1,stack:[0,1],master:[],too:2,zeromq:2,scheme:1,"final":[0,1,2],store:[],includ:0,option:2,relationship:[],namespac:1,tool:[0,1,2],copi:[],took:[],specifi:1,github:[],pars:2,mostli:2,eibrari:[],than:2,serv:1,king:[],grew:1,provid:[0,1,2],tree:[],see:1,structur:[0,1],project:[0,1],matter:1,express:[0,2],were:[],video:2,schema:[],bet:2,browser:1,fork:[],comput:[0,1,2],modern:1,mind:2,ani:[0,1,2],packag:[],pylon:1,have:[0,1,2],tabl:0,need:[0,1,2],seen:1,paramiko:2,strength:[1,2],techniqu:[],equival:[],rout:2,thorough:2,client:[1,2],note:[],also:[0,1,2],ideal:2,contact:[],accommod:[],take:[1,2],which:[1,2],environ:0,soap:[1,2],singl:[0,1],begin:[1,2],sure:[],aspen:2,distribut:[],though:2,usernam:[],object:2,reach:1,most:[1,2],plai:1,plan:[],deploi:[],phase:[],choos:0,homepag:2,"class":[0,1,2],don:[0,2],filesystem:[1,2],dens:0,clear:1,side:2,cover:[0,1,2],drive:[1,2],doe:[0,1,2],part:[],carolin:[],determin:1,unchang:2,review:[],fact:1,wsgi:[0,1,2],think:2,show:[],text:[],xcode:[],syntax:0,bring:[],session:[0,1,2],corner:[],find:[1,2],ground:0,xml:1,onli:2,submit:[],nosql:[],much:[1,2],transact:1,configur:1,apach:[],enough:[],should:[0,1,2],kessler:2,disert:2,suppos:2,rich:[0,1],smtplib:1,local:[],over:[0,1,2],hope:2,carolina:0,move:1,variou:1,get:[1,2],familiar:[0,2],vener:[],becaus:[],repo:[],rest:[1,2],"import":[],increas:2,requir:0,truli:[],bat:2,enabl:0,organ:2,across:[0,1],rfc:2,remot:2,integr:0,contain:[],cri:[],where:[],view:[1,2],wiki:[1,2],certif:[],set:0,lectur:[0,1],reread:[],creator:[1,2],knowledg:[0,1,2],disucss:1,lion:[],result:2,sea:1,respons:1,fail:[],close:[],best:2,subject:2,wire:0,eachoth:[],databas:[1,2],someth:2,wikipedia:2,urllib:1,label:[],favor:2,behind:2,won:1,between:[0,1],progress:[0,2],neither:2,experi:2,approach:0,email:[],attribut:1,altern:2,ftplib:[],internet_protocol:[],august:0,extend:[1,2],weak:1,extens:0,job:[],add:[],consumpt:[1,2],solv:1,come:[],addit:[0,2],both:[0,1,2],toward:[],last:[],cycl:1,pymotw:[],trove:1,wsgiref:2,tour:[],tutori:2,logout:1,login:1,com:[],load:1,among:1,author:1,technic:2,point:[],overview:[0,2],unittest:[1,2],jog:0,rfc2616:[],dispatch:[1,2],walk:2,header:[],written:2,linux:[],tuesdai:[],throughout:0,uci:2,duplic:[],quit:1,three:1,evalu:1,coupl:1,zpt:[1,2],been:1,hellmann:1,compon:2,json:[1,2],workshop:0,interest:2,basic:[0,1,2],presentations_:[],eloqu:2,templat:[1,2],life:1,treasur:1,emphas:0,underpin:[],great:1,argument:2,athom:[],understand:0,docxmlrpcserv:1,ador:[],instructor:[],present:[0,1],"case":2,look:[1,2],solid:[0,2],servic:[1,2],histor:[0,2],employ:[],admin:1,"while":1,outcom:[],abov:1,visit:[],wild:1,dbapi2:1,python_web:[],real:1,pyramid:[0,1,2],file:[0,1],advantag:1,briandorsei:[],readm:[],non:2,cherrypi:2,lightweight:2,march:[],minutia:[],sever:[1,2],develop:[0,1],demostr:1,minim:2,receiv:1,make:[1,2],format:1,same:[1,2],check:[],complex:1,split:1,testrunn:1,zope:[1,2],pai:2,document:[0,2],complet:[0,1,2],week:[0,1,2],http:[1,2],assist:[],effect:[],cement:0,solut:[],driven:1,user:[],student:0,mani:2,extern:2,implement:[0,1,2],built:[1,2],"break":1,travers:[1,2],task:0,off:2,lunch:1,macro:2,coursework:[],well:[0,2],inherit:[],without:1,person:[],exampl:[0,1,2],command:0,greatest:2,thi:[0,1,2],interpol:1,model:1,portabl:0,spend:[],left:2,explan:2,compromis:0,protocol:[0,1,2],entri:1,just:2,when:[1,2],laptop:[],tcp:[0,1,2],weekli:[],shape:0,virtual:[],aspect:[],administ:1,languag:[0,1,2],previous:[],web:[0,1,2],versu:0,now:[0,2],easi:2,drawback:1,apache2:2,blog:1,armin:2,other:[0,1,2],blob:[],exercis:[0,1],schedul:1,save:[],app:[1,2],homework:[],build:[0,1,2],earli:[],applic:[0,1,2],week01:[],week06:[],around:[1,2],xmlrpc:[1,2],mayb:1,read:[0,1,2],httplib:1,arguabl:1,five:[0,1],know:[0,2],world:[1,2],bit:[1,2],licens:2,apart:[],uwpython_web:[],leisur:2,like:[1,2],specif:[1,2],microblog:1,altough:2,html:[0,1,2],manifest:1,benefit:1,either:[],week02:[],page:[0,1,2],underli:[0,1],www:2,right:[0,1,2],often:2,interact:[0,1],some:[0,1,2],back:1,certain:[],satisfactori:[],authent:2,week03:[],server:[1,2],librari:[0,1,2],virtualenv:0,guid:2,cgihttpserv:2,micro:[],broad:0,noon:[],deploy:[],februari:[],lear:1,track:1,ssh2:2,unit:2,speak:1,notabl:1,refer:[0,1,2],cgi:[0,1,2],core:2,investig:1,run:[1,2],power:[],usag:[0,2],confer:1,popular:1,host:[],dissert:2,prerequisit:0,januari:[],feb:[],appli:2,chapter:2,comparison:2,about:[1,2],postgresql:[],socket:[0,1,2],constraint:2,materi:2,prove:1,shield:1,acl:1,microframework:[1,2],afternoon:1,commit:[],disabl:[],block:[],fulfil:[],own:1,effici:[0,1],mondai:[],primarili:2,curiou:[],within:1,washington:[],easy_instal:[],curios:1,assess:[],orm:[1,2],foreward:2,opportun:[],lesson:[0,2],your:[0,1,2],manag:[],guardia:2,fast:[],log:[],wai:[0,1,2],transfer:2,execut:[0,2],support:[0,1,2],question:[],"long":1,custom:1,avail:[],start:[0,1,2],newcom:1,interfac:[1,2],low:0,suit:[1,2],forward:[],submiss:[],machin:[0,1,2],select:0,"function":1,bottl:2,sqlite3:2,north:0,form:[1,2],offer:[1,2],forc:2,week05:[],criteria:1,idea:[0,1],wireless:0,rpclib:2,sqlalchemi:2,link:[],gain:[0,1],rfc1945:[],line:0,suppli:[],pull:[],made:2,consist:1,possibl:1,wish:[],displai:[],troubl:2,until:[],url:2,below:[],those:1,absenc:[],fundament:[0,1],site:[],problem:1,more:[0,1,2],similar:1,expect:0,featur:[1,2],creat:[0,1,2],metal:2,pragmat:[],parser:2,deep:2,repres:1,beautifulsoup:[1,2],intro:[0,1,2],exist:[],glanc:2,pip:[],simplest:[],echo:1,again:2,successfulli:[],encrypt:2,want:[0,1],mashup:[0,1,2],excel:2,detail:[],scrape:1,field:2,book:2,rdbm:[],test:[1,2],tie:1,you:[0,1,2],nice:[],matur:[],repeat:[],intend:0,clean:0,fulli:1,devot:[],why:2,urllib2:1,gcc:[],djangocon:2,intent:0,consid:2,sql:1,pool:2,warn:[],wife:2,directori:1,wifi:[],xmlrpclib:1,depth:[0,2],train:[],htmlparser:1,time:[1,2],push:[],hello:2,daili:1},objtypes:{},titles:["Python Web Programming Workshop","Course Outline","Course Readings"],objnames:{},filenames:["index","outline","readings"]}) \ No newline at end of file +Search.setIndex({objects:{},terms:{breadth:2,all:[0,1],code:[1,2],queri:2,consum:[1,2],commun:[0,1],focus:1,four:[],concept:[0,1,2],skim:2,ronach:2,abil:[],edu:2,follow:2,decid:1,instructor:[],advantag:1,flask:[0,1,2],tomayko:2,send:1,human:2,program:[0,1,2],decis:[1,2],under:1,sens:[],spec:2,introduc:1,fax:[],sourc:[1,2],string:2,chameleon:[1,2],far:[1,2],mcdonough:2,util:2,wikipedia:2,govern:[0,1],veri:[1,2],word:2,brows:1,chapel:0,unexcus:[],hour:1,level:0,button:[],list:[0,2],"try":2,imaplib:1,supplement:2,team:[],small:1,wednesdai:[],pleas:[],enterpris:[],repres:1,outlin:[0,1],representational_state_transf:2,core:2,htm:2,restkit:2,design:[0,1,2],pass:1,further:[],carlo:2,click:[],even:[1,2],index:[],what:[0,1,2],sud:2,compar:2,repli:1,section:2,workflow:[],abl:[],brief:[1,2],access:[0,1,2],delet:0,version:[0,1],"new":1,appeal:[],ever:[1,2],"public":[],contrast:[0,2],can:[0,1,2],hasn:[],full:[0,1],deriv:1,berkelei:2,gener:2,learn:[0,1,2],zpt:[1,2],here:[0,2],met:[],let:[],inher:1,along:[0,1,2],strong:2,search:0,convers:2,technolog:[],host:[],prior:[],vener:[],base:[0,1],doctest:[],pick:2,studi:2,transact:1,chanc:1,ourselv:[],via:1,repositori:[],extra:[],apach:[],modul:[0,1,2],gatewai:1,api:[0,1,2],seattl:[],instal:[0,1,2],txt:[],plone:[],cloud:[],highli:0,kessler:2,from:[0,1,2],describ:[],memori:0,univers:[],regist:[],two:2,todai:[],next:[1,2],websit:1,few:[],live:[],morn:1,recommend:[],scope:[],type:[],tell:[],memeori:[],desir:1,minim:2,share:[],relat:2,reign:[],enhanc:[],downtown:[],appendix:2,indic:[],particular:2,postgresql:[],must:0,topic:2,account:[],retriev:2,valuabl:[],prepar:[],work:[0,1,2],focu:[1,2],histori:[],remain:2,thursdai:[],http2:[],purpos:1,root:1,repoz:1,quickstart:2,give:0,process:[0,1],registr:0,smtp:2,accept:[],autumn:[],critic:2,tag:[],explor:[0,1],tal:[1,2],onlin:1,acl:1,differenti:[],cours:[0,1,2],end:[0,1,2],winter:[],sit:2,easili:2,anoth:1,comfort:0,xmlrpclib:1,write:[1,2],concis:1,vital:[],low:0,answer:[],instead:[],simpl:[1,2],chri:2,updat:[],product:2,mar:[],resourc:2,attend:0,clone:[],after:[0,1],sundai:[],lab:[],prerequisit:0,befor:1,mac:[],attent:2,date:[],philosophi:2,associ:[],parallel:2,demonstr:1,goal:1,classroom:[],ssh2:2,"short":[1,2],practic:[],third:[],interpol:1,secur:2,django:[0,1,2],tale:2,inform:[0,1,2],chief:1,dispar:1,combin:[0,1],allow:[1,2],order:[0,1],talk:[1,2],oper:[0,1],tty:[],help:[0,1,2],hypertext:2,insight:1,soon:[],brain:2,through:[0,2],left:2,curios:1,dynam:1,paramet:[],style:1,render:1,fit:2,how:[0,1,2],chosen:2,comprehend:2,late:[],grade:[],offic:[],drawback:1,rapidli:[],persist:1,comprehens:2,mail:[],might:2,easier:2,pce:[],them:[0,1],good:[0,1],"return":[],greater:2,thei:[0,1,2],python:[0,1,2],dan:[],killer:1,dai:[0,1,2],initi:2,number:2,cew:[],framework:[0,1,2],hateoa:2,jinja2:[1,2],httplib2:2,front:1,tilkov:2,discuss:1,introduct:[1,2],choic:[0,1,2],term:[],name:2,anyth:[],edit:1,perspect:2,didn:2,instruct:[1,2],bonu:[],separ:0,micro:[],slide:[0,1],each:[0,1],debug:2,found:[],went:2,gui:[],mean:[1,2],compil:2,domain:2,laboratori:0,individu:[],hard:1,continu:1,weeknn:[],realli:2,foreward:2,connect:2,doug:1,our:[0,1,2],happen:2,extract:1,out:[1,2],variabl:1,accomplish:2,network:[0,1,2],influenc:1,fantast:0,defend:2,publish:[1,2],content:0,dso:[],hill:0,rel:1,internet:[0,1,2],dive:1,integr:0,model:1,navig:0,advanc:[],differ:1,pub:2,standard:[0,1,2],quick:[0,2],reason:2,zodb:[1,2],org:2,fridai:[],care:2,question:[],could:2,keep:[0,2],filter:[],thing:2,lucumr:[],enforc:2,place:[],principl:0,assign:[],south:2,first:[1,2],origin:[1,2],softwar:[],rang:0,directli:[],feel:[],onc:[],qualiti:1,scene:1,yourself:0,mai:2,unlik:1,alreadi:1,done:1,restkit_:[],horribl:[],open:[0,2],given:[0,1,2],"long":1,script:[1,2],bookmark:2,data:[1,2],top:2,habit:2,system:[0,1,2],messag:1,stack:[0,1],master:[],too:2,zeromq:2,scheme:1,"final":[0,1,2],store:[],includ:0,option:2,relationship:[],namespac:1,tool:[0,1,2],copi:[],took:[],specifi:1,task:0,employ:[],github:[],pars:2,mostli:2,eibrari:[],than:2,serv:1,king:[],grew:1,provid:[0,1,2],tree:[],lion:[],structur:[0,1],exampl:[0,1,2],project:[0,1],matter:1,were:[],video:2,schema:[],bet:2,browser:1,"function":1,comput:[0,1,2],modern:1,mind:2,ani:[0,1,2],packag:[],pylon:1,have:[0,1,2],tabl:0,need:[0,1,2],seen:1,paramiko:2,strength:[1,2],techniqu:[],equival:[],rout:2,thorough:2,note:[],also:[0,1,2],ideal:2,contact:[],take:[1,2],which:[1,2],environ:0,text:[],soap:[1,2],singl:[0,1],begin:[1,2],sure:[],aspen:2,distribut:[],though:2,usernam:[],object:2,reach:1,most:[1,2],plai:1,plan:[],deploi:[],phase:[],homepag:2,"class":[0,1,2],don:[0,2],filesystem:[1,2],dens:0,clear:1,request:[1,2],drive:[1,2],doe:[0,1,2],part:[],carolin:[],determin:1,unchang:2,someth:2,fact:1,wsgi:[0,1,2],think:2,show:[],lightn:[],xcode:[],syntax:0,bring:[],session:[0,1,2],corner:[],find:[1,2],ground:0,xml:1,cell:2,onli:2,just:2,explain:2,configur:1,activ:0,behind:2,should:[0,1,2],jan:[],disert:2,suppos:2,rich:[0,1],smtplib:1,local:[],over:[0,1,2],hope:2,carolina:0,move:1,variou:1,get:[1,2],familiar:[0,2],express:[0,2],curiou:[],becaus:[],repo:[],solut:[],tcp:[0,1,2],progress:[0,2],increas:2,requir:0,truli:[],bat:2,enabl:0,organ:2,administ:1,email:[],rfc:2,remot:2,common:1,contain:[],cri:[],where:[],view:[1,2],wiki:[1,2],certif:[],set:0,reread:[],creator:[1,2],knowledg:[0,1,2],disucss:1,see:1,result:2,sea:1,respons:1,fail:[],close:[],htmlparser:1,best:2,subject:2,wire:0,eachoth:[],databas:[1,2],review:[],particip:0,urllib:1,label:[],favor:2,enough:[],won:1,between:[0,1],"import":[],neither:2,experi:2,approach:0,across:[0,1],attribut:1,altern:2,ftplib:[],internet_protocol:[],august:0,extend:[1,2],weak:1,metal:2,extens:0,job:[],add:[],consumpt:[1,2],solv:1,come:[],addit:[0,2],both:[0,1,2],toward:[],last:[],cycl:1,pymotw:[],trove:1,wsgiref:2,tour:[],tutori:2,logout:1,login:1,com:[],load:1,among:1,technic:2,point:[],overview:[0,2],unittest:[1,2],jog:0,rfc2616:[],dispatch:[1,2],walk:2,header:[],written:2,linux:[],tuesdai:[],throughout:0,admin:1,uci:2,duplic:[],quit:1,creat:[0,1,2],coupl:1,due:[],been:1,hellmann:1,compon:2,json:[1,2],much:[1,2],interest:2,basic:[0,1,2],presentations_:[],eloqu:2,templat:[1,2],life:1,treasur:1,emphas:0,underpin:[],great:1,argument:2,athom:[],understand:0,docxmlrpcserv:1,ador:[],educ:[],present:[0,1],"case":2,look:[1,2],solid:[0,2],servic:[1,2],histor:[0,2],cursor:2,defin:2,"while":1,outcom:[],abov:1,wild:1,exist:[],dbapi2:1,python_web:[],earli:[],pyramid:[0,1,2],glanc:2,ripe:1,briandorsei:[],readm:[],non:2,cherrypi:2,lightweight:2,week06:[],minutia:[],sever:[1,2],disabl:[],develop:[0,1,2],demostr:1,author:1,receiv:1,newcom:1,make:[1,2],mayb:1,same:[1,2],complex:1,split:1,testrunn:1,zope:[1,2],pai:2,document:[0,2],complet:[0,1,2],week:[0,1,2],http:[1,2],assist:[],effect:[],cement:0,kit:2,driven:1,user:[],student:0,mani:2,extern:2,chang:2,built:[1,2],"break":1,travers:[1,2],appropri:1,off:2,lunch:1,macro:2,coursework:[],well:[0,2],inherit:[],without:1,person:[],client:[1,2],command:0,greatest:2,thi:[0,1,2],choos:0,everyth:[0,2],portabl:0,spend:[],latest:2,explan:2,compromis:0,protocol:[0,1,2],entri:1,nosql:[],excel:2,laptop:[],rest:[1,2],weekli:[],shape:0,scrape:1,aspect:[],mysql:[],monei:2,languag:[0,1,2],previous:[],web:[0,1,2],versu:0,now:[0,2],easi:2,apache2:2,blog:1,armin:2,book:2,blob:[],exercis:[0,1],schedul:1,save:2,app:[1,2],homework:[],build:[0,1,2],real:1,applic:[0,1,2],week01:[],march:[],around:[1,2],week04:[],format:1,read:[0,1,2],httplib:1,arguabl:1,five:[0,1],know:[0,2],world:[1,2],bit:[1,2],licens:2,apart:[],uwpython_web:[],leisur:2,like:[1,2],specif:[1,2],microblog:1,altough:2,html:[0,1,2],manifest:1,benefit:1,either:[],week02:[],page:[0,1,2],underli:[0,1],www:2,right:[0,1,2],often:2,interact:[0,1],some:[0,1,2],back:1,certain:[],satisfactori:[],authent:2,week03:[],server:[1,2],librari:[0,1,2],virtualenv:0,guid:2,cgihttpserv:2,accommod:[],broad:0,noon:[],deploy:[],februari:[],lear:1,track:1,leav:[],unit:2,fast:[],speak:1,notabl:1,refer:[0,1,2],cgi:[0,1,2],cgi_exampl:[],investig:1,run:[1,2],power:[],usag:[0,2],confer:1,popular:1,step:[],dissert:2,although:1,januari:[],feb:[],appli:2,chapter:2,comparison:2,about:[1,2],simplest:[],actual:2,socket:[0,1,2],constraint:2,materi:2,prove:1,shield:1,side:2,microframework:[1,2],afternoon:1,commit:[],produc:1,block:[],fulfil:[],own:1,effici:[0,1],consid:2,primarili:2,visit:[],within:1,washington:[],easy_instal:[],three:1,assess:[],orm:[1,2],ensur:[],opportun:[],lesson:[0,2],your:[0,1,2],manag:[],guardia:2,git:[],log:[],wai:[0,1,2],transfer:2,execut:[0,2],support:[0,1,2],xmlrpc:[1,2],submit:[],custom:1,avail:[],start:[0,1,2],workshop:0,interfac:[1,2],pocoo:[],suit:[1,2],forward:[],submiss:[],machin:[0,1,2],select:0,fork:[],bottl:2,sqlite3:2,north:0,form:[1,2],offer:[1,2],forc:2,week05:[],criteria:1,idea:[0,1],wireless:0,rpclib:2,sqlalchemi:2,link:[],gain:[0,1],rfc1945:[],line:0,suppli:[],pull:[],made:2,consist:1,possibl:1,wish:[],displai:[],troubl:2,until:[],url:2,below:[],those:1,absenc:[],fundament:[0,1],site:[],problem:1,more:[0,1,2],similar:1,expect:0,featur:[1,2],evalu:1,cover:[0,1,2],pragmat:[],parser:2,deep:2,lectur:[0,1],beautifulsoup:[1,2],intro:[0,1,2],implement:[0,1,2],file:[0,1],pip:[],check:[],echo:1,again:2,successfulli:[],encrypt:2,want:[0,1],mashup:[0,1,2],when:[1,2],detail:[],virtual:[],field:2,other:[0,1,2],rdbm:[],test:[1,2],tie:1,you:[0,1,2],nice:[],matur:[],repeat:[],intend:0,clean:0,fulli:1,devot:[],why:2,urllib2:1,gcc:[],djangocon:2,intent:0,mondai:[],sql:1,pool:2,warn:[],wife:2,directori:1,wifi:[],descript:[],depth:[0,2],train:[],ignor:2,time:[1,2],push:[],hello:2,daili:1},objtypes:{},titles:["Python Web Programming Workshop","Course Outline","Course Readings"],objnames:{},filenames:["index","outline","readings"]}) \ No newline at end of file From a8d32b961996b696a6be92ecf8b6e566c450ba70 Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 6 Aug 2013 12:58:04 -0400 Subject: [PATCH 066/114] update css, fix typos in session 1 --- presentations/session01.html | 4 ++-- presentations/ui/uw_pce_theme/pretty.css | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/presentations/session01.html b/presentations/session01.html index ee22b0fe..3ab9a44b 100644 --- a/presentations/session01.html +++ b/presentations/session01.html @@ -732,7 +732,7 @@

    Create a Client

     >>> import socket
     >>> client_socket = socket.socket(
    -...     socket.AF_INET
    +...     socket.AF_INET,
     ...     socket.SOCK_STREAM,
     ...     socket.IPPROTO_IP)
     
    @@ -759,7 +759,7 @@

    Receive and Respond

    Back in your server interpreter, go ahead and receive the message from your client:

    ->>> conn.receive(32)
    +>>> conn.recv(32)
     'Hey, can you hear me?'
     

    Send a message back, and then close up your connection:

    diff --git a/presentations/ui/uw_pce_theme/pretty.css b/presentations/ui/uw_pce_theme/pretty.css index a0e0d862..2c4d6f74 100644 --- a/presentations/ui/uw_pce_theme/pretty.css +++ b/presentations/ui/uw_pce_theme/pretty.css @@ -50,7 +50,7 @@ div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; #controls #navList #jumplist {position: absolute; bottom: 0; right: 0; background: #DDD; color: #227;} -#currentSlide {text-align: center; font-size: 0.5em; color: #449; +#currentSlide {text-align: center; font-size: 0.5em; color: white; font-family: sans-serif; font-weight: bold;} #slide0 {padding-top: 1.5em} @@ -72,7 +72,12 @@ html>body .external {border-bottom: none;} img.incremental {visibility: hidden;} .slide .current {color: green;} - +#currentSlide span.csHere, +#currentSlide span.csSep, +#currentSlide span.csTotal { + color: white; + font-size: 120%; +} .slide-display {display: inline ! important;} From e62ad2fad3d5e158964bf578d4757c078439ceed Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 6 Jan 2015 01:01:47 -0800 Subject: [PATCH 067/114] 2015 version starts --- _sources/assignments.txt | 42 - _sources/outline.txt | 243 -- _sources/project.txt | 45 - _static/jquery.js | 154 -- _static/pygments.css | 62 - _static/sidebar.js | 151 -- _static/underscore.js | 23 - genindex.html | 95 - .../img => html/_images}/python.png | Bin .../_sources/additional/flask_walkthrough.txt | 342 +++ html/_sources/additional/git_cleanup.txt | 219 ++ .../additional/sql_persistence_tutorial.txt | 625 +++++ .../_sources/additional/template_tutorial.txt | 244 ++ {_sources => html/_sources}/index.txt | 53 +- html/_sources/outline.txt | 199 ++ html/_sources/presentations/index.txt | 18 + html/_sources/presentations/session01.txt | 1792 ++++++++++++++ html/_sources/readings.txt | 250 ++ html/_static/admin_index.png | Bin 0 -> 27949 bytes {_static => html/_static}/ajax-loader.gif | Bin .../img => html/_static}/apache.png | Bin {_static => html/_static}/basic.css | 7 +- {presentations/img => html/_static}/bike.jpg | Bin .../img => html/_static}/bluebox_logo.png | Bin .../img => html/_static}/by-nc-sa.png | Bin .../img => html/_static}/cgitb_output.png | Bin .../img => html/_static}/cloud_cover.jpg | Bin {_static => html/_static}/comment-bright.png | Bin {_static => html/_static}/comment-close.png | Bin {_static => html/_static}/comment.png | Bin html/_static/custom.css | 161 ++ .../img => html/_static}/data_flow.png | Bin .../_static}/data_in_tcpip_stack.png | Bin html/_static/dialog-note.png | Bin 0 -> 1582 bytes html/_static/dialog-seealso.png | Bin 0 -> 1502 bytes html/_static/dialog-todo.png | Bin 0 -> 1334 bytes html/_static/dialog-topic.png | Bin 0 -> 1910 bytes html/_static/dialog-warning.png | Bin 0 -> 1391 bytes .../_static}/django-admin-login.png | Bin .../img => html/_static}/django-pony.png | Bin .../img => html/_static}/django-start.png | Bin .../img => html/_static}/django_lead.png | Bin {_static => html/_static}/doctools.js | 19 +- {_static => html/_static}/down-pressed.png | Bin {_static => html/_static}/down.png | Bin _static/default.css => html/_static/epub.css | 118 +- {_static => html/_static}/file.png | Bin .../img => html/_static}/flask_cover.png | Bin .../img => html/_static}/flask_full.png | Bin html/_static/flask_hello.png | Bin 0 -> 51023 bytes .../img => html/_static}/flask_square.png | Bin html/_static/footerbg.png | Bin 0 -> 333 bytes .../img => html/_static}/forbidden.png | Bin .../img => html/_static}/framework_quote.png | Bin .../img => html/_static}/gateway.jpg | Bin .../img => html/_static}/granny_mashup.png | Bin html/_static/headerbg.png | Bin 0 -> 203 bytes .../img => html/_static}/heroku-logo.png | Bin {presentations/img => html/_static}/icup.png | Bin html/_static/ie6.css | 7 + html/_static/jquery.js | 2 + html/_static/logo_UW.png | Bin 0 -> 6378 bytes .../img => html/_static}/mac-icon.png | Bin html/_static/middlebg.png | Bin 0 -> 2797 bytes {_static => html/_static}/minus.png | Bin .../img => html/_static}/mod_wsgi_flow.png | Bin .../img => html/_static}/network_topology.png | Bin {presentations/img => html/_static}/nginx.png | Bin .../_static}/plone-icon-256-white-bg.png | Bin .../img => html/_static}/plone_conf_2012.jpg | Bin {_static => html/_static}/plus.png | Bin .../img => html/_static}/protocol.png | Bin .../img => html/_static}/protocol_sea.png | Bin .../img => html/_static}/proxy_wsgi.png | Bin html/_static/pygments.css | 62 + .../img => html/_static}/pyramid-medium.png | Bin html/_static/pyramid.css | 369 +++ html/_static/python.png | Bin 0 -> 90835 bytes .../img => html/_static}/scream.jpg | Bin {_static => html/_static}/searchtools.js | 362 +-- .../img => html/_static}/sheep_pyramid.jpg | Bin .../img => html/_static}/skateboard.jpg | Bin .../_static}/socket_interaction.png | Bin html/_static/transparent.gif | Bin 0 -> 49 bytes html/_static/underscore.js | 31 + {_static => html/_static}/up-pressed.png | Bin {_static => html/_static}/up.png | Bin {_static => html/_static}/websupport.js | 2 +- .../img => html/_static}/wiki_frontpage.png | Bin .../_static}/wsgi_middleware_onion.png | Bin .../img => html/_static}/wsgiref_flow.png | Bin html/additional/flask_walkthrough.html | 405 ++++ html/additional/git_cleanup.html | 319 +++ html/additional/sql_persistence_tutorial.html | 621 +++++ html/additional/template_tutorial.html | 254 ++ html/genindex.html | 130 ++ index.html => html/index.html | 125 +- html/objects.inv | 7 + html/outline.html | 315 +++ html/presentations/index.html | 144 ++ html/presentations/session01.html | 1354 +++++++++++ readings.html => html/readings.html | 225 +- search.html => html/search.html | 43 +- html/searchindex.js | 1 + objects.inv | Bin 227 -> 0 bytes outline.html | 330 --- presentations/img/admin_index.png | Bin 18633 -> 0 bytes presentations/index.html | 56 - presentations/session01.html | 937 -------- presentations/session02.html | 1248 ---------- presentations/session03-addenda.html | 387 --- presentations/session03.html | 1151 --------- presentations/session04.html | 948 -------- presentations/session05.html | 1095 --------- presentations/session06.html | 1177 ---------- presentations/session07.html | 1158 --------- presentations/session08.html | 1133 --------- presentations/session09.html | 952 -------- presentations/session10.html | 908 -------- presentations/ui/default/blank.gif | Bin 49 -> 0 bytes presentations/ui/default/framing.css | 25 - presentations/ui/default/iepngfix.htc | 42 - presentations/ui/default/opera.css | 8 - presentations/ui/default/outline.css | 16 - presentations/ui/default/pretty.css | 120 - presentations/ui/default/print.css | 24 - presentations/ui/default/s5-core.css | 11 - presentations/ui/default/slides.css | 10 - presentations/ui/default/slides.js | 558 ----- presentations/ui/uw_pce_theme/blank.gif | Bin 49 -> 0 bytes presentations/ui/uw_pce_theme/framing.css | 25 - presentations/ui/uw_pce_theme/iepngfix.htc | 42 - presentations/ui/uw_pce_theme/opera.css | 8 - presentations/ui/uw_pce_theme/outline.css | 16 - presentations/ui/uw_pce_theme/pretty.css | 252 -- presentations/ui/uw_pce_theme/print.css | 24 - presentations/ui/uw_pce_theme/s5-core.css | 11 - presentations/ui/uw_pce_theme/slides.css | 10 - presentations/ui/uw_pce_theme/slides.js | 558 ----- searchindex.js | 1 - slides/_images/python.png | Bin 0 -> 90835 bytes .../_sources/additional/flask_walkthrough.txt | 342 +++ slides/_sources/additional/git_cleanup.txt | 219 ++ .../additional/sql_persistence_tutorial.txt | 625 +++++ .../_sources/additional/template_tutorial.txt | 244 ++ slides/_sources/index.txt | 120 + slides/_sources/outline.txt | 199 ++ slides/_sources/presentations/index.txt | 18 + slides/_sources/presentations/session01.txt | 1792 ++++++++++++++ slides/_sources/readings.txt | 250 ++ slides/_static/README.md | 130 ++ slides/_static/admin_index.png | Bin 0 -> 27949 bytes slides/_static/ajax-loader.gif | Bin 0 -> 673 bytes slides/_static/apache.png | Bin 0 -> 10625 bytes slides/_static/basic.css | 537 +++++ slides/_static/bike.jpg | Bin 0 -> 195579 bytes slides/_static/bluebox_logo.png | Bin 0 -> 3831 bytes slides/_static/by-nc-sa.png | Bin 0 -> 4811 bytes slides/_static/cgitb_output.png | Bin 0 -> 48545 bytes slides/_static/cloud_cover.jpg | Bin 0 -> 196820 bytes slides/_static/comment-bright.png | Bin 0 -> 3500 bytes slides/_static/comment-close.png | Bin 0 -> 3578 bytes slides/_static/comment.png | Bin 0 -> 3445 bytes slides/_static/config.rb | 24 + slides/_static/custom.css | 161 ++ slides/_static/data_flow.png | Bin 0 -> 27152 bytes slides/_static/data_in_tcpip_stack.png | Bin 0 -> 11078 bytes slides/_static/django-admin-login.png | Bin 0 -> 7749 bytes slides/_static/django-pony.png | Bin 0 -> 63811 bytes slides/_static/django-start.png | Bin 0 -> 31371 bytes slides/_static/django_lead.png | Bin 0 -> 50583 bytes slides/_static/doctools.js | 238 ++ slides/_static/down-pressed.png | Bin 0 -> 368 bytes slides/_static/down.png | Bin 0 -> 363 bytes slides/_static/file.png | Bin 0 -> 392 bytes slides/_static/flask_cover.png | Bin 0 -> 24248 bytes slides/_static/flask_full.png | Bin 0 -> 213488 bytes slides/_static/flask_hello.png | Bin 0 -> 51023 bytes slides/_static/flask_square.png | Bin 0 -> 26836 bytes slides/_static/forbidden.png | Bin 0 -> 12569 bytes slides/_static/framework_quote.png | Bin 0 -> 16261 bytes slides/_static/gateway.jpg | Bin 0 -> 475556 bytes slides/_static/granny_mashup.png | Bin 0 -> 216410 bytes slides/_static/heroku-logo.png | Bin 0 -> 2877 bytes slides/_static/icup.png | Bin 0 -> 73513 bytes slides/_static/jquery.js | 2 + slides/_static/js/hammer.js | 586 +++++ slides/_static/js/modernizr.custom.45394.js | 4 + slides/_static/js/order.js | 8 + slides/_static/js/polyfills/classList.min.js | 2 + slides/_static/js/polyfills/dataset.min.js | 2 + slides/_static/js/polyfills/history.min.js | 1 + slides/_static/js/prettify/lang-apollo.js | 2 + slides/_static/js/prettify/lang-clj.js | 18 + slides/_static/js/prettify/lang-css.js | 2 + slides/_static/js/prettify/lang-go.js | 1 + slides/_static/js/prettify/lang-hs.js | 2 + slides/_static/js/prettify/lang-lisp.js | 3 + slides/_static/js/prettify/lang-lua.js | 2 + slides/_static/js/prettify/lang-ml.js | 2 + slides/_static/js/prettify/lang-n.js | 4 + slides/_static/js/prettify/lang-proto.js | 1 + slides/_static/js/prettify/lang-scala.js | 2 + slides/_static/js/prettify/lang-sql.js | 2 + slides/_static/js/prettify/lang-tex.js | 1 + slides/_static/js/prettify/lang-vb.js | 2 + slides/_static/js/prettify/lang-vhdl.js | 3 + slides/_static/js/prettify/lang-wiki.js | 2 + slides/_static/js/prettify/lang-xq.js | 3 + slides/_static/js/prettify/lang-yaml.js | 2 + slides/_static/js/prettify/prettify.css | 1 + slides/_static/js/prettify/prettify.js | 28 + slides/_static/js/require-1.0.8.min.js | 33 + slides/_static/js/slide-controller.js | 109 + slides/_static/js/slide-deck-instantiate.js | 13 + slides/_static/js/slide-deck.js | 860 +++++++ slides/_static/js/slide-testing.js | 6 + slides/_static/js/slides.js | 6 + slides/_static/logo_UW.png | Bin 0 -> 6378 bytes slides/_static/mac-icon.png | Bin 0 -> 24910 bytes slides/_static/minus.png | Bin 0 -> 199 bytes slides/_static/mod_wsgi_flow.png | Bin 0 -> 23498 bytes slides/_static/network_topology.png | Bin 0 -> 27152 bytes slides/_static/nginx.png | Bin 0 -> 4694 bytes slides/_static/plone-icon-256-white-bg.png | Bin 0 -> 3913 bytes slides/_static/plone_conf_2012.jpg | Bin 0 -> 166895 bytes slides/_static/plus.png | Bin 0 -> 199 bytes slides/_static/protocol.png | Bin 0 -> 43048 bytes slides/_static/protocol_sea.png | Bin 0 -> 73233 bytes slides/_static/proxy_wsgi.png | Bin 0 -> 24188 bytes slides/_static/pygments.css | 62 + slides/_static/pyramid-medium.png | Bin 0 -> 9963 bytes slides/_static/python.png | Bin 0 -> 90835 bytes slides/_static/scream.jpg | Bin 0 -> 629018 bytes slides/_static/scripts/md/README.md | 5 + slides/_static/scripts/md/base.html | 104 + slides/_static/scripts/md/render.py | 57 + slides/_static/scripts/md/slides.md | 78 + slides/_static/searchtools.js | 622 +++++ slides/_static/sheep_pyramid.jpg | Bin 0 -> 231431 bytes slides/_static/skateboard.jpg | Bin 0 -> 329265 bytes slides/_static/slide_config.js | 26 + slides/_static/socket_interaction.png | Bin 0 -> 17331 bytes slides/_static/template.html | 416 ++++ slides/_static/theme/css/default.css | 1487 ++++++++++++ slides/_static/theme/css/hieroglyph.css | 1 + slides/_static/theme/css/io2013.css | 55 + slides/_static/theme/css/phone.css | 1 + slides/_static/theme/scss/_base.scss | 139 ++ slides/_static/theme/scss/_variables.scss | 34 + slides/_static/theme/scss/default.scss | 1047 +++++++++ slides/_static/theme/scss/hieroglyph.scss | 30 + slides/_static/theme/scss/io2013.scss | 51 + slides/_static/theme/scss/phone.scss | 35 + slides/_static/underscore.js | 31 + slides/_static/up-pressed.png | Bin 0 -> 372 bytes slides/_static/up.png | Bin 0 -> 363 bytes slides/_static/websupport.js | 808 +++++++ slides/_static/wiki_frontpage.png | Bin 0 -> 25132 bytes slides/_static/wsgi_middleware_onion.png | Bin 0 -> 8554 bytes slides/_static/wsgiref_flow.png | Bin 0 -> 21611 bytes slides/additional/flask_walkthrough.html | 105 + slides/additional/git_cleanup.html | 105 + .../additional/sql_persistence_tutorial.html | 105 + slides/additional/template_tutorial.html | 105 + slides/genindex.html | 123 + slides/index.html | 106 + slides/objects.inv | 7 + slides/outline.html | 107 + slides/presentations/index.html | 107 + slides/presentations/session01.html | 2067 +++++++++++++++++ slides/readings.html | 107 + slides/search.html | 124 + slides/searchindex.js | 1 + 274 files changed, 23288 insertions(+), 14465 deletions(-) delete mode 100644 _sources/assignments.txt delete mode 100644 _sources/outline.txt delete mode 100644 _sources/project.txt delete mode 100644 _static/jquery.js delete mode 100644 _static/pygments.css delete mode 100644 _static/sidebar.js delete mode 100644 _static/underscore.js delete mode 100644 genindex.html rename {presentations/img => html/_images}/python.png (100%) create mode 100644 html/_sources/additional/flask_walkthrough.txt create mode 100644 html/_sources/additional/git_cleanup.txt create mode 100644 html/_sources/additional/sql_persistence_tutorial.txt create mode 100644 html/_sources/additional/template_tutorial.txt rename {_sources => html/_sources}/index.txt (70%) create mode 100644 html/_sources/outline.txt create mode 100644 html/_sources/presentations/index.txt create mode 100644 html/_sources/presentations/session01.txt create mode 100644 html/_sources/readings.txt create mode 100644 html/_static/admin_index.png rename {_static => html/_static}/ajax-loader.gif (100%) rename {presentations/img => html/_static}/apache.png (100%) rename {_static => html/_static}/basic.css (98%) rename {presentations/img => html/_static}/bike.jpg (100%) rename {presentations/img => html/_static}/bluebox_logo.png (100%) rename {presentations/img => html/_static}/by-nc-sa.png (100%) rename {presentations/img => html/_static}/cgitb_output.png (100%) rename {presentations/img => html/_static}/cloud_cover.jpg (100%) rename {_static => html/_static}/comment-bright.png (100%) rename {_static => html/_static}/comment-close.png (100%) rename {_static => html/_static}/comment.png (100%) create mode 100644 html/_static/custom.css rename {presentations/img => html/_static}/data_flow.png (100%) rename {presentations/img => html/_static}/data_in_tcpip_stack.png (100%) create mode 100644 html/_static/dialog-note.png create mode 100644 html/_static/dialog-seealso.png create mode 100644 html/_static/dialog-todo.png create mode 100644 html/_static/dialog-topic.png create mode 100644 html/_static/dialog-warning.png rename {presentations/img => html/_static}/django-admin-login.png (100%) rename {presentations/img => html/_static}/django-pony.png (100%) rename {presentations/img => html/_static}/django-start.png (100%) rename {presentations/img => html/_static}/django_lead.png (100%) rename {_static => html/_static}/doctools.js (95%) rename {_static => html/_static}/down-pressed.png (100%) rename {_static => html/_static}/down.png (100%) rename _static/default.css => html/_static/epub.css (57%) rename {_static => html/_static}/file.png (100%) rename {presentations/img => html/_static}/flask_cover.png (100%) rename {presentations/img => html/_static}/flask_full.png (100%) create mode 100644 html/_static/flask_hello.png rename {presentations/img => html/_static}/flask_square.png (100%) create mode 100644 html/_static/footerbg.png rename {presentations/img => html/_static}/forbidden.png (100%) rename {presentations/img => html/_static}/framework_quote.png (100%) rename {presentations/img => html/_static}/gateway.jpg (100%) rename {presentations/img => html/_static}/granny_mashup.png (100%) create mode 100644 html/_static/headerbg.png rename {presentations/img => html/_static}/heroku-logo.png (100%) rename {presentations/img => html/_static}/icup.png (100%) create mode 100644 html/_static/ie6.css create mode 100644 html/_static/jquery.js create mode 100644 html/_static/logo_UW.png rename {presentations/img => html/_static}/mac-icon.png (100%) create mode 100644 html/_static/middlebg.png rename {_static => html/_static}/minus.png (100%) rename {presentations/img => html/_static}/mod_wsgi_flow.png (100%) rename {presentations/img => html/_static}/network_topology.png (100%) rename {presentations/img => html/_static}/nginx.png (100%) rename {presentations/img => html/_static}/plone-icon-256-white-bg.png (100%) rename {presentations/img => html/_static}/plone_conf_2012.jpg (100%) rename {_static => html/_static}/plus.png (100%) rename {presentations/img => html/_static}/protocol.png (100%) rename {presentations/img => html/_static}/protocol_sea.png (100%) rename {presentations/img => html/_static}/proxy_wsgi.png (100%) create mode 100644 html/_static/pygments.css rename {presentations/img => html/_static}/pyramid-medium.png (100%) create mode 100644 html/_static/pyramid.css create mode 100644 html/_static/python.png rename {presentations/img => html/_static}/scream.jpg (100%) rename {_static => html/_static}/searchtools.js (62%) rename {presentations/img => html/_static}/sheep_pyramid.jpg (100%) rename {presentations/img => html/_static}/skateboard.jpg (100%) rename {presentations/img => html/_static}/socket_interaction.png (100%) create mode 100644 html/_static/transparent.gif create mode 100644 html/_static/underscore.js rename {_static => html/_static}/up-pressed.png (100%) rename {_static => html/_static}/up.png (100%) rename {_static => html/_static}/websupport.js (99%) rename {presentations/img => html/_static}/wiki_frontpage.png (100%) rename {presentations/img => html/_static}/wsgi_middleware_onion.png (100%) rename {presentations/img => html/_static}/wsgiref_flow.png (100%) create mode 100644 html/additional/flask_walkthrough.html create mode 100644 html/additional/git_cleanup.html create mode 100644 html/additional/sql_persistence_tutorial.html create mode 100644 html/additional/template_tutorial.html create mode 100644 html/genindex.html rename index.html => html/index.html (65%) create mode 100644 html/objects.inv create mode 100644 html/outline.html create mode 100644 html/presentations/index.html create mode 100644 html/presentations/session01.html rename readings.html => html/readings.html (59%) rename search.html => html/search.html (65%) create mode 100644 html/searchindex.js delete mode 100644 objects.inv delete mode 100644 outline.html delete mode 100644 presentations/img/admin_index.png delete mode 100644 presentations/index.html delete mode 100644 presentations/session01.html delete mode 100644 presentations/session02.html delete mode 100644 presentations/session03-addenda.html delete mode 100644 presentations/session03.html delete mode 100644 presentations/session04.html delete mode 100644 presentations/session05.html delete mode 100644 presentations/session06.html delete mode 100644 presentations/session07.html delete mode 100644 presentations/session08.html delete mode 100644 presentations/session09.html delete mode 100644 presentations/session10.html delete mode 100644 presentations/ui/default/blank.gif delete mode 100644 presentations/ui/default/framing.css delete mode 100644 presentations/ui/default/iepngfix.htc delete mode 100644 presentations/ui/default/opera.css delete mode 100644 presentations/ui/default/outline.css delete mode 100644 presentations/ui/default/pretty.css delete mode 100644 presentations/ui/default/print.css delete mode 100644 presentations/ui/default/s5-core.css delete mode 100644 presentations/ui/default/slides.css delete mode 100644 presentations/ui/default/slides.js delete mode 100644 presentations/ui/uw_pce_theme/blank.gif delete mode 100644 presentations/ui/uw_pce_theme/framing.css delete mode 100644 presentations/ui/uw_pce_theme/iepngfix.htc delete mode 100644 presentations/ui/uw_pce_theme/opera.css delete mode 100644 presentations/ui/uw_pce_theme/outline.css delete mode 100644 presentations/ui/uw_pce_theme/pretty.css delete mode 100644 presentations/ui/uw_pce_theme/print.css delete mode 100644 presentations/ui/uw_pce_theme/s5-core.css delete mode 100644 presentations/ui/uw_pce_theme/slides.css delete mode 100644 presentations/ui/uw_pce_theme/slides.js delete mode 100644 searchindex.js create mode 100644 slides/_images/python.png create mode 100644 slides/_sources/additional/flask_walkthrough.txt create mode 100644 slides/_sources/additional/git_cleanup.txt create mode 100644 slides/_sources/additional/sql_persistence_tutorial.txt create mode 100644 slides/_sources/additional/template_tutorial.txt create mode 100644 slides/_sources/index.txt create mode 100644 slides/_sources/outline.txt create mode 100644 slides/_sources/presentations/index.txt create mode 100644 slides/_sources/presentations/session01.txt create mode 100644 slides/_sources/readings.txt create mode 100644 slides/_static/README.md create mode 100644 slides/_static/admin_index.png create mode 100644 slides/_static/ajax-loader.gif create mode 100644 slides/_static/apache.png create mode 100644 slides/_static/basic.css create mode 100644 slides/_static/bike.jpg create mode 100644 slides/_static/bluebox_logo.png create mode 100644 slides/_static/by-nc-sa.png create mode 100644 slides/_static/cgitb_output.png create mode 100644 slides/_static/cloud_cover.jpg create mode 100644 slides/_static/comment-bright.png create mode 100644 slides/_static/comment-close.png create mode 100644 slides/_static/comment.png create mode 100644 slides/_static/config.rb create mode 100644 slides/_static/custom.css create mode 100644 slides/_static/data_flow.png create mode 100644 slides/_static/data_in_tcpip_stack.png create mode 100644 slides/_static/django-admin-login.png create mode 100644 slides/_static/django-pony.png create mode 100644 slides/_static/django-start.png create mode 100644 slides/_static/django_lead.png create mode 100644 slides/_static/doctools.js create mode 100644 slides/_static/down-pressed.png create mode 100644 slides/_static/down.png create mode 100644 slides/_static/file.png create mode 100644 slides/_static/flask_cover.png create mode 100644 slides/_static/flask_full.png create mode 100644 slides/_static/flask_hello.png create mode 100644 slides/_static/flask_square.png create mode 100644 slides/_static/forbidden.png create mode 100644 slides/_static/framework_quote.png create mode 100644 slides/_static/gateway.jpg create mode 100644 slides/_static/granny_mashup.png create mode 100644 slides/_static/heroku-logo.png create mode 100644 slides/_static/icup.png create mode 100644 slides/_static/jquery.js create mode 100644 slides/_static/js/hammer.js create mode 100644 slides/_static/js/modernizr.custom.45394.js create mode 100644 slides/_static/js/order.js create mode 100644 slides/_static/js/polyfills/classList.min.js create mode 100644 slides/_static/js/polyfills/dataset.min.js create mode 100644 slides/_static/js/polyfills/history.min.js create mode 100644 slides/_static/js/prettify/lang-apollo.js create mode 100644 slides/_static/js/prettify/lang-clj.js create mode 100644 slides/_static/js/prettify/lang-css.js create mode 100644 slides/_static/js/prettify/lang-go.js create mode 100644 slides/_static/js/prettify/lang-hs.js create mode 100644 slides/_static/js/prettify/lang-lisp.js create mode 100644 slides/_static/js/prettify/lang-lua.js create mode 100644 slides/_static/js/prettify/lang-ml.js create mode 100644 slides/_static/js/prettify/lang-n.js create mode 100644 slides/_static/js/prettify/lang-proto.js create mode 100644 slides/_static/js/prettify/lang-scala.js create mode 100644 slides/_static/js/prettify/lang-sql.js create mode 100644 slides/_static/js/prettify/lang-tex.js create mode 100644 slides/_static/js/prettify/lang-vb.js create mode 100644 slides/_static/js/prettify/lang-vhdl.js create mode 100644 slides/_static/js/prettify/lang-wiki.js create mode 100644 slides/_static/js/prettify/lang-xq.js create mode 100644 slides/_static/js/prettify/lang-yaml.js create mode 100644 slides/_static/js/prettify/prettify.css create mode 100644 slides/_static/js/prettify/prettify.js create mode 100644 slides/_static/js/require-1.0.8.min.js create mode 100644 slides/_static/js/slide-controller.js create mode 100644 slides/_static/js/slide-deck-instantiate.js create mode 100644 slides/_static/js/slide-deck.js create mode 100644 slides/_static/js/slide-testing.js create mode 100644 slides/_static/js/slides.js create mode 100644 slides/_static/logo_UW.png create mode 100644 slides/_static/mac-icon.png create mode 100644 slides/_static/minus.png create mode 100644 slides/_static/mod_wsgi_flow.png create mode 100644 slides/_static/network_topology.png create mode 100644 slides/_static/nginx.png create mode 100644 slides/_static/plone-icon-256-white-bg.png create mode 100644 slides/_static/plone_conf_2012.jpg create mode 100644 slides/_static/plus.png create mode 100644 slides/_static/protocol.png create mode 100644 slides/_static/protocol_sea.png create mode 100644 slides/_static/proxy_wsgi.png create mode 100644 slides/_static/pygments.css create mode 100644 slides/_static/pyramid-medium.png create mode 100644 slides/_static/python.png create mode 100644 slides/_static/scream.jpg create mode 100644 slides/_static/scripts/md/README.md create mode 100644 slides/_static/scripts/md/base.html create mode 100644 slides/_static/scripts/md/render.py create mode 100644 slides/_static/scripts/md/slides.md create mode 100644 slides/_static/searchtools.js create mode 100644 slides/_static/sheep_pyramid.jpg create mode 100644 slides/_static/skateboard.jpg create mode 100644 slides/_static/slide_config.js create mode 100644 slides/_static/socket_interaction.png create mode 100644 slides/_static/template.html create mode 100644 slides/_static/theme/css/default.css create mode 100644 slides/_static/theme/css/hieroglyph.css create mode 100644 slides/_static/theme/css/io2013.css create mode 100644 slides/_static/theme/css/phone.css create mode 100644 slides/_static/theme/scss/_base.scss create mode 100644 slides/_static/theme/scss/_variables.scss create mode 100644 slides/_static/theme/scss/default.scss create mode 100644 slides/_static/theme/scss/hieroglyph.scss create mode 100644 slides/_static/theme/scss/io2013.scss create mode 100644 slides/_static/theme/scss/phone.scss create mode 100644 slides/_static/underscore.js create mode 100644 slides/_static/up-pressed.png create mode 100644 slides/_static/up.png create mode 100644 slides/_static/websupport.js create mode 100644 slides/_static/wiki_frontpage.png create mode 100644 slides/_static/wsgi_middleware_onion.png create mode 100644 slides/_static/wsgiref_flow.png create mode 100644 slides/additional/flask_walkthrough.html create mode 100644 slides/additional/git_cleanup.html create mode 100644 slides/additional/sql_persistence_tutorial.html create mode 100644 slides/additional/template_tutorial.html create mode 100644 slides/genindex.html create mode 100644 slides/index.html create mode 100644 slides/objects.inv create mode 100644 slides/outline.html create mode 100644 slides/presentations/index.html create mode 100644 slides/presentations/session01.html create mode 100644 slides/readings.html create mode 100644 slides/search.html create mode 100644 slides/searchindex.js diff --git a/_sources/assignments.txt b/_sources/assignments.txt deleted file mode 100644 index 2abfcf04..00000000 --- a/_sources/assignments.txt +++ /dev/null @@ -1,42 +0,0 @@ -Assignments -=========== - -All assignments for the course will be submitted using the Github -fork-and-pull model. Here are the steps you'll need to complete to do the job: - -1. Log in to the github website - -2. Visit my repository for the class documentation: - http://github.com/cewing/training.python_web - -3. In the top right corner of the repository listing, find the button labelled - 'Fork'. Click it to fork the repository. - -4. After a short while, you'll find that you now have a copy of this - repository in your own github account. Clone that to your own machine: - - ``git clone http://github.com//training.python_web.git`` - -5. Complete the assignment, placing your final scripts into the - ``assignments/weekNN/athome`` directory in the clone on your local machine. - -6. Commit your changes to the repository (you'll need to ``git add`` new files - you create, then ``git commit`` them, e.g.: - - ``git commit -m "some steps I took to complete the assignment"`` - -7. Push your committed changes back to your github account: - - ``git push origin master`` - -8. Back on the github website, click on the 'Pull Request' button at the top - of the page listing your fork of my repository (the copy in your account). - You can write a note to me if you like when you make your pull request. - -From step 8, I'll get an email that tells me that you have made a pull -request. That email will contain links to your fork of my repository. I can -use that link to review the changes you've made. After I've reviewed your -assignment, I'll close the pull request because I don't actually want to pull -your changes for this assignment into my repository. - -That'll be all. \ No newline at end of file diff --git a/_sources/outline.txt b/_sources/outline.txt deleted file mode 100644 index 9a59f66c..00000000 --- a/_sources/outline.txt +++ /dev/null @@ -1,243 +0,0 @@ -Course Outline -============== - -This course is five days long. Each day is split into morning and afternoon -sessions. Each session will consist of three or so hours of instruction and -exercises and a couple of short breaks. - -Session 1 - TCP/IP and Sockets ------------------------------- - -We will begin by covering basic front-matter for the course: daily schedule, -class protocol, introductions and such. Next we will move into a disucssion of -the fundamental concepts and structures that underly the internet and -networked computing. We will learn about the TCP/IP stack (Internet Protocol -Suite) and gain some insights into how that model manifests in real life. We -will then dive into sockets and learn how to use them to communicate between -processes on a single machine, or across a network. - -Along the way, we'll build a basic Echo server and client to demonstrate the -processes we've learned. By lunch, we'll be sending messages and receiving -replies. - -`Lecture Slides `_ - -References -********** - -* `Python Library - socket `_ -* `Socket Programming How-to `_ -* `Python Module of the Week - socket `_ - - -Session 2 - Web Protocols -------------------------- - -Protocols are the languages of the Internet. They govern how machines speak to -one-another. We will focus on finding both the similarities and differences -between protocols. Can you use the inherent qualities of each to determine -which is appropriate for a given purpose? - -Along the way, we'll build a simple web server. Using the HTTP protocol and -extending what we learned in the morning about we'll create an HTTP server -that allows us to serve files and directories from our own computers. By the -end of the day, you'll be browsing your filesystem with your own web browser. - -`Lecture Slides `_ - -References -********** - -* `smtplib `_ -* `imaplib `_ -* `httplib `_ -* `urllib `_ -* `urllib2 `_ - -If you have more curiosity about other Python Standard Library implementations -of internet protocols, you should read Doug Hellmann's Python Module Of The -Week on `Internet Protocols and Support`_. His entries on these libraries are -clear and concise and have some great code examples. - -.. _Internet Protocols and Support: http://pymotw.com/2/internet_protocols.html - - -Session 3 - APIs and Mashups ----------------------------- - -The internet is a treasure trove of information. But meaning can be hard to -find among all that data. Mashups offer a way to combine data from disparate -sources in order to derive meaning. Data online can be offered in forms ripe -for consumption. APIs built in XMLRPC, SOAP or REST offer rich tools for -extraction, but even simple websites can be scraped using tools like -BeautifulSoup. - -We'll explore the differences between various 'Web Services' formats, learning -how to serve information and consume it. We'll also explore using BeautifulSoup -to help extract information from the sea of HTML in the wild. - -Along the way, we'll create a mashup of our own, using the tools we learn to -build a script that can produce derived meaning out of data we find online. - -`Lecture Slides `_ - -References -********** - -* `httplib `_ -* `htmlparser `_ -* `xmlrpclib `_ -* `DocXMLRPCServer `_ -* `json `_ - - -Session 4 - CGI and WSGI ------------------------- - -In this class we will explore ways of moving data from HTTP requests into the -dynamic scripts that process data. We will begin by looking at the original -specification for passing data, CGI (Common Gateway Interface). We'll look at -the benefits and drawbacks of the specification, and use it to create some -simple interactions. - -Then we will investigate a more modern take on the same problem, WSGI (Web -Services Gateway Interface). We'll see the ways in which WSGI is similar to -CGI, and look at the ways in which it differs. We'll create a simple interaction -using WSGI and see what benefits and drawbacks it confers. - -`Lecture Slides `_ - - -Session 5 - Frameworks and Flask --------------------------------- - -In this class we learn about using frameworks to help us reach our goals. We -will learn what makes up a framework and some criteria for evaluating which is -the right one for you. - -After an introduction to the idea of frameworks, we'll look at a specific -implementation of a *microframework*, `Flask `_. -We'll install the framework and take a look at how it works. What does it have -in common with work we've already done? - -Along the way we'll learn about Jinja2, the templating language that Flask -uses, and a bit about the DBAPI2 and communicating with SQL databases from -within Python. - -`Lecture Slides `_ - - -Session 6 - A Flask Application -------------------------------- - -In this class we will exercise our new-won knowledge by building a small -application using Flask. We'll write templates and forms, persist data, -implement login and logout. When we're done, we'll have a fully-functional -microblog. - -We'll use a test-driven development style as we go. We'll decide the -functionality we need, write tests to prove it works, and then write the code -to make those tests pass. We'll be using the ``unittest`` module from the -Python Standard Library. - -Along the way, we'll learn a bit more about how flask operates in a real -application. We'll learn some more about the Jinja2 templating language, and -we'll learn to tie the transactions of our database interaction to the cycles -of request and response. - -`Lecture Slides `_ - - -Session 7 - Intro to Django ---------------------------- - -In this class we'll get introduced to arguably the most popular full-stack -Python web framework, Django. We'll install the framework, learn about how to -get it running and how to get started creating your very own app. - -We'll be learning about the Django ORM and how Django Models can help shield -developers from much of the complexity of SQL. We'll learn how to use the -tools Django provides to explore and interact with your models while designing -them. We'll also get a brief introduction to the Django admin, Django's -*killer feature*. - -Along the way, we'll continue our test-driven development style: writing tests -to demonstrate the functionality we desire and then implementing code to make -them pass. We'll get a chance to see how to build tests within the framework -offered by Django's testrunner. - -`Lecture Slides `_ - - -Session 8 - A Django Application --------------------------------- - -In this class we'll complete our exploration of Django. We'll customize the -Django admin to help us most efficiently administer our Blog application. -We'll create and test view functions that present our application to the world -and we'll provide front-end access to forms that allow us to create, edit and -publish blog entries without needing to use the admin. - -Along the way we'll learn that the Django template language is quite similar -to the Jinja2 language (in fact, Jinja2 was modelled on the Django version). -We'll also get a chance to learn a bit more about the features that the Django -test framework provides over and above the standard Python ``unittest`` -library. - -Finally, we'll discuss some of the strengths and weaknesses of Django. What -makes it a good choice for some projects but not for others. - -`Lecture Slides `_ - - -Session 9 - Intro to Pyramid ----------------------------- - -In this class we will look at a relative newcomer to the Python Web Framework -scene, Pyramid. Although the framework is a newcomer, it is represents a -combination of several projects, notably Repoze and Pylons, that have been -around for quite some time. In fact, the roots of Repoze go back to Zope, the -original Python web framework (and quite possibly the first web framework in -any language). - -We will talk a bit about what makes Pyramid different from other web -frameworks. We will look at the specific problems that the creators of Pyramid -are looking to solve, and we will investigate how those decisions have -influenced the design of the framework. - -Along the way, we'll learn how Pyramid works under the covers, and how this is -like and unlike other frameworks we've seen so far. We'll get started building -the Data Model and configuration structure for the wiki application we'll be -completing in the next session. - -And we'll continue focusing on test-driven development, specifying -functionality and writing tests to demostrate it before ever writing the code -that provides it. - -`Lecture Slides `_ - - -Session 10 - A Pyramid Application ----------------------------------- - -In this class we'll dive into building a real Pyramid application. We'll be -implementing a simple wiki, using traversal dispatch, ZODB persistence and -Chameleon templates. We'll get a chance to work with simple forms, see how -views work in Pyramid, and implement an ACL-based authorization scheme. - -Along the way we'll be taking a good look at a very different templating -system, Chameleon. It grew out of Zope Page Templates (ZPT) and the Template -Attribute Language (TAL). It's chief advantage is that it provides structure -and variable interpolation via XML namespaced attributes. This allows you to -write templates that load in a browser and look 'right' without needing the -framework to render them. - -And we'll continue our drive for test-driven development by writing -tests that cover the functionality we want and then writing the code to make -them pass. - -By the end of the session, you'll have a fully functional wiki you can play -with. Maybe you'll use it to track the information you leared about Python -Web Development. - -`Lecture Slides `_ \ No newline at end of file diff --git a/_sources/project.txt b/_sources/project.txt deleted file mode 100644 index 5adc37d8..00000000 --- a/_sources/project.txt +++ /dev/null @@ -1,45 +0,0 @@ -Final Project -============= - -This course has a **Final Project** which is an integral part of the -evaluation. Students must complete the final project to successfully pass the -course. - -Project Parameters ------------------- - -* Create a Website -* It can do anything you want it to. -* It should have some user interactions (forms users complete). -* It should look nice -* It should show off some aspect of what you've learned -* It should take you about 15-20 hours to create (so small) -* It will be due Friday following the last day of class (March 15) - -Students should check with the instructor or TA to ensure project scope is -appropriate for the time available. - -Much of the class time in weeks 9 and 10 will be devoted to working on this -project. Students will be able to work directly with the instructor and TA to -answer questions and get assistance. - -Submitting The Project ----------------------- - -The assignment is due at the end of the last week of class. - -Assignments will be submitted via an email containing: - -* A Link to the project site **running online** -* A Link to **the project source code repository** in Github. -* Text describing **the goals and outcomes** of the project. (This can also - be in the form of a README in the source code repository) -* Instructions on **how to run the project locally** on a laptop (including - information about any required packages or non-python software required) - -Evaluating the Project ----------------------- - -For evaluation purposes, the running site is the vital part. The instructor -will compare the description of project goals with the running site to see if -the goals were met. diff --git a/_static/jquery.js b/_static/jquery.js deleted file mode 100644 index 7c243080..00000000 --- a/_static/jquery.js +++ /dev/null @@ -1,154 +0,0 @@ -/*! - * jQuery JavaScript Library v1.4.2 - * http://jquery.com/ - * - * Copyright 2010, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2010, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Sat Feb 13 22:33:48 2010 -0500 - */ -(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, -Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& -(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, -a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== -"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, -function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
    a"; -var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, -parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= -false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= -s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, -applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; -else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, -a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== -w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, -cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= -c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); -a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, -function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); -k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), -C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= -e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& -f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; -if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", -e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, -"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, -d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, -e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); -t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| -g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, -CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, -g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, -text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, -setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= -h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== -"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, -h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& -q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; -if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

    ";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); -(function(){var g=s.createElement("div");g.innerHTML="
    ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: -function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= -{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== -"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", -d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? -a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== -1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
    ","
    "];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= -c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, -wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, -prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, -this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); -return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, -""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); -return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", -""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= -c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? -c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= -function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= -Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, -"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= -a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= -a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== -"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
    ").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, -serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), -function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, -global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& -e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? -"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== -false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= -false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", -c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| -d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); -g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== -1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== -"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; -if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== -"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| -c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; -this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= -this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, -e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
    "; -a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); -c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, -d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- -f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": -"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in -e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/_static/pygments.css b/_static/pygments.css deleted file mode 100644 index 1a14f2ae..00000000 --- a/_static/pygments.css +++ /dev/null @@ -1,62 +0,0 @@ -.highlight .hll { background-color: #ffffcc } -.highlight { background: #eeffcc; } -.highlight .c { color: #408090; font-style: italic } /* Comment */ -.highlight .err { border: 1px solid #FF0000 } /* Error */ -.highlight .k { color: #007020; font-weight: bold } /* Keyword */ -.highlight .o { color: #666666 } /* Operator */ -.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ -.highlight .cp { color: #007020 } /* Comment.Preproc */ -.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ -.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ -.highlight .gd { color: #A00000 } /* Generic.Deleted */ -.highlight .ge { font-style: italic } /* Generic.Emph */ -.highlight .gr { color: #FF0000 } /* Generic.Error */ -.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ -.highlight .gi { color: #00A000 } /* Generic.Inserted */ -.highlight .go { color: #303030 } /* Generic.Output */ -.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ -.highlight .gs { font-weight: bold } /* Generic.Strong */ -.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ -.highlight .gt { color: #0040D0 } /* Generic.Traceback */ -.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ -.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ -.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ -.highlight .kp { color: #007020 } /* Keyword.Pseudo */ -.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ -.highlight .kt { color: #902000 } /* Keyword.Type */ -.highlight .m { color: #208050 } /* Literal.Number */ -.highlight .s { color: #4070a0 } /* Literal.String */ -.highlight .na { color: #4070a0 } /* Name.Attribute */ -.highlight .nb { color: #007020 } /* Name.Builtin */ -.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ -.highlight .no { color: #60add5 } /* Name.Constant */ -.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ -.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ -.highlight .ne { color: #007020 } /* Name.Exception */ -.highlight .nf { color: #06287e } /* Name.Function */ -.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ -.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ -.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ -.highlight .nv { color: #bb60d5 } /* Name.Variable */ -.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ -.highlight .w { color: #bbbbbb } /* Text.Whitespace */ -.highlight .mf { color: #208050 } /* Literal.Number.Float */ -.highlight .mh { color: #208050 } /* Literal.Number.Hex */ -.highlight .mi { color: #208050 } /* Literal.Number.Integer */ -.highlight .mo { color: #208050 } /* Literal.Number.Oct */ -.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ -.highlight .sc { color: #4070a0 } /* Literal.String.Char */ -.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ -.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ -.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ -.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ -.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ -.highlight .sx { color: #c65d09 } /* Literal.String.Other */ -.highlight .sr { color: #235388 } /* Literal.String.Regex */ -.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ -.highlight .ss { color: #517918 } /* Literal.String.Symbol */ -.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ -.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ -.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ -.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ -.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_static/sidebar.js b/_static/sidebar.js deleted file mode 100644 index a45e1926..00000000 --- a/_static/sidebar.js +++ /dev/null @@ -1,151 +0,0 @@ -/* - * sidebar.js - * ~~~~~~~~~~ - * - * This script makes the Sphinx sidebar collapsible. - * - * .sphinxsidebar contains .sphinxsidebarwrapper. This script adds - * in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton - * used to collapse and expand the sidebar. - * - * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden - * and the width of the sidebar and the margin-left of the document - * are decreased. When the sidebar is expanded the opposite happens. - * This script saves a per-browser/per-session cookie used to - * remember the position of the sidebar among the pages. - * Once the browser is closed the cookie is deleted and the position - * reset to the default (expanded). - * - * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -$(function() { - // global elements used by the functions. - // the 'sidebarbutton' element is defined as global after its - // creation, in the add_sidebar_button function - var bodywrapper = $('.bodywrapper'); - var sidebar = $('.sphinxsidebar'); - var sidebarwrapper = $('.sphinxsidebarwrapper'); - - // for some reason, the document has no sidebar; do not run into errors - if (!sidebar.length) return; - - // original margin-left of the bodywrapper and width of the sidebar - // with the sidebar expanded - var bw_margin_expanded = bodywrapper.css('margin-left'); - var ssb_width_expanded = sidebar.width(); - - // margin-left of the bodywrapper and width of the sidebar - // with the sidebar collapsed - var bw_margin_collapsed = '.8em'; - var ssb_width_collapsed = '.8em'; - - // colors used by the current theme - var dark_color = $('.related').css('background-color'); - var light_color = $('.document').css('background-color'); - - function sidebar_is_collapsed() { - return sidebarwrapper.is(':not(:visible)'); - } - - function toggle_sidebar() { - if (sidebar_is_collapsed()) - expand_sidebar(); - else - collapse_sidebar(); - } - - function collapse_sidebar() { - sidebarwrapper.hide(); - sidebar.css('width', ssb_width_collapsed); - bodywrapper.css('margin-left', bw_margin_collapsed); - sidebarbutton.css({ - 'margin-left': '0', - 'height': bodywrapper.height() - }); - sidebarbutton.find('span').text('»'); - sidebarbutton.attr('title', _('Expand sidebar')); - document.cookie = 'sidebar=collapsed'; - } - - function expand_sidebar() { - bodywrapper.css('margin-left', bw_margin_expanded); - sidebar.css('width', ssb_width_expanded); - sidebarwrapper.show(); - sidebarbutton.css({ - 'margin-left': ssb_width_expanded-12, - 'height': bodywrapper.height() - }); - sidebarbutton.find('span').text('«'); - sidebarbutton.attr('title', _('Collapse sidebar')); - document.cookie = 'sidebar=expanded'; - } - - function add_sidebar_button() { - sidebarwrapper.css({ - 'float': 'left', - 'margin-right': '0', - 'width': ssb_width_expanded - 28 - }); - // create the button - sidebar.append( - '
    «
    ' - ); - var sidebarbutton = $('#sidebarbutton'); - light_color = sidebarbutton.css('background-color'); - // find the height of the viewport to center the '<<' in the page - var viewport_height; - if (window.innerHeight) - viewport_height = window.innerHeight; - else - viewport_height = $(window).height(); - sidebarbutton.find('span').css({ - 'display': 'block', - 'margin-top': (viewport_height - sidebar.position().top - 20) / 2 - }); - - sidebarbutton.click(toggle_sidebar); - sidebarbutton.attr('title', _('Collapse sidebar')); - sidebarbutton.css({ - 'color': '#FFFFFF', - 'border-left': '1px solid ' + dark_color, - 'font-size': '1.2em', - 'cursor': 'pointer', - 'height': bodywrapper.height(), - 'padding-top': '1px', - 'margin-left': ssb_width_expanded - 12 - }); - - sidebarbutton.hover( - function () { - $(this).css('background-color', dark_color); - }, - function () { - $(this).css('background-color', light_color); - } - ); - } - - function set_position_from_cookie() { - if (!document.cookie) - return; - var items = document.cookie.split(';'); - for(var k=0; k=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;gf?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)}); -return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length); -var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false; -if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length== -0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&& -a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g, -" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments); -o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})(); diff --git a/genindex.html b/genindex.html deleted file mode 100644 index a7caf6f3..00000000 --- a/genindex.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - - Index — Python Web Programming Workshop 1.0 documentation - - - - - - - - - - - - - -
    -
    -
    -
    - - -

    Index

    - -
    - -
    - - -
    -
    -
    -
    -
    - - - - - -
    -
    -
    -
    - - - - \ No newline at end of file diff --git a/presentations/img/python.png b/html/_images/python.png similarity index 100% rename from presentations/img/python.png rename to html/_images/python.png diff --git a/html/_sources/additional/flask_walkthrough.txt b/html/_sources/additional/flask_walkthrough.txt new file mode 100644 index 00000000..eb5a408b --- /dev/null +++ b/html/_sources/additional/flask_walkthrough.txt @@ -0,0 +1,342 @@ +.. slideconf:: + :autoslides: False + +A Quick Flask Walkthrough +========================= + +.. slide:: A Quick Flask Walkthrough + :level: 1 + + This document contains no slides. + +If you've already set up your virtualenv and installed flask, you can simply +activate it and skip down to **Kicking the Tires** + +If not... + +Practice Safe Development +------------------------- + +We are going to install Flask, and the packages it requires, into a +virtualenv. + +.. class:: incremental + +This will ensure that it is isolated from everything else we do in class (and +vice versa) + +.. container:: incremental + + Remember the basic format for creating a virtualenv: + + .. class:: small + + :: + + $ python virtualenv.py [options] + + $ virtualenv [options] + + +Set Up a VirtualEnv +------------------- + +Start by creating your virtualenv:: + + $ python virtualenv.py flaskenv + + $ virtualenv flaskenv + ... + +.. container:: incremental + + Then, activate it:: + + $ source flaskenv/bin/activate + + C:\> flaskenv\Scripts\activate + + +Install Flask +------------- + +Finally, install Flask using `setuptools` or `pip`:: + + (flaskenv)$ pip install flask + Downloading/unpacking flask + Downloading Flask-0.10.1.tar.gz (544kB): 544kB downloaded + ... + Installing collected packages: flask, Werkzeug, Jinja2, + itsdangerous, markupsafe + ... + Successfully installed flask Werkzeug Jinja2 itsdangerous + markupsafe + + +Kicking the Tires +----------------- + +We've installed the Flask microframework and all of its dependencies. + +.. class:: incremental + +Now, let's see what it can do + +.. class:: incremental + +With your flaskenv activated, create a file called ``flask_intro.py`` and +open it in your text editor. + + +Flask +----- + +Getting started with Flask is pretty straightforward. Here's a complete, +simple app. Type it into `flask_intro.py`: + +.. code-block:: python + :class: small + + from flask import Flask + app = Flask(__name__) + + @app.route('/') + def hello_world(): + return 'Hello World!' + + if __name__ == '__main__': + app.run() + + +Running our App +--------------- + +As you might expect by now, the last block in our ``flask_intro.py`` file +allows us to run this as a python program. Save your file, and in your +terminal try this:: + + (flaskenv)$ python flask_intro.py + +.. class:: incremental + +Load ``http://localhost:5000`` in your browser to see it in action. + + +Debugging our App +----------------- + +Last week, ``cgitb`` provided us with useful feedback when building an app. +Flask has similar functionality. Make the following changes to your +``flask_intro.py`` file: + +.. code-block:: python + :class: small + + def hello_world(): + bar = 1 / 0 + return 'Hello World!' + + if __name__ == '__main__': + app.run(debug=True) + +.. class:: incremental + +Restart your app and then reload your browser to see what happens. + +Click in the stack trace that appears in your browser. Notice anything fun? + +(clean up the error when you're done playing). + + +Your work so far +---------------- + +.. class:: incremental + +* You instantiated a `Flask` app with a name that represents the package or + module containing the app + + * Because our app is a single Python module, this should be ``__name__`` + * This is used to help the `Flask` app figure out where to look for + *resources* + +* You defined a function that returned a response body +* You told the app which requests should use that function with a *route* + +.. class:: incremental + +Let's take a look at how that last bit works for a moment... + + +URL Routing +----------- + +Remember our bookdb exercise? How did you end up solving the problem of +mapping an HTTP request to the right function? + +.. class:: incremental + +Flask solves this problem by using the `route` decorator from your app. + +.. class:: incremental + +A 'route' takes a URL rule (more on that in a minute) and maps it to an +*endpoint* and a *function*. + +.. class:: incremental + +When a request arrives at a URL that matches a known rule, the function is +called. + + +URL Rules +--------- + +URL Rules are strings that represent what environ['PATH_INFO'] will look like. + +.. class:: incremental + +They are added to a *mapping* on the Flask object called the *url_map* + +.. class:: incremental + +You can call ``app.add_url_rule()`` to add a new one + +.. class:: incremental + +Or you can use what we've used, the ``app.route()`` decorator + + +Function or Decorator +--------------------- + +.. code-block:: python + :class: small + + def index(): + """some function that returns something""" + # ... + + app.add_url_rule('/', 'homepage', index) + +.. container:: incremental + + is identical to + + .. code-block:: python + :class: small + + @app.route('/', 'homepage') + def index(): + """some function that returns something""" + # ... + + +Routes Can Be Dynamic +--------------------- + +A *placeholder* in a URL rule becomes a named arg to your function (add these +to ``flask_intro.py``): + +.. code-block:: python + :class: incremental small + + @app.route('/profile/') + def show_profile(username): + return "My username is %s" % username + +.. class:: incremental + +And *converters* ensure the incoming argument is of the correct type. + +.. code-block:: python + :class: incremental small + + @app.route('/div//') + def divide(val): + return "%0.2f divided by 2 is %0.2f" % (val, val / 2) + + +Routes Can Be Filtered +---------------------- + +You can also determine which HTTP *methods* a given route will accept: + +.. code-block:: python + :class: small + + @app.route('/blog/entry//', methods=['GET',]) + def read_entry(id): + return "reading entry %d" % id + + @app.route('/blog/entry//', methods=['POST', ]) + def write_entry(id): + return 'writing entry %d' % id + +.. class:: incremental + +After adding that to ``flask_intro.py`` and saving, try loading +``http://localhost:5000/blog/entry/23/`` into your browser. Which was called? + +Routes Can Be Reversed +---------------------- + +Reversing a URL means the ability to generate the url that would result in a +given endpoint being called. + +.. class:: incremental + +This means *you don't have to hard-code your URLs when building links* + +.. class:: incremental + +That means *you can change the URLs for your app without changing code or +templates* + +.. class:: incremental + +This is called **decoupling** and it is a good thing + +Reversing URLs in Flask +----------------------- + +In Flask, you reverse a url with the ``url_for`` function. + +.. class:: incremental + +* ``url_for`` requires an HTTP request context to work +* You can fake an HTTP request when working in a terminal (or testing) +* Use the ``test_request_context`` method of your app object +* This is a great chance to use the Python ``with`` statement +* **Don't type this** + +.. code-block:: python + :class: small incremental + + from flask import url_for + with app.test_request_context(): + print url_for('endpoint', **kwargs) + +Reversing in Action +------------------- + +Quit your Flask app with ``^C``. Then start a python interpreter in that same +terminal and import your ``flask_intro.py`` module: + +.. code-block:: python + + >>> from flask_intro import app + >>> from flask import url_for + >>> with app.test_request_context(): + ... print url_for('show_profile', username="cris") + ... print url_for('divide', val=23.7) + ... + '/profile/cris/' + '/div/23.7/' + >>> + +Enough for Now +-------------- + +That will give you plenty to think about before class. We'll put this all to +good use building a real flask app in our next session. diff --git a/html/_sources/additional/git_cleanup.txt b/html/_sources/additional/git_cleanup.txt new file mode 100644 index 00000000..35338f79 --- /dev/null +++ b/html/_sources/additional/git_cleanup.txt @@ -0,0 +1,219 @@ +.. slideconf:: + :autoslides: False + +Steps to get a clean master branch for your git fork +==================================================== + +.. slide:: Steps to get a clean master branch for your git fork + :level: 1 + + This document contains no slides. + +Command line instructions for getting back to a pristine master branch + + +1. Make sure that you have the UWPCE repostitory set up as an additional + remote for your local repository:: + + $ git remote add uwpce git@github.com:UWPCE-PythonCert/training.python_web.git + +This will give you direct access to the original copy of the repository from +the command line. + +2. Verify this worked by checking your remotes:: + + $ git remote + origin + uwpce + +Now you have *two* remote repositories connected to your local repository. + +* *Origin* represents the copy of your fork of the UW PCE repository *on + github's servers*. +* *Uwpce* is the original UW PCE repository *on github's servers*. + +State the Problem +----------------- + +You have a series of changes *you* have made to the *master* branch of your +repository, both the local and the *origin* remote. + +Every time you make new changes for a homework and then submit a pull request, +all these old changes are included in the pull request. + +State the Goal +-------------- + +You would like to get a *master* branch of your repository that exactly matches +the *master* branch of the UW PCE remote (*uwpce*). + +Once you have this, you can then keep that branch up to date with the UW PCE +copy + +And you can continue to make clean branches for each homework *starting from +that clean master*. + +Steps to get there +------------------ + +Preserve your Old Work +++++++++++++++++++++++ + +First, make a branch on your local machine of your current *master*, this will +be a branch you keep that contains all your homework up until today:: + + $ git branch -a + * master + remotes/origin/HEAD -> origin/master + remotes/origin/gh-pages + remotes/origin/instructor + remotes/origin/master + remotes/origin/week-long-format + remotes/uwpce/master + $ git branch keep-old-work + $ git branch -a + keep-old-work + * master + remotes/origin/HEAD -> origin/master + remotes/origin/gh-pages + remotes/origin/instructor + remotes/origin/master + remotes/origin/week-long-format + remotes/uwpce/master + +Now, you have a copy of all the work you've done to date. It's on the +*keep-old-work* branch. You have not yet pushed this branch up to your github +account, so let's do that next, making it safe:: + + $ git push -u origin keep-old-work + Total 0 (delta 0), reused 0 (delta 0) + To git@github.com:cewing/training.python_web.git + * [new branch] keep-old-work -> keep-old-work + Branch keep-old-work set up to track remote branch keep-old-work from origin. + +Okay, now there's a copy of your old work safe in a branch on *your* github +repository. + +Revert Your Master +++++++++++++++++++ + +The next step is to *roll back your master* to a point *before you made any +changes to it*. + +The key here is understanding that every change you commit to a repository in +git is associated with a *hash*, which is a big, unique identification number +you can use to refer to that specific change. You can see these numbers when +you look at the list of commits in github. + +You need to find the number of a commit by me that happened before you began +making changes. + +First, open the 'commits' page on github of your fork of the class repository. + +Then, scroll down until you find your first commit, which should be part of +work for session01 homework. + +Then, find the last commit *before* that commit, and click on the number in the +far right of that commit listing (it should be something like `b60ea2bb70`) + +This will open up that specific commit, and in the URL for that commit you will +find the full hash: `b60ea2bb7052a5bd300772d7d9d40b19b27f7a1b`. Copy that value. + +Now, we are going to reset your local *master* branch to that commit, +abandoning all the changes you (and I) have made between then and now:: + + $ git branch + keep-old-work + * master + $ git reset --hard b60ea2bb7052a5bd300772d7d9d40b19b27f7a1b + +Now, your *local master* has been reverted to a state before you did any work. +All your changes have been deleted, but so have all the changes I've made since +the start of class. + +Luckily, we can fix that. Our next step is to fetch the *uwpce* *master* +branch, which contains all those changes I've made, but none of the changes you +made: + + $ git fetch uwpce master + remote: Counting objects: 10, done. + remote: Compressing objects: 100% (10/10), done. + remote: Total 10 (delta 3), reused 7 (delta 0) + Unpacking objects: 100% (10/10), done. + From github.com:UWPCE-PythonCert/training.python_web + * branch master -> FETCH_HEAD + 8873ba1..75a8462 master -> uwpce/master + +And finally, we can merge the changes in the *uwpce* master into our local +*master*:: + + $ git branch + keep-old-work + * master + $ git merge uwpce/master + Merge made by the 'recursive' strategy. + source/presentations/session04.rst | 7 + + source/presentations/session06.rst | 1624 +----------------------------------- + 2 files changed, 40 insertions(+), 1591 deletions(-) + + +Forcibly Update ++++++++++++++++ + +Now, what we have is a situation where your local master has a history that is +completely different from the *origin* to which it is attached. Your +*origin/master* still has your work on it, interleaved with the changes I've +made along the way, but your *local* master contains only my work. + +If you were to try to push these changes up to *origin* (your repository) it would +fail because there's no way to reconcile the two histories. + +But we don't care about the history on your *origin*, we only want to keep the +history that is represented by what is currently in your *local* master branch. +To do that, we can push with the `--force` option:: + + $ git push --force origin master + Counting objects: 25, done. + Delta compression using up to 8 threads. + Compressing objects: 100% (11/11), done. + Writing objects: 100% (11/11), 2.04 KiB | 0 bytes/s, done. + Total 11 (delta 7), reused 0 (delta 0) + To git@github.com:cewing/training.python_web.git + + 782d17e...5fb97f3 master -> master (forced update) + +Okay. This means that now *master* both on your local machine and on the +*origin* remote (your github repository) is identical to (and up to date with) +the master in the *uwpce* repository. + + +Going Forward +------------- + +From now on, when you want to get the very latest copies of the *uwpce* +repository, you can issue these commands:: + + $ git checkout master + $ git fetch uwpce master + $ git merge uwpce/master + $ git push origin master + +That will fetch the changes from the *uwpce* remote *master* branch, merge them +into your *local* repository *master* branch, and then push those changes up to +your *origin* repository *master* branch. + +And when you are ready to start work on a new homework assignment, you can +simply start a new branch:: + + $ git checkout -b session05-homework + +Once you've completed your homework, and committed all the changes to your +*local* homework branch, you can push that branch up to your *origin* +repository:: + + $ git push origin session05-homework + +And then, when you open a pull request for me to review your homework, you can +select your *homework branch* as the source of the pull request, and my +*master* branch as the destination. The request will contain only those changes +that are germane to your homework. + diff --git a/html/_sources/additional/sql_persistence_tutorial.txt b/html/_sources/additional/sql_persistence_tutorial.txt new file mode 100644 index 00000000..5e47ba99 --- /dev/null +++ b/html/_sources/additional/sql_persistence_tutorial.txt @@ -0,0 +1,625 @@ +.. slideconf:: + :autoslides: False + +SQL Persistence in Python +========================= + +.. slide:: SQL Persistence in Python + :level: 1 + + This document contains no slides. + +In this tutorial, you'll walk through some basic concepts of data persistence +using the Python stdlib implementation of DB API 2, `sqlite3` + +Data Persistence +---------------- + +There are many models for persistance of data. + +.. class:: incremental + +* Flat files +* Relational Database (SQL RDBMs like PostgreSQL, MySQL, SQLServer, Oracle) +* Object Stores (Pickle, ZODB) +* NoSQL Databases (CouchDB, MongoDB, etc) + +.. class:: incremental + +It's also one of the most contentious issues in app design. + +.. class:: incremental + +For this reason, it's one of the things that most Small Frameworks leave +undecided. + + +Simple SQL +---------- + +`PEP 249 `_ describes a +common API for database connections called DB-API 2. + +.. container:: incremental + + The goal was to + + achieve a consistency leading to more easily understood modules, code + that is generally more portable across databases, and a broader reach + of database connectivity from Python + + .. class:: image-credit + + source: http://www.python.org/dev/peps/pep-0248/ + + +A Note on DB API +---------------- + +.. class:: incremental center + +It is important to remember that PEP 249 is **only a specification**. + +.. class:: incremental + +There is no code or package for DB-API 2 on it's own. + +.. class:: incremental + +Since 2.5, the Python Standard Library has provided a `reference +implementation of the api `_ +based on SQLite3 + +.. class:: incremental + +Before Python 2.5, this package was available as ``pysqlite`` + + +Using DB API +------------ + +To use the DB API with any database other than SQLite3, you must have an +underlying API package available. + +.. container:: incremental + + Implementations are available for: + + * PostgreSQL (**psycopg2**, txpostgres, ...) + * MySQL (**mysql-python**, PyMySQL, ...) + * MS SQL Server (**adodbapi**, pymssql, mxODBC, pyodbc, ...) + * Oracle (**cx_Oracle**, mxODBC, pyodbc, ...) + * and many more... + + .. class:: image-credit + + source: http://wiki.python.org/moin/DatabaseInterfaces + + +Installing API Packages +----------------------- + +Most db api packages can be installed using typical Pythonic methods:: + + $ easy_install psycopg2 + $ pip install mysql-python + ... + +.. class:: incremental + +Most api packages will require that the development headers for the underlying +database system be available. Without these, the C symbols required for +communication with the db are not present and the wrapper cannot work. + + +Not Today +--------- + +We don't want to spend the next hour getting a package installed, so let's use +``sqlite3`` instead. + +.. class:: incremental + +I **do not** recommend using sqlite3 for production web applications, there are +too many ways in which it falls short + +.. class:: incremental + +But it will provide a solid learning tool + + +Getting Started +--------------- + +In the class resources folder, you'll find an ``sql`` directory. Copy that to +your working directory. + +.. class:: incremental + +Open the file ``createdb.py`` in your text editor. Edit ``main`` like so: + +.. code-block:: python + :class: incremental small + + def main(): + conn = sqlite3.connect(DB_FILENAME) + if DB_IS_NEW: + print 'Need to create database and schema' + else: + print 'Database exists, assume schema does, too.' + conn.close() + + +Try It Out +---------- + +Run the ``createdb.py`` script to see it in effect:: + + $ python createdb.py + Need to create database and schema + $ python createdb.py + Database exists, assume schema does, too. + $ ls + books.db + ... + +.. class:: incremental + +Sqlite3 will automatically create a new database when you connect for the +first time, if one does not exist. + + +Set Up A Schema +--------------- + +Make the following changes to ``createdb.py``: + +.. code-block:: python + :class: small + + DB_FILENAME = 'books.db' + SCHEMA_FILENAME = 'ddl.sql' # <- this is new + DB_IS_NEW = not os.path.exists(DB_FILENAME) + + def main(): + with sqlite3.connect(DB_FILENAME) as conn: # <- context mgr + if DB_IS_NEW: # A whole new if clause: + print 'Creating schema' + with open(SCHEMA_FILENAME, 'rt') as f: + schema = f.read() + conn.executescript(schema) + else: + print 'Database exists, assume schema does, too.' + # delete the `conn.close()` that was here. + + +Verify Your Work +---------------- + +Quit your python interpreter and delete the file ``books.db`` + +.. container:: incremental + + Then run the script from the command line again to try it out:: + + $ python createdb.py + Creating schema + $ python createdb.py + Database exists, assume schema does, too. + +Introspect the Database +----------------------- + +Add the following to ``createdb.py``: + +.. code-block:: python + :class: small + + # in the imports, add this line: + from utils import show_table_metadata + + else: + # in the else clause, replace the print statement with this: + print "Database exists, introspecting:" + tablenames = ['author', 'book'] + cursor = conn.cursor() + for name in tablenames: + print "\n" + show_table_metadata(cursor, name) + +.. class:: incremental + +Then try running ``python createdb.py`` again + +My Results +---------- + +.. class:: small + +:: + + $ python createdb.py + Table Metadata for 'author': + cid | name | type | notnull | dflt_value | pk | + -----------+------------+------------+------------+------------+------------+- + 0 | authorid | INTEGER | 1 | None | 1 | + -----------+------------+------------+------------+------------+------------+- + 1 | name | TEXT | 0 | None | 0 | + -----------+------------+------------+------------+------------+------------+- + + + Table Metadata for 'book': + cid | name | type | notnull | dflt_value | pk | + -----------+------------+------------+------------+------------+------------+- + 0 | bookid | INTEGER | 1 | None | 1 | + -----------+------------+------------+------------+------------+------------+- + 1 | title | TEXT | 0 | None | 0 | + -----------+------------+------------+------------+------------+------------+- + 2 | author | INTEGER | 1 | None | 0 | + -----------+------------+------------+------------+------------+------------+- + + +Inserting Data +-------------- + +Let's load up some data. Fire up your interpreter and type: + +.. code-block:: python + :class: small + + >>> import sqlite3 + >>> insert = """ + ... INSERT INTO author (name) VALUES("Iain M. Banks");""" + >>> with sqlite3.connect("books.db") as conn: + ... cur = conn.cursor() + ... cur.execute(insert) + ... cur.rowcount + ... cur.close() + ... + + 1 + >>> + +.. class:: incremental + +Did that work? + + +Querying Data +------------- + +Let's query our database to find out: + +.. code-block:: python + :class: small + + >>> query = """ + ... SELECT * from author;""" + >>> with sqlite3.connect("books.db") as conn: + ... cur = conn.cursor() + ... cur.execute(query) + ... rows = cur.fetchall() + ... for row in rows: + ... print row + ... + + (1, u'Iain M. Banks') + +.. class:: incremental + +Alright! We've got data in there. Let's make it more efficient + + +Parameterized Statements +------------------------ + +Try this: + +.. code-block:: python + :class: small + + >>> insert = """ + ... INSERT INTO author (name) VALUES(?);""" + >>> authors = [["China Mieville"], ["Frank Herbert"], + ... ["J.R.R. Tolkien"], ["Susan Cooper"], ["Madeline L'Engle"]] + >>> with sqlite3.connect("books.db") as conn: + ... cur = conn.cursor() + ... cur.executemany(insert, authors) + ... print cur.rowcount + ... cur.close() + ... + + 5 + + +Check Your Work +--------------- + +Again, query the database: + +.. code-block:: python + :class: small + + >>> query = """ + ... SELECT * from author;""" + >>> with sqlite3.connect("books.db") as conn: + ... cur = conn.cursor() + ... cur.execute(query) + ... rows = cur.fetchall() + ... for row in rows: + ... print row + ... + + (1, u'Iain M. Banks') + ... + (4, u'J.R.R. Tolkien') + (5, u'Susan Cooper') + (6, u"Madeline L'Engle") + + +Transactions +------------ + +Transactions group operations together, allowing you to verify them *before* +the results hit the database. + +.. class:: incremental + +In SQLite3, data-altering statements require an explicit ``commit`` unless +auto-commit has been enabled. + +.. class:: incremental + +The ``with`` statements we've used take care of committing when the context +manager closes. + +.. class:: incremental + +Let's change that so we can see what happens explicitly + + +Populating the Database +----------------------- + +Let's start by seeing what happens when you try to look for newly added data +before the ``insert`` transaction is committed. + +.. class:: incremental + +Begin by quitting your interpreter and deleting ``books.db``. + +.. container:: incremental + + Then re-create the database, empty:: + + $ python createdb.py + Creating schema + + +Setting Up the Test +------------------- + +.. class:: small + +Open ``populatedb.py`` in your editor, replace the final ``print``: + +.. code-block:: python + :class: small + + conn1 = sqlite3.connect(DB_FILENAME) + conn2 = sqlite3.connect(DB_FILENAME) + print "\nOn conn1, before insert:" + show_authors(conn1) + authors = ([author] for author in AUTHORS_BOOKS.keys()) + cur = conn1.cursor() + cur.executemany(author_insert, authors) + print "\nOn conn1, after insert:" + show_authors(conn1) + print "\nOn conn2, before commit:" + show_authors(conn2) + conn1.commit() + print "\nOn conn2, after commit:" + show_authors(conn2) + conn1.close() + conn2.close() + + +Running the Test +---------------- + +.. class:: small + +Quit your python interpreter and run the ``populatedb.py`` script: + +.. class:: small incremental + +:: + + On conn1, before insert: + no rows returned + On conn1, after insert: + (1, u'China Mieville') + (2, u'Frank Herbert') + (3, u'Susan Cooper') + (4, u'J.R.R. Tolkien') + (5, u"Madeline L'Engle") + + On conn2, before commit: + no rows returned + On conn2, after commit: + (1, u'China Mieville') + (2, u'Frank Herbert') + (3, u'Susan Cooper') + (4, u'J.R.R. Tolkien') + (5, u"Madeline L'Engle") + + +Rollback +-------- + +That's all well and good, but what happens if an error occurs? + +.. class:: incremental + +Transactions can be rolled back in order to wipe out partially completed work. + +.. class:: incremental + +Like with commit, using ``connect`` as a context manager in a ``with`` +statement will automatically rollback for exceptions. + +.. class:: incremental + +Let's rewrite our populatedb script so it explicitly commits or rolls back a +transaction depending on exceptions occurring + + +Edit populatedb.py (slide 1) +---------------------------- + +.. class:: small + +First, add the following function above the ``if __name__ == '__main__'`` +block: + +.. code-block:: python + :class: small + + def populate_db(conn): + authors = ([author] for author in AUTHORS_BOOKS.keys()) + cur = conn.cursor() + cur.executemany(author_insert, authors) + + for author in AUTHORS_BOOKS.keys(): + params = ([book, author] for book in AUTHORS_BOOKS[author]) + cur.executemany(book_insert, params) + + +Edit populatedb.py (slide 2) +---------------------------- + +.. class:: small + +Then, in the runner: + +.. code-block:: python + :class: small + + with sqlite3.connect(DB_FILENAME) as conn1: + with sqlite3.connect(DB_FILENAME) as conn2: + try: + populate_db(conn1) + print "\nauthors and books on conn2 before commit:" + show_authors(conn2) + show_books(conn2) + except sqlite3.Error: + conn1.rollback() + print "\nauthors and books on conn2 after rollback:" + show_authors(conn2) + show_books(conn2) + raise + else: + conn1.commit() + print "\nauthors and books on conn2 after commit:" + show_authors(conn2) + show_books(conn2) + + +Try it Out +---------- + +Remove ``books.db`` and recrete the database, then run our script: + +.. class:: small + +:: + + $ rm books.db + $ python createdb.py + Creating schema + $ python populatedb.py + +.. class:: small incremental + +:: + + authors and books on conn2 after rollback: + no rows returned + no rows returned + Traceback (most recent call last): + File "populatedb.py", line 57, in + populate_db(conn1) + File "populatedb.py", line 46, in populate_db + cur.executemany(book_insert, params) + sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type. + +Oooops, Fix It +-------------- + +.. class:: small + +Okay, we got an error, and the transaction was rolled back correctly. + +.. container:: incremental small + + Open ``utils.py`` and find this: + + .. code-block:: python + + 'Susan Cooper': ["The Dark is Rising", ["The Greenwitch"]], + +.. container:: incremental small + + Fix it like so: + + .. code-block:: python + + 'Susan Cooper': ["The Dark is Rising", "The Greenwitch"], + +.. class:: small incremental + +It appears that we were attempting to bind a list as a parameter. Ooops. + + +Try It Again +------------ + +.. container:: small + + Now that the error in our data is repaired, let's try again:: + + $ python populatedb.py + +.. class:: small incremental + +:: + + Reporting authors and books on conn2 before commit: + no rows returned + no rows returned + Reporting authors and books on conn2 after commit: + (1, u'China Mieville') + (2, u'Frank Herbert') + (3, u'Susan Cooper') + (4, u'J.R.R. Tolkien') + (5, u"Madeline L'Engle") + (1, u'Perdido Street Station', 1) + (2, u'The Scar', 1) + (3, u'King Rat', 1) + (4, u'Dune', 2) + (5, u"Hellstrom's Hive", 2) + (6, u'The Dark is Rising', 3) + (7, u'The Greenwitch', 3) + (8, u'The Hobbit', 4) + (9, u'The Silmarillion', 4) + (10, u'A Wrinkle in Time', 5) + (11, u'A Swiftly Tilting Planet', 5) + +Congratulations +--------------- + +You've just created a small database of books and authors. The transactional +protections you've used let you rest comfortable, knowing that so long as the +process completed, you've got the data you sent. + +We'll see more of this when we build our flask app. diff --git a/html/_sources/additional/template_tutorial.txt b/html/_sources/additional/template_tutorial.txt new file mode 100644 index 00000000..7eaa8065 --- /dev/null +++ b/html/_sources/additional/template_tutorial.txt @@ -0,0 +1,244 @@ +.. slideconf:: + :autoslides: False + +Jinja2 Template Introduction +============================ + +.. slide:: Jinja2 Template Introduction + :level: 1 + + This document contains no slides. + + +When you installed ``flask`` into your virtualenv, along with it came a +Python-based templating engine called ``Jinja2``. + +In this walkthrough, you'll see some basics about how templates work, and get +to know what sorts of options they provide you for creating HTML from a Python +process. + +Generating HTML +--------------- + +.. class:: big-centered + +"I enjoy writing HTML in Python" + +.. class:: incremental right + +-- nobody, ever + + +Templating +---------- + +A good framework will provide some way of generating HTML with a templating +system. + +.. class:: incremental + +There are nearly as many templating systems as there are frameworks + +.. class:: incremental + +Each has advantages and disadvantages + +.. class:: incremental + +Flask includes the *Jinja2* templating system (perhaps because it's built by +the same folks) + + +Jinja2 Template Basics +---------------------- + +Let's start with the absolute basics. + +.. container:: incremental + + Fire up a Python interpreter, using your flask virtualenv: + + .. code-block:: python + :class: small + + (flaskenv)$ python + >>> from jinja2 import Template + +.. container:: incremental + + A template is built of a simple string: + + .. code-block:: python + :class: small + + >>> t1 = Template("Hello {{ name }}, how are you?") + + +Rendering a Template +-------------------- + +Call the ``render`` method, providing some *context*: + +.. code-block:: python + :class: incremental small + + >>> t1.render(name="Freddy") + u'Hello Freddy, how are you?' + >>> t1.render({'name': "Roberto"}) + u'Hello Roberto, how are you?' + >>> + +.. class:: incremental + +*Context* can either be keyword arguments, or a dictionary + + +Dictionaries in Context +----------------------- + +Dictionaries passed in as part of the *context* can be addressed with *either* +subscript or dotted notation: + +.. code-block:: python + :class: incremental small + + >>> person = {'first_name': 'Frank', + ... 'last_name': 'Herbert'} + >>> t2 = Template("{{ person.last_name }}, {{ person['first_name'] }}") + >>> t2.render(person=person) + u'Herbert, Frank' + +.. class:: incremental + +* Jinja2 will try the *correct* way first (attr for dotted, item for + subscript). +* If nothing is found, it will try the opposite. +* If nothing is found, it will return an *undefined* object. + + +Objects in Context +------------------ + +The exact same is true of objects passed in as part of *context*: + +.. code-block:: python + :class: incremental small + + >>> t3 = Template("{{ obj.x }} + {{ obj['y'] }} = Fun!") + >>> class Game(object): + ... x = 'babies' + ... y = 'bubbles' + ... + >>> bathtime = Game() + >>> t3.render(obj=bathtime) + u'babies + bubbles = Fun!' + +.. class:: incremental + +This means your templates can be a bit agnostic as to the nature of the things +in *context* + + +Filtering values in Templates +----------------------------- + +You can apply *filters* to the data passed in *context* with the pipe ('|') +operator: + +.. code-block:: python + :class: incremental small + + t4 = Template("shouted: {{ phrase|upper }}") + >>> t4.render(phrase="this is very important") + u'shouted: THIS IS VERY IMPORTANT' + +.. container:: incremental + + You can also chain filters together: + + .. code-block:: python + :class: small + + t5 = Template("confusing: {{ phrase|upper|reverse }}") + >>> t5.render(phrase="howdy doody") + u'confusing: YDOOD YDWOH' + + +Control Flow +------------ + +Logical control structures are also available: + +.. code-block:: python + :class: incremental small + + tmpl = """ + ... {% for item in list %}{{ item }}, {% endfor %} + ... """ + >>> t6 = Template(tmpl) + >>> t6.render(list=[1,2,3,4,5,6]) + u'\n1, 2, 3, 4, 5, 6, ' + +.. class:: incremental + +Any control structure introduced in a template **must** be paired with an +explicit closing tag ({% for %}...{% endfor %}) + + +Template Tests +-------------- + +There are a number of specialized *tests* available for use with the +``if...elif...else`` control structure: + +.. code-block:: python + :class: incremental small + + >>> tmpl = """ + ... {% if phrase is upper %} + ... {{ phrase|lower }} + ... {% elif phrase is lower %} + ... {{ phrase|upper }} + ... {% else %}{{ phrase }}{% endif %}""" + >>> t7 = Template(tmpl) + >>> t7.render(phrase="FOO") + u'\n\n foo\n' + >>> t7.render(phrase="bar") + u'\n\n BAR\n' + >>> t7.render(phrase="This should print as-is") + u'\nThis should print as-is' + + +Basic Python Expressions +------------------------ + +Basic Python expressions are also supported: + +.. code-block:: python + :class: incremental small + + tmpl = """ + ... {% set sum = 0 %} + ... {% for val in values %} + ... {{ val }}: {{ sum + val }} + ... {% set sum = sum + val %} + ... {% endfor %} + ... """ + >>> t8 = Template(tmpl) + >>> t8.render(values=range(1,11)) + u'\n\n\n1: 1\n \n\n2: 3\n \n\n3: 6\n \n\n4: 10\n + \n\n5: 15\n \n\n6: 21\n \n\n7: 28\n \n\n8: 36\n + \n\n9: 45\n \n\n10: 55\n \n' + + +Much, Much More +--------------- + +There's more that Jinja2 templates can do, and you'll see more in class +when we write templates for our Flask app. + +.. container:: incremental + + Make sure that you bookmark the Jinja2 documentation for later use:: + + http://jinja.pocoo.org/docs/templates/ diff --git a/_sources/index.txt b/html/_sources/index.txt similarity index 70% rename from _sources/index.txt rename to html/_sources/index.txt index 42447ca7..1ff19ba8 100644 --- a/_sources/index.txt +++ b/html/_sources/index.txt @@ -1,33 +1,39 @@ .. Internet Programming with Python documentation master file, created by sphinx-quickstart on Sat Nov 3 13:22:19 2012. -`Python Web Programming Workshop, August 5-9, 2013 in Chapel Hill, NC -`_ +.. slideconf:: + :autoslides: False -=============================== -Python Web Programming Workshop -=============================== +`UW PCE Certificate Program in Python Programming +`_ -.. sidebar:: Table of Contents +================================ +Internet Programming with Python +================================ + +.. slide:: Internet Programming with Python + :level: 1 + + This document contains no slides. + +.. sidebar:: In This Class .. toctree:: :maxdepth: 2 - self outline readings + presentations/index -August 5-9, 2013 - -Chapel Hill, North Carolina +Winter Term, 2015 (10 sessions) -`Registration now open `_ +Tuesdays, 6-9 pm, January 6 - March 10 Overview ======== -This five day workshop emphasizes network-based programming and Web +This course emphasizes network-based programming and Web applications, how they work and how to program them in Python. Explore the underlying principles and their expression in the Python libraries. Learn contrasting approaches in creating applications: programming with the @@ -37,7 +43,7 @@ low-level libraries versus using highly integrated frameworks Prerequisites ============= -To attend this workshop you should have a working knowledge of the basic +To attend this course you should have a working knowledge of the basic syntax and structures of the Python programming language. You will also need to be comfortable working at the command line to navigate a file system, create and delete files, and execute commands. Finally, you should have some @@ -48,9 +54,8 @@ Requirements ============ This workshop does not provide a computer laboratory. You will have to have a -portable computer in order to participate. Network access, both wired and -wireless, will be provided, but you will need to know how to operate the -network settings for your computer. +portable computer in order to participate. Network access is provided, but you +will need to know how to operate the network settings for your computer. Your computer must have Python version 2.6 or 2.7 installed. No additional libraries will be required, but we will be installing some as the workshop @@ -64,18 +69,18 @@ in order to keep our development environments clean and separate. What to Expect ============== -This one-week course will cover the fundamental concepts of networked -programming in Python. You'll learn everything, starting from the sockets that -enable communications between processes and machines and the basic protocols -that govern this communication, right up to the full-stack frameworks that -enable developers to build rich applications efficiently. +This course will cover the fundamental concepts of networked programming in +Python. You'll learn everything, starting from the sockets that enable +communications between processes and machines and the basic protocols that +govern this communication, right up to the full-stack frameworks that enable +developers to build rich applications efficiently. Along the way, you'll learn through a combination of lecture and activity. Historical information will be combined with exercises designed to help you learn the Pythonic way to create programs that interact with each-other across -networks. Each module will include reading lists for more information and -ideas for projects you can use to help cement the lessons you learn after the -the class is over. +networks. Each module will include reading lists for more information. +Homework assignments will allow you to dive more deeply into the concepts +introduced in class. **This class is** intended to give students a solid grounding in the fundamentals of network programming. You will gain a basic understanding of a diff --git a/html/_sources/outline.txt b/html/_sources/outline.txt new file mode 100644 index 00000000..9e5ec8b5 --- /dev/null +++ b/html/_sources/outline.txt @@ -0,0 +1,199 @@ +.. slideconf:: + :autoslides: False + +Course Outline +============== + +.. slide:: Course Outline + :level: 1 + + This document contains no slides. + +This course takes place over 10 sessions. Each session is three hours long. +Each session contains lecture material and exercises you will type at a python +prompt. Each session has associated assignments which you will complete +between sessions. + + +Session 1 - MVC Applications and Data Persistence +------------------------------------------------- + +In this session we will begin by introducing the idea of an MVC (*Model View +Controller*) application. We'll discuss this popular application design +pattern and talk about the ways in which it does and does not apply to the +world of web applications. + +We'll get started with our first application, a learning journal written in the +lignt but powerful *Pyramid* web framework. We'll set up a development +environment and install the framework and dependencies. We'll create our first +*models* and experiment with persisting data to a database. + +References +********** + + +Preparation for Session 2 +************************* + +In preparation for session 2, please read the following materials: + +* `Jinja2 Template Tutorial + `_ +* `HTML5 Site Layout Tutorial + `_ + +Session 2 - Pyramid Views, Renderers and Forms +---------------------------------------------- + +Sesstion 3 - Pyramid Authentication and Deployment +-------------------------------------------------- + + +Session 4 - TCP/IP and Sockets +------------------------------ + +We will begin with a disucssion of the fundamental concepts and structures +that underly the internet and networked computing. We'll learn about the +TCP/IP stack (Internet Protocol Suite) and gain some insights into how that +model manifests in real life. We will then dive into sockets and learn how to +use them to communicate between processes on a single machine, or across a +network. + +Along the way, we'll build a basic Echo server and client to demonstrate the +processes we've learned. By the end of the session, we'll be sending messages +and receiving replies. + +References +********** + +* `Python Library - socket `_ +* `Socket Programming How-to `_ +* `Python Module of the Week - socket `_ + + +Session 5 - Web Protocols +------------------------- + +Protocols are the languages of the Internet. They govern how machines speak to +one another. We will focus on finding both the similarities and differences +between protocols. Can you use the inherent qualities of each to determine +which is appropriate for a given purpose? + +Along the way, we'll build a simple web server. Using the HTTP protocol and +extending what we learned in the previous session we'll create an HTTP server +that allows us to serve files and directories from our own computers. By the +end of the day, you'll be browsing your filesystem with your own web browser. + +References +********** + +* `smtplib `_ +* `imaplib `_ +* `httplib `_ +* `urllib `_ +* `urllib2 `_ + +If you have more curiosity about other Python Standard Library implementations +of internet protocols, you should read Doug Hellmann's Python Module Of The +Week on `Internet Protocols and Support`_. His entries on these libraries are +clear and concise and have some great code examples. + +.. _Internet Protocols and Support: http://pymotw.com/2/internet_protocols.html + + +Session 6 - APIs and Mashups +---------------------------- + +The internet is a treasure trove of information. But meaning can be hard to +find among all that data. Mashups offer a way to combine data from disparate +sources in order to derive meaning. Data online can be offered in forms ripe +for consumption. APIs built in XMLRPC, SOAP or REST offer rich tools for +extraction, but even simple websites can be scraped using tools like +BeautifulSoup. + +We'll explore the differences between various 'Web Services' formats, learning +how to serve information and consume it. We'll also explore using BeautifulSoup +to help extract information from the sea of HTML in the wild. + +Along the way, we'll create a mashup of our own, using the tools we learn to +build a script that can produce derived meaning out of data we find online. + +References +********** + +* `httplib `_ +* `htmlparser `_ +* `xmlrpclib `_ +* `DocXMLRPCServer `_ +* `json `_ + + +Session 7 - CGI and WSGI +------------------------ + +In this class we will explore ways of moving data from HTTP requests into the +dynamic scripts that process data. We will begin by looking at the original +specification for passing data, CGI (Common Gateway Interface). We'll look at +the benefits and drawbacks of the specification, and use it to create some +simple interactions. + +Then we will investigate a more modern take on the same problem, WSGI (Web +Services Gateway Interface). We'll see the ways in which WSGI is similar to +CGI, and look at the ways in which it differs. We'll create a simple interaction +using WSGI and see what benefits and drawbacks it confers. + +Preparation for Session 8 +************************* + +Please walk through this tutorial before session 8 begins. + +* `An Introduction to Django `_ + + +Session 8 - Basic Django +------------------------ + +In this class we'll get introduced to arguably the most popular full-stack +Python web framework, Django. We'll install the framework, learn about how to +get it running and how to get started creating your very own app. + +We'll be learning about the Django ORM and how Django Models can help shield +developers from much of the complexity of SQL. + +During the week leading up to this session, we'll `get started building`_ a +blog app in Django. We'll learn how to use the tools Django provides to explore +and interact with your models while designing them. We'll also get a brief +introduction to the Django admin, Django's *killer feature*. + +.. _get started building: presentations/django_intro-plain.html + + +Along the way, we'll build a nicely functional blog application. We'll learn +about model relationships, customizing the Django admin, and adding front-end +views so users can see our work. We'll even learn how we can update our +database code and keep it in sync with our progressing development work. + +Along the way we'll learn that the Django template language is quite similar +to the Jinja2 language (in fact, Jinja2 was modelled on the Django version). +We'll also get a chance to learn a bit more about the features that the Django +test framework provides over and above the standard Python ``unittest`` +library. + + +Session 9 - Extending Django +---------------------------- + +During this session, we will continue our exploration of Django, and of pair +programming. Students will once again pair up and work together to implement +one or more feature extending the basic Django app we created previously. + +Finally, we'll discuss some of the strengths and weaknesses of Django. What +makes it a good choice for some projects but not for others. + +`Lecture Slides `_ + + +Session 10 - Deploying Django +----------------------------- + + diff --git a/html/_sources/presentations/index.txt b/html/_sources/presentations/index.txt new file mode 100644 index 00000000..9140ae4b --- /dev/null +++ b/html/_sources/presentations/index.txt @@ -0,0 +1,18 @@ +.. slideconf:: + :autoslides: False + +Course Presentations +==================== + +.. slide:: Course Presentations + :level: 1 + + This document contains no slides. + +Each presentation is the material presented in class for a session of this +course. + +.. toctree:: + :maxdepth: 2 + + session01 diff --git a/html/_sources/presentations/session01.txt b/html/_sources/presentations/session01.txt new file mode 100644 index 00000000..4eb0983c --- /dev/null +++ b/html/_sources/presentations/session01.txt @@ -0,0 +1,1792 @@ +.. slideconf:: + :autoslides: True + +********** +Session 01 +********** + +.. image:: /_static/python.png + :align: center + :width: 43% + + +Introductions +============= + +.. rst-class:: large centered + +Wherin we learn about the Model View Controller approach to app design and +explore data persistence in Python. + +But First +--------- + +.. rst-class:: left +.. container:: + + Class presentations are available online for your use + + .. rst-class:: small + + https://github.com/UWPCE-PythonCert/training.python_web + + .. rst-class:: build + .. container:: + + Licensed with Creative Commons BY-NC-SA + + .. rst-class:: build + + * You must attribute the work + * You may not use the work for commercial purposes + * You have to share your versions just like this one + + Find mistakes? See improvements? Make a pull request. + +.. nextslide:: + +**Classroom Protocol** + +.. rst-class:: build +.. container:: + + Questions to ask: + + .. rst-class:: build + + * What did you just say? + * Please explain what we just did again? + * How did that work? + * Why didn't that work for me? + * Is that a typo? + +.. nextslide:: + +**Classroom Protocol** + +.. rst-class:: build +.. container:: + + Questions **not** to ask: + + .. rst-class:: build + + * **Hypotheticals**: What happens if I do X? + * **Research**: Can Python do Y? + * **Syllabus**: Are we going to cover Z in class? + * **Marketing questions**: please just don't. + * **Performance questions**: Is Python fast enough? + * **Unpythonic**: Why doesn't Python do it some other way? + * **Show off**: Look what I just did! + +.. nextslide:: + +.. rst-class:: large center + +Introductions + + +Working with Virtualenv +======================= + +.. rst-class:: large + +| For every +| add-on package installed +| in a system Python, +| the gods kill a kitten +| +| - me + +Why Virtualenv? +--------------- + +.. rst-class:: build + +* You will need to install packages that aren't in the Python standard + Library +* You often need to install *different* versions of the *same* library for + different projects +* Conflicts arising from having the wrong version of a dependency installed can + cause long-term nightmares +* Use `virtualenv`_ ... +* **Always** + +.. _virtualenv: http://www.virtualenv.org/ + +Installing Virtualenv +--------------------- + +The best way is to install directly in your system Python (one exception to the +rule). + +.. rst-class:: build +.. container:: + + To do so you will have to have `pip`_ installed. + + Try the following command: + + .. code-block:: bash + + $ which pip + /usr/local/bin/pip + + If the ``which`` command returns no value for you, then ``pip`` is not + installed in your system. To fix this, follow `the instructions here`_. + +.. _pip: https://pip.pypa.io/en/latest/index.html +.. _the instructions here: https://pip.pypa.io/en/latest/installing.html + +.. nextslide:: + +Once you have ``pip`` installed in your system, you can use it to install +`virtualenv`_. + +.. rst-class:: build +.. container:: + + Because you are installing it into your system python, you will most likely + need ``superuser`` privileges to do so: + + .. code-block:: bash + + $ sudo pip install virtualenv + Downloading/unpacking virtualenv + Downloading virtualenv-1.11.2-py2.py3-none-any.whl (2.8MB): 2.8MB downloaded + Installing collected packages: virtualenv + Successfully installed virtualenv + Cleaning up... + +.. nextslide:: + +Great. Once that's done, you should find that you have a ``virtualenv`` +command available to you from your shell: + +.. code-block:: bash + + $ virtualenv --help + Usage: virtualenv [OPTIONS] DEST_DIR + + Options: + --version show program's version number and exit + -h, --help ... + +Using Virtuelenv +---------------- + +Creating a new virtualenv is very very simple: + +.. rst-class:: build +.. container:: + + .. code-block:: bash + + $ virtualenv [options] + + + ```` is just the name of the environment you want to create. + + It's arbitrary, so name them to be easily remembered. + +.. nextslide:: + +Let's make one for demonstration purposes: + +.. code-block:: bash + + $ virtualenv demoenv + New python executable in demoenv/bin/python + Installing setuptools, pip...done. + + +.. nextslide:: What Happened? + +When you ran that command, a couple of things took place: + +.. rst-class:: build + +* A new directory with your requested name was created +* A new Python executable was created in /bin (/Scripts on Windows) +* The new Python was cloned from your system Python (where virtualenv was + installed) +* The new Python was isolated from any libraries installed in the old Python +* Setuptools was installed so you have ``easy_install`` for this new python +* Pip was installed so you have ``pip`` for this new python + +Activation +---------- + +Every virtualenv you create contains an executable Python command. + +.. rst-class:: build +.. container:: + + If you do a quick check to see which Python executable is found by your + terminal, you'll see that it is not the one: + + .. code-block:: bash + + $ which python + /usr/bin/python + + You can execute the new Python by explicitly pointing to it: + + .. code-block:: bash + + $ ./demoenv/bin/python -V + Python 2.7.5 + +.. nextslide:: + +But that's tedious and hard to remember. + +.. rst-class:: build +.. container:: + + Instead, ``activate`` your virtualenv using the ``source`` shell command: + + .. code-block:: bash + + $ source demoenv/bin/activate + (demoenv)$ which python + /Users/cewing/demoenv/bin/python + + Notice that when a virtualenv is *active* you can see it in your command + prompt. + + So long as the virtualenv is *active* the ``python`` executable that will + be used will be the new one in your ``demoenv``. + +Installing Packages +------------------- + +Since ``pip`` is also installed, the ``pip`` that is used to install new +software will also be the one in ``demoenv``. + +.. code-block:: bash + + (demoenv)$ which pip + /Users/cewing/demoenv/bin/pip + +.. rst-class:: build +.. container:: + + This means that using these tools to install packages will install them + *into your virtual environment only* + + The are not installed into the system Python. + + Let's see this in action. + +.. nextslide:: + +We'll install a package called ``docutils`` + +.. rst-class:: build +.. container:: + + It provides tools for creating documentation using ReStructuredText + + Install it using pip (while your virtualenv is active): + + .. code-block:: bash + + (demoenv)$ pip install docutils + Downloading/unpacking docutils + Downloading docutils-0.11.tar.gz (1.6MB): 1.6MB downloaded + Running setup.py (path:/Users/cewing/demoenv/build/docutils/setup.py) egg_info for package docutils + ... + changing mode of /Users/cewing/demoenv/bin/rst2xml.py to 755 + changing mode of /Users/cewing/demoenv/bin/rstpep2html.py to 755 + Successfully installed docutils + Cleaning up... + +.. nextslide:: + +And now, when we fire up our Python interpreter, the docutils package is +available to us: + +.. code-block:: pycon + + (demoenv)$ python + Python 2.7.5 (default, Aug 25 2013, 00:04:04) + [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin + Type "help", "copyright", "credits" or "license" for more information. + >>> import docutils + >>> docutils.__path__ + ['/Users/cewing/demoenv/lib/python2.7/site-packages/docutils'] + >>> ^d + (demoenv)$ + +.. nextslide:: Side Effects + +Like some other Python libraries, the ``docutils`` package provides a number of +executable scripts when it is installed. + +.. rst-class:: build +.. container:: + + You can see these in the ``bin`` directory inside your virtualenv: + + .. code-block:: bash + + (demoenv)$ ls ./demoenv/bin + ... + python + rst2html.py + rst2latex.py + ... + + These scripts are set up to execute using the Python with which they were + built. + + Running these scripts will use the Python executable in your virtualenv, + *even if that virtualenv is not active*! + +Deactivation +------------ + +So you've got a virtual environment created and activated so you can work with +it. + +.. rst-class:: build +.. container:: + + Eventually you'll need to stop working with this ``virtualenv`` and switch + to another + + It's a good idea to keep a separate ``virtualenv`` for every project you + work on. + + When a ``virtualenv`` is active, all you have to do is use the + ``deactivate`` command: + + .. code-block:: bash + + (demoenv)$ deactivate + $ which python + /usr/bin/python + + Note that your shell prompt returns to normal, and now the executable + Python found when you check ``python`` is the system one again. + +Cleaning Up +----------- + +The final advantage that ``virtualenv`` offers you as a developer is +the ability to easily remove a batch of installed Python software from your +system. + +.. rst-class:: build +.. container:: + + Consider a situation where you installed a library that breaks your Python + (it happens) + + If you are working in your system Python, you now have to figure out what + that package installed + + You have to figure out where it is + + And you have to go clean it out manually. + + With ``virtualenv`` you simply remove the directory ``virtualenv`` created + when you started out. + +.. nextslide:: + +Let's do that with our ``demoenv``: + +.. rst-class:: build +.. container:: + + .. code-block:: bash + + $ rm -rf demoenv + + And that's it. + + The entire environment and all the packages you installed into it are now + gone. + + There are no traces left to pollute your world. + +.. nextslide:: Break Time + +Let's take a moment to rest up and absorb what we've learned. + +When we return, we'll begin talking about a particular approach to thinking +about application design: + +.. rst-class:: centered + +**Model View Controller** + +MVC Applications +================ + +.. figure:: http://upload.wikimedia.org/wikipedia/commons/4/40/MVC_passive_view.png + :align: center + :width: 50% + + By Alan Evangelista (Own work) [CC0], via Wikimedia Commons + +Separation of Concerns +---------------------- + +.. rst-class:: build +.. container:: + + In the first part of this course, you were introduced to the concept of + *Object Oriented Programming* + + OOP was `first formalized`_ in the 1970s in *Smalltalk*, invented by Alan + Kay at *Xerox PARC* + + *Smalltalk* was also the first language which utilized the + `Model View Controller`_ design pattern. + + This pattern (like all `design patterns`_) seeks to provide a way of + thinking that helps to make software design easier. + + In this case, the goal is to help clarify the high-level *separation of + concerns* in a system. + +.. _first formalized: http://en.wikipedia.org/wiki/Object-oriented_programming#History +.. _Model View Controller: http://en.wikipedia.org/wiki/Model–view–controller +.. _design patterns: http://en.wikipedia.org/wiki/Software_design_pattern + +Three Components +---------------- + +The pattern divides the elements of a system into three parts: + +.. rst-class:: build + +Model: + This component represents the *data* that comprises the system, and the + *logic* used to manipulate that data. + +View: + This component can be any *representation* of the data to the outside world: + a chart, diagram, table, user interface, etc. + + It also includes representations of the *actions* available in the system. + +Controller: + This component coordinates the Model and the View in a system. + + It accepts input from a user and channels that input into the Model. + + It accepts information about the current state of the Model and transmits + that information to the View. + +On the Web +---------- + +This pattern has proven useful for thinking about the applications we build for +the web. + +.. rst-class:: build +.. container:: + + A web browser provides a convenient container for *views* of data. + + These *views* are created by *controller* software hosted on a server. + + This *controller* software accepts input from users via *HTTP requests*, + channeling it into a *data model* usually stored in some database. + + The *controller* returns information about the state of the *data model* to + the user via *HTTP responses* + +.. nextslide:: + +This approach is so common, that it has been formalized into any number of *web +frameworks* + +.. rst-class:: build +.. container:: + + *Web frameworks* abstract away the specifics of the *HTTP request/response + cycle*, leaving simple MVC components for the developer to use. + + *Web frameworks* exist in nearly all modern languages. + + Python has scores of them. + + Over the weeks to come, we'll learn about two of them, `Pyramid`_ and + `Django`_. + +.. _Pyramid: http://www.pylonsproject.org/projects/pyramid/about +.. _Django: https://www.djangoproject.com/ + +A Word About Terminology +------------------------ + +Although the MVC pattern is a useful abstraction, there are a few differences +in how things are named in Python web frameworks + +.. rst-class:: build centered +.. container:: + + model <--> model + + controller <--> view + + view <--> template (or even HTTP response) + + .. rst-class:: left + + For more on this difference, you can `read this`_ from the Pyramid design + documentation. + +.. _read this: http://docs.pylonsproject.org/projects/pyramid/en/latest/designdefense.html#pyramid-gets-its-terminology-wrong-mvc + +Our First Application +===================== + +.. rst-class:: left + +But enough abstract blabbering. + +.. rst-class:: build left +.. container:: + + There's no better way to make concepts like these concrete than to build + something using them. + + Let's make an application! + + We're going to build a Learning Journal. + + When we're done, you'll have a live, online application you can use to keep + note of the things you are learning about Python development. + + We'll use one of our Python web framework to do this: `Pyramid`_ + +Pyramid +------- + +First published in 2010, `Pyramid`_ is a powerful, flexible web framework. + +.. rst-class:: build +.. container:: + + You can create compelling one-page applications, much like in + microframeworks like Flask + + You can also create powerful, scalable applications using the full + power of Python + + Created by the combined powers of the teams behind Pylons and Zope + + It represents the first true second-generation web framework in + existence. + +Starting the Project +-------------------- + +The first step is to prepare for the project. + +.. rst-class:: build +.. container:: + + Begin by creating a location where you'll do your work. + + I generally put all my work in a folder called ``projects`` in my home + directory: + + .. code-block:: bash + + $ cd + $ mkdir projects + $ cd projects + $ mkdir learning-journal + $ cd learning-journal + $ pwd + /Users/cewing/project/learning-journal + +.. nextslide:: Creating an Environment + +We continue our preparations by creating a virtualenv we will use for it. + +.. rst-class:: build +.. container:: + + Again, this will help us to keep our work here isolated from anything else + we do. + + Remember how to make a new virtualenv? + + .. code-block:: bash + + $ virtualenv ljenv + New python executable in ljenv/bin/python + Installing setuptools, pip...done. + + And then, how to activate it? + + .. code-block:: bash + + $ source ljenv/bin/activate + (ljenv)$ + +.. nextslide:: Installing Pyramid + +Next, we install the Pyramid web framework into our new virtualenv. + +.. rst-class:: build +.. container:: + + We can do this with the ``pip`` in our active ``ljenv``: + + .. code-block:: bash + + (ljenv)$ pip install pyramid + Collecting pyramid + Downloading pyramid-1.5.2-py2.py3-none-any.whl (545kB) + 100% |################################| 548kB 172kB/s + ... + Successfully installed PasteDeploy-1.5.2 WebOb-1.4 + pyramid-1.5.2 repoze.lru-0.6 translationstring-1.3 + venusian-1.0 zope.deprecation-4.1.1 zope.interface-4.1.2 + + Once that is complete, we are ready to create a *scaffold* for our project. + +Working with Pyramid +-------------------- + +Many web frameworks require at least a bit of *boilerplate* code to get +started. + +.. rst-class:: build +.. container:: + + Pyramid does not. + + However, our application will require a database and handling that does + require some. + + Pyramid provides a system for creating boilerplate called ``pcreate``. + + You use it to generate the skeleton for a project based on some pattern: + + .. code-block:: bash + + (ljenv)$ pcreate -s alchemy learning_journal + Creating directory /Users/cewing/projects/learning-journal/learning_journal + ... + Welcome to Pyramid. Sorry for the convenience. + =============================================================================== + + Let's take a quick look at what that did + +.. nextslide:: What You Get + +.. code-block:: bash + + (ljenv)$ tree learning_journal/ + learning_journal/ + ... + ├── development.ini + ├── learning_journal + │   ├── __init__.py + │   ├── models.py + │   ├── scripts + │   │   ├── __init__.py + │   │   └── initializedb.py + │   ├── static + ... + │   ├── templates + │   │   └── mytemplate.pt + │   ├── tests.py + │   └── views.py + ├── production.ini + └── setup.py + +.. nextslide:: Saving Your Work + +You've now created something worth saving. + +.. rst-class:: build +.. container:: + + Start by initializing a new git repository in the `learning_journal` folder + you just created: + + .. code-block:: bash + + (ljenv)$ cd learning_journal + (ljenv)$ git init + Initialized empty Git repository in + /Users/cewing/projects/learning-journal/learning_journal/.git/ + +.. nextslide:: Saving Your Work + +Check ``git status`` to see where things stand: + +.. code-block:: bash + + (ljenv)$ git status + On branch master + + Initial commit + + Untracked files: + (use "git add ..." to include in what will be committed) + + CHANGES.txt + MANIFEST.in + README.txt + development.ini + learning_journal/ + production.ini + setup.py + +.. nextslide:: Add the Project Code + +Add your work to this new repository: + +.. code-block:: bash + + (ljenv)$ git add . + (ljenv)$ git status + ... + Changes to be committed: + (use "git rm --cached ..." to unstage) + + new file: CHANGES.txt + new file: MANIFEST.in + ... + new file: production.ini + new file: setup.py + +.. nextslide:: Ignore Irrelevant Files + +Python creates ``.pyc`` files when it executes your code. + +.. rst-class:: build +.. container:: + + There are many other files you don't want or need in your repository + + You can ignore this in ``git`` with the ``.gitignore`` file. + + Create one now, in this same directory, and add the following basic lines:: + + *.pyc + .DS_Store + + Finally, add this new file to your repository, too. + +.. nextslide:: Make It Permanent + +To preserve all these changes, you'll need to commit what you've done: + +.. code-block:: bash + + (ljenv)$ git commit -m "initial commit of the Pyramid learning journal" + +.. rst-class:: build +.. container:: + + This will make a first commit here in this local repository. + + For homework, you'll put this into GitHub, but this is enough for now. + + Let's move on to learning about what we've built so far. + +.. nextslide:: Project Structure + +When you ran the ``pcreate`` command, a new folder was created: +``learning_journal``. + +.. rst-class:: build +.. container:: + + This folder contains your *project*. + + At the top level, you have *configuration* (.ini files) + + You also have a file called ``setup.py`` + + This file turns this collection of Python code and configuration into an + *installable Python distribution* + + Let's take a moment to look over the code in that file + +.. nextslide:: ``setup.py`` + +.. code-block:: python + + from setuptools import setup, find_packages + ... + requires = [ + 'pyramid', + ... # packages on which this software depends (dependencies) + ] + setup(name='learning_journal', + version='0.0', + ... # package metadata (used by PyPI) + install_requires=requires, + # Entry points are ways that we can run our code once installed + entry_points="""\ + [paste.app_factory] + main = learning_journal:main + [console_scripts] + initialize_learning_journal_db = learning_journal.scripts.initializedb:main + """, + ) + +Pyramid is Python +----------------- + +In the ``__init__.py`` file of your app *package*, you'll find a ``main`` +function: + +.. code-block:: python + + def main(global_config, **settings): + """ This function returns a Pyramid WSGI application. + """ + engine = engine_from_config(settings, 'sqlalchemy.') + DBSession.configure(bind=engine) + Base.metadata.bind = engine + config = Configurator(settings=settings) + config.include('pyramid_chameleon') + config.add_static_view('static', 'static', cache_max_age=3600) + config.add_route('home', '/') + config.scan() + return config.make_wsgi_app() + +Let's take a closer look at this, line by line. + +.. nextslide:: System Configuration + +.. code-block:: python + + def main(global_config, **settings): + +Configuration is passed in to an application after being read from the +``.ini`` file we saw above. + +.. rst-class:: build +.. container:: + + These files contain sections (``[app:main]``) containing ``name = value`` + pairs of *configuration data* + + This data is parsed with the Python + `ConfigParser `_ module. + + The result is a dict of values: + + .. code-block:: python + + {'app:main': {'pyramid.reload_templates': True, ...}, ...} + + The default section of the file is passed in as ``global_config``, the + section for *this app* as ``settings``. + +.. nextslide:: Database Configuration + +.. code-block:: python + + from sqlalchemy import engine_from_config + from .models import DBSession, Base + ... + engine = engine_from_config(settings, 'sqlalchemy.') + DBSession.configure(bind=engine) + Base.metadata.bind = engine + +We will use a package called ``SQLAlchemy`` to interact with our database. + +.. rst-class:: build +.. container:: + + Our connection is set up using settings read from the ``.ini`` file. + + Can you find the settings for the database? + + The ``DBSession`` ensures that each *database transaction* is tied to HTTP + requests. + + The ``Base`` provides a parent class that will hook our *models* to the + database. + +.. nextslide:: App Configuration + +.. code-block:: python + + config = Configurator(settings=settings) + config.include('pyramid_chameleon') + config.add_static_view('static', 'static', cache_max_age=3600) + config.add_route('home', '/') + config.scan() + +Pyramid controlls application-level configuration using a ``Configurator`` class. + +.. rst-class:: build +.. container:: + + It uses app-specific settings passed in from the ``.ini`` file + + We can also ``include`` configuration from other add-on packages + + Additionally, we can configure *routes* and *views* needed to connect our + application to the outside world here (more on this next week). + + Finally, the ``Configurator`` instance performs a ``scan`` to ensure there + are no problems with what we've created. + +.. nextslide:: A Last Word on Configuration + +We will return to the configuration of our application repeatedly over the next +sessions. + +.. rst-class:: build +.. container:: + + Pyramid configuration is powerful and flexible. + + We'll use a few of its features + + But there's a lot more you could (and should) learn. + + Read about it in the `configuration chapter`_ of the Pyramid documentation. + +.. _configuration chapter: http://docs.pylonsproject.org/projects/pyramid/en/latest/api/config.html + +.. nextslide:: Break Time + +Let's take a moment to rest up and absorb what we've learned. + +When we return, we'll see how we can create *models* that will embody the data +for our Learning Journal application. + +.. rst-class:: centered + +**Pyramid Models** + + +Models in Pyramid +================= + +.. rst-class:: left +.. container:: + + The central component of MVC, the model, captures the behavior of the + application in terms of its problem domain, independent of the user + interface. The model directly manages the data, logic and rules of the + application + + -- from the Wikipedia article on `Model-view-controller`_ + +.. _Model-view-controller: http://en.wikipedia.org/wiki/Model–view–controller + +Models and ORMs +--------------- + +In an MVC application, we define the *problem domain* by creating one or more +*Models*. + +.. rst-class:: build +.. container:: + + These capture relevant details about the information we want to preserve + and how we want to interact with it. + + In Python-based MVC applications, these *Models* are implemented as Python + classes. + + The individual bits of data we want to know about are *attributes* of our + classes. + + The actions we want to take using that data are *methods* of our classes. + + Together, we can refer to this as the *API* of our system. + +.. nextslide:: Persistence + +It's all well and good to have a set of Python classes that represent your +system. + +.. rst-class:: build +.. container:: + + But what happens when you want to *save* information. + + What happens to a instance of a Python class when you quit the interprer? + + When your script stops running? + + The code in a website runs when an HTTP request comes in from a client. + + It stops running when an HTTP response goes back out to the client. + + So what happens to the data in your system in-between these moments? + + The data must be *persisted* + +.. nextslide:: Alternatives + +In the last class from part one of this series, you explored a number of +alternatives for persistence + +.. rst-class:: build + +* Python Literals +* Pickle/Shelf +* Interchange Files (CSV, XML, INI) +* Object Stores (ZODB, Durus) +* NoSQL Databases (MongoDB, CouchDB) +* SQL Databases (sqlite, MySQL, PostgreSQL, Oracle, SQLServer) + +.. rst-class:: build +.. container:: + + Any of these might be useful for certain types of applications. + + On the web, you tend to see two used the most: + + .. rst-class:: build + + * NoSQL + * SQL + +.. nextslide:: Choosing One + +How do you choose one over the other? + +.. rst-class:: build +.. container:: + + In general, the telling factor is going to be how you intend to use your + data. + + In systems where the dominant feature is viewing/interacting with + individual objects, a NoSQL storage solution might be the best way to go. + + In systems with objects that are related to eachother, SQL-based Relational + Databases are a better choice. + + Our system is more like this latter type (trust me on that one for now). + + We'll be using SQL (sqlite to start with). + + +.. nextslide:: Objects and Tables + +So we have a system where our data is captured in Python *objects* + +.. rst-class:: build +.. container:: + + And a storage system where our data must be rendered as database *tables* + + Python provides a specification for interacting directly with databases: + `dbapi2`_ + + And there are multiple Python packages that implement this specification + for various databases: + + .. rst-class:: build + + * sqlite3 + * python-mysql + * psycopg2 + * ... + + With these, you can write SQL to save your Python objects into your + database. + +.. _dbapi2: https://www.python.org/dev/peps/pep-0249/ + +.. nextslide:: ORMs + +But that's a pain. + +.. rst-class:: build +.. container:: + + SQL, while not impossible, is yet another language to learn. + + And there is a viable alternative in using an *Object Relational Manager* + (ORM) + + An ORM provides a layer of *abstraction* between you and SQL + + You instantiate Python objects and set attributes on them + + The ORM handles converting data from these objects into SQL statements (and + back) + +SQLAlchemy +---------- + +In our project we will be using the `SQLAlchemy`_ ORM. + +.. rst-class:: build +.. container:: + + You can find SQLAlchemy among the packages in ``requires`` in ``setup.py`` + in our new ``learning_journal`` package. + + However, we don't yet have that code installed. + + To do so, we will need to "install" our own package + + Make sure your ``ljenv`` virtualenv is active and then type the following: + + .. code-block:: bash + + (ljenv)$ python setup.py develop + running develop + running egg_info + creating learning_journal.egg-info + ... + Finished processing dependencies for learning-journal==0.0 + +.. nextslide:: + +Once that is complete, all the *dependencies* listed in our ``setup.py`` will +be installed. + +.. rst-class:: build +.. container:: + + You can also install the package using ``python setup.py install`` + + But using ``develop`` allows us to continue developing our package without + needing to re-install it every time we change something. + + It is very similar to using the ``-e`` option to ``pip`` + + Now, we'll only need to re-run this command if we change ``setup.py`` + itself. + +.. nextslide:: + +We also need to adjust our ``.gitignore`` file: + +.. rst-class:: build +.. code-block:: bash + + (ljenv)$ git status + ... + Untracked files: + (use "git add ..." to include in what will be committed) + + learning_journal.egg-info/ + +.. rst-class:: build +.. container:: + + The ``egg-info`` directory that was just created is an artifact of + installing a Python egg. + + It should never be committed to a repository. + + Let's add ``*.egg-info`` to our ``.gitignore`` file and then commit that + change + + Remember how? + +.. nextslide:: Our First Model + +Our project skeleton contains up a first, basic model created for us: + +.. code-block:: python + + # in models.py + Base = declarative_base() + + class MyModel(Base): + __tablename__ = 'models' + id = Column(Integer, primary_key=True) + name = Column(Text) + value = Column(Integer) + Index('my_index', MyModel.name, unique=True, mysql_length=255) + +.. _SQLAlchemy: http://docs.sqlalchemy.org/en/rel_0_9/ + +.. rst-class:: build +.. container:: + + Our class inherits from ``Base`` + + We ran into ``Base`` earlier when discussing configuration. + + We were binding it to the database we wanted to use (the ``engine``) + +.. nextslide:: ``Base`` + +Any class we create that inherits from this ``Base`` becomes a *model* + +.. rst-class:: build +.. container:: + + It will be connected through the ORM to a table in our database. + + The name of the table is determined by the ``__tablename__`` special + attribute. + + Other aspects of table configuration can also be controlled through special + attributes + + Instances of the class, once saved, will become rows in the table. + + Attributes of the model that are instances of ``Column`` will become + columns in the table. + + You can learn much more in the `Declarative`_ chapter of the SQLAlchemy docs + +.. _Declarative: http://docs.sqlalchemy.org/en/rel_0_9/orm/extensions/declarative/ + +.. nextslide:: Columns + +Each attribute of your model that will be persisted must be an instance of +`Column`_. + +.. rst-class:: build +.. container:: + + Each instance requires *at least* a specific `data type`_ (such as + Integer). + + Additionally, you can control other aspects of the column such as it being + a primary key. + + In the *declarative* style we are using, the name of the column in the + database will default to the attribute name you assigned. + + If you wish, you may provide a name specifically. It must be the first + argument and must be a string. + +.. _Column: http://docs.sqlalchemy.org/en/rel_0_9/core/metadata.html#sqlalchemy.schema.Column +.. _data type: http://docs.sqlalchemy.org/en/rel_0_9/core/types.html + +Creating The Database +--------------------- + +We have a *model* which allows us to persist Python objects to an SQL database. + +.. rst-class:: build +.. container:: + + But we're still missing one ingredient here. + + We need to create our database, or there will be nowhere for our data to + go. + + Luckily, our ``pcreate`` scaffold also gave us a convenient way to handle + this: + + .. code-block:: python + + # in setup.py + entry_points="""\ + [paste.app_factory] + main = learning_journal:main + [console_scripts] + initialize_learning_journal_db = learning_journal.scripts.initializedb:main + """, + + The ``console_script`` set up as an entry point will help us. + +.. nextslide:: ``initialize_learning_journal_db`` + +Let's look at that code for a moment. + +.. code-block:: python + + # in scripts/intitalizedb.py + from ..models import DBSession, MyModel, Base + # ... + def main(argv=sys.argv): + if len(argv) < 2: + usage(argv) + config_uri = argv[1] + options = parse_vars(argv[2:]) + setup_logging(config_uri) + settings = get_appsettings(config_uri, options=options) + engine = engine_from_config(settings, 'sqlalchemy.') + DBSession.configure(bind=engine) + Base.metadata.create_all(engine) + with transaction.manager: + model = MyModel(name='one', value=1) + DBSession.add(model) + +.. nextslide:: Console Scripts + +By connecting this function as a ``console script``, our Python package makes +this command available to us. + +.. rst-class:: build +.. container:: + + When we exectute ``initialize_learning_journal_db`` at the command line, we + will be running this function. + + Let's try it out. + + We'll need to provide a configuration file name, let's use + ``development.ini``: + + .. code-block:: bash + + (ljenv)$ initialize_learning_journal_db development.ini + 2015-01-05 18:59:55,426 INFO [sqlalchemy.engine.base.Engine][MainThread] SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1 + ... + 2015-01-05 18:59:55,434 INFO [sqlalchemy.engine.base.Engine][MainThread] COMMIT + + The ``[loggers]`` configuration in our ``.ini`` file sends a stream of + INFO-level logging to sys.stdout as the console script runs. + +.. nextslide:: A Bit More Cleanup + +So what was the outcome of running that script? + +.. rst-class:: build +.. container:: + + .. code-block:: bash + + (ljenv)$ ls + ... + learning_journal.sqlite + ... + + We've now created an sqlite database. + + You'll need to add ``*.sqlite`` to ``.gitignore`` so you don't add that + file to your repository. + + Once you've done so, commit the change to your repository + +Interacting with SQLA Models +---------------------------- + +It's pretty easy to play with your models from in an interpreter. + +.. rst-class:: build +.. container:: + + Let's try that out and see what we have. Start up an interpreter: + + .. code-block:: pycon + + >>> config = 'development.ini' + >>> from pyramid.paster import get_appsettings + >>> settings = get_appsettings(config) + >>> from sqlalchemy import engine_from_config + >>> engine = engine_from_config(settings, 'sqlalchemy.') + >>> from sqlalchemy.orm import sessionmaker + >>> Session = sessionmaker(bind=engine) + >>> session = Session() + >>> from learning_journal.models MyModel + >>> session.query(MyModel).all() + [] + + We are basically stealing the important bits from ``initializedb.py`` + +.. nextslide:: Basic Interactions + +Any interaction with the database requires a ``session``. + +.. rst-class:: build +.. container:: + + This object represents the connection to the database. + + All database queries are phrased as methods of the session. + + .. container:: + + .. code-block:: pycon + + >>> query = session.query(MyModel).all() + >>> type(query) + + + The ``query`` method of the session object returns a ``Query`` object + + Arguments to the ``query`` method can be a *model* class or *columns* from + a model class. + +.. nextslide:: Queries are Iterators + +You can iterate over a query object. The result depends on the args you +passed. + +.. rst-class:: build +.. container:: + + .. code-block:: pycon + + >>> q1 = session.query(MyModel) + >>> for row in q1: + ... print row + ... type(row) + ... + + + + .. code-block:: pycon + + >>> q2 = session.query(MyModel.name, MyModel.id, MyModel.value) + >>> for name, id, val in q2: + ... print name, type(name) + ... print id, type(id) + ... print val, type(val) + ... + one + 1 + 1 + +.. nextslide:: Queries have SQL + +You can view the SQL that your query will use: + +.. rst-class:: build +.. container:: + + .. code-block:: pycon + + >>> str(q1) + 'SELECT models.id AS models_id, models.name AS models_name, models.value AS models_value \nFROM models' + >>> str(q2) + 'SELECT models.name AS models_name, models.id AS models_id, models.value AS models_value \nFROM models' + + You can use this to check that the query the ORM is constructing looks like + you expect. + + It can be helpful in debugging. + +.. nextslide:: Methods of the Query Object + +The methods of the ``Query`` object fall into two rough categories + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + 1. Methods that return a new ``Query`` object + 2. Methods that return *scalar* values or *model* instances + + Let's start by looking quickly at a few methods from the second category + +.. nextslide:: ``query.get()`` + +A good example of this category of methods is ``get``, which returns one +instance only. + +.. rst-class:: build +.. container:: + + It takes a primary key as an argument: + + .. code-block:: pycon + + >>> session.query(MyModel).get(1) + + >>> session.query(MyModel).get(10) + >>> + + If no item with that primary key is present, then the method returns + ``None`` + +.. nextslide:: ``query.all()`` + +Another example is one we've already seen. + +.. rst-class:: build +.. container:: + + ``query.all()`` returns a list of all rows returned by the database: + + .. code-block:: pycon + + >>> q1.all() + [] + >>> type(q1.all()) + + + ``query.count()`` returns the number of rows that would have been returned + by the query: + + .. code-block:: pycon + + >>> q1.count() + 1 + +.. nextslide:: Creating New Objects + +Before getting into the other category, let's learn how to create new objects. + +.. rst-class:: build +.. container:: + + .. container:: + + We can create new instances of our *model* just like normal Python + objects: + + .. code-block:: pycon + + >>> new_model = MyModel(name='fred', value=3) + >>> new_model + + + .. container:: + + In this state, the instance is *ephemeral*, our ``session`` knows + nothing about it: + + .. code-block:: pycon + + >>> session.new + IdentitySet([]) + +.. nextslide:: Adding Objects to the Session + +For the database to know about our new object, we must ``add`` it to the +session: + +.. rst-class:: build +.. container:: + + .. code-block:: pycon + + >>> session.add(new_model) + >>> session.new + IdentitySet([]) + + We can even bulk-add new objects: + + .. code-block:: pycon + + >>> new = [] + >>> for name, val in [('bob', 34), ('tom', 13)]: + ... new.append(MyModel(name=name, value=val)) + ... + >>> session.add_all(new) + >>> session.new + IdentitySet([, + , + ]) + +.. nextslide:: Committing Changes + +Up until now, the changes you've made are not permanent. + +.. rst-class:: build +.. container:: + + In order for these new objects to be saved to the database, the session + must be ``committed``: + + .. code-block:: pycon + + >>> other_session = Session() + >>> other_session.query(MyModel).count() + 1 + >>> session.commit() + >>> other_session.query(MyModel).count() + + When you are using a ``scoped_session`` in Pyramid, this action is + automatically handled for you. + + The session that is bound to a particular HTTP request is committed when a + response is sent back. + +.. nextslide:: Altering Objects + +You can edit objects that are already part of a session, or that are fetched by +a query. + +.. rst-class:: build +.. container:: + + Simply change the values of a persisted attribute, the session will know + it's been updated: + + .. code-block:: pycon + + >>> new_model + + >>> new_model.name + u'fred' + >>> new_model.name = 'larry' + >>> session.dirty + IdentitySet([]) + + Commit the session to persist the changes: + + .. code-block:: pycon + + >>> session.commit() + +.. nextslide:: Methods Returning Queries + +Returning to queries, the second category is typified by the ``filter`` method + +.. rst-class:: build +.. container:: + + This method allows you to reduce the number of results, based on criteria: + + .. code-block:: pycon + + >>> for obj in session.query(MyModel).filter(MyModel.value < 20): + ... print obj.name, obj.value + ... + larry 1 + fred 3 + tom 13 + +.. nextslide:: ``order_by`` + +Another typical method in this category is ``order_by``: + +.. rst-class:: build +.. container:: + + .. code-block:: pycon + + >>> for obj in session.query(MyModel).order_by(MyModel.value): + ... print obj.name, obj.value + ... + larry 1 + fred 3 + tom 13 + bob 34 + + .. code-block:: pycon + + >>> for obj in session.query(MyModel).order_by(MyModel.name): + ... print obj.name, obj.value + ... + bob 34 + fred 3 + larry 1 + tom 13 + +.. nextslide:: Method Chaining + +Since methods in this category return ``Query`` objects, they can be safely +*chained* to build more complex queries: + +.. rst-class:: build +.. container:: + + .. code-block:: pycon + + >>> q1 = session.query(MyModel).filter(MyModel.value < 20) + >>> q1 = q1.order_by(MyModel.name) + >>> for obj in q1: + ... print obj.name, obj.value + ... + fred 3 + larry 1 + tom 13 + + Note that you can do this inline as well + (``s.query(Model).filter().order_by()``) + + Also note that when using chained queries like this, no query is actually + sent to the database until you require a result. + +Homework +======== + +Okay, that's enough for the moment. + +.. rst-class:: build +.. container:: + + You've learned quite a bit about how *models* work in SQLAlchemy + + It's time to put that knowledge to good use. + + For the first part of your assignment this week you will begin to define + the data model for our learning journal application. + + I'll provide a specification, you define the model required to do the job. + + I'll also ask you to define a few methods to complete the first part of our + API. + +.. nextslide:: The Model + +Our model will be called an ``Entry``. Here's what you need to know: + +* It should be stored in a database table called ``entries`` +* It should have a primary key field called ``id`` +* It should have a ``title`` field which accepts unicode text up to 255 characters in length +* The ``title`` should be unique and it should be impossible to save an + ``entry`` without a ``title``. +* It should have a ``body`` field which accepts unicode text of any length + (including none) +* It should have a ``created`` field which stores the date and time the object + was created. +* It should have an ``edited`` field which stores the date and time the object + was last edited. +* Both the ``created`` and ``edited`` field should default to ``now`` if not + provided when a new instance is constructed. +* The ``entry`` class should support a classmethod ``all`` that returns all the + entries in the database, ordered so that the most recent entry is first. +* The ``entry`` class should support a classmethod ``by_id`` that returns a + single entry, given an ``id``. + +.. nextslide:: Words of Advice + +Use the documentation linked in this presentation to assist you. SQLAlchemy +has fantastic documentation, but it can be a bit overwhelming. Everything you +require for this assignment is on one or more of the pages linked above. + +As you define this new model for our application, make frequent commits to your +github repository. Remember to write meaningful commit messages. + +Don't be afraid to start up a Python interpreter and play with your model. Try +things out. Learn how this all works by making mistakes. + +Errors at the SQL level can sometimes leave your session unusable. To restore +it, use the ``session.rollback()`` method. You'll lose uncommitted changes, +but you'll gain a session that can be used again. + +.. nextslide:: Submitting Your Work + +I want to be able to review your code (and you want to be able to share it). + +To submit this assignment, you'll need to add this learning_journal repository +to GitHub. + +On the GitHub website you can create a new repository. Set it up to be +completely empty. Name it ``learning_journal`` and give it any description you +like. + +When you've created an empty repository in GitHub, you should see a set of +directions for connecting it to a repository that you've already built. Follow +those instructions to connect your emtpy GitHub repository as the ``origin`` +remote to your ``learning_journal`` repository on your machine. + +Finally, push your ``master`` branch to your new ``origin`` remote on GitHub. + +When you are done, send me an email with the URL for your new repository. + +.. nextslide:: + +**Our work next week will assume that you have completed this assignment** + +Do not delay working on this until the last moment. + +Do not skip this assignment. + +Do ask questions frequently via email. + +See you next week! + diff --git a/html/_sources/readings.txt b/html/_sources/readings.txt new file mode 100644 index 00000000..52d1d782 --- /dev/null +++ b/html/_sources/readings.txt @@ -0,0 +1,250 @@ +.. slideconf:: + :autoslides: False + +Course Readings +=============== + +.. slide:: Course Readings + :level: 1 + + This document contains no slides. + +Web programming is a deep pool. There's more to cover than a 10-session course +could ever hope to accomplish. To that end, I've compiled a list of related +readings that will support the information you'll learn in class. Think of +this as supplemental materials. You can read it at your leisure to help +increase both the depth and breadth of your knowledge. + +The readings are organized like the class, by session and topic. + + +Session 1 - MVC Applications and Data Persistence +------------------------------------------------- + +As we'll be learning about Pyramid over the first three sessions, please take +some time to read and digest some of the `copious documentation`_ for thie +powerful framework. + +In particular, to cover the topics we address in this session you'll want to +read the following: + +* `Pyramid Configuration + `_ +* `Defending Pyramid's Design + `_ + +.. _copious documentation: http://docs.pylonsproject.org/projects/pyramid/en/latest/index.html + +You may also wish to read a bit about `SQLAlchemy`_. In particular you may +want to work through the `Object Relational Tutorial`_ to get a more complete +understanding of how the SQLAlchemy ORM works. + +.. _SQLAlchemy: http://docs.sqlalchemy.org/en/rel_0_9/ +.. _Object Relational Tutorial: http://docs.sqlalchemy.org/en/rel_0_9/orm/tutorial.html + + +Session 2 - Pyramid Views, Renderers and Forms +---------------------------------------------- + +Sesstion 3 - Pyramid Authentication and Deployment +-------------------------------------------------- + +Session 4 - TCP/IP and Sockets +------------------------------ + +* `Wikipedia - Internet Protocol Suite + `_ +* `Kessler - TCP/IP (sections 1 and 2) + `_ +* `Wikipedia - Domain Name System + `_ +* `Wikipedia - Internet Sockets + `_ +* `Wikipedia - Berkeley socket interface + `_ + +If you want to know a bit more about the lower layers of the stack, you might +find the following readings enlightening: + +**Transport Layer** + +* `Wikipedia - Universal Datagram Protocol (UDP) + `_ +* `Wikipedia - Transmission Control Protocol (TCP) + `_ + +**Internet Layer** + +* `Wikipedia - Internet Protocol (IP) + `_ +* `Wikipedia - IPv4 Packet Structure + `_ +* `Wikipedia - IPv6 Packet Structure + `_ + +**Link Layer** + +* `Wikipedia - Link Layer Protocols + `_ + +In addition, you may find it interesting to take a look at ZeroMQ, a +next-generation implementation of the socket concept built with parallel and +networked computing in mind: + +* `ZeroMQ Guide, Chapter 1 `_ + + +Session 5 - Web Protocols +------------------------- + +* `Python Standard Library Internet Protocols + `_ +* An introduction to the HTTP protocol: `HTTP Made Really Easy + `_ + +Python offers a number of external libraries that offer extended support for +covered web protocols, or support for protocols not covered in the Standard +Library: + +* httplib2_ - A comprehensive HTTP client library that supports many features + left out of other HTTP libraries. +* requests_ - "... an Apache2 Licensed HTTP library, written in Python, for + human beings." +* paramiko_ - "a module for python 2.5 or greater that implements the SSH2 + protocol for secure (encrypted and authenticated) connections to remote + machines" + +.. _httplib2: http://code.google.com/p/httplib2/ +.. _requests: http://docs.python-requests.org/en/latest/ +.. _paramiko: http://docs.paramiko.org/ + +For a historical perspective on how protocols can change (as well as how they +remain unchanged) over time, skim these specifications for HTTP and SMTP: + +* `HTTP/0.9 `_ +* `HTTP - as defined in 1992 `_ +* `Hypertext Transfer Protocol -- HTTP/1.0 + `_ +* `Hypertext Transfer Protocol -- HTTP/1.1 + `_ + +* `RFC 821 - SMTP (initial) `_ +* `RFC 5321 - SMTP (latest) `_ + + +Session 6 - APIs and Mashups +---------------------------- + +* `Introduction to HTML (from the Mozilla Developer Network) + `_ +* `Wikipedia's take on 'Web Services' + `_ +* `xmlrpc overview `_ +* `xmlrpc spec (short) `_ +* `the SOAP specification `_ +* `json overview and spec (short) `_ +* `How I Explained REST to My Wife (Tomayko 2004) + `_ +* `A Brief Introduction to REST (Tilkov 2007) + `_ +* `Wikipedia on REST + `_ +* `Original REST disertation + `_ +* `Why HATEOAS - *a simple case study on the often ignored REST constraint* + `_ + +Python offers a number of solid external libraries to support Web Services, +both from the side of production and consumption: + +* BeautifulSoup_ - "You didn't write that awful page. You're just trying to + get some data out of it. Right now, you don't really care what HTML is + supposed to look like. Neither does this parser." +* requests_ - HTTP for humans +* httplib2_ - A comprehensive HTTP client library that supports many features + left out of other HTTP libraries. +* rpclib_ - a simple, easily extendible soap library that provides several + useful tools for creating, publishing and consuming soap web services +* Suds_ - a lightweight SOAP python client for consuming Web Services. +* restkit_ - an HTTP resource kit for Python. It allows you to easily access + to HTTP resource and build objects around it. + +.. _BeautifulSoup: http://www.crummy.com/software/BeautifulSoup/ +.. _requests: http://docs.python-requests.org/en/latest/ +.. _httplib2: http://code.google.com/p/httplib2/ +.. _rpclib: https://github.com/arskom/rpclib +.. _Suds: https://fedorahosted.org/suds/ +.. _restkit: https://github.com/benoitc/restkit/ + + +Session 7 - CGI and WSGI +------------------------ + +* `CGI tutorial`_ - Read the following sections: Hello World, Debugging, Form. + Other sections optional. Follow along using CGIHTTPServer. +* `WSGI tutorial`_ - Follow along using wsgiref. +* `CGI module`_ - utilities for CGI scripts, mostly form and query string + parsing +* `Parse URLS into components + `_ +* `CGIHTTPServer`_ - python -m CGIHTTPServer +* `WSGI Utilities and Reference implementation + `_ +* `WSGI 1.0 specification `_ +* `WSGI 1.0.1 (Python 3 support) `_ +* `test WSGI server, like cgi.test() + `_ + +.. _CGI tutorial: http://webpython.codepoint.net/cgi_tutorial +.. _WSGI tutorial: http://webpython.codepoint.net/wsgi_tutorial +.. _CGI module: http://docs.python.org/release/2.6.5/library/cgi.html +.. _CGIHTTPServer: http://docs.python.org/release/2.6.5/library/cgihttpserver.html + +For alternative introductions to WSGI, try these two sources. They are a bit +more minimal and may be easier to comprehend off the bat. + +* `Getting Started with WSGI`_ - by Armin Ronacher (really solid and quick!) +* `very minimal introduction to WSGI + `_ + +.. _Getting Started with WSGI: http://lucumr.pocoo.org/2007/5/21/getting-started-with-wsgi/ + + +Sessions 8, 9, & 10 - Django +---------------------------- + +Though it's way too much to read in any one sitting (or even in 10 or 20), the +Django documentation is excellent and thorough. As a start, take a look at +these sections: + +* `Django at a Glance + `_ - introduction to + the concepts and execution of Django + +* `Quick Install Guide + `_ - lightweight + instructions on installing Django. Use Python 2.7. + +* `Django Tutorial `_ + - The tutorial covers many of the same concepts we will in class. Go over it + to re-enforce the lessons you learn + +* `Using Django `_ - far more + in-depth information about core topics in Django. In particular, the + installation instructions here can be helpful when you run into trouble. + +Bookmark the `Django Documentation homepage +`_. It really is "everything you need +to know about Django" + +When you have some time, read `Django Design Philosophies +`_ - for some +well-considered words on why Django is the way it is. + +Conversely, for some well-considered criticisms of Django and the way it is, +read this in-depth comparison of SQLAlchemy and the Django ORM by the creator +of Flask: `SQLAlchemy and You `_ + +Or consider viewing `this video `_ +of a talk given at DjangoCon 2012 by Chris McDonough, one of the driving +forces behind the Pyramid framework. diff --git a/html/_static/admin_index.png b/html/_static/admin_index.png new file mode 100644 index 0000000000000000000000000000000000000000..ae7a19f986880cac0b47c2ea4cb48a722851c260 GIT binary patch literal 27949 zcma&Nb97|e_68c;X2(V)>DabyJ006e$F^wXRj6>dVs|oUM|Q|>rjuf zlm=ozOVgV;B+vU1#w3DjJ%X;v41pb z`f}Z%^lZpTlQbfltiln5OdX5JCR?XMn7ZwwRYyRhwx#YzE* z?UQANX6~#9Ez-zot)YRdy8L;^}`!{-6weX51T2s7H7H`gH$YxVeH)y zjmT|7Rf9!CNrr_~qf}LC%mY?ar0@REKZ^_(>WbAVD*0TXS&=iM=mu5wWAwFZQ|dsM z4bHgm5Jq~jckt|dTCud5Y*?znS`e2aJN!-u;J3-I-8!i^(Jp@?_Bmb|dJ%QQ_~Q9~ z+lnC=?xBc<)&#TqiAa=8Ncw|R83_mK5b8Y;xu03Vzf{hNI2g%&P}`8IE_zv@Qv#1% zHUUi{m=sfylq#*!Us=MEScja4yo)GdjMG@m0ZW5lSFV~ghft3UF`iF8k&+xuP7+T< za7C6wvW?%J-(9Fk5x&%BUcEfEJxf!rOW0e|8z7eOJ>@oKcdRO*BF-x5G{uulE^#Tv zHARm;heD6YSMsCytrbL}kH1gJzo1q%PjtJnpC?E{Bt1XLFw`*JFw8Juhh<2CtTWy} zz6C|DjQ_ZHmaK>fM{usleYUkxrjc{iWR(G5jIHo>F5!6Sj^L>44%&pwL~EaNA8#LL zzhPVvqMt$k>ANC!QDj17M`X+`^FiCx?$jDmLBux-do5?ZF`tU>x^SZq#fae$Bh9MP3`0B@r(XH7299Jin=| z-#*ni1!r|&PR?Ax(lL@>yRM;8DY}@;F~B|QRp6fSOasdkp&pTiv4NpSdrqrFcS=j3 zL8Sq%ZrylN`!cXPm~N$GxogxgS-f%3R8>Z|<li+6XF)qh48rSgi01JnCg*i`$ zwH?Ojmw5xggG9j}Rb?7o^J-D&Vv+~~hN`okc7$+7nl30>( zh%*JN8=6w17N=Iz68~s;X?a<~%gGzY8^w#-?b2Q04R|tm2YGjS*|=T0I(%7rl>=i3 ztAsv+DFhP*Q-$P(Wr9WlcLp2i1MchiNdTDDBh{YA01atY#wW`WZ|e{sa3r)91r zKXY$Yar1F=1*0<*5f&Qk5RVz19Tkg+!jQsn6&({B5?K(F5%CmB5s^w!r`2fK6OGi2 zBrN8^AizcUBz18pdz{^n3fVo|f!V#F|E`_faJK5uv|sjXsybG$Ps5)28!iF<7Sd-J zYJb_jboHHHo9jN`8xP;>zXmuwS`Dfy! zDIGOTJ5r-Rr0>NeNi)a-G+-Mn>o?8BOmfB*CXf&A_R{xke&LVZj=lP@n6kJ!n{~T< z1i$sMTv#Dg1ua%h!g5-*=zJSQA={uU!2S{S{?`yJZu;Ij@kbP}{9<-f(#^ zEZ8Qfu-!#BsfF-k=m+|b^9|F6D$BJLV%?d0!(Th$J91>}@uyoF-fGVq6AyvsT}2N? zudaVwpj_8Cj@xh5(+o9qSEj4~=v3`b+~nW1bf}$ms~Tw8>mypk7{@d+mDYDj)>w)y zl$;cv_~XQ+A9S5~ww!0Jj;t;9Y+3ux0Y`xjLGpe>!|U`NeU!JV60jaJSl_N3m^#fr zY40)f)$1!WbKcNAFkWAAF+M^b1&qHT5&A@y`b$0 zjGc(%dS~Q`;4&MId&NE6yZo5qJ?Ei$S~FZTZ*hGwthtcY!c*FF>)3BD3x5)yjxXcW z>n`#kExlpfOlm4_5A6O30DP)!ibk|i^hB&mY%20Oa>JwUZs_V)WXjxbP!H8d z^JCIXMUIc_YnPef*x;4b%xM~*mN3boNheC|Eal+WTxs#I}Cjj8; z>PqkWo!-{L48X|2!2w`k0x&Vrebu0IbhmLbaHF$vB>AtBzx4>4I2t)v*g09)+7SMw z*TB%$*@=gk_^*ckdHvT;CkxYmTe5NdKexUd1pM_2fRUa7@Q>~6^Sgy-Mf9eQhBMMX$5e^dMf91Z!{a?cP&m)6~_(jo5Tx69y z+Fzi7)xrOj1+amz)M1i@8$kgh;RrDk{*T&wVE=Tes5WcOaL~YEJREW0|4|zJrF1A3 z$bu@`Al}``Qq7DWk?L=2{xa%q4QhT;w_KwXL~xE=dUHa+`w-&O;kn1#g`e-gHvd(N zn*^lkJBF;x$_LR+ix3(NSy7EDQ9*sSx=#C)MAGRT(vXVWshY*t?%|u6qm}dqGD2C1 zJu8Pdp~|LE2hgkaXikReN+f7XNG`ti=`@TBE=lrbtvI0-S>05^p_eD%pl$tOmwZYK z^>0tziuA4*DD8UMi?rF^ylfF0^Pj~}Hn zj!J|{DCQf=Ye?a)w=bH7&=9xJR{fxoc9)zvQbkYQB+F@PixlwtPaOX8Xa?ytXlL^t~sP(rULQl`6lo0OGB33*JwMl}i&z}O9+2e3X z5Pt_H8yHw<*ibj~E7FdIL=={;Ko-W7Ll_(NGs#0I>pzWY#6rQvcbAI2dO0=)IA#+Y zwq6%kv|l4qiTCpBea)T8*|Paabq|l~fg(!cTTsi971uPha$8i99eHqs>2y!!t%yd! z{%-696D0U-XqxFHVIOC}$a}ry_Gg_yeYo=4cFzerLe}AyW_`ICcJ#r}N(|pb!4H)R z@zg22ww+n%uK zB=1v+xshbj0I03>vt=#2c;R4>G1>ZUOr<7sT)yEZh1QR>bKb-%kB_T*jBF?SK*`%D z-!sf_6IJ#GK@Rf23Dh?SW$6E)BqX9tZc&{3bn1v)20zdd%qaGgKs3bLXlVtBd$pZF zQs9}+a9OMi8uP(XPW4#7DzUy)<}7E+Bo=OB$nu(RRG19~E+$F$wcfhiejLogi%7@q zyt1l8lpL{CiW~mMRXiCV!UNwYgXZ0!($_R5j&Wp!(t|^Tp#Gc^EY_l=i*RH%pkIvXPdZ zFonNrw$iB(^TvrH<~d8?9y$(q;a~OYsOu&xtA{lZb2**bX0d+?x7RIK*bU-;@66D7 zTTyu|x-V~HLB??;X`1V78yFeUPL`GE8uy(pB2KNqU^nMVi>Q+9HGw|T=03c))Y=YX zmgJ~V9;$CqZF^CfBJ>M;sq(VvdE>W*?<;MLjBeUj z6Gl6$6`VjbzJjO4GNrlV%`c(bJ{N7s6cK}~!!#J9OhjWwQ?($lU2J8;x`^XhJ`kXWL}Wo9uxZu^?fAjx$kO&hdjWXt@_{du>i;7T*xQg1ADt6+*>pE+)Vtzl}R+ z{?{<35f)<+Ws*FIR#R67h@L}e1h>;Va@~R~F-woI7C7kH-eY(w%$0l9x%PY>B*zJ> z#A#n&XRUIPeZ5LhGxFuNO5_G9DK};wryQjb;v2|cE3=4ShntVnFN#M`>j|+?9#_>@ zo6gEOJqm-D*~=={?;Eonv{OusQ!67)Dyi#jyb5?`h$W%?T(6K+rS#ziE)K6h0tv=F z+zeH+B|0qm?qZJa25K>gyJESYyWB$r(^*b?sf25Yhw5zB>KWNSnaZPgo?M|miz1Bo z`o$nfmp?jchFN5IHeKhuc>+I02Q%xi77fMy8qr1=!jMfc%5Q!sSRophBGi}+7Hfe+ zj)4&u;kts-`nGtE8X$g^^26JN!#h_FVIi20l8;w`6lhBU)| zHpYRCEk+|50mM-O_bbvE*-3o((ir`*>z4O8Ax8V54)Opzh1GuOOZYrH^hls>Hk68m zQw!i~kL|%73}Tf>|DAU!kuu>93(C=*Z#=uT=lST_Np))$1M|dk&Fv;6`_VM2f_xkU zwinsxzuWk|7(m-qqAj!pxJ;$*|46pH(XS?yJ)5d3ls4hq;&!T849Rx%(9Bnup}*EI zz;`N#7PCu_S=taNp9ORX^O4mT%g`QQl=lvT6M0CX>hJ?DamXp&AnKC6cO%mXY?^B5 zlEO{KR|>ivK1@}Ks(Fqp2b=;RyBm9n@BY+pfSj2S$;`~V(Vt8g7%ZNy3l_q$OQf8a z%xTqVHYZG6YEIrJdTow-Ov2B)Tk_?p1N}8!=Rv{tQsU99(>X)(-qyH7iYJ%jerzR& zxcqv``dP(fBvoD~?;k=4Z*MrC5epzPD)h;$9HLispOK?LN*Y)XT_843EP^_zwO5Cw ze!R%ck=3Evg?M>+u$UlI%1|t;FV!Tm1`PSvD@Ws5E~l?h2r9oYtoUukV(g}cj4a-S z`{Dwhh60NPyVGk<0xImGA#F)nVd3)n)}nAB# zL*&>gGbfPHnEHBNIyixD^~3#4&H4l70Hk^M?yj(v+NXP>(tBt+O` zZ#5P^0Rl^1la(ZIdDl2E-FuKaU|(G4Dl@4^5nQaz`*=} z+)1t;yW-Of5UjJ9?W?0N2C*`(fEKEyOXRCh#I@Uk4;u|V66_#h%Eo=Suv&}ndT5svS7p)r{C&ogVF?n;h<#0P%xv=g4vNr@16RmJJdowEB9Vo72=Zypl z=>%_fxoqj%s-~~-tY&IzCU^?Br;OIqSp0vEP|dNL?qEBO{<(V8THC&^%}t#^kj8pb z-AmNpzYi%t_~`Z~lDK0U2vuGs!zY5Ptqhc7aTk5yHvco_vaQ z5oAr{p2-xZS}~`5@2Xs4hcNzm6QZOhp3codXOA8QiVewep(lGjJr)r{{e7u=v#Da* zWjMqZ{)#MlJe4 z&Sa(eJV?3YTR`{OLBuwVG&`Hqsf=OHUJa0mIA(>8n@knS*na z`9egBJ4|kzPj6{*^jdd=rB^;%ZLgDvw4~ID3KqQsx%N>xEuBH~!6KhYu138AMJ!p`U=;kEtjZ8Tjzqh2&c{iB( zaDNUt*f$a_l3M(zqWm*I_CQnb#@s_B(%R^Z4z60J36AkzCSGs)B$L#L{XA!CqA`>d z3*o^^ug6Ye`^vRL?^apLRZBkPgz{3!|#CJOQmlH@8OK8m` zBM=^VS`}~>&E)|R2R{4NrMd=RAE$0S*buShuoPe4?W`*7{@C6mp+NQZU^8@-<2cuw z#d@jzi{Ci1=G3nS8ylx4ofqeLbz9vS?+_~6bt=fN7k!PFyOYKinV@eafej$}8M4D~ zqPq3ghr6@^ZGlsVgw@u<-z&5pe@UupDrSCom?T(tXL5+%A|K7er z=AxZVko@IITp|q23!2&3(kiM#@~R5YUcUE)wX5tUT(()1Xtj=PZB9l8I zE(7gxKc9f>%}rt#>B8Tw@gI_Y7?uA-A4_N&PiZge66nV!uLl%1_5zs_(_e2}|z(@v$K-D_#MkwjoQ{ zRvG*x`ovn zh+1_I`bbMwj#3CY4o6ODTDH<9VQ{>!V;jFWzn|dHQn&_Bx;sMcw%K~8FUPdCbnGvN zpxPS+P2#CKaNYKJuBzNgN%80JP8X}Y?D{@iE*Xpb{I0ndya1??dCi{`!{Hin_j>!3Yh=&tzYzxou6R1Dz%k{Pwweb$Y;zVTuL2EfQq-qFJE@MLbZesC?Cl@ib0S`5-4b?t2T%X(DHk zYGU}=8VQb4#;Ku;`i_{$^n!)6qO-GbE~3*vw$Zr9QA~QwajmPC?>x;QJ2TtMSkKOt z&S2sd+wO0Dv}PlE%};tMF7ab-uds?O*5q4pT21yPvIQSoj{dQ9I=EAlP&v7k!nw*Z$Li#4E%=UqA&0fR;!ZjZxrhh>JHnLk4&!zbR}uVJ_$i* zak4$`qjvO}@~YDVkykA9l+8orJCRZC)!mZ5$=#qpr{PexrLRNIAee0UiG-&fEmg3E z{_&o+Zs(}@ep#qJS@4q3mef`t2vg4p)ux^ic~zcI46`yDCdnkdf}&J`D57C3_p`32 zSGfMpCYXt-R)WH5WH2s3E3Z5^1qLakEklX3h5OE4%x3ZZH)Bkoe|Dq>dqpLd+`dX) zCy1ObH8=cj?zV%|q7kQp%kFFyg(|ziGkc#o0i=Mmgl!JtE3-reOX98Tt(ZuDW|yzd zRKw$m;MUmXMmH6pZLalV`_gBb((YGz&?8N^_RU-C)TW zg^LE}1HR4l=LY>oXVyZBj|V9ln0`Xxgo{*RVnuAyBE38KI~v`?5mE!Sg%|{5=PKbD zQs|D$PPUR*?QR1jP%u~fk4j{hj$?P26l;f$$Ux(yLQUAX#UC`Z{1aSmBv#Xem;^&O zogOAOkPQRNr9xO9ZmalDf(>r=4}DX2VNVL@5+s8OS}1oWE36X*LgXIj7M$cXi`B1@ z=CTc_=(E|3s1~;ahKnT7jAbHQvl83k$pYauNM`a zMx_s+@LM%Q#|DnrGOx3Yb8EbX5`7CIVUCXog3a_OVt}LMj|bNGG}qLseBR_=VhEVA z53Sfau6fR`j0$(YtBs39?_s2q>}|=AG>9eG^d)q#YA#^b++sndi_h#P+PAO7p{HS1 z{A_;6El0y!i>l-QcFTLRsUWW0?#Z0Vk(;!go~6r4Ns7d!Pmjm(;u*%07UramJ#6Qo zVd?_CgW%qCxqMVwMc_KP7RGS!YO4=Ib=O3*>hQ6cT!Fo!*_^jPr&hM&vpvAg5NCgZ zOD+ih%$DVqzLLA%>PTZlsU7In-=Ac!7Xd{d5ry4xV>=Pk$rHHT#L6t#c>8Dj5uw<~ z1xLRktS3wUr*ITrqFPPiWsGmXiw$AC8J@TzPng_<*t$RHl_lm)%n{z0h^tMJ`DyWI zZIQ+ku1sInn#gtK%fm7LApD3MC67!V3Uht9k3*fuP;`%glO4nm5I2>avE^G8`` zjaAPAS6E(ZE_5}N6vg3(^ZG`yr^0R9E&_3?V|-+f`vom=S!TAzvH~snkcIbkOw)Bj3TKYO#i|#CiE3SMBdS^wP zwbI~~9+;4BHH1w4b|f};IgIKPgG@OXVfD2AKwpF#Q0ef!@-VBo#sM@-y79r$UP-ql zJ1}A~MN@J$Tp24fcCnK<@Mq_-E3!oEsS|GO@A3sEhFhn8n* zE>HN&rL{oH%M z_C8ZPMSU+}(XJZ=C6ID#Ftr`2hUIlRRhGGPTPGK3>RC8_w1as>Ujfs!mYtJ>L&qc# zPY+z_dber#$=xZ`S8TvV@Vq{FYG8moDJ$er`n{nDM2>e?w^xh&2Rp{o<7Nr`MR0CIg~ z$%gx6d%>t*j7Qmo!{j74+cqlV6P`q$38SG1`nxMTy+_x6s({ao?sQX!%=nC8xnNu(-)M;Q z5+gwmSRiK^R9%(P%WsLLs|q?Rm}XZwMBR`daAt6kNBYwAy=l@!qNMnJ*9LHRP{$axQ&TW^TP&yNT<1NMZ@|srSG1X6(oIKma zXlq&;Z*#62Ib3a6o1r%#o^s;zVj0m1#$2@Uh~+ybp6Ytw$^w4~|{g=9@%xJ%utiEuzAPQH^7c7p}9fRF+BFotKjsuv42 z`@LI@C6*)$#tsDW_d&a@Qp(DC(4c!GvFOccoGqKmlwM>ZT$CE!+N8Cc!*pPdQ$3Gc@@E| zib8X`Ic8I9pmU7w1PW)VkVyK7#+mlUJ18p(mxM9dS%xzJz#DY^8B>}OFq~Ggt&wMm z8=4Wrhoq`7(JwosDVTNGkHQ1S6DJzUWeonR+tpW+tSW@@7vkv%wk`yMAu8Fk9!$XQ z8wUFLtBt@VzeRRe)O6#`YMvmhspa7uu_S7D&`HC+!lmvowPHK08|T==;I#mCcyGcX zp;E{L9~-waNo~JI=V7h-gmq56bUJoA6|*dOXI{|!ZeOc8`2j@{(nhoCRD~DFmU7XZ zm~B1H+IT3(Z&0~yuQH1KUqi@y~T{fp=&7c|m^Q~X~Bxiklg z0Zjan6wlh|JQE5^{+&BcAN_CHD{2yXR8Piy_Fy33JVs&Aoqw5Jc><);u<6vb;v#l_ z^NBovw0}wIQrjQ^0ze<6?KB&MZcsTKHNe9L)55y$fQH zfY1(AcweVo{x;=Lkq8jwq?D&+p26Q{_f|v#$!DrPp9!sfp~L@)uYU>#a4tLGyeudf z_-~H6h6#kO`d1Oo@+@BaD!ZCJ1S7!Cm7;lJ*NjrX^qKuEPn{w2BWCfF@<+1&Q02G~19-=-#K27UutWn!8Iegw`&(`j@9z|~f~ zU&0NDykJj1*aj74D>v<$L97lMbJ|Uv=FBPuAM948V3YVV z)OnbXS8zaz{vJ*KCBnUm;R)ys9^27e5aW(>bEvk%w`)!C^+MvBM5gt7;ueIrc=>oV zo`Fz9$Ql|vp7+#6SPF%$(jRE&?#+r*HbvlMr+E?>>hQ$>^z3Jhp9z}SgIz`RmifBi zYm2pdyu;y3RiUKLJBXQYxA;&BF=VuA9`}BYyA(n);oiK_!wwNJXCLMsU}|ydw{AFP zQ$v&q(9F5Vi6VN5n$PngPhId$*2jRE46QT9LZE^3YW8YjdZG~LKOz4~q(1{kFVmAG z+9GAWac~-Bq$AO}WUgW%*)GUm!gj=LAVR@e{8}dnGhu59N1YV@MfV-wv?$oh-QNOk0S)PvWj4N9M`kaV<~&=wjxE%{>>_poS6YG zHmB)dQcQ-vx?Q_AVQ?jGY?mi$3b|8;#F}eJHLp(!>rz@vIju2sEM8knTRE!~gD0!m z&U~keqS84tLtE*Iibd~rZ%c4zL-uFv?p}~Px-%uM_nAzC_ER_ehjaVvD@DhCWeG3s zOnyfucST6lt-dagn+5jAMZ$DDx5737mL1?u_r_O{%$DT8blK z{v4INoO0x0zL?Amiz$w`jfm+XT4*ODcYIzwcOWuJ6~bX580hHwI;uCKE-I9;f+pBS zrK!by)Eyp?;4uGCk)O932zj`j$%1%aIlJo%@rn6(^BE!2&Vguq%wl%dPerwW1p9k_ zt?U6}5TfM{wv^(9fJ@?xZn1uR1Ro2*euuKS-GVMQl`{H^8NILGi&_~VD zYAy{0abM6&yji`>QU_tTOd4a+^on_``8+#B^CrX><3C;BvJ>dGCwmcQ*6*%aM=i$waYQ&O1C_#%-%0!8hnk|co`+e;g!JmJ3KOF{X8E3@NqmATj zczw@VWhV>QNn!1ha4VQ?bJqLOqf)H&^HVaR8t>(0e2mDkd*}|0;1v1w{@1Yw=-Jm4c7a^ zo%>dec89^at5HE_+SzU0-Z5Pu3}W>R^&acl{qy55Olh2>UrP*3FM2|2^Smc?IE zPP5Up^T@4PLS%^JQ{Xf3!ZMpr-IeoGZISSwhqeGfAjt}NgQrh@EeW21N4SIIQLiR5 zcPu6G_f)~itW)&UN~bAxw=g#kS1xtC5~zSdi%>Q}nI`P{#gyNU=j#RVN+%~#P6InC z_PT$bGD8xf~Q`5#_s$lsG()M&~C4=aVQ*a?FafoKG4H5McO5{)YWeC zYzj@6MM`BvQx4}}y2$22j#S<4 z%I{XYRT40AD*KKLXolZd%1Upx>#-vqX5T~yTy0kyw?D^N(M;#(T0OpC@r?3c0nGob zu)HMtZI~tH=mXM z4^5<HXhWs>Rb?;CrmGDPRl8y|{Qm zUR9%~d|hi6?+w-AUVoR*6{D6RS)Bs_Bhie*@8on;-kil1N)W#PoabI5{6rixxG7xb z03oPMFw`c-0wQ!iUQ#WpCQFSL_lQErP%@hVYb#7Qi(fOlRNizd-$9{u~ zIlUDtw%D2YvkFwuuj6i`hUHX`lSK$H;vS6r z0eJn^WSl6GtjdF??N0Ve9J0=4v~S>r<@?oj-7v(uw?B$uaeL0veY!F=l~_ypd!Q-D zCwD1;jTe6~)f{9E(@Crkcx%ONfPoMs1b8w}&d z${v){)Clxl?yYsWv%Y~m^!%F22D zh;c?JdHcYHvC`V4!&bUKSYrT4%UB1g70O`|;l|X>SrH^UIkbEwP}g9=FiopSQ$s~B zBHta0J`KXl6}5?m^bGia_-7T!IH#(FM^Im>;effgESTahhdUc6z?G1|cS~pLkqUwA z{!F$^P{9Z*!edo*c#3uj<_ds2384IYfL`?z>oX3y8)!iVgZ`aL`SsF##Sm7dhLC>R z`0wQg2+1w)uMAEwhnL~o-$!d8uyQdVO4<8Xe(Jv!ekFg?eoY*JftFn&G(9m_`)4bs2w;w10N?1QuJ^j!)b%^YN(fZzf!-^Rg!){F8+a~uy&iwNbPNQ7590QFt(2}??l&>4JiPB?7#>!fG$LUn4}{I6Dci1^X%QDm#X1uL+*q2YyPQpX8pdnG40i zPWPZra;=B|bS|0yf%j2n}*8w8Db7 z-wtKMY+ih*?ij_!Hefysx-Cp`LkF0SU%wA;v=Zv!QvJH^+XJ_ay@n)sLe)M;6B<#p z4hxUQaSQN*3M?A%Ak=X%!hklFT^9q1Gkm~o1*IJ_NsiV2s)WB%*+`zI81xz|jtUB&Xcq#p8yUP&6@#mnrvJ zScj(3&@VENR^pzT!KQ}pOT(s@e$}n#_yQ#H!+UG8RO2LPVC=*}aaof4_?fWprVi z+H$YO*1b~&D8$|E(x_!i$9&k0O#{ujhYQMm@Wus0_TOZfUG{8t)ug+8Gv~n-=b#yZ$LaJdP-IJ5dY^#6+MooXM zPtANvG(LXTF=l*^^LH!AfM%mBE@>RxiAO^!3sb;4^#B}79u#5mIn%TO0}@0Egf_q! zio5`Z2XDKlW*(|w*fsm5Z~kW}23Z#=e0r6bc?8BLQRkU^hV21{nmMzJvdKyJZ!JJ^ zGRa`XH&zRAD@1K#z{lPsUyRxKsQUbUK#d1v>CVG@^R6Na@0|tD8~#MR{Lphwa<%|6 zkC($^c6-hCb4)4|Q9qIU<(LyKYKM!g>Z62`=gW30Zz5S{R|F*hV4$jckk+~`YOQ03 zLFVh=@fclT&%s`8IemDF$PLFLeVWhF^6ILx_6VvCu72|rokekJVkA)_nk5!>w$v+{ z;N$T=E|m$)gFAS}NjLlulge6H6p>e0E)XL!r(1A&av#iJ*iE8OG$i2GQpbt}BABl& zmWK;Vwl#(B>E4K>0p4EU(4gXWA3h>Tix8)#M2nH{2Bi{8^9xBYl$k?ABt~+yz|t)$q;pM3JwC6l_#6I<{YX)Kslr@-A*SlZhmn}yRx8F^ zJh8od-CQ#Xki$f(;j9kSA4VMjK`|l42OSXy{AjLZ$t3Is``| zdG~*KVyxv4A;Kj7T5}>3PeRAwmUW;pj5Kk)dC4xWjfu%hUj`VBqZF^4>nbw z&gApv_z3p%B-@=iB!>D>qnm14P$ehs5fC2h53z9glh)ZYem|V_(xGU9!?3grVj9hP zJUS3HRh)B1oz0Eo5ZT%?DPdW}em`Gea4FB?y0_T$i_l)<%HmRaVyHlY9^JvM`HYNN zYolsyq0dsbTgHJO*@VV@-doS+qh52l+?*MoM#u!t`+{VshKNYhH<=3dXH}d1n_KNO zP5UlZS#N&e!i3vMiL)spvz4X~klcalNj$}B+zypdqj&iOJ>D^K91Kj9Gh(P#)Iptd zu~dT73~<^dJ*7k|EoVuyg2kbsgb-sH@JAj)6gCKi_RA%*eD ze}_w^cig$XmBeOMl$2yenDNu>?M$k1lO_OB)tD&bbW#9As=3M`YQ^;V zBXg^nD_lan<5#R)b8=2J$_kP zGW%_NZhVbEt_l6dtp`S1%Gh!izEx0M}|sAf2)lt{Y{$b9GS@N|5~SzebW z#*a3$!rd`KJ&Cg5y5KZ+O#yq!-8lXTHv^c8bWDiFS`|loOUL)D6tKVAd)M)(wwD(nEaWq}GfndQQ5JGSW5P}8| z9yEaf!5xAJ8!WhmV1v8E5Zs-?CAbal4DRlO4KRn~egE_QH|PFbd^dg3&+gjY)m2@4 zt+jV`kD~iEcq2&2(CFpP2i>wLWn2mw8G{?1%e~w5hYY+cz-v_lw%AXT5z*mN@!fOE z;EuUvyzZrtMR42dH6>sm%OMrb8;4?qBtccRsznF2iaFHL)H2w#14MsyY`NB$3dcM;7N$Aj$(hd`Q zUy&U)zGjd+^Tb(BYndlRuYzP-Nx}5Xk8p!u`QZ$QSuq95hLN~=yh&O3rTh_}uroQX zzi41}RwS#Tr}etpCZ(#Tzy7;$|LxS19i&cF!#k(Q1e3H}bREJ%!6cyo|GJzNH~nsg zqpO~lCG21w7tx1EJsK*!bWZ(NH+a04s9vU8EvaaoV(d(>vj*V3lNCHfho98}l7{5P zc#&u;NYvya#X>*`_TZbH2}tVb4*QAHVphjsBOH0;?s+yN6_DLVItlzp_gcO+8F;V^ zyl9X4{!^}r?V&C*SHD^9=BTEQIJI_3}cByn}=mL^n1#oK|Z~rjlMHx zHZ?XWY>8S1tX;xf)$7wTn+05mcLt%w|YmD;g+p@_1hAqy;hDF$E5RX;P$ z(v}M2M4cv&|4h@p(aTXWTdV%6@UuL5^p-DWIwaOg&X>05$xI+|EIJU$$mxpk>9ZXU zc8egx=2iIvS=JkOE=mL$_qVU3tb4!#dctPLM5|KA=CAhgy0jXV4Z3VP`(c^S@l&ma zrWhu3ROqAoSn-SBD$D>hv!rpta=<)p3w5<$D@(ylzRd_cUkK#0+-;E?{R?+{Z8x{f zu&~$4pfLAqQQV8Eatf4WB8J4b#lJm<>_T`Ibxz@(Wk1sd8^6av#NELp*E$RoPFMu7@8mL0XeytIHbS?@aT*6;vg1- zcXK9)is?w1ad2=Ad28!;65_w(C#o2^jN~QTMfQ#lzqWb{EVZm}EXNBEO^{T(c%M_eJQy>=Mc2$wgD zDqAOcqd@WGgR_^^Z=;ax@%OyR6s`U(qu7DErQE4w;mh0&nQpkBdJFk8uq|u&iD<&` z@FzszonJ&d0y8@~W-$IhgFBLJdikoIVY4|%4y;#)0bBWp*!`aw##O0kcmM7c%cFq* zM=84&CHM^ovQDnZ>*t~);kyDbHa0hfbrw%vWSe*5$o^mH?1xy3^dpLE5fT1M{vQ}8 zMD{4CfpGZV{I9ZA*efI~CWT`6MGOwy{{XosNX95EIs6GnvRvx8GXKM#{jD^mLSgaB zDw5t;J9kD)0xBEcPDiT*Zz+_^QTK zp%CqaA2;FYZP`qN(HpkQ?l<4q?$=b#mK0MTAE2i(wnB;?CB&Gtj2iV%-R(%aIXtc%)VFRu_ib?R^7uqDA`}{z7CazKhYD0&o-T$LHJ~N{K z*tlVyF_0tS(LHgN@D=juytNAcz7WE8G)LQ4&SCEo^V4?!>|wS5gYmI2W`wdC%-&iL z3?pdf>vcLjJ`d{=rBnTa{rJxIgpqGtC>d60*7Vm}ko4u{+h~Re=PXt8I;FwEBjdy8 zP*JNR1e?nEk4+$-Cka`n)4h?li7|l=L*YjSHm9{LTHKkyDm&(l>X+x3@zKO)8){Xk z08m8UHk=q4DMkA!a$cebj!|B}MdX=%%p0LuPc7NP7_-66ISopEDRQf-_cEt5isl?t zgf}-Wn>v+DTm5HF=J`I8bTRpTEb69AIkF`mb3aaZGufQ_Th(@m>2$B3-BI!Ol-}0l zsu^|UT^oV@X5z{ecI#B42PR+hKbGS9CK4lc!kE0sV8Lk2>hX*UL>}Ds*@O;w%Pdx} z@-1G;=j`|QnY_`MMgQv^bXM!aek&E6CEUeWJ2m`jlTt|EYu5@VyAlrSe| zyolI=Suk;xP7rqGBkdqv97Odv5nbEyfA6b6M6K&|^RNN04oFtEcLQXAMbwIl0<_yL zg7vUe`2wgpRpR)2jR)YI!TbtT5$-Jr=~ZIXvB_dPFGLu5PdI-`$`e{Nh9vZcU+vxC zsK>!L42ED9n27D=gOJRicly}SIx+}*wJ zQ8i@-yDxqw`|ch`{AN)F4@07p<``0Fa;A}|2ckP|6raxJQUr!wl&_zH2L=?%)9#kw zp;Tjz$TQ^=g2p|c_YYL82>Lvw2r8o9B(;(Rb@sA-(6T2z8is(2g&JXJ1n;-k72Wx= zqA$K}>`U41#)dNYdxfW2$>rUQe9C`rfwa{-F*rooTcY<^rsqs-OzThn z3f-xKmEQn_Sl^m>^*V*0rZGDo^p!Nu{|`~uJc;qun=W2emO0my(CODw&$97+6a=pbi(@Ke8Jo_+k|lOMs2uPS^W^>NA&jjJ2z)_ z@-@$eL7m^yKet38fDpRm!>~~ z2uPT7`*9Q{i1iF^56g5DcOuPk9J*`!VrE7RXm&XrrP&RP2Qfz|-G5w1cv@6$OrN4? z6*DxxFwqyTuo>B{A?!d-#etW!IUHwP5fRDiT&|{xRJR@sDGItAloVuZ)IXLs*iy$l@&`LR&z>5qJWdaZQbz|uO!1$-nTxzWbJn>vt9P4=8g75 z^c9Uo9h+TNOs@K4iMbNs7aYwO_dMnjTeODj+J&&J9_lW$0r&X;<99ib~p z=vt>?wpm5;CCV2>?|OVB)J(o??oOSOZM@hRh%sL(b3ainCSRVPn|*g)s4aN*scM^D zpoz;b#CnssfDCu2n_oz1pbG2~@Rpb>#0cc?BJFHVHYr>*mQR-*biJlCis1fwNpp7E zZe?Hh&>CDgm)$n9TRg*m+awp-9o%a~7+l#J2Ig=^~2?({d@xmsO5+NDeY2&qR%af#p*T zQ^mCu`Ucq#S5kmXcMlo^Db*}8OE$(@31;kt@Sv_cSw;_Vs0k)V1El2N#%ytenhUQ zf_udc=Be>za7QZ@?~$dekapYg-bF?XupAshmC2|9plF0|9JC8wM@ZW2@7abs02Xw8 z-sXlKza+K}GA%8|$-&w8@HQ&N4%QM0K2;uy6*zsB4!U- zhWLF{`)z$sf^H_azOicLj=)h-IsBzj6C@e`m2%20tQP&}8y}g2{0^S?JhzXMS+KCV z9dY&xisjfc?|Jn*#2I0kTvM(5iT2bbmB#X<>vzi_J*D}TsmAA*O>Y2tt)9E(nm9aP z?c%(%MrHes((AKKEZBVbd>+!MB3C4xPse7-JEH1^!qFP)FpQi9IM%q~6Mb=A_Qpi@ zz!#VFSYGP-nMc=n2VQz!{*7$$}=qXLYaIeI;!KcA{9%Ta60&%I`c zUWpd;J0;-Ost(Q(1})cvN-a{z4#wT`F~D7p?sU*i1IP^;S&&qsl_>1~B>k16AWMg; zsIk^kz@-pHbmZ%eo_X>FrD@QL8s$=|&vtp~K0voDC3`H~7m%e}R95v;gmn22`i`e7 zKa@;~If;$-d;9fUe8yz$mapR~)A*dtmJMBLdR~pR?_maO|IknFpM03;1Jr<OTcFzf9pSzl<=zB6 zFWy7>wrW#m>t8Hden|xnBC}V=9e_xxYA{ zkjc5NsJ~u=$#b%e^>S53@ZrMek(~v#**mdC6S$g7v`%BkiW2Ah+(=N)^LDgp)sGZ1 z?m93RBRs^p3z2X$_>f^oVe_u2?4HobZ86>jv3~_Y4(T6L#^M+t5emrBtlOQ4nPb*9jS|>KGm}y} zmQ-6jng<_D*uj^&f)c6ZWG*v!YK?{xs{7%5EWM^_9@iIu!|6uF{dK`IgT<@!p}WGt zEDN<9XQBdPkvg;f_YSkB3mY^@-+6DwR6Y=HuQVv;LKK=Y_005|khWENOfJ>lZicQO_ ztVEebf}CHj9Z69}1}9 zx%N&slK1(70;?+aAFcIwXt>yB%O=^0i1D)TVMg%sO3%6V!RPA`w-8)9-jN<_*3XIN zmx&mu-*{tv{Ygk3(LAoc1Zu+h8pyPQ{12k{-3I;`oYivVr)9KtOdNFN#w_wi#jl83 zYexPk_WWOw{{aWZTKAspfz15_BlQ>bM^!RyZEa0}`vdQP=z}N7Ff=4NrU*YjiIz%I z?0+eVzwh)HE{df)Oq`;dn(Tj(2)?&}@_cVSoqzNGMf`s$3|HyL6kZ`ZyT8!&PdFtd zA?EIduqAPTv;uN%q+tz3F@jK^_fZNWak#6f62HYmo+^g5ecdL8p#C92Rz$_c+_$s) z)YC;obGDzvU#SPc?t(p28od3lVK(AH4+_xi`Ucmz21v@IjNMQ*+2*6!#L# z@XLl3Dr~%wCpY6Vyc0Ho?p-6*h8E|#5j10`EZKE1#0N=Z7(d_7A5A9ETQYE}L+PhH zrX;#qMP20MtyUP?zi3}_FnJqj1&Lg~f|}l6RegJo@9yx)N^`L9U7J3$iSnsS3DI1l zMg(pzvD3|0pXp|>nzz;15 zmh1Kv{ZEwi8RJ58LJe`e3(Zxiw?nv7K6pkO7VwUJS=n9FIxpAI5mQ%>)=*Y@tHe1) zLQhZGq@!NC5t^i#`GJZ>XPm4%;%U&9G~M!5H`9p z(SjBq>^_}RMV*y2(Fp)66ExC&f)$z6wtnc;bcqn!-%1H414K*u{dyxKp9olN^Vv^~ zn5naFiW|cEwuI7MCKUa7aO3dig8k}J-a5MQ<**u&UeoQ2*YityrsymEGb~(tCAhKKjc9d zB^}R$Lt`o8%>j9<&+T_dz?i)RtglXP0GSj_un1=UF%ArmHiY+f-qCQYp|DqcVho6y zi2IJ>3Y|G}YjvI~W2wmAyG@2eUy1WMoh zGAz6@^5tUrtFcfK?2UAxShG=sw^V6@`I$>QlfX`U%)<>+C*gj7UecK-G9y$-v9S+C zXwgnXmKxk@o91{+^CSkklJ3OEL-u-bxLs89M)@M23qy>Y083GKjXuuFyxBlNsDXjf zmCd#%!d2N&b+SsoY_|?@?39mm?|gw!uE*gmo~-&xp|fC%ff-DfoG?^mgR+X1r`uEthEc z?9Eh;Ep3~l3~iXV*0@va4p{7v;Uzu27)Et+ab@6&DWk3H4WjG~QCu`Tqi-!X@@;hO#w@#Ph)EIs zVK)}@5SRs!b|Nf;S1}?gH6QrCg0Qh->KUr?M&{6@f*bRamltY!Rs>PXB}2<=$vt#r z#N9JOMh5E;c6C8l`Q5!ZZ$V;$M%v}JhlL}fw=6~W*&V%2t7JpTw(O(Zopis1Z zh-d2GCU8fz?DSkT_gBB*e%Ae5xT6ePR>|FH=FsMuvXHhnPp0WFFsHKtWbaxwjoEUA z&(@lYk5~2ves{?^GCkglX7mx1SoM8k5#_xDzLwlu8xhb_Z6(h@8`;$y=<_r2aHtey zU!RBRxz$7Vk3|Y+iB|1~?5kd?p)781l?n;^H{#l!^v|2_o(-0W-{7)Hesi%&;(Rc zlMglev?n9W(gise+STF!(``;qll+GVa@81^#=Bf;g{M#+>zM(Z^{6;~FtpWPb>mVI z4mmpVSH*O66Rd@THIMGxVJ98~v7$~J3Ub(rU=wSFDko4b_8wL*Yq zjS<_5j*_4o%Q8h~My^G5U9Ap3$Ga6O2ALX`VF8ddrLnX1%c_Hkhc>UtpYh4=Lg^e& za#hb(%zjpC_76C@RR2u1O@dy z+ikRV<}QSwA-1^>1;R2Kzt4bKa;t=#p&=f9h4K=PEcn7ycJr+~pv1<#RK3&dtvc>) z!-aKZiR{6%5S}>JfSlx+2hEHgrziq8V3b58p271BQT&m;b9XF3PhG#4tX6k^$qWG- z#5XQ3ho5r3kZOra0Qd8jt`7s7ZaB3b;)nKQOggi4ab)LETmbUK3VIdv4U!D3BdspS z?}W`sKZ@0WXdV+jEYwQpR0AeG>Blqezo6@My&XZ=pYKLv4QC9h_jSi#)0$*j60O}ULes!DM^SC9_XZwU zR0|h+z4mud204|K60Ig>yzgh(*-sCKD7JmA4244=fEob2^DwZU(j_$_9ojz`dtP>z ziJK4F*0W#iabt99>IV=jPSWswsZpCIM1!bD;ta@Q0RUEL788MYC+9BffiO}2BqIAQFMvepX{7Cf&df=ASzwP80^o6A zUU?q9J;m!i4pjGsg<=`^zUIVsB&#HC=?`*dbFZ);Ud~vulku7u4S^4cUUzHnhdN51 znaMPz>=hU9Q$ee*$Gi-R-??Z|+(JU-xA=>_oA(P-A`;*;sxy}02Xlv!(bYrfi z+zS-^QT<=V)q|X0&iQO0%>ZXj1?Yi|!s>+=#P9$}Lu%+P6(S52XOb9|k?A6kgF;0w=O5-_%%CyMF|G7|d_lR6)a)+H5CJG_T49z!%YUi;qLgkZ}%7qea+!88LBWy!VWZ)v?%o;r(&6xxs$Z3X7I^ z=zAMYP1kfKf&A&*JQOchb_(HztEI7{C3Bw%zIUNqH}&m^=97U_zQBX{P&uRap4H~Y z@`--oRYGKpjhG(-(4JexLse@0`j@F~pL7eSGu-YCp7zL(SeN=3T6IRSx(I`h0xRnj zE>MK!bjLLC((X9OcSYUr>e^?`Ut4!usOx*Tyj?E%d|tQM8-8)lwa%1c{mo-P z6NCpDCB#K@Z^=hf$_3f2^FdR?p-;Upu@;Hul6+=!e>^QsC}Ri&#HVrbd9zpuYOkfQy~!E z?~t_mJ^4nO)$Fc{t-v$;g_DHPa*~D$Ns}Ab4MRLVNx9BQ0_j2W`caSwd}+As-ixvB zki#Gnb(4=rv_kCO@}2vtr_A0aJ&&^GxI)C`JyAW*-iV>R@YzrPb( zXReOwVUnx-?i_A&dE0nH43_8+n5<5!?4lCr2;H(we^5G%{~fYs07XJQuncJY$?VQI^KJ zN64&C_OiLFl!=eHAryias#slMfK^(P#b%Nc7)-vBPTmq%2~qH&RT!WyqkXi%png2Or;Rf0`gA?*OFn1s z{PeMN#U4H2_pv;l?e|1q`1!9H#s)~Nc6$vQ2WN9>xLW4#rH=|gD6S|Rot(2&X5x$*Z&6n`7 ze?19codmy4Z&Ez`#|My@dJSm98t~_lFsOf3KOvCWK2j0<=jM%2f&4}~a)$qy?y!h; zjWxh0BmTDZLlcQMVs={j%6=|90$u ihtL0SlLUbZf9hP>_znE{vx6s3K1nG^mWhA;`F{ZJ;};eH literal 0 HcmV?d00001 diff --git a/_static/ajax-loader.gif b/html/_static/ajax-loader.gif similarity index 100% rename from _static/ajax-loader.gif rename to html/_static/ajax-loader.gif diff --git a/presentations/img/apache.png b/html/_static/apache.png similarity index 100% rename from presentations/img/apache.png rename to html/_static/apache.png diff --git a/_static/basic.css b/html/_static/basic.css similarity index 98% rename from _static/basic.css rename to html/_static/basic.css index 43e8bafa..967e36ce 100644 --- a/_static/basic.css +++ b/html/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -89,6 +89,7 @@ div.sphinxsidebar #searchbox input[type="submit"] { img { border: 0; + max-width: 100%; } /* -- search page ----------------------------------------------------------- */ @@ -401,10 +402,6 @@ dl.glossary dt { margin: 0; } -.refcount { - color: #060; -} - .optional { font-size: 1.3em; } diff --git a/presentations/img/bike.jpg b/html/_static/bike.jpg similarity index 100% rename from presentations/img/bike.jpg rename to html/_static/bike.jpg diff --git a/presentations/img/bluebox_logo.png b/html/_static/bluebox_logo.png similarity index 100% rename from presentations/img/bluebox_logo.png rename to html/_static/bluebox_logo.png diff --git a/presentations/img/by-nc-sa.png b/html/_static/by-nc-sa.png similarity index 100% rename from presentations/img/by-nc-sa.png rename to html/_static/by-nc-sa.png diff --git a/presentations/img/cgitb_output.png b/html/_static/cgitb_output.png similarity index 100% rename from presentations/img/cgitb_output.png rename to html/_static/cgitb_output.png diff --git a/presentations/img/cloud_cover.jpg b/html/_static/cloud_cover.jpg similarity index 100% rename from presentations/img/cloud_cover.jpg rename to html/_static/cloud_cover.jpg diff --git a/_static/comment-bright.png b/html/_static/comment-bright.png similarity index 100% rename from _static/comment-bright.png rename to html/_static/comment-bright.png diff --git a/_static/comment-close.png b/html/_static/comment-close.png similarity index 100% rename from _static/comment-close.png rename to html/_static/comment-close.png diff --git a/_static/comment.png b/html/_static/comment.png similarity index 100% rename from _static/comment.png rename to html/_static/comment.png diff --git a/html/_static/custom.css b/html/_static/custom.css new file mode 100644 index 00000000..de26ee70 --- /dev/null +++ b/html/_static/custom.css @@ -0,0 +1,161 @@ +body { + -webkit-transition: opacity 200ms ease-in; + -webkit-transition-delay: 50ms; + -moz-transition: opacity 200ms ease-in 50ms; + -o-transition: opacity 200ms ease-in 50ms; + transition: opacity 200ms ease-in 50ms; } + +slides { + -webkit-transition: opacity 200ms ease-in; + -webkit-transition-delay: 50ms; + -moz-transition: opacity 200ms ease-in 50ms; + -o-transition: opacity 200ms ease-in 50ms; + transition: opacity 200ms ease-in 50ms; } + +slides > slide { + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + color: #393939; } + +.highlight-code slide.current pre > * { + opacity: 0.25; + -webkit-transition: opacity 0.1s ease-in; + -moz-transition: opacity 0.1s ease-in; + -o-transition: opacity 0.1s ease-in; + transition: opacity 0.1s ease-in; } + +.build > *, p.build { + transition: opacity 0.1s ease-in-out 0.1s; + -o-transition: opacity 0.1s ease-in-out 0.1s; + -moz-transition: opacity 0.1s ease-in-out 0.1s; + -webkit-transition: opacity 0.1s ease-in-out 0.1s; } + +.note { + -webkit-transition: all 0.1s ease-in-out; + -moz-transition: all 0.1s ease-in-out; + -o-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; } + +.with-notes.popup .note { + -webkit-transition: opacity 100ms ease-in-out; + -moz-transition: opacity 100ms ease-in-out; + -o-transition: opacity 100ms ease-in-out; + transition: opacity 100ms ease-in-out; } + +.auto-fadein { + -webkit-transition: opacity 0.25s ease-in; + -webkit-transition-delay: 0.25s; + -moz-transition: opacity 0.25s ease-in 0.25s; + -o-transition: opacity 0.25s ease-in 0.25s; + transition: opacity 0.25s ease-in 0.25s; } + +aside.gdbar { + -webkit-transition: all 0.1s ease-out; + -webkit-transition-delay: 0.1s; + -moz-transition: all 0.1s ease-out 0.1s; + -o-transition: all 0.1s ease-out 0.1s; + transition: all 0.1s ease-out 0.1s; + /* Better to transition only on background-size, but not sure how to do that with the mixin. */ + width: 300px; + background: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #333), color-stop(100%, #333)) no-repeat; + background: -webkit-linear-gradient(left, #333, #333) no-repeat; + background: -moz-linear-gradient(left, #333, #333) no-repeat; + background: -o-linear-gradient(left, #333, #333) no-repeat; + background: linear-gradient(left, #333, #333) no-repeat; } + aside.gdbar img { + height: auto; + width: 250px; + position: absolute; + right: 0; + top: -8px; } + aside.gdbar.right img { + top: 4px; + } + +em { + font-style: italic; } + +strong { + font-weight: bold; } + +hgroup .docutils.literal { + font-family: 'Droid Sans Mono', 'Courier New', monospace; } + +article .center { + text-align: center; + margin-top: 20%; } +article .centered { + text-align: center; } +article .left { + text-align: left; } +article .large { + font-weight: bold; + font-size: 65px; + line-height: 65px; } +article .mlarge { + font-weight: bold; + font-size: 55px; + line-height: 55px; } +article .medium { + font-weight: bold; + font-size: 45px; + line-height: 45px; } +article .credit { + font-size: 75%; + text-align: left; } +article .line-block .line { + font-size: inherit; } +article dl { + margin-bottom: 10em; } + article dl dt { + font-weight: bold; + margin-bottom: 0.25em; } + article dl dd { + padding-left: 1em; + margin-bottom: 0.5em; } +article .docutils.literal { + font-family: 'Droid Sans Mono', 'Courier New', monospace; } +article .toctree-wrapper li a { + text-decoration: none; + border-bottom: none; } +article table.docutils tr td { + vertical-align: top; } + +.level-1 h1 { + font-size: 65px; + line-height: 1.4; + letter-spacing: -3px; + color: #393939; } +.level-1 article { + text-align: center; } + .level-1 article img { + margin-top: 10px; } + +.level-2 h2 { + position: static; + border-bottom: 1px solid #393939; + border-top: 1px solid #393939; + padding: 5px 0px; + color: #393939; } +.level-2 article { + text-align: center; } + +.level-3 h3 { + position: static; + border-bottom: 1px solid #393939; + color: #393939; + font-size: 40px; + height: 45px; + line-height: 45px; + font-weight: bold; } +.level-3 article { + text-align: left; } + +.figure a { + display: block; + text-align: center; + text-decoration: none; + border: none; } + diff --git a/presentations/img/data_flow.png b/html/_static/data_flow.png similarity index 100% rename from presentations/img/data_flow.png rename to html/_static/data_flow.png diff --git a/presentations/img/data_in_tcpip_stack.png b/html/_static/data_in_tcpip_stack.png similarity index 100% rename from presentations/img/data_in_tcpip_stack.png rename to html/_static/data_in_tcpip_stack.png diff --git a/html/_static/dialog-note.png b/html/_static/dialog-note.png new file mode 100644 index 0000000000000000000000000000000000000000..263fbd5866aef1ce3645d768fbf55def9a091905 GIT binary patch literal 1582 zcmV+}2GRM6P)k@WH7pQF=3=faW zkFSqR=8AIgXBSA;Hc`EO&K^N)42Y`_9UkcY+JOPZzW)_SXY=A^lj%j;c6NwBgJ_tV zm_2r=oma1nQ4OegJG6y4*V7pt+<)-viajx2cgoi@dv1pQz5%6oPs>nSm~*w?TqQVv zob8dII{c&Oe%S1c$Jb4}_O0hohn`**8Ge(}Coiu}Aq2|y9sKoAe_L3{Is>OKFbSRv z1pSn5A0ELYKmLQ6BwuOzH&f_kC zpw7uXeVu-psxJ`U5$EUY>gJ?Py7zS&L7kH>03>~lEiK4GzOF#Bu=x@I$Wn<&a}!AV z0JO@7l0!?lsTn6_uHD-u=x*nv?jh4tOM8aU5Jm$S4XgGI1^n1jw1Qj)a0G^`sW^46 z`zk{v@<5WOf#ro&h@# znjak7C0?~s9=SM_n9NYjv(wK7=2M5YtS{PKY$ zvq{93_SMB}%_$-0$B^l1M4*|BZ#$YIXIuaXZY|uu(-Vrempj=|${=$lGCK?Q%G0#? z`m+#hhFpCs04oQ|EN0RVf?FVz z;UBke#-&y%!v?064Rok zOzr0t(XWi*Ji3QBXXf%JRoe>fIM6Q~a~|x{=CxG~y=Q>o+w;yR!_$*li|?MfjH_0w z4(~z?Yj=n@ipBh~`I%&-^WdPS`V7dV>N~21K#jH|clB`PgWJ~4*uv-kzRU4neaIZ( zs_AL~J|J*?3i;mzZ}f)kj*(jv-9BB_qC@+I5-iVl$9ByRp&N*X5L#OY%C2rk literal 0 HcmV?d00001 diff --git a/html/_static/dialog-seealso.png b/html/_static/dialog-seealso.png new file mode 100644 index 0000000000000000000000000000000000000000..3eb7b05c84809454c095bcb61b27d83585540bb2 GIT binary patch literal 1502 zcmV<41tI#0P)HR%3`p(HB`no_vu~6N}ZlRFC*?c+Y%$zyD-}&au z&JZ)>K^AeZ6L@^ummZ&X*Yn)70D$d6!LJ^l=6+BDv~c!{RYJijk54Ok5CT{{e~oil z-TFEbX!ZECIrm*akb>H(dS&g?FP4)K%^sh&_`V4c2m&fb&2G#rtri=XzfzzG^{B_E zHQpZqA_x*72n38CJd|Gu&#E_aHK*$b&n|7-ZLgos|A5D*S!OO3tj^fh z_!0W`3$WRQ%?5InVvwcc=cez&6S48H4!ouBxMu;6Pg_j_`(_qbYqix+<`vH*0k)O-56 zud&1uzgHhmFx075FBE*UbpHBBSI%oxLe?+@Zf!Q;*6vT#lyW3w4JY9MkgFEMG%bvd zj938nr^2Tc@c6W~RmHXIm(1Ou1kFAG0Fw%UlRqSTi54)VcO>U1an?Yy3vuG~@rZ85 z-uG|Ozewj~6o}vV-Rqv(Ci;8JElAxFv;gud8$jGKcnWCQ?Erp*KC zIXKaBJYt&WcE4BOor#q#1Dk6q78K>?<|1J9K#&Rskgt}(!EXFJ*vh>lSE3{1Loyf| z&3UuoJ;5w7Y;*zuDqMB2!UCtx{28%r>ovbu_h-v=W&y&2n({i=gf#-m76=0Q&NB3m zb>eW#zGx^K*vpKg0NMp9e=$o8=`Dj;l=Lz_SWyF}Y_f*liLBCL1t~h-HRlkcb2k zDMX|u0swmZd)fkBa>Y+ujj{N7B|et!O2BRM{{EheXKZP~kP#GW?m+0WbOJ~ZO^HPi?D-I-Z@Rh)4kw5h(x^0Lp=##*zNcjveFS!C+x=g(!SP+wgD|a?&Pu zP7Fa!$fU164o-xU8bl<3l(%90fD)HVwznQAX`EZL=V6*OcF^rX8}#?vph{K*-aJ52Fh0c1LTj{`F zLp(@87A+DHl?YYoCn~E-l`1NAUDn-Xf%*qncGGkLS(YF2?gcA@-FO$pxf<+GaygyG>LlMM6p;3_XL$EPez^sK@%p{Xo{*S0TiSP zCTKeMo(jal0l+j(n5LOaVy_31er|k zB;TX`;OPY~R$bf%N~}j!>$(mpC8U(lbsbOE|3S4}MWs}QE();w4vK{$gy-z9fKR~h z0e^Vp%gs3tt4?2rQN~~}M6cIFr_;t(w}tj*2Z!e;u^{%a$XbA~$@0JfU^pDWaYoqQ z-p13-r)alZaO@El7mq;gZcM5G0P?GpQij!Y&J)Kg{@Zazu7z{qXYQ+z~Lmwn=t7x02mT|+fx9wGX&O4TR+^m z&o2S|BrztzxbO%Pj0++r7~_HfL5vF!1i&;faH2pcav8`aKr!+Z2nx(|7?A>z0wcx9 za{yYMIo0|JSK?Z}Bvw{d3QBbh$6;lqyo!{p=(<#5%$1xA-F00qgytwk4r6QtXnmzd sgV|ZW`~3Nf{^7$rgNqk`QG4b8AJ1kijg{QDxBvhE07*qoM6N<$f+(VJjQ{`u literal 0 HcmV?d00001 diff --git a/html/_static/dialog-topic.png b/html/_static/dialog-topic.png new file mode 100644 index 0000000000000000000000000000000000000000..2ac57475c3b36e46ff4c4ea0506892e2fe884fd7 GIT binary patch literal 1910 zcmV-+2Z{KJP)W~QdMmlr4dytt0lBR3q?&; zsf}7ieW{ceqQ0~w%0ngR(l(+>6RT|+k)U#E5K0IT8=Mf^q}b(RJRV=>K69@7oZW{E z6%PeG5mk@0w56kc*8i=4U(N#l&kxlzdElw1LXir#G9KKfp!(p+CIA4}as(RoJ?ph< z1O7I&f4_Oh0lvTIXM4f;uUc2F*Hc}+k+#-Wgu^;CM({lsi;Ii6bn(1#X=2n?p8Ult zFa3J(jsOe{JflYw)=*=zShA`mbU-k=^sX0S3bG^fyY9h&Y0*p?-h1EjYvd&-0xsN}5e{ec8zp`u9n(Vo=?+@1vuxr;( zdmq{sySgZ`X-yEFtvWOgk1=u?K@veSA{RswfCnfq-Vjh%=E~LCoS`1w+!r}> z`egsc4Sj>7qo=I@ro(Oqz;w2~xpQOK_66FLgqDN`0whSeMC33|HYc(f!R7=@<79G1 zR#?~UctgM_n@*u@OS`XsbC~ID`%QIj>OTwYZ0%eZ%2h0^Y}4Vx_lPN%Kn_7UM6fv{ zi!o+0P8Ja?jWdIDG6RBDf;y{S&XkIM_uZ#~={xJ+gud6+5RKznriy?F03ZoPF5|En zk;92O#FS(p7l7|GQp#7bUC(1g#h|W*3RRm{G^d)Oyw!CBDCI>pp}|u&OviJALUW1W z5XfPSY{p=J20;=aPXl~c`BbR53&8+ajL0`#54zx_d_P(@05PouWhWVvm|mz_@rdpL z%pro!h%5%OI3t@Fa~VM@U-?0l0G~0c*1ZRa_*l7=MN?FF77CV; zEm~y&Hi2x;$YdNQ=VWLM6-Ror^Ck1VCFRVT6^W*xu2q7Jnai8PTCP~O7}F-}2Jk%d zx7RL?mRB}6dR!yt@?tf=@vcNFq!Z7Tt#q;MPAyjKiMhNvTru2n!C5w9&wr&dH~DBl zXojvc;|pzxI6l^@7iZ|Y^bJcm^55Je(FYX)}8FA}7hJYg1-a35r zueOloU{^~#GCY|bHykfJezouxm?|xcg}XZ2k`E^1(H;)UgKOs^&36r^nqq64qWZ=c zo_~(p(%U&WIB0zCpV5vzKj{tWp?`dH$8JN3$mEKqfFjN_hUtt&LRvl?;3b_4Ly)_H zc+f9d648MEqka3H6{TYF$yZ+d&7W_TpWP1N)t8?C*mbS%o_zO+NH&HNnVfaiHVO$w zN(#;#oeP7QYhS!Lk#s%h(}sZPo){lDi-q#w?ZlS^0089E>ACc^SXl6oRGyWdnJs7M z(n(@WGF`dv9Xr~do}Hc4HBsTj+OAxgCIxwRDY=&f@bb(1b5i;r&s>|KWevgAhEs`s z^x?6uUHa#H+b(``bm!Rk$tPB?jOqkRaAG~DPJIy589rD_Zf&U@k?op$|ML2Q6W`mj zV^yjpsV__mICk-FrhqlwD-exEzvwzub@1)O*BsXwdU5c%**o47Zr}0v!C0c_v4^*8 zK~K+GG)5!fTmvH@n_Iv;Zy(0^_{8P;jK1#Bp%?5s>Hq+=Hs>GOve|~O7~Xi}PslEm z;7Sh-4FL$vK|VL-<*a9NcX#vCnx=$dOrcyhK}f5*DU#?W3N0#5)c%sGQnK9pimif5HF z4xc%b`Q`k4vHV$+3KxK^jqc}hKnD=0MR0n$WKK?IhdVoaWpi_P-|pQ%*EVf>1k=-H zJDsi^IC5m<)oRriweP65#MgsrP)i1&8>;`03jjjtbb7j@qvM{jv9Z?C(NRC2&yO8H ze*BM~=Xn79n$UFzRPCK#bEB>$pqi*&8$}I72M}m)Z*TT}pJy_eVoksWVAn#{!U162 wYzgYQ39nnK)ttN0UffXS^-8b1am$VPZ%s-(_>=>Px# literal 0 HcmV?d00001 diff --git a/html/_static/dialog-warning.png b/html/_static/dialog-warning.png new file mode 100644 index 0000000000000000000000000000000000000000..7233d45d8e6e41ef8fcb318c76303a9b6f23997e GIT binary patch literal 1391 zcmV-#1(5oQP)}piCG~<@Tj_&{ee%V|SZW{gB8?y>5~HGEkRU`Q5xgR16NK8$#%7av&gnyv zB_>9ji%*39&LbK3qFu zI7(%ZZ%;}2Gqh=wf?-g1;X+qD8r}8{{PEcV%0X!tqH%6yq(DC>&`hf#DjvXW3(1702fiEY= zF5vsm0&oGwD!P6+uzb1JdigTStXXLJ`Pjl?)VXtsUA;>7;>9+ps^67D`lthR!lCrM zJiGbuAzhIO`u_b0*{$vea+<+#n+u)TG0)=^W&Y8i0fonJZU{&O3K7Vlni6`w*i02KV;P{rfRu zG0etBGUm-QC7c=+fU_{mF@F3e|CA|e+x6?%3JOrCPscC}T3cI*Mx&UfiIS0lW6Kua z*4E+=1XR`QT~P`vMhu|BsqFlGD_&EBWm!0O?*~ty__PKSBsxE>~io%jH4{flNukRa8X# z{rjXQCrg{pH?0i59u|NFLJ0B8)HQ2(TUCW{yU};B)sYgKfwF=i#fQ*|T%prYYO&>#^_Jg-l9HIC3}~D2jrjDCoMLxDnFn#I<)X9Z#O% zl~TASP4c~kT|)vm3aV6;lT*TB*>>d$((gwvEKE2_WWLjh)9HL~UI>A6!v?geQ)#cO zBP%CIQ>6UickujYfDG8-Td-iF{q<|n@$@N&XN+4a)1MXii!#xt%)zy89UYGz zG12e0NnI~2gPDT@C~$aEUY=^+y^GP-hO?w((CCB^XqtxXDMlUN#ETcC z1p+4hp6CQXDP-AvzM{13Y_09qE$nO8qUGca8odyL^73*nUc5M{b0Gw_%uGDnx6}FT z856u-Rdc(;WsuwJSM3x1@yun*tghR)G2?Oc_3NRv6|2V>LcBLlv~F)$efs`;+#5F% zJ#z;0`E&f~>DJ4JhLgbjz5vpKd|!698oPE4fasPj{qtqSV!U}nQhK`b970DyKML_) z0Ovbsj@-OC=8MgnrPMUAEG)wS)5J22?y+HDnPzw2Z#-bF|D0)J#^W@
  • +
    +
    +
    +
    +

    Slides

    + + + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/index.html b/html/index.html similarity index 65% rename from index.html rename to html/index.html index 1ea63752..f500316e 100644 --- a/index.html +++ b/html/index.html @@ -1,5 +1,3 @@ - - @@ -8,15 +6,15 @@ - Python Web Programming Workshop — Python Web Programming Workshop 1.0 documentation + Internet Programming with Python — Internet Programming with Python - + - - + + + + + + +
    + +
    + @@ -47,46 +59,49 @@

    Navigation

    -

    Python Web Programming Workshop, August 5-9, 2013 in Chapel Hill, NC

    -
    -

    Python Web Programming Workshop¶

    - @@ -1197,8 +1201,8 @@

    Interacting with SQLA Models

    Homework¶

    -

    Okay, that’s enough for the moment.

    -
    +

    Okay, that’s enough for the moment.

    +

    You’ve learned quite a bit about how models work in SQLAlchemy

    It’s time to put that knowledge to good use.

    For the first part of your assignment this week you will begin to define @@ -1207,6 +1211,8 @@

    Homework +

    The Model¶

    Our model will be called an Entry. Here’s what you need to know:

    • It should be stored in a database table called entries
    • @@ -1255,6 +1261,7 @@

      Homeworkclass google group).

      See you next week!

    +

    @@ -1301,7 +1308,10 @@

    Table Of Contents

  • Interacting with SQLA Models
  • -
  • Homework
  • +
  • Homework +
  • @@ -1309,6 +1319,9 @@

    Table Of Contents

    Previous topic

    Course Presentations

    +

    Next topic

    +

    Session 02

    This Page

  • index
  • +
  • + next |
  • previous |
  • diff --git a/html/readings.html b/html/readings.html index bfa5baba..3f2985d5 100644 --- a/html/readings.html +++ b/html/readings.html @@ -88,6 +88,25 @@

    Session 1 - MVC Applications and Data Persistence

    Session 2 - Pyramid Views, Renderers and Forms¶

    +

    This week we’ll be focusing on the connection of an HTTP request to the code +that handles that request using URL Dispatch. Quite a lot is possible with +the Pyramid route system. You may wish to read a bit more about it in one of +the following documentation sections:

    +
      +
    • Route Pattern Syntax +discusses the syntax for pattern matching and extraction in Pyramid routes.
    • +
    +

    In Pyramid, the code that handles requests is called a view.

    +

    A view passes data to a renderer, which is responsible for turning the data +into a response to send back.

    +

    Getting information from a client to the server is generally handled by +HTML forms. Working with forms in a framework like Pyramid can be +facilitated by using a form library like WTForms.

    +

    For layout and design, CSS will be your tool of choice. There is no better tool +for learning CSS than trying things out, but you need a good reference to get +started. You can learn a great deal from the Mozilla Developer Network CSS +pages. I also find A List Apart and Smashing Magazine to be fantastic +resources.

    Sesstion 3 - Pyramid Authentication and Deployment¶

    diff --git a/html/searchindex.js b/html/searchindex.js index da3f3a4d..155ac5df 100644 --- a/html/searchindex.js +++ b/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:42,terms:{interchang:2,ronach:1,aug:2,sorri:2,authorid:[],concret:2,under:[],dest_dir:2,worth:2,everi:2,rise:[],adodbapi:[],govern:[0,3],herbert:[],imaplib:3,"544kb":[],direct:2,batch:2,enjoi:[],second:2,street:[],even:[2,3,1],"new":2,ever:1,metadata:2,behavior:2,createdb:[],show_profil:[],here:[0,2,1],china:[],path:2,interpret:2,credit:2,studi:1,portabl:0,wikimedia:2,total:[],unit:[],highli:0,describ:[],would:2,hellstrom:[],call:2,typo:2,recommend:[],type:[2,3],tell:2,"5fb97f3":[],notic:2,moin:[],unpack:2,must:[0,2],word:[],flaskenv:[],restor:2,spec:1,root:[],repoz:2,give:[0,2],smtp:1,want:[0,2,1],end:[0,3,1],learning_journ:2,book_insert:[],concis:3,env:2,answer:[],verifi:[],perspect:1,anon_1:2,after:2,superus:2,diagram:2,befor:[2,3],wrong:2,parallel:1,demonstr:[2,3],attempt:[],interpol:[],classmethod:2,think:[2,1],receiv:3,scoped_sess:2,dispar:3,environ:[0,2,3],engine_from_config:2,order:[0,2,3],oper:0,feedback:[],over:[2,3,1],becaus:2,privileg:2,flexibl:2,digest:1,fit:[],fix:[],comprehend:1,better:2,drawback:3,comprehens:1,easier:[2,1],them:[0,2,3],thei:[0,2,3,1],"break":2,sqlite3:[],jinja2:[],initializedb:2,importantli:[],choic:[0,2,3],each:[0,2,3,4],went:[],side:1,mean:[2,3],laboratori:0,doug:3,ooop:[],extract:3,network:[0,3,1],goe:2,god:2,newli:[],rewrit:[],got:2,navig:0,nightmar:2,situat:2,standard:[0,2,3,1],traceback:[],pristin:[],rang:0,independ:2,demostr:[],hook:2,unlik:[],alreadi:2,wrapper:[],fantast:[0,2],primari:2,top:2,"0x1103e38d0":2,sometim:2,travers:[],too:[2,1],tom:2,consol:2,namespac:[],tool:[0,2,3,1],setuptool:2,took:2,technic:[],keyword:[],provid:[0,2,3,1],tree:2,project:[],minut:[],contenti:[],runner:[],modern:[2,3],mind:1,rat:[],pylon:2,increment:[],"__main__":[],seen:2,seek:2,strength:3,latter:2,thorough:1,"0x1103e3fd0":2,transmit:2,plenti:[],though:1,usernam:[],object:[],regular:2,specifi:[],don:[0,2,1],doc:2,metal:[],doe:[0,2,3,1],notnul:[],declar:2,unchang:1,dot:[],opposit:[],random:[],syntax:0,absolut:[],nobodi:[],layout:3,explain:[2,1],configur:[2,1],kessler:1,disert:1,rich:[0,3],folder:2,stop:2,report:[],bat:1,reload:[],told:[],steal:2,habit:[],disucss:3,result:[],respons:2,fail:[],hash:[],best:2,subject:[],pythoncert:2,txpostgr:[],wikipedia:[2,1],urllib:3,mysql_length:2,figur:2,score:2,awai:2,enlighten:1,approach:[0,2],attribut:2,never:2,extend:[],weak:3,extens:0,html5:3,protect:[],howev:2,logic:2,browser:[2,3],com:2,compromis:0,get_appset:2,trust:2,assum:2,speak:3,add_rout:2,three:[],been:2,interest:1,basic:[],quickli:2,life:3,setup_log:2,argument:2,ident:[],servic:[3,1],properti:[],commerci:2,pyramid:[],tabl:2,varchar:2,tediou:2,sever:1,mievil:[],perform:2,make:[2,3],couchdb:2,complex:[2,3],complet:[0,2,3,1],kit:1,kib:[],"548kb":2,hypothet:2,inherit:2,client:[2,3,1],greatest:[],thi:[],everyth:[0,2,1],left:[2,1],protocol:[],just:[2,1],human:1,yet:2,languag:[0,2,3],previous:3,alchemi:2,easi:[2,1],els:2,save:2,gave:2,applic:[],mayb:[],parse_var:2,specif:[2,3,1],arbitrari:2,manual:2,install_requir:2,underli:[0,3],www:[],right:[0,1],nfrom:2,aspen:[],successfulli:2,transmiss:1,txt:2,cooper:[],ssh2:1,exectut:2,localhost:[],core:1,confer:3,repositori:2,chapter:[2,1],postgresql:2,commit:2,blabber:2,bound:2,curios:3,down:[],creativ:2,storag:2,guardia:[],wai:[0,2,3,1],support:[0,2,3,1],"class":[],avail:2,editor:[],head:[],form:[],offer:[2,3,1],forc:1,sqlalchemi:[],lignt:3,"true":2,reset:[],attr:[],until:2,fundament:[0,3],intitalizedb:2,featur:[2,3,1],"abstract":2,proven:2,exist:2,glanc:1,check:[],encrypt:1,mashup:[],excel:1,test:[],tie:[],webob:2,roll:[],relat:[2,1],intend:[0,2],urllib2:3,djangocon:1,intent:0,consid:[2,1],initialize_learning_journal_db:2,ignor:[2,1],time:[2,1],push:2,breadth:1,concept:[0,2,3,1],chain:2,skip:2,consum:[3,1],focus:[],invent:2,supplement:1,skim:1,row:2,decid:[],depend:[2,3],unpython:2,decis:[],sourc:[0,1,2,3,4],string:[2,1],lru:2,kitten:2,brows:3,level:[0,2],did:2,reconcil:[],iter:2,item:2,unsupport:[],team:2,div:[],declarative_bas:2,machin:[0,2,3,1],restkit:1,appear:[],repli:3,scaffold:2,beautifulsoup:[3,1],"75a8462":[],current:2,rst2xml:2,deriv:3,gener:[],address:1,along:[0,3,1],pysqlit:[],bob:2,modul:[0,2,3,1],fake:[],fetch_head:[],market:2,memori:0,univers:1,todai:[],live:2,criteria:2,checkout:[],pyarmid:[],appendix:[],templat:[],obj:2,prepar:[],focu:3,purpos:[2,3],boilerpl:2,stream:2,topic:1,critic:1,app_factori:2,occur:[],nearli:2,alwai:2,multipl:2,winter:0,tilt:[],write:[2,1],map:[],product:[2,1],dive:[0,3],date:2,classroom:2,bookdb:[],explicit:[],produc:3,tale:[],inform:[0,2,3,1],"switch":2,combin:[0,2,3],talk:[2,3,1],shield:3,brain:[],populate_db:[],gitignor:2,still:2,config_uri:2,group:2,how:[0,2,3,1],window:2,main:2,non:[],killer:3,initi:[2,1],discuss:[2,3],term:[0,2],name:[2,1],config:2,interpr:2,separ:[],januari:0,"8873ba1":[],compil:1,domain:[2,1],replac:[],individu:2,continu:[2,3],happen:2,accomplish:1,profil:[],correct:[],earlier:2,bookid:[],argv:2,orm:[],inevet:[],org:[],"byte":[],care:1,turn:2,place:[2,3],principl:0,imposs:2,frequent:2,first:[],origin:[2,3,1],directli:2,onc:[2,3],yourself:0,"long":[2,3],open:[],given:[0,2,3,1],bookmark:1,cx_oracl:[],eachoth:2,conveni:2,pocoo:[],repostitori:[],copi:[],artifact:2,github:2,mostli:1,domin:2,than:[2,1],serv:3,were:2,conn2:[],conn1:[],seri:2,sai:2,ani:[0,2,1],properli:[],saw:2,engin:2,techniqu:[],ideal:[],take:[2,3,1],reload_templ:2,noth:2,channel:2,begin:[2,3],sure:2,pain:2,trace:2,normal:2,track:[],compress:[],cgitb:[],pair:[2,3],homepag:1,sesstion:[],later:[],drive:1,"8mb":2,create_al:2,show:2,german:[],my_index:2,dflt_valu:[],ground:0,xml:2,onli:2,explicitli:2,activ:[],dict:2,translationstr:2,flask_intro:[],variou:[2,3],get:[],clang:2,cannot:[],requir:[],where:2,wiki:[],test_request_context:[],review:2,behind:[2,1],between:[0,2,3],"import":2,across:[0,3],pretti:2,parent:2,cycl:2,come:2,tutori:[],wherin:2,mani:[2,1],among:[2,3],unittest:3,dispatch:[],typic:2,coupl:2,zpt:[],evangelista:2,workshop:0,emphas:0,docxmlrpcserv:3,repres:2,those:2,"case":[2,1],cast:2,outcom:2,python_web:2,advantag:2,stdout:2,destin:[],smalltalk:2,author:[],cc0:2,same:[2,3,1],pai:[],eventu:2,week:[0,2,3],finish:2,assist:2,driven:[],improv:2,extern:1,appropri:3,macro:[],without:2,model:[],execut:[0,2,1],when:[2,1],rest:[2,3,1],kill:2,aspect:2,monei:[],versu:0,except:2,param:[],apache2:1,identif:[],exercis:[0,3],real:3,around:1,read:[],dark:[],world:[2,3,1],integ:2,server:[2,3,1],benefit:3,either:[],manag:2,alan:2,b60ea2bb7052a5bd300772d7d9d40b19b27f7a1b:[],exit:2,notabl:[],refer:[],power:[2,3,1],fulli:[],"__name__":[],comparison:1,central:2,acl:[],microframework:2,stand:2,mytempl:2,effici:0,console_script:2,sessionmak:2,foreward:[],hew:[],log:2,aren:2,start:[],interfac:[2,3,1],ipv4:1,lot:2,ipv6:1,"0x10b075ed0":2,bottl:[],notat:[],dirti:2,possibl:[],"default":2,expect:[],gone:2,creat:[],certain:2,deep:1,intro:[],file:[0,2,3],googl:2,compel:2,field:2,copiou:1,you:[0,2,3,1],symbol:[],pool:1,reduc:2,wife:1,directori:[2,3],descript:2,scroll:[],alright:[],represent:2,all:[0,2,3],skeleton:2,scalar:2,abil:2,follow:[2,3,1],articl:2,init:2,program:[],introduc:[0,2,3],liter:2,straightforward:[],chameleon:[],mcdonough:1,util:[2,1],fall:2,veri:[2,3,1],egg_info:2,list:[0,2,1],adjust:2,small:[],sync:3,past:2,design:[0,2,3,1],pass:[2,3],further:[],pyodbc:[],what:[],sud:1,section:[2,1],abl:2,brief:[3,1],delet:0,version:[0,2,3],primary_kei:2,deepli:0,method:2,contrast:0,full:[0,2,3],themselv:[],berkelei:1,inher:3,strong:[],valu:[],pick:[],add_static_view:2,via:2,deprec:2,greenwitch:[],select:[0,2],two:[2,1],more:[],flat:[],mozilla:1,particular:[2,1],known:[],cach:2,none:2,endpoint:[],hour:3,outlin:[],fast:2,dev:[],histori:[],venusian:2,remain:1,learn:[0,2,3,1],abandon:[],rst2html:2,def:2,prompt:[2,3],scan:2,share:2,accept:2,explor:[0,2,3],phrase:2,scar:[],cours:[],mai:[2,1],secur:1,anoth:[2,3],comfort:0,"__init__":2,csv:2,simpl:[],"545kb":2,resourc:1,okai:2,associ:3,"short":1,susan:[],django:[],caus:2,hobbit:[],egg:2,help:[0,2,3,1],mainthread:2,hypertext:1,through:[0,2,3,1],paramet:[],style:2,psycopg2:2,relev:2,might:[2,1],alter:[],pce:0,good:[0,2,3],"return":2,pollut:2,cew:2,framework:[],httplib:3,document:[0,1,2,3,4],instruct:[2,1],authent:[],easili:[2,1],achiev:[],compris:2,found:2,unicod:2,interleav:[],hard:[2,3],idea:[2,3],realli:1,connect:[2,1],thing:2,orient:2,publish:[2,1],research:2,print:2,url_map:[],uwpc:2,uncommit:2,new_model:2,dune:[],reason:[],base:[0,2],put:2,thread:[],by_id:2,perhap:[],perman:2,assign:[0,2,3],number:[2,1],placehold:[],done:2,least:2,stdlib:[],miss:2,differ:[2,3],superpow:[],script:[2,3,1],interact:[],construct:2,station:[],order_bi:2,statement:[],zeromq:1,scheme:[],store:2,luckili:2,parc:2,option:[2,1],relationship:3,part:2,pars:[2,1],fred:2,king:[],grew:[],remot:[2,1],remov:2,reus:[],str:2,consumpt:[3,1],comput:[0,3,1],packag:[],built:[2,3,1],lib:2,also:[0,2,3,1],append:2,distribut:2,kai:2,filesystem:3,reach:[],chart:2,most:[2,3],plai:2,path_info:[],swiftli:[],clear:3,cover:[0,2,1],clean:[],usual:2,wsgi:[],session:[],entry_point:2,find:[2,3,1],cell:[],nosql:2,copyright:2,solut:2,"172kb":2,factor:2,smtplib:3,darwin:2,hit:[],unus:2,wrinkl:[],restart:[],rfc:1,common:[2,3],cri:[],certif:0,creator:1,overwhelm:2,"0x1103e3f50":2,see:[2,3],sea:3,arg:2,close:[],someth:2,particip:0,subscript:[],experi:3,altern:[2,1],isol:2,pymssql:[],both:[2,3,1],last:2,unstag:2,load:[],simpli:2,point:2,instanti:2,header:[],mistak:2,throughout:0,blog:3,empti:2,hellmann:3,ran:2,newcom:[],rstpep2html:2,strategi:[],versa:[],fire:2,imag:[],great:[2,3],coordin:2,understand:[0,1],instructor:[],look:[2,3,1],solid:[0,1],histor:[0,1],"while":[2,3],executemani:[],match:[],abov:[2,3],error:2,fun:[],engl:[],readi:2,readm:2,itself:2,zopetransactionextens:[],minim:1,zope:2,conflict:2,moment:2,user:[2,3],wherev:[],stack:[0,3,1],recent:2,lower:1,task:0,find_packag:2,entri:[2,3],pickl:2,endfor:[],spend:[],explan:[],make_wsgi_app:2,"__path__":2,shape:0,mysql:2,session05:[],session04:[],session06:[],session01:[],cur:[],restructuredtext:2,global_config:2,armin:1,input:2,build:[0,2,3,1],bin:2,march:0,format:3,big:[],intuit:[],bit:[2,3,1],formal:2,recret:[],leisur:1,docutil:2,altough:[],manifest:[2,3],collect:2,popular:3,often:[2,1],some:[0,2,3,1],back:2,global:[],understood:[],ljenv:2,cgihttpserv:1,pep:[],werkzeug:[],cgi:[],previou:3,viabl:2,impos:[],constraint:1,materi:[4,3,1],block:[],repair:[],primarili:[],ensur:2,chang:[2,1],lesson:1,question:2,submit:2,custom:3,includ:[0,2],suit:[3,1],larri:2,repeatedli:2,pwd:2,b60ea2bb70:[],link:[2,1],delta:[],line:[0,2],info:2,url_for:[],consist:[],cid:[],planet:[],similar:[2,3],mymodel:2,parser:1,chao:[],doesn:2,lectur:[0,3],titl:2,scrape:3,transport:1,nice:3,llvm:2,mongodb:2,meaning:2,vice:[],rst2latex:2,depth:[0,1],came:[],hello:1,oop:2,code:[2,3],partial:[],sqlserver:2,pymysql:[],broader:[],tomayko:1,send:[2,3],aris:2,sent:2,wipe:[],hive:[],"try":[],pleas:[2,3,1],natur:[],uniqu:2,video:1,download:2,carlo:[],click:[],folk:[],compat:2,index:2,compar:[],access:[0,1],len:2,madelin:[],bodi:2,let:2,becom:2,sinc:2,convert:2,convers:1,implement:[0,2,3,1],chanc:3,appli:3,gatewai:3,from:[0,2,3,1],commun:[0,3],next:[2,1],websit:[2,3],few:2,usr:2,sort:[],train:2,account:[],retriev:[],scalabl:2,fetch:2,thie:1,sqlite:2,quickstart:[],tar:2,process:[0,2,3],sudo:2,high:2,tag:[],tal:[],onlin:[2,3],cache_max_ag:2,gcc:2,sit:1,instead:2,chri:1,delai:2,attend:0,other_sess:2,"6mb":2,attent:[],philosophi:1,drop:[],add_al:2,bind:2,element:2,issu:[],chief:[],allow:[0,2,3,1],elif:[],insight:3,chosen:[],silmarillion:[],greater:1,python:[],auto:[],dai:3,hateoa:1,httplib2:1,front:3,tilkov:1,anyth:2,mode:2,"static":2,special:2,out:[],variabl:[],influenc:[],defend:1,categori:2,rel:[],clone:2,clarifi:2,insid:2,workflow:[],frank:[],manipul:2,zodb:2,nowher:2,"0x1103d9f10":2,could:[2,1],ask:2,keep:[0,2,3],length:2,enforc:1,outsid:2,south:[],softwar:2,qualiti:3,scene:[],echo:3,exact:[],models_valu:2,licens:[2,1],mkdir:2,system:[0,2,1],messag:[2,3],attach:[],termin:2,"final":[0,2,3],low:0,udp:1,shell:2,shelf:2,models_id:2,rst:[],exactli:[],embodi:2,structur:[0,3,1],charact:2,"782d17e":[],bet:[],py2:2,py3:2,have:[0,2,3,1],disadvantag:[],need:[0,2,1],paramiko:1,afraid:2,ephemer:2,which:[2,3],itsdanger:[],soap:[3,1],singl:[0,2,3],unless:[],ds_store:2,deploy:[],whl:2,oracl:2,deploi:[],pyc:2,why:[],dens:0,request:[2,3,1],pipe:[],determin:[2,3],fact:3,tolkien:[],text:2,rough:2,trivial:[],identityset:2,locat:2,should:[0,2,3],suppos:1,"__tablename__":2,local:2,hope:1,move:[2,3],pull:2,familiar:0,pypi:2,increas:1,pastedeploi:2,enabl:0,organ:1,integr:0,contain:[2,3],paster:2,view:[],dbsession:2,perdido:[],knowledg:[0,2,1],packet:1,closer:2,statu:2,correctli:[],pattern:[2,3],tend:2,favor:[],written:[3,1],progress:[0,3],neither:1,email:2,kei:2,job:2,entir:2,jog:0,addit:[],admin:3,trove:3,wsgiref:1,configpars:2,etc:2,instanc:2,typifi:2,arriv:[],walk:3,solv:[],tuesdai:0,quit:[2,3],divid:2,addition:2,compon:[],json:[3,1],rpclib:1,eloqu:[],treasur:3,bulk:2,untrack:2,togeth:[2,3],present:[],ingredi:2,plain:2,cursor:[],defin:[2,1],wild:3,dbapi2:2,layer:[2,1],ripe:3,site:[2,3],cherrypi:[],lightweight:1,incom:[],pyramid_chameleon:2,undecid:[],welcom:2,began:[],handl:2,demoenv:2,http:[2,3,1],context:[],absorb:2,effect:[],student:[0,3],decoupl:[],markupsaf:[],off:[2,1],center:[],well:[0,2,1],exampl:[0,2,3],command:[0,2],choos:[0,2],undefin:[],latest:1,tcp:[],emtpi:2,web:[],jinja:[],add:2,book:[],logger:2,homework:[],rdbm:[],xmlrpc:[3,1],agnost:[],arguabl:3,know:[0,2,1],recurs:[],python2:2,insert:[],like:[2,3,1],lose:2,page:[0,2,1],didn:[2,1],captur:2,home:2,librari:[0,2,3,1],guid:1,lead:3,interfaceerror:[],broad:0,leav:2,investig:3,journal:[2,3],usag:[0,2],host:2,although:2,about:[],actual:2,socket:[],column:2,datagram:1,own:[2,3],easy_instal:2,automat:2,pcreat:2,merg:[],val:2,transfer:1,appl:2,add_url_rul:[],xerox:2,gain:[0,2,3],inlin:2,count:2,made:[2,1],wish:[2,1],troubl:1,below:[],problem:[],evalu:[],"int":2,dure:3,ini:2,pip:2,duru:2,probabl:[],detail:2,virtual:2,other:[0,2,3,1],rememb:2,mxodbc:[],databaseinterfac:[],syllabu:2,xmlrpclib:3,models_nam:2,htmlparser:3},objtypes:{},objnames:{},filenames:["index","readings","presentations/session01","outline","presentations/index"],titles:["Internet Programming with Python","Course Readings","Session 01","Course Outline","Course Presentations"],objects:{},titleterms:{wsgi:[3,1],protocol:[3,1],queri:[],tcp:[3,1],session:[2,3,1],sqla:2,dynam:[],web:[2,3,1],tire:[],flask:[],oooop:[],fix:[],activ:2,enough:[],environment:[],program:0,present:4,persist:[3,1],kick:[],applic:[2,3,1],rollback:[],get:[],python:[0,2],safe:[],framework:[],jinja2:[],homework:2,now:[],requir:0,introduct:2,insert:[],edit:[],parameter:[],revers:[],revert:[],authent:[3,1],"try":[],slide:[],quick:[],prepar:3,view:[3,1],set:[],old:[],result:[],our:2,out:[],virtualenv:2,separ:2,what:0,forcibl:[],databas:2,introspect:[],state:[],internet:0,refer:[0,3],cgi:[3,1],run:[],extend:3,gener:[],debug:[],step:[],orm:2,dictionari:[],valu:[],addit:[],search:0,socket:[3,1],filter:[],tutori:[],context:[],action:[],transact:[],first:2,prerequisit:0,render:[3,1],overview:0,app:[],deploi:3,terminolog:2,walkthrough:[],api:[3,1],instal:2,your:[],git:[],interact:2,three:2,todai:[],"class":0,compon:2,start:2,much:[],master:[],statement:[],basic:3,forward:[],popul:[],schema:[],fork:[],populatedb:[],sqlite3:[],form:[3,1],about:2,sqlalchemi:2,virtuelenv:2,congratul:[],word:2,setup:[],outlin:3,project:2,can:[],problem:[],more:[],expect:0,control:[],"function":[],pyramid:[2,3,1],virtualenvwrapp:[],creat:2,deactiv:2,templat:[],packag:2,intro:[],mvc:[2,3,1],work:2,check:[],again:[],decor:[],cours:[4,3,1],develop:[],goal:[],rout:[],note:[],preserv:[],html:[],read:1,branch:[],test:[],verifi:[],concern:2,simpl:[],updat:[],express:[],thi:0,deploy:[3,1],object:[],sql:[],data:[3,1],why:2,practic:[],url:[],flow:[],rule:[],django:[3,1],clean:2,far:[],model:2,sesstion:[3,1],mashup:[3,1]}}) \ No newline at end of file +Search.setIndex({envversion:42,terms:{interchang:1,ronach:5,stub:[],aug:1,sorri:1,authorid:[],concret:1,under:[],dest_dir:1,worth:[1,3],digit:3,everi:1,rise:[],adodbapi:[],govern:[4,2],herbert:3,imaplib:2,"544kb":[],direct:1,batch:1,enjoi:[],second:[1,3],street:[],nthi:3,even:[1,2,5],"new":[],ever:5,metadata:1,behavior:[1,3],createdb:[],show_profil:[],here:[4,5,1,3],china:[],path:[1,3],interpret:[1,3],credit:1,studi:5,portabl:4,golden:3,wikimedia:[1,3],total:[],unit:[],highli:4,describ:[],would:[1,3],hellstrom:[],call:[5,1,3],typo:1,recommend:[],type:[1,2,3],tell:1,"5fb97f3":[],panach:3,notic:[1,3],phone:3,moin:[],unpack:1,must:[4,1,3],word:[],flaskenv:[],restor:1,spec:5,conceptu:3,root:[],repoz:1,give:[4,1],smtp:5,want:[4,5,1,3],end:[4,5,2,3],learning_journ:[1,3],book_insert:[],concis:2,env:1,answer:3,verifi:[],perspect:5,anon_1:1,after:[1,3],superus:1,diagram:1,befor:[1,2,3],wrong:1,parallel:5,demonstr:[1,2],attempt:[],classmethod:[1,3],think:[5,1,3],receiv:[2,3],scoped_sess:1,dispar:2,environ:[4,1,2],enter:3,lambda:3,engine_from_config:[1,3],order:[4,1,2,3],oper:[4,3],feedback:[],over:[5,1,2,3],becaus:[1,3],privileg:1,flexibl:1,digest:5,fit:[],fix:[],toolbelt:3,comprehend:5,better:[1,5],complex:[1,2],comprehens:5,howdi:3,easier:[5,1,3],them:[4,1,2,3],thei:[4,5,1,2,3],"break":[1,3],sqlite3:[],jinja2:[],initializedb:1,importantli:[],choic:[4,1,2,5],each:[0,1,2,4],went:3,side:[5,3],bone:3,mean:[1,2,3],laboratori:4,doug:2,logo:3,ooop:[],extract:[2,5],network:[4,5,2,3],goe:[1,3],god:1,newli:[],content:3,rewrit:[],got:[1,3],navig:4,nightmar:1,situat:1,free:3,standard:[4,1,2,5],kit:5,traceback:[],static_url:3,isn:3,confus:3,pristin:[],rang:[4,3],independ:1,demostr:[],hook:1,unlik:[],alreadi:[1,3],wrapper:[],fantast:[4,1,5],primari:[1,3],top:[1,3],"0x1103e38d0":1,sometim:1,travers:[],too:[5,1,3],tom:1,my_view:3,consol:1,namespac:[],tool:[4,1,2,5],setuptool:1,took:1,technic:[],keyword:3,provid:[4,5,1,2,3],tree:1,project:[],minut:3,contenti:[],ran:1,modern:[1,2],mind:5,rat:[],pylon:1,increment:[],"__main__":[],seen:[1,3],doctyp:3,seek:1,strength:2,latter:1,thorough:[5,3],"0x1103e3fd0":1,transmit:1,plenti:[],though:5,usernam:3,object:[],regular:1,specifi:3,tradit:3,don:[4,5,1,3],doc:1,metal:[],doe:[4,5,1,2,3],notnul:[],declar:[1,3],unchang:5,sum:3,dot:3,opposit:3,random:[],syntax:[4,5,3],radio:3,identifi:3,edit_entri:[],absolut:3,nobodi:[],layout:[5,2,3],explain:[1,5],configur:[5,1,3],kessler:5,disert:5,rich:[4,2],folder:[1,3],patter:3,stop:[1,3],report:[],bat:5,bar:3,"public":3,reload:[],told:[],steal:1,respond:3,habit:[],disucss:2,result:[],respons:[],fail:[],hash:[],best:1,subject:[],pythoncert:[1,3],txpostgr:[],wikipedia:[1,5],urllib:2,mysql_length:1,figur:1,score:1,outstand:3,awai:1,enlighten:5,approach:[4,1],paster:[1,3],never:1,extend:[],weak:2,extens:4,html5:[2,3],protect:[],howev:[1,3],against:3,logic:[1,3],browser:[1,2,3],com:[1,3],compromis:4,get_appset:[1,3],trunk:3,trust:1,assum:1,speak:[2,3],add_rout:[1,3],three:[],been:[1,3],interest:5,basic:[],quickli:1,life:2,setup_log:[1,3],argument:[1,3],ident:[],servic:[2,5],properti:[],commerci:1,pyramid:[],varchar:1,tediou:1,sever:5,mievil:[],perform:[1,3],make:2,couchdb:1,drawback:2,complet:[4,5,1,2,3],hand:3,kib:[],"548kb":1,hypothet:1,inherit:[1,3],client:[5,1,2,3],greatest:[],thi:[],endif:3,everyth:[4,5,1,3],left:[1,5],protocol:[],just:[5,1,3],human:[5,3],yet:[1,3],languag:[4,1,2,3],previous:2,alchemi:1,easi:[5,1,3],shout:3,httpfound:3,els:[1,3],save:[1,3],gave:1,applic:[],mayb:[],leisur:5,parse_var:1,apart:[5,3],specif:[5,1,2,3],arbitrari:1,manual:1,install_requir:1,underli:[4,2],www:[],right:[4,5,3],deal:5,nfrom:1,aspen:[],successfulli:1,transmiss:5,txt:1,cooper:[],subclass:[],ssh2:5,exectut:1,foo:3,localhost:3,core:5,jsonp:3,confer:2,repositori:[1,3],post:3,chapter:[1,5],postgresql:1,surround:3,commit:1,blabber:1,bound:1,curios:2,down:3,creativ:[1,3],storag:1,guardia:[],wai:[4,5,1,2,3],support:[4,5,1,2,3],"class":[],avail:[1,3],editor:[],head:3,form:[],offer:[5,1,2,3],forc:5,sqlalchemi:[],lignt:2,"true":[1,3],reset:[],attr:3,strip_filt:3,until:1,fundament:[4,2],intitalizedb:1,featur:[1,2,5],"abstract":1,proven:1,exist:[1,3],glanc:5,check:[],assembl:3,encrypt:5,mashup:[],excel:[5,3],role:3,test:[],tie:[],webob:1,roll:[],relat:[1,5],intend:[4,1],urllib2:2,djangocon:5,intent:4,consid:[5,1,3],initialize_learning_journal_db:1,ignor:[1,5],time:[1,5],push:1,breadth:5,concept:[4,1,2,5],chain:[1,3],skip:1,consum:[2,5],focus:5,invent:1,supplement:5,skim:5,row:1,decid:[],depend:[1,2,3],graph:3,readabl:3,unpython:1,certainli:3,decis:[],sourc:[0,1,2,3,4,5],string:[5,1,3],lru:1,kitten:1,ydood:3,brows:[2,3],level:[4,1],did:[1,3],dig:3,iter:1,item:[1,3],unsupport:[],team:1,div:[],declarative_bas:1,upper:3,restkit:5,appear:3,repli:2,scaffold:1,beautifulsoup:[2,5],"75a8462":[],current:1,rst2xml:1,deriv:2,gener:[],address:[5,3],along:[4,2,5],pysqlit:[],bob:1,blog_upd:[],modul:[4,1,2,5],fake:[],marker:3,fetch_head:[],market:1,prove:[],univers:5,visit:3,todai:[],live:1,criteria:1,checkout:[],pyarmid:[],appendix:[],templat:[],obj:[1,3],behalf:3,prepar:[],focu:2,whatev:3,purpos:[1,2,3],boilerpl:1,stream:1,topic:[5,3],critic:5,app_factori:1,disadvantag:[],occur:[],nearli:1,alwai:1,multipl:1,winter:4,tilt:[],charset:3,write:[5,1,3],anyon:3,map:[],product:[1,5],max:3,dive:[4,2],date:1,classroom:1,bookdb:[],explicit:3,produc:2,tale:[],ephemer:1,"switch":1,combin:[4,1,2,3],callabl:3,talk:[5,1,2,3],shield:2,ydwoh:3,brain:[],populate_db:[],gitignor:1,still:[1,3],config_uri:[1,3],group:1,how:[4,5,1,2,3],window:1,curli:3,main:[1,3],non:[],killer:2,initi:[1,5],discuss:[5,1,2,3],term:[4,1],name:[5,1,3],config:[1,3],interpr:1,separ:[],magazin:[5,3],januari:4,"8873ba1":[],compil:5,domain:[5,1,3],"0x105849b90":3,replac:3,individu:[1,3],continu:[1,2],happen:[1,3],accomplish:5,profil:[],correct:3,tmpl:3,earlier:1,bookid:[],argv:1,orm:[],inevet:[],org:[],"byte":[],care:5,turn:[5,1,3],place:[1,2,3],principl:4,imposs:1,frequent:1,first:[],origin:[1,2,5],directli:[1,3],onc:[1,2,3],yourself:4,"long":[1,2],open:3,given:[4,5,1,2,3],sheet:3,bookmark:5,cx_oracl:[],eachoth:1,conveni:1,pocoo:[],repostitori:[],copi:3,artifact:1,github:[1,3],mostli:5,domin:1,than:[5,1,3],matchdict:3,serv:[2,3],footer:3,were:1,conn2:[],conn1:[],seri:1,sai:1,ani:[4,5,1,3],properli:3,saw:1,engin:[1,3],techniqu:[],ideal:[],take:[5,1,2,3],reload_templ:1,noth:[1,3],channel:1,begin:[1,2,3],sure:[1,3],pain:1,trace:1,normal:1,track:[],compress:[],cgitb:[],pair:[1,2,3],homepag:5,sesstion:[],later:[],drive:5,"8mb":1,create_al:1,show:[1,3],german:[],my_index:1,checkbox:3,dflt_valu:[],ground:4,xml:[1,3],onli:[1,3],explicitli:1,activ:[],dict:1,translationstr:1,flask_intro:[],variou:[1,2,3],get:[],clang:1,cannot:3,utf:3,requir:[],where:[1,3],wiki:[],n10:3,test_request_context:[],review:[1,3],label:3,behind:[1,5],between:[4,1,2],"import":[1,3],across:[4,2],pretti:1,parent:1,cycl:[1,3],come:[1,3],tutori:[],wherin:1,mani:[5,1,3],among:[1,2,3],unittest:2,dispatch:5,typic:1,coupl:1,zpt:[],evangelista:[1,3],workshop:4,emphas:4,docxmlrpcserv:2,repres:[1,3],those:1,"case":[5,1,3],cast:1,outcom:1,python_web:[1,3],advantag:1,stdout:1,worri:[],destin:[],smalltalk:1,author:[],cc0:[1,3],same:[5,1,2,3],pai:[],eventu:1,week:[4,5,1,2,3],finish:[1,3],assist:1,driven:3,improv:1,extern:5,appropri:[2,3],choos:[4,1,3],macro:[],without:[1,3],model:[],execut:[4,1,5],when:[5,1,3],rest:[1,2,5],kill:1,aspect:[1,3],monei:[],versu:4,except:[1,3],littl:3,apache2:5,identif:[],exercis:[4,2],real:[2,3],around:[5,3],read:[],makin:3,dark:[],world:[5,1,2,3],integ:1,server:[5,1,2,3],benefit:2,either:3,cascad:3,manag:1,alan:[1,3],b60ea2bb7052a5bd300772d7d9d40b19b27f7a1b:[],definit:3,exit:1,notabl:[],refer:[],power:[5,1,2,3],fulli:[],regexp:3,comparison:5,central:1,acl:[],microframework:1,stand:[1,3],mytempl:[1,3],effici:4,console_script:1,interleav:[],strip:3,foreward:[],hew:[],httpnotfound:3,aren:1,start:[],interfac:[1,2,5],ipv4:5,lot:[5,1,3],ipv6:5,"0x10b075ed0":1,machin:[4,5,1,2,3],lang:3,bottl:[],freddi:3,notat:3,dirti:1,possibl:[5,3],"default":[1,3],expect:[],gone:1,creat:[],certain:1,deep:5,intro:[],file:[4,1,2,3],fill:3,models_valu:1,googl:1,compel:1,field:[1,3],valid:3,copiou:5,you:[4,5,1,2,3],juic:3,symbol:3,briefli:3,pool:5,reduc:1,wife:5,directori:[1,2,3],descript:1,scroll:[],alright:[],represent:1,all:[4,1,2,3],skeleton:1,scalar:1,abil:1,follow:[5,1,2,3],articl:[1,3],init:1,program:[],introduc:[4,1,2,3],liter:1,straightforward:[],chameleon:3,mcdonough:5,util:[1,5],fall:1,veri:[5,1,2,3],egg_info:1,list:[4,5,1,3],last_nam:3,adjust:1,small:[],sync:2,past:1,design:[4,5,1,2,3],pass:[5,1,2,3],further:3,pyodbc:[],what:[],sud:5,section:[5,1,3],abl:[1,3],brief:[2,5],delet:4,version:[4,1,2],primary_kei:1,intersect:3,deepli:4,method:[1,3],contrast:4,full:[4,1,2],themselv:[],berkelei:5,inher:2,strong:3,valu:[],ahead:3,pick:3,add_static_view:[1,3],via:[1,3],deprec:1,href:3,greenwitch:[],select:[4,1],two:[5,1,3],more:[],flat:[],flaw:3,mozilla:[5,3],particular:[5,1,3],known:[],cach:1,none:[1,3],endpoint:[],hour:[2,3],outlin:[],fast:1,dev:[],histori:[],venusian:1,remain:5,learn:[4,5,1,2,3],abandon:[],rst2html:1,def:[1,3],prompt:[1,2],scan:[1,3],share:[1,3],accept:[1,3],explor:[4,1,2],phrase:[1,3],scar:[],cours:[],first_nam:3,secur:[5,3],anoth:[1,2,3],comfort:[4,3],"__init__":[1,3],csv:[1,3],simpl:[],css:[5,3],"545kb":1,resourc:[5,3],referenc:3,okai:1,associ:2,"short":5,susan:[],django:[],caus:1,hobbit:[],egg:1,constitu:3,help:[4,5,1,2,3],mainthread:1,hypertext:5,soon:3,through:[4,5,1,2,3],paramet:[],style:[1,3],psycopg2:1,relev:1,pserv:3,might:[5,1,3],alter:[],pce:[4,3],good:[4,1,2,5],"return":[1,3],pollut:1,cew:1,framework:[],httplib:2,document:[0,1,2,3,4,5],instruct:[1,5],authent:[],easili:[5,1,3],achiev:[],compris:1,found:[1,3],unicod:[1,3],reconcil:[],hard:[1,2],idea:[1,2],realli:[5,3],connect:[5,1,3],blog_creat:[],thing:[5,1,3],orient:1,publish:[1,5],research:1,bubbl:3,print:[1,3],url_map:[],uwpc:[1,3],uncommit:1,new_model:1,dune:[],reason:3,base:[4,1],put:[1,3],thread:[],by_id:[1,3],perhap:3,perman:1,assign:[4,1,2,3],feel:3,number:[5,1,3],placehold:3,done:[1,3],least:[1,3],stdlib:[],miss:1,differ:[1,2,3],superpow:[],script:[5,1,2,3],interact:[],construct:[1,3],station:[],order_bi:1,statement:[],zeromq:5,scheme:[],store:1,luckili:[1,3],parc:1,option:[1,5],relationship:2,part:[],pars:[1,5],fred:1,king:[],kind:3,grew:[],remot:[1,5],remov:1,reus:[],str:1,consumpt:[2,5],comput:[4,2,5],packag:[],imagin:3,built:[5,1,2,3],lib:1,carlo:[],also:[4,5,1,2,3],append:1,textareafield:3,brace:3,distribut:1,kai:1,interpol:[],reach:[],chart:[1,3],most:[1,2,3],plai:[1,3],path_info:[],swiftli:[],clear:2,cover:[4,1,5],clean:[],usual:1,wsgi:[],session:[],entry_point:1,fine:3,find:[5,1,2,3],cell:[],nosql:1,copyright:1,solut:1,"172kb":1,factor:1,smtplib:2,darwin:1,hit:[],unus:1,wrinkl:[],restart:3,rfc:5,common:[1,2,3],nowher:1,certif:[4,3],creator:5,overwhelm:1,"0x1103e3f50":1,see:[1,2,3],bare:3,sea:2,arg:1,close:3,pyrami:[],someth:[1,3],particip:4,blog_act:[],subscript:3,experi:2,altern:[1,5],javascript:3,isol:1,succeed:[],pymssql:[],both:[5,1,2,3],last:[1,3],unstag:1,load:3,simpli:[1,3],point:1,instanti:1,header:3,route_url:3,param:[],mistak:1,throughout:4,blog:2,empti:[1,3],hellmann:2,runner:[],newcom:[],rstpep2html:1,strategi:[],versa:[],fire:[1,3],imag:3,great:[5,1,2,3],coordin:1,understand:[4,5],instructor:[],look:[5,1,2,3],solid:[4,5],histor:[4,5],"while":[1,2],executemani:[],match:[5,3],abov:[1,2],error:[1,3],fun:3,engl:[],readi:[1,3],readm:1,itself:1,zopetransactionextens:[],minim:5,wherein:3,zope:1,conflict:1,moment:[1,3],temporari:3,user:2,wherev:[],stack:[4,2,5],recent:1,lower:[5,3],task:[4,3],find_packag:1,entri:[],doodi:3,pickl:1,person:3,endfor:3,spend:3,explan:[],make_wsgi_app:1,"__path__":1,shape:4,mysql:1,session05:[],session04:[],session06:[],session01:[],session02:3,cur:[],restructuredtext:1,global_config:[1,3],populate_obj:3,armin:5,input:[],build:[4,5,1,2,3],bin:[1,3],march:4,format:[2,3],big:[],intuit:[],game:3,blogcreateform:[],bit:[5,1,2,3],formal:1,recret:[],an_id:[],docutil:1,altough:[],manifest:[1,2],collect:[1,3],popular:2,often:[1,5],some:[4,5,1,2,3],back:[5,1,3],global:[],understood:[],sampl:3,ljenv:[1,3],cgihttpserv:5,pep:[],werkzeug:[],cgi:[],previou:2,viabl:1,impos:[],constraint:5,materi:[0,2,5],memori:4,block:3,repair:[],primarili:[],ensur:1,chang:[5,1,3],lesson:5,html5shiv:3,question:[1,3],stylesheet:3,submit:[1,3],custom:2,heroku:3,prettier:3,suit:[2,5],larri:1,repeatedli:1,pwd:1,b60ea2bb70:[],link:[5,1,3],delta:[],line:[4,1,3],info:1,url_for:[],consist:[],cid:[],planet:[],similar:[1,2],mymodel:[1,3],parser:5,chao:[],doesn:[1,3],lectur:[4,2],titl:[1,3],scrape:2,nav:3,transport:5,nice:[2,3],llvm:1,mongodb:1,meaning:1,index_pag:3,vice:[],rst2latex:1,discrimin:[],depth:[4,5],came:[],hello:[5,3],oop:1,code:[5,1,2,3],partial:[],sqlserver:1,pymysql:[],ljshell:3,broader:[],bathtim:3,tomayko:5,send:[5,1,2,3],aris:1,sent:[1,3],wipe:[],tri:3,magic:3,button:3,hive:[],"try":[],race:3,particularli:3,pleas:[1,2,5],natur:3,uniqu:[1,3],video:5,download:[1,3],odd:3,click:3,folk:[],compat:1,index:[1,3],compar:[],resembl:3,access:[4,5],len:1,madelin:[],bodi:[1,3],let:[1,3],becom:1,sinc:[1,3],convert:[1,3],didn:[1,5],convers:5,implement:[4,1,2,5],maker:3,chanc:2,appli:[2,3],gatewai:2,"__name__":[],from:[4,5,1,2,3],commun:[4,2],next:[5,1,3],websit:[1,2,3],few:[1,3],usr:1,sort:[],src:3,babi:3,train:[1,3],account:3,retriev:3,scalabl:1,fetch:[1,3],thie:5,sqlite:1,quickstart:[],tar:1,process:[4,1,2,3],sudo:1,high:1,tag:3,tal:[],onlin:[1,2],cache_max_ag:[1,3],gcc:1,sit:5,pyramid_jinja2:3,instead:[1,3],chri:5,delai:1,attend:4,other_sess:1,"6mb":1,attent:[],philosophi:5,physic:3,add_al:1,bind:[1,3],element:[1,3],issu:[],chief:[],allow:[4,5,1,2,3],elif:3,insight:2,chosen:[],silmarillion:[],greater:5,python:[],auto:[],spell:3,dai:[2,3],hateoa:5,httplib2:5,front:2,tilkov:5,somewher:3,anyth:1,entrycreateform:3,mode:1,sessionmak:[1,3],meta:3,"static":[],special:[1,3],out:[],variabl:[],influenc:[],defend:5,categori:1,rel:3,clone:[1,3],clarifi:1,insid:1,workflow:[],frank:3,manipul:1,zodb:1,yore:3,log:[1,3],cri:3,"0x1103d9f10":1,could:[1,5],ask:1,keep:[4,1,2],length:[1,3],enforc:5,outsid:1,south:[],softwar:[1,3],qualiti:2,scene:[],echo:2,exact:3,mai:[1,5],match_param:3,owner:3,licens:[1,5],mkdir:1,system:[4,5,1,3],messag:[1,2],attach:[],termin:1,"final":[4,1,2,3],low:4,udp:5,shell:1,shelf:1,models_id:1,rst:[],textfield:3,exactli:3,route_nam:3,embodi:1,roberto:3,structur:[4,5,2,3],charact:[1,3],sens:3,"782d17e":[],bet:[],py2:1,py3:1,have:[4,5,1,2,3],tabl:[1,3],need:[4,5,1,3],paramiko:5,afraid:1,min:3,which:[5,1,2,3],itsdanger:[],soap:[2,5],singl:[4,1,2,3],unless:[],ds_store:1,deploy:[],whl:1,who:3,oracl:1,deploi:[],pyc:1,segment:3,why:[],dens:4,request:[],wtform:[],face:3,pipe:3,determin:[1,2,3],fact:[2,3],tolkien:[],text:[1,3],bring:3,rough:1,trivial:[],identityset:1,locat:[1,3],should:[4,1,2,3],suppos:5,"__tablename__":1,local:[1,3],hope:5,move:[1,2],pull:1,familiar:4,pypi:1,increas:5,smash:[5,3],pastedeploi:1,enabl:4,organ:5,"0x10e7d6b90":3,stuff:3,integr:4,contain:[1,2,3],attribut:[1,3],view:[],dbsession:[1,3],perdido:[],knowledg:[4,1,5],packet:5,closer:1,statu:1,wire:3,correctli:3,pattern:[5,1,2,3],tend:1,favor:[],written:[5,2,3],progress:[4,2],neither:5,email:1,kei:[1,3],job:[1,3],entir:1,jog:4,addit:[],admin:2,trove:2,wsgiref:5,configpars:1,etc:[1,3],instanc:1,comment:3,typifi:1,this_id:3,arriv:3,walk:2,solv:[],tuesdai:4,quit:[5,1,2,3],divid:1,addition:1,compon:[],json:[5,2,3],rpclib:5,eloqu:[],treasur:2,bulk:1,untrack:1,togeth:[1,2,3],present:[],ingredi:1,plain:[1,3],cursor:[],defin:[5,1,3],wild:2,dbapi2:1,endblock:3,layer:[1,5],ripe:2,demo:3,site:[1,2,3],inform:[4,5,1,2,3],cherrypi:[],lightweight:5,incom:3,pyramid_chameleon:[1,3],undecid:[],welcom:1,began:[],handl:[5,1,3],demoenv:1,http:[],context:[],absorb:1,effect:[],student:[4,2],decoupl:[],markupsaf:[],off:[5,1,3],center:[],well:[4,1,5],exampl:[4,1,2,3],command:[4,1,3],filesystem:[2,3],undefin:3,latest:5,svn:3,tcp:[],emtpi:1,web:[],jinja:[],nullabl:3,add:[],book:3,logger:1,homework:[],rdbm:[],xmlrpc:[2,5],agnost:3,piec:3,arguabl:2,know:[4,5,1,3],password:3,recurs:[],python2:1,insert:[],like:[5,1,2,3],lose:1,page:[4,5,1,3],drop:3,captur:[1,3],proper:3,home:[1,3],librari:[4,5,1,2,3],guid:5,lead:[2,3],interfaceerror:[],broad:4,leav:[1,3],blog_view:3,investig:[2,3],journal:[1,2,3],usag:[4,1],facilit:5,host:1,although:[1,3],about:[],actual:[1,3],socket:[],column:1,datagram:5,includ:[4,1,3],own:[1,2,3],easy_instal:1,automat:[1,3],pcreat:[1,3],merg:[],val:[1,3],transfer:5,appl:1,add_url_rul:[],xerox:1,gain:[4,1,2],inlin:1,count:1,made:[5,1,3],view_config:3,wish:[1,5],googlecod:3,displai:3,troubl:5,below:[],problem:[],evalu:[],"int":1,dure:2,pid:3,ini:[1,3],pip:1,duru:1,probabl:3,detail:[],virtual:1,other:[4,5,1,2,3],lookup:3,rememb:[1,3],mxodbc:[],databaseinterfac:[],syllabu:1,xmlrpclib:2,models_nam:1,portion:3,htmlparser:2},objtypes:{},objnames:{},filenames:["presentations/index","presentations/session01","outline","presentations/session02","index","readings"],titles:["Course Presentations","Session 01","Course Outline","Session 02","Internet Programming with Python","Course Readings"],objects:{},titleterms:{wsgi:[2,5],protocol:[2,5],queri:[],tcp:[2,5],session:[5,1,2,3],sqla:1,dynam:[],web:[1,2,5],tire:[],flask:[],oooop:[],transact:[],activ:1,state:[],environment:[],add:3,program:4,present:[0,3],persist:[2,5],input:3,kick:[],applic:[1,2,5],rollback:[],get:3,python:[4,1],safe:[],framework:[],jinja2:3,homework:[1,3],now:[],requir:4,introduct:1,insert:[],edit:3,parameter:[],revers:[],revert:[],authent:[2,5],"try":[],slide:[],quick:[],prepar:[2,3],view:[5,2,3],set:[],old:[],"static":3,result:[],respons:3,our:[1,3],out:[],virtualenv:1,separ:1,what:4,forcibl:[],databas:1,introspect:[],enough:[],internet:4,"new":[],refer:[4,2],cgi:[2,5],run:[],extend:2,gener:[],debug:[],step:[],orm:1,dictionari:[],valu:[],addit:[],search:4,socket:[2,5],filter:[],tutori:[],context:[],action:[],fix:[],first:[1,3],prerequisit:4,render:[5,2,3],overview:4,app:[],deploi:2,terminolog:1,walkthrough:[],api:[2,5],instal:1,your:3,git:[],interact:[1,3],three:1,todai:[],"class":4,compon:1,start:1,much:[],master:[],asset:3,statement:[],basic:[2,3],forward:[],popul:[],schema:[],fork:[],populatedb:[],sqlite3:[],form:[2,5],about:1,sqlalchemi:1,virtuelenv:1,congratul:[],word:1,setup:[],outlin:2,project:1,can:[],problem:[],more:[],expect:4,control:3,"function":[],pyramid:[5,1,2,3],virtualenvwrapp:[],creat:1,deactiv:1,flow:[],templat:3,packag:1,intro:[],mvc:[5,1,2,3],work:1,check:[],again:[],decor:[],cours:[0,2,5],develop:[],goal:[],make:3,detail:[],note:[],preserv:[],html:[],read:5,branch:[],test:[],verifi:[],concern:1,simpl:[],updat:[],express:[],http:3,thi:4,deploy:[5,2,3],object:[],rout:3,user:3,sql:[],data:[5,2,3],why:1,practic:[],url:[],entri:[],request:3,wtform:3,rule:[],django:[2,5],part:3,clean:1,far:[],model:[1,3],sesstion:[2,5],mashup:[2,5]}}) \ No newline at end of file diff --git a/slides/_sources/presentations/index.txt b/slides/_sources/presentations/index.txt index 9140ae4b..5fae542a 100644 --- a/slides/_sources/presentations/index.txt +++ b/slides/_sources/presentations/index.txt @@ -16,3 +16,4 @@ course. :maxdepth: 2 session01 + session02 diff --git a/slides/_sources/presentations/session01.txt b/slides/_sources/presentations/session01.txt index 00248064..d0d5e7be 100644 --- a/slides/_sources/presentations/session01.txt +++ b/slides/_sources/presentations/session01.txt @@ -1394,7 +1394,7 @@ It's pretty easy to play with your models from in an interpreter. >>> from sqlalchemy.orm import sessionmaker >>> Session = sessionmaker(bind=engine) >>> session = Session() - >>> from learning_journal.models MyModel + >>> from learning_journal.models import MyModel >>> session.query(MyModel).all() [] @@ -1711,9 +1711,11 @@ Since methods in this category return ``Query`` objects, they can be safely Homework ======== +.. rst-class:: left + Okay, that's enough for the moment. -.. rst-class:: build +.. rst-class:: build left .. container:: You've learned quite a bit about how *models* work in SQLAlchemy @@ -1728,7 +1730,8 @@ Okay, that's enough for the moment. I'll also ask you to define a few methods to complete the first part of our API. -.. nextslide:: The Model +The Model +--------- Our model will be called an ``Entry``. Here's what you need to know: diff --git a/slides/_sources/readings.txt b/slides/_sources/readings.txt index 52d1d782..8bc1f971 100644 --- a/slides/_sources/readings.txt +++ b/slides/_sources/readings.txt @@ -15,7 +15,7 @@ readings that will support the information you'll learn in class. Think of this as supplemental materials. You can read it at your leisure to help increase both the depth and breadth of your knowledge. -The readings are organized like the class, by session and topic. +The readings are organized like the class, by session and topic. Session 1 - MVC Applications and Data Persistence @@ -46,6 +46,41 @@ understanding of how the SQLAlchemy ORM works. Session 2 - Pyramid Views, Renderers and Forms ---------------------------------------------- +This week we'll be focusing on the connection of an HTTP request to the code +that handles that request using `URL Dispatch`_. Quite a lot is possible with +the Pyramid route system. You may wish to read a bit more about it in one of +the following documentation sections: + +* `Route Pattern Syntax + `_ + discusses the syntax for pattern matching and extraction in Pyramid routes. + +In Pyramid, the code that handles requests is called `a view`_. + +A view passes data to `a renderer`_, which is responsible for turning the data +into a response to send back. + +Getting information from a client to the server is generally handled by +`HTML forms`_. Working with forms in a framework like Pyramid can be +facilitated by using a *form library* like `WTForms`_. + +.. _URL Dispatch: http://docs.pylonsproject.org/docs/pyramid/en/latest/narr/urldispatch.html +.. _a view: http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/views.html +.. _a renderer: http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/renderers.html +.. _HTML forms: https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms +.. _WTForms: http://wtforms.readthedocs.org/en/latest/ + +For layout and design, CSS will be your tool of choice. There is no better tool +for learning CSS than trying things out, but you need a good reference to get +started. You can learn a great deal from the `Mozilla Developer Network`_ CSS +pages. I also find `A List Apart`_ and `Smashing Magazine`_ to be fantastic +resources. + +.. _Smashing Magazine: http://www.smashingmagazine.com +.. _A List Apart: http://alistapart.com +.. _Mozilla Developer Network: https://developer.mozilla.org/en-US/docs/Web/CSS + + Sesstion 3 - Pyramid Authentication and Deployment -------------------------------------------------- diff --git a/slides/_static/custom.css b/slides/_static/custom.css index de26ee70..44274406 100644 --- a/slides/_static/custom.css +++ b/slides/_static/custom.css @@ -159,3 +159,8 @@ article table.docutils tr td { text-decoration: none; border: none; } +.figure p.caption { + font-size: 75%; + text-align: center; +} + diff --git a/slides/presentations/session01.html b/slides/presentations/session01.html index fa6c1e7b..ed4c31bf 100644 --- a/slides/presentations/session01.html +++ b/slides/presentations/session01.html @@ -53,6 +53,7 @@ + @@ -1590,7 +1591,7 @@

    Interacting with SQLA Models

    >>> from sqlalchemy.orm import sessionmaker >>> Session = sessionmaker(bind=engine) >>> session = Session() ->>> from learning_journal.models MyModel +>>> from learning_journal.models import MyModel >>> session.query(MyModel).all() [<learning_journal.models.MyModel object at 0x10b075ed0>]
    @@ -1952,8 +1953,8 @@

    Method Chaining

    Homework

    -

    Okay, that's enough for the moment.

    -
    +

    Okay, that's enough for the moment.

    +

    You've learned quite a bit about how models work in SQLAlchemy

    It's time to put that knowledge to good use.

    For the first part of your assignment this week you will begin to define @@ -1967,9 +1968,9 @@

    Homework

    - +
    -

    The Model

    +

    The Model

    Our model will be called an Entry. Here's what you need to know:

    @@ -1997,9 +1998,9 @@

    The Model

    -
    +
    -

    Words of Advice

    +

    Words of Advice

    Use the documentation linked in this presentation to assist you. SQLAlchemy @@ -2017,9 +2018,9 @@

    Words of Advice

    -
    +
    -

    Submitting Your Work

    +

    Submitting Your Work

    I want to be able to review your code (and you want to be able to share it).

    @@ -2039,9 +2040,9 @@

    Submitting Your Work

    -
    +
    -

    Homework

    +

    The Model

    Our work next week will assume that you have completed this assignment

    diff --git a/slides/searchindex.js b/slides/searchindex.js index 5e385da7..69c0675a 100644 --- a/slides/searchindex.js +++ b/slides/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:42,terms:{represent:2,all:[],concept:2,skeleton:2,queri:[],sqlserver:2,invent:2,interchang:2,scalar:2,code:[],abil:2,follow:2,row:2,depend:2,aug:2,sorri:2,send:2,unpython:2,init:2,concret:2,skip:2,dest_dir:2,aris:2,worth:2,introduc:2,exectut:2,imposs:2,sourc:2,everi:2,string:2,far:2,util:2,lru:2,kitten:2,veri:2,relev:2,level:2,did:2,egg_info:2,restor:2,list:2,"try":2,item:2,adjust:2,team:2,pleas:2,machin:2,direct:2,commerci:2,past:2,second:2,design:[],pass:2,download:2,append:2,compat:2,index:2,what:[],uncommit:2,defin:2,section:2,abl:2,identityset:2,current:2,rst2xml:2,version:2,primary_kei:2,"new":[],fall:2,method:[],metadata:2,full:2,abov:2,gener:2,never:2,here:2,bodi:2,let:2,path:2,becom:2,sinc:2,interpret:2,great:2,convers:[],credit:2,orm:[],action:2,chang:[],explain:2,add_static_view:2,via:2,repositori:2,wikimedia:2,app:[],ask:2,api:2,instal:[],txt:2,market:2,from:2,stream:2,would:2,give:2,two:2,next:2,websit:2,few:2,live:2,call:2,usr:2,typo:2,criteria:2,taken:[],"172kb":2,type:2,tell:2,more:[],exit:2,pyarmid:[],relat:2,notic:2,site:2,train:2,oop:2,particular:2,central:2,unpack:2,cach:2,must:2,none:2,scalabl:2,prepar:2,work:[],uniqu:2,venusian:2,can:2,learn:2,purpos:2,rst2html:2,fetch:2,def:2,boilerpl:2,control:[],sqlite:2,repoz:2,prompt:2,want:2,tar:2,scan:2,process:2,sudo:2,share:2,accept:2,high:2,liter:2,app_factori:2,explor:2,phrase:2,onlin:2,articl:2,yet:2,unus:2,cache_max_ag:2,alwai:2,gcc:2,multipl:2,goal:2,turn:2,anoth:2,write:2,how:2,"__init__":2,env:2,instead:2,csv:2,simpl:2,css:[],updat:2,anon_1:2,delai:2,"545kb":2,other_sess:2,stop:2,clone:2,earlier:2,"6mb":2,superus:2,diagram:2,befor:2,wrong:2,okai:2,mai:2,data:[],demonstr:2,classroom:2,github:2,domin:2,add_al:2,classmethod:2,bind:2,learning_journ:2,element:2,caus:2,inform:2,scoped_sess:2,easy_instal:2,environ:[],allow:2,engine_from_config:2,order:2,talk:2,least:2,help:2,mainthread:2,over:2,move:2,becaus:2,privileg:2,gitignor:2,flexibl:2,style:2,config_uri:2,group:2,render:2,psycopg2:2,fix:2,better:2,window:2,onc:2,main:2,might:2,easier:2,count:2,them:2,good:2,"return":[],thei:2,handl:2,demoenv:2,pollut:2,safe:2,initi:2,bound:2,"break":[],framework:2,initializedb:2,now:2,discuss:2,choic:2,term:2,document:[0,1,2,3,4],name:2,anyth:2,edit:2,config:2,didn:2,separ:[],easili:2,slide:[0,1,3,4],exampl:2,mode:2,compris:2,each:2,debug:2,found:2,unicod:2,mean:2,domain:2,individu:2,hard:2,idea:2,realli:[],"static":2,connect:2,our:[],happen:[],orient:2,special:2,out:2,network:[],goe:2,god:2,publish:2,research:2,categori:2,print:2,got:2,uwpc:2,clarifi:2,after:2,insid:2,new_model:2,nightmar:2,manipul:2,situat:2,given:2,argv:2,standard:2,reason:[],base:[],put:2,wai:2,"0x1103d9f10":2,steal:2,could:2,by_id:2,keep:2,filter:2,thing:2,length:2,mvc:[],place:2,outsid:2,think:2,frequent:2,origin:2,softwar:2,directli:2,"0x1103e38d0":2,independ:2,number:2,sometim:2,hook:2,instruct:2,alreadi:2,done:2,messag:2,fantast:2,primari:2,differ:2,script:[],top:2,mkdir:2,system:[],construct:2,too:2,statement:2,tom:2,termin:2,conveni:2,"final":2,store:2,luckili:2,shell:2,parc:2,option:2,behind:2,shelf:2,tool:2,setuptool:2,took:2,artifact:2,models_id:2,part:2,pars:2,than:2,png:[],serv:[],provid:2,remov:2,tree:2,charact:2,project:[],str:2,were:2,browser:2,sai:2,ran:2,py2:2,py3:2,ani:2,packag:[],larri:2,pylon:2,increment:[],tabl:[],need:2,seen:2,django:2,seek:2,afraid:2,date:2,built:2,lib:2,min:[],rout:2,"switch":2,note:2,also:2,"0x1103e3fd0":2,without:2,take:2,which:2,transmit:2,combin:2,reload_templ:2,noth:2,channel:2,even:2,begin:2,sure:2,pain:2,distribut:2,trace:2,normal:2,whl:2,kai:2,object:[],oracl:2,chart:2,fred:2,most:2,plai:2,regular:2,alan:2,pair:2,pyc:2,why:[],don:2,url:2,egg:2,mymodel:2,cover:2,"8mb":2,doe:2,declar:2,create_al:2,determin:2,uw_pc:[],left:2,review:2,wsgi:2,show:2,text:2,sent:2,my_index:2,session:[],entry_point:2,rough:2,find:2,xml:2,onli:2,explicitli:2,locat:2,nosql:2,pretti:2,transact:2,configur:[],solut:2,state:2,"short":[],theme:[],dict:2,factor:2,"__tablename__":2,folder:2,darwin:2,local:2,info:2,nearli:2,variou:2,declarative_bas:2,pypi:2,clang:2,make_wsgi_app:2,requir:2,intitalizedb:2,embodi:2,common:2,contain:[0,1,2,3,4],through:2,nowher:2,where:2,view:[],set:2,overwhelm:2,knowledg:2,"0x1103e3f50":2,rollback:2,see:2,result:2,respons:2,close:[],best:2,concern:[],closer:2,statu:2,still:2,eachoth:2,pythoncert:2,databas:[],someth:2,wikipedia:2,tend:2,enough:2,score:2,emtpi:2,between:2,"import":2,awai:2,pastedeploi:2,approach:2,email:2,attribut:2,kei:2,isol:2,cycl:2,job:2,entir:2,len:2,come:2,both:2,extens:[],howev:2,configpars:2,etc:2,instanc:2,unstag:2,wherin:2,mani:2,seri:2,com:2,among:2,get_appset:2,restructuredtext:2,simpli:2,figur:2,instanti:2,mistak:2,trust:2,assign:2,quit:2,divid:2,coupl:2,addition:2,add_rout:2,empti:2,evangelista:2,much:2,valu:2,basic:[],rstpep2html:2,quickli:2,modern:2,fire:2,imag:[],convert:2,argument:2,bulk:2,coordin:2,doesn:2,input:2,those:2,"case":2,ingredi:2,look:2,plain:2,properti:[],batch:2,cast:2,"while":2,outcom:2,behavior:2,error:2,exist:2,dbapi2:2,python_web:2,layer:2,pyramid:[],have:[],advantag:2,stdout:2,readi:2,ephemer:2,readm:2,non:[],pip:2,itself:2,zodb:2,tediou:2,smalltalk:2,parent:2,pyramid_chameleon:2,develop:2,welcom:2,perform:2,saw:2,make:[],couchdb:2,cc0:2,same:2,wherein:[],complex:2,rst2latex:2,zope:2,eventu:2,conflict:2,complet:2,week:2,finish:2,http:2,absorb:2,logic:2,dbsession:2,remot:2,moment:2,user:2,improv:2,engin:2,typic:2,recent:2,cew:2,off:2,"548kb":2,find_packag:2,entri:2,miss:2,well:2,hypothet:2,inherit:2,pickl:2,client:2,command:2,thi:[0,1,2,3,4],everyth:2,latter:2,usual:2,protocol:2,just:2,typifi:2,compel:2,rest:2,product:2,"__path__":2,kill:2,aspect:2,mysql:2,mysql_length:2,languag:2,web:[],alchemi:2,easi:2,point:2,except:2,global_config:2,add:[],els:2,logger:2,formal:2,modul:2,homework:[],gave:2,bin:2,applic:[],varchar:2,preserv:2,fast:2,parse_var:2,know:2,world:2,bit:[],licens:2,python2:2,like:2,specif:2,deprec:2,should:2,arbitrari:2,manual:2,integ:2,server:2,collect:2,singl:2,docutil:2,install_requir:2,page:2,interpr:2,old:2,often:2,captur:2,interact:[],some:2,back:2,nfrom:2,home:2,ljenv:2,successfulli:2,librari:2,ds_store:2,assum:2,"16x16":[],track:[],leav:2,select:2,manifest:2,refer:2,cgi:[],run:2,power:2,journal:2,lose:2,usag:2,confer:[],viabl:2,host:2,although:2,chapter:2,about:[],postgresql:2,socket:[],column:[],manag:2,microframework:2,stand:2,commit:[],mytempl:2,blabber:2,arg:2,own:2,console_script:2,automat:2,creativ:2,model:[],been:2,sessionmak:2,ensur:2,storag:2,hew:[],log:2,val:2,aren:2,execut:2,support:2,question:2,"long":2,"class":2,avail:2,start:[],appl:2,interfac:2,includ:2,lot:2,"0x10b075ed0":2,"function":2,sqlite3:2,repeatedli:2,offer:2,xerox:2,continu:2,pwd:2,sqlalchemi:[],link:2,gain:2,line:2,inlin:2,"true":2,translationstr:2,pull:2,made:2,dirti:2,"default":2,wish:2,until:2,pcreat:2,doc:2,problem:2,similar:2,expect:2,gone:2,featur:2,creat:[],"int":2,certain:2,"abstract":2,paster:2,proven:2,repres:2,intro:[],implement:2,ini:2,file:[],request:2,bob:2,duru:2,check:2,again:2,models_valu:2,googl:2,titl:2,mashup:[],when:2,detail:2,virtual:2,field:2,build:2,other:2,copyright:2,rememb:2,zopetransactionextens:[],test:2,you:[],webob:2,llvm:2,intend:2,assist:2,actual:2,mongodb:2,setup_log:2,meaning:2,consid:2,reduc:2,untrack:2,directori:2,syllabu:2,initialize_learning_journal_db:[],descript:2,rule:2,models_nam:2,obj:2,push:2,togeth:2},objtypes:{},objnames:{},filenames:["presentations/index","index","presentations/session01","outline","readings"],titles:["Course Presentations","Internet Programming with Python","Session 01","Course Outline","Course Readings"],objects:{},titleterms:{all:2,code:2,chain:2,queri:2,session:2,sqla:2,web:2,flask:[],configur:2,activ:2,environment:[],add:2,program:1,persist:2,save:2,mvc:2,alter:2,homework:2,applic:2,"return":2,get:2,python:[1,2],"break":2,jinja2:[],bit:2,introduct:2,iter:2,separ:2,quick:[],side:2,view:[],outlin:3,design:[],our:2,happen:2,concern:2,virtualenv:2,what:2,databas:2,scaffold:[],internet:1,"new":2,method:2,altern:2,step:[],orm:2,about:2,last:2,column:2,base:2,perman:2,commit:2,chang:2,first:2,app:2,terminolog:2,system:2,walkthrough:[],instal:2,your:2,git:[],script:2,interact:2,three:2,submit:2,compon:2,start:2,master:[],basic:2,order_bi:2,more:2,fork:[],consol:2,sqlalchemi:2,virtuelenv:2,present:0,word:2,setup:2,work:2,structur:2,project:2,control:[],pyramid:2,file:2,creat:2,deactiv:2,templat:[],packag:2,have:2,tabl:2,cours:[0,3,4],irrelev:2,advic:2,make:2,read:4,cleanup:2,branch:[],environ:2,you:2,object:2,effect:2,pattern:[],sql:2,data:[],why:2,choos:2,initialize_learning_journal_db:2,ignor:2,clean:2,time:2,model:2}}) \ No newline at end of file +Search.setIndex({envversion:42,terms:{represent:1,all:[],concept:1,skeleton:1,whatev:4,queri:[],jsonp:4,sqlserver:1,invent:1,interchang:1,scalar:1,code:[],abil:1,follow:[1,4],"16x16":[],row:1,stub:[],depend:[1,4],wish:1,aug:1,bathtim:4,graph:4,sorri:1,readabl:4,send:[1,4],unpython:1,init:1,concret:1,skip:1,dest_dir:1,aris:1,worth:[1,4],introduc:[1,4],exectut:1,digit:4,sourc:[1,4],everi:1,string:[],chameleon:4,far:1,role:4,account:4,util:1,lru:1,fall:1,veri:[1,4],ydood:4,syntax:4,brows:4,relev:1,tri:4,foo:4,magic:4,went:4,succeed:[],level:1,did:[1,4],egg_info:1,restor:1,list:[],last_nam:4,herbert:4,"try":[],item:[1,4],adjust:1,team:1,particularli:4,pleas:1,upper:4,charset:4,tmpl:4,natur:4,direct:1,commerci:1,past:1,second:[1,4],design:[],pass:[1,4],download:[1,4],further:4,nthi:4,odd:4,click:4,append:1,compat:1,index:[1,4],what:[],uncommit:1,venusian:1,resembl:4,section:[1,4],abl:[1,4],identityset:1,current:1,rst2xml:1,version:1,primary_kei:1,intersect:4,"new":[],method:[],metadata:1,full:1,abov:1,gener:[1,4],never:1,here:[1,4],bodi:[1,4],let:[1,4],free:4,address:4,path:[],becom:1,sinc:[1,4],interpret:[1,4],great:[1,4],didn:1,convers:[],ahead:4,credit:1,base:[],pick:[],action:[1,4],bob:1,apart:4,explain:1,add_static_view:[1,4],live:1,via:[1,4],repositori:[1,4],wikimedia:[1,4],app:[],ask:1,api:[],marker:4,instal:[],txt:1,market:1,kei:[1,4],from:[1,4],stream:1,would:[1,4],prove:[],give:1,visit:4,two:[1,4],todai:4,next:[1,4],websit:[1,4],few:[1,4],stylesheet:4,call:[1,4],usr:1,typo:1,criteria:1,taken:[],"172kb":1,strip_filt:4,tell:1,more:[],flaw:4,exit:1,pyarmid:[],babi:4,relat:1,panach:4,notic:[1,4],phone:4,train:[1,4],oop:1,particular:[1,4],postgresql:1,mozilla:4,unpack:1,cach:1,behalf:4,must:[1,4],topic:4,none:[1,4],retriev:4,sometim:1,hour:4,scalabl:1,prepar:[],work:[],uniqu:[1,4],conceptu:4,can:[1,4],learn:[1,4],purpos:[1,4],rst2html:1,fetch:[1,4],def:[1,4],boilerpl:1,control:[],sqlite:1,repoz:1,prompt:1,want:[1,4],tar:1,scan:[1,4],process:[1,4],sudo:1,share:[],accept:[1,4],high:1,tag:4,app_factori:1,explor:1,phrase:[1,4],onlin:1,articl:[1,4],yet:[1,4],unus:1,cache_max_ag:[1,4],other_sess:1,gcc:1,multipl:1,goal:1,first_nam:4,secur:4,anoth:[1,4],comfort:4,length:[1,4],pyramid_jinja2:4,write:[1,4],how:[1,4],anyon:4,"__init__":[1,4],env:1,answer:4,instead:[1,4],csv:[1,4],simpl:[1,4],css:4,updat:[1,4],anon_1:1,delai:1,"545kb":1,resourc:4,referenc:4,alwai:1,max:4,clone:[1,4],earlier:1,"6mb":1,decor:4,superus:1,diagram:1,befor:[1,4],wrong:1,okai:1,mai:1,end:4,data:[],demonstr:1,classroom:1,"short":[],domin:1,add_al:1,footer:4,classmethod:[1,4],bind:[1,4],divid:1,explicit:4,element:[1,4],caus:1,inform:[1,4],scoped_sess:1,easy_instal:1,environ:[],allow:[1,4],enter:4,callabl:4,engine_from_config:[1,4],order:[1,4],talk:[1,4],origin:1,elif:4,checkbox:4,help:[1,4],mainthread:1,over:[1,4],move:1,becaus:[1,4],ydwoh:4,privileg:1,gitignor:1,flexibl:1,dynam:4,style:[],config_uri:[1,4],group:1,directli:[1,4],psycopg2:1,fix:[1,4],toolbelt:4,better:1,pserv:4,window:1,html:4,requir:[1,4],curli:4,howdi:4,main:[1,4],might:[1,4],easier:[1,4],pce:4,count:1,them:[1,4],good:1,"return":[],thei:[1,4],handl:[1,4],demoenv:1,pollut:1,safe:1,dai:4,initi:1,bound:1,"break":[],framework:[1,4],sessionmak:[1,4],verifi:4,initializedb:1,now:[1,4],discuss:[1,4],choic:1,term:1,document:[0,1,2,3,4,5],somewher:4,name:[1,4],anyth:1,edit:[],config:[1,4],drop:4,match_param:4,separ:[],easili:[1,4],slide:[0,5,2,3],exampl:[],mode:1,compris:1,each:1,debug:1,found:[1,4],unicod:[1,4],button:4,bone:4,mean:[1,4],domain:[1,4],dig:4,"0x105849b90":4,replac:4,individu:[1,4],hard:1,idea:1,realli:4,meta:4,"static":[],connect:[],blog_creat:[],our:[],happen:[],orient:1,special:[1,4],out:[],network:4,goe:[1,4],god:1,publish:1,research:1,categori:1,race:4,rel:4,print:[1,4],got:[1,4],correct:4,uwpc:[1,4],clarifi:1,after:[1,4],insid:1,written:4,frank:4,nightmar:1,manipul:1,situat:1,given:[1,4],argv:1,standard:1,thi:[0,1,2,3,4,5],reason:4,orm:[],put:[1,4],yore:4,log:[1,4],blog_view:4,nowher:1,wai:[1,4],"0x1103d9f10":1,steal:1,could:1,by_id:[1,4],static_url:4,keep:1,filter:[],thing:[1,4],perhap:4,mvc:[],place:[1,4],isn:4,outsid:1,enough:1,confus:4,imposs:1,frequent:1,lambda:4,oper:4,softwar:[1,4],rang:4,render:[],feel:4,onc:[1,4],independ:1,number:[1,4],placehold:4,exact:4,hook:1,instruct:1,alreadi:[1,4],done:[1,4],least:[1,4],owner:4,fantast:1,primari:[1,4],differ:[1,4],sheet:4,script:[],top:[1,4],mkdir:1,system:[],messag:1,too:[1,4],statement:1,tom:1,termin:1,conveni:1,"final":[1,4],store:1,prettier:4,luckili:[1,4],shell:1,parc:1,option:1,shelf:1,tool:1,copi:4,setuptool:1,took:1,artifact:1,models_id:1,part:[],pars:1,my_view:4,textfield:4,exactli:4,than:[1,4],png:[],route_nam:4,serv:4,liter:1,keyword:4,provid:[],remov:1,tree:1,charact:[1,4],project:[],certainli:4,sens:4,str:1,were:1,kitten:1,other:[1,4],browser:[1,4],sai:1,ran:1,well:1,py2:1,py3:1,ani:[1,4],packag:[],doctyp:4,pylon:1,increment:[],tabl:[],need:[1,4],seen:[1,4],larri:1,django:1,seek:1,imagin:4,afraid:1,date:1,built:[1,4],lib:1,min:4,rout:[],offer:[1,4],"switch":1,thorough:4,note:[1,4],also:[1,4],"0x1103e3fd0":1,without:[1,4],take:[1,4],which:[1,4],textareafield:4,transmit:1,combin:[1,4],reload_templ:1,noth:[1,4],channel:1,even:1,begin:[1,4],sure:[1,4],pain:1,distribut:1,trace:1,normal:1,usernam:4,kai:1,object:[],oracl:1,chart:[1,4],fred:1,most:[1,4],plai:[1,4],regular:1,alan:[1,4],deploi:4,pair:[1,4],pyc:1,segment:4,why:[],appear:4,tradit:4,don:[1,4],correctli:4,filesystem:4,url:[],egg:1,mymodel:[1,4],cover:1,"8mb":1,doe:[],pipe:4,declar:[1,4],create_al:1,determin:[1,4],uw_pc:[],left:1,sum:4,fact:4,wsgi:1,think:[1,4],show:[1,4],opposit:4,sent:[1,4],my_index:1,bring:4,constitu:4,radio:4,identifi:4,rough:1,tend:1,fine:4,find:[1,4],edit_entri:[],xml:[1,4],absolut:4,onli:[1,4],explicitli:1,locat:[1,4],nosql:1,pretti:1,transact:1,configur:[],solut:1,behind:1,should:[1,4],theme:[],dict:1,matchdict:[],factor:1,"__tablename__":1,folder:[1,4],darwin:1,local:[1,4],blog_upd:[],nearli:1,patter:4,pull:1,convert:[1,4],declarative_bas:1,pypi:1,kind:4,clang:1,soon:4,cannot:4,make_wsgi_app:1,awai:1,restart:4,dirti:1,intitalizedb:1,smash:4,bar:4,possibl:4,probabl:4,"0x10e7d6b90":4,"public":4,embodi:1,stuff:4,common:[1,4],contain:[0,1,2,3,4,5],through:[1,4],cri:4,where:[1,4],view:[],respond:4,certif:4,n10:4,set:[1,4],figur:1,aspect:[1,4],overwhelm:1,roberto:4,knowledg:1,"0x1103e3f50":1,rollback:1,compel:1,see:[1,4],bare:4,result:[1,4],respons:[],close:4,best:1,concern:[],closer:1,statu:1,still:[1,4],eachoth:1,pyrami:[],down:4,databas:[],someth:[1,4],wikipedia:1,blog_act:[],label:4,state:1,score:1,outstand:4,emtpi:1,between:1,"import":[1,4],subscript:4,pastedeploi:1,approach:1,email:1,attribut:[1,4],docutil:1,extend:4,javascript:4,isol:1,cycl:[1,4],job:[1,4],entir:1,len:1,learning_journ:[1,4],nav:4,come:[1,4],minut:4,addit:4,both:[1,4],revers:4,svn:4,extens:[],howev:[1,4],against:4,configpars:1,etc:[1,4],instanc:1,new_model:1,wherin:1,mani:[1,4],seri:1,com:[1,4],html5:4,comment:4,among:[1,4],get_appset:[1,4],simpli:[1,4],lang:4,session:[],point:1,instanti:1,this_id:4,makin:4,header:4,route_url:4,right:4,mistak:1,trust:1,assign:[1,4],speak:4,quit:[1,4],strong:4,coupl:1,addition:1,add_rout:[1,4],shout:4,empti:[1,4],github:[1,4],json:4,much:[],valu:[],basic:[],rstpep2html:1,bubbl:4,quickli:1,modern:1,fire:[1,4],imag:4,search:4,argument:[1,4],bulk:1,coordin:1,togeth:[1,4],turn:[1,4],those:1,"case":[1,4],ingredi:1,look:[1,4],plain:[1,4],properti:[],batch:1,tutori:4,defin:[],"while":1,outcom:[],behavior:[1,4],error:[1,4],fun:4,exist:[1,4],dbapi2:1,endblock:4,python_web:[1,4],real:4,layer:1,pyramid:[],have:[],advantag:1,stdout:1,readi:[1,4],ephemer:1,readm:1,site:[1,4],worri:[],physic:4,itself:1,zodb:1,incom:4,tediou:1,smalltalk:1,parent:1,pyramid_chameleon:[1,4],develop:[1,4],welcom:1,open:4,perform:[1,4],saw:1,make:[],couchdb:1,cc0:[1,4],same:[1,4],wherein:4,complex:1,rst2latex:1,zope:1,eventu:1,conflict:1,complet:[],week:[1,4],finish:[1,4],http:[],unstag:1,href:4,absorb:1,logic:[1,4],dbsession:[1,4],hand:4,driven:4,remot:1,moment:[1,4],temporari:4,user:[],improv:1,engin:[1,4],typic:1,recent:1,cew:1,lower:4,appropri:4,off:[1,4],els:[1,4],"548kb":1,find_packag:1,entri:[],miss:1,translationstr:1,hypothet:1,inherit:[1,4],non:[],pickl:1,person:4,client:[1,4],command:[1,4],endfor:4,endif:4,undefin:4,everyth:[1,4],spend:4,usual:1,load:4,construct:[1,4],protocol:[1,4],fast:1,just:[1,4],typifi:1,excel:4,rest:1,product:1,"__path__":1,kill:1,human:4,mysql:1,mysql_length:1,languag:[1,4],session02:4,web:[],alchemi:1,jinja:[],easi:[1,4],singl:[1,4],doesn:[1,4],nullabl:4,restructuredtext:1,golden:4,except:[1,4],littl:4,global_config:[1,4],blog:[],add:[],valid:4,httpfound:4,appli:4,input:[],logger:1,formal:1,modul:1,homework:[],gave:1,bin:[1,4],applic:[],varchar:1,around:4,format:4,preserv:1,agnost:4,piec:4,arriv:4,game:4,blogcreateform:[],know:[1,4],world:[1,4],bit:[],password:4,licens:1,python2:1,an_id:[],like:[1,4],specif:[1,4],deprec:1,request:[],brace:4,arbitrari:1,manual:1,integ:1,manifest:1,collect:[1,4],maker:4,either:4,lose:1,install_requir:1,juic:4,page:[],interpr:1,old:1,often:1,captur:[1,4],interact:[],some:[1,4],back:[1,4],nfrom:1,sampl:4,proper:4,home:[1,4],ljenv:[1,4],server:[1,4],variou:[1,4],librari:[1,4],ds_store:1,lead:4,assum:1,definit:4,magazin:4,subclass:[],cast:1,whl:1,leav:[1,4],select:1,content:4,localhost:4,refer:[1,4],cgi:[],freddi:4,investig:4,run:[1,4],power:[1,4],journal:[1,4],cascad:4,usag:1,confer:[],viabl:1,who:4,host:1,parse_var:1,although:[1,4],regexp:4,post:4,task:4,chapter:1,src:4,about:[],obj:[1,4],socket:[],column:[],briefli:4,surround:4,manag:1,microframework:1,stand:[1,4],commit:[],mytempl:[1,4],blabber:1,block:[],match:[],wire:4,arg:1,own:[1,4],console_script:1,automat:[1,4],latter:1,stop:[1,4],creativ:[1,4],model:[],been:[1,4],strip:4,ensur:1,chang:[],storag:1,html5shiv:4,hew:[],fill:4,httpnotfound:4,val:[1,4],aren:1,homepag:[],execut:1,support:[1,4],question:[1,4],evangelista:[1,4],"long":1,review:[1,4],avail:[1,4],start:[],heroku:4,appl:1,interfac:1,includ:[1,4],lot:[1,4],"0x10b075ed0":1,machin:[1,4],"function":[1,4],index_pag:4,head:4,properli:4,repeatedli:1,form:[],"0x1103e38d0":1,xerox:1,continu:1,pwd:1,sqlalchemi:[],link:[1,4],gain:1,populate_obj:4,line:[1,4],inlin:1,"true":[1,4],info:1,notat:4,made:[1,4],utf:4,attr:4,view_config:4,"default":[1,4],type:[1,4],googlecod:4,displai:4,until:1,pcreat:[1,4],doc:1,problem:1,similar:1,expect:[1,4],gone:1,featur:1,creat:[],"int":1,certain:1,"abstract":1,trunk:4,pid:4,paster:[1,4],proven:1,repres:[1,4],intro:[],implement:1,ini:[1,4],file:[],logo:4,pip:1,doodi:4,duru:1,face:4,central:1,check:1,pythoncert:[1,4],assembl:4,again:[1,4],spell:4,successfulli:1,models_valu:1,googl:1,discrimin:[],titl:[1,4],mashup:[],when:[1,4],detail:[],virtual:1,field:[1,4],build:[1,4],book:4,lookup:4,copyright:1,rememb:[1,4],zopetransactionextens:[],test:[],you:[],webob:1,nice:4,llvm:1,intend:1,assist:1,actual:[1,4],mongodb:1,symbol:4,setup_log:[1,4],"class":[1,4],meaning:1,track:[],consid:[1,4],reduc:1,entrycreateform:4,receiv:4,untrack:1,directori:[1,4],syllabu:1,initialize_learning_journal_db:[],descript:1,rule:1,specifi:4,models_nam:1,portion:4,text:[1,4],dot:4,push:1,hello:4,entry_point:1,sqlite3:1},objtypes:{},objnames:{},filenames:["presentations/index","presentations/session01","outline","index","presentations/session02","readings"],titles:["Course Presentations","Session 01","Course Outline","Internet Programming with Python","Session 02","Course Readings"],objects:{},titleterms:{all:1,code:1,chain:1,queri:1,ljshell:4,sqla:1,web:1,style:4,layout:4,flask:[],configur:[1,4],activ:1,environment:[],add:[1,4],program:3,present:[0,4],persist:1,input:4,save:1,mvc:[1,4],alter:1,match:4,deactiv:1,"return":1,string:4,get:[1,4],python:[3,1],express:4,"break":1,jinja2:4,bit:1,introduct:1,edit:4,list:4,iter:1,"try":4,session:[1,4],quick:[],side:1,view:4,outlin:2,request:4,design:[],connect:4,respons:4,our:[1,4],happen:1,concern:1,virtualenv:1,separ:1,what:[1,4],databas:1,scaffold:[],stub:4,internet:3,"new":1,method:1,altern:1,step:[],orm:1,dictionari:4,path:4,valu:4,about:1,last:1,column:1,page:4,filter:4,base:1,perman:1,context:4,pick:4,commit:1,chang:[1,4],block:4,first:[1,4],render:4,app:1,terminolog:1,system:[1,4],walkthrough:[],api:4,instal:[1,4],your:[1,4],git:[],script:[1,4],interact:[1,4],three:1,submit:1,compon:1,start:1,much:[],master:[],asset:4,basic:[1,4],order_bi:1,homework:[1,4],more:1,fork:[],consol:1,form:4,part:4,virtuelenv:1,matchdict:4,word:1,provid:4,setup:1,work:1,structur:[1,4],project:1,defin:4,outcom:4,"static":4,control:4,pyramid:[1,4],file:1,creat:1,applic:1,demo:4,share:4,templat:4,packag:1,have:1,tabl:1,cours:[0,2,5],irrelev:1,advic:1,make:[1,4],detail:4,access:4,read:5,cleanup:1,branch:[],test:4,environ:1,you:1,out:4,prepar:4,complet:4,map:[],http:4,deploy:4,object:[1,4],sqlalchemi:1,effect:1,pattern:[],user:4,sql:1,data:4,why:1,choos:1,url:4,entri:[],initialize_learning_journal_db:1,flow:4,wtform:4,doe:4,exampl:4,ignor:1,clean:1,time:1,model:[1,4],rout:4}}) \ No newline at end of file From 9c143703e4cb93911fecae4750299c7ca3d8928e Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 11 Jan 2015 22:35:03 -0800 Subject: [PATCH 073/114] additions for session 2, and updates to .gitignore to blow off intermediate build artifacts from sphinx --- .gitignore | 1 + html/_images/learning_journal_styled.png | Bin 0 -> 60697 bytes html/_images/lj_entry.png | Bin 0 -> 160553 bytes html/_sources/presentations/session02.txt | 1576 ++++++++++++++++ html/_static/learning_journal_styled.png | Bin 0 -> 60697 bytes html/_static/lj_entry.png | Bin 0 -> 160553 bytes html/presentations/session02.html | 1218 +++++++++++++ slides/_images/learning_journal_styled.png | Bin 0 -> 60697 bytes slides/_images/lj_entry.png | Bin 0 -> 160553 bytes slides/_sources/presentations/session02.txt | 1576 ++++++++++++++++ slides/_static/learning_journal_styled.png | Bin 0 -> 60697 bytes slides/_static/lj_entry.png | Bin 0 -> 160553 bytes slides/presentations/session02.html | 1801 +++++++++++++++++++ 13 files changed, 6172 insertions(+) create mode 100644 html/_images/learning_journal_styled.png create mode 100644 html/_images/lj_entry.png create mode 100644 html/_sources/presentations/session02.txt create mode 100644 html/_static/learning_journal_styled.png create mode 100644 html/_static/lj_entry.png create mode 100644 html/presentations/session02.html create mode 100644 slides/_images/learning_journal_styled.png create mode 100644 slides/_images/lj_entry.png create mode 100644 slides/_sources/presentations/session02.txt create mode 100644 slides/_static/learning_journal_styled.png create mode 100644 slides/_static/lj_entry.png create mode 100644 slides/presentations/session02.html diff --git a/.gitignore b/.gitignore index f352feb8..c5d41a14 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ outline_improvements.txt resources source src +doctrees diff --git a/html/_images/learning_journal_styled.png b/html/_images/learning_journal_styled.png new file mode 100644 index 0000000000000000000000000000000000000000..1bd091be7d05d98d90efd8421000c6c5c537b343 GIT binary patch literal 60697 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
    ?{@LHp)IryChMu3R7cN=JfF8De`Vr7L?= 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≪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

    w_C}^zj{y%>}{r(NV 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 BsOA6w literal 0 HcmV?d00001 diff --git a/html/_sources/presentations/session02.txt b/html/_sources/presentations/session02.txt new file mode 100644 index 00000000..3d1c6b8e --- /dev/null +++ b/html/_sources/presentations/session02.txt @@ -0,0 +1,1576 @@ +.. slideconf:: + :autoslides: True + +********** +Session 02 +********** + +.. image:: /_static/lj_entry.png + :width: 65% + :align: center + +Interacting with Data +===================== + +**Wherein we learn to display our data, and to create and edit it too!** + + +But First +--------- + +Last week we discussed the **model** part of the *MVC* application design +pattern. + +.. rst-class:: build +.. container:: + + We set up a project using the `Pyramid`_ web framework and the `SQLAlchemy`_ + library for persisting our data to a database. + + We looked at how to define a simple model by investigating the demo model + created on our behalf. + + And we went over, briefly, the way we can interact with this model at the + command line to make sure we've got it right. + + Finally, we defined what attributes a learning journal entry would have, + and a pair of methods we think we will need to make the model complete. + +.. _Pyramid: http://www.pylonsproject.org/projects/pyramid/about +.. _SQLAlchemy: http://docs.sqlalchemy.org/en/rel_0_9/ + +Our Data Model +-------------- + +Over the last week, your assignment was to create the new model. + +.. rst-class:: build +.. container:: + + Did you get that done? + + If not, what stopped you? + + Let's take a few minutes here to answer questions about this task so you + are more comfortable. + + Questions? + +.. nextslide:: A Complete Example + +I have added a new folder to our `class repository`_, ``resources``. + +.. _class repository: https://github.com/UWPCE-PythonCert/training.python_web/ + +.. rst-class:: build +.. container:: + + If you clone the repository to your local machine you can get to it. + + You can also just browse the repository in github to view it. + + In this folder, I added a ``session02`` folder that contains resources for + today. + + Among these resources is the completed ``models.py`` file with this new + model added. + + Let's review how it works. + +.. nextslide:: Demo Interaction + +Another resource I've added is the ``ljshell.py`` script. + +.. rst-class:: build +.. container:: + + That script will allow you to interact with a db session just like I showed + in class last week: + + .. code-block:: python + + # the script + from pyramid.paster import get_appsettings, setup_logging + from sqlalchemy import engine_from_config + from sqlalchemy.orm import sessionmaker + + config_uri = 'development.ini' + setup_logging(config_uri) + settings = get_appsettings(config_uri) + engine = engine_from_config(settings, 'sqlalchemy.') + Session = sessionmaker(bind=engine) + + Just copy the file into your learning_journal Pyramid project folder (where + ``setup.py`` is) + +.. nextslide:: Using the ``ljshell.py`` script + +Here's a demo interaction using the script to set up a session maker + +.. rst-class:: build +.. container:: + + First ``cd`` to your project code, fire up your project virtualenv and + start python: + + .. code-block:: bash + + $ cd projects/learning-journal/learning_journal + $ source ../ljenv/bin/activate + (ljenv)$ python + >>> + + Then, you can import the ``Session`` symbol from ``ljshell`` and you're off + to the races: + + .. code-block:: pycon + + >>> from ljshell import Session + >>> from learning_journal.models import MyModel + >>> session = Session() + >>> session.query(MyModel).all() + [] + ... + + [demo] + +The MVC Controller +================== + +.. rst-class:: left +.. container:: + + Let's go back to thinking for a bit about the *Model-View-Controller* + pattern. + + .. figure:: http://upload.wikimedia.org/wikipedia/commons/4/40/MVC_passive_view.png + :align: center + :width: 25% + + By Alan Evangelista (Own work) [CC0], via Wikimedia Commons + + .. rst-class:: build + .. container:: + + We talked last week (and today) about the *model* + + Today, we'll dig into *controllers* and *views* + + or as we will know them in Pyramid: *views* and *renderers* + + +HTTP Request/Response +--------------------- + +Internet software is driven by the HTTP Request/Response cycle. + +.. rst-class:: build +.. container:: + + A *client* (perhaps a user with a web browser) makes a **request** + + A *server* receives and handles that request and returns a **response** + + The *client* receives the response and views it, perhaps making a new + **request** + + And around and around it goes. + +.. nextslide:: URLs + +An HTTP request arrives at a server through the magic of a **URL** + +.. code-block:: bash + + http://uwpce-pythoncert.github.io/training.python_web/html/index.html + +.. rst-class:: build +.. container:: + + Let's break that up into its constituent parts: + + .. rst-class:: build + + \http://: + This part is the *protocol*, it determines how the request will be sent + + uwpce-pythoncert.github.io: + This is a *domain name*. It's the human-facing address for a server + somewhere. + + /training.python_web/html/index.html: + This part is the *path*. It serves as a locator for a resource *on the + server* + +.. nextslide:: Paths + +In a static website (like our documentation) the *path* identifies a **physical +location** in the server's filesystem. + +.. rst-class:: build +.. container:: + + Some directory on the server is the *home* for the web process, and the + *path* is looked up there. + + Whatever resource (a file, an image, whatever) is located there is returned + to the user as a response. + + If the path leads to a location that doesn't exist, the server responds + with a **404 Not Found** error. + + In the golden days of yore, this was the only way content was served via + HTTP. + +.. nextslide:: Paths in an MVC System + +In todays world we have dynamic systems, server-side web frameworks like +Pyramid. + +.. rst-class:: build +.. container:: + + The requests that you send to a server are handled by a software process + that assembles a response instead of looking up a physical location. + + But we still have URLs, with *protocol*, *domain* and *path*. + + What is the role for a path in a process that doesn't refer to a physical + file system? + + Most web frameworks now call the *path* a **route**. + + They provide a way of matching *routes* to the code that will be run to + handle requests. + +Routes in Pyramid +----------------- + +In Pyramid, routes are handled as *configuration* and are set up in the *main* +function in ``__init__.py``: + +.. code-block:: python + + # learning_journal/__init__.py + def main(global_config, **settings): + # ... + config.add_route('home', '/') + # ... + +.. rst-class:: build +.. container:: + + Our code template created a sample route for us, using the ``add_route`` + method of the ``Configurator`` class. + + The ``add_route`` method has two required arguments: a *name* and a + *pattern* + + In our sample route, the *name* is ``'home'`` + + In our sample route, the *pattern* is ``'/'`` + +.. nextslide:: + +When a request comes in to a Pyramid application, the framework looks at all +the *routes* that have been configured. + +.. rst-class:: build +.. container:: + + One by one, in order, it tries to match the *path* of the incoming request + against the *pattern* of the route. + + As soon as a *pattern* matches the *path* from the incoming request, that + route is used and no further matching is performed. + + If no route is found that matches, then the request will automatically get + a **404 Not Found** error response. + + In our sample app, we have one sample *route* named ``'home'``, with a + pattern of ``/``. + + This means that any request that comes in for ``/`` will be matched to this + route, and any other request will be **404**. + +.. nextslide:: Routes as API + +In a very real sense, the *routes* defined in an application *are* the public +API. + +.. rst-class:: build +.. container:: + + Any route that is present represents something the user can do. + + Any route that is not present is something the user cannot do. + + You can use the proper definition of routes to help conceptualize what your + app will do. + + What routes might we want for a learning journal application? + + What will our application do? + +.. nextslide:: Defining our Routes + +Let's add routes for our application. + +.. rst-class:: build +.. container:: + + Open ``learning_journal/__init__.py``. + + For our list page, the existing ``'home'`` route will do fine, leave it. + + Add the following two routes: + + .. code-block:: python + + config.add_route('home', '/') # already there + config.add_route('detail', '/journal/{id:\d+}') + config.add_route('action', '/journal/{action}') + + The ``'detail'`` route will serve a single journal entry, identified by an + ``id``. + + The ``action`` route will serve ``create`` and ``edit`` views, depending on + the ``action`` specified. + + In both cases, we want to capture a portion of the matched path to use + information it provides. + +.. nextslide:: Matching an ID + +In a pattern, you can capture a ``path segment`` *replacement +marker*, a valid Python symbol surrounded by curly braces: + +.. rst-class:: build +.. container:: + + :: + + /home/{foo}/ + + If you want to match a particular pattern, like digits only, add a + *regexp*:: + + /journal/{id:\d+} + + Matched path segments are captured in a ``matchdict``:: + + # pattern # actual url # matchdict + /journal/{id:\d+} /journal/27 {'id': '27'} + + The ``matchdict`` is made available as an attribute of the *request* + + +.. nextslide:: Connecting Routes to Views + +In Pyramid, a *route* is connected by configuration to a *view*. + +.. rst-class:: build +.. container:: + + In our app, a sample view has been created for us, in ``views.py``: + + .. code-block:: python + + @view_config(route_name='home', renderer='templates/mytemplate.pt') + def my_view(request): + # ... + + The order in which *routes* are configured *is important*, so that must be + done in ``__init__.py``. + + The order in which views are connected to routes *is not important*, so the + *declarative* ``@view_config`` decorator can be used. + + When ``config.scan`` is called, all files in our application are searched + for such *declarative configuration* and it is added. + +The Pyramid View +---------------- + +Let's imagine that a *request* has come to our application for the path +``'/'``. + +.. rst-class:: build +.. container:: + + The framework made a match of that path to a *route* with the pattern ``'/'``. + + Configuration connected that route to a *view* in our application. + + Now, the view that was connected will be *called*, which brings us to the + nature of *views* + + .. rst-class:: centered + + --A Pyramid view is a *callable* that takes *request* as an argument-- + + Remember what a *callable* is? + +.. nextslide:: What the View Does + +So, a *view* is a callable that takes the *request* as an argument. + +.. rst-class:: build +.. container:: + + It can then use information from that request to build appropriate data, + perhaps using the application's *models*. + + Then, it returns the data it assembled, passing it on to a `renderer`_. + + Which *renderer* to use is determined, again, by configuration: + + .. code-block:: python + + @view_config(route_name='home', renderer='templates/mytemplate.pt') + def my_view(request): + # ... + + More about this in a moment. + + The *view* stands at the intersection of *input data*, the application + *model* and *renderers* that offer rendering of the results. + + It is the *Controller* in our MVC application. + +.. _renderer: http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/renderers.html + + +.. nextslide:: Adding Stub Views + +Add temporary views to our application in ``views.py`` (and comment out the +sample view): + +.. code-block:: python + + @view_config(route_name='home', renderer='string') + def index_page(request): + return 'list page' + + @view_config(route_name='detail', renderer='string') + def view(request): + return 'detail page' + + @view_config(route_name='action', match_param='action=create', renderer='string') + def create(request): + return 'create page' + + @view_config(route_name='action', match_param='action=edit', renderer='string') + def update(request): + return 'edit page' + +.. nextslide:: Testing Our Views + +Now we can verify that our view configuration has worked. + +.. rst-class:: build +.. container:: + + Make sure your virtualenv is properly activated, and start the web server: + + .. code-block:: bash + + (ljenv)$ pserve development.ini + Starting server in PID 84467. + serving on http://0.0.0.0:6543 + + Then try viewing some of the expected application urls: + + .. rst-class:: build + + * http://localhost:6543/ + * http://localhost:6543/journal/1 + * http://localhost:6543/journal/create + * http://localhost:6543/journal/edit + + What happens if you visit a URL that *isn't* in our configuration? + +.. nextslide:: Interacting With the Model + +Now that we've got temporary views that work, we can fix them to get +information from our database + +.. rst-class:: build +.. container:: + + We'll begin with the list view. + + We need some code that will fetch all the journal entries we've written, in + reverse order, and hand that collection back for rendering. + + .. code-block:: python + + from .models import ( + DBSession, + MyModel, + Entry, # <- Add this import + ) + + # and update this view function + def index_page(request): + entries = Entry.all() + return {'entries': entries} + +.. nextslide:: Using the ``matchdict`` + +Next, we want to write the view for a single entry. + +.. rst-class:: build +.. container:: + + We'll need to use the ``id`` value our route captures into the + ``matchdict``. + + Remember that the ``matchdict`` is an attribute of the request. + + We'll get the ``id`` from there, and use it to get the correct entry. + + .. code-block:: python + + # add this import at the top + from pyramid.exceptions import HTTPNotFound + + # and update this view function: + def blog_view(request): + this_id = request.matchdict.get('id', -1) + entry = Entry.by_id(this_id) + if not entry: + return HTTPNotFound() + return {'entry': entry} + +.. nextslide:: Testing Our Views + +We can now verify that these views work correctly. + +.. rst-class:: build +.. container:: + + Make sure your virtualenv is properly activated, and start the web server: + + .. code-block:: bash + + (ljenv)$ pserve development.ini + Starting server in PID 84467. + serving on http://0.0.0.0:6543 + + Then try viewing the list page and an entry page: + + * http://localhost:6543 + * http://localhost:6543/journal/1 + + What happens when you request an entry with an id that isn't in the + database? + + * http://localhost:6543/journal/100 + +The MVC View +============ + +.. rst-class:: left +.. container:: + + Again, back to the *Model-View-Controller* pattern. + + .. figure:: http://upload.wikimedia.org/wikipedia/commons/4/40/MVC_passive_view.png + :align: center + :width: 25% + + By Alan Evangelista (Own work) [CC0], via Wikimedia Commons + + .. rst-class:: build + .. container:: + + We've built a *model* and we've created some *controllers* that use it. + + In Pyramid, we call *controllers* **views** and they are callables that + take *request* as an argument. + + Let's turn to the last piece of the *MVC* patter, the *view* + +Presenting Data +--------------- + +The job of the *view* in the *MVC* pattern is to present data in a format that +is readable to the user of the system. + +.. rst-class:: build +.. container:: + + There are many ways to present data. + + Some are readable by humans (tables, charts, graphs, HTML pages, text + files). + + Some are more for machines (xml files, csv, json). + + Which of these formats is the *right one* depends on your purpose. + + What is the purpose of our learning journal? + +Pyramid Renderers +----------------- + +In Pyramid, the job of presenting data is performed by a *renderer*. + +.. rst-class:: build +.. container:: + + So we can consider the Pyramid **renderer** to be the *view* in our *MVC* + app. + + We've already seen how we can connect a *renderer* to a Pyramid *view* with + configuration. + + In fact, we have already done so, using a built-in renderer called + ``'string'``. + + This renderer converts the return value of its *view* to a string and sends + that back to the client as an HTTP response. + + But the result isn't so nice looking. + +.. nextslide:: Template Renderers + +The `built-in renderers` (``'string'``, ``'json'``, ``'jsonp'``) in Pyramid are +not the only ones available. + +.. _built-in renderers: http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/renderers.html#built-in-renderers + +.. rst-class:: build +.. container:: + + There are add-ons to Pyramid that support using various *template + languages* as renderers. + + In fact, one of these was installed by default when you created this + project. + +.. nextslide:: Configuring a Template Renderer + +.. code-block:: python + + # in setup.py + requires = [ + # ... + 'pyramid_chameleon', + # ... + ] + + # in learning_journal/__init__.py + def main(global_config, **settings): + # ... + config.include('pyramid_chameleon') + +.. rst-class:: build +.. container:: + + The `pyramid_chameleon` package supports using the `chameleon` template + language. + + The language is quite nice and powerful, but not so easy to learn. + + Let's use a different one, *jinja2* + +.. nextslide:: Changing Template Renderers + +Change ``pyramid_chameleon`` to ``pyramid_jinja2`` in both of these files: + +.. code-block:: python + + # in setup.py + requires = [ + # ... + 'pyramid_jinja2', + # ... + ] + + # in learning_journal/__init__.py + def main(global_config, **settings): + # ... + config.include('pyramid_jinja2') + +.. nextslide:: Picking up the Changes + +We've changed the dependencies for our Pyramid project. + +.. rst-class:: build +.. container:: + + As a result, we will need to re-install it so the new dependencies are also + installed: + + .. code-block:: bash + + (ljenv)$ python setup.py develop + ... + Finished processing dependencies for learning-journal==0.0 + (ljenv)$ + + Now, we can use *Jinja2* templates in our project. + + Let's learn a bit about how `Jinja2 templates`_ work. + +.. _Jinja2 templates: http://jinja.pocoo.org/docs/templates/ + +Jinja2 Template Basics +---------------------- + +We'll start with the absolute basics. + +.. rst-class:: build +.. container:: + + Fire up a Python interpreter, using your `ljenv` virtualenv: + + .. code-block:: bash + + (ljenv)$ python + >>> + + Then import the ``Template`` class from the ``jinja2`` package: + + .. code-block:: pycon + + >>> from jinja2 import Template + +.. nextslide:: Templates are Strings + +A template is constructed with a simple string: + +.. code-block:: python + + >>> t1 = Template("Hello {{ name }}, how are you?") + +.. rst-class:: build +.. container:: + + Here, we've simply typed the string directly, but it is more common to + build a template from the contents of a *file*. + + Notice that our string has some odd stuff in it: ``{{ name }}``. + + This is called a placeholder and when the template is *rendered* it is + replaced. + +.. nextslide:: Rendering a Template + +Call the ``render`` method, providing *context*: + +.. code-block:: python + + >>> t1.render(name="Freddy") + u'Hello Freddy, how are you?' + >>> t1.render({'name': "Roberto"}) + u'Hello Roberto, how are you?' + >>> + +.. rst-class:: build +.. container:: + + *Context* can either be keyword arguments, or a dictionary + + Note the resemblance to something you've seen before: + + .. code-block:: python + + >>> "This is {owner}'s string".format(owner="Cris") + 'This is Cris's string' + + +.. nextslide:: Dictionaries in Context + +Dictionaries passed in as part of the *context* can be addressed with *either* +subscript or dotted notation: + +.. code-block:: python + + >>> person = {'first_name': 'Frank', + ... 'last_name': 'Herbert'} + >>> t2 = Template("{{ person.last_name }}, {{ person['first_name'] }}") + >>> t2.render(person=person) + u'Herbert, Frank' + +.. rst-class:: build + +* Jinja2 will try the *correct* way first (attr for dotted, item for + subscript). +* If nothing is found, it will try the opposite. +* If nothing is found, it will return an *undefined* object. + + +.. nextslide:: Objects in Context + +The exact same is true of objects passed in as part of *context*: + +.. rst-class:: build +.. container:: + + .. code-block:: python + + >>> t3 = Template("{{ obj.x }} + {{ obj['y'] }} = Fun!") + >>> class Game(object): + ... x = 'babies' + ... y = 'bubbles' + ... + >>> bathtime = Game() + >>> t3.render(obj=bathtime) + u'babies + bubbles = Fun!' + + This means your templates can be a bit agnostic as to the nature of the + things in *context* + +.. nextslide:: Filtering values in Templates + +You can apply `filters`_ to the data passed in *context* with the pipe ('|') +operator: + +.. _filters: http://jinja.pocoo.org/docs/dev/templates/#filters + +.. code-block:: python + + t4 = Template("shouted: {{ phrase|upper }}") + >>> t4.render(phrase="this is very important") + u'shouted: THIS IS VERY IMPORTANT' + +.. rst-class:: build +.. container:: + + You can also chain filters together: + + .. code-block:: python + + t5 = Template("confusing: {{ phrase|upper|reverse }}") + >>> t5.render(phrase="howdy doody") + u'confusing: YDOOD YDWOH' + +.. nextslide:: Control Flow + +Logical `control structures`_ are also available: + +.. _control structures: http://jinja.pocoo.org/docs/dev/templates/#list-of-control-structures + +.. rst-class:: build +.. container:: + + .. code-block:: python + + tmpl = """ + ... {% for item in list %}{{ item }}, {% endfor %} + ... """ + >>> t6 = Template(tmpl) + >>> t6.render(list=[1,2,3,4,5,6]) + u'\n1, 2, 3, 4, 5, 6, ' + + Any control structure introduced in a template **must** be paired with an + explicit closing tag ({% for %}...{% endfor %}) + + Remember, although template tags like ``{% for %}`` or ``{% if %}`` look a + lot like Python, they are not. + + The syntax is specific and must be followed correctly. + +.. nextslide:: Template Tests + +There are a number of specialized *tests* available for use with the +``if...elif...else`` control structure: + +.. code-block:: python + + >>> tmpl = """ + ... {% if phrase is upper %} + ... {{ phrase|lower }} + ... {% elif phrase is lower %} + ... {{ phrase|upper }} + ... {% else %}{{ phrase }}{% endif %}""" + >>> t7 = Template(tmpl) + >>> t7.render(phrase="FOO") + u'\n\n foo\n' + >>> t7.render(phrase="bar") + u'\n\n BAR\n' + >>> t7.render(phrase="This should print as-is") + u'\nThis should print as-is' + + +.. nextslide:: Basic Expressions + +Basic `Python-like expressions`_ are also supported: + +.. _Python-like expressions: http://jinja.pocoo.org/docs/dev/templates/#expressions + +.. code-block:: python + + tmpl = """ + ... {% set sum = 0 %} + ... {% for val in values %} + ... {{ val }}: {{ sum + val }} + ... {% set sum = sum + val %} + ... {% endfor %} + ... """ + >>> t8 = Template(tmpl) + >>> t8.render(values=range(1,11)) + u'\n\n\n1: 1\n \n\n2: 3\n \n\n3: 6\n \n\n4: 10\n + \n\n5: 15\n \n\n6: 21\n \n\n7: 28\n \n\n8: 36\n + \n\n9: 45\n \n\n10: 55\n \n' + + +Our Templates +------------- + +There's more that Jinja2 templates can do, but it will be easier to introduce +you to that in the context of a working template. So let's make some. + +.. nextslide:: Detail Template + +We have a Pyramid view that returns a single entry. Let's create a template to +show it. + +.. rst-class:: build +.. container:: + + In ``learning_journal/templates`` create a new file ``detail.jinja2``: + + .. code-block:: jinja + +

    +

    {{ entry.title }}

    +
    +

    {{ entry.body }}

    +
    +

    Created {{entry.created}}

    +
    + + Then wire it up to the detail view in ``views.py``: + + .. code-block:: python + + # views.py + @view_config(route_name='detail', renderer='templates/detail.jinja2') + def blog_view(request): + # ... + +.. nextslide:: Try It Out + +Now we should be able to see some rendered HTML for our journal entry details. + +.. rst-class:: build +.. container:: + + Start up your server: + + .. code-block:: bash + + (ljenv)$ pserve development.ini + Starting server in PID 90536. + serving on http://0.0.0.0:6543 + + Then try viewing an individual journal entry + + * http://localhost:6543/journal/1 + +.. nextslide:: Listing Page + +The index page of our journal should show a list of journal entries, let's do +that next. + +.. rst-class:: build +.. container:: + + In ``learning_journal/templates`` create a new file ``list.jinja2``: + + .. code-block:: jinja + + {% if entries %} +

    Journal Entries

    +
    + {% else %} +

    This journal is empty

    + {% endif %} + +.. nextslide:: + +It's worth taking a look at a few specifics of this template. + +.. rst-class:: build +.. container:: + + .. code-block:: jinja + + {{ entry.title }} + + Jinja2 templates are rendered with a *context*. + + The return values of the Pyramid *view* for a template get included in that + context. + + So does *request*, which is placed there by the framework. + + Request has a method ``route_url`` that will create a URL for a named + route. + + This allows you to include URLs in your template without needing to know + exactly what they will be. + + This process is called *reversing*, since it's a bit like a reverse phone + book lookup. + +.. nextslide:: + +Finally, you'll need to connect this new renderer to your listing view: + +.. code-block:: python + + @view_config(route_name='home', renderer='templates/list.jinja2') + def index_page(request): + # ... + +.. nextslide:: Try It Out + +We can now see our list page too. Let's try starting the server: + +.. rst-class:: build +.. container:: + + .. code-block:: bash + + (ljenv)$ pserve development.ini + Starting server in PID 90536. + serving on http://0.0.0.0:6543 + + Then try viewing the home page of your journal: + + * http://localhost:6543/ + + Click on the link to an entry, it should work. + +.. nextslide:: Sharing Structure + +These views are reasonable, if quite plain. + +.. rst-class:: build +.. container:: + + It'd be nice to put them into something that looks a bit more like a + website. + + Jinja2 allows you to combine templates using something called + `template inheritance`_. + + You can create a basic page structure, and then *inherit* that structure in + other templates. + + In our class resources I've added a page template ``layout.jinja2``. Copy + that page to your templates directory + +.. _template inheritance: http://jinja.pocoo.org/docs/dev/templates/#template-inheritance + +.. nextslide:: ``layout.jinja2`` + +.. code-block:: jinja + + + + + + Python Learning Journal + + + +
    + +
    +
    +

    My Python Journal

    +
    {% block body %}{% endblock %}
    +
    +

    Created in the UW PCE Python Certificate Program

    + + + +.. nextslide:: Template Blocks + +The important part here is the ``{% block body %}{% endblock %}`` expression. + +.. rst-class:: build +.. container:: + + This is a template **block** and it is a kind of placeholder. + + Other templates can inherit from this one, and fill that block with + additional HTML. + + Let's update our detail and list templates: + + .. code-block:: jinja + + {% extends "layout.jinja2" %} + {% block body %} + + {% endblock %} + +.. nextslide:: Try It Out + +Let's try starting the server so we can see the result: + +.. rst-class:: build +.. container:: + + .. code-block:: bash + + (ljenv)$ pserve development.ini + Starting server in PID 90536. + serving on http://0.0.0.0:6543 + + Then try viewing the home page of your journal: + + * http://localhost:6543/ + + Click on the link to an entry, it should work. + + And now you have shared page structure that is in both. + +Static Assets +------------- + +Although we have a shared structure, it isn't particularly nice to look at. + +.. rst-class:: build +.. container:: + + Aspects of how a website looks are controlled by CSS (*Cascading Style + Sheets*). + + Stylesheets are one of what we generally speak of as *static assets*. + + Other static assets include *images* that are part of the look and feel of + the site (logos, button images, etc) and the *JavaScript* files that add + client-side dynamic behavior to the site. + +.. nextslide:: Static Assets in Pyramid + +Serving static assets in Pyramid requires a *static view* to configuration. +Luckily, ``pcreate`` already handled that for us: + +.. rst-class:: build +.. container:: + + .. code-block:: python + + # in learning_journal/__init__.py + def main(global_config, **settings): + # ... + config.add_static_view('static', 'static', cache_max_age=3600) + # ... + + The first argument to ``add_static_view`` is a *name* that will need to + appear in the path of URLs requesting assets. + + The second argument is a *path* that is relative to the package being + configured. + + Assets referenced by the *name* in a URL will be searched for in the + location defined by the *path* + + Additional keyword arguments control other aspects of how the view works. + +.. nextslide:: Static Assets in Templates + +Once you have a static view configured, you can use assets in that location in +templates. + +.. rst-class:: build +.. container:: + + The *request* object in Pyramid provides a ``static_url`` method that + builds appropriate URLs + + Add the following to our ``layout.jinja2`` template: + + .. code-block:: jinja + + + + + + + The one required argument to ``request.static_url`` is a *path* to an + asset. + + Note that because any package *might* define a static view, we have to + specify which package we want to look in. + + That's why we have ``learning_journal:static/styles.css`` in our call. + +.. nextslide:: Basic Styles + +I've created some very very basic styles for our learning journal. + +.. rst-class:: build +.. container:: + + You can find them in ``resources/session02/styles.css``. Go ahead and copy + that file. + + Add it to ``learning_journal/static``. + + Then restart your web server and see what a difference a little style + makes: + + .. code-block:: bash + + (ljenv)$ pserve development.ini + Starting server in PID 90536. + serving on http://0.0.0.0:6543 + +.. nextslide:: The Outcome + +Your site should look something like this: + +.. figure:: /_static/learning_journal_styled.png + :align: center + :width: 75% + + The learning journal with basic styles applied + +Getting Interactive +=================== + +.. rst-class:: left +.. container:: + + We have a site that allows us to view a list of journal entries. + + .. rst-class:: build + .. container:: + + We can also view the details of a single entry. + + But as yet, we don't really have any *interaction* in our site yet. + + We can't create new entries. + + Let's add that functionality next. + +User Input +---------- + +In HTML websites, the traditional way of getting input from users is via +`HTML forms`_. + +.. rst-class:: build +.. container:: + + Forms use *input elements* to allow users to enter data, pick from + drop-down lists, or choose items via checkbox or radio button. + + It is possible to create plain HTML forms in templates and use them with + Pyramid. + + It's a lot easier, however, to work with a *form library* to create forms, + render them in templates and interact with data sent by a client. + + We'll be using a form library called `WTForms`_ in our project + +.. _HTML forms: https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms +.. _WTForms: http://wtforms.readthedocs.org/en/latest/ + +.. nextslide:: Installing WTForms + +The first step to working with this library is to install it. + +.. rst-class:: build +.. container:: + + Start by makin the library as a *dependency* of our package by adding it to + the *requires* list in ``setup.py``: + + .. code-block:: python + + requires = [ + # ... + 'wtforms', # <- add this to the list + ] + + Then, re-install our package to download and install the new dependency: + + .. code-block:: bash + + (ljenv)$ python setup.py develop + ... + Finished processing dependencies for learning-journal==0.0 + +Using WTForms +------------- + +We'll want a form to allow a user to create a new Journal Entry. + +.. rst-class:: build +.. container:: + + Add a new file called ``forms.py`` in our learning_journal package, next to + ``models.py``: + + .. code-block:: python + + from wtforms import Form, TextField, TextAreaField, validators + + strip_filter = lambda x: x.strip() if x else None + + class EntryCreateForm(Form): + title = TextField( + 'Entry title', + [validators.Length(min=1, max=255)], + filters=[strip_filter]) + body = TextAreaField( + 'Entry body', + [validators.Length(min=1)], + filters=[strip_filter]) + +.. nextslide:: Using a Form in a View + +Next, we need to add a new view that uses this form to create a new entry. + +.. rst-class:: build +.. container:: + + Add this to ``views.py``: + + .. code-block:: python + + # add these imports + from pyramid.exceptions import HTTPFound + from .forms import EntryCreateForm + + # and update this view function + def create(request): + entry = Entry() + form = EntryCreateForm(request.POST) + if request.method == 'POST' and form.validate(): + form.populate_obj(entry) + DBSession.add(entry) + return HTTPFound(location=request.route_url('home')) + return {'form': form, 'action': request.matchdict.get('action')} + +.. nextslide:: Testing the Route/View Connection + +We already have a route that connects here. Let's test it. + +.. rst-class:: build +.. container:: + + Start your server: + + .. code-block:: bash + + (ljenv)$ pserve development.ini + Starting server in PID 90536. + serving on http://0.0.0.0:6543 + + And then try connecting to the ``action`` route: + + * http://localhost:6543/journal/create + + You should see something like this:: + + {'action': u'create', 'form': } + +.. nextslide:: Rendering A Form + +Finally, we need to create a template that will render our form. + +.. rst-class:: build +.. container:: + + Add a new template called ``edit.jinja2`` in + ``learning_journal/templates``: + + .. code-block:: jinja + + {% extends "templates/layout.jinja2" %} + {% block body %} +
    + {% for field in form %} + {% if field.errors %} +
      + {% for error in field.errors %} +
    • {{ error }}
    • + {% endfor %} +
    + {% endif %} +

    {{ field.label }}: {{ field }}

    + {% endfor %} +

    +
    + {% endblock %} + +.. nextslide:: Connecting the Renderer + +You'll need to update the view configuration to use this new renderer. + +.. rst-class:: build +.. container:: + + Update the configuration in ``learning_journal/views.py``: + + .. code-block:: python + + @view_config(route_name='action', match_param='action=create', + renderer='templates/edit.jinja2') + def create(request): + # ... + + And then you should be able to start your server and test: + + .. code-block:: bash + + (ljenv)$ pserve development.ini + Starting server in PID 90536. + serving on http://0.0.0.0:6543 + + * http://localhost:6543/create + +.. nextslide:: Providing Access + +Great! Now you can add new entries to your journal. + +.. rst-class:: build +.. container:: + + But in order to do so, you have to hand-enter the url. + + You should add a new link in the UI somewhere that helps you get there more + easily. + + Add the following to ``list.jinja2``: + + .. code-block:: jinja + + {% extends "layout.jinja2" %} + {% block body %} + {% if entries %} + ... + {% else %} + ... + {% endif %} + +

    New Entry

    + {% endblock %} + +Homework +======== + +.. rst-class:: left +.. container:: + + You have a website now that allows you to create, view and list journal + entries + + .. rst-class:: build + .. container:: + + However, there are still a few flaws in this system. + + You should be able to edit a journal entry that already exists, in case + you make a spelling error. + + It would also be nice to see a prettier site. + + Let's handle that for homework this week. + +Part 1: Add Editing +------------------- + +For part one of your assignment, add editing of existing entries. You will need: + +* A form that shows an existing entry (what is different about this form from + one for creating a new entry?) +* A pyramid view that handles that form. It should: + + * Show the form with the requested entry when the page is first loaded + * Accept edits only on POST + * Update an existing entry with new data from the form + * Show the view of the entry after editing so that the user can see the edits + saved correctly + * Show errors from form validation, if any are present + +* A link somewhere that leads to the editing page for a single entry (probably + on the view page for a entry) + +You'll need to update a bit of configuration, but not much. Use the create +form we did here in class as an example. + +Part 2: Make it Yours +--------------------- + +I've created for you a very bare-bones layout and stylesheet. + +You will certainly want to add a bit of your own style and panache. + +Spend a few hours this week playing with the styles and getting a site that +looks more like you want it to look. + +The Mozilla Developer Network has `some excellent resources`_ for learning CSS. + +In particular, the `Getting Started with CSS`_ tutorial is a thorough +introduction to the basics. + +You might also look at their `CSS 3 Demos`_ to help fire up your creative +juices. + +Here are a few more resources: + +* `A List Apart `_ offers outstanding articles. Their + `Topics list `_ is worth a browse. +* `Smashing Magazine `_ is another excellent + resource for articles on design. + +.. _some excellent resources: https://developer.mozilla.org/en-US/docs/Web/CSS +.. _Getting Started with CSS: https://developer.mozilla.org/en-US/docs/CSS/Getting_Started +.. _CSS 3 Demos: https://developer.mozilla.org/en-US/demos/tag/tech:css3 + + +Part 3: User Model +------------------ + +As it stands, our journal accepts entries from anyone who comes by. + +Next week we will add security to allow only logged-in users to create and edit +entries. + +To do so, we'll need a user model + +The model should have: + +* An ``id`` field that is a primary key +* A ``username`` field that is unicode, no more than 255 characters, not + nullable, unique and indexed. +* A ``password`` field that is unicode and not nullable + +In addition, the model should have a classmethod that retrieves a specific user +when given a username. + +Part 4: Preparation for Deployment +---------------------------------- + +At the end of class next week we will be deploying our application to Heroku. + +You will need to get a free account. + +Once you have your free account set up and you have logged in, run through the +`getting started with Python`_ tutorial. + +Be sure to at least complete the *set up* step. It will have you install the +Heroku Toolbelt, which you will need to have ready in class. + +.. _getting started with Python: https://devcenter.heroku.com/articles/getting-started-with-python#introduction + diff --git a/html/_static/learning_journal_styled.png b/html/_static/learning_journal_styled.png new file mode 100644 index 0000000000000000000000000000000000000000..1bd091be7d05d98d90efd8421000c6c5c537b343 GIT binary patch literal 60697 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
    ?{@LHp)IryChMu3R7cN=JfF8De`Vr7L?= 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≪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

    w_C}^zj{y%>}{r(NV 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 BsOA6w literal 0 HcmV?d00001 diff --git a/html/presentations/session02.html b/html/presentations/session02.html new file mode 100644 index 00000000..15234ae2 --- /dev/null +++ b/html/presentations/session02.html @@ -0,0 +1,1218 @@ + + + + + + + + Session 02 — Internet Programming with Python + + + + + + + + + + + + + + + + + +

    + + + +
    +
    +
    +
    + +
    +

    Session 02¶

    +../_images/lj_entry.png +
    +

    Interacting with Data¶

    +

    Wherein we learn to display our data, and to create and edit it too!

    +
    +

    But First¶

    +

    Last week we discussed the model part of the MVC application design +pattern.

    +
    +

    We set up a project using the Pyramid web framework and the SQLAlchemy +library for persisting our data to a database.

    +

    We looked at how to define a simple model by investigating the demo model +created on our behalf.

    +

    And we went over, briefly, the way we can interact with this model at the +command line to make sure we’ve got it right.

    +

    Finally, we defined what attributes a learning journal entry would have, +and a pair of methods we think we will need to make the model complete.

    +
    +
    +
    +

    Our Data Model¶

    +

    Over the last week, your assignment was to create the new model.

    +
    +

    Did you get that done?

    +

    If not, what stopped you?

    +

    Let’s take a few minutes here to answer questions about this task so you +are more comfortable.

    +

    Questions?

    +
    +

    I have added a new folder to our class repository, resources.

    +
    +

    If you clone the repository to your local machine you can get to it.

    +

    You can also just browse the repository in github to view it.

    +

    In this folder, I added a session02 folder that contains resources for +today.

    +

    Among these resources is the completed models.py file with this new +model added.

    +

    Let’s review how it works.

    +
    +

    Another resource I’ve added is the ljshell.py script.

    +
    +

    That script will allow you to interact with a db session just like I showed +in class last week:

    +
    # the script
    +from pyramid.paster import get_appsettings, setup_logging
    +from sqlalchemy import engine_from_config
    +from sqlalchemy.orm import sessionmaker
    +
    +config_uri = 'development.ini'
    +setup_logging(config_uri)
    +settings = get_appsettings(config_uri)
    +engine = engine_from_config(settings, 'sqlalchemy.')
    +Session = sessionmaker(bind=engine)
    +
    +
    +

    Just copy the file into your learning_journal Pyramid project folder (where +setup.py is)

    +
    +

    Here’s a demo interaction using the script to set up a session maker

    +
    +

    First cd to your project code, fire up your project virtualenv and +start python:

    +
    $ cd projects/learning-journal/learning_journal
    +$ source ../ljenv/bin/activate
    +(ljenv)$ python
    +>>>
    +
    +
    +

    Then, you can import the Session symbol from ljshell and you’re off +to the races:

    +
    >>> from ljshell import Session
    +>>> from learning_journal.models import MyModel
    +>>> session = Session()
    +>>> session.query(MyModel).all()
    +[<learning_journal.models.MyModel object at 0x105849b90>]
    +...
    +
    +
    +

    [demo]

    +
    +
    +
    +
    +

    The MVC Controller¶

    +
    +

    Let’s go back to thinking for a bit about the Model-View-Controller +pattern.

    +
    +http://upload.wikimedia.org/wikipedia/commons/4/40/MVC_passive_view.png +

    By Alan Evangelista (Own work) [CC0], via Wikimedia Commons

    +
    +
    +

    We talked last week (and today) about the model

    +

    Today, we’ll dig into controllers and views

    +

    or as we will know them in Pyramid: views and renderers

    +
    +
    +
    +

    HTTP Request/Response¶

    +

    Internet software is driven by the HTTP Request/Response cycle.

    +
    +

    A client (perhaps a user with a web browser) makes a request

    +

    A server receives and handles that request and returns a response

    +

    The client receives the response and views it, perhaps making a new +request

    +

    And around and around it goes.

    +
    +

    An HTTP request arrives at a server through the magic of a URL

    +
    http://uwpce-pythoncert.github.io/training.python_web/html/index.html
    +
    +
    +
    +

    Let’s break that up into its constituent parts:

    +
    +
    http://:
    +
    This part is the protocol, it determines how the request will be sent
    +
    uwpce-pythoncert.github.io:
    +
    This is a domain name. It’s the human-facing address for a server +somewhere.
    +
    /training.python_web/html/index.html:
    +
    This part is the path. It serves as a locator for a resource on the +server
    +
    +
    +

    In a static website (like our documentation) the path identifies a physical +location in the server’s filesystem.

    +
    +

    Some directory on the server is the home for the web process, and the +path is looked up there.

    +

    Whatever resource (a file, an image, whatever) is located there is returned +to the user as a response.

    +

    If the path leads to a location that doesn’t exist, the server responds +with a 404 Not Found error.

    +

    In the golden days of yore, this was the only way content was served via +HTTP.

    +
    +

    In todays world we have dynamic systems, server-side web frameworks like +Pyramid.

    +
    +

    The requests that you send to a server are handled by a software process +that assembles a response instead of looking up a physical location.

    +

    But we still have URLs, with protocol, domain and path.

    +

    What is the role for a path in a process that doesn’t refer to a physical +file system?

    +

    Most web frameworks now call the path a route.

    +

    They provide a way of matching routes to the code that will be run to +handle requests.

    +
    +
    +
    +

    Routes in Pyramid¶

    +

    In Pyramid, routes are handled as configuration and are set up in the main +function in __init__.py:

    +
    # learning_journal/__init__.py
    +def main(global_config, **settings):
    +    # ...
    +    config.add_route('home', '/')
    +    # ...
    +
    +
    +
    +

    Our code template created a sample route for us, using the add_route +method of the Configurator class.

    +

    The add_route method has two required arguments: a name and a +pattern

    +

    In our sample route, the name is 'home'

    +

    In our sample route, the pattern is '/'

    +
    +

    When a request comes in to a Pyramid application, the framework looks at all +the routes that have been configured.

    +
    +

    One by one, in order, it tries to match the path of the incoming request +against the pattern of the route.

    +

    As soon as a pattern matches the path from the incoming request, that +route is used and no further matching is performed.

    +

    If no route is found that matches, then the request will automatically get +a 404 Not Found error response.

    +

    In our sample app, we have one sample route named 'home', with a +pattern of /.

    +

    This means that any request that comes in for / will be matched to this +route, and any other request will be 404.

    +
    +

    In a very real sense, the routes defined in an application are the public +API.

    +
    +

    Any route that is present represents something the user can do.

    +

    Any route that is not present is something the user cannot do.

    +

    You can use the proper definition of routes to help conceptualize what your +app will do.

    +

    What routes might we want for a learning journal application?

    +

    What will our application do?

    +
    +

    Let’s add routes for our application.

    +
    +

    Open learning_journal/__init__.py.

    +

    For our list page, the existing 'home' route will do fine, leave it.

    +

    Add the following two routes:

    +
    config.add_route('home', '/') # already there
    +config.add_route('detail', '/journal/{id:\d+}')
    +config.add_route('action', '/journal/{action}')
    +
    +
    +

    The 'detail' route will serve a single journal entry, identified by an +id.

    +

    The action route will serve create and edit views, depending on +the action specified.

    +

    In both cases, we want to capture a portion of the matched path to use +information it provides.

    +
    +

    In a pattern, you can capture a path segment replacement +marker, a valid Python symbol surrounded by curly braces:

    +
    +
    /home/{foo}/
    +
    +
    +

    If you want to match a particular pattern, like digits only, add a +regexp:

    +
    /journal/{id:\d+}
    +
    +
    +

    Matched path segments are captured in a matchdict:

    +
    # pattern          # actual url   # matchdict
    +/journal/{id:\d+}  /journal/27    {'id': '27'}
    +
    +
    +

    The matchdict is made available as an attribute of the request

    +
    +

    In Pyramid, a route is connected by configuration to a view.

    +
    +

    In our app, a sample view has been created for us, in views.py:

    +
    @view_config(route_name='home', renderer='templates/mytemplate.pt')
    +def my_view(request):
    +    # ...
    +
    +
    +

    The order in which routes are configured is important, so that must be +done in __init__.py.

    +

    The order in which views are connected to routes is not important, so the +declarative @view_config decorator can be used.

    +

    When config.scan is called, all files in our application are searched +for such declarative configuration and it is added.

    +
    +
    +
    +

    The Pyramid View¶

    +

    Let’s imagine that a request has come to our application for the path +'/'.

    +
    +

    The framework made a match of that path to a route with the pattern '/'.

    +

    Configuration connected that route to a view in our application.

    +

    Now, the view that was connected will be called, which brings us to the +nature of views

    +

    –A Pyramid view is a callable that takes request as an argument–

    +

    Remember what a callable is?

    +
    +

    So, a view is a callable that takes the request as an argument.

    +
    +

    It can then use information from that request to build appropriate data, +perhaps using the application’s models.

    +

    Then, it returns the data it assembled, passing it on to a renderer.

    +

    Which renderer to use is determined, again, by configuration:

    +
    @view_config(route_name='home', renderer='templates/mytemplate.pt')
    +def my_view(request):
    +    # ...
    +
    +
    +

    More about this in a moment.

    +

    The view stands at the intersection of input data, the application +model and renderers that offer rendering of the results.

    +

    It is the Controller in our MVC application.

    +
    +

    Add temporary views to our application in views.py (and comment out the +sample view):

    +
    @view_config(route_name='home', renderer='string')
    +def index_page(request):
    +    return 'list page'
    +
    +@view_config(route_name='detail', renderer='string')
    +def view(request):
    +    return 'detail page'
    +
    +@view_config(route_name='action', match_param='action=create', renderer='string')
    +def create(request):
    +    return 'create page'
    +
    +@view_config(route_name='action', match_param='action=edit', renderer='string')
    +def update(request):
    +    return 'edit page'
    +
    +
    +

    Now we can verify that our view configuration has worked.

    +
    +

    Make sure your virtualenv is properly activated, and start the web server:

    +
    (ljenv)$ pserve development.ini
    +Starting server in PID 84467.
    +serving on http://0.0.0.0:6543
    +
    +
    +

    Then try viewing some of the expected application urls:

    + +

    What happens if you visit a URL that isn’t in our configuration?

    +
    +

    Now that we’ve got temporary views that work, we can fix them to get +information from our database

    +
    +

    We’ll begin with the list view.

    +

    We need some code that will fetch all the journal entries we’ve written, in +reverse order, and hand that collection back for rendering.

    +
    from .models import (
    +    DBSession,
    +    MyModel,
    +    Entry, # <- Add this import
    +)
    +
    +# and update this view function
    +def index_page(request):
    +    entries = Entry.all()
    +    return {'entries': entries}
    +
    +
    +
    +

    Next, we want to write the view for a single entry.

    +
    +

    We’ll need to use the id value our route captures into the +matchdict.

    +

    Remember that the matchdict is an attribute of the request.

    +

    We’ll get the id from there, and use it to get the correct entry.

    +
    # add this import at the top
    +from pyramid.exceptions import HTTPNotFound
    +
    +# and update this view function:
    +def blog_view(request):
    +    this_id = request.matchdict.get('id', -1)
    +    entry = Entry.by_id(this_id)
    +    if not entry:
    +        return HTTPNotFound()
    +    return {'entry': entry}
    +
    +
    +
    +

    We can now verify that these views work correctly.

    +
    +

    Make sure your virtualenv is properly activated, and start the web server:

    +
    (ljenv)$ pserve development.ini
    +Starting server in PID 84467.
    +serving on http://0.0.0.0:6543
    +
    +
    +

    Then try viewing the list page and an entry page:

    + +

    What happens when you request an entry with an id that isn’t in the +database?

    + +
    +
    +
    +
    +

    The MVC View¶

    +
    +

    Again, back to the Model-View-Controller pattern.

    +
    +http://upload.wikimedia.org/wikipedia/commons/4/40/MVC_passive_view.png +

    By Alan Evangelista (Own work) [CC0], via Wikimedia Commons

    +
    +
    +

    We’ve built a model and we’ve created some controllers that use it.

    +

    In Pyramid, we call controllers views and they are callables that +take request as an argument.

    +

    Let’s turn to the last piece of the MVC patter, the view

    +
    +
    +
    +

    Presenting Data¶

    +

    The job of the view in the MVC pattern is to present data in a format that +is readable to the user of the system.

    +
    +

    There are many ways to present data.

    +

    Some are readable by humans (tables, charts, graphs, HTML pages, text +files).

    +

    Some are more for machines (xml files, csv, json).

    +

    Which of these formats is the right one depends on your purpose.

    +

    What is the purpose of our learning journal?

    +
    +
    +
    +

    Pyramid Renderers¶

    +

    In Pyramid, the job of presenting data is performed by a renderer.

    +
    +

    So we can consider the Pyramid renderer to be the view in our MVC +app.

    +

    We’ve already seen how we can connect a renderer to a Pyramid view with +configuration.

    +

    In fact, we have already done so, using a built-in renderer called +'string'.

    +

    This renderer converts the return value of its view to a string and sends +that back to the client as an HTTP response.

    +

    But the result isn’t so nice looking.

    +
    +

    The built-in renderers ('string', 'json', 'jsonp') in Pyramid are +not the only ones available.

    +
    +

    There are add-ons to Pyramid that support using various template +languages as renderers.

    +

    In fact, one of these was installed by default when you created this +project.

    +
    +
    # in setup.py
    +requires = [
    +    # ...
    +    'pyramid_chameleon',
    +    # ...
    +]
    +
    +# in learning_journal/__init__.py
    +def main(global_config, **settings):
    +    # ...
    +    config.include('pyramid_chameleon')
    +
    +
    +
    +

    The pyramid_chameleon package supports using the chameleon template +language.

    +

    The language is quite nice and powerful, but not so easy to learn.

    +

    Let’s use a different one, jinja2

    +
    +

    Change pyramid_chameleon to pyramid_jinja2 in both of these files:

    +
    # in setup.py
    +requires = [
    +    # ...
    +    'pyramid_jinja2',
    +    # ...
    +]
    +
    +# in learning_journal/__init__.py
    +def main(global_config, **settings):
    +    # ...
    +    config.include('pyramid_jinja2')
    +
    +
    +

    We’ve changed the dependencies for our Pyramid project.

    +
    +

    As a result, we will need to re-install it so the new dependencies are also +installed:

    +
    (ljenv)$ python setup.py develop
    +...
    +Finished processing dependencies for learning-journal==0.0
    +(ljenv)$
    +
    +
    +

    Now, we can use Jinja2 templates in our project.

    +

    Let’s learn a bit about how Jinja2 templates work.

    +
    +
    +
    +

    Jinja2 Template Basics¶

    +

    We’ll start with the absolute basics.

    +
    +

    Fire up a Python interpreter, using your ljenv virtualenv:

    +
    (ljenv)$ python
    +>>>
    +
    +
    +

    Then import the Template class from the jinja2 package:

    +
    >>> from jinja2 import Template
    +
    +
    +
    +

    A template is constructed with a simple string:

    +
    >>> t1 = Template("Hello {{ name }}, how are you?")
    +
    +
    +
    +

    Here, we’ve simply typed the string directly, but it is more common to +build a template from the contents of a file.

    +

    Notice that our string has some odd stuff in it: {{ name }}.

    +

    This is called a placeholder and when the template is rendered it is +replaced.

    +
    +

    Call the render method, providing context:

    +
    >>> t1.render(name="Freddy")
    +u'Hello Freddy, how are you?'
    +>>> t1.render({'name': "Roberto"})
    +u'Hello Roberto, how are you?'
    +>>>
    +
    +
    +
    +

    Context can either be keyword arguments, or a dictionary

    +

    Note the resemblance to something you’ve seen before:

    +
    >>> "This is {owner}'s string".format(owner="Cris")
    +'This is Cris's string'
    +
    +
    +
    +

    Dictionaries passed in as part of the context can be addressed with either +subscript or dotted notation:

    +
    >>> person = {'first_name': 'Frank',
    +...           'last_name': 'Herbert'}
    +>>> t2 = Template("{{ person.last_name }}, {{ person['first_name'] }}")
    +>>> t2.render(person=person)
    +u'Herbert, Frank'
    +
    +
    +
      +
    • Jinja2 will try the correct way first (attr for dotted, item for +subscript).
    • +
    • If nothing is found, it will try the opposite.
    • +
    • If nothing is found, it will return an undefined object.
    • +
    +

    The exact same is true of objects passed in as part of context:

    +
    +
    >>> t3 = Template("{{ obj.x }} + {{ obj['y'] }} = Fun!")
    +>>> class Game(object):
    +...   x = 'babies'
    +...   y = 'bubbles'
    +...
    +>>> bathtime = Game()
    +>>> t3.render(obj=bathtime)
    +u'babies + bubbles = Fun!'
    +
    +
    +

    This means your templates can be a bit agnostic as to the nature of the +things in context

    +
    +

    You can apply filters to the data passed in context with the pipe (‘|’) +operator:

    +
    t4 = Template("shouted: {{ phrase|upper }}")
    +>>> t4.render(phrase="this is very important")
    +u'shouted: THIS IS VERY IMPORTANT'
    +
    +
    +
    +

    You can also chain filters together:

    +
    t5 = Template("confusing: {{ phrase|upper|reverse }}")
    +>>> t5.render(phrase="howdy doody")
    +u'confusing: YDOOD YDWOH'
    +
    +
    +
    +

    Logical control structures are also available:

    +
    +
    tmpl = """
    +... {% for item in list %}{{ item }}, {% endfor %}
    +... """
    +>>> t6 = Template(tmpl)
    +>>> t6.render(list=[1,2,3,4,5,6])
    +u'\n1, 2, 3, 4, 5, 6, '
    +
    +
    +

    Any control structure introduced in a template must be paired with an +explicit closing tag ({% for %}...{% endfor %})

    +

    Remember, although template tags like {% for %} or {% if %} look a +lot like Python, they are not.

    +

    The syntax is specific and must be followed correctly.

    +
    +

    There are a number of specialized tests available for use with the +if...elif...else control structure:

    +
    >>> tmpl = """
    +... {% if phrase is upper %}
    +...   {{ phrase|lower }}
    +... {% elif phrase is lower %}
    +...   {{ phrase|upper }}
    +... {% else %}{{ phrase }}{% endif %}"""
    +>>> t7 = Template(tmpl)
    +>>> t7.render(phrase="FOO")
    +u'\n\n  foo\n'
    +>>> t7.render(phrase="bar")
    +u'\n\n  BAR\n'
    +>>> t7.render(phrase="This should print as-is")
    +u'\nThis should print as-is'
    +
    +
    +

    Basic Python-like expressions are also supported:

    +
    tmpl = """
    +... {% set sum = 0 %}
    +... {% for val in values %}
    +... {{ val }}: {{ sum + val }}
    +...   {% set sum = sum + val %}
    +... {% endfor %}
    +... """
    +>>> t8 = Template(tmpl)
    +>>> t8.render(values=range(1,11))
    +u'\n\n\n1: 1\n  \n\n2: 3\n  \n\n3: 6\n  \n\n4: 10\n
    +  \n\n5: 15\n  \n\n6: 21\n  \n\n7: 28\n  \n\n8: 36\n
    +  \n\n9: 45\n  \n\n10: 55\n  \n'
    +
    +
    +
    +
    +

    Our Templates¶

    +

    There’s more that Jinja2 templates can do, but it will be easier to introduce +you to that in the context of a working template. So let’s make some.

    +

    We have a Pyramid view that returns a single entry. Let’s create a template to +show it.

    +
    +

    In learning_journal/templates create a new file detail.jinja2:

    +
    <article>
    +  <h1>{{ entry.title }}</h1>
    +  <hr/>
    +  <p>{{ entry.body }}</p>
    +  <hr/>
    +  <p>Created <strong title="{{ entry.created }}">{{entry.created}}</strong></p>
    +</article>
    +
    +
    +

    Then wire it up to the detail view in views.py:

    +
    # views.py
    +@view_config(route_name='detail', renderer='templates/detail.jinja2')
    +def blog_view(request):
    +    # ...
    +
    +
    +
    +

    Now we should be able to see some rendered HTML for our journal entry details.

    +
    +

    Start up your server:

    +
    (ljenv)$ pserve development.ini
    +Starting server in PID 90536.
    +serving on http://0.0.0.0:6543
    +
    +
    +

    Then try viewing an individual journal entry

    + +
    +

    The index page of our journal should show a list of journal entries, let’s do +that next.

    +
    +

    In learning_journal/templates create a new file list.jinja2:

    +
    {% if entries %}
    +<h2>Journal Entries</h2>
    +<ul>
    +  {% for entry in entries %}
    +    <li>
    +    <a href="{{ request.route_url('detail', id=entry.id) }}">{{ entry.title }}</a>
    +    </li>
    +  {% endfor %}
    +</ul>
    +{% else %}
    +<p>This journal is empty</p>
    +{% endif %}
    +
    +
    +
    +

    It’s worth taking a look at a few specifics of this template.

    +
    +
    <a href="{{ request.route_url('detail', id=entry.id) }}">{{ entry.title }}</a>
    +
    +
    +

    Jinja2 templates are rendered with a context.

    +

    The return values of the Pyramid view for a template get included in that +context.

    +

    So does request, which is placed there by the framework.

    +

    Request has a method route_url that will create a URL for a named +route.

    +

    This allows you to include URLs in your template without needing to know +exactly what they will be.

    +

    This process is called reversing, since it’s a bit like a reverse phone +book lookup.

    +
    +

    Finally, you’ll need to connect this new renderer to your listing view:

    +
    @view_config(route_name='home', renderer='templates/list.jinja2')
    +def index_page(request):
    +    # ...
    +
    +
    +

    We can now see our list page too. Let’s try starting the server:

    +
    +
    (ljenv)$ pserve development.ini
    +Starting server in PID 90536.
    +serving on http://0.0.0.0:6543
    +
    +
    +

    Then try viewing the home page of your journal:

    + +

    Click on the link to an entry, it should work.

    +
    +

    These views are reasonable, if quite plain.

    +
    +

    It’d be nice to put them into something that looks a bit more like a +website.

    +

    Jinja2 allows you to combine templates using something called +template inheritance.

    +

    You can create a basic page structure, and then inherit that structure in +other templates.

    +

    In our class resources I’ve added a page template layout.jinja2. Copy +that page to your templates directory

    +
    +
    <!DOCTYPE html>
    +<html lang="en">
    +  <head>
    +    <meta charset="utf-8">
    +    <title>Python Learning Journal</title>
    +    <!--[if lt IE 9]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
    +  </head>
    +  <body>
    +    <header>
    +      <nav><ul><li><a href="{{ request.route_url('home') }}">Home</a></li></ul></nav>
    +    </header>
    +    <main>
    +      <h1>My Python Journal</h1>
    +      <section id="content">{% block body %}{% endblock %}</section>
    +    </main>
    +    <footer><p>Created in the UW PCE Python Certificate Program</p></footer>
    +  </body>
    +</html>
    +
    +
    +

    The important part here is the {% block body %}{% endblock %} expression.

    +
    +

    This is a template block and it is a kind of placeholder.

    +

    Other templates can inherit from this one, and fill that block with +additional HTML.

    +

    Let’s update our detail and list templates:

    +
    {% extends "layout.jinja2" %}
    +{% block body %}
    +<!-- everything else that was already there goes here -->
    +{% endblock %}
    +
    +
    +
    +

    Let’s try starting the server so we can see the result:

    +
    +
    (ljenv)$ pserve development.ini
    +Starting server in PID 90536.
    +serving on http://0.0.0.0:6543
    +
    +
    +

    Then try viewing the home page of your journal:

    + +

    Click on the link to an entry, it should work.

    +

    And now you have shared page structure that is in both.

    +
    +
    +
    +

    Static Assets¶

    +

    Although we have a shared structure, it isn’t particularly nice to look at.

    +
    +

    Aspects of how a website looks are controlled by CSS (Cascading Style +Sheets).

    +

    Stylesheets are one of what we generally speak of as static assets.

    +

    Other static assets include images that are part of the look and feel of +the site (logos, button images, etc) and the JavaScript files that add +client-side dynamic behavior to the site.

    +
    +

    Serving static assets in Pyramid requires a static view to configuration. +Luckily, pcreate already handled that for us:

    +
    +
    # in learning_journal/__init__.py
    +def main(global_config, **settings):
    +    # ...
    +    config.add_static_view('static', 'static', cache_max_age=3600)
    +    # ...
    +
    +
    +

    The first argument to add_static_view is a name that will need to +appear in the path of URLs requesting assets.

    +

    The second argument is a path that is relative to the package being +configured.

    +

    Assets referenced by the name in a URL will be searched for in the +location defined by the path

    +

    Additional keyword arguments control other aspects of how the view works.

    +
    +

    Once you have a static view configured, you can use assets in that location in +templates.

    +
    +

    The request object in Pyramid provides a static_url method that +builds appropriate URLs

    +

    Add the following to our layout.jinja2 template:

    +
    <head>
    +  <!-- ... -->
    +  <link href="{{ request.static_url('learning_journal:static/styles.css') }}" rel="stylesheet">
    +</head>
    +
    +
    +

    The one required argument to request.static_url is a path to an +asset.

    +

    Note that because any package might define a static view, we have to +specify which package we want to look in.

    +

    That’s why we have learning_journal:static/styles.css in our call.

    +
    +

    I’ve created some very very basic styles for our learning journal.

    +
    +

    You can find them in resources/session02/styles.css. Go ahead and copy +that file.

    +

    Add it to learning_journal/static.

    +

    Then restart your web server and see what a difference a little style +makes:

    +
    (ljenv)$ pserve development.ini
    +Starting server in PID 90536.
    +serving on http://0.0.0.0:6543
    +
    +
    +
    +

    Your site should look something like this:

    +
    +../_images/learning_journal_styled.png +

    The learning journal with basic styles applied

    +
    +
    +
    +
    +

    Getting Interactive¶

    +
    +

    We have a site that allows us to view a list of journal entries.

    +
    +

    We can also view the details of a single entry.

    +

    But as yet, we don’t really have any interaction in our site yet.

    +

    We can’t create new entries.

    +

    Let’s add that functionality next.

    +
    +
    +
    +

    User Input¶

    +

    In HTML websites, the traditional way of getting input from users is via +HTML forms.

    +
    +

    Forms use input elements to allow users to enter data, pick from +drop-down lists, or choose items via checkbox or radio button.

    +

    It is possible to create plain HTML forms in templates and use them with +Pyramid.

    +

    It’s a lot easier, however, to work with a form library to create forms, +render them in templates and interact with data sent by a client.

    +

    We’ll be using a form library called WTForms in our project

    +
    +

    The first step to working with this library is to install it.

    +
    +

    Start by makin the library as a dependency of our package by adding it to +the requires list in setup.py:

    +
    requires = [
    +    # ...
    +    'wtforms', # <- add this to the list
    +]
    +
    +
    +

    Then, re-install our package to download and install the new dependency:

    +
    (ljenv)$ python setup.py develop
    +...
    +Finished processing dependencies for learning-journal==0.0
    +
    +
    +
    +
    +
    +

    Using WTForms¶

    +

    We’ll want a form to allow a user to create a new Journal Entry.

    +
    +

    Add a new file called forms.py in our learning_journal package, next to +models.py:

    +
    from wtforms import Form, TextField, TextAreaField, validators
    +
    +strip_filter = lambda x: x.strip() if x else None
    +
    +class EntryCreateForm(Form):
    +    title = TextField(
    +        'Entry title',
    +        [validators.Length(min=1, max=255)],
    +        filters=[strip_filter])
    +    body = TextAreaField(
    +        'Entry body',
    +        [validators.Length(min=1)],
    +        filters=[strip_filter])
    +
    +
    +
    +

    Next, we need to add a new view that uses this form to create a new entry.

    +
    +

    Add this to views.py:

    +
    # add these imports
    +from pyramid.exceptions import HTTPFound
    +from .forms import EntryCreateForm
    +
    +# and update this view function
    +def create(request):
    +    entry = Entry()
    +    form = EntryCreateForm(request.POST)
    +    if request.method == 'POST' and form.validate():
    +        form.populate_obj(entry)
    +        DBSession.add(entry)
    +        return HTTPFound(location=request.route_url('home'))
    +    return {'form': form, 'action': request.matchdict.get('action')}
    +
    +
    +
    +

    We already have a route that connects here. Let’s test it.

    +
    +

    Start your server:

    +
    (ljenv)$ pserve development.ini
    +Starting server in PID 90536.
    +serving on http://0.0.0.0:6543
    +
    +
    +

    And then try connecting to the action route:

    + +

    You should see something like this:

    +
    {'action': u'create', 'form': <learning_journal.forms.EntryCreateForm object at 0x10e7d6b90>}
    +
    +
    +
    +

    Finally, we need to create a template that will render our form.

    +
    +

    Add a new template called edit.jinja2 in +learning_journal/templates:

    +
    {% extends "templates/layout.jinja2" %}
    +{% block body %}
    +<form action="." method="POST">
    +{% for field in form %}
    +  {% if field.errors %}
    +    <ul>
    +    {% for error in field.errors %}
    +        <li>{{ error }}</li>
    +    {% endfor %}
    +    </ul>
    +  {% endif %}
    +    <p>{{ field.label }}: {{ field }}</p>
    +{% endfor %}
    +    <p><input type="submit" name="submit" value="Submit" /></p>
    +</form>
    +{% endblock %}
    +
    +
    +
    +

    You’ll need to update the view configuration to use this new renderer.

    +
    +

    Update the configuration in learning_journal/views.py:

    +
    @view_config(route_name='action', match_param='action=create',
    +             renderer='templates/edit.jinja2')
    +def create(request):
    +    # ...
    +
    +
    +

    And then you should be able to start your server and test:

    +
    (ljenv)$ pserve development.ini
    +Starting server in PID 90536.
    +serving on http://0.0.0.0:6543
    +
    +
    + +
    +

    Great! Now you can add new entries to your journal.

    +
    +

    But in order to do so, you have to hand-enter the url.

    +

    You should add a new link in the UI somewhere that helps you get there more +easily.

    +

    Add the following to list.jinja2:

    +
    {% extends "layout.jinja2" %}
    +{% block body %}
    +{% if entries %}
    +...
    +{% else %}
    +...
    +{% endif %}
    +<!-- Add This Link -->
    +<p><a href="{{ request.route_url('action', action='create') }}">New Entry</a></p>
    +{% endblock %}
    +
    +
    +
    +
    +
    +
    +

    Homework¶

    +
    +

    You have a website now that allows you to create, view and list journal +entries

    +
    +

    However, there are still a few flaws in this system.

    +

    You should be able to edit a journal entry that already exists, in case +you make a spelling error.

    +

    It would also be nice to see a prettier site.

    +

    Let’s handle that for homework this week.

    +
    +
    +
    +

    Part 1: Add Editing¶

    +

    For part one of your assignment, add editing of existing entries. You will need:

    +
      +
    • A form that shows an existing entry (what is different about this form from +one for creating a new entry?)
    • +
    • A pyramid view that handles that form. It should:
        +
      • Show the form with the requested entry when the page is first loaded
      • +
      • Accept edits only on POST
      • +
      • Update an existing entry with new data from the form
      • +
      • Show the view of the entry after editing so that the user can see the edits +saved correctly
      • +
      • Show errors from form validation, if any are present
      • +
      +
    • +
    • A link somewhere that leads to the editing page for a single entry (probably +on the view page for a entry)
    • +
    +

    You’ll need to update a bit of configuration, but not much. Use the create +form we did here in class as an example.

    +
    +
    +

    Part 2: Make it Yours¶

    +

    I’ve created for you a very bare-bones layout and stylesheet.

    +

    You will certainly want to add a bit of your own style and panache.

    +

    Spend a few hours this week playing with the styles and getting a site that +looks more like you want it to look.

    +

    The Mozilla Developer Network has some excellent resources for learning CSS.

    +

    In particular, the Getting Started with CSS tutorial is a thorough +introduction to the basics.

    +

    You might also look at their CSS 3 Demos to help fire up your creative +juices.

    +

    Here are a few more resources:

    + +
    +
    +

    Part 3: User Model¶

    +

    As it stands, our journal accepts entries from anyone who comes by.

    +

    Next week we will add security to allow only logged-in users to create and edit +entries.

    +

    To do so, we’ll need a user model

    +

    The model should have:

    +
      +
    • An id field that is a primary key
    • +
    • A username field that is unicode, no more than 255 characters, not +nullable, unique and indexed.
    • +
    • A password field that is unicode and not nullable
    • +
    +

    In addition, the model should have a classmethod that retrieves a specific user +when given a username.

    +
    +
    +

    Part 4: Preparation for Deployment¶

    +

    At the end of class next week we will be deploying our application to Heroku.

    +

    You will need to get a free account.

    +

    Once you have your free account set up and you have logged in, run through the +getting started with Python tutorial.

    +

    Be sure to at least complete the set up step. It will have you install the +Heroku Toolbelt, which you will need to have ready in class.

    +
    +
    +
    + + +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/slides/_images/learning_journal_styled.png b/slides/_images/learning_journal_styled.png new file mode 100644 index 0000000000000000000000000000000000000000..1bd091be7d05d98d90efd8421000c6c5c537b343 GIT binary patch literal 60697 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
    ?{@LHp)IryChMu3R7cN=JfF8De`Vr7L?= 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≪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

    w_C}^zj{y%>}{r(NV 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 BsOA6w literal 0 HcmV?d00001 diff --git a/slides/_sources/presentations/session02.txt b/slides/_sources/presentations/session02.txt new file mode 100644 index 00000000..3d1c6b8e --- /dev/null +++ b/slides/_sources/presentations/session02.txt @@ -0,0 +1,1576 @@ +.. slideconf:: + :autoslides: True + +********** +Session 02 +********** + +.. image:: /_static/lj_entry.png + :width: 65% + :align: center + +Interacting with Data +===================== + +**Wherein we learn to display our data, and to create and edit it too!** + + +But First +--------- + +Last week we discussed the **model** part of the *MVC* application design +pattern. + +.. rst-class:: build +.. container:: + + We set up a project using the `Pyramid`_ web framework and the `SQLAlchemy`_ + library for persisting our data to a database. + + We looked at how to define a simple model by investigating the demo model + created on our behalf. + + And we went over, briefly, the way we can interact with this model at the + command line to make sure we've got it right. + + Finally, we defined what attributes a learning journal entry would have, + and a pair of methods we think we will need to make the model complete. + +.. _Pyramid: http://www.pylonsproject.org/projects/pyramid/about +.. _SQLAlchemy: http://docs.sqlalchemy.org/en/rel_0_9/ + +Our Data Model +-------------- + +Over the last week, your assignment was to create the new model. + +.. rst-class:: build +.. container:: + + Did you get that done? + + If not, what stopped you? + + Let's take a few minutes here to answer questions about this task so you + are more comfortable. + + Questions? + +.. nextslide:: A Complete Example + +I have added a new folder to our `class repository`_, ``resources``. + +.. _class repository: https://github.com/UWPCE-PythonCert/training.python_web/ + +.. rst-class:: build +.. container:: + + If you clone the repository to your local machine you can get to it. + + You can also just browse the repository in github to view it. + + In this folder, I added a ``session02`` folder that contains resources for + today. + + Among these resources is the completed ``models.py`` file with this new + model added. + + Let's review how it works. + +.. nextslide:: Demo Interaction + +Another resource I've added is the ``ljshell.py`` script. + +.. rst-class:: build +.. container:: + + That script will allow you to interact with a db session just like I showed + in class last week: + + .. code-block:: python + + # the script + from pyramid.paster import get_appsettings, setup_logging + from sqlalchemy import engine_from_config + from sqlalchemy.orm import sessionmaker + + config_uri = 'development.ini' + setup_logging(config_uri) + settings = get_appsettings(config_uri) + engine = engine_from_config(settings, 'sqlalchemy.') + Session = sessionmaker(bind=engine) + + Just copy the file into your learning_journal Pyramid project folder (where + ``setup.py`` is) + +.. nextslide:: Using the ``ljshell.py`` script + +Here's a demo interaction using the script to set up a session maker + +.. rst-class:: build +.. container:: + + First ``cd`` to your project code, fire up your project virtualenv and + start python: + + .. code-block:: bash + + $ cd projects/learning-journal/learning_journal + $ source ../ljenv/bin/activate + (ljenv)$ python + >>> + + Then, you can import the ``Session`` symbol from ``ljshell`` and you're off + to the races: + + .. code-block:: pycon + + >>> from ljshell import Session + >>> from learning_journal.models import MyModel + >>> session = Session() + >>> session.query(MyModel).all() + [] + ... + + [demo] + +The MVC Controller +================== + +.. rst-class:: left +.. container:: + + Let's go back to thinking for a bit about the *Model-View-Controller* + pattern. + + .. figure:: http://upload.wikimedia.org/wikipedia/commons/4/40/MVC_passive_view.png + :align: center + :width: 25% + + By Alan Evangelista (Own work) [CC0], via Wikimedia Commons + + .. rst-class:: build + .. container:: + + We talked last week (and today) about the *model* + + Today, we'll dig into *controllers* and *views* + + or as we will know them in Pyramid: *views* and *renderers* + + +HTTP Request/Response +--------------------- + +Internet software is driven by the HTTP Request/Response cycle. + +.. rst-class:: build +.. container:: + + A *client* (perhaps a user with a web browser) makes a **request** + + A *server* receives and handles that request and returns a **response** + + The *client* receives the response and views it, perhaps making a new + **request** + + And around and around it goes. + +.. nextslide:: URLs + +An HTTP request arrives at a server through the magic of a **URL** + +.. code-block:: bash + + http://uwpce-pythoncert.github.io/training.python_web/html/index.html + +.. rst-class:: build +.. container:: + + Let's break that up into its constituent parts: + + .. rst-class:: build + + \http://: + This part is the *protocol*, it determines how the request will be sent + + uwpce-pythoncert.github.io: + This is a *domain name*. It's the human-facing address for a server + somewhere. + + /training.python_web/html/index.html: + This part is the *path*. It serves as a locator for a resource *on the + server* + +.. nextslide:: Paths + +In a static website (like our documentation) the *path* identifies a **physical +location** in the server's filesystem. + +.. rst-class:: build +.. container:: + + Some directory on the server is the *home* for the web process, and the + *path* is looked up there. + + Whatever resource (a file, an image, whatever) is located there is returned + to the user as a response. + + If the path leads to a location that doesn't exist, the server responds + with a **404 Not Found** error. + + In the golden days of yore, this was the only way content was served via + HTTP. + +.. nextslide:: Paths in an MVC System + +In todays world we have dynamic systems, server-side web frameworks like +Pyramid. + +.. rst-class:: build +.. container:: + + The requests that you send to a server are handled by a software process + that assembles a response instead of looking up a physical location. + + But we still have URLs, with *protocol*, *domain* and *path*. + + What is the role for a path in a process that doesn't refer to a physical + file system? + + Most web frameworks now call the *path* a **route**. + + They provide a way of matching *routes* to the code that will be run to + handle requests. + +Routes in Pyramid +----------------- + +In Pyramid, routes are handled as *configuration* and are set up in the *main* +function in ``__init__.py``: + +.. code-block:: python + + # learning_journal/__init__.py + def main(global_config, **settings): + # ... + config.add_route('home', '/') + # ... + +.. rst-class:: build +.. container:: + + Our code template created a sample route for us, using the ``add_route`` + method of the ``Configurator`` class. + + The ``add_route`` method has two required arguments: a *name* and a + *pattern* + + In our sample route, the *name* is ``'home'`` + + In our sample route, the *pattern* is ``'/'`` + +.. nextslide:: + +When a request comes in to a Pyramid application, the framework looks at all +the *routes* that have been configured. + +.. rst-class:: build +.. container:: + + One by one, in order, it tries to match the *path* of the incoming request + against the *pattern* of the route. + + As soon as a *pattern* matches the *path* from the incoming request, that + route is used and no further matching is performed. + + If no route is found that matches, then the request will automatically get + a **404 Not Found** error response. + + In our sample app, we have one sample *route* named ``'home'``, with a + pattern of ``/``. + + This means that any request that comes in for ``/`` will be matched to this + route, and any other request will be **404**. + +.. nextslide:: Routes as API + +In a very real sense, the *routes* defined in an application *are* the public +API. + +.. rst-class:: build +.. container:: + + Any route that is present represents something the user can do. + + Any route that is not present is something the user cannot do. + + You can use the proper definition of routes to help conceptualize what your + app will do. + + What routes might we want for a learning journal application? + + What will our application do? + +.. nextslide:: Defining our Routes + +Let's add routes for our application. + +.. rst-class:: build +.. container:: + + Open ``learning_journal/__init__.py``. + + For our list page, the existing ``'home'`` route will do fine, leave it. + + Add the following two routes: + + .. code-block:: python + + config.add_route('home', '/') # already there + config.add_route('detail', '/journal/{id:\d+}') + config.add_route('action', '/journal/{action}') + + The ``'detail'`` route will serve a single journal entry, identified by an + ``id``. + + The ``action`` route will serve ``create`` and ``edit`` views, depending on + the ``action`` specified. + + In both cases, we want to capture a portion of the matched path to use + information it provides. + +.. nextslide:: Matching an ID + +In a pattern, you can capture a ``path segment`` *replacement +marker*, a valid Python symbol surrounded by curly braces: + +.. rst-class:: build +.. container:: + + :: + + /home/{foo}/ + + If you want to match a particular pattern, like digits only, add a + *regexp*:: + + /journal/{id:\d+} + + Matched path segments are captured in a ``matchdict``:: + + # pattern # actual url # matchdict + /journal/{id:\d+} /journal/27 {'id': '27'} + + The ``matchdict`` is made available as an attribute of the *request* + + +.. nextslide:: Connecting Routes to Views + +In Pyramid, a *route* is connected by configuration to a *view*. + +.. rst-class:: build +.. container:: + + In our app, a sample view has been created for us, in ``views.py``: + + .. code-block:: python + + @view_config(route_name='home', renderer='templates/mytemplate.pt') + def my_view(request): + # ... + + The order in which *routes* are configured *is important*, so that must be + done in ``__init__.py``. + + The order in which views are connected to routes *is not important*, so the + *declarative* ``@view_config`` decorator can be used. + + When ``config.scan`` is called, all files in our application are searched + for such *declarative configuration* and it is added. + +The Pyramid View +---------------- + +Let's imagine that a *request* has come to our application for the path +``'/'``. + +.. rst-class:: build +.. container:: + + The framework made a match of that path to a *route* with the pattern ``'/'``. + + Configuration connected that route to a *view* in our application. + + Now, the view that was connected will be *called*, which brings us to the + nature of *views* + + .. rst-class:: centered + + --A Pyramid view is a *callable* that takes *request* as an argument-- + + Remember what a *callable* is? + +.. nextslide:: What the View Does + +So, a *view* is a callable that takes the *request* as an argument. + +.. rst-class:: build +.. container:: + + It can then use information from that request to build appropriate data, + perhaps using the application's *models*. + + Then, it returns the data it assembled, passing it on to a `renderer`_. + + Which *renderer* to use is determined, again, by configuration: + + .. code-block:: python + + @view_config(route_name='home', renderer='templates/mytemplate.pt') + def my_view(request): + # ... + + More about this in a moment. + + The *view* stands at the intersection of *input data*, the application + *model* and *renderers* that offer rendering of the results. + + It is the *Controller* in our MVC application. + +.. _renderer: http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/renderers.html + + +.. nextslide:: Adding Stub Views + +Add temporary views to our application in ``views.py`` (and comment out the +sample view): + +.. code-block:: python + + @view_config(route_name='home', renderer='string') + def index_page(request): + return 'list page' + + @view_config(route_name='detail', renderer='string') + def view(request): + return 'detail page' + + @view_config(route_name='action', match_param='action=create', renderer='string') + def create(request): + return 'create page' + + @view_config(route_name='action', match_param='action=edit', renderer='string') + def update(request): + return 'edit page' + +.. nextslide:: Testing Our Views + +Now we can verify that our view configuration has worked. + +.. rst-class:: build +.. container:: + + Make sure your virtualenv is properly activated, and start the web server: + + .. code-block:: bash + + (ljenv)$ pserve development.ini + Starting server in PID 84467. + serving on http://0.0.0.0:6543 + + Then try viewing some of the expected application urls: + + .. rst-class:: build + + * http://localhost:6543/ + * http://localhost:6543/journal/1 + * http://localhost:6543/journal/create + * http://localhost:6543/journal/edit + + What happens if you visit a URL that *isn't* in our configuration? + +.. nextslide:: Interacting With the Model + +Now that we've got temporary views that work, we can fix them to get +information from our database + +.. rst-class:: build +.. container:: + + We'll begin with the list view. + + We need some code that will fetch all the journal entries we've written, in + reverse order, and hand that collection back for rendering. + + .. code-block:: python + + from .models import ( + DBSession, + MyModel, + Entry, # <- Add this import + ) + + # and update this view function + def index_page(request): + entries = Entry.all() + return {'entries': entries} + +.. nextslide:: Using the ``matchdict`` + +Next, we want to write the view for a single entry. + +.. rst-class:: build +.. container:: + + We'll need to use the ``id`` value our route captures into the + ``matchdict``. + + Remember that the ``matchdict`` is an attribute of the request. + + We'll get the ``id`` from there, and use it to get the correct entry. + + .. code-block:: python + + # add this import at the top + from pyramid.exceptions import HTTPNotFound + + # and update this view function: + def blog_view(request): + this_id = request.matchdict.get('id', -1) + entry = Entry.by_id(this_id) + if not entry: + return HTTPNotFound() + return {'entry': entry} + +.. nextslide:: Testing Our Views + +We can now verify that these views work correctly. + +.. rst-class:: build +.. container:: + + Make sure your virtualenv is properly activated, and start the web server: + + .. code-block:: bash + + (ljenv)$ pserve development.ini + Starting server in PID 84467. + serving on http://0.0.0.0:6543 + + Then try viewing the list page and an entry page: + + * http://localhost:6543 + * http://localhost:6543/journal/1 + + What happens when you request an entry with an id that isn't in the + database? + + * http://localhost:6543/journal/100 + +The MVC View +============ + +.. rst-class:: left +.. container:: + + Again, back to the *Model-View-Controller* pattern. + + .. figure:: http://upload.wikimedia.org/wikipedia/commons/4/40/MVC_passive_view.png + :align: center + :width: 25% + + By Alan Evangelista (Own work) [CC0], via Wikimedia Commons + + .. rst-class:: build + .. container:: + + We've built a *model* and we've created some *controllers* that use it. + + In Pyramid, we call *controllers* **views** and they are callables that + take *request* as an argument. + + Let's turn to the last piece of the *MVC* patter, the *view* + +Presenting Data +--------------- + +The job of the *view* in the *MVC* pattern is to present data in a format that +is readable to the user of the system. + +.. rst-class:: build +.. container:: + + There are many ways to present data. + + Some are readable by humans (tables, charts, graphs, HTML pages, text + files). + + Some are more for machines (xml files, csv, json). + + Which of these formats is the *right one* depends on your purpose. + + What is the purpose of our learning journal? + +Pyramid Renderers +----------------- + +In Pyramid, the job of presenting data is performed by a *renderer*. + +.. rst-class:: build +.. container:: + + So we can consider the Pyramid **renderer** to be the *view* in our *MVC* + app. + + We've already seen how we can connect a *renderer* to a Pyramid *view* with + configuration. + + In fact, we have already done so, using a built-in renderer called + ``'string'``. + + This renderer converts the return value of its *view* to a string and sends + that back to the client as an HTTP response. + + But the result isn't so nice looking. + +.. nextslide:: Template Renderers + +The `built-in renderers` (``'string'``, ``'json'``, ``'jsonp'``) in Pyramid are +not the only ones available. + +.. _built-in renderers: http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/renderers.html#built-in-renderers + +.. rst-class:: build +.. container:: + + There are add-ons to Pyramid that support using various *template + languages* as renderers. + + In fact, one of these was installed by default when you created this + project. + +.. nextslide:: Configuring a Template Renderer + +.. code-block:: python + + # in setup.py + requires = [ + # ... + 'pyramid_chameleon', + # ... + ] + + # in learning_journal/__init__.py + def main(global_config, **settings): + # ... + config.include('pyramid_chameleon') + +.. rst-class:: build +.. container:: + + The `pyramid_chameleon` package supports using the `chameleon` template + language. + + The language is quite nice and powerful, but not so easy to learn. + + Let's use a different one, *jinja2* + +.. nextslide:: Changing Template Renderers + +Change ``pyramid_chameleon`` to ``pyramid_jinja2`` in both of these files: + +.. code-block:: python + + # in setup.py + requires = [ + # ... + 'pyramid_jinja2', + # ... + ] + + # in learning_journal/__init__.py + def main(global_config, **settings): + # ... + config.include('pyramid_jinja2') + +.. nextslide:: Picking up the Changes + +We've changed the dependencies for our Pyramid project. + +.. rst-class:: build +.. container:: + + As a result, we will need to re-install it so the new dependencies are also + installed: + + .. code-block:: bash + + (ljenv)$ python setup.py develop + ... + Finished processing dependencies for learning-journal==0.0 + (ljenv)$ + + Now, we can use *Jinja2* templates in our project. + + Let's learn a bit about how `Jinja2 templates`_ work. + +.. _Jinja2 templates: http://jinja.pocoo.org/docs/templates/ + +Jinja2 Template Basics +---------------------- + +We'll start with the absolute basics. + +.. rst-class:: build +.. container:: + + Fire up a Python interpreter, using your `ljenv` virtualenv: + + .. code-block:: bash + + (ljenv)$ python + >>> + + Then import the ``Template`` class from the ``jinja2`` package: + + .. code-block:: pycon + + >>> from jinja2 import Template + +.. nextslide:: Templates are Strings + +A template is constructed with a simple string: + +.. code-block:: python + + >>> t1 = Template("Hello {{ name }}, how are you?") + +.. rst-class:: build +.. container:: + + Here, we've simply typed the string directly, but it is more common to + build a template from the contents of a *file*. + + Notice that our string has some odd stuff in it: ``{{ name }}``. + + This is called a placeholder and when the template is *rendered* it is + replaced. + +.. nextslide:: Rendering a Template + +Call the ``render`` method, providing *context*: + +.. code-block:: python + + >>> t1.render(name="Freddy") + u'Hello Freddy, how are you?' + >>> t1.render({'name': "Roberto"}) + u'Hello Roberto, how are you?' + >>> + +.. rst-class:: build +.. container:: + + *Context* can either be keyword arguments, or a dictionary + + Note the resemblance to something you've seen before: + + .. code-block:: python + + >>> "This is {owner}'s string".format(owner="Cris") + 'This is Cris's string' + + +.. nextslide:: Dictionaries in Context + +Dictionaries passed in as part of the *context* can be addressed with *either* +subscript or dotted notation: + +.. code-block:: python + + >>> person = {'first_name': 'Frank', + ... 'last_name': 'Herbert'} + >>> t2 = Template("{{ person.last_name }}, {{ person['first_name'] }}") + >>> t2.render(person=person) + u'Herbert, Frank' + +.. rst-class:: build + +* Jinja2 will try the *correct* way first (attr for dotted, item for + subscript). +* If nothing is found, it will try the opposite. +* If nothing is found, it will return an *undefined* object. + + +.. nextslide:: Objects in Context + +The exact same is true of objects passed in as part of *context*: + +.. rst-class:: build +.. container:: + + .. code-block:: python + + >>> t3 = Template("{{ obj.x }} + {{ obj['y'] }} = Fun!") + >>> class Game(object): + ... x = 'babies' + ... y = 'bubbles' + ... + >>> bathtime = Game() + >>> t3.render(obj=bathtime) + u'babies + bubbles = Fun!' + + This means your templates can be a bit agnostic as to the nature of the + things in *context* + +.. nextslide:: Filtering values in Templates + +You can apply `filters`_ to the data passed in *context* with the pipe ('|') +operator: + +.. _filters: http://jinja.pocoo.org/docs/dev/templates/#filters + +.. code-block:: python + + t4 = Template("shouted: {{ phrase|upper }}") + >>> t4.render(phrase="this is very important") + u'shouted: THIS IS VERY IMPORTANT' + +.. rst-class:: build +.. container:: + + You can also chain filters together: + + .. code-block:: python + + t5 = Template("confusing: {{ phrase|upper|reverse }}") + >>> t5.render(phrase="howdy doody") + u'confusing: YDOOD YDWOH' + +.. nextslide:: Control Flow + +Logical `control structures`_ are also available: + +.. _control structures: http://jinja.pocoo.org/docs/dev/templates/#list-of-control-structures + +.. rst-class:: build +.. container:: + + .. code-block:: python + + tmpl = """ + ... {% for item in list %}{{ item }}, {% endfor %} + ... """ + >>> t6 = Template(tmpl) + >>> t6.render(list=[1,2,3,4,5,6]) + u'\n1, 2, 3, 4, 5, 6, ' + + Any control structure introduced in a template **must** be paired with an + explicit closing tag ({% for %}...{% endfor %}) + + Remember, although template tags like ``{% for %}`` or ``{% if %}`` look a + lot like Python, they are not. + + The syntax is specific and must be followed correctly. + +.. nextslide:: Template Tests + +There are a number of specialized *tests* available for use with the +``if...elif...else`` control structure: + +.. code-block:: python + + >>> tmpl = """ + ... {% if phrase is upper %} + ... {{ phrase|lower }} + ... {% elif phrase is lower %} + ... {{ phrase|upper }} + ... {% else %}{{ phrase }}{% endif %}""" + >>> t7 = Template(tmpl) + >>> t7.render(phrase="FOO") + u'\n\n foo\n' + >>> t7.render(phrase="bar") + u'\n\n BAR\n' + >>> t7.render(phrase="This should print as-is") + u'\nThis should print as-is' + + +.. nextslide:: Basic Expressions + +Basic `Python-like expressions`_ are also supported: + +.. _Python-like expressions: http://jinja.pocoo.org/docs/dev/templates/#expressions + +.. code-block:: python + + tmpl = """ + ... {% set sum = 0 %} + ... {% for val in values %} + ... {{ val }}: {{ sum + val }} + ... {% set sum = sum + val %} + ... {% endfor %} + ... """ + >>> t8 = Template(tmpl) + >>> t8.render(values=range(1,11)) + u'\n\n\n1: 1\n \n\n2: 3\n \n\n3: 6\n \n\n4: 10\n + \n\n5: 15\n \n\n6: 21\n \n\n7: 28\n \n\n8: 36\n + \n\n9: 45\n \n\n10: 55\n \n' + + +Our Templates +------------- + +There's more that Jinja2 templates can do, but it will be easier to introduce +you to that in the context of a working template. So let's make some. + +.. nextslide:: Detail Template + +We have a Pyramid view that returns a single entry. Let's create a template to +show it. + +.. rst-class:: build +.. container:: + + In ``learning_journal/templates`` create a new file ``detail.jinja2``: + + .. code-block:: jinja + +

    +

    {{ entry.title }}

    +
    +

    {{ entry.body }}

    +
    +

    Created {{entry.created}}

    +
    + + Then wire it up to the detail view in ``views.py``: + + .. code-block:: python + + # views.py + @view_config(route_name='detail', renderer='templates/detail.jinja2') + def blog_view(request): + # ... + +.. nextslide:: Try It Out + +Now we should be able to see some rendered HTML for our journal entry details. + +.. rst-class:: build +.. container:: + + Start up your server: + + .. code-block:: bash + + (ljenv)$ pserve development.ini + Starting server in PID 90536. + serving on http://0.0.0.0:6543 + + Then try viewing an individual journal entry + + * http://localhost:6543/journal/1 + +.. nextslide:: Listing Page + +The index page of our journal should show a list of journal entries, let's do +that next. + +.. rst-class:: build +.. container:: + + In ``learning_journal/templates`` create a new file ``list.jinja2``: + + .. code-block:: jinja + + {% if entries %} +

    Journal Entries

    +
    + {% else %} +

    This journal is empty

    + {% endif %} + +.. nextslide:: + +It's worth taking a look at a few specifics of this template. + +.. rst-class:: build +.. container:: + + .. code-block:: jinja + + {{ entry.title }} + + Jinja2 templates are rendered with a *context*. + + The return values of the Pyramid *view* for a template get included in that + context. + + So does *request*, which is placed there by the framework. + + Request has a method ``route_url`` that will create a URL for a named + route. + + This allows you to include URLs in your template without needing to know + exactly what they will be. + + This process is called *reversing*, since it's a bit like a reverse phone + book lookup. + +.. nextslide:: + +Finally, you'll need to connect this new renderer to your listing view: + +.. code-block:: python + + @view_config(route_name='home', renderer='templates/list.jinja2') + def index_page(request): + # ... + +.. nextslide:: Try It Out + +We can now see our list page too. Let's try starting the server: + +.. rst-class:: build +.. container:: + + .. code-block:: bash + + (ljenv)$ pserve development.ini + Starting server in PID 90536. + serving on http://0.0.0.0:6543 + + Then try viewing the home page of your journal: + + * http://localhost:6543/ + + Click on the link to an entry, it should work. + +.. nextslide:: Sharing Structure + +These views are reasonable, if quite plain. + +.. rst-class:: build +.. container:: + + It'd be nice to put them into something that looks a bit more like a + website. + + Jinja2 allows you to combine templates using something called + `template inheritance`_. + + You can create a basic page structure, and then *inherit* that structure in + other templates. + + In our class resources I've added a page template ``layout.jinja2``. Copy + that page to your templates directory + +.. _template inheritance: http://jinja.pocoo.org/docs/dev/templates/#template-inheritance + +.. nextslide:: ``layout.jinja2`` + +.. code-block:: jinja + + + + + + Python Learning Journal + + + +
    + +
    +
    +

    My Python Journal

    +
    {% block body %}{% endblock %}
    +
    +

    Created in the UW PCE Python Certificate Program

    + + + +.. nextslide:: Template Blocks + +The important part here is the ``{% block body %}{% endblock %}`` expression. + +.. rst-class:: build +.. container:: + + This is a template **block** and it is a kind of placeholder. + + Other templates can inherit from this one, and fill that block with + additional HTML. + + Let's update our detail and list templates: + + .. code-block:: jinja + + {% extends "layout.jinja2" %} + {% block body %} + + {% endblock %} + +.. nextslide:: Try It Out + +Let's try starting the server so we can see the result: + +.. rst-class:: build +.. container:: + + .. code-block:: bash + + (ljenv)$ pserve development.ini + Starting server in PID 90536. + serving on http://0.0.0.0:6543 + + Then try viewing the home page of your journal: + + * http://localhost:6543/ + + Click on the link to an entry, it should work. + + And now you have shared page structure that is in both. + +Static Assets +------------- + +Although we have a shared structure, it isn't particularly nice to look at. + +.. rst-class:: build +.. container:: + + Aspects of how a website looks are controlled by CSS (*Cascading Style + Sheets*). + + Stylesheets are one of what we generally speak of as *static assets*. + + Other static assets include *images* that are part of the look and feel of + the site (logos, button images, etc) and the *JavaScript* files that add + client-side dynamic behavior to the site. + +.. nextslide:: Static Assets in Pyramid + +Serving static assets in Pyramid requires a *static view* to configuration. +Luckily, ``pcreate`` already handled that for us: + +.. rst-class:: build +.. container:: + + .. code-block:: python + + # in learning_journal/__init__.py + def main(global_config, **settings): + # ... + config.add_static_view('static', 'static', cache_max_age=3600) + # ... + + The first argument to ``add_static_view`` is a *name* that will need to + appear in the path of URLs requesting assets. + + The second argument is a *path* that is relative to the package being + configured. + + Assets referenced by the *name* in a URL will be searched for in the + location defined by the *path* + + Additional keyword arguments control other aspects of how the view works. + +.. nextslide:: Static Assets in Templates + +Once you have a static view configured, you can use assets in that location in +templates. + +.. rst-class:: build +.. container:: + + The *request* object in Pyramid provides a ``static_url`` method that + builds appropriate URLs + + Add the following to our ``layout.jinja2`` template: + + .. code-block:: jinja + + + + + + + The one required argument to ``request.static_url`` is a *path* to an + asset. + + Note that because any package *might* define a static view, we have to + specify which package we want to look in. + + That's why we have ``learning_journal:static/styles.css`` in our call. + +.. nextslide:: Basic Styles + +I've created some very very basic styles for our learning journal. + +.. rst-class:: build +.. container:: + + You can find them in ``resources/session02/styles.css``. Go ahead and copy + that file. + + Add it to ``learning_journal/static``. + + Then restart your web server and see what a difference a little style + makes: + + .. code-block:: bash + + (ljenv)$ pserve development.ini + Starting server in PID 90536. + serving on http://0.0.0.0:6543 + +.. nextslide:: The Outcome + +Your site should look something like this: + +.. figure:: /_static/learning_journal_styled.png + :align: center + :width: 75% + + The learning journal with basic styles applied + +Getting Interactive +=================== + +.. rst-class:: left +.. container:: + + We have a site that allows us to view a list of journal entries. + + .. rst-class:: build + .. container:: + + We can also view the details of a single entry. + + But as yet, we don't really have any *interaction* in our site yet. + + We can't create new entries. + + Let's add that functionality next. + +User Input +---------- + +In HTML websites, the traditional way of getting input from users is via +`HTML forms`_. + +.. rst-class:: build +.. container:: + + Forms use *input elements* to allow users to enter data, pick from + drop-down lists, or choose items via checkbox or radio button. + + It is possible to create plain HTML forms in templates and use them with + Pyramid. + + It's a lot easier, however, to work with a *form library* to create forms, + render them in templates and interact with data sent by a client. + + We'll be using a form library called `WTForms`_ in our project + +.. _HTML forms: https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms +.. _WTForms: http://wtforms.readthedocs.org/en/latest/ + +.. nextslide:: Installing WTForms + +The first step to working with this library is to install it. + +.. rst-class:: build +.. container:: + + Start by makin the library as a *dependency* of our package by adding it to + the *requires* list in ``setup.py``: + + .. code-block:: python + + requires = [ + # ... + 'wtforms', # <- add this to the list + ] + + Then, re-install our package to download and install the new dependency: + + .. code-block:: bash + + (ljenv)$ python setup.py develop + ... + Finished processing dependencies for learning-journal==0.0 + +Using WTForms +------------- + +We'll want a form to allow a user to create a new Journal Entry. + +.. rst-class:: build +.. container:: + + Add a new file called ``forms.py`` in our learning_journal package, next to + ``models.py``: + + .. code-block:: python + + from wtforms import Form, TextField, TextAreaField, validators + + strip_filter = lambda x: x.strip() if x else None + + class EntryCreateForm(Form): + title = TextField( + 'Entry title', + [validators.Length(min=1, max=255)], + filters=[strip_filter]) + body = TextAreaField( + 'Entry body', + [validators.Length(min=1)], + filters=[strip_filter]) + +.. nextslide:: Using a Form in a View + +Next, we need to add a new view that uses this form to create a new entry. + +.. rst-class:: build +.. container:: + + Add this to ``views.py``: + + .. code-block:: python + + # add these imports + from pyramid.exceptions import HTTPFound + from .forms import EntryCreateForm + + # and update this view function + def create(request): + entry = Entry() + form = EntryCreateForm(request.POST) + if request.method == 'POST' and form.validate(): + form.populate_obj(entry) + DBSession.add(entry) + return HTTPFound(location=request.route_url('home')) + return {'form': form, 'action': request.matchdict.get('action')} + +.. nextslide:: Testing the Route/View Connection + +We already have a route that connects here. Let's test it. + +.. rst-class:: build +.. container:: + + Start your server: + + .. code-block:: bash + + (ljenv)$ pserve development.ini + Starting server in PID 90536. + serving on http://0.0.0.0:6543 + + And then try connecting to the ``action`` route: + + * http://localhost:6543/journal/create + + You should see something like this:: + + {'action': u'create', 'form': } + +.. nextslide:: Rendering A Form + +Finally, we need to create a template that will render our form. + +.. rst-class:: build +.. container:: + + Add a new template called ``edit.jinja2`` in + ``learning_journal/templates``: + + .. code-block:: jinja + + {% extends "templates/layout.jinja2" %} + {% block body %} +
    + {% for field in form %} + {% if field.errors %} +
      + {% for error in field.errors %} +
    • {{ error }}
    • + {% endfor %} +
    + {% endif %} +

    {{ field.label }}: {{ field }}

    + {% endfor %} +

    +
    + {% endblock %} + +.. nextslide:: Connecting the Renderer + +You'll need to update the view configuration to use this new renderer. + +.. rst-class:: build +.. container:: + + Update the configuration in ``learning_journal/views.py``: + + .. code-block:: python + + @view_config(route_name='action', match_param='action=create', + renderer='templates/edit.jinja2') + def create(request): + # ... + + And then you should be able to start your server and test: + + .. code-block:: bash + + (ljenv)$ pserve development.ini + Starting server in PID 90536. + serving on http://0.0.0.0:6543 + + * http://localhost:6543/create + +.. nextslide:: Providing Access + +Great! Now you can add new entries to your journal. + +.. rst-class:: build +.. container:: + + But in order to do so, you have to hand-enter the url. + + You should add a new link in the UI somewhere that helps you get there more + easily. + + Add the following to ``list.jinja2``: + + .. code-block:: jinja + + {% extends "layout.jinja2" %} + {% block body %} + {% if entries %} + ... + {% else %} + ... + {% endif %} + +

    New Entry

    + {% endblock %} + +Homework +======== + +.. rst-class:: left +.. container:: + + You have a website now that allows you to create, view and list journal + entries + + .. rst-class:: build + .. container:: + + However, there are still a few flaws in this system. + + You should be able to edit a journal entry that already exists, in case + you make a spelling error. + + It would also be nice to see a prettier site. + + Let's handle that for homework this week. + +Part 1: Add Editing +------------------- + +For part one of your assignment, add editing of existing entries. You will need: + +* A form that shows an existing entry (what is different about this form from + one for creating a new entry?) +* A pyramid view that handles that form. It should: + + * Show the form with the requested entry when the page is first loaded + * Accept edits only on POST + * Update an existing entry with new data from the form + * Show the view of the entry after editing so that the user can see the edits + saved correctly + * Show errors from form validation, if any are present + +* A link somewhere that leads to the editing page for a single entry (probably + on the view page for a entry) + +You'll need to update a bit of configuration, but not much. Use the create +form we did here in class as an example. + +Part 2: Make it Yours +--------------------- + +I've created for you a very bare-bones layout and stylesheet. + +You will certainly want to add a bit of your own style and panache. + +Spend a few hours this week playing with the styles and getting a site that +looks more like you want it to look. + +The Mozilla Developer Network has `some excellent resources`_ for learning CSS. + +In particular, the `Getting Started with CSS`_ tutorial is a thorough +introduction to the basics. + +You might also look at their `CSS 3 Demos`_ to help fire up your creative +juices. + +Here are a few more resources: + +* `A List Apart `_ offers outstanding articles. Their + `Topics list `_ is worth a browse. +* `Smashing Magazine `_ is another excellent + resource for articles on design. + +.. _some excellent resources: https://developer.mozilla.org/en-US/docs/Web/CSS +.. _Getting Started with CSS: https://developer.mozilla.org/en-US/docs/CSS/Getting_Started +.. _CSS 3 Demos: https://developer.mozilla.org/en-US/demos/tag/tech:css3 + + +Part 3: User Model +------------------ + +As it stands, our journal accepts entries from anyone who comes by. + +Next week we will add security to allow only logged-in users to create and edit +entries. + +To do so, we'll need a user model + +The model should have: + +* An ``id`` field that is a primary key +* A ``username`` field that is unicode, no more than 255 characters, not + nullable, unique and indexed. +* A ``password`` field that is unicode and not nullable + +In addition, the model should have a classmethod that retrieves a specific user +when given a username. + +Part 4: Preparation for Deployment +---------------------------------- + +At the end of class next week we will be deploying our application to Heroku. + +You will need to get a free account. + +Once you have your free account set up and you have logged in, run through the +`getting started with Python`_ tutorial. + +Be sure to at least complete the *set up* step. It will have you install the +Heroku Toolbelt, which you will need to have ready in class. + +.. _getting started with Python: https://devcenter.heroku.com/articles/getting-started-with-python#introduction + diff --git a/slides/_static/learning_journal_styled.png b/slides/_static/learning_journal_styled.png new file mode 100644 index 0000000000000000000000000000000000000000..1bd091be7d05d98d90efd8421000c6c5c537b343 GIT binary patch literal 60697 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
    ?{@LHp)IryChMu3R7cN=JfF8De`Vr7L?= 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≪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

    w_C}^zj{y%>}{r(NV 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 BsOA6w literal 0 HcmV?d00001 diff --git a/slides/presentations/session02.html b/slides/presentations/session02.html new file mode 100644 index 00000000..0489cfb9 --- /dev/null +++ b/slides/presentations/session02.html @@ -0,0 +1,1801 @@ + + + + + + Session 02 — Internet Programming with Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +
    +

    +

    +

    +
    + + + + +
    +

    Session 02

    +
    +
    + +
    +

    Interacting with Data

    +
    +
    +

    Wherein we learn to display our data, and to create and edit it too!

    + + + + +
    +
    +
    +

    But First

    +
    +
    +

    Last week we discussed the model part of the MVC application design +pattern.

    +
    +

    We set up a project using the Pyramid web framework and the SQLAlchemy +library for persisting our data to a database.

    +

    We looked at how to define a simple model by investigating the demo model +created on our behalf.

    +

    And we went over, briefly, the way we can interact with this model at the +command line to make sure we've got it right.

    +

    Finally, we defined what attributes a learning journal entry would have, +and a pair of methods we think we will need to make the model complete.

    +
    + + + + +
    +
    +
    +

    Our Data Model

    +
    +
    +

    Over the last week, your assignment was to create the new model.

    +
    +

    Did you get that done?

    +

    If not, what stopped you?

    +

    Let's take a few minutes here to answer questions about this task so you +are more comfortable.

    +

    Questions?

    +
    + + + + +
    +
    +
    +

    A Complete Example

    +
    +
    +

    I have added a new folder to our class repository, resources.

    +
    +

    If you clone the repository to your local machine you can get to it.

    +

    You can also just browse the repository in github to view it.

    +

    In this folder, I added a session02 folder that contains resources for +today.

    +

    Among these resources is the completed models.py file with this new +model added.

    +

    Let's review how it works.

    +
    + + + + +
    +
    +
    +

    Demo Interaction

    +
    +
    +

    Another resource I've added is the ljshell.py script.

    +
    +

    That script will allow you to interact with a db session just like I showed +in class last week:

    +
    # the script
    +from pyramid.paster import get_appsettings, setup_logging
    +from sqlalchemy import engine_from_config
    +from sqlalchemy.orm import sessionmaker
    +
    +config_uri = 'development.ini'
    +setup_logging(config_uri)
    +settings = get_appsettings(config_uri)
    +engine = engine_from_config(settings, 'sqlalchemy.')
    +Session = sessionmaker(bind=engine)
    +
    +
    +

    Just copy the file into your learning_journal Pyramid project folder (where +setup.py is)

    +
    + + + + +
    +
    +
    +

    Using the ljshell.py script

    +
    +
    +

    Here's a demo interaction using the script to set up a session maker

    +
    +

    First cd to your project code, fire up your project virtualenv and +start python:

    +
    $ cd projects/learning-journal/learning_journal
    +$ source ../ljenv/bin/activate
    +(ljenv)$ python
    +>>>
    +
    +
    +

    Then, you can import the Session symbol from ljshell and you're off +to the races:

    +
    >>> from ljshell import Session
    +>>> from learning_journal.models import MyModel
    +>>> session = Session()
    +>>> session.query(MyModel).all()
    +[<learning_journal.models.MyModel object at 0x105849b90>]
    +...
    +
    +
    +

    [demo]

    +
    + + + + +
    +
    +
    +

    The MVC Controller

    +
    +
    +
    +

    Let's go back to thinking for a bit about the Model-View-Controller +pattern.

    +
    +http://upload.wikimedia.org/wikipedia/commons/4/40/MVC_passive_view.png +

    By Alan Evangelista (Own work) [CC0], via Wikimedia Commons

    +
    +
    +

    We talked last week (and today) about the model

    +

    Today, we'll dig into controllers and views

    +

    or as we will know them in Pyramid: views and renderers

    +
    +
    + + + + +
    +
    +
    +

    HTTP Request/Response

    +
    +
    +

    Internet software is driven by the HTTP Request/Response cycle.

    +
    +

    A client (perhaps a user with a web browser) makes a request

    +

    A server receives and handles that request and returns a response

    +

    The client receives the response and views it, perhaps making a new +request

    +

    And around and around it goes.

    +
    + + + + +
    +
    +
    +

    URLs

    +
    +
    +

    An HTTP request arrives at a server through the magic of a URL

    +
    http://uwpce-pythoncert.github.io/training.python_web/html/index.html
    +
    +
    +
    +

    Let's break that up into its constituent parts:

    +
    +
    http://:
    +
    This part is the protocol, it determines how the request will be sent
    +
    uwpce-pythoncert.github.io:
    +
    This is a domain name. It's the human-facing address for a server +somewhere.
    +
    /training.python_web/html/index.html:
    +
    This part is the path. It serves as a locator for a resource on the +server
    +
    +
    + + + + +
    +
    +
    +

    Paths

    +
    +
    +

    In a static website (like our documentation) the path identifies a physical +location in the server's filesystem.

    +
    +

    Some directory on the server is the home for the web process, and the +path is looked up there.

    +

    Whatever resource (a file, an image, whatever) is located there is returned +to the user as a response.

    +

    If the path leads to a location that doesn't exist, the server responds +with a 404 Not Found error.

    +

    In the golden days of yore, this was the only way content was served via +HTTP.

    +
    + + + + +
    +
    +
    +

    Paths in an MVC System

    +
    +
    +

    In todays world we have dynamic systems, server-side web frameworks like +Pyramid.

    +
    +

    The requests that you send to a server are handled by a software process +that assembles a response instead of looking up a physical location.

    +

    But we still have URLs, with protocol, domain and path.

    +

    What is the role for a path in a process that doesn't refer to a physical +file system?

    +

    Most web frameworks now call the path a route.

    +

    They provide a way of matching routes to the code that will be run to +handle requests.

    +
    + + + + +
    +
    +
    +

    Routes in Pyramid

    +
    +
    +

    In Pyramid, routes are handled as configuration and are set up in the main +function in __init__.py:

    +
    # learning_journal/__init__.py
    +def main(global_config, **settings):
    +    # ...
    +    config.add_route('home', '/')
    +    # ...
    +
    +
    +
    +

    Our code template created a sample route for us, using the add_route +method of the Configurator class.

    +

    The add_route method has two required arguments: a name and a +pattern

    +

    In our sample route, the name is 'home'

    +

    In our sample route, the pattern is '/'

    +
    + + + + +
    +
    +
    +

    Routes in Pyramid

    +
    +
    +

    When a request comes in to a Pyramid application, the framework looks at all +the routes that have been configured.

    +
    +

    One by one, in order, it tries to match the path of the incoming request +against the pattern of the route.

    +

    As soon as a pattern matches the path from the incoming request, that +route is used and no further matching is performed.

    +

    If no route is found that matches, then the request will automatically get +a 404 Not Found error response.

    +

    In our sample app, we have one sample route named 'home', with a +pattern of /.

    +

    This means that any request that comes in for / will be matched to this +route, and any other request will be 404.

    +
    + + + + +
    +
    +
    +

    Routes as API

    +
    +
    +

    In a very real sense, the routes defined in an application are the public +API.

    +
    +

    Any route that is present represents something the user can do.

    +

    Any route that is not present is something the user cannot do.

    +

    You can use the proper definition of routes to help conceptualize what your +app will do.

    +

    What routes might we want for a learning journal application?

    +

    What will our application do?

    +
    + + + + +
    +
    +
    +

    Defining our Routes

    +
    +
    +

    Let's add routes for our application.

    +
    +

    Open learning_journal/__init__.py.

    +

    For our list page, the existing 'home' route will do fine, leave it.

    +

    Add the following two routes:

    +
    config.add_route('home', '/') # already there
    +config.add_route('detail', '/journal/{id:\d+}')
    +config.add_route('action', '/journal/{action}')
    +
    +
    +

    The 'detail' route will serve a single journal entry, identified by an +id.

    +

    The action route will serve create and edit views, depending on +the action specified.

    +

    In both cases, we want to capture a portion of the matched path to use +information it provides.

    +
    + + + + +
    +
    +
    +

    Matching an ID

    +
    +
    +

    In a pattern, you can capture a path segment replacement +marker, a valid Python symbol surrounded by curly braces:

    +
    +
    /home/{foo}/
    +
    +
    +

    If you want to match a particular pattern, like digits only, add a +regexp:

    +
    /journal/{id:\d+}
    +
    +
    +

    Matched path segments are captured in a matchdict:

    +
    # pattern          # actual url   # matchdict
    +/journal/{id:\d+}  /journal/27    {'id': '27'}
    +
    +
    +

    The matchdict is made available as an attribute of the request

    +
    + + + + +
    +
    +
    +

    Connecting Routes to Views

    +
    +
    +

    In Pyramid, a route is connected by configuration to a view.

    +
    +

    In our app, a sample view has been created for us, in views.py:

    +
    @view_config(route_name='home', renderer='templates/mytemplate.pt')
    +def my_view(request):
    +    # ...
    +
    +
    +

    The order in which routes are configured is important, so that must be +done in __init__.py.

    +

    The order in which views are connected to routes is not important, so the +declarative @view_config decorator can be used.

    +

    When config.scan is called, all files in our application are searched +for such declarative configuration and it is added.

    +
    + + + + +
    +
    +
    +

    The Pyramid View

    +
    +
    +

    Let's imagine that a request has come to our application for the path +'/'.

    +
    +

    The framework made a match of that path to a route with the pattern '/'.

    +

    Configuration connected that route to a view in our application.

    +

    Now, the view that was connected will be called, which brings us to the +nature of views

    +

    --A Pyramid view is a callable that takes request as an argument--

    +

    Remember what a callable is?

    +
    + + + + +
    +
    +
    +

    What the View Does

    +
    +
    +

    So, a view is a callable that takes the request as an argument.

    +
    +

    It can then use information from that request to build appropriate data, +perhaps using the application's models.

    +

    Then, it returns the data it assembled, passing it on to a renderer.

    +

    Which renderer to use is determined, again, by configuration:

    +
    @view_config(route_name='home', renderer='templates/mytemplate.pt')
    +def my_view(request):
    +    # ...
    +
    +
    +

    More about this in a moment.

    +

    The view stands at the intersection of input data, the application +model and renderers that offer rendering of the results.

    +

    It is the Controller in our MVC application.

    +
    + + + + +
    +
    +
    +

    Adding Stub Views

    +
    +
    +

    Add temporary views to our application in views.py (and comment out the +sample view):

    +
    @view_config(route_name='home', renderer='string')
    +def index_page(request):
    +    return 'list page'
    +
    +@view_config(route_name='detail', renderer='string')
    +def view(request):
    +    return 'detail page'
    +
    +@view_config(route_name='action', match_param='action=create', renderer='string')
    +def create(request):
    +    return 'create page'
    +
    +@view_config(route_name='action', match_param='action=edit', renderer='string')
    +def update(request):
    +    return 'edit page'
    +
    +
    + + + + +
    +
    +
    +

    Testing Our Views

    +
    +
    +

    Now we can verify that our view configuration has worked.

    +
    +

    Make sure your virtualenv is properly activated, and start the web server:

    +
    (ljenv)$ pserve development.ini
    +Starting server in PID 84467.
    +serving on http://0.0.0.0:6543
    +
    +
    +

    Then try viewing some of the expected application urls:

    + +

    What happens if you visit a URL that isn't in our configuration?

    +
    + + + + +
    +
    +
    +

    Interacting With the Model

    +
    +
    +

    Now that we've got temporary views that work, we can fix them to get +information from our database

    +
    +

    We'll begin with the list view.

    +

    We need some code that will fetch all the journal entries we've written, in +reverse order, and hand that collection back for rendering.

    +
    from .models import (
    +    DBSession,
    +    MyModel,
    +    Entry, # <- Add this import
    +)
    +
    +# and update this view function
    +def index_page(request):
    +    entries = Entry.all()
    +    return {'entries': entries}
    +
    +
    +
    + + + + +
    +
    +
    +

    Using the matchdict

    +
    +
    +

    Next, we want to write the view for a single entry.

    +
    +

    We'll need to use the id value our route captures into the +matchdict.

    +

    Remember that the matchdict is an attribute of the request.

    +

    We'll get the id from there, and use it to get the correct entry.

    +
    # add this import at the top
    +from pyramid.exceptions import HTTPNotFound
    +
    +# and update this view function:
    +def blog_view(request):
    +    this_id = request.matchdict.get('id', -1)
    +    entry = Entry.by_id(this_id)
    +    if not entry:
    +        return HTTPNotFound()
    +    return {'entry': entry}
    +
    +
    +
    + + + + +
    +
    +
    +

    Testing Our Views

    +
    +
    +

    We can now verify that these views work correctly.

    +
    +

    Make sure your virtualenv is properly activated, and start the web server:

    +
    (ljenv)$ pserve development.ini
    +Starting server in PID 84467.
    +serving on http://0.0.0.0:6543
    +
    +
    +

    Then try viewing the list page and an entry page:

    + +

    What happens when you request an entry with an id that isn't in the +database?

    + +
    + + + + +
    +
    +
    +

    The MVC View

    +
    +
    +
    +

    Again, back to the Model-View-Controller pattern.

    +
    +http://upload.wikimedia.org/wikipedia/commons/4/40/MVC_passive_view.png +

    By Alan Evangelista (Own work) [CC0], via Wikimedia Commons

    +
    +
    +

    We've built a model and we've created some controllers that use it.

    +

    In Pyramid, we call controllers views and they are callables that +take request as an argument.

    +

    Let's turn to the last piece of the MVC patter, the view

    +
    +
    + + + + +
    +
    +
    +

    Presenting Data

    +
    +
    +

    The job of the view in the MVC pattern is to present data in a format that +is readable to the user of the system.

    +
    +

    There are many ways to present data.

    +

    Some are readable by humans (tables, charts, graphs, HTML pages, text +files).

    +

    Some are more for machines (xml files, csv, json).

    +

    Which of these formats is the right one depends on your purpose.

    +

    What is the purpose of our learning journal?

    +
    + + + + +
    +
    +
    +

    Pyramid Renderers

    +
    +
    +

    In Pyramid, the job of presenting data is performed by a renderer.

    +
    +

    So we can consider the Pyramid renderer to be the view in our MVC +app.

    +

    We've already seen how we can connect a renderer to a Pyramid view with +configuration.

    +

    In fact, we have already done so, using a built-in renderer called +'string'.

    +

    This renderer converts the return value of its view to a string and sends +that back to the client as an HTTP response.

    +

    But the result isn't so nice looking.

    +
    + + + + +
    +
    +
    +

    Template Renderers

    +
    +
    +

    The built-in renderers ('string', 'json', 'jsonp') in Pyramid are +not the only ones available.

    +
    +

    There are add-ons to Pyramid that support using various template +languages as renderers.

    +

    In fact, one of these was installed by default when you created this +project.

    +
    + + + + +
    +
    +
    +

    Configuring a Template Renderer

    +
    +
    +
    # in setup.py
    +requires = [
    +    # ...
    +    'pyramid_chameleon',
    +    # ...
    +]
    +
    +# in learning_journal/__init__.py
    +def main(global_config, **settings):
    +    # ...
    +    config.include('pyramid_chameleon')
    +
    +
    +
    +

    The pyramid_chameleon package supports using the chameleon template +language.

    +

    The language is quite nice and powerful, but not so easy to learn.

    +

    Let's use a different one, jinja2

    +
    + + + + +
    +
    +
    +

    Changing Template Renderers

    +
    +
    +

    Change pyramid_chameleon to pyramid_jinja2 in both of these files:

    +
    # in setup.py
    +requires = [
    +    # ...
    +    'pyramid_jinja2',
    +    # ...
    +]
    +
    +# in learning_journal/__init__.py
    +def main(global_config, **settings):
    +    # ...
    +    config.include('pyramid_jinja2')
    +
    +
    + + + + +
    +
    +
    +

    Picking up the Changes

    +
    +
    +

    We've changed the dependencies for our Pyramid project.

    +
    +

    As a result, we will need to re-install it so the new dependencies are also +installed:

    +
    (ljenv)$ python setup.py develop
    +...
    +Finished processing dependencies for learning-journal==0.0
    +(ljenv)$
    +
    +
    +

    Now, we can use Jinja2 templates in our project.

    +

    Let's learn a bit about how Jinja2 templates work.

    +
    + + + + +
    +
    +
    +

    Jinja2 Template Basics

    +
    +
    +

    We'll start with the absolute basics.

    +
    +

    Fire up a Python interpreter, using your ljenv virtualenv:

    +
    (ljenv)$ python
    +>>>
    +
    +
    +

    Then import the Template class from the jinja2 package:

    +
    >>> from jinja2 import Template
    +
    +
    +
    + + + + +
    +
    +
    +

    Templates are Strings

    +
    +
    +

    A template is constructed with a simple string:

    +
    >>> t1 = Template("Hello {{ name }}, how are you?")
    +
    +
    +
    +

    Here, we've simply typed the string directly, but it is more common to +build a template from the contents of a file.

    +

    Notice that our string has some odd stuff in it: {{ name }}.

    +

    This is called a placeholder and when the template is rendered it is +replaced.

    +
    + + + + +
    +
    +
    +

    Rendering a Template

    +
    +
    +

    Call the render method, providing context:

    +
    >>> t1.render(name="Freddy")
    +u'Hello Freddy, how are you?'
    +>>> t1.render({'name': "Roberto"})
    +u'Hello Roberto, how are you?'
    +>>>
    +
    +
    +
    +

    Context can either be keyword arguments, or a dictionary

    +

    Note the resemblance to something you've seen before:

    +
    >>> "This is {owner}'s string".format(owner="Cris")
    +'This is Cris's string'
    +
    +
    +
    + + + + +
    +
    +
    +

    Dictionaries in Context

    +
    +
    +

    Dictionaries passed in as part of the context can be addressed with either +subscript or dotted notation:

    +
    >>> person = {'first_name': 'Frank',
    +...           'last_name': 'Herbert'}
    +>>> t2 = Template("{{ person.last_name }}, {{ person['first_name'] }}")
    +>>> t2.render(person=person)
    +u'Herbert, Frank'
    +
    +
    +
      +
    • Jinja2 will try the correct way first (attr for dotted, item for +subscript).
    • +
    • If nothing is found, it will try the opposite.
    • +
    • If nothing is found, it will return an undefined object.
    • +
    + + + + +
    +
    +
    +

    Objects in Context

    +
    +
    +

    The exact same is true of objects passed in as part of context:

    +
    +
    >>> t3 = Template("{{ obj.x }} + {{ obj['y'] }} = Fun!")
    +>>> class Game(object):
    +...   x = 'babies'
    +...   y = 'bubbles'
    +...
    +>>> bathtime = Game()
    +>>> t3.render(obj=bathtime)
    +u'babies + bubbles = Fun!'
    +
    +
    +

    This means your templates can be a bit agnostic as to the nature of the +things in context

    +
    + + + + +
    +
    +
    +

    Filtering values in Templates

    +
    +
    +

    You can apply filters to the data passed in context with the pipe ('|') +operator:

    +
    t4 = Template("shouted: {{ phrase|upper }}")
    +>>> t4.render(phrase="this is very important")
    +u'shouted: THIS IS VERY IMPORTANT'
    +
    +
    +
    +

    You can also chain filters together:

    +
    t5 = Template("confusing: {{ phrase|upper|reverse }}")
    +>>> t5.render(phrase="howdy doody")
    +u'confusing: YDOOD YDWOH'
    +
    +
    +
    + + + + +
    +
    +
    +

    Control Flow

    +
    +
    +

    Logical control structures are also available:

    +
    +
    tmpl = """
    +... {% for item in list %}{{ item }}, {% endfor %}
    +... """
    +>>> t6 = Template(tmpl)
    +>>> t6.render(list=[1,2,3,4,5,6])
    +u'\n1, 2, 3, 4, 5, 6, '
    +
    +
    +

    Any control structure introduced in a template must be paired with an +explicit closing tag ({% for %}...{% endfor %})

    +

    Remember, although template tags like {% for %} or {% if %} look a +lot like Python, they are not.

    +

    The syntax is specific and must be followed correctly.

    +
    + + + + +
    +
    +
    +

    Template Tests

    +
    +
    +

    There are a number of specialized tests available for use with the +if...elif...else control structure:

    +
    >>> tmpl = """
    +... {% if phrase is upper %}
    +...   {{ phrase|lower }}
    +... {% elif phrase is lower %}
    +...   {{ phrase|upper }}
    +... {% else %}{{ phrase }}{% endif %}"""
    +>>> t7 = Template(tmpl)
    +>>> t7.render(phrase="FOO")
    +u'\n\n  foo\n'
    +>>> t7.render(phrase="bar")
    +u'\n\n  BAR\n'
    +>>> t7.render(phrase="This should print as-is")
    +u'\nThis should print as-is'
    +
    +
    + + + + +
    +
    +
    +

    Basic Expressions

    +
    +
    +

    Basic Python-like expressions are also supported:

    +
    tmpl = """
    +... {% set sum = 0 %}
    +... {% for val in values %}
    +... {{ val }}: {{ sum + val }}
    +...   {% set sum = sum + val %}
    +... {% endfor %}
    +... """
    +>>> t8 = Template(tmpl)
    +>>> t8.render(values=range(1,11))
    +u'\n\n\n1: 1\n  \n\n2: 3\n  \n\n3: 6\n  \n\n4: 10\n
    +  \n\n5: 15\n  \n\n6: 21\n  \n\n7: 28\n  \n\n8: 36\n
    +  \n\n9: 45\n  \n\n10: 55\n  \n'
    +
    +
    + + + + +
    +
    +
    +

    Our Templates

    +
    +
    +

    There's more that Jinja2 templates can do, but it will be easier to introduce +you to that in the context of a working template. So let's make some.

    + + + + +
    +
    +
    +

    Detail Template

    +
    +
    +

    We have a Pyramid view that returns a single entry. Let's create a template to +show it.

    +
    +

    In learning_journal/templates create a new file detail.jinja2:

    +
    <article>
    +  <h1>{{ entry.title }}</h1>
    +  <hr/>
    +  <p>{{ entry.body }}</p>
    +  <hr/>
    +  <p>Created <strong title="{{ entry.created }}">{{entry.created}}</strong></p>
    +</article>
    +
    +
    +

    Then wire it up to the detail view in views.py:

    +
    # views.py
    +@view_config(route_name='detail', renderer='templates/detail.jinja2')
    +def blog_view(request):
    +    # ...
    +
    +
    +
    + + + + +
    +
    +
    +

    Try It Out

    +
    +
    +

    Now we should be able to see some rendered HTML for our journal entry details.

    +
    +

    Start up your server:

    +
    (ljenv)$ pserve development.ini
    +Starting server in PID 90536.
    +serving on http://0.0.0.0:6543
    +
    +
    +

    Then try viewing an individual journal entry

    + +
    + + + + +
    +
    +
    +

    Listing Page

    +
    +
    +

    The index page of our journal should show a list of journal entries, let's do +that next.

    +
    +

    In learning_journal/templates create a new file list.jinja2:

    +
    {% if entries %}
    +<h2>Journal Entries</h2>
    +<ul>
    +  {% for entry in entries %}
    +    <li>
    +    <a href="{{ request.route_url('detail', id=entry.id) }}">{{ entry.title }}</a>
    +    </li>
    +  {% endfor %}
    +</ul>
    +{% else %}
    +<p>This journal is empty</p>
    +{% endif %}
    +
    +
    +
    + + + + +
    +
    +
    +

    Our Templates

    +
    +
    +

    It's worth taking a look at a few specifics of this template.

    +
    +
    <a href="{{ request.route_url('detail', id=entry.id) }}">{{ entry.title }}</a>
    +
    +
    +

    Jinja2 templates are rendered with a context.

    +

    The return values of the Pyramid view for a template get included in that +context.

    +

    So does request, which is placed there by the framework.

    +

    Request has a method route_url that will create a URL for a named +route.

    +

    This allows you to include URLs in your template without needing to know +exactly what they will be.

    +

    This process is called reversing, since it's a bit like a reverse phone +book lookup.

    +
    + + + + +
    +
    +
    +

    Our Templates

    +
    +
    +

    Finally, you'll need to connect this new renderer to your listing view:

    +
    @view_config(route_name='home', renderer='templates/list.jinja2')
    +def index_page(request):
    +    # ...
    +
    +
    + + + + +
    +
    +
    +

    Try It Out

    +
    +
    +

    We can now see our list page too. Let's try starting the server:

    +
    +
    (ljenv)$ pserve development.ini
    +Starting server in PID 90536.
    +serving on http://0.0.0.0:6543
    +
    +
    +

    Then try viewing the home page of your journal:

    + +

    Click on the link to an entry, it should work.

    +
    + + + + +
    +
    +
    +

    Sharing Structure

    +
    +
    +

    These views are reasonable, if quite plain.

    +
    +

    It'd be nice to put them into something that looks a bit more like a +website.

    +

    Jinja2 allows you to combine templates using something called +template inheritance.

    +

    You can create a basic page structure, and then inherit that structure in +other templates.

    +

    In our class resources I've added a page template layout.jinja2. Copy +that page to your templates directory

    +
    + + + + +
    +
    +
    +

    layout.jinja2

    +
    +
    +
    <!DOCTYPE html>
    +<html lang="en">
    +  <head>
    +    <meta charset="utf-8">
    +    <title>Python Learning Journal</title>
    +    <!--[if lt IE 9]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
    +  </head>
    +  <body>
    +    <header>
    +      <nav><ul><li><a href="{{ request.route_url('home') }}">Home</a></li></ul></nav>
    +    </header>
    +    <main>
    +      <h1>My Python Journal</h1>
    +      <section id="content">{% block body %}{% endblock %}</section>
    +    </main>
    +    <footer><p>Created in the UW PCE Python Certificate Program</p></footer>
    +  </body>
    +</html>
    +
    +
    + + + + +
    +
    +
    +

    Template Blocks

    +
    +
    +

    The important part here is the {% block body %}{% endblock %} expression.

    +
    +

    This is a template block and it is a kind of placeholder.

    +

    Other templates can inherit from this one, and fill that block with +additional HTML.

    +

    Let's update our detail and list templates:

    +
    {% extends "layout.jinja2" %}
    +{% block body %}
    +<!-- everything else that was already there goes here -->
    +{% endblock %}
    +
    +
    +
    + + + + +
    +
    +
    +

    Try It Out

    +
    +
    +

    Let's try starting the server so we can see the result:

    +
    +
    (ljenv)$ pserve development.ini
    +Starting server in PID 90536.
    +serving on http://0.0.0.0:6543
    +
    +
    +

    Then try viewing the home page of your journal:

    + +

    Click on the link to an entry, it should work.

    +

    And now you have shared page structure that is in both.

    +
    + + + + +
    +
    +
    +

    Static Assets

    +
    +
    +

    Although we have a shared structure, it isn't particularly nice to look at.

    +
    +

    Aspects of how a website looks are controlled by CSS (Cascading Style +Sheets).

    +

    Stylesheets are one of what we generally speak of as static assets.

    +

    Other static assets include images that are part of the look and feel of +the site (logos, button images, etc) and the JavaScript files that add +client-side dynamic behavior to the site.

    +
    + + + + +
    +
    +
    +

    Static Assets in Pyramid

    +
    +
    +

    Serving static assets in Pyramid requires a static view to configuration. +Luckily, pcreate already handled that for us:

    +
    +
    # in learning_journal/__init__.py
    +def main(global_config, **settings):
    +    # ...
    +    config.add_static_view('static', 'static', cache_max_age=3600)
    +    # ...
    +
    +
    +

    The first argument to add_static_view is a name that will need to +appear in the path of URLs requesting assets.

    +

    The second argument is a path that is relative to the package being +configured.

    +

    Assets referenced by the name in a URL will be searched for in the +location defined by the path

    +

    Additional keyword arguments control other aspects of how the view works.

    +
    + + + + +
    +
    +
    +

    Static Assets in Templates

    +
    +
    +

    Once you have a static view configured, you can use assets in that location in +templates.

    +
    +

    The request object in Pyramid provides a static_url method that +builds appropriate URLs

    +

    Add the following to our layout.jinja2 template:

    +
    <head>
    +  <!-- ... -->
    +  <link href="{{ request.static_url('learning_journal:static/styles.css') }}" rel="stylesheet">
    +</head>
    +
    +
    +

    The one required argument to request.static_url is a path to an +asset.

    +

    Note that because any package might define a static view, we have to +specify which package we want to look in.

    +

    That's why we have learning_journal:static/styles.css in our call.

    +
    + + + + +
    +
    +
    +

    Basic Styles

    +
    +
    +

    I've created some very very basic styles for our learning journal.

    +
    +

    You can find them in resources/session02/styles.css. Go ahead and copy +that file.

    +

    Add it to learning_journal/static.

    +

    Then restart your web server and see what a difference a little style +makes:

    +
    (ljenv)$ pserve development.ini
    +Starting server in PID 90536.
    +serving on http://0.0.0.0:6543
    +
    +
    +
    + + + + +
    +
    +
    +

    The Outcome

    +
    +
    +

    Your site should look something like this:

    +
    +../_images/learning_journal_styled.png +

    The learning journal with basic styles applied

    +
    + + + + +
    +
    +
    +

    Getting Interactive

    +
    +
    +
    +

    We have a site that allows us to view a list of journal entries.

    +
    +

    We can also view the details of a single entry.

    +

    But as yet, we don't really have any interaction in our site yet.

    +

    We can't create new entries.

    +

    Let's add that functionality next.

    +
    +
    + + + + +
    +
    +
    +

    User Input

    +
    +
    +

    In HTML websites, the traditional way of getting input from users is via +HTML forms.

    +
    +

    Forms use input elements to allow users to enter data, pick from +drop-down lists, or choose items via checkbox or radio button.

    +

    It is possible to create plain HTML forms in templates and use them with +Pyramid.

    +

    It's a lot easier, however, to work with a form library to create forms, +render them in templates and interact with data sent by a client.

    +

    We'll be using a form library called WTForms in our project

    +
    + + + + +
    +
    +
    +

    Installing WTForms

    +
    +
    +

    The first step to working with this library is to install it.

    +
    +

    Start by makin the library as a dependency of our package by adding it to +the requires list in setup.py:

    +
    requires = [
    +    # ...
    +    'wtforms', # <- add this to the list
    +]
    +
    +
    +

    Then, re-install our package to download and install the new dependency:

    +
    (ljenv)$ python setup.py develop
    +...
    +Finished processing dependencies for learning-journal==0.0
    +
    +
    +
    + + + + +
    +
    +
    +

    Using WTForms

    +
    +
    +

    We'll want a form to allow a user to create a new Journal Entry.

    +
    +

    Add a new file called forms.py in our learning_journal package, next to +models.py:

    +
    from wtforms import Form, TextField, TextAreaField, validators
    +
    +strip_filter = lambda x: x.strip() if x else None
    +
    +class EntryCreateForm(Form):
    +    title = TextField(
    +        'Entry title',
    +        [validators.Length(min=1, max=255)],
    +        filters=[strip_filter])
    +    body = TextAreaField(
    +        'Entry body',
    +        [validators.Length(min=1)],
    +        filters=[strip_filter])
    +
    +
    +
    + + + + +
    +
    +
    +

    Using a Form in a View

    +
    +
    +

    Next, we need to add a new view that uses this form to create a new entry.

    +
    +

    Add this to views.py:

    +
    # add these imports
    +from pyramid.exceptions import HTTPFound
    +from .forms import EntryCreateForm
    +
    +# and update this view function
    +def create(request):
    +    entry = Entry()
    +    form = EntryCreateForm(request.POST)
    +    if request.method == 'POST' and form.validate():
    +        form.populate_obj(entry)
    +        DBSession.add(entry)
    +        return HTTPFound(location=request.route_url('home'))
    +    return {'form': form, 'action': request.matchdict.get('action')}
    +
    +
    +
    + + + + +
    +
    +
    +

    Testing the Route/View Connection

    +
    +
    +

    We already have a route that connects here. Let's test it.

    +
    +

    Start your server:

    +
    (ljenv)$ pserve development.ini
    +Starting server in PID 90536.
    +serving on http://0.0.0.0:6543
    +
    +
    +

    And then try connecting to the action route:

    + +

    You should see something like this:

    +
    {'action': u'create', 'form': <learning_journal.forms.EntryCreateForm object at 0x10e7d6b90>}
    +
    +
    +
    + + + + +
    +
    +
    +

    Rendering A Form

    +
    +
    +

    Finally, we need to create a template that will render our form.

    +
    +

    Add a new template called edit.jinja2 in +learning_journal/templates:

    +
    {% extends "templates/layout.jinja2" %}
    +{% block body %}
    +<form action="." method="POST">
    +{% for field in form %}
    +  {% if field.errors %}
    +    <ul>
    +    {% for error in field.errors %}
    +        <li>{{ error }}</li>
    +    {% endfor %}
    +    </ul>
    +  {% endif %}
    +    <p>{{ field.label }}: {{ field }}</p>
    +{% endfor %}
    +    <p><input type="submit" name="submit" value="Submit" /></p>
    +</form>
    +{% endblock %}
    +
    +
    +
    + + + + +
    +
    +
    +

    Connecting the Renderer

    +
    +
    +

    You'll need to update the view configuration to use this new renderer.

    +
    +

    Update the configuration in learning_journal/views.py:

    +
    @view_config(route_name='action', match_param='action=create',
    +             renderer='templates/edit.jinja2')
    +def create(request):
    +    # ...
    +
    +
    +

    And then you should be able to start your server and test:

    +
    (ljenv)$ pserve development.ini
    +Starting server in PID 90536.
    +serving on http://0.0.0.0:6543
    +
    +
    + +
    + + + + +
    +
    +
    +

    Providing Access

    +
    +
    +

    Great! Now you can add new entries to your journal.

    +
    +

    But in order to do so, you have to hand-enter the url.

    +

    You should add a new link in the UI somewhere that helps you get there more +easily.

    +

    Add the following to list.jinja2:

    +
    {% extends "layout.jinja2" %}
    +{% block body %}
    +{% if entries %}
    +...
    +{% else %}
    +...
    +{% endif %}
    +<!-- Add This Link -->
    +<p><a href="{{ request.route_url('action', action='create') }}">New Entry</a></p>
    +{% endblock %}
    +
    +
    +
    + + + + +
    +
    +
    +

    Homework

    +
    +
    +
    +

    You have a website now that allows you to create, view and list journal +entries

    +
    +

    However, there are still a few flaws in this system.

    +

    You should be able to edit a journal entry that already exists, in case +you make a spelling error.

    +

    It would also be nice to see a prettier site.

    +

    Let's handle that for homework this week.

    +
    +
    + + + + +
    +
    +
    +

    Part 1: Add Editing

    +
    +
    +

    For part one of your assignment, add editing of existing entries. You will need:

    +
      +
    • A form that shows an existing entry (what is different about this form from +one for creating a new entry?)
    • +
    • A pyramid view that handles that form. It should:
        +
      • Show the form with the requested entry when the page is first loaded
      • +
      • Accept edits only on POST
      • +
      • Update an existing entry with new data from the form
      • +
      • Show the view of the entry after editing so that the user can see the edits +saved correctly
      • +
      • Show errors from form validation, if any are present
      • +
      +
    • +
    • A link somewhere that leads to the editing page for a single entry (probably +on the view page for a entry)
    • +
    +

    You'll need to update a bit of configuration, but not much. Use the create +form we did here in class as an example.

    + + + + +
    +
    +
    +

    Part 2: Make it Yours

    +
    +
    +

    I've created for you a very bare-bones layout and stylesheet.

    +

    You will certainly want to add a bit of your own style and panache.

    +

    Spend a few hours this week playing with the styles and getting a site that +looks more like you want it to look.

    +

    The Mozilla Developer Network has some excellent resources for learning CSS.

    +

    In particular, the Getting Started with CSS tutorial is a thorough +introduction to the basics.

    +

    You might also look at their CSS 3 Demos to help fire up your creative +juices.

    +

    Here are a few more resources:

    + + + + + +
    +
    +
    +

    Part 3: User Model

    +
    +
    +

    As it stands, our journal accepts entries from anyone who comes by.

    +

    Next week we will add security to allow only logged-in users to create and edit +entries.

    +

    To do so, we'll need a user model

    +

    The model should have:

    +
      +
    • An id field that is a primary key
    • +
    • A username field that is unicode, no more than 255 characters, not +nullable, unique and indexed.
    • +
    • A password field that is unicode and not nullable
    • +
    +

    In addition, the model should have a classmethod that retrieves a specific user +when given a username.

    + + + + +
    +
    +
    +

    Part 4: Preparation for Deployment

    +
    +
    +

    At the end of class next week we will be deploying our application to Heroku.

    +

    You will need to get a free account.

    +

    Once you have your free account set up and you have logged in, run through the +getting started with Python tutorial.

    +

    Be sure to at least complete the set up step. It will have you install the +Heroku Toolbelt, which you will need to have ready in class.

    + + + + +
    +
    + + + + +
    +

    <Thank You!>

    +

     

    +
    +

    + +

    +
    + + + + + + + + \ No newline at end of file From 83026d04e9d8bceed3b9716d65201b56bfd8b229 Mon Sep 17 00:00:00 2001 From: cewing Date: Thu, 15 Jan 2015 11:10:44 -0800 Subject: [PATCH 074/114] modifications to previous content --- html/_sources/presentations/session02.txt | 8 ++++---- html/_static/custom.css | 8 ++++++++ html/presentations/session02.html | 8 ++++---- html/searchindex.js | 2 +- slides/_sources/presentations/session02.txt | 8 ++++---- slides/_static/custom.css | 8 ++++++++ slides/presentations/session02.html | 8 ++++---- slides/searchindex.js | 2 +- 8 files changed, 34 insertions(+), 18 deletions(-) diff --git a/html/_sources/presentations/session02.txt b/html/_sources/presentations/session02.txt index 3d1c6b8e..f141f8a8 100644 --- a/html/_sources/presentations/session02.txt +++ b/html/_sources/presentations/session02.txt @@ -533,10 +533,10 @@ Next, we want to write the view for a single entry. .. code-block:: python # add this import at the top - from pyramid.exceptions import HTTPNotFound + from pyramid.httpexceptions import HTTPNotFound # and update this view function: - def blog_view(request): + def view(request): this_id = request.matchdict.get('id', -1) entry = Entry.by_id(this_id) if not entry: @@ -950,7 +950,7 @@ show it. # views.py @view_config(route_name='detail', renderer='templates/detail.jinja2') - def blog_view(request): + def view(request): # ... .. nextslide:: Try It Out @@ -1348,7 +1348,7 @@ Next, we need to add a new view that uses this form to create a new entry. .. code-block:: python # add these imports - from pyramid.exceptions import HTTPFound + from pyramid.httpexceptions import HTTPFound from .forms import EntryCreateForm # and update this view function diff --git a/html/_static/custom.css b/html/_static/custom.css index 44274406..f0ae2b41 100644 --- a/html/_static/custom.css +++ b/html/_static/custom.css @@ -102,6 +102,10 @@ article .medium { font-weight: bold; font-size: 45px; line-height: 45px; } +article .small { + font-weight: normal; + font-size: 30px; + line-height: 30px; } article .credit { font-size: 75%; text-align: left; } @@ -163,4 +167,8 @@ article table.docutils tr td { font-size: 75%; text-align: center; } +.figure.align-left { + text-align: left; + float: left; +} diff --git a/html/presentations/session02.html b/html/presentations/session02.html index 15234ae2..e2263191 100644 --- a/html/presentations/session02.html +++ b/html/presentations/session02.html @@ -396,10 +396,10 @@

    The Pyramid Viewmatchdict is an attribute of the request.

    We’ll get the id from there, and use it to get the correct entry.

    # add this import at the top
    -from pyramid.exceptions import HTTPNotFound
    +from pyramid.httpexceptions import HTTPNotFound
     
     # and update this view function:
    -def blog_view(request):
    +def view(request):
         this_id = request.matchdict.get('id', -1)
         entry = Entry.by_id(this_id)
         if not entry:
    @@ -681,7 +681,7 @@ 

    Our Templatesviews.py:

    # views.py
     @view_config(route_name='detail', renderer='templates/detail.jinja2')
    -def blog_view(request):
    +def view(request):
         # ...
     
    @@ -947,7 +947,7 @@

    Using WTForms

    Add this to views.py:

    # add these imports
    -from pyramid.exceptions import HTTPFound
    +from pyramid.httpexceptions import HTTPFound
     from .forms import EntryCreateForm
     
     # and update this view function
    diff --git a/html/searchindex.js b/html/searchindex.js
    index 155ac5df..a09f52f4 100644
    --- a/html/searchindex.js
    +++ b/html/searchindex.js
    @@ -1 +1 @@
    -Search.setIndex({envversion:42,terms:{interchang:1,ronach:5,stub:[],aug:1,sorri:1,authorid:[],concret:1,under:[],dest_dir:1,worth:[1,3],digit:3,everi:1,rise:[],adodbapi:[],govern:[4,2],herbert:3,imaplib:2,"544kb":[],direct:1,batch:1,enjoi:[],second:[1,3],street:[],nthi:3,even:[1,2,5],"new":[],ever:5,metadata:1,behavior:[1,3],createdb:[],show_profil:[],here:[4,5,1,3],china:[],path:[1,3],interpret:[1,3],credit:1,studi:5,portabl:4,golden:3,wikimedia:[1,3],total:[],unit:[],highli:4,describ:[],would:[1,3],hellstrom:[],call:[5,1,3],typo:1,recommend:[],type:[1,2,3],tell:1,"5fb97f3":[],panach:3,notic:[1,3],phone:3,moin:[],unpack:1,must:[4,1,3],word:[],flaskenv:[],restor:1,spec:5,conceptu:3,root:[],repoz:1,give:[4,1],smtp:5,want:[4,5,1,3],end:[4,5,2,3],learning_journ:[1,3],book_insert:[],concis:2,env:1,answer:3,verifi:[],perspect:5,anon_1:1,after:[1,3],superus:1,diagram:1,befor:[1,2,3],wrong:1,parallel:5,demonstr:[1,2],attempt:[],classmethod:[1,3],think:[5,1,3],receiv:[2,3],scoped_sess:1,dispar:2,environ:[4,1,2],enter:3,lambda:3,engine_from_config:[1,3],order:[4,1,2,3],oper:[4,3],feedback:[],over:[5,1,2,3],becaus:[1,3],privileg:1,flexibl:1,digest:5,fit:[],fix:[],toolbelt:3,comprehend:5,better:[1,5],complex:[1,2],comprehens:5,howdi:3,easier:[5,1,3],them:[4,1,2,3],thei:[4,5,1,2,3],"break":[1,3],sqlite3:[],jinja2:[],initializedb:1,importantli:[],choic:[4,1,2,5],each:[0,1,2,4],went:3,side:[5,3],bone:3,mean:[1,2,3],laboratori:4,doug:2,logo:3,ooop:[],extract:[2,5],network:[4,5,2,3],goe:[1,3],god:1,newli:[],content:3,rewrit:[],got:[1,3],navig:4,nightmar:1,situat:1,free:3,standard:[4,1,2,5],kit:5,traceback:[],static_url:3,isn:3,confus:3,pristin:[],rang:[4,3],independ:1,demostr:[],hook:1,unlik:[],alreadi:[1,3],wrapper:[],fantast:[4,1,5],primari:[1,3],top:[1,3],"0x1103e38d0":1,sometim:1,travers:[],too:[5,1,3],tom:1,my_view:3,consol:1,namespac:[],tool:[4,1,2,5],setuptool:1,took:1,technic:[],keyword:3,provid:[4,5,1,2,3],tree:1,project:[],minut:3,contenti:[],ran:1,modern:[1,2],mind:5,rat:[],pylon:1,increment:[],"__main__":[],seen:[1,3],doctyp:3,seek:1,strength:2,latter:1,thorough:[5,3],"0x1103e3fd0":1,transmit:1,plenti:[],though:5,usernam:3,object:[],regular:1,specifi:3,tradit:3,don:[4,5,1,3],doc:1,metal:[],doe:[4,5,1,2,3],notnul:[],declar:[1,3],unchang:5,sum:3,dot:3,opposit:3,random:[],syntax:[4,5,3],radio:3,identifi:3,edit_entri:[],absolut:3,nobodi:[],layout:[5,2,3],explain:[1,5],configur:[5,1,3],kessler:5,disert:5,rich:[4,2],folder:[1,3],patter:3,stop:[1,3],report:[],bat:5,bar:3,"public":3,reload:[],told:[],steal:1,respond:3,habit:[],disucss:2,result:[],respons:[],fail:[],hash:[],best:1,subject:[],pythoncert:[1,3],txpostgr:[],wikipedia:[1,5],urllib:2,mysql_length:1,figur:1,score:1,outstand:3,awai:1,enlighten:5,approach:[4,1],paster:[1,3],never:1,extend:[],weak:2,extens:4,html5:[2,3],protect:[],howev:[1,3],against:3,logic:[1,3],browser:[1,2,3],com:[1,3],compromis:4,get_appset:[1,3],trunk:3,trust:1,assum:1,speak:[2,3],add_rout:[1,3],three:[],been:[1,3],interest:5,basic:[],quickli:1,life:2,setup_log:[1,3],argument:[1,3],ident:[],servic:[2,5],properti:[],commerci:1,pyramid:[],varchar:1,tediou:1,sever:5,mievil:[],perform:[1,3],make:2,couchdb:1,drawback:2,complet:[4,5,1,2,3],hand:3,kib:[],"548kb":1,hypothet:1,inherit:[1,3],client:[5,1,2,3],greatest:[],thi:[],endif:3,everyth:[4,5,1,3],left:[1,5],protocol:[],just:[5,1,3],human:[5,3],yet:[1,3],languag:[4,1,2,3],previous:2,alchemi:1,easi:[5,1,3],shout:3,httpfound:3,els:[1,3],save:[1,3],gave:1,applic:[],mayb:[],leisur:5,parse_var:1,apart:[5,3],specif:[5,1,2,3],arbitrari:1,manual:1,install_requir:1,underli:[4,2],www:[],right:[4,5,3],deal:5,nfrom:1,aspen:[],successfulli:1,transmiss:5,txt:1,cooper:[],subclass:[],ssh2:5,exectut:1,foo:3,localhost:3,core:5,jsonp:3,confer:2,repositori:[1,3],post:3,chapter:[1,5],postgresql:1,surround:3,commit:1,blabber:1,bound:1,curios:2,down:3,creativ:[1,3],storag:1,guardia:[],wai:[4,5,1,2,3],support:[4,5,1,2,3],"class":[],avail:[1,3],editor:[],head:3,form:[],offer:[5,1,2,3],forc:5,sqlalchemi:[],lignt:2,"true":[1,3],reset:[],attr:3,strip_filt:3,until:1,fundament:[4,2],intitalizedb:1,featur:[1,2,5],"abstract":1,proven:1,exist:[1,3],glanc:5,check:[],assembl:3,encrypt:5,mashup:[],excel:[5,3],role:3,test:[],tie:[],webob:1,roll:[],relat:[1,5],intend:[4,1],urllib2:2,djangocon:5,intent:4,consid:[5,1,3],initialize_learning_journal_db:1,ignor:[1,5],time:[1,5],push:1,breadth:5,concept:[4,1,2,5],chain:[1,3],skip:1,consum:[2,5],focus:5,invent:1,supplement:5,skim:5,row:1,decid:[],depend:[1,2,3],graph:3,readabl:3,unpython:1,certainli:3,decis:[],sourc:[0,1,2,3,4,5],string:[5,1,3],lru:1,kitten:1,ydood:3,brows:[2,3],level:[4,1],did:[1,3],dig:3,iter:1,item:[1,3],unsupport:[],team:1,div:[],declarative_bas:1,upper:3,restkit:5,appear:3,repli:2,scaffold:1,beautifulsoup:[2,5],"75a8462":[],current:1,rst2xml:1,deriv:2,gener:[],address:[5,3],along:[4,2,5],pysqlit:[],bob:1,blog_upd:[],modul:[4,1,2,5],fake:[],marker:3,fetch_head:[],market:1,prove:[],univers:5,visit:3,todai:[],live:1,criteria:1,checkout:[],pyarmid:[],appendix:[],templat:[],obj:[1,3],behalf:3,prepar:[],focu:2,whatev:3,purpos:[1,2,3],boilerpl:1,stream:1,topic:[5,3],critic:5,app_factori:1,disadvantag:[],occur:[],nearli:1,alwai:1,multipl:1,winter:4,tilt:[],charset:3,write:[5,1,3],anyon:3,map:[],product:[1,5],max:3,dive:[4,2],date:1,classroom:1,bookdb:[],explicit:3,produc:2,tale:[],ephemer:1,"switch":1,combin:[4,1,2,3],callabl:3,talk:[5,1,2,3],shield:2,ydwoh:3,brain:[],populate_db:[],gitignor:1,still:[1,3],config_uri:[1,3],group:1,how:[4,5,1,2,3],window:1,curli:3,main:[1,3],non:[],killer:2,initi:[1,5],discuss:[5,1,2,3],term:[4,1],name:[5,1,3],config:[1,3],interpr:1,separ:[],magazin:[5,3],januari:4,"8873ba1":[],compil:5,domain:[5,1,3],"0x105849b90":3,replac:3,individu:[1,3],continu:[1,2],happen:[1,3],accomplish:5,profil:[],correct:3,tmpl:3,earlier:1,bookid:[],argv:1,orm:[],inevet:[],org:[],"byte":[],care:5,turn:[5,1,3],place:[1,2,3],principl:4,imposs:1,frequent:1,first:[],origin:[1,2,5],directli:[1,3],onc:[1,2,3],yourself:4,"long":[1,2],open:3,given:[4,5,1,2,3],sheet:3,bookmark:5,cx_oracl:[],eachoth:1,conveni:1,pocoo:[],repostitori:[],copi:3,artifact:1,github:[1,3],mostli:5,domin:1,than:[5,1,3],matchdict:3,serv:[2,3],footer:3,were:1,conn2:[],conn1:[],seri:1,sai:1,ani:[4,5,1,3],properli:3,saw:1,engin:[1,3],techniqu:[],ideal:[],take:[5,1,2,3],reload_templ:1,noth:[1,3],channel:1,begin:[1,2,3],sure:[1,3],pain:1,trace:1,normal:1,track:[],compress:[],cgitb:[],pair:[1,2,3],homepag:5,sesstion:[],later:[],drive:5,"8mb":1,create_al:1,show:[1,3],german:[],my_index:1,checkbox:3,dflt_valu:[],ground:4,xml:[1,3],onli:[1,3],explicitli:1,activ:[],dict:1,translationstr:1,flask_intro:[],variou:[1,2,3],get:[],clang:1,cannot:3,utf:3,requir:[],where:[1,3],wiki:[],n10:3,test_request_context:[],review:[1,3],label:3,behind:[1,5],between:[4,1,2],"import":[1,3],across:[4,2],pretti:1,parent:1,cycl:[1,3],come:[1,3],tutori:[],wherin:1,mani:[5,1,3],among:[1,2,3],unittest:2,dispatch:5,typic:1,coupl:1,zpt:[],evangelista:[1,3],workshop:4,emphas:4,docxmlrpcserv:2,repres:[1,3],those:1,"case":[5,1,3],cast:1,outcom:1,python_web:[1,3],advantag:1,stdout:1,worri:[],destin:[],smalltalk:1,author:[],cc0:[1,3],same:[5,1,2,3],pai:[],eventu:1,week:[4,5,1,2,3],finish:[1,3],assist:1,driven:3,improv:1,extern:5,appropri:[2,3],choos:[4,1,3],macro:[],without:[1,3],model:[],execut:[4,1,5],when:[5,1,3],rest:[1,2,5],kill:1,aspect:[1,3],monei:[],versu:4,except:[1,3],littl:3,apache2:5,identif:[],exercis:[4,2],real:[2,3],around:[5,3],read:[],makin:3,dark:[],world:[5,1,2,3],integ:1,server:[5,1,2,3],benefit:2,either:3,cascad:3,manag:1,alan:[1,3],b60ea2bb7052a5bd300772d7d9d40b19b27f7a1b:[],definit:3,exit:1,notabl:[],refer:[],power:[5,1,2,3],fulli:[],regexp:3,comparison:5,central:1,acl:[],microframework:1,stand:[1,3],mytempl:[1,3],effici:4,console_script:1,interleav:[],strip:3,foreward:[],hew:[],httpnotfound:3,aren:1,start:[],interfac:[1,2,5],ipv4:5,lot:[5,1,3],ipv6:5,"0x10b075ed0":1,machin:[4,5,1,2,3],lang:3,bottl:[],freddi:3,notat:3,dirti:1,possibl:[5,3],"default":[1,3],expect:[],gone:1,creat:[],certain:1,deep:5,intro:[],file:[4,1,2,3],fill:3,models_valu:1,googl:1,compel:1,field:[1,3],valid:3,copiou:5,you:[4,5,1,2,3],juic:3,symbol:3,briefli:3,pool:5,reduc:1,wife:5,directori:[1,2,3],descript:1,scroll:[],alright:[],represent:1,all:[4,1,2,3],skeleton:1,scalar:1,abil:1,follow:[5,1,2,3],articl:[1,3],init:1,program:[],introduc:[4,1,2,3],liter:1,straightforward:[],chameleon:3,mcdonough:5,util:[1,5],fall:1,veri:[5,1,2,3],egg_info:1,list:[4,5,1,3],last_nam:3,adjust:1,small:[],sync:2,past:1,design:[4,5,1,2,3],pass:[5,1,2,3],further:3,pyodbc:[],what:[],sud:5,section:[5,1,3],abl:[1,3],brief:[2,5],delet:4,version:[4,1,2],primary_kei:1,intersect:3,deepli:4,method:[1,3],contrast:4,full:[4,1,2],themselv:[],berkelei:5,inher:2,strong:3,valu:[],ahead:3,pick:3,add_static_view:[1,3],via:[1,3],deprec:1,href:3,greenwitch:[],select:[4,1],two:[5,1,3],more:[],flat:[],flaw:3,mozilla:[5,3],particular:[5,1,3],known:[],cach:1,none:[1,3],endpoint:[],hour:[2,3],outlin:[],fast:1,dev:[],histori:[],venusian:1,remain:5,learn:[4,5,1,2,3],abandon:[],rst2html:1,def:[1,3],prompt:[1,2],scan:[1,3],share:[1,3],accept:[1,3],explor:[4,1,2],phrase:[1,3],scar:[],cours:[],first_nam:3,secur:[5,3],anoth:[1,2,3],comfort:[4,3],"__init__":[1,3],csv:[1,3],simpl:[],css:[5,3],"545kb":1,resourc:[5,3],referenc:3,okai:1,associ:2,"short":5,susan:[],django:[],caus:1,hobbit:[],egg:1,constitu:3,help:[4,5,1,2,3],mainthread:1,hypertext:5,soon:3,through:[4,5,1,2,3],paramet:[],style:[1,3],psycopg2:1,relev:1,pserv:3,might:[5,1,3],alter:[],pce:[4,3],good:[4,1,2,5],"return":[1,3],pollut:1,cew:1,framework:[],httplib:2,document:[0,1,2,3,4,5],instruct:[1,5],authent:[],easili:[5,1,3],achiev:[],compris:1,found:[1,3],unicod:[1,3],reconcil:[],hard:[1,2],idea:[1,2],realli:[5,3],connect:[5,1,3],blog_creat:[],thing:[5,1,3],orient:1,publish:[1,5],research:1,bubbl:3,print:[1,3],url_map:[],uwpc:[1,3],uncommit:1,new_model:1,dune:[],reason:3,base:[4,1],put:[1,3],thread:[],by_id:[1,3],perhap:3,perman:1,assign:[4,1,2,3],feel:3,number:[5,1,3],placehold:3,done:[1,3],least:[1,3],stdlib:[],miss:1,differ:[1,2,3],superpow:[],script:[5,1,2,3],interact:[],construct:[1,3],station:[],order_bi:1,statement:[],zeromq:5,scheme:[],store:1,luckili:[1,3],parc:1,option:[1,5],relationship:2,part:[],pars:[1,5],fred:1,king:[],kind:3,grew:[],remot:[1,5],remov:1,reus:[],str:1,consumpt:[2,5],comput:[4,2,5],packag:[],imagin:3,built:[5,1,2,3],lib:1,carlo:[],also:[4,5,1,2,3],append:1,textareafield:3,brace:3,distribut:1,kai:1,interpol:[],reach:[],chart:[1,3],most:[1,2,3],plai:[1,3],path_info:[],swiftli:[],clear:2,cover:[4,1,5],clean:[],usual:1,wsgi:[],session:[],entry_point:1,fine:3,find:[5,1,2,3],cell:[],nosql:1,copyright:1,solut:1,"172kb":1,factor:1,smtplib:2,darwin:1,hit:[],unus:1,wrinkl:[],restart:3,rfc:5,common:[1,2,3],nowher:1,certif:[4,3],creator:5,overwhelm:1,"0x1103e3f50":1,see:[1,2,3],bare:3,sea:2,arg:1,close:3,pyrami:[],someth:[1,3],particip:4,blog_act:[],subscript:3,experi:2,altern:[1,5],javascript:3,isol:1,succeed:[],pymssql:[],both:[5,1,2,3],last:[1,3],unstag:1,load:3,simpli:[1,3],point:1,instanti:1,header:3,route_url:3,param:[],mistak:1,throughout:4,blog:2,empti:[1,3],hellmann:2,runner:[],newcom:[],rstpep2html:1,strategi:[],versa:[],fire:[1,3],imag:3,great:[5,1,2,3],coordin:1,understand:[4,5],instructor:[],look:[5,1,2,3],solid:[4,5],histor:[4,5],"while":[1,2],executemani:[],match:[5,3],abov:[1,2],error:[1,3],fun:3,engl:[],readi:[1,3],readm:1,itself:1,zopetransactionextens:[],minim:5,wherein:3,zope:1,conflict:1,moment:[1,3],temporari:3,user:2,wherev:[],stack:[4,2,5],recent:1,lower:[5,3],task:[4,3],find_packag:1,entri:[],doodi:3,pickl:1,person:3,endfor:3,spend:3,explan:[],make_wsgi_app:1,"__path__":1,shape:4,mysql:1,session05:[],session04:[],session06:[],session01:[],session02:3,cur:[],restructuredtext:1,global_config:[1,3],populate_obj:3,armin:5,input:[],build:[4,5,1,2,3],bin:[1,3],march:4,format:[2,3],big:[],intuit:[],game:3,blogcreateform:[],bit:[5,1,2,3],formal:1,recret:[],an_id:[],docutil:1,altough:[],manifest:[1,2],collect:[1,3],popular:2,often:[1,5],some:[4,5,1,2,3],back:[5,1,3],global:[],understood:[],sampl:3,ljenv:[1,3],cgihttpserv:5,pep:[],werkzeug:[],cgi:[],previou:2,viabl:1,impos:[],constraint:5,materi:[0,2,5],memori:4,block:3,repair:[],primarili:[],ensur:1,chang:[5,1,3],lesson:5,html5shiv:3,question:[1,3],stylesheet:3,submit:[1,3],custom:2,heroku:3,prettier:3,suit:[2,5],larri:1,repeatedli:1,pwd:1,b60ea2bb70:[],link:[5,1,3],delta:[],line:[4,1,3],info:1,url_for:[],consist:[],cid:[],planet:[],similar:[1,2],mymodel:[1,3],parser:5,chao:[],doesn:[1,3],lectur:[4,2],titl:[1,3],scrape:2,nav:3,transport:5,nice:[2,3],llvm:1,mongodb:1,meaning:1,index_pag:3,vice:[],rst2latex:1,discrimin:[],depth:[4,5],came:[],hello:[5,3],oop:1,code:[5,1,2,3],partial:[],sqlserver:1,pymysql:[],ljshell:3,broader:[],bathtim:3,tomayko:5,send:[5,1,2,3],aris:1,sent:[1,3],wipe:[],tri:3,magic:3,button:3,hive:[],"try":[],race:3,particularli:3,pleas:[1,2,5],natur:3,uniqu:[1,3],video:5,download:[1,3],odd:3,click:3,folk:[],compat:1,index:[1,3],compar:[],resembl:3,access:[4,5],len:1,madelin:[],bodi:[1,3],let:[1,3],becom:1,sinc:[1,3],convert:[1,3],didn:[1,5],convers:5,implement:[4,1,2,5],maker:3,chanc:2,appli:[2,3],gatewai:2,"__name__":[],from:[4,5,1,2,3],commun:[4,2],next:[5,1,3],websit:[1,2,3],few:[1,3],usr:1,sort:[],src:3,babi:3,train:[1,3],account:3,retriev:3,scalabl:1,fetch:[1,3],thie:5,sqlite:1,quickstart:[],tar:1,process:[4,1,2,3],sudo:1,high:1,tag:3,tal:[],onlin:[1,2],cache_max_ag:[1,3],gcc:1,sit:5,pyramid_jinja2:3,instead:[1,3],chri:5,delai:1,attend:4,other_sess:1,"6mb":1,attent:[],philosophi:5,physic:3,add_al:1,bind:[1,3],element:[1,3],issu:[],chief:[],allow:[4,5,1,2,3],elif:3,insight:2,chosen:[],silmarillion:[],greater:5,python:[],auto:[],spell:3,dai:[2,3],hateoa:5,httplib2:5,front:2,tilkov:5,somewher:3,anyth:1,entrycreateform:3,mode:1,sessionmak:[1,3],meta:3,"static":[],special:[1,3],out:[],variabl:[],influenc:[],defend:5,categori:1,rel:3,clone:[1,3],clarifi:1,insid:1,workflow:[],frank:3,manipul:1,zodb:1,yore:3,log:[1,3],cri:3,"0x1103d9f10":1,could:[1,5],ask:1,keep:[4,1,2],length:[1,3],enforc:5,outsid:1,south:[],softwar:[1,3],qualiti:2,scene:[],echo:2,exact:3,mai:[1,5],match_param:3,owner:3,licens:[1,5],mkdir:1,system:[4,5,1,3],messag:[1,2],attach:[],termin:1,"final":[4,1,2,3],low:4,udp:5,shell:1,shelf:1,models_id:1,rst:[],textfield:3,exactli:3,route_nam:3,embodi:1,roberto:3,structur:[4,5,2,3],charact:[1,3],sens:3,"782d17e":[],bet:[],py2:1,py3:1,have:[4,5,1,2,3],tabl:[1,3],need:[4,5,1,3],paramiko:5,afraid:1,min:3,which:[5,1,2,3],itsdanger:[],soap:[2,5],singl:[4,1,2,3],unless:[],ds_store:1,deploy:[],whl:1,who:3,oracl:1,deploi:[],pyc:1,segment:3,why:[],dens:4,request:[],wtform:[],face:3,pipe:3,determin:[1,2,3],fact:[2,3],tolkien:[],text:[1,3],bring:3,rough:1,trivial:[],identityset:1,locat:[1,3],should:[4,1,2,3],suppos:5,"__tablename__":1,local:[1,3],hope:5,move:[1,2],pull:1,familiar:4,pypi:1,increas:5,smash:[5,3],pastedeploi:1,enabl:4,organ:5,"0x10e7d6b90":3,stuff:3,integr:4,contain:[1,2,3],attribut:[1,3],view:[],dbsession:[1,3],perdido:[],knowledg:[4,1,5],packet:5,closer:1,statu:1,wire:3,correctli:3,pattern:[5,1,2,3],tend:1,favor:[],written:[5,2,3],progress:[4,2],neither:5,email:1,kei:[1,3],job:[1,3],entir:1,jog:4,addit:[],admin:2,trove:2,wsgiref:5,configpars:1,etc:[1,3],instanc:1,comment:3,typifi:1,this_id:3,arriv:3,walk:2,solv:[],tuesdai:4,quit:[5,1,2,3],divid:1,addition:1,compon:[],json:[5,2,3],rpclib:5,eloqu:[],treasur:2,bulk:1,untrack:1,togeth:[1,2,3],present:[],ingredi:1,plain:[1,3],cursor:[],defin:[5,1,3],wild:2,dbapi2:1,endblock:3,layer:[1,5],ripe:2,demo:3,site:[1,2,3],inform:[4,5,1,2,3],cherrypi:[],lightweight:5,incom:3,pyramid_chameleon:[1,3],undecid:[],welcom:1,began:[],handl:[5,1,3],demoenv:1,http:[],context:[],absorb:1,effect:[],student:[4,2],decoupl:[],markupsaf:[],off:[5,1,3],center:[],well:[4,1,5],exampl:[4,1,2,3],command:[4,1,3],filesystem:[2,3],undefin:3,latest:5,svn:3,tcp:[],emtpi:1,web:[],jinja:[],nullabl:3,add:[],book:3,logger:1,homework:[],rdbm:[],xmlrpc:[2,5],agnost:3,piec:3,arguabl:2,know:[4,5,1,3],password:3,recurs:[],python2:1,insert:[],like:[5,1,2,3],lose:1,page:[4,5,1,3],drop:3,captur:[1,3],proper:3,home:[1,3],librari:[4,5,1,2,3],guid:5,lead:[2,3],interfaceerror:[],broad:4,leav:[1,3],blog_view:3,investig:[2,3],journal:[1,2,3],usag:[4,1],facilit:5,host:1,although:[1,3],about:[],actual:[1,3],socket:[],column:1,datagram:5,includ:[4,1,3],own:[1,2,3],easy_instal:1,automat:[1,3],pcreat:[1,3],merg:[],val:[1,3],transfer:5,appl:1,add_url_rul:[],xerox:1,gain:[4,1,2],inlin:1,count:1,made:[5,1,3],view_config:3,wish:[1,5],googlecod:3,displai:3,troubl:5,below:[],problem:[],evalu:[],"int":1,dure:2,pid:3,ini:[1,3],pip:1,duru:1,probabl:3,detail:[],virtual:1,other:[4,5,1,2,3],lookup:3,rememb:[1,3],mxodbc:[],databaseinterfac:[],syllabu:1,xmlrpclib:2,models_nam:1,portion:3,htmlparser:2},objtypes:{},objnames:{},filenames:["presentations/index","presentations/session01","outline","presentations/session02","index","readings"],titles:["Course Presentations","Session 01","Course Outline","Session 02","Internet Programming with Python","Course Readings"],objects:{},titleterms:{wsgi:[2,5],protocol:[2,5],queri:[],tcp:[2,5],session:[5,1,2,3],sqla:1,dynam:[],web:[1,2,5],tire:[],flask:[],oooop:[],transact:[],activ:1,state:[],environment:[],add:3,program:4,present:[0,3],persist:[2,5],input:3,kick:[],applic:[1,2,5],rollback:[],get:3,python:[4,1],safe:[],framework:[],jinja2:3,homework:[1,3],now:[],requir:4,introduct:1,insert:[],edit:3,parameter:[],revers:[],revert:[],authent:[2,5],"try":[],slide:[],quick:[],prepar:[2,3],view:[5,2,3],set:[],old:[],"static":3,result:[],respons:3,our:[1,3],out:[],virtualenv:1,separ:1,what:4,forcibl:[],databas:1,introspect:[],enough:[],internet:4,"new":[],refer:[4,2],cgi:[2,5],run:[],extend:2,gener:[],debug:[],step:[],orm:1,dictionari:[],valu:[],addit:[],search:4,socket:[2,5],filter:[],tutori:[],context:[],action:[],fix:[],first:[1,3],prerequisit:4,render:[5,2,3],overview:4,app:[],deploi:2,terminolog:1,walkthrough:[],api:[2,5],instal:1,your:3,git:[],interact:[1,3],three:1,todai:[],"class":4,compon:1,start:1,much:[],master:[],asset:3,statement:[],basic:[2,3],forward:[],popul:[],schema:[],fork:[],populatedb:[],sqlite3:[],form:[2,5],about:1,sqlalchemi:1,virtuelenv:1,congratul:[],word:1,setup:[],outlin:2,project:1,can:[],problem:[],more:[],expect:4,control:3,"function":[],pyramid:[5,1,2,3],virtualenvwrapp:[],creat:1,deactiv:1,flow:[],templat:3,packag:1,intro:[],mvc:[5,1,2,3],work:1,check:[],again:[],decor:[],cours:[0,2,5],develop:[],goal:[],make:3,detail:[],note:[],preserv:[],html:[],read:5,branch:[],test:[],verifi:[],concern:1,simpl:[],updat:[],express:[],http:3,thi:4,deploy:[5,2,3],object:[],rout:3,user:3,sql:[],data:[5,2,3],why:1,practic:[],url:[],entri:[],request:3,wtform:3,rule:[],django:[2,5],part:3,clean:1,far:[],model:[1,3],sesstion:[2,5],mashup:[2,5]}})
    \ No newline at end of file
    +Search.setIndex({envversion:42,terms:{interchang:2,prefix:1,ronach:6,httpexcept:4,af_rout:1,stub:[],aug:2,sorri:2,ipproto_raw:1,crisew:1,authorid:[],concret:2,under:[],dest_dir:2,spec:6,digit:4,everi:2,rise:[],adodbapi:[],govern:[5,3],herbert:4,imaplib:3,"544kb":[],direct:2,batch:2,enjoi:[],second:[1,2,4],street:[],nthi:4,even:[2,3,6],list_of_tcp_and_udp_port_numb:1,"new":[],ever:6,metadata:2,ipproto_tcp:1,behavior:[1,2,4],createdb:[],show_profil:[],here:[1,6,2,5,4],china:[],path:[2,4],interpret:[1,2,4],credit:2,studi:6,portabl:5,golden:4,wikimedia:[2,4],total:[],unit:[],highli:5,describ:1,would:[2,4],hellstrom:[],call:[1,6,2,4],typo:2,recommend:[],type:3,tell:[1,2],"5fb97f3":[],panach:4,notic:[1,2,4],phone:4,moin:[],unpack:2,must:[1,2,5,4],af_unix:1,word:[],flaskenv:[],restor:2,worth:[2,4],conceptu:4,root:[],repoz:2,give:[1,2,5],smtp:[1,6],want:[5,6,2,4],end:[1,6,5,3,4],learning_journ:[2,4],book_insert:[],concis:3,conn:1,env:2,answer:[1,4],verifi:[],perspect:6,anon_1:2,after:[2,4],superus:2,diagram:2,befor:[1,2,3,4],wrong:2,parallel:6,demonstr:[2,3],attempt:1,classmethod:[2,4],ipproto_icmp:1,imposs:2,perform:[2,4],scoped_sess:2,dispar:3,environ:[5,2,3],enter:4,lambda:4,engine_from_config:[2,4],order:[5,2,3,4],oper:[1,5,4],feedback:[],over:[1,6,2,3,4],fam:1,becaus:[2,4],privileg:2,flexibl:2,vari:1,digest:6,fit:[],fix:[],toolbelt:4,comprehend:6,better:[1,2,6],complex:[2,3],comprehens:6,howdi:4,easier:[6,2,4],them:[1,2,3,5,4],thei:[1,2,3,5,4,6],"break":[],sqlite3:[],jinja2:[],initializedb:2,choic:[1,6,2,3,5],each:[0,2,3,5,1],went:4,side:[],bone:4,mean:[1,2,3,4],laboratori:5,doug:3,logo:4,ooop:[],extract:[3,6],network:[1,6,5,3,4],goe:[2,4],god:2,newli:[],content:4,rewrit:[],got:[2,4],navig:5,nightmar:2,situat:2,free:4,standard:[1,6,2,3,5],kit:6,traceback:[],static_url:4,isn:4,confus:[1,4],"__or__":1,pristin:[],rang:[5,4],independ:2,demostr:[],hook:2,unlik:[],alreadi:[1,2,4],wrapper:1,fantast:[5,2,6],primari:[2,4],top:[2,4],"0x1103e38d0":2,sometim:2,too:[1,6,2,4],tom:2,my_view:4,consol:2,namespac:[],tool:[1,6,2,3,5],setuptool:2,took:2,technic:[],keyword:4,provid:[1,2,3,5,4,6],tree:2,project:[],minut:[1,4],rad:1,contenti:[],ran:2,modern:[2,3],mind:6,mine:[],af_sna:1,pylon:2,increment:[],"__main__":[],seen:[1,2,4],seek:2,strength:3,latter:2,thorough:[6,4],"0x1103e3fd0":2,transmit:2,plenti:[],though:6,usernam:4,object:[],regular:2,specifi:4,bsd:1,typ:1,maria:1,tradit:4,don:[1,6,2,5,4],doc:2,metal:[],doe:[1,2,3,5,4,6],notnul:[],declar:[2,4],unchang:6,sum:4,dot:4,opposit:4,random:[],syntax:[5,6,4],radio:4,identifi:4,edit_entri:[],absolut:4,nobodi:[],layout:[6,3,4],explain:[2,6],configur:[6,2,4],kessler:6,disert:6,rich:[5,3],folder:[1,2,4],patter:4,stop:[1,2,4],report:[],bat:6,bar:[1,4],"public":4,buffsiz:1,reload:[],told:[],steal:2,respond:[],get_const:1,habit:[],disucss:3,result:[],respons:[],fail:1,hash:[],best:2,subject:[],pythoncert:[2,4],txpostgr:[],wikipedia:[1,2,6],urllib:3,mysql_length:2,figur:[1,2],score:2,outstand:4,awai:2,enlighten:6,approach:[5,2],paster:[2,4],never:[1,2],extend:[],weak:3,extens:5,html5:[3,4],protect:[],accident:1,howev:[2,4],against:4,logic:[2,4],browser:[1,2,3,4],com:[1,2,4],compromis:5,get_appset:[2,4],assur:1,trunk:4,trust:2,assum:[1,2],speak:[3,4],add_rout:[2,4],three:[],been:[2,4],interest:6,basic:[],quickli:2,life:3,setup_log:[2,4],telnet:1,ani:[1,6,2,5,4],ident:[],servic:[1,3,6],properti:1,commerci:2,pyramid:[],af_appletalk:1,tabl:[2,4],varchar:2,tediou:2,sever:6,mievil:[],receiv:3,make:[],couchdb:2,drawback:3,complet:[1,2,3,5,4,6],nic:1,hand:4,rais:1,kib:[],"548kb":2,thu:1,hypothet:2,inherit:[2,4],client:3,greatest:[],thi:[],endif:4,everyth:[5,6,2,4],left:[2,6],protocol:[],just:[1,6,2,4],via:[2,4],human:[6,4],yet:[1,2,4],languag:[5,2,3,4],previous:3,alchemi:2,easi:[6,2,4],shout:4,httpfound:4,els:[2,4],save:[2,4],gave:2,applic:[],mayb:[],leisur:6,parse_var:2,server_socket:1,apart:[6,4],specif:[1,6,2,3,4],arbitrari:[1,2],manual:2,install_requir:2,underli:[1,3,5],www:1,right:[5,6,4],deal:[1,6],nfrom:2,pain:2,successfulli:2,transmiss:[1,6],txt:[1,2],cooper:[],bottom:1,subclass:[],buffer:1,ssh2:6,exectut:2,foo:[1,4],localhost:4,core:6,jsonp:4,confer:3,repositori:[1,2,4],post:4,chapter:[2,6],postgresql:2,surround:4,commit:2,blabber:2,bound:[1,2],curios:3,down:4,creativ:[2,4],storag:2,guardia:[],"0db8":1,wai:[5,6,2,3,4],support:[5,6,2,3,4],"class":[],avail:[1,2,4],editor:[],get_address_info:1,internet_protocol_suit:1,head:[1,4],medium:1,form:[],offer:[6,2,3,4],forc:6,sqlalchemi:[],hear:1,lignt:3,"true":[1,2,4],reset:[],attr:4,strip_filt:4,maximum:1,until:[1,2],fundament:[5,3],intitalizedb:2,featur:[2,3,6],af_decnet:1,"abstract":2,proven:2,exist:[2,4],glanc:6,check:[],assembl:4,encrypt:6,mashup:[],excel:[6,4],role:4,test:[],tie:[],webob:2,roll:[],relat:[2,6],intend:[1,2,5],af_unspec:1,urllib2:3,djangocon:6,intent:5,consid:[6,2,4],longer:1,sock:1,initialize_learning_journal_db:2,ignor:[2,6],time:[],push:2,breadth:6,concept:[1,6,2,3,5],chain:[2,4],skip:2,consum:[1,3,6],focus:6,invent:2,supplement:6,skim:6,row:2,decid:[],depend:[2,3,4],graph:4,readabl:4,unpython:2,certainli:4,decis:[],sourc:[0,1,2,3,4,5,6],string:[1,6,2,4],congest:1,lru:2,kitten:2,ydood:4,brows:[3,4],level:[5,2],did:[1,2,4],dig:4,ipproto_udp:1,iter:[1,2],item:[2,4],unsupport:[],team:2,div:[],dir:1,declarative_bas:2,upper:4,slower:1,restkit:6,port:1,appear:4,repli:3,scaffold:2,beautifulsoup:[3,6],"75a8462":[],current:[1,2],rst2xml:2,deriv:3,gener:[],slow:1,address:[],along:[5,3,6],wait:1,queue:1,pysqlit:[],bob:2,commonli:1,blog_upd:[],semant:1,session1:1,extra:1,modul:[1,6,2,3,5],fake:[],marker:4,fetch_head:[],market:2,prove:[],univers:6,visit:4,todai:[],live:[1,2],criteria:2,msg:1,checkout:[],pyarmid:[],appendix:[],templat:[],obj:[2,4],behalf:4,prepar:[],focu:3,whatev:[1,4],purpos:[2,3,4],boilerpl:2,stream:[1,2],topic:[6,4],critic:6,app_factori:2,occur:1,flask_intro:[],alwai:[1,2],multipl:2,winter:5,tilt:[],charset:4,write:[1,6,2,4],anyon:4,map:1,product:[2,6],max:4,dive:[5,3],date:2,classroom:2,gethostnam:1,bookdb:[],explicit:4,produc:[1,3],tale:[],ephemer:[1,2],"switch":2,combin:[5,2,3,4],callabl:4,talk:[1,6,2,3,4],shield:3,ydwoh:4,brain:[],populate_db:[],gitignor:2,still:[2,4],config_uri:[2,4],group:[1,2],how:[1,2,3,5,4,6],window:2,curli:4,main:[2,4],non:[],killer:3,initi:[2,6],half:1,discuss:[1,6,2,3,4],term:[5,2],name:[1,6,2,4],config:[2,4],didn:[2,6],separ:[],magazin:[6,4],januari:5,compil:6,domain:[],"0x105849b90":4,replac:4,individu:[1,2,4],continu:[1,2,3],happen:[1,2,4],accomplish:6,profil:1,correct:[1,4],"0x1005b8b40":1,tmpl:4,earlier:2,bookid:[],argv:2,orm:[],inevet:[],org:1,"byte":1,card:1,care:[1,6],refus:1,turn:[6,2,4],place:[1,2,3,4],principl:5,think:[1,6,2,4],frequent:2,first:[],origin:[2,3,6],directli:[1,2,4],onc:[1,2,3,4],yourself:5,fast:2,open:[1,4],size:1,given:[1,2,3,5,4,6],sheet:4,bookmark:6,cx_oracl:[],eachoth:2,conveni:2,pocoo:[],repostitori:[],copi:4,artifact:2,github:[1,2,4],mostli:[1,6],domin:2,than:[1,6,2,4],matchdict:4,serv:[3,4],footer:4,were:[1,2],posit:1,conn2:[],conn1:[],seri:2,sai:2,pro:1,argument:[1,2,4],larri:2,saw:2,engin:[2,4],techniqu:[],alias:1,ipproto_:1,ideal:[],take:[1,6,2,3,4],reload_templ:2,noth:[2,4],channel:2,begin:[1,2,3,4],sure:[1,2,4],importantli:[],trace:2,normal:2,track:[],compress:[],cgitb:[],pair:[2,3,4],homepag:6,sesstion:[],icmp:1,later:[],drive:6,"8mb":2,create_al:2,show:[2,4],german:[],my_index:2,checkbox:4,dflt_valu:[],ground:5,xml:[2,4],onli:[2,4],explicitli:2,activ:[],getattr:1,dict:[1,2],startswith:1,"8873ba1":[],variou:[2,3,4],get:[],clang:2,cannot:[1,4],ssh:1,utf:4,requir:[],where:[1,2,4],wiki:1,n10:4,reserv:1,test_request_context:[],review:[1,2,4],label:4,behind:[2,6],between:[1,2,3,5],"import":[1,2,4],across:[1,3,5],pretti:2,parent:2,elladan:1,cycl:[2,4],come:[2,4],tutori:[],wherin:2,mani:[1,6,2,4],among:[1,2,3,4],unittest:3,dispatch:6,coupl:[1,2],zpt:[],evangelista:[2,4],workshop:5,avian:1,emphas:5,docxmlrpcserv:3,repres:[2,4],those:2,"case":[6,2,4],cast:2,outcom:2,python_web:[2,4],advantag:2,stdout:[1,2],canon:1,worri:1,destin:[],smalltalk:2,author:[],cc0:[2,4],same:[1,6,2,3,4],pai:[],eventu:2,week:[1,2,3,5,4,6],finish:[],assist:2,driven:4,improv:2,extern:6,appropri:[1,3,4],choos:[1,2,5,4],macro:[],without:[1,2,4],promis:1,model:[],execut:[1,6,2,5],when:[1,6,2,4],rest:[2,3,6],kill:2,aspect:[2,4],monei:[],heffalump:1,versu:5,except:[1,2],littl:4,apache2:6,identif:[],exercis:[5,3],real:[1,3,4],tranmiss:1,around:[1,6,4],read:[],makin:4,dark:[],world:[6,2,3,4],socket_tool:1,integ:[1,2],server:3,benefit:[1,3],either:4,cascad:4,output:1,manag:[1,2],alan:[2,4],b60ea2bb7052a5bd300772d7d9d40b19b27f7a1b:[],ipproto_ip:1,definit:4,exit:2,notabl:[],refer:[],af_inet6:1,power:[1,6,2,3,4],fulli:[],regexp:4,comparison:6,central:2,acl:[],microframework:2,stand:[2,4],mytempl:[2,4],effici:5,console_script:2,interleav:[],strip:4,foreward:[],igmp:1,hew:[],buffer_s:1,httpnotfound:4,aren:2,start:[],interfac:[1,2,3,6],ipv4:[1,6],lot:[6,2,4],ipv6:[1,6],"0x10b075ed0":2,machin:3,hei:1,index_pag:4,bottl:[],tupl:1,client_address:1,freddi:4,notat:4,dirti:2,possibl:[1,6,4],"default":[1,2,4],expect:[],gone:2,creat:[],certain:[1,2],deep:6,intro:[],file:[1,2,3,5,4],fill:4,models_valu:2,googl:[1,2],compel:2,field:[2,4],valid:4,copiou:6,pathnam:1,you:3,juic:4,symbol:[1,4],briefli:4,transceiv:1,pool:6,reduc:2,wife:6,directori:[2,3,4],descript:[1,2],scroll:[],alright:[],represent:[1,2],all:3,skeleton:[1,2],scalar:2,abil:2,follow:[1,6,2,3,4],af_inet:1,articl:[2,4],init:2,program:[],introduc:[5,2,3,4],liter:2,straightforward:[],chameleon:4,fals:1,mcdonough:6,util:[],fall:2,veri:[1,6,2,3,4],egg_info:2,list:[5,6,2,4],last_nam:4,adjust:2,small:[],sync:3,past:2,design:[1,2,3,5,4,6],pass:[1,6,2,3,4],further:[],pyodbc:[],what:[],sud:6,section:[6,2,4],abl:[2,4],brief:[3,6],delet:5,version:[5,2,3],primary_kei:2,intersect:4,deepli:5,method:[],contrast:5,full:[5,2,3],themselv:[],berkelei:6,inher:3,strong:4,valu:[],interpr:2,ahead:[1,4],pick:4,add_static_view:[2,4],elsewher:1,deprec:2,href:4,greenwitch:[],establish:1,select:[5,2],regist:1,two:[1,6,2,4],more:[],flat:[],flaw:4,mozilla:[6,4],flag:1,particular:[6,2,4],known:1,cach:2,none:[1,2,4],endpoint:1,hour:[1,3,4],outlin:[],dev:[],histori:[],venusian:2,remain:6,learn:[1,2,3,5,4,6],abandon:[],rst2html:2,def:[1,2,4],ndate:1,prompt:[1,2,3],scan:[2,4],share:[1,2,4],accept:[],explor:[1,2,3,5],phrase:[2,4],scar:[],cours:[],mai:[1,2,6],first_nam:4,secur:[6,4],anoth:[1,2,3,4],comfort:[5,4],"__init__":[2,4],csv:[2,4],simpl:[],css:[6,4],"545kb":2,resourc:[1,6,4],referenc:4,okai:2,associ:3,"short":6,susan:[],proto:1,django:[],caus:2,hobbit:[],egg:2,translationstr:2,constitu:4,help:[1,2,3,5,4,6],mainthread:2,hypertext:6,soon:[1,4],through:[5,6,2,3,4],paramet:[],style:[2,4],psycopg2:2,relev:2,pserv:4,might:[1,6,2,4],alter:[],pce:[5,4],good:[5,2,3,6],"return":[1,2,4],pollut:2,cew:2,framework:[],gethostbynam:1,msg_part:1,httplib:3,document:[0,1,2,3,4,5,6],instruct:[1,2,6],authent:[],easili:[6,2,4],achiev:[],compris:2,found:[2,4],unicod:[2,4],reconcil:[],hard:[2,3],idea:[1,2,3],realli:[1,6,4],connect:[],blog_creat:[],thing:[6,2,4],orient:2,hostnam:1,ftp:1,publish:[2,6],research:2,bubbl:4,print:[1,2,4],url_map:[],uwpc:[2,4],uncommit:2,new_model:2,dune:[],reason:4,base:[5,2],put:[],recv:1,thread:[],by_id:[2,4],perhap:4,perman:2,assign:[1,2,3,5,4],feel:4,number:[1,6,2,4],placehold:4,done:[1,2,4],least:[2,4],stdlib:[],miss:2,differ:[1,2,3,4],superpow:[],script:[1,6,2,3,4],interact:[],construct:[],getservbyport:1,station:[],order_bi:2,statement:[],zeromq:6,scheme:[],store:2,luckili:[2,4],parc:2,option:[1,2,6],relationship:[1,3],echo_socket:1,part:[],pars:[2,6],fred:2,king:[],kind:[1,4],grew:[],remot:[1,2,6],remov:[1,2],reus:[],str:2,consumpt:[3,6],comput:3,"_socketobject":1,packag:[],properli:4,imagin:4,built:[6,2,3,4],lib:2,carlo:[],also:[1,2,3,5,4,6],folk:[],textareafield:4,brace:4,distribut:2,kai:2,interpol:[],reach:1,chart:[2,4],most:[1,2,3,4],plai:[2,4],path_info:[],swiftli:[],addr:1,clear:[1,3],cover:[5,2,6],clean:[],usual:[1,2],wsgi:[],session:[],entry_point:2,fine:4,find:[1,6,2,3,4],cell:[],nosql:2,copyright:2,solut:[1,2],"172kb":2,factor:2,smtplib:3,darwin:2,hit:[],unus:2,resent:1,wrinkl:[],restart:4,rfc:6,common:[1,2,3,4],nowher:2,certif:[5,4],creator:6,overwhelm:2,"0x1103e3f50":2,af_ipx:1,see:[1,2,3,4],bare:4,sea:3,arg:2,disadvantag:[],pyrami:[],someth:[2,4],particip:5,blog_act:[],topmost:1,subscript:4,experi:3,altern:[2,6],javascript:4,isol:2,succeed:[],pymssql:[],both:[1,6,2,3,4],last:[1,2,4],context:[],load:4,simpli:[2,4],point:[1,2],instanti:2,header:4,route_url:4,param:[],mistak:2,throughout:5,blog:3,empti:[1,2,4],hellmann:3,runner:[],newcom:[],rstpep2html:2,strategi:[],versa:[],fire:[2,4],imag:4,great:[6,2,3,4],coordin:2,understand:[5,6],instructor:[],look:[1,6,2,3,4],solid:[5,6],histor:[5,6],"while":[1,2,3],executemani:[],match:[1,6,4],abov:[1,2,3],error:[1,2,4],fun:4,engl:[],readi:[1,2,4],readm:2,itself:2,zopetransactionextens:[],minim:6,belong:1,wherein:4,zope:2,conflict:2,communc:1,moment:[1,2,4],temporari:4,user:[],wherev:[],stack:3,recent:2,travers:[],task:[],find_packag:2,entri:[],spent:1,doodi:4,pickl:2,person:[1,4],expens:1,endfor:4,connnect:1,spend:[1,4],explan:[],ipc:1,make_wsgi_app:2,"__path__":2,shape:5,mysql:2,session05:[],session04:1,session06:[],session01:1,session02:4,cur:[],restructuredtext:2,global_config:[2,4],populate_obj:4,armin:6,input:[],build:[1,2,3,5,4,6],bin:[2,4],march:5,format:[3,4],big:[],intuit:[],game:4,blogcreateform:[],bit:[1,6,2,3,4],formal:2,recret:[],an_id:[],docutil:2,altough:[],manifest:[2,3],collect:[2,4],popular:3,often:[1,2,6],some:[1,2,3,5,4,6],back:[1,6,2,4],global:[],understood:1,sampl:4,ljenv:[2,4],smallish:1,cgihttpserv:6,sock_dgram:1,pep:[],per:1,larg:[],werkzeug:[],cgi:[],previou:3,viabl:2,impos:[],constraint:6,materi:[0,3,6],memori:5,"0x100563c90":1,block:[1,4],repair:[],primarili:[],ensur:[1,2],chang:[6,2,4],lesson:6,html5shiv:4,question:[2,4],stylesheet:4,submit:[],custom:3,heroku:4,prettier:4,suit:[3,6],doctyp:4,repeatedli:[1,2],pwd:2,b60ea2bb70:[],link:[],delta:[],line:[5,2,4],info:[1,2],url_for:[],consist:[],cid:[],planet:[],similar:[2,3],mymodel:[2,4],constant:1,parser:6,chao:[],doesn:[1,2,4],lectur:[5,3],titl:[2,4],ipoac:1,scrape:3,nam:1,nav:4,transport:[],nice:[3,4],llvm:2,mongodb:2,meaning:2,ago:1,vice:[],rst2latex:2,discrimin:[],depth:[5,6],came:[],hello:[6,4],oop:2,getaddrinfo:1,code:[6,2,3,4],partial:[],sqlserver:2,pymysql:[],ljshell:4,broader:[],edu:1,bathtim:4,tomayko:6,send:3,lower:[1,6,4],aris:2,sent:[1,2,4],wipe:[],tri:4,magic:4,button:4,hive:[],"try":[],race:4,particularli:4,pleas:[2,3,6],smaller:1,natur:4,uniqu:[2,4],video:6,download:[2,4],odd:4,click:4,append:2,compat:2,index:[2,4],compar:[],resembl:4,access:[5,6],len:[1,2],madelin:[],bodi:[2,4],let:[1,2,4],becom:2,sinc:[1,2,4],convert:[2,4],convers:6,technolog:1,aliv:1,typic:2,maker:4,chanc:3,appli:[3,4],gatewai:3,"__name__":[],from:[1,2,3,5,4,6],commun:3,next:[1,6,2,4],websit:[2,3,4],few:[1,2,4],usr:2,sort:[],src:4,babi:4,train:[2,4],account:4,retriev:4,scalabl:2,af_:1,thin:1,fetch:[2,4],thie:6,sqlite:2,quickstart:[],tar:2,process:[1,2,3,5,4],sudo:2,high:2,tag:4,tal:[],onlin:[1,2,3],cache_max_ag:[2,4],gcc:2,cewing_socket:1,sit:6,client_socket:1,pyramid_jinja2:4,instead:[2,4],chri:6,delai:2,attend:5,other_sess:2,"6mb":2,attent:[],philosophi:6,physic:[1,4],add_al:2,bind:[],correspond:1,element:[2,4],issu:[],chief:[],allow:[1,2,3,5,4,6],sendal:1,elif:4,insight:3,bunch:1,chosen:[],"0x10046cec0":1,rat:[],recept:1,greater:6,python:[],auto:[],spell:4,dai:[3,4],hateoa:6,httplib2:6,front:3,"8a2e":1,tilkov:6,somewher:4,anyth:2,entrycreateform:4,mode:2,nearli:2,sessionmak:[2,4],meta:4,"static":[],special:[2,4],out:[],variabl:[],influenc:[],defend:6,categori:2,rel:4,clone:[1,2,4],clarifi:2,insid:[1,2],workflow:[],frank:4,manipul:2,zodb:2,yore:4,log:[2,4],cri:4,"0x1103d9f10":2,could:[2,6],ask:[1,2],keep:[1,2,3,5],length:[2,4],enforc:6,outsid:2,south:[],softwar:[1,2,4],qualiti:3,scene:[],echo:[1,3],exact:4,getservbynam:1,match_param:4,owner:4,"long":[1,2,3],licens:[2,6],mkdir:2,system:[1,6,2,5,4],messag:3,attach:[],termin:[1,2],"final":[1,2,3,5,4],low:5,udp:[1,6],shell:2,shelf:2,models_id:2,"8d3":1,rst:[],textfield:4,exactli:[1,4],route_nam:4,embodi:2,roberto:4,structur:[5,6,3,4],charact:[2,4],sens:4,"782d17e":[],bet:[],py2:2,py3:2,have:3,close:[1,4],need:[1,6,2,5,4],paramiko:6,afraid:2,min:4,which:[1,6,2,3,4],itsdanger:[],soap:[3,6],singl:[1,2,3,5,4],unless:1,ds_store:2,deploy:[],whl:2,who:4,oracl:2,deploi:[],pyc:2,segment:4,why:[],dens:5,request:[],wtform:[],face:4,pipe:4,determin:[1,2,3,4],fact:[1,3,4],tolkien:[],text:[2,4],bring:4,rough:2,trivial:[],identityset:2,locat:[1,2,4],should:[1,2,3,5,4],jan:1,suppos:6,"__tablename__":2,local:[1,2,4],hope:6,move:[1,2,3],pull:2,familiar:5,pypi:2,db8:1,increas:6,aspen:[],smash:[6,4],pastedeploi:2,enabl:5,organ:6,"0x10e7d6b90":4,stuff:4,integr:5,contain:[1,2,3,4],attribut:[2,4],view:[],dbsession:[2,4],perdido:[],knowledg:[5,2,6],packet:[1,6],closer:2,statu:2,wire:[1,4],correctli:4,pattern:[6,2,3,4],tend:2,favor:[],written:[6,3,4],progress:[5,3],neither:6,email:[1,2],sole:1,kei:[2,4],job:[2,4],entir:2,jog:5,addit:[],admin:3,trove:3,wsgiref:6,configpars:2,etc:[1,2,4],instanc:2,equat:1,comment:[1,4],typifi:2,lang:4,this_id:4,arriv:4,walk:3,solv:[],tuesdai:5,silmarillion:[],quit:[1,6,2,3,4],divid:[1,2],addition:2,compon:[],json:[6,3,4],rpclib:6,eloqu:[],immedi:1,treasur:3,sock_stream:1,bulk:2,untrack:2,togeth:3,present:[],ingredi:2,plain:[2,4],cursor:[],defin:[1,6,2,4],wild:3,dbapi2:2,endblock:4,layer:[1,2,6],ripe:3,demo:4,site:[2,3,4],inform:3,cherrypi:[],lightweight:6,incom:[],whirl:1,pyramid_chameleon:[2,4],undecid:[],welcom:2,began:[],handl:[6,2,4],demoenv:2,failur:1,http:[],unstag:2,absorb:2,effect:[],"85a3":1,student:[5,3],decoupl:[],markupsaf:[],off:[6,2,4],center:[],well:[1,6,2,5],exampl:[1,2,3,5,4],command:[5,2,4],filesystem:[3,4],undefin:4,latest:6,distanc:1,svn:4,less:1,tcp:[],emtpi:2,web:[],jinja:[],nullabl:4,add:[],book:4,logger:2,homework:[],rdbm:[],xmlrpc:[3,6],agnost:[1,4],piec:4,arguabl:3,know:[1,6,2,5,4],password:4,recurs:[],python2:2,insert:[],like:[1,6,2,3,4],success:1,echo_serv:1,lose:2,page:[5,6,2,4],backlog:1,drop:[1,4],captur:[2,4],proper:[1,4],home:[2,4],librari:[1,2,3,5,4,6],tmp:1,guid:6,gethostbyname_ex:1,lead:[3,4],interfaceerror:[],broad:5,leav:[2,4],blog_view:[],investig:[3,4],journal:[2,3,4],usag:[5,2],facilit:6,host:[1,2],although:[2,4],about:[],actual:[1,2,4],socket:[],column:2,datagram:[1,6],carrier:1,includ:[1,2,5,4],constructor:1,own:3,washington:1,easy_instal:2,automat:[1,2,4],pcreat:[2,4],merg:[],sock_:1,val:[2,4],transfer:6,appl:2,add_url_rul:[],xerox:2,gain:[5,2,3],inlin:[1,2],count:2,made:[1,6,2,4],view_config:4,wish:[2,6],googlecod:4,displai:4,troubl:6,below:1,limit:1,problem:[],evalu:[],"int":2,dure:3,pid:4,implement:[1,6,2,3,5],ini:[2,4],pip:2,duru:2,probabl:4,detail:[],virtual:2,other:[1,2,3,5,4,6],lookup:[1,4],futur:1,rememb:[1,2,4],mxodbc:[],echo_cli:1,databaseinterfac:[],syllabu:2,reliabl:1,xmlrpclib:3,models_nam:2,portion:4,htmlparser:3},objtypes:{},objnames:{},filenames:["presentations/index","presentations/session04","presentations/session01","outline","presentations/session02","index","readings"],titles:["Course Presentations","Python Web Programming","Session 01","Course Outline","Session 02","Internet Programming with Python","Course Readings"],objects:{},titleterms:{wsgi:[3,6],protocol:[1,3,6],queri:[],all:1,tcp:[1,3,6],connect:1,session:[6,2,3,4],sqla:2,skill:[],dynam:[],web:[1,2,3,6],submit:1,tire:[],flask:[],oooop:[],transact:[],activ:2,state:[],send:1,environment:[],add:4,program:[1,5],present:[0,4],persist:[3,6],input:4,kick:[],applic:[1,2,3,6],messag:1,rollback:[],get:[1,4],python:[1,2,5],safe:[],util:[],framework:[],jinja2:4,homework:[1,2,4],now:[],requir:5,introduct:2,insert:[],edit:4,parameter:[],revers:[],revert:[],authent:[3,6],server:1,"try":[],slide:[],quick:[],side:1,view:[6,3,4],respond:1,cgi:[3,6],domain:[],set:[],old:[],finish:1,"static":4,result:[],respons:4,our:[2,4],stack:1,transport:1,out:[],virtualenv:2,separ:2,what:5,forcibl:[],databas:2,introspect:[],enough:[],internet:[1,5],"new":[],method:[],refer:[5,3],machin:[],run:1,extend:3,gener:[],debug:[],step:[],orm:2,dictionari:[],address:1,put:1,valu:[],addit:[],search:5,socket:[1,3,6],filter:[],mvc:[6,2,3,4],context:[],action:[],fix:[],first:[2,4],own:[],prerequisit:5,render:[6,3,4],overview:5,app:[],deploi:3,terminolog:2,walkthrough:[],unix:[],api:[3,6],todai:[],famili:1,instal:2,your:[1,4],git:[],repli:1,prepar:[3,4],commun:1,interact:[2,4],three:2,construct:1,custom:1,compon:2,start:2,much:[],master:[],asset:4,statement:[],basic:[3,4],forward:[],popul:[],type:1,schema:[],"function":[],populatedb:[],sqlite3:[],form:[3,6],about:2,sqlalchemi:2,link:1,togeth:1,virtuelenv:2,congratul:[],word:2,setup:[],outlin:3,project:2,can:[],bind:1,problem:[],more:[],expect:5,control:4,listen:1,pyramid:[6,2,3,4],comput:1,virtualenvwrapp:[],creat:[1,2],deactiv:2,flow:1,templat:4,packag:2,intro:[],have:[],further:1,incom:1,work:2,check:[],again:[],decor:[],cours:[0,3,6],develop:[],goal:[],receiv:1,make:4,detail:[],client:1,note:[],preserv:[],html:[],read:6,branch:[],test:1,verifi:[],you:[],concern:2,simpl:[],accept:1,updat:[],fork:[],express:[],http:4,thi:5,deploy:[6,3,4],"class":5,object:[],rout:4,user:4,sql:[],data:[6,3,4],why:2,"break":1,task:1,practic:[],tutori:[],url:[],entri:[],request:4,wtform:4,rule:[],django:[3,6],inform:1,part:4,clean:[1,2],time:1,far:[],model:[2,4],sesstion:[3,6],mashup:[3,6]}})
    \ No newline at end of file
    diff --git a/slides/_sources/presentations/session02.txt b/slides/_sources/presentations/session02.txt
    index 3d1c6b8e..f141f8a8 100644
    --- a/slides/_sources/presentations/session02.txt
    +++ b/slides/_sources/presentations/session02.txt
    @@ -533,10 +533,10 @@ Next, we want to write the view for a single entry.
         .. code-block:: python
     
             # add this import at the top
    -        from pyramid.exceptions import HTTPNotFound
    +        from pyramid.httpexceptions import HTTPNotFound
     
             # and update this view function:
    -        def blog_view(request):
    +        def view(request):
                 this_id = request.matchdict.get('id', -1)
                 entry = Entry.by_id(this_id)
                 if not entry:
    @@ -950,7 +950,7 @@ show it.
         
             # views.py
             @view_config(route_name='detail', renderer='templates/detail.jinja2')
    -        def blog_view(request):
    +        def view(request):
                 # ...
     
     .. nextslide:: Try It Out
    @@ -1348,7 +1348,7 @@ Next, we need to add a new view that uses this form to create a new entry.
         .. code-block:: python
     
             # add these imports
    -        from pyramid.exceptions import HTTPFound
    +        from pyramid.httpexceptions import HTTPFound
             from .forms import EntryCreateForm
     
             # and update this view function
    diff --git a/slides/_static/custom.css b/slides/_static/custom.css
    index 44274406..f0ae2b41 100644
    --- a/slides/_static/custom.css
    +++ b/slides/_static/custom.css
    @@ -102,6 +102,10 @@ article .medium {
       font-weight: bold;
       font-size: 45px;
       line-height: 45px; }
    +article .small {
    +  font-weight: normal;
    +  font-size: 30px;
    +  line-height: 30px; }
     article .credit {
       font-size: 75%;
       text-align: left; }
    @@ -163,4 +167,8 @@ article table.docutils tr td {
       font-size: 75%;
       text-align: center;
     }
    +.figure.align-left {
    +  text-align: left;
    +  float: left;
    +}
     
    diff --git a/slides/presentations/session02.html b/slides/presentations/session02.html
    index 0489cfb9..7e9c4f81 100644
    --- a/slides/presentations/session02.html
    +++ b/slides/presentations/session02.html
    @@ -619,10 +619,10 @@ 

    Using the matchdictRemember that the matchdict is an attribute of the request.

    We'll get the id from there, and use it to get the correct entry.

    # add this import at the top
    -from pyramid.exceptions import HTTPNotFound
    +from pyramid.httpexceptions import HTTPNotFound
     
     # and update this view function:
    -def blog_view(request):
    +def view(request):
         this_id = request.matchdict.get('id', -1)
         entry = Entry.by_id(this_id)
         if not entry:
    @@ -1079,7 +1079,7 @@ 

    Detail Template

    Then wire it up to the detail view in views.py:

    # views.py
     @view_config(route_name='detail', renderer='templates/detail.jinja2')
    -def blog_view(request):
    +def view(request):
         # ...
     
    @@ -1523,7 +1523,7 @@

    Using a Form in a View

    Add this to views.py:

    # add these imports
    -from pyramid.exceptions import HTTPFound
    +from pyramid.httpexceptions import HTTPFound
     from .forms import EntryCreateForm
     
     # and update this view function
    diff --git a/slides/searchindex.js b/slides/searchindex.js
    index 69c0675a..43f90b0c 100644
    --- a/slides/searchindex.js
    +++ b/slides/searchindex.js
    @@ -1 +1 @@
    -Search.setIndex({envversion:42,terms:{represent:1,all:[],concept:1,skeleton:1,whatev:4,queri:[],jsonp:4,sqlserver:1,invent:1,interchang:1,scalar:1,code:[],abil:1,follow:[1,4],"16x16":[],row:1,stub:[],depend:[1,4],wish:1,aug:1,bathtim:4,graph:4,sorri:1,readabl:4,send:[1,4],unpython:1,init:1,concret:1,skip:1,dest_dir:1,aris:1,worth:[1,4],introduc:[1,4],exectut:1,digit:4,sourc:[1,4],everi:1,string:[],chameleon:4,far:1,role:4,account:4,util:1,lru:1,fall:1,veri:[1,4],ydood:4,syntax:4,brows:4,relev:1,tri:4,foo:4,magic:4,went:4,succeed:[],level:1,did:[1,4],egg_info:1,restor:1,list:[],last_nam:4,herbert:4,"try":[],item:[1,4],adjust:1,team:1,particularli:4,pleas:1,upper:4,charset:4,tmpl:4,natur:4,direct:1,commerci:1,past:1,second:[1,4],design:[],pass:[1,4],download:[1,4],further:4,nthi:4,odd:4,click:4,append:1,compat:1,index:[1,4],what:[],uncommit:1,venusian:1,resembl:4,section:[1,4],abl:[1,4],identityset:1,current:1,rst2xml:1,version:1,primary_kei:1,intersect:4,"new":[],method:[],metadata:1,full:1,abov:1,gener:[1,4],never:1,here:[1,4],bodi:[1,4],let:[1,4],free:4,address:4,path:[],becom:1,sinc:[1,4],interpret:[1,4],great:[1,4],didn:1,convers:[],ahead:4,credit:1,base:[],pick:[],action:[1,4],bob:1,apart:4,explain:1,add_static_view:[1,4],live:1,via:[1,4],repositori:[1,4],wikimedia:[1,4],app:[],ask:1,api:[],marker:4,instal:[],txt:1,market:1,kei:[1,4],from:[1,4],stream:1,would:[1,4],prove:[],give:1,visit:4,two:[1,4],todai:4,next:[1,4],websit:[1,4],few:[1,4],stylesheet:4,call:[1,4],usr:1,typo:1,criteria:1,taken:[],"172kb":1,strip_filt:4,tell:1,more:[],flaw:4,exit:1,pyarmid:[],babi:4,relat:1,panach:4,notic:[1,4],phone:4,train:[1,4],oop:1,particular:[1,4],postgresql:1,mozilla:4,unpack:1,cach:1,behalf:4,must:[1,4],topic:4,none:[1,4],retriev:4,sometim:1,hour:4,scalabl:1,prepar:[],work:[],uniqu:[1,4],conceptu:4,can:[1,4],learn:[1,4],purpos:[1,4],rst2html:1,fetch:[1,4],def:[1,4],boilerpl:1,control:[],sqlite:1,repoz:1,prompt:1,want:[1,4],tar:1,scan:[1,4],process:[1,4],sudo:1,share:[],accept:[1,4],high:1,tag:4,app_factori:1,explor:1,phrase:[1,4],onlin:1,articl:[1,4],yet:[1,4],unus:1,cache_max_ag:[1,4],other_sess:1,gcc:1,multipl:1,goal:1,first_nam:4,secur:4,anoth:[1,4],comfort:4,length:[1,4],pyramid_jinja2:4,write:[1,4],how:[1,4],anyon:4,"__init__":[1,4],env:1,answer:4,instead:[1,4],csv:[1,4],simpl:[1,4],css:4,updat:[1,4],anon_1:1,delai:1,"545kb":1,resourc:4,referenc:4,alwai:1,max:4,clone:[1,4],earlier:1,"6mb":1,decor:4,superus:1,diagram:1,befor:[1,4],wrong:1,okai:1,mai:1,end:4,data:[],demonstr:1,classroom:1,"short":[],domin:1,add_al:1,footer:4,classmethod:[1,4],bind:[1,4],divid:1,explicit:4,element:[1,4],caus:1,inform:[1,4],scoped_sess:1,easy_instal:1,environ:[],allow:[1,4],enter:4,callabl:4,engine_from_config:[1,4],order:[1,4],talk:[1,4],origin:1,elif:4,checkbox:4,help:[1,4],mainthread:1,over:[1,4],move:1,becaus:[1,4],ydwoh:4,privileg:1,gitignor:1,flexibl:1,dynam:4,style:[],config_uri:[1,4],group:1,directli:[1,4],psycopg2:1,fix:[1,4],toolbelt:4,better:1,pserv:4,window:1,html:4,requir:[1,4],curli:4,howdi:4,main:[1,4],might:[1,4],easier:[1,4],pce:4,count:1,them:[1,4],good:1,"return":[],thei:[1,4],handl:[1,4],demoenv:1,pollut:1,safe:1,dai:4,initi:1,bound:1,"break":[],framework:[1,4],sessionmak:[1,4],verifi:4,initializedb:1,now:[1,4],discuss:[1,4],choic:1,term:1,document:[0,1,2,3,4,5],somewher:4,name:[1,4],anyth:1,edit:[],config:[1,4],drop:4,match_param:4,separ:[],easili:[1,4],slide:[0,5,2,3],exampl:[],mode:1,compris:1,each:1,debug:1,found:[1,4],unicod:[1,4],button:4,bone:4,mean:[1,4],domain:[1,4],dig:4,"0x105849b90":4,replac:4,individu:[1,4],hard:1,idea:1,realli:4,meta:4,"static":[],connect:[],blog_creat:[],our:[],happen:[],orient:1,special:[1,4],out:[],network:4,goe:[1,4],god:1,publish:1,research:1,categori:1,race:4,rel:4,print:[1,4],got:[1,4],correct:4,uwpc:[1,4],clarifi:1,after:[1,4],insid:1,written:4,frank:4,nightmar:1,manipul:1,situat:1,given:[1,4],argv:1,standard:1,thi:[0,1,2,3,4,5],reason:4,orm:[],put:[1,4],yore:4,log:[1,4],blog_view:4,nowher:1,wai:[1,4],"0x1103d9f10":1,steal:1,could:1,by_id:[1,4],static_url:4,keep:1,filter:[],thing:[1,4],perhap:4,mvc:[],place:[1,4],isn:4,outsid:1,enough:1,confus:4,imposs:1,frequent:1,lambda:4,oper:4,softwar:[1,4],rang:4,render:[],feel:4,onc:[1,4],independ:1,number:[1,4],placehold:4,exact:4,hook:1,instruct:1,alreadi:[1,4],done:[1,4],least:[1,4],owner:4,fantast:1,primari:[1,4],differ:[1,4],sheet:4,script:[],top:[1,4],mkdir:1,system:[],messag:1,too:[1,4],statement:1,tom:1,termin:1,conveni:1,"final":[1,4],store:1,prettier:4,luckili:[1,4],shell:1,parc:1,option:1,shelf:1,tool:1,copi:4,setuptool:1,took:1,artifact:1,models_id:1,part:[],pars:1,my_view:4,textfield:4,exactli:4,than:[1,4],png:[],route_nam:4,serv:4,liter:1,keyword:4,provid:[],remov:1,tree:1,charact:[1,4],project:[],certainli:4,sens:4,str:1,were:1,kitten:1,other:[1,4],browser:[1,4],sai:1,ran:1,well:1,py2:1,py3:1,ani:[1,4],packag:[],doctyp:4,pylon:1,increment:[],tabl:[],need:[1,4],seen:[1,4],larri:1,django:1,seek:1,imagin:4,afraid:1,date:1,built:[1,4],lib:1,min:4,rout:[],offer:[1,4],"switch":1,thorough:4,note:[1,4],also:[1,4],"0x1103e3fd0":1,without:[1,4],take:[1,4],which:[1,4],textareafield:4,transmit:1,combin:[1,4],reload_templ:1,noth:[1,4],channel:1,even:1,begin:[1,4],sure:[1,4],pain:1,distribut:1,trace:1,normal:1,usernam:4,kai:1,object:[],oracl:1,chart:[1,4],fred:1,most:[1,4],plai:[1,4],regular:1,alan:[1,4],deploi:4,pair:[1,4],pyc:1,segment:4,why:[],appear:4,tradit:4,don:[1,4],correctli:4,filesystem:4,url:[],egg:1,mymodel:[1,4],cover:1,"8mb":1,doe:[],pipe:4,declar:[1,4],create_al:1,determin:[1,4],uw_pc:[],left:1,sum:4,fact:4,wsgi:1,think:[1,4],show:[1,4],opposit:4,sent:[1,4],my_index:1,bring:4,constitu:4,radio:4,identifi:4,rough:1,tend:1,fine:4,find:[1,4],edit_entri:[],xml:[1,4],absolut:4,onli:[1,4],explicitli:1,locat:[1,4],nosql:1,pretti:1,transact:1,configur:[],solut:1,behind:1,should:[1,4],theme:[],dict:1,matchdict:[],factor:1,"__tablename__":1,folder:[1,4],darwin:1,local:[1,4],blog_upd:[],nearli:1,patter:4,pull:1,convert:[1,4],declarative_bas:1,pypi:1,kind:4,clang:1,soon:4,cannot:4,make_wsgi_app:1,awai:1,restart:4,dirti:1,intitalizedb:1,smash:4,bar:4,possibl:4,probabl:4,"0x10e7d6b90":4,"public":4,embodi:1,stuff:4,common:[1,4],contain:[0,1,2,3,4,5],through:[1,4],cri:4,where:[1,4],view:[],respond:4,certif:4,n10:4,set:[1,4],figur:1,aspect:[1,4],overwhelm:1,roberto:4,knowledg:1,"0x1103e3f50":1,rollback:1,compel:1,see:[1,4],bare:4,result:[1,4],respons:[],close:4,best:1,concern:[],closer:1,statu:1,still:[1,4],eachoth:1,pyrami:[],down:4,databas:[],someth:[1,4],wikipedia:1,blog_act:[],label:4,state:1,score:1,outstand:4,emtpi:1,between:1,"import":[1,4],subscript:4,pastedeploi:1,approach:1,email:1,attribut:[1,4],docutil:1,extend:4,javascript:4,isol:1,cycl:[1,4],job:[1,4],entir:1,len:1,learning_journ:[1,4],nav:4,come:[1,4],minut:4,addit:4,both:[1,4],revers:4,svn:4,extens:[],howev:[1,4],against:4,configpars:1,etc:[1,4],instanc:1,new_model:1,wherin:1,mani:[1,4],seri:1,com:[1,4],html5:4,comment:4,among:[1,4],get_appset:[1,4],simpli:[1,4],lang:4,session:[],point:1,instanti:1,this_id:4,makin:4,header:4,route_url:4,right:4,mistak:1,trust:1,assign:[1,4],speak:4,quit:[1,4],strong:4,coupl:1,addition:1,add_rout:[1,4],shout:4,empti:[1,4],github:[1,4],json:4,much:[],valu:[],basic:[],rstpep2html:1,bubbl:4,quickli:1,modern:1,fire:[1,4],imag:4,search:4,argument:[1,4],bulk:1,coordin:1,togeth:[1,4],turn:[1,4],those:1,"case":[1,4],ingredi:1,look:[1,4],plain:[1,4],properti:[],batch:1,tutori:4,defin:[],"while":1,outcom:[],behavior:[1,4],error:[1,4],fun:4,exist:[1,4],dbapi2:1,endblock:4,python_web:[1,4],real:4,layer:1,pyramid:[],have:[],advantag:1,stdout:1,readi:[1,4],ephemer:1,readm:1,site:[1,4],worri:[],physic:4,itself:1,zodb:1,incom:4,tediou:1,smalltalk:1,parent:1,pyramid_chameleon:[1,4],develop:[1,4],welcom:1,open:4,perform:[1,4],saw:1,make:[],couchdb:1,cc0:[1,4],same:[1,4],wherein:4,complex:1,rst2latex:1,zope:1,eventu:1,conflict:1,complet:[],week:[1,4],finish:[1,4],http:[],unstag:1,href:4,absorb:1,logic:[1,4],dbsession:[1,4],hand:4,driven:4,remot:1,moment:[1,4],temporari:4,user:[],improv:1,engin:[1,4],typic:1,recent:1,cew:1,lower:4,appropri:4,off:[1,4],els:[1,4],"548kb":1,find_packag:1,entri:[],miss:1,translationstr:1,hypothet:1,inherit:[1,4],non:[],pickl:1,person:4,client:[1,4],command:[1,4],endfor:4,endif:4,undefin:4,everyth:[1,4],spend:4,usual:1,load:4,construct:[1,4],protocol:[1,4],fast:1,just:[1,4],typifi:1,excel:4,rest:1,product:1,"__path__":1,kill:1,human:4,mysql:1,mysql_length:1,languag:[1,4],session02:4,web:[],alchemi:1,jinja:[],easi:[1,4],singl:[1,4],doesn:[1,4],nullabl:4,restructuredtext:1,golden:4,except:[1,4],littl:4,global_config:[1,4],blog:[],add:[],valid:4,httpfound:4,appli:4,input:[],logger:1,formal:1,modul:1,homework:[],gave:1,bin:[1,4],applic:[],varchar:1,around:4,format:4,preserv:1,agnost:4,piec:4,arriv:4,game:4,blogcreateform:[],know:[1,4],world:[1,4],bit:[],password:4,licens:1,python2:1,an_id:[],like:[1,4],specif:[1,4],deprec:1,request:[],brace:4,arbitrari:1,manual:1,integ:1,manifest:1,collect:[1,4],maker:4,either:4,lose:1,install_requir:1,juic:4,page:[],interpr:1,old:1,often:1,captur:[1,4],interact:[],some:[1,4],back:[1,4],nfrom:1,sampl:4,proper:4,home:[1,4],ljenv:[1,4],server:[1,4],variou:[1,4],librari:[1,4],ds_store:1,lead:4,assum:1,definit:4,magazin:4,subclass:[],cast:1,whl:1,leav:[1,4],select:1,content:4,localhost:4,refer:[1,4],cgi:[],freddi:4,investig:4,run:[1,4],power:[1,4],journal:[1,4],cascad:4,usag:1,confer:[],viabl:1,who:4,host:1,parse_var:1,although:[1,4],regexp:4,post:4,task:4,chapter:1,src:4,about:[],obj:[1,4],socket:[],column:[],briefli:4,surround:4,manag:1,microframework:1,stand:[1,4],commit:[],mytempl:[1,4],blabber:1,block:[],match:[],wire:4,arg:1,own:[1,4],console_script:1,automat:[1,4],latter:1,stop:[1,4],creativ:[1,4],model:[],been:[1,4],strip:4,ensur:1,chang:[],storag:1,html5shiv:4,hew:[],fill:4,httpnotfound:4,val:[1,4],aren:1,homepag:[],execut:1,support:[1,4],question:[1,4],evangelista:[1,4],"long":1,review:[1,4],avail:[1,4],start:[],heroku:4,appl:1,interfac:1,includ:[1,4],lot:[1,4],"0x10b075ed0":1,machin:[1,4],"function":[1,4],index_pag:4,head:4,properli:4,repeatedli:1,form:[],"0x1103e38d0":1,xerox:1,continu:1,pwd:1,sqlalchemi:[],link:[1,4],gain:1,populate_obj:4,line:[1,4],inlin:1,"true":[1,4],info:1,notat:4,made:[1,4],utf:4,attr:4,view_config:4,"default":[1,4],type:[1,4],googlecod:4,displai:4,until:1,pcreat:[1,4],doc:1,problem:1,similar:1,expect:[1,4],gone:1,featur:1,creat:[],"int":1,certain:1,"abstract":1,trunk:4,pid:4,paster:[1,4],proven:1,repres:[1,4],intro:[],implement:1,ini:[1,4],file:[],logo:4,pip:1,doodi:4,duru:1,face:4,central:1,check:1,pythoncert:[1,4],assembl:4,again:[1,4],spell:4,successfulli:1,models_valu:1,googl:1,discrimin:[],titl:[1,4],mashup:[],when:[1,4],detail:[],virtual:1,field:[1,4],build:[1,4],book:4,lookup:4,copyright:1,rememb:[1,4],zopetransactionextens:[],test:[],you:[],webob:1,nice:4,llvm:1,intend:1,assist:1,actual:[1,4],mongodb:1,symbol:4,setup_log:[1,4],"class":[1,4],meaning:1,track:[],consid:[1,4],reduc:1,entrycreateform:4,receiv:4,untrack:1,directori:[1,4],syllabu:1,initialize_learning_journal_db:[],descript:1,rule:1,specifi:4,models_nam:1,portion:4,text:[1,4],dot:4,push:1,hello:4,entry_point:1,sqlite3:1},objtypes:{},objnames:{},filenames:["presentations/index","presentations/session01","outline","index","presentations/session02","readings"],titles:["Course Presentations","Session 01","Course Outline","Internet Programming with Python","Session 02","Course Readings"],objects:{},titleterms:{all:1,code:1,chain:1,queri:1,ljshell:4,sqla:1,web:1,style:4,layout:4,flask:[],configur:[1,4],activ:1,environment:[],add:[1,4],program:3,present:[0,4],persist:1,input:4,save:1,mvc:[1,4],alter:1,match:4,deactiv:1,"return":1,string:4,get:[1,4],python:[3,1],express:4,"break":1,jinja2:4,bit:1,introduct:1,edit:4,list:4,iter:1,"try":4,session:[1,4],quick:[],side:1,view:4,outlin:2,request:4,design:[],connect:4,respons:4,our:[1,4],happen:1,concern:1,virtualenv:1,separ:1,what:[1,4],databas:1,scaffold:[],stub:4,internet:3,"new":1,method:1,altern:1,step:[],orm:1,dictionari:4,path:4,valu:4,about:1,last:1,column:1,page:4,filter:4,base:1,perman:1,context:4,pick:4,commit:1,chang:[1,4],block:4,first:[1,4],render:4,app:1,terminolog:1,system:[1,4],walkthrough:[],api:4,instal:[1,4],your:[1,4],git:[],script:[1,4],interact:[1,4],three:1,submit:1,compon:1,start:1,much:[],master:[],asset:4,basic:[1,4],order_bi:1,homework:[1,4],more:1,fork:[],consol:1,form:4,part:4,virtuelenv:1,matchdict:4,word:1,provid:4,setup:1,work:1,structur:[1,4],project:1,defin:4,outcom:4,"static":4,control:4,pyramid:[1,4],file:1,creat:1,applic:1,demo:4,share:4,templat:4,packag:1,have:1,tabl:1,cours:[0,2,5],irrelev:1,advic:1,make:[1,4],detail:4,access:4,read:5,cleanup:1,branch:[],test:4,environ:1,you:1,out:4,prepar:4,complet:4,map:[],http:4,deploy:4,object:[1,4],sqlalchemi:1,effect:1,pattern:[],user:4,sql:1,data:4,why:1,choos:1,url:4,entri:[],initialize_learning_journal_db:1,flow:4,wtform:4,doe:4,exampl:4,ignor:1,clean:1,time:1,model:[1,4],rout:4}})
    \ No newline at end of file
    +Search.setIndex({envversion:42,terms:{represent:[1,2],all:[],concept:[1,2],skeleton:[1,2],maximum:1,queri:[],jsonp:4,sqlserver:2,getaddrinfo:1,invent:2,interchang:2,scalar:2,code:[],subclass:[],abil:2,edu:1,follow:[1,2,4],"16x16":[],internet_protocol_suit:1,row:2,stub:[],depend:[2,4],wish:2,aug:2,bathtim:4,graph:4,sorri:2,ipproto_raw:1,readabl:4,crisew:1,send:[],unpython:2,init:2,concret:2,skip:2,dest_dir:2,aris:2,been:[2,4],worth:[2,4],introduc:[2,4],exectut:2,digit:4,sourc:[1,2,4],everi:2,string:[],congest:1,chameleon:4,far:[1,2],role:4,rout:[],account:4,util:[],lru:2,fall:2,veri:[1,2,4],ydood:4,syntax:4,brows:4,relev:2,tri:4,magic:4,doesn:[1,2,4],level:2,did:[1,2,4],egg_info:2,restor:2,list:[],prefix:1,herbert:4,"try":[],item:[2,4],adjust:2,larg:[],team:2,small:[],particularli:4,servic:1,dir:1,pleas:2,upper:4,smaller:1,slower:1,tmpl:4,natur:4,among:[1,2,4],direct:2,commerci:2,past:2,second:[1,2,4],design:[],pass:[1,2,4],download:[2,4],further:[],nthi:4,odd:4,click:4,append:2,reserv:1,compat:2,index:[2,4],what:[],uncommit:2,entir:2,venusian:2,resembl:4,section:[2,4],abl:[2,4],identityset:2,current:[1,2],rst2xml:2,version:2,primary_kei:2,intersect:4,deal:1,"new":[],method:[],metadata:2,full:2,ipproto_tcp:1,abov:[1,2],usag:2,gener:[1,2,4],never:[1,2],here:[1,2,4],bodi:[2,4],slow:1,let:[1,2,4],free:4,address:[],path:[],becom:2,sinc:[1,2,4],interpret:[1,2,4],wait:1,great:[2,4],didn:2,convers:[],ahead:[1,4],"0x1005b8b40":1,technolog:1,queue:1,credit:2,base:[],aliv:1,pick:[],action:[1,2,4],bob:2,ndate:1,apart:4,explain:2,commonli:1,add_static_view:[2,4],semant:1,via:[2,4],session1:1,extra:1,wikimedia:[2,4],modul:[1,2],icmp:1,af_inet:1,ask:[1,2],prettier:4,api:[],canon:1,marker:4,instal:[],medium:1,txt:[1,2],establish:1,market:2,produc:1,kei:[2,4],from:[1,2,4],tar:2,would:[2,4],prove:[],give:[1,2],visit:4,two:[1,2,4],todai:[1,4],next:[1,2,4],websit:[2,4],few:[1,2,4],live:[1,2],call:[1,2,4],usr:2,typo:2,criteria:2,taken:[],"172kb":2,strip_filt:4,tell:[1,2],more:[],flaw:4,pyarmid:[],ipoac:1,babi:4,share:[],relat:2,panach:4,notic:[1,2,4],phone:4,flag:1,train:[2,4],oop:2,particular:[2,4],known:1,postgresql:2,mozilla:4,unpack:2,cach:2,behalf:4,must:[1,2,4],placehold:4,topic:4,none:[1,2,4],endpoint:1,retriev:4,sometim:2,hour:[1,4],scalabl:2,prepar:[],work:[],uniqu:[2,4],conceptu:4,af_:1,whatev:[1,4],learn:[1,2,4],purpos:[2,4],rst2html:2,fetch:[2,4],def:[1,2,4],boilerpl:2,control:[],sqlite:2,repoz:2,prompt:[1,2],want:[2,4],stream:[1,2],scan:[2,4],process:[1,2,4],sudo:2,smtp:1,accept:[],high:2,tag:4,app_factori:2,explor:[1,2],phrase:[2,4],onlin:[1,2],articl:[2,4],yet:[1,2,4],occur:1,unus:2,cache_max_ag:[2,4],other_sess:2,gcc:2,multipl:2,goal:2,first_nam:4,secur:4,anoth:[1,2,4],charset:4,length:[2,4],client_socket:1,pyramid_jinja2:4,write:[1,2,4],how:[1,2,4],anyon:4,"__init__":[2,4],env:2,answer:[1,4],instead:[2,4],fam:1,csv:[2,4],simpl:[1,2,4],css:4,updat:[2,4],anon_1:2,delai:2,"545kb":2,resourc:[1,4],mashup:[],referenc:4,alwai:[1,2],less:1,max:4,clone:[1,2,4],earlier:2,"6mb":2,decor:4,superus:2,diagram:2,befor:[1,2,4],wrong:2,lot:[2,4],okai:2,models_valu:2,end:[1,4],data:[],demonstr:2,welcom:2,classroom:2,"short":[],domin:2,add_al:2,footer:4,classmethod:[2,4],bind:[],divid:[1,2],explicit:4,correspond:1,element:[2,4],caus:2,inform:[],scoped_sess:2,environ:[],allow:[1,2,4],enter:4,callabl:4,engine_from_config:[2,4],order:[2,4],talk:[1,2,4],origin:2,elif:4,comfort:4,console_script:2,help:[1,2,4],mainthread:2,over:[1,2,4],move:[1,2],soon:[1,4],ydwoh:4,privileg:2,gitignor:2,flexibl:2,vari:1,dynam:4,bunch:1,style:[],config_uri:[2,4],group:[1,2],directli:[1,2,4],psycopg2:2,fix:[2,4],stylesheet:4,toolbelt:4,better:[1,2],pserv:4,window:2,html:4,requir:[1,2,4],curli:4,howdi:4,main:[2,4],might:[1,2,4],easier:[2,4],pce:4,recept:1,them:[1,2,4],good:2,"return":[],thei:[1,2,4],cewing_socket:1,handl:[2,4],demoenv:2,pollut:2,safe:2,dai:4,initi:2,bound:[1,2],"break":[],framework:[2,4],promis:1,verifi:4,initializedb:2,"8a2e":1,now:[1,2,4],discuss:[1,2,4],gethostbynam:1,choic:[1,2],term:2,document:[0,1,2,3,4,5,6],somewher:4,name:[1,2,4],anyth:2,edit:[],config:[2,4],drop:[1,4],sole:1,match_param:4,separ:[],easili:[2,4],slide:[0,6,3,5],mode:2,compris:2,each:[1,2],debug:2,found:[2,4],went:4,button:4,bone:4,mean:[1,2,4],domain:[],dig:4,"0x105849b90":4,reliabl:1,replac:4,individu:[1,2,4],hard:2,idea:[1,2],realli:[1,4],consum:1,meta:4,"static":[],connect:[],someth:[2,4],blog_creat:[],logo:4,happen:[],orient:2,special:[2,4],out:[],ftp:1,network:[1,4],goe:[2,4],god:2,list_of_tcp_and_udp_port_numb:1,publish:2,research:2,categori:2,hear:1,race:4,rel:4,nic:1,print:[1,2,4],got:[2,4],correct:[1,4],uwpc:[2,4],clarifi:2,after:[2,4],insid:[1,2],written:4,frank:4,nightmar:2,manipul:2,situat:2,given:[1,2,4],argv:2,standard:[1,2],thi:[0,1,2,3,4,5,6],reason:4,orm:[],discrimin:[],put:[],org:1,"byte":1,yore:4,recv:1,card:1,care:1,blog_view:[],nowher:2,wai:[2,4],"0x1103d9f10":2,question:[2,4],steal:2,could:2,by_id:[2,4],success:1,refus:1,keep:[1,2],filter:[],thing:[2,4],perhap:4,mvc:[],place:[1,2,4],isn:4,outsid:2,enough:2,confus:[1,4],imposs:2,frequent:2,lambda:4,oper:[1,4],softwar:[1,2,4],rang:4,render:[],get_const:1,feel:4,onc:[1,2,4],independ:2,number:[1,2,4],echo:1,exact:4,mai:[1,2],instruct:[1,2],alreadi:[1,2,4],done:[1,2,4],wrapper:1,owner:4,fantast:2,primari:[2,4],size:1,differ:[1,2,4],sheet:4,script:[],top:[2,4],mkdir:2,system:[],messag:[],getservbyport:1,too:[1,2,4],statement:2,tom:2,termin:[1,2],conveni:2,"final":[1,2,4],store:2,ipv4:1,udp:1,shell:2,parc:2,option:[1,2],relationship:1,shelf:2,echo_socket:1,copi:4,setuptool:2,took:2,artifact:2,models_id:2,arbitrari:[1,2],part:[],pars:2,mostli:1,my_view:4,af_appletalk:1,gethostnam:1,textfield:4,exactli:[1,4],than:[1,2,4],png:[],route_nam:4,serv:4,liter:2,keyword:4,provid:[],get_address_info:1,remov:[1,2],tree:2,charact:[2,4],project:[],certainli:4,info:[1,2],sens:4,str:2,were:[1,2],posit:1,kitten:2,other:[1,2,4],browser:[1,2,4],unstag:2,sai:2,makin:4,ran:2,py2:2,py3:2,"_socketobject":1,argument:[1,2,4],spent:1,packag:[],af_sna:1,larri:2,pylon:2,increment:[],tabl:[],need:[1,2,4],seen:[1,2,4],properli:4,django:2,seek:2,msg_part:1,imagin:4,afraid:2,date:2,built:[2,4],lib:2,min:4,ipproto_:1,offer:[2,4],"switch":2,thorough:4,port:1,note:[1,2,4],also:[1,2,4],"0x1103e3fd0":2,exampl:[],take:[1,2,4],which:[1,2,4],textareafield:4,transmit:2,combin:[2,4],reload_templ:2,tool:[1,2],channel:2,even:2,begin:[1,2,4],sure:[1,2,4],pain:2,distribut:2,trace:2,normal:2,usernam:4,kai:2,object:[],oracl:2,chart:[2,4],fred:2,most:[1,2,4],"0x100563c90":1,regular:2,alan:[2,4],deploi:[1,4],pair:[2,4],pyc:2,segment:4,why:[],appear:4,tradit:4,don:[1,2,4],correctli:4,filesystem:4,url:[],egg:2,mymodel:[2,4],cover:2,"8mb":2,doe:[],pipe:4,declar:[2,4],create_al:2,determin:[1,2,4],uw_pc:[],"8d3":1,repositori:[1,2,4],left:2,sum:4,fact:[1,4],wsgi:2,think:[1,2,4],last_nam:4,show:[2,4],opposit:4,sent:[1,2,4],least:[2,4],my_index:2,ipproto_udp:1,bring:4,checkbox:4,radio:4,conn:1,identifi:4,rough:2,topmost:1,fine:4,find:[1,2,4],edit_entri:[],xml:[2,4],absolut:4,onli:[2,4],explicitli:2,locat:[1,2,4],nosql:2,copyright:2,af_inet6:1,transact:[1,2],configur:[],solut:[1,2],behind:2,should:[1,2,4],jan:1,theme:[],dict:[1,2],matchdict:[],factor:2,"__tablename__":2,folder:[1,2,4],darwin:2,local:[1,2,4],startswith:1,nearli:2,patter:4,pull:2,convert:[2,4],declarative_bas:2,stop:[1,2,4],kind:[1,4],clang:2,resent:1,db8:1,cannot:[1,4],ssh:1,awai:2,restart:4,dirti:2,intitalizedb:2,smash:4,blog_upd:[],bar:[1,4],possibl:[1,4],probabl:4,"0x10e7d6b90":4,"public":4,buffsiz:1,embodi:2,stuff:4,common:[1,2,4],contain:[0,1,2,3,4,5,6],through:[2,4],cri:4,where:[1,2,4],view:[],respond:[],certif:4,n10:4,set:[1,2,4],aspect:[2,4],overwhelm:2,roberto:4,knowledg:2,"0x1103e3f50":2,packet:1,af_ipx:1,compel:2,see:[1,2,4],bare:4,result:[1,2,4],arg:2,fail:1,close:[1,4],becaus:[2,4],best:2,concern:[],closer:2,statu:2,still:[2,4],eachoth:2,pyrami:[],mine:[],databas:[],review:[1,2,4],wikipedia:[1,2],blog_act:[],label:4,state:2,score:2,outstand:4,languag:[2,4],between:[1,2],"import":[1,2,4],subscript:4,pastedeploi:2,approach:2,across:1,assist:2,attribut:[2,4],docutil:2,pretti:2,extend:4,heffalump:1,elladan:1,attempt:1,javascript:4,isol:2,pypi:2,cycl:[2,4],job:[2,4],succeed:[],len:[1,2],nav:4,come:[2,4],minut:[1,4],addit:4,both:[1,2,4],revers:[1,4],svn:4,extens:[],howev:[2,4],against:4,configpars:2,etc:[1,2,4],instanc:2,equat:1,new_model:2,logic:[2,4],mani:[1,2,4],seri:2,com:[1,2,4],html5:4,comment:[1,4],typifi:2,get_appset:[2,4],getservbynam:1,simpli:[2,4],lang:4,session:[],figur:[1,2],instanti:2,translationstr:2,this_id:4,rad:1,"0x10046cec0":1,header:4,route_url:4,right:4,mistak:2,trust:2,assign:[1,2,4],speak:4,quit:[1,2,4],strong:4,coupl:[1,2],addition:2,add_rout:[2,4],shout:4,empti:[1,2,4],github:[1,2,4],af_decnet:1,json:4,much:[],static_url:4,basic:[],rstpep2html:2,bubbl:4,pro:1,quickli:2,avian:1,modern:2,immedi:1,fire:[2,4],imag:4,sock_stream:1,search:4,telnet:1,ani:[1,2,4],bulk:2,untrack:2,accident:1,whl:2,togeth:[],turn:[2,4],luckili:[2,4],those:2,"case":[2,4],ingredi:2,look:[1,2,4],plain:[2,4],wiki:1,properti:1,batch:2,can:[1,2,4],af_unix:1,defin:[],"while":[1,2],outcom:[],behavior:[1,2,4],error:[1,2,4],fun:4,dbapi2:2,pythoncert:[2,4],endblock:4,python_web:[2,4],real:[1,4],layer:[1,2],pyramid:[],have:[],advantag:2,stdout:[1,2],readi:[1,2,4],ephemer:[1,2],readm:2,site:[2,4],worri:1,physic:[1,4],itself:2,zodb:2,incom:[],tediou:2,constitu:4,smalltalk:2,parent:2,addr:1,pyramid_chameleon:[2,4],develop:[2,4],learning_journ:[2,4],open:[1,4],proto:1,perform:[2,4],saw:2,make:[],couchdb:2,cc0:[2,4],same:[1,2,4],wherein:4,complex:2,rst2latex:2,zope:2,failur:1,eventu:2,conflict:2,complet:[],week:[1,2,4],clear:1,finish:[],http:[],hostnam:1,communc:1,href:4,absorb:2,wherin:2,dbsession:[2,4],hand:4,driven:4,remot:[1,2],moment:[1,2,4],rais:1,temporari:4,"__or__":1,improv:2,engin:[2,4],respons:[],typic:2,recent:2,cew:2,lower:[1,4],appropri:[1,4],off:[2,4],els:[2,4],"548kb":2,find_packag:2,entri:[],thu:1,miss:2,well:[1,2],hypothet:2,inherit:[2,4],non:[],pickl:2,person:[1,4],without:[1,2,4],command:[2,4],expens:1,endfor:4,endif:4,undefin:4,everyth:[2,4],spend:[1,4],juic:4,usual:[1,2],load:4,construct:[],protocol:[],fast:2,just:[1,2,4],ipc:1,excel:4,half:1,make_wsgi_app:2,product:2,"__path__":2,select:2,assur:1,kill:2,human:4,mysql:2,session04:1,rest:2,session01:1,mysql_length:2,emtpi:2,session02:4,briefli:4,web:[],alchemi:2,jinja:[],easi:[2,4],singl:[1,2,4],nullabl:4,point:[1,2],golden:4,except:[1,2],littl:4,global_config:[2,4],blog:[],add:[],valid:4,implement:[1,2],httpfound:4,appli:4,input:[],logger:2,match:[],app:[],homework:[],gave:2,bin:[2,4],applic:[],tranmiss:1,varchar:2,around:[1,4],format:4,preserv:2,big:[],agnost:[1,4],piec:4,arriv:4,distanc:1,server_socket:1,alias:1,blogcreateform:[],know:[1,2,4],world:[2,4],bit:[],password:4,licens:2,python2:2,httpexcept:4,an_id:[],ipproto_icmp:1,like:[1,2,4],specif:[1,2,4],"85a3":1,request:[],brace:4,echo_serv:1,manual:2,tend:2,integ:[1,2],manifest:2,collect:[2,4],benefit:1,maker:4,either:4,lose:2,output:1,install_requir:2,hook:2,page:[],backlog:1,underli:1,www:1,interpr:2,old:2,often:[1,2],"0db8":1,captur:[2,4],interact:[],some:[1,2,4],back:[1,2,4],nfrom:2,thin:1,understood:1,sampl:4,ipproto_ip:1,proper:[1,4],home:[2,4],socket_tool:1,server:[],variou:[2,4],librari:[1,2,4],ds_store:2,tmp:1,smallish:1,gethostbyname_ex:1,sock_dgram:1,lead:4,bottom:1,assum:[1,2],definit:4,magazin:4,per:1,cast:2,track:[],exit:2,rollback:2,foo:[1,4],localhost:4,refer:[1,2,4],cgi:[],freddi:4,investig:4,run:[],connnect:1,power:[1,2,4],reach:1,journal:[2,4],cascad:4,deprec:2,confer:[],viabl:2,who:4,host:[1,2],parse_var:2,although:[2,4],regexp:4,post:4,unicod:[2,4],describ:1,chapter:2,src:4,about:[],obj:[2,4],socket:[],column:[],plai:[2,4],surround:4,manag:[1,2],datagram:1,microframework:2,carrier:1,af_rout:1,stand:[2,4],constructor:1,fals:1,commit:[],whirl:1,mytempl:[2,4],blabber:2,block:[],getattr:1,wire:[1,4],client:[],own:[],transceiv:1,sessionmak:[2,4],regist:1,tutori:4,washington:1,easy_instal:2,automat:[1,2,4],latter:2,noth:[2,4],bsd:1,model:[],pcreat:[2,4],strip:4,ensur:[1,2],chang:[],storag:2,igmp:1,creativ:[2,4],html5shiv:4,sock_:1,hew:[],buffer_s:1,httpnotfound:4,val:[2,4],aren:2,typ:1,execut:[1,2],support:[2,4],sock:1,evangelista:[2,4],"long":[1,2],"class":[1,2,4],avail:[1,2,4],start:[],heroku:4,appl:2,interfac:[1,2],includ:[1,2,4],down:4,ipv6:1,"0x10b075ed0":2,maria:1,machin:[],hei:1,"function":[1,2,4],index_pag:4,head:[1,4],doctyp:4,repeatedli:[1,2],form:[],"0x1103e38d0":2,tupl:1,xerox:2,client_address:1,continu:[1,2],content:4,msg:1,pwd:2,sqlalchemi:[],game:4,gain:2,populate_obj:4,line:[2,4],inlin:[1,2],"true":[1,2,4],count:2,notat:4,made:[1,2,4],utf:4,attr:4,view_config:4,"default":[1,2,4],type:[],googlecod:4,displai:4,until:[1,2],below:1,limit:1,doc:2,ago:1,problem:[1,2],similar:2,email:[1,2],expect:[2,4],gone:2,featur:2,constant:1,valu:[],creat:[],"int":2,certain:[1,2],"abstract":2,trunk:4,pid:4,paster:[2,4],proven:2,repres:[2,4],intro:[],exist:[2,4],ini:[2,4],file:[],our:[],pip:2,doodi:4,duru:2,face:4,central:2,check:2,link:[],fill:4,assembl:4,again:[1,2,4],spell:4,successfulli:2,task:[],googl:[1,2],buffer:1,titl:[2,4],user:[],homepag:[],when:[1,2,4],detail:[],virtual:2,nam:1,field:[2,4],build:[1,2,4],book:4,lookup:[1,4],futur:1,rememb:[1,2,4],zopetransactionextens:[],test:[],pathnam:1,you:[],transmiss:1,webob:2,belong:1,nice:4,restructuredtext:2,llvm:2,intend:[1,2],af_unspec:1,ljenv:[2,4],sendal:1,actual:[1,2,4],mongodb:2,symbol:[1,4],center:[],setup_log:[2,4],elsewher:1,meaning:2,echo_cli:1,log:[2,4],consid:[2,4],formal:2,unless:1,reduc:2,entrycreateform:4,receiv:[],leav:[2,4],longer:1,coordin:2,directori:[2,4],syllabu:2,initialize_learning_journal_db:[],descript:[1,2],rule:[1,2],specifi:4,models_nam:2,portion:4,text:[2,4],dot:4,push:2,profil:1,hello:4,entry_point:2,sqlite3:2},objtypes:{},objnames:{},filenames:["presentations/index","presentations/session04","presentations/session01","outline","presentations/session02","index","readings"],titles:["Course Presentations","Python Web Programming","Session 01","Course Outline","Session 02","Internet Programming with Python","Course Readings"],objects:{},titleterms:{all:[1,2],code:2,protocol:1,chain:2,queri:2,stack:1,tcp:1,ljshell:4,sqla:2,skill:1,web:[1,2],style:4,layout:4,flask:[],configur:[2,4],activ:2,send:1,environment:[],add:[2,4],program:[1,5],congratul:1,persist:2,input:4,save:2,mvc:[2,4],alter:2,match:4,deactiv:2,messag:1,"return":2,string:4,get:[1,2,4],python:[1,2,5],express:4,"break":[1,2],jinja2:4,bit:2,introduct:2,edit:4,list:4,iter:2,server:1,"try":4,session:[2,4],quick:1,side:[1,2],view:4,respond:1,machin:1,domain:1,outlin:3,request:4,design:[],connect:[1,4],respons:4,our:[2,4],happen:2,transport:1,concern:2,virtualenv:2,separ:2,what:[2,4],databas:2,scaffold:[],stub:4,internet:[1,5],"new":2,method:[1,2],altern:2,run:1,step:[],orm:2,dictionari:4,address:1,put:1,path:4,valu:4,about:2,last:2,socket:1,column:2,commun:1,page:4,filter:4,base:2,present:[0,4],perman:2,context:4,pick:4,repli:1,commit:2,chang:[2,4],block:4,first:[2,4],own:1,render:4,app:2,terminolog:2,system:[2,4],walkthrough:[],unix:1,api:4,construct:1,famili:1,instal:[2,4],your:[1,2,4],git:[],script:[2,4],interact:[2,4],three:2,submit:[1,2],custom:1,compon:2,start:2,much:[],master:[],asset:4,accept:1,basic:[2,4],order_bi:2,homework:[1,2,4],type:1,more:2,fork:[],consol:2,form:4,further:1,part:4,link:1,togeth:1,virtuelenv:2,matchdict:4,word:2,provid:4,setup:2,work:2,structur:[2,4],project:2,defin:4,outcom:4,bind:1,"static":4,listen:1,control:4,pyramid:[2,4],comput:1,file:2,creat:[1,2],applic:[1,2],demo:4,share:4,templat:4,packag:2,have:2,tabl:2,incom:1,cours:[0,3,6],irrelev:2,advic:2,receiv:1,make:[2,4],detail:4,access:4,client:1,read:6,cleanup:2,branch:[],test:[1,4],environ:2,you:2,out:4,prepar:4,complet:4,map:[],finish:1,http:4,deploy:4,object:[2,4],sqlalchemi:2,effect:2,pattern:[],user:4,sql:2,data:4,why:2,util:1,task:1,choos:2,url:4,entri:[],initialize_learning_journal_db:2,flow:[1,4],wtform:4,doe:4,inform:1,exampl:4,ignor:2,clean:[1,2],time:[1,2],model:[2,4],rout:4}})
    \ No newline at end of file
    
    From e0222b523b58a792225877fc27dee97fccf263aa Mon Sep 17 00:00:00 2001
    From: cewing 
    Date: Thu, 15 Jan 2015 11:11:41 -0800
    Subject: [PATCH 075/114] add session 4 materials
    
    ---
     html/_images/data_in_tcpip_stack.png        |  Bin 0 -> 11078 bytes
     html/_images/network_topology.png           |  Bin 0 -> 27152 bytes
     html/_sources/presentations/session04.txt   | 1177 ++++++++++++++++
     html/presentations/session04.html           |  962 +++++++++++++
     slides/_images/data_in_tcpip_stack.png      |  Bin 0 -> 11078 bytes
     slides/_images/network_topology.png         |  Bin 0 -> 27152 bytes
     slides/_sources/presentations/session04.txt | 1177 ++++++++++++++++
     slides/presentations/session04.html         | 1404 +++++++++++++++++++
     8 files changed, 4720 insertions(+)
     create mode 100644 html/_images/data_in_tcpip_stack.png
     create mode 100644 html/_images/network_topology.png
     create mode 100644 html/_sources/presentations/session04.txt
     create mode 100644 html/presentations/session04.html
     create mode 100644 slides/_images/data_in_tcpip_stack.png
     create mode 100644 slides/_images/network_topology.png
     create mode 100644 slides/_sources/presentations/session04.txt
     create mode 100644 slides/presentations/session04.html
    
    diff --git a/html/_images/data_in_tcpip_stack.png b/html/_images/data_in_tcpip_stack.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..42fde385ea0171251a1eab284c6f5775413ef970
    GIT binary patch
    literal 11078
    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
    
    literal 0
    HcmV?d00001
    
    diff --git a/html/_images/network_topology.png b/html/_images/network_topology.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..24a8494ca20a4a3b3cb219ab1fd186272551780f
    GIT binary patch
    literal 27152
    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
    KNLGp)1pW`#IK1Ql
    
    literal 0
    HcmV?d00001
    
    diff --git a/html/_sources/presentations/session04.txt b/html/_sources/presentations/session04.txt
    new file mode 100644
    index 00000000..62570249
    --- /dev/null
    +++ b/html/_sources/presentations/session04.txt
    @@ -0,0 +1,1177 @@
    +**********************
    +Python Web Programming
    +**********************
    +
    +.. figure:: /_static/python.png
    +    :align: center
    +    :width: 33%
    +
    +Session 4: Networking and Sockets
    +
    +
    +Computer Communications
    +=======================
    +
    +.. rst-class:: left
    +.. container::
    +
    +    We've spent the first few weeks of this course building and deploying a
    +    simple web application.
    +
    +    .. rst-class:: build
    +    .. container::
    +
    +        now it's time to step back and look at the technologies underlying the
    +        work we've done.
    +
    +        We'll begin by discussing the basics of networking computers.
    +
    +        You'll learn a bit here about how computers talk to each other across a
    +        distance.
    +
    +TCP/IP
    +------
    +
    +.. figure:: /_static/network_topology.png
    +    :align: left
    +
    +    http://en.wikipedia.org/wiki/Internet_Protocol_Suite
    +
    +.. rst-class:: build
    +
    +* processes can communicate
    +* inside one machine
    +* between two machines
    +* among many machines
    +
    +
    +.. nextslide::
    +
    +.. figure:: /_static/data_in_tcpip_stack.png
    +    :align: left
    +    :width: 100%
    +
    +    http://en.wikipedia.org/wiki/Internet_Protocol_Suite
    +
    +.. rst-class:: build
    +
    +* Process divided into 'layers'
    +* 'Layers' are mostly arbitrary
    +* Different descriptions have different layers
    +* Most common is the 'TCP/IP Stack'
    +
    +
    +The TCP/IP Stack - Link
    +-----------------------
    +
    +The bottom layer is the 'Link Layer'
    +
    +.. rst-class:: build
    +
    +* Deals with the physical connections between machines, 'the wire'
    +
    +* Packages data for physical transport
    +
    +* Executes transmission over a physical medium
    +
    +  .. rst-class:: build
    +
    +  * what that medium is is arbitrary
    +
    +* Implemented in the Network Interface Card(s) (NIC) in your computer
    +
    +
    +The TCP/IP Stack - Internet
    +---------------------------
    +
    +Moving up, we have the 'Internet Layer'
    +
    +.. rst-class:: build
    +
    +* Deals with addressing and routing
    +
    +  .. rst-class:: build
    +
    +  * Where are we going and how do we get there?
    +
    +* Agnostic as to physical medium (IP over Avian Carrier - IPoAC)
    +
    +* Makes no promises of reliability
    +
    +* Two addressing systems
    +
    +  .. rst-class:: build
    +
    +  * IPv4 (current, limited '192.168.1.100')
    +
    +  * IPv6 (future, 3.4 x 10^38 addresses, '2001:0db8:85a3:0042:0000:8a2e:0370:7334')
    +
    +
    +.. nextslide::
    +
    +.. rst-class:: large center
    +
    +That's 4.3 x 10^28 addresses *per person alive today*
    +
    +
    +The TCP/IP Stack - Transport
    +----------------------------
    +
    +Next up is the 'Transport Layer'
    +
    +.. rst-class:: build
    +
    +* Deals with transmission and reception of data
    +
    +  * error correction, flow control, congestion management
    +
    +* Common protocols include TCP & UDP
    +
    +  * TCP: Tranmission Control Protocol
    +
    +  * UDP: User Datagram Protocol
    +
    +* Not all Transport Protocols are 'reliable'
    +
    +  .. rst-class:: build
    +
    +  * TCP ensures that dropped packets are resent
    +
    +  * UDP makes no such assurance
    +
    +  * Reliability is slow and expensive
    +
    +
    +.. nextslide::
    +
    +The 'Transport Layer' also establishes the concept of a **port**
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. rst-class:: build
    +
    +    * IP Addresses designate a specific *machine* on the network
    +
    +    * A **port** provides addressing for individual *applications* in a single
    +      host
    +
    +    * 192.168.1.100:80  (the *:80* part is the **port**)
    +
    +    * [2001:db8:85a3:8d3:1319:8a2e:370:7348]:443 (*:443* is the **port**)
    +
    +    This means that you don't have to worry about information intended for your
    +    web browser being accidentally read by your email client.
    +
    +
    +.. nextslide::
    +
    +There are certain **ports** which are commonly understood to belong to given
    +applications or protocols:
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. rst-class:: build
    +
    +    * 80/443 - HTTP/HTTPS
    +    * 20 - FTP
    +    * 22 - SSH
    +    * 23 - Telnet
    +    * 25 - SMTP
    +    * ...
    +
    +    These ports are often referred to as **well-known ports**
    +
    +    .. rst-class:: small
    +
    +    (see http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers)
    +
    +.. nextslide::
    +
    +Ports are grouped into a few different classes
    +
    +.. rst-class:: build
    +
    +* Ports numbered 0 - 1023 are *reserved*
    +
    +* Ports numbered 1024 - 65535 are *open*
    +
    +* Ports numbered 1024 - 49151 may be *registered*
    +
    +* Ports numbered 49152 - 65535 are called *ephemeral*
    +
    +
    +The TCP/IP Stack - Application
    +------------------------------
    +
    +The topmost layer is the 'Application Layer'
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. rst-class:: build
    +
    +    * Deals directly with data produced or consumed by an application
    +
    +    * Reads or writes data using a set of understood, well-defined **protocols**
    +
    +      * HTTP, SMTP, FTP etc.
    +
    +    * Does not know (or need to know) about lower layer functionality
    +
    +      * The exception to this rule is **endpoint** data (or IP:Port)
    +
    +    .. rst-class:: centered
    +
    +    **this is where we live and work**
    +
    +
    +Sockets
    +-------
    +
    +Think back for a second to what we just finished discussing, the TCP/IP stack.
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. rst-class:: build
    +
    +    * The *Internet* layer gives us an **IP Address**
    +
    +    * The *Transport* layer establishes the idea of a **port**.
    +
    +    * The *Application* layer doesn't care about what happens below...
    +
    +    * *Except for* **endpoint data** (IP:Port)
    +
    +    A **Socket** is the software representation of that endpoint.
    +
    +    Opening a **socket** creates a kind of transceiver that can send and/or
    +    receive *bytes* at a given IP address and Port.
    +
    +
    +Sockets in Python
    +-----------------
    +
    +Python provides a standard library module which provides socket functionality.
    +It is called **socket**.
    +
    +.. rst-class:: build
    +.. container::
    +
    +    The library is really just a very thin wrapper around the system
    +    implementation of *BSD Sockets*
    +
    +    Let's spend a few minutes getting to know this module.
    +
    +    We're going to do this next part together, so open up a terminal and start
    +    a python interpreter
    +
    +
    +.. nextslide::
    +
    +The Python sockets library allows us to find out what port a *service* uses:
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. code-block:: pycon
    +
    +        >>> import socket
    +        >>> socket.getservbyname('ssh')
    +        22
    +
    +    You can also do a *reverse lookup*, finding what service uses a given *port*:
    +
    +    .. code-block:: pycon
    +
    +        >>> socket.getservbyport(80)
    +        'http'
    +
    +
    +.. nextslide::
    +
    +The sockets library also provides tools for finding out information about
    +*hosts*. For example, you can find out about the hostname and IP address of
    +the machine you are currently using:
    +
    +.. code-block:: pycon
    +
    +    >>> socket.gethostname()
    +    'heffalump.local'
    +    >>> socket.gethostbyname(socket.gethostname())
    +    '10.211.55.2'
    +
    +.. nextslide::
    +
    +You can also find out about machines that are located elsewhere, assuming you
    +know their hostname. For example:
    +
    +.. code-block:: pycon
    +
    +    >>> socket.gethostbyname('google.com')
    +    '173.194.33.4'
    +    >>> socket.gethostbyname('uw.edu')
    +    '128.95.155.135'
    +    >>> socket.gethostbyname('crisewing.com')
    +    '108.59.11.99'
    +
    +
    +.. nextslide::
    +
    +The ``gethostbyname_ex`` method of the ``socket`` library provides more
    +information about the machines we are exploring:
    +
    +.. code-block:: pycon
    +
    +    >>> socket.gethostbyname_ex('google.com')
    +    ('google.com', [], ['173.194.33.9', '173.194.33.14',
    +                        ...
    +                        '173.194.33.6', '173.194.33.7',
    +                        '173.194.33.8'])
    +    >>> socket.gethostbyname_ex('crisewing.com')
    +    ('crisewing.com', [], ['108.59.11.99'])
    +    >>> socket.gethostbyname_ex('www.rad.washington.edu')
    +    ('elladan.rad.washington.edu', # <- canonical hostname
    +     ['www.rad.washington.edu'], # <- any machine aliases
    +     ['128.95.247.84']) # <- all active IP addresses
    +
    +.. nextslide::
    +
    +To create a socket, you use the **socket** method of the ``socket`` library.
    +It takes up to three optional positional arguments (here we use none to get
    +the default behavior):
    +
    +.. code-block:: pycon
    +
    +    >>> foo = socket.socket()
    +    >>> foo
    +    
    +
    +.. nextslide::
    +
    +A socket has some properties that are immediately important to us. These
    +include the *family*, *type* and *protocol* of the socket:
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. code-block:: pycon
    +
    +        >>> foo.family
    +        2
    +        >>> foo.type
    +        1
    +        >>> foo.proto
    +        0
    +
    +    You might notice that the values for these properties are integers.  In
    +    fact, these integers are **constants** defined in the socket library.
    +
    +
    +.. nextslide:: A quick utility method
    +
    +Let's define a method in place to help us see these constants. It will take a
    +single argument, the shared prefix for a defined set of constants:
    +
    +.. rst-class:: build
    +.. container::
    +
    +    (you can also find this in ``resources/session04/socket_tools.py``)
    +
    +    .. code-block:: pycon
    +
    +        >>> def get_constants(prefix):
    +        ...     """mapping of socket module constants to their names."""
    +        ...     return dict(
    +        ...         (getattr(socket, n), n)
    +        ...         for n in dir(socket)
    +        ...         if n.startswith(prefix)
    +        ...     )
    +        ...
    +        >>>
    +
    +Socket Families
    +---------------
    +
    +Think back a moment to our discussion of the *Internet* layer of the TCP/IP
    +stack.  There were a couple of different types of IP addresses:
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. rst-class:: build
    +
    +    * IPv4 ('192.168.1.100')
    +
    +    * IPv6 ('2001:0db8:85a3:0042:0000:8a2e:0370:7334')
    +
    +
    +    The **family** of a socket corresponds to the *addressing system* it uses
    +    for connecting.
    +
    +.. nextslide::
    +
    +Families defined in the ``socket`` library are prefixed by ``AF_``:
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. code-block:: pycon
    +
    +        >>> families = get_constants('AF_')
    +        >>> families
    +        {0: 'AF_UNSPEC', 1: 'AF_UNIX', 2: 'AF_INET',
    +         11: 'AF_SNA', 12: 'AF_DECnet', 16: 'AF_APPLETALK',
    +         17: 'AF_ROUTE', 23: 'AF_IPX', 30: 'AF_INET6'}
    +
    +    *Your results may vary*
    +
    +    Of all of these, the ones we care most about are ``2`` (IPv4) and ``30``
    +    (IPv6).
    +
    +
    +.. nextslide:: Unix Domain Sockets
    +
    +
    +When you are on a machine with an operating system that is Unix-like, you will
    +find another generally useful socket family: ``AF_UNIX``, or Unix Domain
    +Sockets. Sockets in this family:
    +
    +.. rst-class:: build
    +
    +* connect processes **on the same machine**
    +
    +* are generally a bit slower than IPC connnections
    +
    +* have the benefit of allowing the same API for programs that might run on one
    +  machine __or__ across the network
    +
    +* use an 'address' that looks like a pathname ('/tmp/foo.sock')
    +
    +
    +.. nextslide:: Test your skills
    +
    +What is the *default* family for the socket we created just a moment ago?
    +
    +.. rst-class:: build
    +.. container::
    +
    +    (remember we bound the socket to the symbol ``foo``)
    +
    +    How did you figure this out?
    +
    +
    +Socket Types
    +------------
    +
    +The socket *type* determines the semantics of socket communications.
    +
    +.. rst-class:: build
    +.. container::
    +
    +    Look up socket type constants with the ``SOCK_`` prefix:
    +
    +    .. code-block:: pycon
    +
    +        >>> types = get_constants('SOCK_')
    +        >>> types
    +        {1: 'SOCK_STREAM', 2: 'SOCK_DGRAM',
    +         ...}
    +
    +    The most common are ``1`` (Stream communication (TCP)) and ``2`` (Datagram
    +    communication (UDP)).
    +
    +
    +.. nextslide:: Test your skills
    +
    +What is the *default* type for our generic socket, ``foo``?
    +
    +
    +Socket Protocols
    +----------------
    +
    +A socket also has a designated *protocol*. The constants for these are
    +prefixed by ``IPPROTO_``:
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. code-block:: pycon
    +
    +        >>> protocols = get_constants('IPPROTO_')
    +        >>> protocols
    +        {0: 'IPPROTO_IP', 1: 'IPPROTO_ICMP',
    +         ...,
    +         255: 'IPPROTO_RAW'}
    +
    +    The choice of which protocol to use for a socket is determined by the
    +    *internet layer* protocol you intend to use. ``TCP``? ``UDP``? ``ICMP``?
    +    ``IGMP``?
    +
    +
    +.. nextslide:: Test your skills
    +
    +What is the *default* protocol used by our generic socket, ``foo``?
    +
    +
    +Customizing Sockets
    +-------------------
    +
    +These three properties of a socket correspond to the three positional
    +arguments you may pass to the socket constructor.
    +
    +.. rst-class:: build
    +.. container::
    +
    +    Using them allows you to create sockets with specific communications
    +    profiles:
    +
    +    .. code-block:: pycon
    +
    +        >>> bar = socket.socket(socket.AF_INET,
    +        ...                     socket.SOCK_DGRAM,
    +        ...                     socket.IPPROTO_UDP)
    +        ...
    +        >>> bar
    +        
    +
    +
    +Break Time
    +----------
    +
    +So far we have:
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. rst-class:: build
    +
    +    * learned about the "layers" of the TCP/IP Stack
    +    * discussed *families*, *types* and *protocols* in sockets
    +    * learned how to create sockets with a specific communications profile.
    +
    +    When we return we'll learn how to find the communcations profiles of remote
    +    sockets, how to connect to them, and how to send and receive messages.
    +
    +    Take a few minutes now to clear your head (do not quit your python
    +    interpreter).
    +
    +
    +Address Information
    +-------------------
    +
    +When you are creating a socket to communicate with a remote service, the
    +remote socket will have a specific communications profile.
    +
    +.. rst-class:: build
    +.. container::
    +
    +    The local socket you create must match that communications profile.
    +
    +    How can you determine the *correct* values to use?
    +
    +    .. rst-class:: centered
    +
    +    **You ask.**
    +
    +.. nextslide::
    +
    +The function ``socket.getaddrinfo`` provides information about available
    +connections on a given host.
    +
    +.. code-block:: python
    +
    +    socket.getaddrinfo('127.0.0.1', 80)
    +
    +.. rst-class:: build
    +.. container::
    +
    +    This provides all you need to make a proper connection to a socket on a
    +    remote host. The value returned is a tuple of:
    +
    +    .. rst-class:: build
    +
    +    * socket family
    +    * socket type
    +    * socket protocol
    +    * canonical name (usually empty, unless requested by flag)
    +    * socket address (tuple of IP and Port)
    +
    +
    +.. nextslide:: A quick utility method
    +
    +Again, let's create a utility method in-place so we can see this in action:
    +
    +.. code-block:: pycon
    +
    +    >>> def get_address_info(host, port):
    +    ...     for response in socket.getaddrinfo(host, port):
    +    ...         fam, typ, pro, nam, add = response
    +    ...         print 'family: ', families[fam]
    +    ...         print 'type: ', types[typ]
    +    ...         print 'protocol: ', protocols[pro]
    +    ...         print 'canonical name: ', nam
    +    ...         print 'socket address: ', add
    +    ...         print
    +    ...
    +    >>>
    +
    +(you can also find this in ``resources/session01/session1.py``)
    +
    +
    +.. nextslide:: On Your Own Machine
    +
    +Now, ask your own machine what possible connections are available for 'http':
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. code-block:: pycon
    +
    +        >>> get_address_info(socket.gethostname(), 'http')
    +        family:  AF_INET
    +        type:  SOCK_DGRAM
    +        protocol:  IPPROTO_UDP
    +        canonical name:
    +        socket address:  ('10.211.55.2', 80)
    +
    +        family:  AF_INET
    +        ...
    +        >>>
    +
    +    What answers do you get?
    +
    +
    +.. nextslide:: On the Internet
    +
    +.. code-block:: pycon
    +
    +    >>> get_address_info('crisewing.com', 'http')
    +    family:  AF_INET
    +    type:  SOCK_DGRAM
    +    ...
    +
    +    family:  AF_INET
    +    type:  SOCK_STREAM
    +    ...
    +    >>>
    +
    +.. rst-class:: build
    +.. container::
    +
    +    Try a few other servers you know about.
    +
    +
    +Client Side
    +===========
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. rst-class:: large
    +
    +    Let's put this to use
    +
    +    We'll communicate with a remote server as a *client*
    +
    +
    +Construct a Socket
    +------------------
    +
    +We've already made a socket ``foo`` using the generic constructor without any
    +arguments.  We can make a better one now by using real address information from
    +a real server online [**do not type this yet**]:
    +
    +.. code-block:: pycon
    +
    +    >>> streams = [info
    +    ...     for info in socket.getaddrinfo('crisewing.com', 'http')
    +    ...     if info[1] == socket.SOCK_STREAM]
    +    >>> streams
    +    [(2, 1, 6, '', ('108.59.11.99', 80))]
    +    >>> info = streams[0]
    +    >>> cewing_socket = socket.socket(*info[:3])
    +
    +
    +Connecting a Socket
    +-------------------
    +
    +Once the socket is constructed with the appropriate *family*, *type* and
    +*protocol*, we can connect it to the address of our remote server:
    +
    +.. code-block:: pycon
    +
    +    >>> cewing_socket.connect(info[-1])
    +    >>>
    +
    +.. rst-class:: build
    +
    +* a successful connection returns ``None``
    +
    +* a failed connection raises an error
    +
    +* you can use the *type* of error returned to tell why the connection failed.
    +
    +
    +Sending a Message
    +-----------------
    +
    +Send a message to the server on the other end of our connection (we'll
    +learn in session 2 about the message we are sending):
    +
    +.. code-block:: pycon
    +
    +    >>> msg = "GET / HTTP/1.1\r\n"
    +    >>> msg += "Host: crisewing.com\r\n\r\n"
    +    >>> cewing_socket.sendall(msg)
    +    >>>
    +
    +.. rst-class:: build small
    +
    +* the transmission continues until all data is sent or an error occurs
    +
    +* success returns ``None``
    +
    +* failure to send raises an error
    +
    +* you can use the type of error to figure out why the transmission failed
    +
    +* if an error occurs you **cannot** know how much, if any, of your data was
    +  sent
    +
    +
    +Receiving a Reply
    +-----------------
    +
    +Whatever reply we get is received by the socket we created. We can read it
    +back out (again, **do not type this yet**):
    +
    +.. code-block:: pycon
    +
    +    >>> response = cewing_socket.recv(4096)
    +    >>> response
    +    'HTTP/1.1 200 OK\r\nDate: Thu, 03 Jan 2013 05:56:53
    +    ...
    +
    +.. rst-class:: build
    +
    +* The sole required argument is ``buffer_size`` (an integer). It should be a
    +  power of 2 and smallish (~4096)
    +* It returns a byte string of ``buffer_size`` (or smaller if less data was
    +  received)
    +* If the response is longer than ``buffer size``, you can call the method
    +  repeatedly. The last bunch will be less than ``buffer size``.
    +
    +
    +Cleaning Up
    +-----------
    +
    +When you are finished with a connection, you should always close it::
    +
    +  >>> cewing_socket.close()
    +
    +
    +Putting it all together
    +-----------------------
    +
    +First, connect and send a message:
    +
    +.. code-block:: pycon
    +
    +    >>> streams = [info
    +    ...     for info in socket.getaddrinfo('crisewing.com', 'http')
    +    ...     if info[1] == socket.SOCK_STREAM]
    +    >>> info = streams[0]
    +    >>> cewing_socket = socket.socket(*info[:3])
    +    >>> cewing_socket.connect(info[-1])
    +    >>> msg = "GET / HTTP/1.1\r\n"
    +    >>> msg += "Host: crisewing.com\r\n\r\n"
    +    >>> cewing_socket.sendall(msg)
    +
    +
    +.. nextslide::
    +
    +Then, receive a reply, iterating until it is complete:
    +
    +.. code-block:: pycon
    +
    +    >>> buffsize = 4096
    +    >>> response = ''
    +    >>> done = False
    +    >>> while not done:
    +    ...     msg_part = cewing_socket.recv(buffsize)
    +    ...     if len(msg_part) < buffsize:
    +    ...         done = True
    +    ...         cewing_socket.close()
    +    ...     response += msg_part
    +    ...
    +    >>> len(response)
    +    19427
    +
    +
    +Server Side
    +===========
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. rst-class:: large
    +
    +    What about the other half of the equation?
    +
    +    Let's build a server and see how that part works.
    +
    +Construct a Socket
    +------------------
    +
    +**For the moment, stop typing this into your interpreter.**
    +
    +.. rst-class:: build
    +.. container::
    +
    +    Again, we begin by constructing a socket. Since we are actually the server
    +    this time, we get to choose family, type and protocol:
    +
    +    .. code-block:: pycon
    +
    +        >>> server_socket = socket.socket(
    +        ...     socket.AF_INET,
    +        ...     socket.SOCK_STREAM,
    +        ...     socket.IPPROTO_TCP)
    +        ...
    +        >>> server_socket
    +        
    +
    +
    +Bind the Socket
    +---------------
    +
    +Our server socket needs to be **bound** to an address. This is the IP Address
    +and Port to which clients must connect:
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. code-block:: pycon
    +
    +        >>> address = ('127.0.0.1', 50000)
    +        >>> server_socket.bind(address)
    +
    +    **Terminology Note**: In a server/client relationship, the server *binds*
    +    to an address and port. The client *connects*
    +
    +Listen for Connections
    +----------------------
    +
    +Once our socket is bound to an address, we can listen for attempted
    +connections:
    +
    +.. code-block:: pycon
    +
    +    >>> server_socket.listen(1)
    +
    +.. rst-class:: build
    +
    +* The argument to ``listen`` is the *backlog*
    +
    +* The *backlog* is the **maximum** number of connection requests that the
    +  socket will queue
    +
    +* Once the limit is reached, the socket refuses new connections.
    +
    +
    +Accept Incoming Messages
    +------------------------
    +
    +When a socket is listening, it can receive incoming connection requests:
    +
    +.. code-block:: pycon
    +
    +    >>> connection, client_address = server_socket.accept()
    +    ... # this blocks until a client connects
    +    >>> connection.recv(16)
    +
    +.. rst-class:: build
    +
    +* The ``connection`` returned by a call to ``accept`` is a **new socket**.
    +  This new socket is used to communicate with the client
    +
    +* The ``client_address`` is a two-tuple of IP Address and Port for the client
    +  socket
    +
    +* When a connection request is 'accepted', it is removed from the backlog
    +  queue.
    +
    +
    +Send a Reply
    +------------
    +
    +The same socket that received a message from the client may be used to return
    +a reply:
    +
    +.. code-block:: pycon
    +
    +    >>> connection.sendall("message received")
    +
    +
    +Clean Up
    +--------
    +
    +Once a transaction between the client and server is complete, the
    +``connection`` socket should be closed:
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. code-block:: pycon
    +
    +        >>> connection.close()
    +
    +    Note that the ``server_socket`` is *never* closed as long as the server
    +    continues to run.
    +
    +
    +Getting the Flow
    +================
    +
    +.. rst-class:: left
    +.. container::
    +
    +
    +
    +    The flow of this interaction can be a bit confusing.  Let's see it in
    +    action step-by-step.
    +
    +    .. rst-class:: build
    +    .. container::
    +
    +        .. container::
    +
    +            Open a second python interpreter and place it next to your first so
    +            you can see both of them at the same time.
    +
    +
    +Create a Server
    +---------------
    +
    +In your first python interpreter, create a server socket and prepare it for
    +connections:
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. code-block:: pycon
    +
    +        >>> server_socket = socket.socket(
    +        ...     socket.AF_INET,
    +        ...     socket.SOCK_STREAM,
    +        ...     socket.IPPROTO_IP)
    +        >>> server_socket.bind(('127.0.0.1', 50000))
    +        >>> server_socket.listen(1)
    +        >>> conn, addr = server_socket.accept()
    +
    +    At this point, you should **not** get back a prompt. The server socket is
    +    waiting for a connection to be made.
    +
    +
    +Create a Client
    +---------------
    +
    +In your second interpreter, create a client socket and prepare to send a
    +message:
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. code-block:: pycon
    +
    +        >>> import socket
    +        >>> client_socket = socket.socket(
    +        ...     socket.AF_INET,
    +        ...     socket.SOCK_STREAM,
    +        ...     socket.IPPROTO_IP)
    +
    +    Before connecting, keep your eye on the server interpreter:
    +
    +    .. code-block:: pycon
    +
    +        >>> client_socket.connect(('127.0.0.1', 50000))
    +
    +
    +Send a Message Client->Server
    +-----------------------------
    +
    +As soon as you made the connection above, you should have seen the prompt
    +return in your server interpreter. The ``accept`` method finally returned a
    +new connection socket.
    +
    +.. rst-class:: build
    +.. container::
    +
    +    When you're ready, type the following in the *client* interpreter:
    +
    +    .. code-block:: pycon
    +
    +        >>> client_socket.sendall("Hey, can you hear me?")
    +
    +
    +Receive and Respond
    +-------------------
    +
    +Back in your server interpreter, go ahead and receive the message from your
    +client:
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. code-block:: pycon
    +
    +        >>> conn.recv(32)
    +        'Hey, can you hear me?'
    +
    +    Send a message back, and then close up your connection:
    +
    +    .. code-block:: pycon
    +
    +        >>> conn.sendall("Yes, I hear you.")
    +        >>> conn.close()
    +
    +
    +Finish Up
    +---------
    +
    +Back in your client interpreter, take a look at the response to your message,
    +then be sure to close your client socket too:
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. code-block:: pycon
    +
    +        >>> client_socket.recv(32)
    +        'Yes, I hear you.'
    +        >>> client_socket.close()
    +
    +    And now that we're done, we can close up the server too (back in the server
    +    interpreter):
    +
    +    .. code-block:: pycon
    +
    +        >>> server_socket.close()
    +
    +
    +.. nextslide:: Congratulations!
    +
    +.. rst-class:: large center
    +
    +You've run your first client-server interaction
    +
    +
    +Homework
    +========
    +
    +.. rst-class:: left
    +.. container::
    +
    +    Your homework assignment for this week is to take what you've learned here
    +    and build a simple "echo" server.
    +
    +    .. rst-class:: build
    +    .. container::
    +
    +        The server should automatically return to any client that connects *exactly*
    +        what it receives (it should **echo** all messages).
    +
    +        You will also write a python script that, when run, will send a message to the
    +        server and receive the reply, printing it to ``stdout``.
    +
    +        Finally, you'll do all of this so that it can be tested.
    +
    +
    +Your Task
    +---------
    +
    +In our class repository, there is a folder ``resources/session04``.
    +
    +.. rst-class:: build
    +.. container::
    +
    +    Inside that folder, you should find:
    +
    +    .. rst-class:: build
    +
    +    * A file ``tasks.txt`` that contains these instructions
    +
    +    * A skeleton for your server in ``echo_server.py``
    +
    +    * A skeleton for your client script in ``echo_client.py``
    +
    +    * Some simple tests in ``tests.py``
    +
    +    Your task is to make the tests pass.
    +
    +
    +Running the Tests
    +-----------------
    +
    +To run the tests, you'll have to set the server running in one terminal:
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. code-block:: bash
    +
    +        $ python echo_server.py
    +
    +    Then, in a second terminal, you will execute the tests:
    +
    +    .. code-block:: bash
    +
    +        $ python tests.py
    +
    +    You should see output like this:
    +
    +    .. code-block:: bash
    +
    +        [...]
    +        FAILED (failures=2)
    +
    +
    +Submitting Your Homework
    +------------------------
    +
    +To submit your homework:
    +
    +.. rst-class:: build
    +.. container::
    +
    +    .. rst-class:: build
    +
    +    * Create a new repository in GitHub.  Call it ``echo_sockets``.
    +
    +    * Put the ``echo_server.py``, ``echo_client.py`` and ``tests.py`` files in
    +      this repository.
    +
    +    * Send Maria and I an email with a link to your repository when you are
    +      done.
    +
    +    We will clone your repository and run the tests as described above.
    +
    +    And we'll make comments inline on your repository.
    +
    +
    +Going Further
    +-------------
    +
    +In ``assignments/session01/tasks.txt`` you'll find a few extra problems to try.
    +
    +.. rst-class:: build
    +.. container::
    +
    +    If you finish the first part of the homework in less than 3-4 hours give
    +    one or more of these a whirl.
    +
    +    They are not required, but if you include solutions in your repository,
    +    we'll review your work.
    diff --git a/html/presentations/session04.html b/html/presentations/session04.html
    new file mode 100644
    index 00000000..69ede5f1
    --- /dev/null
    +++ b/html/presentations/session04.html
    @@ -0,0 +1,962 @@
    +
    +
    +
    +
    +  
    +    
    +    
    +    Python Web Programming — Internet Programming with Python
    +    
    +    
    +    
    +    
    +    
    +    
    +    
    +    
    +    
    +
    +
    +
    +
    +  
    +  
    +
    + +
    + +
    + +
    +
    +
    +
    + +
    +

    Python Web Programming¶

    +
    +../_images/python.png +
    +

    Session 4: Networking and Sockets

    +
    +

    Computer Communications¶

    +
    +

    We’ve spent the first few weeks of this course building and deploying a +simple web application.

    +
    +

    now it’s time to step back and look at the technologies underlying the +work we’ve done.

    +

    We’ll begin by discussing the basics of networking computers.

    +

    You’ll learn a bit here about how computers talk to each other across a +distance.

    +
    +
    +
    +

    TCP/IP¶

    + +
      +
    • processes can communicate
    • +
    • inside one machine
    • +
    • between two machines
    • +
    • among many machines
    • +
    + +
      +
    • Process divided into ‘layers’
    • +
    • ‘Layers’ are mostly arbitrary
    • +
    • Different descriptions have different layers
    • +
    • Most common is the ‘TCP/IP Stack’
    • +
    +
    + +
    +

    The TCP/IP Stack - Internet¶

    +

    Moving up, we have the ‘Internet Layer’

    +
      +
    • Deals with addressing and routing
        +
      • Where are we going and how do we get there?
      • +
      +
    • +
    • Agnostic as to physical medium (IP over Avian Carrier - IPoAC)
    • +
    • Makes no promises of reliability
    • +
    • Two addressing systems
        +
      • IPv4 (current, limited ‘192.168.1.100’)
      • +
      • IPv6 (future, 3.4 x 10^38 addresses, ‘2001:0db8:85a3:0042:0000:8a2e:0370:7334’)
      • +
      +
    • +
    +

    That’s 4.3 x 10^28 addresses per person alive today

    +
    +
    +

    The TCP/IP Stack - Transport¶

    +

    Next up is the ‘Transport Layer’

    +
      +
    • Deals with transmission and reception of data
        +
      • error correction, flow control, congestion management
      • +
      +
    • +
    • Common protocols include TCP & UDP
        +
      • TCP: Tranmission Control Protocol
      • +
      • UDP: User Datagram Protocol
      • +
      +
    • +
    • Not all Transport Protocols are ‘reliable’
        +
      • TCP ensures that dropped packets are resent
      • +
      • UDP makes no such assurance
      • +
      • Reliability is slow and expensive
      • +
      +
    • +
    +

    The ‘Transport Layer’ also establishes the concept of a port

    +
    +
      +
    • IP Addresses designate a specific machine on the network
    • +
    • A port provides addressing for individual applications in a single +host
    • +
    • 192.168.1.100:80 (the :80 part is the port)
    • +
    • [2001:db8:85a3:8d3:1319:8a2e:370:7348]:443 (:443 is the port)
    • +
    +

    This means that you don’t have to worry about information intended for your +web browser being accidentally read by your email client.

    +
    +

    There are certain ports which are commonly understood to belong to given +applications or protocols:

    +
    +
      +
    • 80/443 - HTTP/HTTPS
    • +
    • 20 - FTP
    • +
    • 22 - SSH
    • +
    • 23 - Telnet
    • +
    • 25 - SMTP
    • +
    • ...
    • +
    +

    These ports are often referred to as well-known ports

    +

    (see http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers)

    +
    +

    Ports are grouped into a few different classes

    +
      +
    • Ports numbered 0 - 1023 are reserved
    • +
    • Ports numbered 1024 - 65535 are open
    • +
    • Ports numbered 1024 - 49151 may be registered
    • +
    • Ports numbered 49152 - 65535 are called ephemeral
    • +
    +
    +
    +

    The TCP/IP Stack - Application¶

    +

    The topmost layer is the ‘Application Layer’

    +
    +
      +
    • Deals directly with data produced or consumed by an application
    • +
    • Reads or writes data using a set of understood, well-defined protocols
        +
      • HTTP, SMTP, FTP etc.
      • +
      +
    • +
    • Does not know (or need to know) about lower layer functionality
        +
      • The exception to this rule is endpoint data (or IP:Port)
      • +
      +
    • +
    +

    this is where we live and work

    +
    +
    +
    +

    Sockets¶

    +

    Think back for a second to what we just finished discussing, the TCP/IP stack.

    +
    +
      +
    • The Internet layer gives us an IP Address
    • +
    • The Transport layer establishes the idea of a port.
    • +
    • The Application layer doesn’t care about what happens below...
    • +
    • Except for endpoint data (IP:Port)
    • +
    +

    A Socket is the software representation of that endpoint.

    +

    Opening a socket creates a kind of transceiver that can send and/or +receive bytes at a given IP address and Port.

    +
    +
    +
    +

    Sockets in Python¶

    +

    Python provides a standard library module which provides socket functionality. +It is called socket.

    +
    +

    The library is really just a very thin wrapper around the system +implementation of BSD Sockets

    +

    Let’s spend a few minutes getting to know this module.

    +

    We’re going to do this next part together, so open up a terminal and start +a python interpreter

    +
    +

    The Python sockets library allows us to find out what port a service uses:

    +
    +
    >>> import socket
    +>>> socket.getservbyname('ssh')
    +22
    +
    +
    +

    You can also do a reverse lookup, finding what service uses a given port:

    +
    >>> socket.getservbyport(80)
    +'http'
    +
    +
    +
    +

    The sockets library also provides tools for finding out information about +hosts. For example, you can find out about the hostname and IP address of +the machine you are currently using:

    +
    >>> socket.gethostname()
    +'heffalump.local'
    +>>> socket.gethostbyname(socket.gethostname())
    +'10.211.55.2'
    +
    +
    +

    You can also find out about machines that are located elsewhere, assuming you +know their hostname. For example:

    +
    >>> socket.gethostbyname('google.com')
    +'173.194.33.4'
    +>>> socket.gethostbyname('uw.edu')
    +'128.95.155.135'
    +>>> socket.gethostbyname('crisewing.com')
    +'108.59.11.99'
    +
    +
    +

    The gethostbyname_ex method of the socket library provides more +information about the machines we are exploring:

    +
    >>> socket.gethostbyname_ex('google.com')
    +('google.com', [], ['173.194.33.9', '173.194.33.14',
    +                    ...
    +                    '173.194.33.6', '173.194.33.7',
    +                    '173.194.33.8'])
    +>>> socket.gethostbyname_ex('crisewing.com')
    +('crisewing.com', [], ['108.59.11.99'])
    +>>> socket.gethostbyname_ex('www.rad.washington.edu')
    +('elladan.rad.washington.edu', # <- canonical hostname
    + ['www.rad.washington.edu'], # <- any machine aliases
    + ['128.95.247.84']) # <- all active IP addresses
    +
    +
    +

    To create a socket, you use the socket method of the socket library. +It takes up to three optional positional arguments (here we use none to get +the default behavior):

    +
    >>> foo = socket.socket()
    +>>> foo
    +<socket._socketobject object at 0x10046cec0>
    +
    +
    +

    A socket has some properties that are immediately important to us. These +include the family, type and protocol of the socket:

    +
    +
    >>> foo.family
    +2
    +>>> foo.type
    +1
    +>>> foo.proto
    +0
    +
    +
    +

    You might notice that the values for these properties are integers. In +fact, these integers are constants defined in the socket library.

    +
    +

    Let’s define a method in place to help us see these constants. It will take a +single argument, the shared prefix for a defined set of constants:

    +
    +

    (you can also find this in resources/session04/socket_tools.py)

    +
    >>> def get_constants(prefix):
    +...     """mapping of socket module constants to their names."""
    +...     return dict(
    +...         (getattr(socket, n), n)
    +...         for n in dir(socket)
    +...         if n.startswith(prefix)
    +...     )
    +...
    +>>>
    +
    +
    +
    +
    +
    +

    Socket Families¶

    +

    Think back a moment to our discussion of the Internet layer of the TCP/IP +stack. There were a couple of different types of IP addresses:

    +
    +
      +
    • IPv4 (‘192.168.1.100’)
    • +
    • IPv6 (‘2001:0db8:85a3:0042:0000:8a2e:0370:7334’)
    • +
    +

    The family of a socket corresponds to the addressing system it uses +for connecting.

    +
    +

    Families defined in the socket library are prefixed by AF_:

    +
    +
    >>> families = get_constants('AF_')
    +>>> families
    +{0: 'AF_UNSPEC', 1: 'AF_UNIX', 2: 'AF_INET',
    + 11: 'AF_SNA', 12: 'AF_DECnet', 16: 'AF_APPLETALK',
    + 17: 'AF_ROUTE', 23: 'AF_IPX', 30: 'AF_INET6'}
    +
    +
    +

    Your results may vary

    +

    Of all of these, the ones we care most about are 2 (IPv4) and 30 +(IPv6).

    +
    +

    When you are on a machine with an operating system that is Unix-like, you will +find another generally useful socket family: AF_UNIX, or Unix Domain +Sockets. Sockets in this family:

    +
      +
    • connect processes on the same machine
    • +
    • are generally a bit slower than IPC connnections
    • +
    • have the benefit of allowing the same API for programs that might run on one +machine __or__ across the network
    • +
    • use an ‘address’ that looks like a pathname (‘/tmp/foo.sock’)
    • +
    +

    What is the default family for the socket we created just a moment ago?

    +
    +

    (remember we bound the socket to the symbol foo)

    +

    How did you figure this out?

    +
    +
    +
    +

    Socket Types¶

    +

    The socket type determines the semantics of socket communications.

    +
    +

    Look up socket type constants with the SOCK_ prefix:

    +
    >>> types = get_constants('SOCK_')
    +>>> types
    +{1: 'SOCK_STREAM', 2: 'SOCK_DGRAM',
    + ...}
    +
    +
    +

    The most common are 1 (Stream communication (TCP)) and 2 (Datagram +communication (UDP)).

    +
    +

    What is the default type for our generic socket, foo?

    +
    +
    +

    Socket Protocols¶

    +

    A socket also has a designated protocol. The constants for these are +prefixed by IPPROTO_:

    +
    +
    >>> protocols = get_constants('IPPROTO_')
    +>>> protocols
    +{0: 'IPPROTO_IP', 1: 'IPPROTO_ICMP',
    + ...,
    + 255: 'IPPROTO_RAW'}
    +
    +
    +

    The choice of which protocol to use for a socket is determined by the +internet layer protocol you intend to use. TCP? UDP? ICMP? +IGMP?

    +
    +

    What is the default protocol used by our generic socket, foo?

    +
    +
    +

    Customizing Sockets¶

    +

    These three properties of a socket correspond to the three positional +arguments you may pass to the socket constructor.

    +
    +

    Using them allows you to create sockets with specific communications +profiles:

    +
    >>> bar = socket.socket(socket.AF_INET,
    +...                     socket.SOCK_DGRAM,
    +...                     socket.IPPROTO_UDP)
    +...
    +>>> bar
    +<socket._socketobject object at 0x1005b8b40>
    +
    +
    +
    +
    +
    +

    Break Time¶

    +

    So far we have:

    +
    +
      +
    • learned about the “layers” of the TCP/IP Stack
    • +
    • discussed families, types and protocols in sockets
    • +
    • learned how to create sockets with a specific communications profile.
    • +
    +

    When we return we’ll learn how to find the communcations profiles of remote +sockets, how to connect to them, and how to send and receive messages.

    +

    Take a few minutes now to clear your head (do not quit your python +interpreter).

    +
    +
    +
    +

    Address Information¶

    +

    When you are creating a socket to communicate with a remote service, the +remote socket will have a specific communications profile.

    +
    +

    The local socket you create must match that communications profile.

    +

    How can you determine the correct values to use?

    +

    You ask.

    +
    +

    The function socket.getaddrinfo provides information about available +connections on a given host.

    +
    socket.getaddrinfo('127.0.0.1', 80)
    +
    +
    +
    +

    This provides all you need to make a proper connection to a socket on a +remote host. The value returned is a tuple of:

    +
      +
    • socket family
    • +
    • socket type
    • +
    • socket protocol
    • +
    • canonical name (usually empty, unless requested by flag)
    • +
    • socket address (tuple of IP and Port)
    • +
    +
    +

    Again, let’s create a utility method in-place so we can see this in action:

    +
    >>> def get_address_info(host, port):
    +...     for response in socket.getaddrinfo(host, port):
    +...         fam, typ, pro, nam, add = response
    +...         print 'family: ', families[fam]
    +...         print 'type: ', types[typ]
    +...         print 'protocol: ', protocols[pro]
    +...         print 'canonical name: ', nam
    +...         print 'socket address: ', add
    +...         print
    +...
    +>>>
    +
    +
    +

    (you can also find this in resources/session01/session1.py)

    +

    Now, ask your own machine what possible connections are available for ‘http’:

    +
    +
    >>> get_address_info(socket.gethostname(), 'http')
    +family:  AF_INET
    +type:  SOCK_DGRAM
    +protocol:  IPPROTO_UDP
    +canonical name:
    +socket address:  ('10.211.55.2', 80)
    +
    +family:  AF_INET
    +...
    +>>>
    +
    +
    +

    What answers do you get?

    +
    +
    >>> get_address_info('crisewing.com', 'http')
    +family:  AF_INET
    +type:  SOCK_DGRAM
    +...
    +
    +family:  AF_INET
    +type:  SOCK_STREAM
    +...
    +>>>
    +
    +
    +
    +Try a few other servers you know about.
    +
    +
    +
    +

    Client Side¶

    +
    +

    Let’s put this to use

    +

    We’ll communicate with a remote server as a client

    +
    +
    +

    Construct a Socket¶

    +

    We’ve already made a socket foo using the generic constructor without any +arguments. We can make a better one now by using real address information from +a real server online [do not type this yet]:

    +
    >>> streams = [info
    +...     for info in socket.getaddrinfo('crisewing.com', 'http')
    +...     if info[1] == socket.SOCK_STREAM]
    +>>> streams
    +[(2, 1, 6, '', ('108.59.11.99', 80))]
    +>>> info = streams[0]
    +>>> cewing_socket = socket.socket(*info[:3])
    +
    +
    +
    +
    +

    Connecting a Socket¶

    +

    Once the socket is constructed with the appropriate family, type and +protocol, we can connect it to the address of our remote server:

    +
    >>> cewing_socket.connect(info[-1])
    +>>>
    +
    +
    +
      +
    • a successful connection returns None
    • +
    • a failed connection raises an error
    • +
    • you can use the type of error returned to tell why the connection failed.
    • +
    +
    +
    +

    Sending a Message¶

    +

    Send a message to the server on the other end of our connection (we’ll +learn in session 2 about the message we are sending):

    +
    >>> msg = "GET / HTTP/1.1\r\n"
    +>>> msg += "Host: crisewing.com\r\n\r\n"
    +>>> cewing_socket.sendall(msg)
    +>>>
    +
    +
    +
      +
    • the transmission continues until all data is sent or an error occurs
    • +
    • success returns None
    • +
    • failure to send raises an error
    • +
    • you can use the type of error to figure out why the transmission failed
    • +
    • if an error occurs you cannot know how much, if any, of your data was +sent
    • +
    +
    +
    +

    Receiving a Reply¶

    +

    Whatever reply we get is received by the socket we created. We can read it +back out (again, do not type this yet):

    +
    >>> response = cewing_socket.recv(4096)
    +>>> response
    +'HTTP/1.1 200 OK\r\nDate: Thu, 03 Jan 2013 05:56:53
    +...
    +
    +
    +
      +
    • The sole required argument is buffer_size (an integer). It should be a +power of 2 and smallish (~4096)
    • +
    • It returns a byte string of buffer_size (or smaller if less data was +received)
    • +
    • If the response is longer than buffer size, you can call the method +repeatedly. The last bunch will be less than buffer size.
    • +
    +
    +
    +

    Cleaning Up¶

    +

    When you are finished with a connection, you should always close it:

    +
    >>> cewing_socket.close()
    +
    +
    +
    +
    +

    Putting it all together¶

    +

    First, connect and send a message:

    +
    >>> streams = [info
    +...     for info in socket.getaddrinfo('crisewing.com', 'http')
    +...     if info[1] == socket.SOCK_STREAM]
    +>>> info = streams[0]
    +>>> cewing_socket = socket.socket(*info[:3])
    +>>> cewing_socket.connect(info[-1])
    +>>> msg = "GET / HTTP/1.1\r\n"
    +>>> msg += "Host: crisewing.com\r\n\r\n"
    +>>> cewing_socket.sendall(msg)
    +
    +
    +

    Then, receive a reply, iterating until it is complete:

    +
    >>> buffsize = 4096
    +>>> response = ''
    +>>> done = False
    +>>> while not done:
    +...     msg_part = cewing_socket.recv(buffsize)
    +...     if len(msg_part) < buffsize:
    +...         done = True
    +...         cewing_socket.close()
    +...     response += msg_part
    +...
    +>>> len(response)
    +19427
    +
    +
    +
    +
    +
    +

    Server Side¶

    +
    +

    What about the other half of the equation?

    +

    Let’s build a server and see how that part works.

    +
    +
    +

    Construct a Socket¶

    +

    For the moment, stop typing this into your interpreter.

    +
    +

    Again, we begin by constructing a socket. Since we are actually the server +this time, we get to choose family, type and protocol:

    +
    >>> server_socket = socket.socket(
    +...     socket.AF_INET,
    +...     socket.SOCK_STREAM,
    +...     socket.IPPROTO_TCP)
    +...
    +>>> server_socket
    +<socket._socketobject object at 0x100563c90>
    +
    +
    +
    +
    +
    +

    Bind the Socket¶

    +

    Our server socket needs to be bound to an address. This is the IP Address +and Port to which clients must connect:

    +
    +
    >>> address = ('127.0.0.1', 50000)
    +>>> server_socket.bind(address)
    +
    +
    +

    Terminology Note: In a server/client relationship, the server binds +to an address and port. The client connects

    +
    +
    +
    +

    Listen for Connections¶

    +

    Once our socket is bound to an address, we can listen for attempted +connections:

    +
    >>> server_socket.listen(1)
    +
    +
    +
      +
    • The argument to listen is the backlog
    • +
    • The backlog is the maximum number of connection requests that the +socket will queue
    • +
    • Once the limit is reached, the socket refuses new connections.
    • +
    +
    +
    +

    Accept Incoming Messages¶

    +

    When a socket is listening, it can receive incoming connection requests:

    +
    >>> connection, client_address = server_socket.accept()
    +... # this blocks until a client connects
    +>>> connection.recv(16)
    +
    +
    +
      +
    • The connection returned by a call to accept is a new socket. +This new socket is used to communicate with the client
    • +
    • The client_address is a two-tuple of IP Address and Port for the client +socket
    • +
    • When a connection request is ‘accepted’, it is removed from the backlog +queue.
    • +
    +
    +
    +

    Send a Reply¶

    +

    The same socket that received a message from the client may be used to return +a reply:

    +
    >>> connection.sendall("message received")
    +
    +
    +
    +
    +

    Clean Up¶

    +

    Once a transaction between the client and server is complete, the +connection socket should be closed:

    +
    +
    >>> connection.close()
    +
    +
    +

    Note that the server_socket is never closed as long as the server +continues to run.

    +
    +
    +
    +
    +

    Getting the Flow¶

    +
    +

    The flow of this interaction can be a bit confusing. Let’s see it in +action step-by-step.

    +
    +
    +Open a second python interpreter and place it next to your first so +you can see both of them at the same time.
    +
    +
    +
    +

    Create a Server¶

    +

    In your first python interpreter, create a server socket and prepare it for +connections:

    +
    +
    >>> server_socket = socket.socket(
    +...     socket.AF_INET,
    +...     socket.SOCK_STREAM,
    +...     socket.IPPROTO_IP)
    +>>> server_socket.bind(('127.0.0.1', 50000))
    +>>> server_socket.listen(1)
    +>>> conn, addr = server_socket.accept()
    +
    +
    +

    At this point, you should not get back a prompt. The server socket is +waiting for a connection to be made.

    +
    +
    +
    +

    Create a Client¶

    +

    In your second interpreter, create a client socket and prepare to send a +message:

    +
    +
    >>> import socket
    +>>> client_socket = socket.socket(
    +...     socket.AF_INET,
    +...     socket.SOCK_STREAM,
    +...     socket.IPPROTO_IP)
    +
    +
    +

    Before connecting, keep your eye on the server interpreter:

    +
    >>> client_socket.connect(('127.0.0.1', 50000))
    +
    +
    +
    +
    +
    +

    Send a Message Client->Server¶

    +

    As soon as you made the connection above, you should have seen the prompt +return in your server interpreter. The accept method finally returned a +new connection socket.

    +
    +

    When you’re ready, type the following in the client interpreter:

    +
    >>> client_socket.sendall("Hey, can you hear me?")
    +
    +
    +
    +
    +
    +

    Receive and Respond¶

    +

    Back in your server interpreter, go ahead and receive the message from your +client:

    +
    +
    >>> conn.recv(32)
    +'Hey, can you hear me?'
    +
    +
    +

    Send a message back, and then close up your connection:

    +
    >>> conn.sendall("Yes, I hear you.")
    +>>> conn.close()
    +
    +
    +
    +
    +
    +

    Finish Up¶

    +

    Back in your client interpreter, take a look at the response to your message, +then be sure to close your client socket too:

    +
    +
    >>> client_socket.recv(32)
    +'Yes, I hear you.'
    +>>> client_socket.close()
    +
    +
    +

    And now that we’re done, we can close up the server too (back in the server +interpreter):

    +
    >>> server_socket.close()
    +
    +
    +
    +

    You’ve run your first client-server interaction

    +
    +
    +
    +

    Homework¶

    +
    +

    Your homework assignment for this week is to take what you’ve learned here +and build a simple “echo” server.

    +
    +

    The server should automatically return to any client that connects exactly +what it receives (it should echo all messages).

    +

    You will also write a python script that, when run, will send a message to the +server and receive the reply, printing it to stdout.

    +

    Finally, you’ll do all of this so that it can be tested.

    +
    +
    +
    +

    Your Task¶

    +

    In our class repository, there is a folder resources/session04.

    +
    +

    Inside that folder, you should find:

    +
      +
    • A file tasks.txt that contains these instructions
    • +
    • A skeleton for your server in echo_server.py
    • +
    • A skeleton for your client script in echo_client.py
    • +
    • Some simple tests in tests.py
    • +
    +

    Your task is to make the tests pass.

    +
    +
    +
    +

    Running the Tests¶

    +

    To run the tests, you’ll have to set the server running in one terminal:

    +
    +
    $ python echo_server.py
    +
    +
    +

    Then, in a second terminal, you will execute the tests:

    +
    $ python tests.py
    +
    +
    +

    You should see output like this:

    +
    [...]
    +FAILED (failures=2)
    +
    +
    +
    +
    +
    +

    Submitting Your Homework¶

    +

    To submit your homework:

    +
    +
      +
    • Create a new repository in GitHub. Call it echo_sockets.
    • +
    • Put the echo_server.py, echo_client.py and tests.py files in +this repository.
    • +
    • Send Maria and I an email with a link to your repository when you are +done.
    • +
    +

    We will clone your repository and run the tests as described above.

    +

    And we’ll make comments inline on your repository.

    +
    +
    +
    +

    Going Further¶

    +

    In assignments/session01/tasks.txt you’ll find a few extra problems to try.

    +
    +

    If you finish the first part of the homework in less than 3-4 hours give +one or more of these a whirl.

    +

    They are not required, but if you include solutions in your repository, +we’ll review your work.

    +
    +
    +
    +
    + + +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/slides/_images/data_in_tcpip_stack.png b/slides/_images/data_in_tcpip_stack.png new file mode 100644 index 0000000000000000000000000000000000000000..42fde385ea0171251a1eab284c6f5775413ef970 GIT binary patch literal 11078 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 literal 0 HcmV?d00001 diff --git a/slides/_images/network_topology.png b/slides/_images/network_topology.png new file mode 100644 index 0000000000000000000000000000000000000000..24a8494ca20a4a3b3cb219ab1fd186272551780f GIT binary patch literal 27152 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 KNLGp)1pW`#IK1Ql literal 0 HcmV?d00001 diff --git a/slides/_sources/presentations/session04.txt b/slides/_sources/presentations/session04.txt new file mode 100644 index 00000000..62570249 --- /dev/null +++ b/slides/_sources/presentations/session04.txt @@ -0,0 +1,1177 @@ +********************** +Python Web Programming +********************** + +.. figure:: /_static/python.png + :align: center + :width: 33% + +Session 4: Networking and Sockets + + +Computer Communications +======================= + +.. rst-class:: left +.. container:: + + We've spent the first few weeks of this course building and deploying a + simple web application. + + .. rst-class:: build + .. container:: + + now it's time to step back and look at the technologies underlying the + work we've done. + + We'll begin by discussing the basics of networking computers. + + You'll learn a bit here about how computers talk to each other across a + distance. + +TCP/IP +------ + +.. figure:: /_static/network_topology.png + :align: left + + http://en.wikipedia.org/wiki/Internet_Protocol_Suite + +.. rst-class:: build + +* processes can communicate +* inside one machine +* between two machines +* among many machines + + +.. nextslide:: + +.. figure:: /_static/data_in_tcpip_stack.png + :align: left + :width: 100% + + http://en.wikipedia.org/wiki/Internet_Protocol_Suite + +.. rst-class:: build + +* Process divided into 'layers' +* 'Layers' are mostly arbitrary +* Different descriptions have different layers +* Most common is the 'TCP/IP Stack' + + +The TCP/IP Stack - Link +----------------------- + +The bottom layer is the 'Link Layer' + +.. rst-class:: build + +* Deals with the physical connections between machines, 'the wire' + +* Packages data for physical transport + +* Executes transmission over a physical medium + + .. rst-class:: build + + * what that medium is is arbitrary + +* Implemented in the Network Interface Card(s) (NIC) in your computer + + +The TCP/IP Stack - Internet +--------------------------- + +Moving up, we have the 'Internet Layer' + +.. rst-class:: build + +* Deals with addressing and routing + + .. rst-class:: build + + * Where are we going and how do we get there? + +* Agnostic as to physical medium (IP over Avian Carrier - IPoAC) + +* Makes no promises of reliability + +* Two addressing systems + + .. rst-class:: build + + * IPv4 (current, limited '192.168.1.100') + + * IPv6 (future, 3.4 x 10^38 addresses, '2001:0db8:85a3:0042:0000:8a2e:0370:7334') + + +.. nextslide:: + +.. rst-class:: large center + +That's 4.3 x 10^28 addresses *per person alive today* + + +The TCP/IP Stack - Transport +---------------------------- + +Next up is the 'Transport Layer' + +.. rst-class:: build + +* Deals with transmission and reception of data + + * error correction, flow control, congestion management + +* Common protocols include TCP & UDP + + * TCP: Tranmission Control Protocol + + * UDP: User Datagram Protocol + +* Not all Transport Protocols are 'reliable' + + .. rst-class:: build + + * TCP ensures that dropped packets are resent + + * UDP makes no such assurance + + * Reliability is slow and expensive + + +.. nextslide:: + +The 'Transport Layer' also establishes the concept of a **port** + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * IP Addresses designate a specific *machine* on the network + + * A **port** provides addressing for individual *applications* in a single + host + + * 192.168.1.100:80 (the *:80* part is the **port**) + + * [2001:db8:85a3:8d3:1319:8a2e:370:7348]:443 (*:443* is the **port**) + + This means that you don't have to worry about information intended for your + web browser being accidentally read by your email client. + + +.. nextslide:: + +There are certain **ports** which are commonly understood to belong to given +applications or protocols: + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * 80/443 - HTTP/HTTPS + * 20 - FTP + * 22 - SSH + * 23 - Telnet + * 25 - SMTP + * ... + + These ports are often referred to as **well-known ports** + + .. rst-class:: small + + (see http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers) + +.. nextslide:: + +Ports are grouped into a few different classes + +.. rst-class:: build + +* Ports numbered 0 - 1023 are *reserved* + +* Ports numbered 1024 - 65535 are *open* + +* Ports numbered 1024 - 49151 may be *registered* + +* Ports numbered 49152 - 65535 are called *ephemeral* + + +The TCP/IP Stack - Application +------------------------------ + +The topmost layer is the 'Application Layer' + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * Deals directly with data produced or consumed by an application + + * Reads or writes data using a set of understood, well-defined **protocols** + + * HTTP, SMTP, FTP etc. + + * Does not know (or need to know) about lower layer functionality + + * The exception to this rule is **endpoint** data (or IP:Port) + + .. rst-class:: centered + + **this is where we live and work** + + +Sockets +------- + +Think back for a second to what we just finished discussing, the TCP/IP stack. + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * The *Internet* layer gives us an **IP Address** + + * The *Transport* layer establishes the idea of a **port**. + + * The *Application* layer doesn't care about what happens below... + + * *Except for* **endpoint data** (IP:Port) + + A **Socket** is the software representation of that endpoint. + + Opening a **socket** creates a kind of transceiver that can send and/or + receive *bytes* at a given IP address and Port. + + +Sockets in Python +----------------- + +Python provides a standard library module which provides socket functionality. +It is called **socket**. + +.. rst-class:: build +.. container:: + + The library is really just a very thin wrapper around the system + implementation of *BSD Sockets* + + Let's spend a few minutes getting to know this module. + + We're going to do this next part together, so open up a terminal and start + a python interpreter + + +.. nextslide:: + +The Python sockets library allows us to find out what port a *service* uses: + +.. rst-class:: build +.. container:: + + .. code-block:: pycon + + >>> import socket + >>> socket.getservbyname('ssh') + 22 + + You can also do a *reverse lookup*, finding what service uses a given *port*: + + .. code-block:: pycon + + >>> socket.getservbyport(80) + 'http' + + +.. nextslide:: + +The sockets library also provides tools for finding out information about +*hosts*. For example, you can find out about the hostname and IP address of +the machine you are currently using: + +.. code-block:: pycon + + >>> socket.gethostname() + 'heffalump.local' + >>> socket.gethostbyname(socket.gethostname()) + '10.211.55.2' + +.. nextslide:: + +You can also find out about machines that are located elsewhere, assuming you +know their hostname. For example: + +.. code-block:: pycon + + >>> socket.gethostbyname('google.com') + '173.194.33.4' + >>> socket.gethostbyname('uw.edu') + '128.95.155.135' + >>> socket.gethostbyname('crisewing.com') + '108.59.11.99' + + +.. nextslide:: + +The ``gethostbyname_ex`` method of the ``socket`` library provides more +information about the machines we are exploring: + +.. code-block:: pycon + + >>> socket.gethostbyname_ex('google.com') + ('google.com', [], ['173.194.33.9', '173.194.33.14', + ... + '173.194.33.6', '173.194.33.7', + '173.194.33.8']) + >>> socket.gethostbyname_ex('crisewing.com') + ('crisewing.com', [], ['108.59.11.99']) + >>> socket.gethostbyname_ex('www.rad.washington.edu') + ('elladan.rad.washington.edu', # <- canonical hostname + ['www.rad.washington.edu'], # <- any machine aliases + ['128.95.247.84']) # <- all active IP addresses + +.. nextslide:: + +To create a socket, you use the **socket** method of the ``socket`` library. +It takes up to three optional positional arguments (here we use none to get +the default behavior): + +.. code-block:: pycon + + >>> foo = socket.socket() + >>> foo + + +.. nextslide:: + +A socket has some properties that are immediately important to us. These +include the *family*, *type* and *protocol* of the socket: + +.. rst-class:: build +.. container:: + + .. code-block:: pycon + + >>> foo.family + 2 + >>> foo.type + 1 + >>> foo.proto + 0 + + You might notice that the values for these properties are integers. In + fact, these integers are **constants** defined in the socket library. + + +.. nextslide:: A quick utility method + +Let's define a method in place to help us see these constants. It will take a +single argument, the shared prefix for a defined set of constants: + +.. rst-class:: build +.. container:: + + (you can also find this in ``resources/session04/socket_tools.py``) + + .. code-block:: pycon + + >>> def get_constants(prefix): + ... """mapping of socket module constants to their names.""" + ... return dict( + ... (getattr(socket, n), n) + ... for n in dir(socket) + ... if n.startswith(prefix) + ... ) + ... + >>> + +Socket Families +--------------- + +Think back a moment to our discussion of the *Internet* layer of the TCP/IP +stack. There were a couple of different types of IP addresses: + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * IPv4 ('192.168.1.100') + + * IPv6 ('2001:0db8:85a3:0042:0000:8a2e:0370:7334') + + + The **family** of a socket corresponds to the *addressing system* it uses + for connecting. + +.. nextslide:: + +Families defined in the ``socket`` library are prefixed by ``AF_``: + +.. rst-class:: build +.. container:: + + .. code-block:: pycon + + >>> families = get_constants('AF_') + >>> families + {0: 'AF_UNSPEC', 1: 'AF_UNIX', 2: 'AF_INET', + 11: 'AF_SNA', 12: 'AF_DECnet', 16: 'AF_APPLETALK', + 17: 'AF_ROUTE', 23: 'AF_IPX', 30: 'AF_INET6'} + + *Your results may vary* + + Of all of these, the ones we care most about are ``2`` (IPv4) and ``30`` + (IPv6). + + +.. nextslide:: Unix Domain Sockets + + +When you are on a machine with an operating system that is Unix-like, you will +find another generally useful socket family: ``AF_UNIX``, or Unix Domain +Sockets. Sockets in this family: + +.. rst-class:: build + +* connect processes **on the same machine** + +* are generally a bit slower than IPC connnections + +* have the benefit of allowing the same API for programs that might run on one + machine __or__ across the network + +* use an 'address' that looks like a pathname ('/tmp/foo.sock') + + +.. nextslide:: Test your skills + +What is the *default* family for the socket we created just a moment ago? + +.. rst-class:: build +.. container:: + + (remember we bound the socket to the symbol ``foo``) + + How did you figure this out? + + +Socket Types +------------ + +The socket *type* determines the semantics of socket communications. + +.. rst-class:: build +.. container:: + + Look up socket type constants with the ``SOCK_`` prefix: + + .. code-block:: pycon + + >>> types = get_constants('SOCK_') + >>> types + {1: 'SOCK_STREAM', 2: 'SOCK_DGRAM', + ...} + + The most common are ``1`` (Stream communication (TCP)) and ``2`` (Datagram + communication (UDP)). + + +.. nextslide:: Test your skills + +What is the *default* type for our generic socket, ``foo``? + + +Socket Protocols +---------------- + +A socket also has a designated *protocol*. The constants for these are +prefixed by ``IPPROTO_``: + +.. rst-class:: build +.. container:: + + .. code-block:: pycon + + >>> protocols = get_constants('IPPROTO_') + >>> protocols + {0: 'IPPROTO_IP', 1: 'IPPROTO_ICMP', + ..., + 255: 'IPPROTO_RAW'} + + The choice of which protocol to use for a socket is determined by the + *internet layer* protocol you intend to use. ``TCP``? ``UDP``? ``ICMP``? + ``IGMP``? + + +.. nextslide:: Test your skills + +What is the *default* protocol used by our generic socket, ``foo``? + + +Customizing Sockets +------------------- + +These three properties of a socket correspond to the three positional +arguments you may pass to the socket constructor. + +.. rst-class:: build +.. container:: + + Using them allows you to create sockets with specific communications + profiles: + + .. code-block:: pycon + + >>> bar = socket.socket(socket.AF_INET, + ... socket.SOCK_DGRAM, + ... socket.IPPROTO_UDP) + ... + >>> bar + + + +Break Time +---------- + +So far we have: + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * learned about the "layers" of the TCP/IP Stack + * discussed *families*, *types* and *protocols* in sockets + * learned how to create sockets with a specific communications profile. + + When we return we'll learn how to find the communcations profiles of remote + sockets, how to connect to them, and how to send and receive messages. + + Take a few minutes now to clear your head (do not quit your python + interpreter). + + +Address Information +------------------- + +When you are creating a socket to communicate with a remote service, the +remote socket will have a specific communications profile. + +.. rst-class:: build +.. container:: + + The local socket you create must match that communications profile. + + How can you determine the *correct* values to use? + + .. rst-class:: centered + + **You ask.** + +.. nextslide:: + +The function ``socket.getaddrinfo`` provides information about available +connections on a given host. + +.. code-block:: python + + socket.getaddrinfo('127.0.0.1', 80) + +.. rst-class:: build +.. container:: + + This provides all you need to make a proper connection to a socket on a + remote host. The value returned is a tuple of: + + .. rst-class:: build + + * socket family + * socket type + * socket protocol + * canonical name (usually empty, unless requested by flag) + * socket address (tuple of IP and Port) + + +.. nextslide:: A quick utility method + +Again, let's create a utility method in-place so we can see this in action: + +.. code-block:: pycon + + >>> def get_address_info(host, port): + ... for response in socket.getaddrinfo(host, port): + ... fam, typ, pro, nam, add = response + ... print 'family: ', families[fam] + ... print 'type: ', types[typ] + ... print 'protocol: ', protocols[pro] + ... print 'canonical name: ', nam + ... print 'socket address: ', add + ... print + ... + >>> + +(you can also find this in ``resources/session01/session1.py``) + + +.. nextslide:: On Your Own Machine + +Now, ask your own machine what possible connections are available for 'http': + +.. rst-class:: build +.. container:: + + .. code-block:: pycon + + >>> get_address_info(socket.gethostname(), 'http') + family: AF_INET + type: SOCK_DGRAM + protocol: IPPROTO_UDP + canonical name: + socket address: ('10.211.55.2', 80) + + family: AF_INET + ... + >>> + + What answers do you get? + + +.. nextslide:: On the Internet + +.. code-block:: pycon + + >>> get_address_info('crisewing.com', 'http') + family: AF_INET + type: SOCK_DGRAM + ... + + family: AF_INET + type: SOCK_STREAM + ... + >>> + +.. rst-class:: build +.. container:: + + Try a few other servers you know about. + + +Client Side +=========== + +.. rst-class:: build +.. container:: + + .. rst-class:: large + + Let's put this to use + + We'll communicate with a remote server as a *client* + + +Construct a Socket +------------------ + +We've already made a socket ``foo`` using the generic constructor without any +arguments. We can make a better one now by using real address information from +a real server online [**do not type this yet**]: + +.. code-block:: pycon + + >>> streams = [info + ... for info in socket.getaddrinfo('crisewing.com', 'http') + ... if info[1] == socket.SOCK_STREAM] + >>> streams + [(2, 1, 6, '', ('108.59.11.99', 80))] + >>> info = streams[0] + >>> cewing_socket = socket.socket(*info[:3]) + + +Connecting a Socket +------------------- + +Once the socket is constructed with the appropriate *family*, *type* and +*protocol*, we can connect it to the address of our remote server: + +.. code-block:: pycon + + >>> cewing_socket.connect(info[-1]) + >>> + +.. rst-class:: build + +* a successful connection returns ``None`` + +* a failed connection raises an error + +* you can use the *type* of error returned to tell why the connection failed. + + +Sending a Message +----------------- + +Send a message to the server on the other end of our connection (we'll +learn in session 2 about the message we are sending): + +.. code-block:: pycon + + >>> msg = "GET / HTTP/1.1\r\n" + >>> msg += "Host: crisewing.com\r\n\r\n" + >>> cewing_socket.sendall(msg) + >>> + +.. rst-class:: build small + +* the transmission continues until all data is sent or an error occurs + +* success returns ``None`` + +* failure to send raises an error + +* you can use the type of error to figure out why the transmission failed + +* if an error occurs you **cannot** know how much, if any, of your data was + sent + + +Receiving a Reply +----------------- + +Whatever reply we get is received by the socket we created. We can read it +back out (again, **do not type this yet**): + +.. code-block:: pycon + + >>> response = cewing_socket.recv(4096) + >>> response + 'HTTP/1.1 200 OK\r\nDate: Thu, 03 Jan 2013 05:56:53 + ... + +.. rst-class:: build + +* The sole required argument is ``buffer_size`` (an integer). It should be a + power of 2 and smallish (~4096) +* It returns a byte string of ``buffer_size`` (or smaller if less data was + received) +* If the response is longer than ``buffer size``, you can call the method + repeatedly. The last bunch will be less than ``buffer size``. + + +Cleaning Up +----------- + +When you are finished with a connection, you should always close it:: + + >>> cewing_socket.close() + + +Putting it all together +----------------------- + +First, connect and send a message: + +.. code-block:: pycon + + >>> streams = [info + ... for info in socket.getaddrinfo('crisewing.com', 'http') + ... if info[1] == socket.SOCK_STREAM] + >>> info = streams[0] + >>> cewing_socket = socket.socket(*info[:3]) + >>> cewing_socket.connect(info[-1]) + >>> msg = "GET / HTTP/1.1\r\n" + >>> msg += "Host: crisewing.com\r\n\r\n" + >>> cewing_socket.sendall(msg) + + +.. nextslide:: + +Then, receive a reply, iterating until it is complete: + +.. code-block:: pycon + + >>> buffsize = 4096 + >>> response = '' + >>> done = False + >>> while not done: + ... msg_part = cewing_socket.recv(buffsize) + ... if len(msg_part) < buffsize: + ... done = True + ... cewing_socket.close() + ... response += msg_part + ... + >>> len(response) + 19427 + + +Server Side +=========== + +.. rst-class:: build +.. container:: + + .. rst-class:: large + + What about the other half of the equation? + + Let's build a server and see how that part works. + +Construct a Socket +------------------ + +**For the moment, stop typing this into your interpreter.** + +.. rst-class:: build +.. container:: + + Again, we begin by constructing a socket. Since we are actually the server + this time, we get to choose family, type and protocol: + + .. code-block:: pycon + + >>> server_socket = socket.socket( + ... socket.AF_INET, + ... socket.SOCK_STREAM, + ... socket.IPPROTO_TCP) + ... + >>> server_socket + + + +Bind the Socket +--------------- + +Our server socket needs to be **bound** to an address. This is the IP Address +and Port to which clients must connect: + +.. rst-class:: build +.. container:: + + .. code-block:: pycon + + >>> address = ('127.0.0.1', 50000) + >>> server_socket.bind(address) + + **Terminology Note**: In a server/client relationship, the server *binds* + to an address and port. The client *connects* + +Listen for Connections +---------------------- + +Once our socket is bound to an address, we can listen for attempted +connections: + +.. code-block:: pycon + + >>> server_socket.listen(1) + +.. rst-class:: build + +* The argument to ``listen`` is the *backlog* + +* The *backlog* is the **maximum** number of connection requests that the + socket will queue + +* Once the limit is reached, the socket refuses new connections. + + +Accept Incoming Messages +------------------------ + +When a socket is listening, it can receive incoming connection requests: + +.. code-block:: pycon + + >>> connection, client_address = server_socket.accept() + ... # this blocks until a client connects + >>> connection.recv(16) + +.. rst-class:: build + +* The ``connection`` returned by a call to ``accept`` is a **new socket**. + This new socket is used to communicate with the client + +* The ``client_address`` is a two-tuple of IP Address and Port for the client + socket + +* When a connection request is 'accepted', it is removed from the backlog + queue. + + +Send a Reply +------------ + +The same socket that received a message from the client may be used to return +a reply: + +.. code-block:: pycon + + >>> connection.sendall("message received") + + +Clean Up +-------- + +Once a transaction between the client and server is complete, the +``connection`` socket should be closed: + +.. rst-class:: build +.. container:: + + .. code-block:: pycon + + >>> connection.close() + + Note that the ``server_socket`` is *never* closed as long as the server + continues to run. + + +Getting the Flow +================ + +.. rst-class:: left +.. container:: + + + + The flow of this interaction can be a bit confusing. Let's see it in + action step-by-step. + + .. rst-class:: build + .. container:: + + .. container:: + + Open a second python interpreter and place it next to your first so + you can see both of them at the same time. + + +Create a Server +--------------- + +In your first python interpreter, create a server socket and prepare it for +connections: + +.. rst-class:: build +.. container:: + + .. code-block:: pycon + + >>> server_socket = socket.socket( + ... socket.AF_INET, + ... socket.SOCK_STREAM, + ... socket.IPPROTO_IP) + >>> server_socket.bind(('127.0.0.1', 50000)) + >>> server_socket.listen(1) + >>> conn, addr = server_socket.accept() + + At this point, you should **not** get back a prompt. The server socket is + waiting for a connection to be made. + + +Create a Client +--------------- + +In your second interpreter, create a client socket and prepare to send a +message: + +.. rst-class:: build +.. container:: + + .. code-block:: pycon + + >>> import socket + >>> client_socket = socket.socket( + ... socket.AF_INET, + ... socket.SOCK_STREAM, + ... socket.IPPROTO_IP) + + Before connecting, keep your eye on the server interpreter: + + .. code-block:: pycon + + >>> client_socket.connect(('127.0.0.1', 50000)) + + +Send a Message Client->Server +----------------------------- + +As soon as you made the connection above, you should have seen the prompt +return in your server interpreter. The ``accept`` method finally returned a +new connection socket. + +.. rst-class:: build +.. container:: + + When you're ready, type the following in the *client* interpreter: + + .. code-block:: pycon + + >>> client_socket.sendall("Hey, can you hear me?") + + +Receive and Respond +------------------- + +Back in your server interpreter, go ahead and receive the message from your +client: + +.. rst-class:: build +.. container:: + + .. code-block:: pycon + + >>> conn.recv(32) + 'Hey, can you hear me?' + + Send a message back, and then close up your connection: + + .. code-block:: pycon + + >>> conn.sendall("Yes, I hear you.") + >>> conn.close() + + +Finish Up +--------- + +Back in your client interpreter, take a look at the response to your message, +then be sure to close your client socket too: + +.. rst-class:: build +.. container:: + + .. code-block:: pycon + + >>> client_socket.recv(32) + 'Yes, I hear you.' + >>> client_socket.close() + + And now that we're done, we can close up the server too (back in the server + interpreter): + + .. code-block:: pycon + + >>> server_socket.close() + + +.. nextslide:: Congratulations! + +.. rst-class:: large center + +You've run your first client-server interaction + + +Homework +======== + +.. rst-class:: left +.. container:: + + Your homework assignment for this week is to take what you've learned here + and build a simple "echo" server. + + .. rst-class:: build + .. container:: + + The server should automatically return to any client that connects *exactly* + what it receives (it should **echo** all messages). + + You will also write a python script that, when run, will send a message to the + server and receive the reply, printing it to ``stdout``. + + Finally, you'll do all of this so that it can be tested. + + +Your Task +--------- + +In our class repository, there is a folder ``resources/session04``. + +.. rst-class:: build +.. container:: + + Inside that folder, you should find: + + .. rst-class:: build + + * A file ``tasks.txt`` that contains these instructions + + * A skeleton for your server in ``echo_server.py`` + + * A skeleton for your client script in ``echo_client.py`` + + * Some simple tests in ``tests.py`` + + Your task is to make the tests pass. + + +Running the Tests +----------------- + +To run the tests, you'll have to set the server running in one terminal: + +.. rst-class:: build +.. container:: + + .. code-block:: bash + + $ python echo_server.py + + Then, in a second terminal, you will execute the tests: + + .. code-block:: bash + + $ python tests.py + + You should see output like this: + + .. code-block:: bash + + [...] + FAILED (failures=2) + + +Submitting Your Homework +------------------------ + +To submit your homework: + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * Create a new repository in GitHub. Call it ``echo_sockets``. + + * Put the ``echo_server.py``, ``echo_client.py`` and ``tests.py`` files in + this repository. + + * Send Maria and I an email with a link to your repository when you are + done. + + We will clone your repository and run the tests as described above. + + And we'll make comments inline on your repository. + + +Going Further +------------- + +In ``assignments/session01/tasks.txt`` you'll find a few extra problems to try. + +.. rst-class:: build +.. container:: + + If you finish the first part of the homework in less than 3-4 hours give + one or more of these a whirl. + + They are not required, but if you include solutions in your repository, + we'll review your work. diff --git a/slides/presentations/session04.html b/slides/presentations/session04.html new file mode 100644 index 00000000..b8d15508 --- /dev/null +++ b/slides/presentations/session04.html @@ -0,0 +1,1404 @@ + + + + + + Python Web Programming — Internet Programming with Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    +

    +

    +
    +
    + + + +
    +

    Python Web Programming

    +
    +
    +
    +../_images/python.png +
    +

    Session 4: Networking and Sockets

    + + + + +
    +
    +
    +

    Computer Communications

    +
    +
    +
    +

    We've spent the first few weeks of this course building and deploying a +simple web application.

    +
    +

    now it's time to step back and look at the technologies underlying the +work we've done.

    +

    We'll begin by discussing the basics of networking computers.

    +

    You'll learn a bit here about how computers talk to each other across a +distance.

    +
    +
    + + + + +
    +
    +
    +

    TCP/IP

    +
    + +
    +
    +

    TCP/IP

    +
    + +
    +
    +

    The TCP/IP Stack - Link

    +
    +
    +

    The bottom layer is the 'Link Layer'

    +
      +
    • Deals with the physical connections between machines, 'the wire'
    • +
    • Packages data for physical transport
    • +
    • Executes transmission over a physical medium
        +
      • what that medium is is arbitrary
      • +
      +
    • +
    • Implemented in the Network Interface Card(s) (NIC) in your computer
    • +
    + + + + +
    +
    +
    +

    The TCP/IP Stack - Internet

    +
    +
    +

    Moving up, we have the 'Internet Layer'

    +
      +
    • Deals with addressing and routing
        +
      • Where are we going and how do we get there?
      • +
      +
    • +
    • Agnostic as to physical medium (IP over Avian Carrier - IPoAC)
    • +
    • Makes no promises of reliability
    • +
    • Two addressing systems
        +
      • IPv4 (current, limited '192.168.1.100')
      • +
      • IPv6 (future, 3.4 x 10^38 addresses, '2001:0db8:85a3:0042:0000:8a2e:0370:7334')
      • +
      +
    • +
    + + + + +
    +
    +
    +

    The TCP/IP Stack - Internet

    +
    +
    +

    That's 4.3 x 10^28 addresses per person alive today

    + + + + +
    +
    +
    +

    The TCP/IP Stack - Transport

    +
    +
    +

    Next up is the 'Transport Layer'

    +
      +
    • Deals with transmission and reception of data
        +
      • error correction, flow control, congestion management
      • +
      +
    • +
    • Common protocols include TCP & UDP
        +
      • TCP: Tranmission Control Protocol
      • +
      • UDP: User Datagram Protocol
      • +
      +
    • +
    • Not all Transport Protocols are 'reliable'
        +
      • TCP ensures that dropped packets are resent
      • +
      • UDP makes no such assurance
      • +
      • Reliability is slow and expensive
      • +
      +
    • +
    + + + + +
    +
    +
    +

    The TCP/IP Stack - Transport

    +
    +
    +

    The 'Transport Layer' also establishes the concept of a port

    +
    +
      +
    • IP Addresses designate a specific machine on the network
    • +
    • A port provides addressing for individual applications in a single +host
    • +
    • 192.168.1.100:80 (the :80 part is the port)
    • +
    • [2001:db8:85a3:8d3:1319:8a2e:370:7348]:443 (:443 is the port)
    • +
    +

    This means that you don't have to worry about information intended for your +web browser being accidentally read by your email client.

    +
    + + + + +
    +
    +
    +

    The TCP/IP Stack - Transport

    +
    +
    +

    There are certain ports which are commonly understood to belong to given +applications or protocols:

    +
    +
      +
    • 80/443 - HTTP/HTTPS
    • +
    • 20 - FTP
    • +
    • 22 - SSH
    • +
    • 23 - Telnet
    • +
    • 25 - SMTP
    • +
    • ...
    • +
    +

    These ports are often referred to as well-known ports

    +

    (see http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers)

    +
    + + + + +
    +
    +
    +

    The TCP/IP Stack - Transport

    +
    +
    +

    Ports are grouped into a few different classes

    +
      +
    • Ports numbered 0 - 1023 are reserved
    • +
    • Ports numbered 1024 - 65535 are open
    • +
    • Ports numbered 1024 - 49151 may be registered
    • +
    • Ports numbered 49152 - 65535 are called ephemeral
    • +
    + + + + +
    +
    +
    +

    The TCP/IP Stack - Application

    +
    +
    +

    The topmost layer is the 'Application Layer'

    +
    +
      +
    • Deals directly with data produced or consumed by an application
    • +
    • Reads or writes data using a set of understood, well-defined protocols
        +
      • HTTP, SMTP, FTP etc.
      • +
      +
    • +
    • Does not know (or need to know) about lower layer functionality
        +
      • The exception to this rule is endpoint data (or IP:Port)
      • +
      +
    • +
    +

    this is where we live and work

    +
    + + + + +
    +
    +
    +

    Sockets

    +
    +
    +

    Think back for a second to what we just finished discussing, the TCP/IP stack.

    +
    +
      +
    • The Internet layer gives us an IP Address
    • +
    • The Transport layer establishes the idea of a port.
    • +
    • The Application layer doesn't care about what happens below...
    • +
    • Except for endpoint data (IP:Port)
    • +
    +

    A Socket is the software representation of that endpoint.

    +

    Opening a socket creates a kind of transceiver that can send and/or +receive bytes at a given IP address and Port.

    +
    + + + + +
    +
    +
    +

    Sockets in Python

    +
    +
    +

    Python provides a standard library module which provides socket functionality. +It is called socket.

    +
    +

    The library is really just a very thin wrapper around the system +implementation of BSD Sockets

    +

    Let's spend a few minutes getting to know this module.

    +

    We're going to do this next part together, so open up a terminal and start +a python interpreter

    +
    + + + + +
    +
    +
    +

    Sockets in Python

    +
    +
    +

    The Python sockets library allows us to find out what port a service uses:

    +
    +
    >>> import socket
    +>>> socket.getservbyname('ssh')
    +22
    +
    +
    +

    You can also do a reverse lookup, finding what service uses a given port:

    +
    >>> socket.getservbyport(80)
    +'http'
    +
    +
    +
    + + + + +
    +
    +
    +

    Sockets in Python

    +
    +
    +

    The sockets library also provides tools for finding out information about +hosts. For example, you can find out about the hostname and IP address of +the machine you are currently using:

    +
    >>> socket.gethostname()
    +'heffalump.local'
    +>>> socket.gethostbyname(socket.gethostname())
    +'10.211.55.2'
    +
    +
    + + + + +
    +
    +
    +

    Sockets in Python

    +
    +
    +

    You can also find out about machines that are located elsewhere, assuming you +know their hostname. For example:

    +
    >>> socket.gethostbyname('google.com')
    +'173.194.33.4'
    +>>> socket.gethostbyname('uw.edu')
    +'128.95.155.135'
    +>>> socket.gethostbyname('crisewing.com')
    +'108.59.11.99'
    +
    +
    + + + + +
    +
    +
    +

    Sockets in Python

    +
    +
    +

    The gethostbyname_ex method of the socket library provides more +information about the machines we are exploring:

    +
    >>> socket.gethostbyname_ex('google.com')
    +('google.com', [], ['173.194.33.9', '173.194.33.14',
    +                    ...
    +                    '173.194.33.6', '173.194.33.7',
    +                    '173.194.33.8'])
    +>>> socket.gethostbyname_ex('crisewing.com')
    +('crisewing.com', [], ['108.59.11.99'])
    +>>> socket.gethostbyname_ex('www.rad.washington.edu')
    +('elladan.rad.washington.edu', # <- canonical hostname
    + ['www.rad.washington.edu'], # <- any machine aliases
    + ['128.95.247.84']) # <- all active IP addresses
    +
    +
    + + + + +
    +
    +
    +

    Sockets in Python

    +
    +
    +

    To create a socket, you use the socket method of the socket library. +It takes up to three optional positional arguments (here we use none to get +the default behavior):

    +
    >>> foo = socket.socket()
    +>>> foo
    +<socket._socketobject object at 0x10046cec0>
    +
    +
    + + + + +
    +
    +
    +

    Sockets in Python

    +
    +
    +

    A socket has some properties that are immediately important to us. These +include the family, type and protocol of the socket:

    +
    +
    >>> foo.family
    +2
    +>>> foo.type
    +1
    +>>> foo.proto
    +0
    +
    +
    +

    You might notice that the values for these properties are integers. In +fact, these integers are constants defined in the socket library.

    +
    + + + + +
    +
    +
    +

    A quick utility method

    +
    +
    +

    Let's define a method in place to help us see these constants. It will take a +single argument, the shared prefix for a defined set of constants:

    +
    +

    (you can also find this in resources/session04/socket_tools.py)

    +
    >>> def get_constants(prefix):
    +...     """mapping of socket module constants to their names."""
    +...     return dict(
    +...         (getattr(socket, n), n)
    +...         for n in dir(socket)
    +...         if n.startswith(prefix)
    +...     )
    +...
    +>>>
    +
    +
    +
    + + + + +
    +
    +
    +

    Socket Families

    +
    +
    +

    Think back a moment to our discussion of the Internet layer of the TCP/IP +stack. There were a couple of different types of IP addresses:

    +
    +
      +
    • IPv4 ('192.168.1.100')
    • +
    • IPv6 ('2001:0db8:85a3:0042:0000:8a2e:0370:7334')
    • +
    +

    The family of a socket corresponds to the addressing system it uses +for connecting.

    +
    + + + + +
    +
    +
    +

    Socket Families

    +
    +
    +

    Families defined in the socket library are prefixed by AF_:

    +
    +
    >>> families = get_constants('AF_')
    +>>> families
    +{0: 'AF_UNSPEC', 1: 'AF_UNIX', 2: 'AF_INET',
    + 11: 'AF_SNA', 12: 'AF_DECnet', 16: 'AF_APPLETALK',
    + 17: 'AF_ROUTE', 23: 'AF_IPX', 30: 'AF_INET6'}
    +
    +
    +

    Your results may vary

    +

    Of all of these, the ones we care most about are 2 (IPv4) and 30 +(IPv6).

    +
    + + + + +
    +
    +
    +

    Unix Domain Sockets

    +
    +
    +

    When you are on a machine with an operating system that is Unix-like, you will +find another generally useful socket family: AF_UNIX, or Unix Domain +Sockets. Sockets in this family:

    +
      +
    • connect processes on the same machine
    • +
    • are generally a bit slower than IPC connnections
    • +
    • have the benefit of allowing the same API for programs that might run on one +machine __or__ across the network
    • +
    • use an 'address' that looks like a pathname ('/tmp/foo.sock')
    • +
    + + + + +
    +
    +
    +

    Test your skills

    +
    +
    +

    What is the default family for the socket we created just a moment ago?

    +
    +

    (remember we bound the socket to the symbol foo)

    +

    How did you figure this out?

    +
    + + + + +
    +
    +
    +

    Socket Types

    +
    +
    +

    The socket type determines the semantics of socket communications.

    +
    +

    Look up socket type constants with the SOCK_ prefix:

    +
    >>> types = get_constants('SOCK_')
    +>>> types
    +{1: 'SOCK_STREAM', 2: 'SOCK_DGRAM',
    + ...}
    +
    +
    +

    The most common are 1 (Stream communication (TCP)) and 2 (Datagram +communication (UDP)).

    +
    + + + + +
    +
    +
    +

    Test your skills

    +
    +
    +

    What is the default type for our generic socket, foo?

    + + + + +
    +
    +
    +

    Socket Protocols

    +
    +
    +

    A socket also has a designated protocol. The constants for these are +prefixed by IPPROTO_:

    +
    +
    >>> protocols = get_constants('IPPROTO_')
    +>>> protocols
    +{0: 'IPPROTO_IP', 1: 'IPPROTO_ICMP',
    + ...,
    + 255: 'IPPROTO_RAW'}
    +
    +
    +

    The choice of which protocol to use for a socket is determined by the +internet layer protocol you intend to use. TCP? UDP? ICMP? +IGMP?

    +
    + + + + +
    +
    +
    +

    Test your skills

    +
    +
    +

    What is the default protocol used by our generic socket, foo?

    + + + + +
    +
    +
    +

    Customizing Sockets

    +
    +
    +

    These three properties of a socket correspond to the three positional +arguments you may pass to the socket constructor.

    +
    +

    Using them allows you to create sockets with specific communications +profiles:

    +
    >>> bar = socket.socket(socket.AF_INET,
    +...                     socket.SOCK_DGRAM,
    +...                     socket.IPPROTO_UDP)
    +...
    +>>> bar
    +<socket._socketobject object at 0x1005b8b40>
    +
    +
    +
    + + + + +
    +
    +
    +

    Break Time

    +
    +
    +

    So far we have:

    +
    +
      +
    • learned about the "layers" of the TCP/IP Stack
    • +
    • discussed families, types and protocols in sockets
    • +
    • learned how to create sockets with a specific communications profile.
    • +
    +

    When we return we'll learn how to find the communcations profiles of remote +sockets, how to connect to them, and how to send and receive messages.

    +

    Take a few minutes now to clear your head (do not quit your python +interpreter).

    +
    + + + + +
    +
    +
    +

    Address Information

    +
    +
    +

    When you are creating a socket to communicate with a remote service, the +remote socket will have a specific communications profile.

    +
    +

    The local socket you create must match that communications profile.

    +

    How can you determine the correct values to use?

    +

    You ask.

    +
    + + + + +
    +
    +
    +

    Address Information

    +
    +
    +

    The function socket.getaddrinfo provides information about available +connections on a given host.

    +
    socket.getaddrinfo('127.0.0.1', 80)
    +
    +
    +
    +

    This provides all you need to make a proper connection to a socket on a +remote host. The value returned is a tuple of:

    +
      +
    • socket family
    • +
    • socket type
    • +
    • socket protocol
    • +
    • canonical name (usually empty, unless requested by flag)
    • +
    • socket address (tuple of IP and Port)
    • +
    +
    + + + + +
    +
    +
    +

    A quick utility method

    +
    +
    +

    Again, let's create a utility method in-place so we can see this in action:

    +
    >>> def get_address_info(host, port):
    +...     for response in socket.getaddrinfo(host, port):
    +...         fam, typ, pro, nam, add = response
    +...         print 'family: ', families[fam]
    +...         print 'type: ', types[typ]
    +...         print 'protocol: ', protocols[pro]
    +...         print 'canonical name: ', nam
    +...         print 'socket address: ', add
    +...         print
    +...
    +>>>
    +
    +
    +

    (you can also find this in resources/session01/session1.py)

    + + + + +
    +
    +
    +

    On Your Own Machine

    +
    +
    +

    Now, ask your own machine what possible connections are available for 'http':

    +
    +
    >>> get_address_info(socket.gethostname(), 'http')
    +family:  AF_INET
    +type:  SOCK_DGRAM
    +protocol:  IPPROTO_UDP
    +canonical name:
    +socket address:  ('10.211.55.2', 80)
    +
    +family:  AF_INET
    +...
    +>>>
    +
    +
    +

    What answers do you get?

    +
    + + + + +
    +
    +
    +

    On the Internet

    +
    +
    +
    >>> get_address_info('crisewing.com', 'http')
    +family:  AF_INET
    +type:  SOCK_DGRAM
    +...
    +
    +family:  AF_INET
    +type:  SOCK_STREAM
    +...
    +>>>
    +
    +
    +
    +Try a few other servers you know about.
    + + + + +
    +
    +
    +

    Client Side

    +
    +
    +
    +

    Let's put this to use

    +

    We'll communicate with a remote server as a client

    +
    + + + + +
    +
    +
    +

    Construct a Socket

    +
    +
    +

    We've already made a socket foo using the generic constructor without any +arguments. We can make a better one now by using real address information from +a real server online [do not type this yet]:

    +
    >>> streams = [info
    +...     for info in socket.getaddrinfo('crisewing.com', 'http')
    +...     if info[1] == socket.SOCK_STREAM]
    +>>> streams
    +[(2, 1, 6, '', ('108.59.11.99', 80))]
    +>>> info = streams[0]
    +>>> cewing_socket = socket.socket(*info[:3])
    +
    +
    + + + + +
    +
    +
    +

    Connecting a Socket

    +
    +
    +

    Once the socket is constructed with the appropriate family, type and +protocol, we can connect it to the address of our remote server:

    +
    >>> cewing_socket.connect(info[-1])
    +>>>
    +
    +
    +
      +
    • a successful connection returns None
    • +
    • a failed connection raises an error
    • +
    • you can use the type of error returned to tell why the connection failed.
    • +
    + + + + +
    +
    +
    +

    Sending a Message

    +
    +
    +

    Send a message to the server on the other end of our connection (we'll +learn in session 2 about the message we are sending):

    +
    >>> msg = "GET / HTTP/1.1\r\n"
    +>>> msg += "Host: crisewing.com\r\n\r\n"
    +>>> cewing_socket.sendall(msg)
    +>>>
    +
    +
    +
      +
    • the transmission continues until all data is sent or an error occurs
    • +
    • success returns None
    • +
    • failure to send raises an error
    • +
    • you can use the type of error to figure out why the transmission failed
    • +
    • if an error occurs you cannot know how much, if any, of your data was +sent
    • +
    + + + + +
    +
    +
    +

    Receiving a Reply

    +
    +
    +

    Whatever reply we get is received by the socket we created. We can read it +back out (again, do not type this yet):

    +
    >>> response = cewing_socket.recv(4096)
    +>>> response
    +'HTTP/1.1 200 OK\r\nDate: Thu, 03 Jan 2013 05:56:53
    +...
    +
    +
    +
      +
    • The sole required argument is buffer_size (an integer). It should be a +power of 2 and smallish (~4096)
    • +
    • It returns a byte string of buffer_size (or smaller if less data was +received)
    • +
    • If the response is longer than buffer size, you can call the method +repeatedly. The last bunch will be less than buffer size.
    • +
    + + + + +
    +
    +
    +

    Cleaning Up

    +
    +
    +

    When you are finished with a connection, you should always close it:

    +
    >>> cewing_socket.close()
    +
    +
    + + + + +
    +
    +
    +

    Putting it all together

    +
    +
    +

    First, connect and send a message:

    +
    >>> streams = [info
    +...     for info in socket.getaddrinfo('crisewing.com', 'http')
    +...     if info[1] == socket.SOCK_STREAM]
    +>>> info = streams[0]
    +>>> cewing_socket = socket.socket(*info[:3])
    +>>> cewing_socket.connect(info[-1])
    +>>> msg = "GET / HTTP/1.1\r\n"
    +>>> msg += "Host: crisewing.com\r\n\r\n"
    +>>> cewing_socket.sendall(msg)
    +
    +
    + + + + +
    +
    +
    +

    Putting it all together

    +
    +
    +

    Then, receive a reply, iterating until it is complete:

    +
    >>> buffsize = 4096
    +>>> response = ''
    +>>> done = False
    +>>> while not done:
    +...     msg_part = cewing_socket.recv(buffsize)
    +...     if len(msg_part) < buffsize:
    +...         done = True
    +...         cewing_socket.close()
    +...     response += msg_part
    +...
    +>>> len(response)
    +19427
    +
    +
    + + + + +
    +
    +
    +

    Server Side

    +
    +
    +
    +

    What about the other half of the equation?

    +

    Let's build a server and see how that part works.

    +
    + + + + +
    +
    +
    +

    Construct a Socket

    +
    +
    +

    For the moment, stop typing this into your interpreter.

    +
    +

    Again, we begin by constructing a socket. Since we are actually the server +this time, we get to choose family, type and protocol:

    +
    >>> server_socket = socket.socket(
    +...     socket.AF_INET,
    +...     socket.SOCK_STREAM,
    +...     socket.IPPROTO_TCP)
    +...
    +>>> server_socket
    +<socket._socketobject object at 0x100563c90>
    +
    +
    +
    + + + + +
    +
    +
    +

    Bind the Socket

    +
    +
    +

    Our server socket needs to be bound to an address. This is the IP Address +and Port to which clients must connect:

    +
    +
    >>> address = ('127.0.0.1', 50000)
    +>>> server_socket.bind(address)
    +
    +
    +

    Terminology Note: In a server/client relationship, the server binds +to an address and port. The client connects

    +
    + + + + +
    +
    +
    +

    Listen for Connections

    +
    +
    +

    Once our socket is bound to an address, we can listen for attempted +connections:

    +
    >>> server_socket.listen(1)
    +
    +
    +
      +
    • The argument to listen is the backlog
    • +
    • The backlog is the maximum number of connection requests that the +socket will queue
    • +
    • Once the limit is reached, the socket refuses new connections.
    • +
    + + + + +
    +
    +
    +

    Accept Incoming Messages

    +
    +
    +

    When a socket is listening, it can receive incoming connection requests:

    +
    >>> connection, client_address = server_socket.accept()
    +... # this blocks until a client connects
    +>>> connection.recv(16)
    +
    +
    +
      +
    • The connection returned by a call to accept is a new socket. +This new socket is used to communicate with the client
    • +
    • The client_address is a two-tuple of IP Address and Port for the client +socket
    • +
    • When a connection request is 'accepted', it is removed from the backlog +queue.
    • +
    + + + + +
    +
    +
    +

    Send a Reply

    +
    +
    +

    The same socket that received a message from the client may be used to return +a reply:

    +
    >>> connection.sendall("message received")
    +
    +
    + + + + +
    +
    +
    +

    Clean Up

    +
    +
    +

    Once a transaction between the client and server is complete, the +connection socket should be closed:

    +
    +
    >>> connection.close()
    +
    +
    +

    Note that the server_socket is never closed as long as the server +continues to run.

    +
    + + + + +
    +
    +
    +

    Getting the Flow

    +
    +
    +
    +

    The flow of this interaction can be a bit confusing. Let's see it in +action step-by-step.

    +
    +
    +Open a second python interpreter and place it next to your first so +you can see both of them at the same time.
    +
    +
    + + + + +
    +
    +
    +

    Create a Server

    +
    +
    +

    In your first python interpreter, create a server socket and prepare it for +connections:

    +
    +
    >>> server_socket = socket.socket(
    +...     socket.AF_INET,
    +...     socket.SOCK_STREAM,
    +...     socket.IPPROTO_IP)
    +>>> server_socket.bind(('127.0.0.1', 50000))
    +>>> server_socket.listen(1)
    +>>> conn, addr = server_socket.accept()
    +
    +
    +

    At this point, you should not get back a prompt. The server socket is +waiting for a connection to be made.

    +
    + + + + +
    +
    +
    +

    Create a Client

    +
    +
    +

    In your second interpreter, create a client socket and prepare to send a +message:

    +
    +
    >>> import socket
    +>>> client_socket = socket.socket(
    +...     socket.AF_INET,
    +...     socket.SOCK_STREAM,
    +...     socket.IPPROTO_IP)
    +
    +
    +

    Before connecting, keep your eye on the server interpreter:

    +
    >>> client_socket.connect(('127.0.0.1', 50000))
    +
    +
    +
    + + + + +
    +
    +
    +

    Send a Message Client->Server

    +
    +
    +

    As soon as you made the connection above, you should have seen the prompt +return in your server interpreter. The accept method finally returned a +new connection socket.

    +
    +

    When you're ready, type the following in the client interpreter:

    +
    >>> client_socket.sendall("Hey, can you hear me?")
    +
    +
    +
    + + + + +
    +
    +
    +

    Receive and Respond

    +
    +
    +

    Back in your server interpreter, go ahead and receive the message from your +client:

    +
    +
    >>> conn.recv(32)
    +'Hey, can you hear me?'
    +
    +
    +

    Send a message back, and then close up your connection:

    +
    >>> conn.sendall("Yes, I hear you.")
    +>>> conn.close()
    +
    +
    +
    + + + + +
    +
    +
    +

    Finish Up

    +
    +
    +

    Back in your client interpreter, take a look at the response to your message, +then be sure to close your client socket too:

    +
    +
    >>> client_socket.recv(32)
    +'Yes, I hear you.'
    +>>> client_socket.close()
    +
    +
    +

    And now that we're done, we can close up the server too (back in the server +interpreter):

    +
    >>> server_socket.close()
    +
    +
    +
    + + + + +
    +
    +
    +

    Congratulations!

    +
    +
    +

    You've run your first client-server interaction

    + + + + +
    +
    +
    +

    Homework

    +
    +
    +
    +

    Your homework assignment for this week is to take what you've learned here +and build a simple "echo" server.

    +
    +

    The server should automatically return to any client that connects exactly +what it receives (it should echo all messages).

    +

    You will also write a python script that, when run, will send a message to the +server and receive the reply, printing it to stdout.

    +

    Finally, you'll do all of this so that it can be tested.

    +
    +
    + + + + +
    +
    +
    +

    Your Task

    +
    +
    +

    In our class repository, there is a folder resources/session04.

    +
    +

    Inside that folder, you should find:

    +
      +
    • A file tasks.txt that contains these instructions
    • +
    • A skeleton for your server in echo_server.py
    • +
    • A skeleton for your client script in echo_client.py
    • +
    • Some simple tests in tests.py
    • +
    +

    Your task is to make the tests pass.

    +
    + + + + +
    +
    +
    +

    Running the Tests

    +
    +
    +

    To run the tests, you'll have to set the server running in one terminal:

    +
    +
    $ python echo_server.py
    +
    +
    +

    Then, in a second terminal, you will execute the tests:

    +
    $ python tests.py
    +
    +
    +

    You should see output like this:

    +
    [...]
    +FAILED (failures=2)
    +
    +
    +
    + + + + +
    +
    +
    +

    Submitting Your Homework

    +
    +
    +

    To submit your homework:

    +
    +
      +
    • Create a new repository in GitHub. Call it echo_sockets.
    • +
    • Put the echo_server.py, echo_client.py and tests.py files in +this repository.
    • +
    • Send Maria and I an email with a link to your repository when you are +done.
    • +
    +

    We will clone your repository and run the tests as described above.

    +

    And we'll make comments inline on your repository.

    +
    + + + + +
    +
    +
    +

    Going Further

    +
    +
    +

    In assignments/session01/tasks.txt you'll find a few extra problems to try.

    +
    +

    If you finish the first part of the homework in less than 3-4 hours give +one or more of these a whirl.

    +

    They are not required, but if you include solutions in your repository, +we'll review your work.

    +
    + + + + +
    +
    + + + + +
    +

    <Thank You!>

    +

     

    +
    +

    + +

    +
    + + + +
    + + + + \ No newline at end of file From 5809ff65551a7af7afa7cda58a2df89fc11f3d05 Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 18 Jan 2015 20:24:14 -0800 Subject: [PATCH 076/114] update session 4 and 5, finish up session 3, bolt all to main index --- html/_images/heroku-logo.png | Bin 0 -> 2877 bytes html/_images/icup.png | Bin 0 -> 73513 bytes html/_images/no_entry.jpg | Bin 0 -> 639171 bytes html/_images/protocol.png | Bin 0 -> 43048 bytes html/_sources/index.txt | 2 +- html/_sources/outline.txt | 36 +- html/_sources/presentations/index.txt | 3 + html/_sources/presentations/session03.txt | 1813 +++++++++++++++++ html/_sources/presentations/session04.txt | 8 +- html/_sources/presentations/session05.txt | 1552 ++++++++++++++ html/_sources/readings.txt | 4 +- html/_static/no_entry.jpg | Bin 0 -> 639171 bytes html/index.html | 15 +- html/outline.html | 33 +- html/presentations/index.html | 30 +- html/presentations/session02.html | 10 + html/presentations/session03.html | 1364 +++++++++++++ html/presentations/session04.html | 37 +- html/presentations/session05.html | 1199 +++++++++++ html/readings.html | 28 +- html/searchindex.js | 2 +- slides/_images/heroku-logo.png | Bin 0 -> 2877 bytes slides/_images/icup.png | Bin 0 -> 73513 bytes slides/_images/no_entry.jpg | Bin 0 -> 639171 bytes slides/_images/protocol.png | Bin 0 -> 43048 bytes slides/_sources/index.txt | 2 +- slides/_sources/outline.txt | 36 +- slides/_sources/presentations/index.txt | 3 + slides/_sources/presentations/session03.txt | 1813 +++++++++++++++++ slides/_sources/presentations/session04.txt | 8 +- slides/_sources/presentations/session05.txt | 1552 ++++++++++++++ slides/_sources/readings.txt | 4 +- slides/_static/no_entry.jpg | Bin 0 -> 639171 bytes slides/presentations/index.html | 2 +- slides/presentations/session02.html | 1 + slides/presentations/session03.html | 2038 +++++++++++++++++++ slides/presentations/session04.html | 11 +- slides/presentations/session05.html | 1965 ++++++++++++++++++ slides/readings.html | 5 +- slides/searchindex.js | 2 +- 40 files changed, 13513 insertions(+), 65 deletions(-) create mode 100644 html/_images/heroku-logo.png create mode 100644 html/_images/icup.png create mode 100644 html/_images/no_entry.jpg create mode 100644 html/_images/protocol.png create mode 100644 html/_sources/presentations/session03.txt create mode 100644 html/_sources/presentations/session05.txt create mode 100644 html/_static/no_entry.jpg create mode 100644 html/presentations/session03.html create mode 100644 html/presentations/session05.html create mode 100644 slides/_images/heroku-logo.png create mode 100644 slides/_images/icup.png create mode 100644 slides/_images/no_entry.jpg create mode 100644 slides/_images/protocol.png create mode 100644 slides/_sources/presentations/session03.txt create mode 100644 slides/_sources/presentations/session05.txt create mode 100644 slides/_static/no_entry.jpg create mode 100644 slides/presentations/session03.html create mode 100644 slides/presentations/session05.html diff --git a/html/_images/heroku-logo.png b/html/_images/heroku-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..22cc8497a944709060400d237caabb958b7aa460 GIT binary patch literal 2877 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 b{x84)^(#tG;h-hO00000NkvXXu0mjf%q@Aq literal 0 HcmV?d00001 diff --git a/html/_images/icup.png b/html/_images/icup.png new file mode 100644 index 0000000000000000000000000000000000000000..bc1548104c2a4e65c7bc80a3734c893c12da27b1 GIT binary patch literal 73513 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
    diff --git a/html/presentations/session03.html b/html/presentations/session03.html index 2da86015..929e9a3a 100644 --- a/html/presentations/session03.html +++ b/html/presentations/session03.html @@ -86,7 +86,7 @@

    But Firstid = HiddenField()

    -

    View this online

    +

    View the form online

    @view_config(route_name='action', match_param='action=edit',
                  renderer='templates/edit.jinja2')
     def update(request):
    @@ -101,7 +101,7 @@ 

    But Firstreturn {'form': form, 'action': request.matchdict.get('action')}

    -

    View this online

    +

    See this view online

    {% extends "layout.jinja2" %}
     {% block body %}
     <article>
    @@ -115,7 +115,7 @@ 

    But FirstView this online

    +

    View this template online

    class User(Base):
         __tablename__ = 'users'
         id = Column(Integer, primary_key=True, autoincrement=True)
    @@ -127,7 +127,7 @@ 

    But Firstreturn DBSession.query(User).filter(User.name == name).first()

    -

    View this online

    +

    View this model online

    @@ -208,11 +208,11 @@

    AuthN and AuthZ -

    We’ve told it that by default we want a principal to have the ‘view’ -permission to see anything.

    -

    Let’s verify that this worked.

    -

    Start your application, and try to view any page (You should get 403 -Forbidden):

    +

    By default we require the ‘view’ permission to see anything.

    +

    But we have yet to assign any permissions to anyone at all.

    +

    Let’s verify now that we are unable to see anything in the website.

    +

    Start your application, and try to view any page (You should get a 403 +Forbidden error response):

    (ljenv)$ pserve development.ini
     Starting server in PID 84467.
     serving on http://0.0.0.0:6543
    @@ -477,13 +477,10 @@ 

    Providing Login UIlearning_journal/views.py):

    -
    - -
    -

    Heroku¶

    +
    +

    Heroku¶

    ../_images/heroku-logo.png
    @@ -984,7 +979,7 @@

    Adding Logout

    Add and commit your changes to git.

    -

    Then re-deply by pushing to the heroku master:

    +

    Then re-deploy by pushing to the heroku master:

    (ljenv)$ git push heroku master
     
    @@ -1054,7 +1049,7 @@

    Format Entries

    We could write HTML by hand in the body field, but that’d be a pain.

    -

    Instead, let’s allow ourselves to write entries in `Markdown`_, a popular +

    Instead, let’s allow ourselves to write entries in Markdown, a popular markup syntax used by GitHub and many other websites.

    Python provides several libraries that implement markdown formatting.

    They will take text that contains markdown formatting and convert it to @@ -1063,7 +1058,7 @@

    Format Entries -

    My recommendation is the `markdown`_ python library.

    +

    My recommendation is the markdown python library.

    Open setup.py and add the package to the requires list:

    requires = [
         # ...
    @@ -1206,7 +1201,7 @@ 

    Syntax Highlightingreturn output

    -

    Now, you’ll be able to make hilighted code like so:

    +

    Now, you’ll be able to make highlighted code blocks just like in GitHub:

    ```python
     def foo(x, y):
         return x**y
    @@ -1288,7 +1283,7 @@ 

    Table Of Contents

  • Deploying An Application
      -
    • Heroku
    • +
    • Heroku
    • Preparing to Run Your App
    • Set Up a Heroku App
    • Configuration for Heroku
    • diff --git a/html/searchindex.js b/html/searchindex.js index 61ebbb49..e21943b1 100644 --- a/html/searchindex.js +++ b/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:42,terms:{icmp:5,interchang:2,four:0,database_url:4,prefix:[0,5],ronach:7,af_rout:5,forget:4,categori:2,aug:2,sorri:2,ipproto_raw:5,crisew:5,authorid:[],concret:2,under:[],dest_dir:2,spec:7,digit:[0,6],dele:0,rise:[],adodbapi:[],govern:[0,1,3],cmd:0,herbert:6,imaplib:[0,3],verif:4,"544kb":[],direct:[0,2],batch:2,enjoi:[],second:[],street:[],nthi:6,even:[0,2,3,7],list_of_tcp_and_udp_port_numb:5,"new":[],net:0,ever:7,told:4,ipproto_tcp:5,abov:[0,5,2,3,4],createdb:[],show_profil:[],here:[0,1,5,2,4,6,7],china:[],"4xx":0,path:[0,2,3,4,6],interpret:[0,5,2,6],credit:2,webfact:0,permit:[0,3],studi:7,portabl:1,golden:6,heroku_postgresql_maroon_url:4,wikimedia:[2,6],org:[0,5],total:4,unit:[],highli:1,yore:6,describ:5,would:[0,2,4,6],hellstrom:[],tail:4,dnt:0,call:[0,5,2,4,6,7],admin_password:4,typo:2,recommend:4,type:[],tell:[0,5,2,4],"5fb97f3":[],panach:6,notic:[0,5,2,4,6],phone:6,moin:[],unpack:2,addon:4,af_unix:5,join:0,flaskenv:[],restor:[2,4],worth:[2,6],conceptu:6,introduc:[1,2,3,6],root:4,defer:4,repoz:2,give:[1,2,3,4,5],smtp:[],indic:0,want:[0,1,2,4,6,7],everi:[0,2],end:[0,1,5,3,4,6,7],learning_journ:[2,4,6],frobozz:0,book_insert:[],concis:3,conn:[0,5],env:2,answer:[0,5,6],verifi:[],perspect:7,anon_1:2,after:[2,6],superus:2,diagram:2,befor:[0,5,2,3,4,6],wrong:2,parallel:7,demonstr:[0,2,3],attempt:5,classmethod:[2,4,6],authzpolici:4,minim:[0,7],greet:0,think:[5,2,3,4,6,7],alias:5,scoped_sess:2,dispar:3,environ:[1,2,3,4],waitress:4,incorpor:4,enter:[0,6],lambda:6,engine_from_config:[2,4,6],order:[1,2,3,4,6],hob7v7guwir4n1v:4,origin:[2,3,7],feedback:[],over:[5,7,2,3,6],fall:2,becaus:[0,2,4,6],jpeg:0,privileg:2,keyboard:0,flexibl:2,vari:[0,5],digest:7,fit:3,fix:[],simple_cli:0,toolbelt:[4,6],comprehend:7,better:[5,2,4,7],offic:0,complex:[2,3],comprehens:7,howdi:6,easier:[7,2,6],them:[0,1,2,3,4,5,6],thei:[0,1,2,3,4,5,6,7],"break":[],sqlite3:[],jinja2:[],initializedb:[2,4],choic:[1,7,2,3,5],getservbynam:5,rocki:4,each:[0,1,2,3,4,5,8],went:[0,6],webmast:0,bone:6,mean:[],laboratori:1,doug:3,logo:6,ooop:[],extract:[3,7],network:[1,7,6,3,5],goe:[2,6],god:2,newli:[],content:[],rewrit:[],got:[0,2,4,6],forth:0,navig:1,rail:0,nightmar:2,situat:[0,2],free:[4,6],standard:[0,1,2,3,4,5,7],hand:[4,6],s3cr3t:4,traceback:[],static_url:6,isn:[0,6],confus:[5,6],"__or__":5,pristin:[],rang:[0,1,6],independ:[0,2],eachoth:2,hook:2,instruct:[5,2,7],alreadi:[0,5,2,4,6],messag:[],fantast:[1,2,7],primari:[2,6],top:[2,4,6],"0x1103e38d0":2,sometim:[0,2],imap4rev1:0,too:[0,5,7,2,6],tom:2,my_view:6,consol:2,namespac:[],tool:[0,1,2,3,4,5,7],setuptool:2,took:2,incur:4,technic:[],keyword:[4,6],provid:[],tree:[2,4],project:[],matter:4,arriv:6,minut:[0,5,6],rad:5,contenti:[],ran:[0,2],modern:[2,3],mind:7,mine:0,raw:0,af_sna:5,pylon:2,increment:[],"__main__":4,seen:[0,5,2,4,6],seem:4,seek:[2,4],strength:3,latter:2,thorough:[7,6],"0x1103e3fd0":2,shelf:2,transmit:2,hypertext_transfer_protocol:0,simplifi:0,endfor:[4,6],plenti:3,though:[0,4,7],usernam:[0,4,6],object:[],guess_typ:0,regular:2,artifact:2,bsd:5,models_id:2,typ:5,maria:5,tradit:6,don:[0,1,5,2,4,6,7],doc:[0,2,4],metal:[],doe:[],notnul:[],declar:[2,6],unchang:7,passwordfield:4,sign_in_out:4,dot:6,opposit:6,random:4,syntax:7,rst:[],radio:6,identifi:[0,6],edit_entri:[],involv:4,absolut:6,exactli:[0,5,6],layout:[7,3,4,6],menu:0,explain:[2,7],configur:[3,7],apach:0,kessler:7,disert:7,busi:[],matchdict:[4,6],rich:[1,3],folder:[5,2,4,6],resolve_uri:0,patter:6,stop:[],report:[],bat:7,bar:[0,5,6],ietf:0,baz:0,"public":[4,6],buffsiz:5,reload:[0,4],metadata:2,steal:[2,4],respond:[],get_const:5,habit:[],disucss:3,result:[],respons:[],fail:[0,5,4],themselv:[],best:[2,4],subject:[],awar:4,pythoncert:[2,6],txpostgr:[],wikipedia:[0,5,2,7],urllib:3,mysql_length:2,figur:[5,2],score:2,outstand:6,pbkdf2passordmanag:4,awai:2,enlighten:7,approach:[1,2],side:[],never:[5,2],extend:[],weak:3,extens:[0,1,4],html5:[3,6],protect:0,accident:5,howev:[2,6],against:[0,4,6],logic:[2,4,6],login:[],seri:2,com:[0,5,2,4,6],compromis:1,get_appset:[2,4,6],assur:5,trunk:6,trust:2,assum:[5,2],speak:[],chrome:0,add_rout:[2,4,6],three:[],been:[2,4,6],redeploi:4,interest:7,basic:[],quickli:[0,2],life:[],setup_log:[2,6],telnet:5,ani:[0,1,5,2,4,6,7],"catch":0,ugli:0,ident:4,servic:[0,5,3,4,7],properti:[5,4],commerci:2,neat:0,seven:0,pyramid:[],af_appletalk:5,tabl:[2,4,6],toolkit:0,fnhg:0,march:1,tediou:2,sever:[4,7],mievil:[],perform:[2,6],suggest:[0,4],make:[],couchdb:2,drawback:3,split:0,complet:[0,1,2,3,4,5,6,7],rfc822:0,nic:5,hang:0,kit:7,rais:[0,5],kib:[],"548kb":2,thu:5,depli:4,hypothet:2,inherit:[2,6],client:[],greatest:[],thi:[],endif:[4,6],gzip:0,everyth:[0,1,2,4,6,7],moreov:0,left:[2,4,7],protocol:[],just:[0,5,2,4,6,7],human:[0,7,6],yet:[0,5,2,6],languag:[],previous:3,alchemi:2,easi:[7,2,4,6],shout:6,"8bitmim":0,httpfound:[4,6],els:[0,2,4,6],save:[0,2,4,6],hat:0,gave:2,opt:0,applic:[],race:[4,6],mayb:[],an_id:[],parse_var:2,render_markdown:4,elabor:4,enrypt:[],apart:[7,6],imap4_port:0,response_method_not_allow:0,specif:[5,2,3,4,6,7],arbitrari:[5,2,4],bcrypt:4,manual:2,bathtim:6,hung:0,install_requir:2,underli:[1,3,5],www:[0,5],right:[0,1,7,4,6],"0db8":5,nfrom:2,intern:0,importantli:[],bore:[],successfulli:2,transmiss:[0,5,7],txt:[0,5,2,4],cooper:[],bottom:5,subclass:[],buffer:[0,5],ssh2:7,exectut:2,condit:0,foo:[0,5,4,6],localhost:[0,4,6],mailgat:0,core:7,particular:[7,2,4,6],confer:3,repositori:[5,2,4,6],post:[0,4,6],"super":0,chapter:[2,7],postgresql:[2,4],surround:6,dinner:0,commit:[2,4],produc:[5,3],encod:[0,4],bound:[5,2],curios:3,down:[4,6],creativ:[2,6],wrap:[],storag:[0,2],guardia:[],deal:[5,7],utmcsr:0,support:[0,1,2,3,4,6,7],payment:4,avail:[5,2,4,6],reli:4,request_method:4,editor:[],get_address_info:5,rcpt:0,internet_protocol_suit:5,head:[0,5,4,6],medium:5,form:[],offer:[7,2,3,6],forc:7,sqlalchemi:[],hear:5,lignt:3,codehilit:4,reset:[],attr:6,strip_filt:6,maximum:5,until:[5,2],fundament:[1,3],intitalizedb:2,featur:[2,3,4,7],af_decnet:5,"abstract":2,decrypt:0,proven:2,exist:[0,2,4,6],glanc:7,check:[],assembl:6,encrypt:[4,7],mashup:[],when:[0,5,2,4,6,7],role:6,jone:0,test:[],tie:[],webob:2,roll:4,relat:[2,7],intend:[1,2,5],af_unspec:5,urllib2:3,djangocon:7,intent:1,consid:[0,7,2,6],src:6,receiv:[],longer:5,bullet:4,pbkdf2:4,initialize_learning_journal_db:[2,4],pathnam:[0,5],time:[],push:[0,2,4],breadth:7,concept:[1,2,3,4,5,7],chain:[2,6],skip:2,consum:[5,3,7],focus:7,invent:2,supplement:7,skim:7,rdbm:[],row:[2,4],decid:[],depend:[2,3,4,6],graph:6,readabl:[0,6],unpython:2,a0004:0,a0005:0,a0006:0,decis:[],a0002:0,a0003:0,must:[0,1,5,2,4,6],isinst:[],sourc:[0,1,2,3,4,5,6,7,8],string:[0,5,2,3,4,6,7],congest:5,lru:2,kitten:2,word:[],ydood:6,brows:[3,6],administr:[],level:[1,2,4],did:[0,5,2,6],reconcil:[],ipproto_udp:5,iter:[5,2],item:[2,6],unsupport:[],team:2,cooki:[0,4],div:[],dir:[0,5],declarative_bas:2,upper:6,slower:5,permiss:4,sign:[0,4],restkit:7,cost:4,port:[0,5,4],procfil:4,appear:[4,6],repli:[],scaffold:2,beautifulsoup:[3,7],"75a8462":[],current:[5,2],rst2xml:2,sinc:[5,2,6],"3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4":4,response_ok:0,deriv:3,gener:[],explicitli:2,address:[],along:[0,1,3,7],wait:[0,5],shift:0,queue:5,pysqlit:[],bob:[0,2],commonli:5,ourselv:[0,4],ipc:5,semant:5,session1:5,extra:5,modul:[0,1,2,3,4,5,7],prefer:0,fake:[],marker:6,fetch_head:[],market:2,types_map:0,prove:4,univers:7,visit:[4,6],todai:[],live:[5,2,4],criteria:[0,2],msg:5,checkout:[],plug:0,pyarmid:[],enhanc:3,visual:0,appendix:0,accept:[],obj:[2,6],behalf:6,prepar:[],pretend:0,focu:3,whatev:[5,6],purpos:[0,2,3,4,6],boilerpl:2,stream:[5,2],predict:0,agent:0,topic:[7,6],critic:7,app_factori:2,disadvantag:[],loginform:4,occur:5,flask_intro:[],alwai:[0,5,2,4],multipl:2,winter:1,tilt:[],charset:[0,6],write:[0,5,2,4,6,7],anyon:[4,6],xhtml:0,map:[],product:[2,4,7],max:[0,4,6],dive:[1,3,4],tomayko:7,mac:0,date:[0,2],classroom:2,gethostnam:5,bookdb:[],explicit:6,blabber:2,tale:[],ephemer:[5,2],"switch":2,cannot:[5,6],combin:[1,2,3,4,6],callabl:6,talk:[0,5,2,3,6,7],shield:3,repair:[],ydwoh:6,brain:[],populate_db:[],gitignor:2,still:[0,2,6],config_uri:[2,4,6],group:[5,2],"4z6rvnhte21mpljw5veive0eg57gn":4,how:[0,1,2,3,4,5,6,7],polici:[3,4],sec10:0,platform:4,window:[0,2,4],curli:6,mail:0,main:[0,2,4,6],non:0,killer:3,initi:[0,2,4,7],interview:0,safari:0,half:5,discuss:[5,7,2,3,6],term:[1,2],name:[0,5,2,4,6,7],config:[2,4,6],interpr:2,separ:[],magazin:[7,6],januari:1,compil:[4,7],domain:[],"0x105849b90":6,replac:[4,6],individu:[5,2,6],continu:[0,5,2,3,4],happen:[0,5,2,6],accomplish:[0,7],space:0,profil:5,correct:[0,5,6],she:4,tmpl:6,earlier:[0,2,4],pseudocod:0,bookid:[],ch05s03:0,argv:[2,4],orm:[],inevet:[],argn:4,brower:3,"byte":5,card:5,care:[0,5,7],sign_in:4,wai:[0,1,2,3,4,6,7],question:[0,2,4,6],where:[5,2,4,6],refus:5,turn:[0,2,3,4,6,7],place:[5,2,3,4,6],principl:1,imposs:2,frequent:2,first:[],oper:[1,6,4,5],info:[5,2,4],directli:[5,2,6],onc:[0,5,2,3,4,6],yourself:[0,1],submit:[],open:[5,4,6],size:[0,5,4],urin:0,given:[0,1,5,2,3,6,7],sheet:6,convent:0,bookmark:7,imap4_ssl_port:0,demostr:[],draft:0,conveni:2,friend:4,prettier:6,repostitori:[],copi:[0,4,6],huh:0,specifi:6,"short":7,mostli:[0,5,7],domin:2,than:[0,5,2,4,6,7],png:0,serv:[],susan:[],were:[5,2],posit:5,conn2:[],conn1:[],browser:[],sai:[0,2,4],pro:5,argument:[0,5,2,4,6],properli:[0,3,6],deliv:[],notimplementederror:0,saw:2,shtml:0,engin:[2,4,6],techniqu:[],ipproto_:5,ideal:[],take:[0,5,2,3,4,6,7],green:0,reload_templ:2,noth:[2,4,6],channel:[0,2],begin:[0,5,2,3,4,6],sure:[5,2,4,6],pain:[2,4],trace:2,normal:2,track:[],price:4,compress:[],cgitb:[],pair:[2,3,6],homepag:7,sesstion:[],utmccn:0,later:0,drive:7,"8mb":2,create_al:2,shortnam:4,gracefulli:0,show:[0,2,3,4,6],german:[],my_index:2,constitu:6,dflt_valu:[],ground:1,xml:[0,2,6],onli:[0,2,4,6],slow:5,"true":[0,5,2,4,6],activ:[],getattr:5,dict:[5,2],analyt:4,startswith:5,"8873ba1":[],variou:[2,3,6],get:[],mung:0,clang:2,ssl:0,tailor:0,ssh:5,url_for:[],requir:[],entryfactori:4,authenticated_userid:4,default_permiss:4,wiki:[],n10:6,test_request_context:[],detect:4,review:[0,5,2,4,6],enumer:4,label:[4,6],behind:[2,7],between:[0,1,2,3,5],"import":[0,5,2,4,6],across:[1,3,5],parent:2,elladan:5,tut:0,cycl:[2,6],come:[0,2,4,6],img:0,contract:[],tutori:[],wherin:2,mani:[0,5,2,4,6,7],among:[5,2,3,6],color:4,unittest:3,dispatch:7,imad1:0,typic:2,artu:0,coupl:[5,2],rebuild:0,zpt:[],mark:4,evangelista:[2,6],workshop:1,avian:5,emphas:1,docxmlrpcserv:3,lectur:[1,3],"1xx":0,those:[0,2],"case":[0,7,2,6],plugin:[],cast:2,outcom:[0,2],certainli:6,python_web:[2,6],ehlo:0,advantag:[2,4],ctrl:0,canon:5,worri:[5,4],destin:[],blah:0,smalltalk:2,proto:5,cc0:[2,6],same:[0,5,2,3,4,6,7],pai:4,document:[0,1,2,3,4,5,6,7,8],week:[0,1,2,3,4,5,6,7],finish:[],assist:2,someon:4,driven:[0,6],capabl:[],add_rount:4,improv:[0,2,4],extern:7,appropri:[5,3,4,6],redqueen:0,"__acl__":4,macro:[],markup:4,without:[5,2,6],promis:5,model:[],execut:[0,1,2,4,5,7],excel:[7,6],rest:[0,2,3,4,7],interrupt:0,kill:[0,2],aspect:[2,3,4,6],monei:[],heffalump:5,versu:1,hint:0,except:[0,5,2],littl:[4,6],apache2:7,identif:[],blob:4,versa:[],vulner:0,real:[],requri:4,tranmiss:5,around:[5,7,4,6],read:[],makin:6,dark:[],traffic:0,mon:0,world:[7,2,3,6],socket_tool:5,intel:0,whitespac:0,integ:[5,2,4],server:[],benefit:[0,5,3],either:[0,6],cascad:6,get_payload:[],output:[0,5,4],manag:[5,2,4],fulfil:4,alan:[2,6],b60ea2bb7052a5bd300772d7d9d40b19b27f7a1b:[],ipproto_ip:5,definit:6,"2xx":0,exit:2,posgresql:4,notabl:0,refer:[],af_inet6:5,power:[5,2,3,4,6,7],broken:0,fulli:[],regexp:6,comparison:7,deflat:0,central:2,acl:4,microframework:2,stand:[2,6],mytempl:[2,6],effici:1,console_script:2,interleav:[],inbox:0,strip:6,foreward:[],igmp:5,hew:[],buffer_s:5,httpnotfound:[4,6],her:4,set_authorization_polici:4,aren:[2,4],start:[],interfac:[0,5,2,3,4,7],ipv4:[5,7],lot:[0,7,2,6],ipv6:[5,7],"0x10b075ed0":2,hei:5,ago:[5,4],bottl:[],tupl:5,cx_oracl:[],categor:0,freddi:6,notat:6,dirti:2,possibl:[5,7,6],"default":[5,2,4,6],connect:[],gone:2,uid:0,creat:[],certain:[0,5,2],paster:[2,6],deep:[4,7],strongli:4,intro:[],file:[0,1,2,3,4,5,6],fill:[4,6],beyond:4,googl:[5,2],compel:2,field:[2,4,6],valid:[0,4,6],copiou:7,ignor:[2,7],you:[],juic:6,sequenc:0,symbol:[5,6],briefli:6,transceiv:5,pool:7,reduc:2,"1b6":0,wife:7,directori:[0,2,3,4,6],descript:[5,2],hello:[0,7,6],potenti:[3,4],alright:[],escap:4,represent:[5,2],all:[],skeleton:[5,2],osx:[0,4],forbidden:4,scalar:2,abil:[0,2],follow:[0,5,2,3,4,6,7],disk:0,dsn:0,af_inet:5,articl:[2,4,6],init:2,program:[],cgi:[],norm:0,liter:2,straightforward:[],chameleon:6,fals:[5,4],faq:0,mcdonough:7,util:[],verb:0,mechan:4,fam:5,veri:[0,5,2,3,4,6,7],ticket:4,egg_info:2,list:[0,1,2,3,4,6,7],last_nam:6,adjust:2,stderr:0,small:[],sync:3,past:[2,4],design:[1,5,2,3,4,6,7],pass:[0,5,2,3,4,6,7],further:[],pyodbc:[],integr:1,by_nam:4,what:[],sud:7,section:[0,7,2,6],abl:[0,2,3,4,6],brief:[3,7],delet:[0,1,4],version:[0,1,2,3,4],primary_kei:[2,4],intersect:6,deepli:1,method:[],contrast:1,full:[1,2,3],hash:4,berkelei:7,inher:3,goodby:0,strong:[4,6],modifi:0,valu:[],ahead:[5,4,6],prior:4,pick:[4,6],add_static_view:[2,6],via:[2,4,6],filenam:0,href:[4,6],greenwitch:[],recret:[],establish:5,select:[0,1,2],distinct:0,stdout:[5,2],regist:[5,4],two:[0,5,2,3,4,6,7],taken:4,more:[],flat:[],flaw:6,mozilla:[0,7,6],flag:[0,5,4],jsonp:6,known:[5,4],cach:[0,2],none:[0,5,2,4,6],endpoint:[0,5],hour:[0,5,3,6],outlin:[],dev:4,histori:[],venusian:2,remain:[4,7],learn:[],abandon:[],rst2html:2,def:[0,5,2,4,6],ndate:5,factori:4,prompt:[5,2,3],scan:[2,6],challeng:[0,4],registr:4,share:[0,5,2,4,6],templat:[],explor:[1,2,3,5],hilight:4,phrase:[2,6],login_form:4,scar:[],cours:[],mai:[0,5,2,4,7],first_nam:6,secur:[],rather:0,anoth:[5,2,3,4,6],comfort:[1,6],message_from_str:[],"__init__":[2,4,6],csv:[2,6],simpl:[],css:[0,7,4,6],"545kb":2,resourc:[],referenc:6,okai:[0,2],associ:3,github:[0,5,2,4,6],footer:6,author:[3,4],django:[],caus:2,hobbit:[],egg:2,checkbox:6,help:[0,1,5,2,3,6,7],mainthread:[2,4],hypertext:7,soon:[5,6],through:[0,1,2,3,4,6,7],pane:0,paramet:[],style:[0,2,4,6],psycopg2:[2,4],wipe:[],pserv:[4,6],might:[0,5,7,2,6],alter:[],pce:[1,6],tri:6,good:[0,1,2,3,4,7],"return":[0,5,2,4,6],pollut:2,cew:2,framework:[],maildrop:0,gethostbynam:5,msg_part:5,httplib:3,eventu:2,troubleshoot:4,unlik:[],authent:[],easili:[7,2,6],achiev:[],http_server:0,compris:2,found:[0,2,6],unicod:[2,4,6],joel:4,dig:6,hard:[2,3,4],idea:[0,5,2,3],realli:[0,5,7,4,6],expect:[],blog_creat:[],thing:[0,7,2,4,6],orient:2,ftp:5,publish:[2,7],research:2,bubbl:6,etag:0,authnpolici:4,print:[0,5,2,4,6],url_map:[],uwpc:[2,6],"__utmz":0,postgr:4,proxi:0,uncommit:2,advanc:0,new_model:2,guess:0,dune:[],reason:[0,6],base:[0,1,2,3,4],put:[],"__utma":0,recv:[0,5],imap4:0,bash:4,thread:[],by_id:[2,4,6],perhap:[0,6],perman:[0,2,4],assign:[0,1,5,2,3,6],"85a3":5,set_authentication_polici:4,obviou:0,prevent:4,feel:6,number:[0,5,2,3,4,6,7],placehold:[0,6],done:[0,5,2,4,6],construct:[],stdlib:[],blank:0,miss:2,differ:[],superpow:[],script:[0,5,2,3,4,6,7],interact:[],least:[2,6],getservbyport:5,station:[],order_bi:2,statement:[],zeromq:7,scheme:[],store:[2,4],luckili:[0,2,4,6],parc:2,option:[],relationship:[5,3],echo_socket:5,part:[],pars:[0,2,7],logged_in:4,off:[0,7,2,4,6],fred:2,king:[],kind:[0,5,4,6],grew:0,remot:[5,2,4,7],remov:[5,2,4],game:6,reus:[],str:2,relative_to:4,consumpt:[3,7],aclauthorizationpolici:4,payload:0,"_socketobject":5,packag:[],expir:4,larri:2,imagin:[4,6],built:[0,2,3,4,6,7],lib:[0,2],odd:6,self:4,also:[0,1,2,3,4,5,6,7],build:[0,1,2,3,4,5,6,7],textareafield:6,brace:6,distribut:2,kai:2,interpol:[],reach:5,chart:[2,6],most:[0,5,2,3,4,6],plai:[2,4,6],path_info:[],swiftli:[],addr:[0,5],filesystem:[0,3,6],mymodel:[2,4,6],cover:[0,1,2,4,7],clean:[],http_server_at_hom:0,latest:7,wsgi:[],hyper:0,v12:0,session:[],entry_point:2,fine:[0,6],find:[0,5,2,3,4,6,7],access:[0,1,3,4,7],nosql:2,copyright:2,solut:[],"172kb":2,factor:2,smtplib:3,darwin:2,hit:[],unus:2,resent:5,wrinkl:[],"3xx":0,restart:[0,4,6],rfc:[0,7],common:[],nowher:2,wrote:4,certif:[1,6],creator:7,overwhelm:2,"0x1103e3f50":2,af_ipx:5,see:[0,5,2,3,4,6],bare:6,sea:3,arg:2,reserv:[0,5],pyrami:[],someth:[0,2,4,6],particip:1,blog_act:[],topmost:5,won:0,subscript:6,experi:3,altern:[2,7],javascript:6,isol:2,mailbox:0,succeed:[],"31m":4,pymssql:[],both:[0,5,2,3,4,6,7],hiddenfield:4,last:[0,5,2,4,6],delimit:0,context:[],let:[0,5,2,4,6],load:[0,3,4,6],markdown:[3,4],simpli:[0,2,3,4,6],point:[0,5,2,4],instanti:2,header:[],route_url:[4,6],param:4,linux:[0,4],comput:[],throughout:1,xkcd:0,blog:[0,3],empti:[0,5,2,4,6],hellmann:3,runner:[],secret:4,newcom:[],authn:[],rstpep2html:2,"55c0287d4ef21f15b97eb1f107451b88b479bff":4,strategi:[],exercis:[1,3],fire:[0,2,4,6],imag:[0,6],cryptacular:4,append:[0,2,4],coordin:2,understand:[0,1,3,4,7],instructor:[],convers:7,formatd:0,look:[],solid:[1,4,7],histor:[1,7],"while":[0,5,2,3],executemani:[],"54f7e4d":4,homework:[],behavior:[5,2,6],error:[],fun:6,everyon:4,loop:0,engl:[],readi:[0,5,2,4,6],readm:2,itself:2,zopetransactionextens:[],grant:4,belong:[0,5,4],wherein:6,zope:2,conflict:2,b59b7c3:4,communc:5,moment:[5,2,4,6],temporari:6,user:[],robust:4,wherev:[],stack:[],recent:[0,2],travers:[],task:[],find_packag:2,entri:[],spent:5,doodi:6,pickl:2,person:[5,4,6],expens:[5,4],elev:0,connnect:5,five:0,macintosh:0,spend:[5,6],explan:0,make_wsgi_app:2,"__path__":2,shape:1,mysql:2,session05:0,session04:5,session06:[],session01:5,session02:[0,6],cur:[],restructuredtext:2,global_config:[2,4,6],populate_obj:[4,6],armin:7,appli:[3,4,6],input:[],bin:[2,4,6],varchar:2,format:[],big:[],intuit:[],folk:[],server_socket:5,blogcreateform:[],bit:[0,5,2,3,4,6,7],formal:[0,2],httpexcept:6,leisur:7,ipproto_icmp:5,docutil:2,altough:[],manifest:[2,3],collect:[2,6],princip:4,popular:[3,4],a0001:0,often:[0,5,2,7],visibl:3,some:[0,1,2,3,4,5,6,7],back:[0,5,2,3,4,6,7],global:[],understood:5,uidnext:0,sampl:[4,6],ljenv:[2,4,6],scale:4,cgihttpserv:7,sock_dgram:5,pep:[],per:[0,5,4],larg:[],werkzeug:[],machin:[],intial:0,previou:[0,3],authtktauthenticationpolici:4,viabl:2,crlf:0,impos:[],constraint:7,materi:[8,3,7],memori:1,"0x100563c90":5,block:[0,5,4,6],plan:4,supplementari:[],miracl:0,primarili:[],ensur:[0,5,2,4],lesson:7,html5shiv:6,span:4,sock:[0,5],stylesheet:6,fast:2,custom:[],heroku:3,pocoo:[],suit:[3,7],etc:[0,5,2,6],doctyp:[0,6],repeatedli:[5,2],great:[0,7,2,3,6],pwd:2,b60ea2bb70:[],link:[],atol:4,delta:[],line:[0,1,2,4,6],translationstr:2,utf:[0,6],consist:0,cid:[],planet:[],sum:6,highlight:3,similar:[0,2,3],clear:[0,5,3],sesson:0,constant:5,parser:7,chao:4,doesn:[0,5,2,4,6],repres:[0,2,3,6],gecko:0,response_not_found:0,titl:[0,2,6],scrape:3,nam:5,nav:6,librari:[0,1,2,3,4,5,6,7],nice:[0,3,4,6],llvm:2,mongodb:2,meaning:2,csrftoken:0,index_pag:[4,6],algorithm:4,vice:[],mimetyp:0,rst2latex:2,allowedvers:0,discrimin:[],depth:[1,7],came:4,scroll:[],oop:2,getaddrinfo:5,code:[],partial:[],sqlserver:2,pymysql:[],ljshell:6,broader:[],edu:5,sensit:[0,4],elsewher:[5,4],send:[],lower:[5,7,6],aris:2,sent:[0,5,2,3,4,6],charlesproxi:0,spool:0,stackoverflow:0,relev:2,recip:4,magic:6,button:6,hive:[],"try":[],rfc5321:0,particularli:[4,6],hasnochildren:0,pleas:[2,3,7],smaller:5,natur:6,uniqu:[2,4,6],video:7,download:[2,6],carlo:[],click:6,client_address:5,compat:2,index:[0,2,4,6],wahoo:0,compar:[0,4],resembl:6,cell:[],len:[0,5,2],madelin:[],bodi:[0,2,4,6],loadapp:4,intercept:4,logout:[],becom:2,pgbackup:4,convert:[2,4,6],pretti:[0,2],technolog:[5,4],thie:7,chang:[0,2,3,4,6,7],maker:6,chanc:3,firefox:0,parse_request:0,win:0,gatewai:3,"__name__":4,from:[0,1,2,3,4,5,6,7],commun:[],upgrad:4,next:[0,5,2,4,6,7],websit:[2,3,4,6],few:[],usr:2,sort:[],sudo:2,ipoac:5,babi:6,train:[2,6],somesecret:4,account:6,retriev:6,scalabl:2,alic:4,tag:[0,4,6],thin:5,meet:3,fetch:[0,2,4,6],aliv:[0,5],sqlite:[2,4],quickstart:[],tar:2,process:[1,5,2,3,4,6],lock:4,preformat:4,high:2,af_:5,tab:0,tal:[],onlin:[5,2,3,4],cache_max_ag:[2,6],gcc:2,cewing_socket:5,sit:7,client_socket:5,pyramid_jinja2:6,instead:[0,2,4,6],entryeditform:4,chri:7,delai:2,initialzedb:4,attend:1,other_sess:2,"6mb":2,attent:4,tier:4,philosophi:7,physic:[5,6],drop:[5,6],add_al:2,bind:[],correspond:5,element:[0,2,3,6],issu:[],webroot:0,chief:4,allow:[0,1,2,3,4,5,6,7],sendal:[0,5],elif:6,insight:3,bunch:5,uiqj579igrbrebhmjqnth8pffaz2qrj:0,verify_password:4,chosen:[],"0x10046cec0":5,infrastructur:4,bye:0,rat:[],recept:5,greater:7,python:[],auto:[],spell:6,dai:[0,3,6],auth:4,hateoa:7,httplib2:7,front:3,"8a2e":5,tilkov:7,somewher:[4,6],anyth:[2,4],entrycreateform:[4,6],nameerror:0,mode:2,autoincr:4,beneath:4,nearli:2,pygment:4,bump:0,sessionmak:[2,6],meta:6,"static":[],special:[2,3,4,6],out:[],variabl:4,influenc:[],defend:7,stub:[],suitabl:4,rel:6,leverag:4,clone:[5,2,6],red:0,clarifi:2,insid:[0,5,2],workflow:[],frank:6,manipul:2,zodb:2,auth_secret:4,first_lin:0,complianc:4,cri:[0,6],"0x1103d9f10":2,could:[0,2,4,7],lexer:4,ask:[0,5,2],keep:[0,1,2,3,5],length:[0,2,4,6],enforc:7,outsid:[2,4],south:[],softwar:[0,5,2,4,6],pygments_styl:4,qualiti:3,scene:[],echo:[],exact:6,models_valu:2,match_param:[4,6],smallish:5,owner:6,"long":[0,5,2,3,4],licens:[2,7],mkdir:2,system:[1,5,2,4,6,7],wrapper:5,attach:4,imap4_ssl:0,"3f80f":0,termin:[0,5,2,4],"final":[0,1,5,2,3,6],low:1,udp:[5,7],shell:[2,4],fnhg8:[],fnhg5:0,fnhg2:0,fnhg3:0,"8d3":5,dyno:4,textfield:[4,6],nobodi:[],route_nam:[4,6],embodi:[2,4],roberto:6,structur:[1,7,3,6],charact:[2,4,6],sens:6,"782d17e":[],f12:0,bet:[],unstag:2,favorit:0,py2:2,py3:2,deprec:2,mailer:[],myproject:4,have:[],close:[0,5,6],need:[0,1,5,2,4,6,7],predic:4,paramiko:7,mangl:0,afraid:[0,2],min:[4,6],runapp:4,which:[0,5,2,3,4,6,7],itsdanger:[],authentication_polici:4,soap:[3,7],singl:[0,1,2,3,4,5,6],unless:5,ds_store:2,deploy:[],whl:2,who:[4,6],oracl:2,discov:0,deploi:[],pyc:2,segment:6,why:[],dens:1,request:[],wtform:[],face:6,pipe:6,build_db:4,deni:4,determin:[0,5,2,3,4,6],fact:[5,3,4,6],jkorpela:0,tolkien:[],text:[0,2,3,4,6],bring:[0,6],rough:2,trivial:[],identityset:2,redirect:0,locat:[0,5,2,4,6],should:[0,1,2,3,4,5,6],jan:[0,5],suppos:7,"3e1cb03b":0,"__tablename__":[2,4],local:[5,2,4,6],hope:7,move:[0,5,2,3],satisfact:4,familiar:[0,1],pypi:2,db8:5,log_buff:0,increas:7,aspen:[],smash:[7,6],blog_upd:[],enabl:[0,1,4],organ:7,rage:0,"0x10e7d6b90":6,stuff:6,"0x1005b8b40":5,contain:[0,5,2,3,4,6],attribut:[2,4,6],view:[],dbsession:[2,4,6],perdido:[],knowledg:[1,2,7],packet:[5,7],mistak:2,closer:2,statu:[2,4],wire:[5,4,6],correctli:[0,6],pattern:[7,2,3,6],tend:2,favor:[],written:[7,3,6],progress:[1,3],neither:7,flickr:4,email:[0,5,2],mysite1:0,sole:[0,5],kei:[2,4,6],job:[0,2,4,6],entir:2,jog:1,permanentflag:0,addit:[],dobb:0,admin:[3,4],trove:3,wsgiref:7,configpars:2,authorization_polici:4,instanc:[2,4],equat:5,wear:0,comment:[0,5,6],typifi:2,lang:6,this_id:6,rfc2616:0,chmod:4,walk:3,solv:[],tuesdai:1,silmarillion:[],quit:[0,5,2,3,4,6,7],divid:[5,2],addition:2,insuffici:0,compon:[],json:[7,3,6],rpclib:7,eloqu:[],immedi:5,treasur:3,sock_stream:5,bulk:2,untrack:2,togeth:[],present:[],ingredi:2,multi:0,plain:[0,2,3,4,6],cursor:[],defin:[5,7,2,6],xyzzi:0,wild:3,dbapi2:2,endblock:[4,6],layer:[0,5,2,7],ripe:3,demo:[],site:[2,3,4,6],inform:[],pastedeploi:2,cherrypi:[],lightweight:7,incom:[],whirl:[5,4],pyramid_chameleon:[2,6],undecid:[],welcom:2,parti:0,began:[],handl:[],demoenv:2,failur:[0,5],http:[],hostnam:5,absorb:2,effect:[],"5xx":0,student:[1,3],decoupl:[],expand:[],pull:[0,2],markupsaf:[],fenced_cod:4,center:0,well:[0,1,2,4,5,7],exampl:[],command:[0,1,2,4,6],choos:[1,6,2,5],undefin:6,usual:[5,2],distanc:5,svn:6,less:[0,5],kramer:4,tcp:[],emtpi:2,web:[],jinja:[],wed:0,nullabl:[4,6],smith:0,add:[],other:[],logger:2,match:[0,5,7,4,6],gmt:0,xmlrpc:[3,7],agnost:[5,6],crud:0,piec:6,arguabl:3,cedar:4,know:[1,5,2,4,6,7],unseen:0,password:[0,4,6],recurs:[],python2:2,insert:[],like:[],success:[0,5],echo_serv:5,lose:2,page:[0,1,2,3,4,6,7],backlog:5,didn:[2,7],captur:[2,6],suppli:4,utmcmd:0,"19t01":4,uidvalid:0,proper:[0,5,6],home:[0,2,4,6],transport:[],tmp:5,guid:7,gethostbyname_ex:5,esr:0,lead:[3,6],interfaceerror:[],broad:1,octet:0,leav:[2,6],blog_view:[],investig:[0,3,6],authz:[],journal:[2,3,4,6],usag:[1,2],facilit:7,host:[0,5,2,4],although:[0,2,6],wtttzy:4,about:[],actual:[0,5,2,4,6],socket:[],column:[2,4],herokuapp:4,datagram:[5,7],carrier:5,includ:[],constructor:5,own:[],washington:5,easy_instal:2,automat:[5,2,6],pcreat:[2,6],merg:[],sock_:5,val:[2,6],retr:0,transfer:[0,4,7],intention:0,appl:2,arg1:4,"var":[0,4],respositori:0,add_url_rul:[],xerox:2,gain:[1,2,3,4],inlin:[5,2],count:2,made:[0,5,2,4,6,7],view_config:[4,6],whether:0,wish:[2,4,7],googlecod:6,displai:[4,6],troubl:7,below:[5,4],limit:5,problem:[],evalu:[],"int":[2,4],dure:3,pid:[4,6],implement:[],ini:[2,4,6],pip:2,duru:2,probabl:[4,6],detail:[],virtual:[0,2],book:6,lookup:[5,6],futur:[5,3],rememb:[0,5,2,4,6],stat:0,mxodbc:[],"class":[],dewei:0,echo_cli:5,log:[0,2,4,6],fiddler2:0,databaseinterfac:[],"_queri":4,syllabu:2,reliabl:5,xmlrpclib:3,bcryptpasswordmanag:4,models_nam:2,portion:6,htmlparser:3},objtypes:{},objnames:{},filenames:["presentations/session05","index","presentations/session01","outline","presentations/session03","presentations/session04","presentations/session02","readings","presentations/index"],titles:["Session 05","Internet Programming with Python","Session 01","Course Outline","Session 03","Session 04","Session 02","Supplementary Course Readings","Course Presentations"],objects:{},titleterms:{wsgi:[3,7],req:[],protocol:[0,5,3,7],entri:4,queri:[],resp:[],all:5,tcp:[5,3,7],syntax:4,time:[0,5],session:[0,5,2,3,4,6,7],sqla:2,skill:[],dynam:[],web:[2,3,7],now:[],tire:[],flask:[],oooop:[],transact:[],configur:4,activ:2,enough:[],send:5,environment:[],add:6,program:1,congratul:[],persist:[3,7],input:6,kick:[],real:0,applic:[5,2,3,4,7],browser:[],rollback:[],get:[5,6],python:[0,1,2,5],safe:[],stop:[],pop3:0,framework:[],asset:6,jinja2:6,characterist:[],requir:1,introduct:2,insert:[],like:0,walkthrough:[],edit:6,simpl:[],revers:[],revert:[],resolv:0,authent:[3,7],server:5,"try":[],bad:[],common:[],quick:[],side:5,view:[7,3,6],respond:5,machin:[],domain:[],set:4,old:[],request:6,batteri:[],second:[],"static":6,connect:5,polish:4,our:[2,6],submit:[0,5],transport:5,out:[],virtualenv:2,separ:2,what:[0,1],forcibl:[],learn:0,databas:2,asid:[],slide:[],content:0,state:[],irl:[],languag:0,internet:[1,5],django:[3,7],"new":[],method:0,refer:[1,3],cgi:[3,7],"break":[0,5],run:[5,4],extend:3,gener:[],preprar:3,setup:[],tdd:[],debug:[],step:0,orm:2,logout:4,dictionari:[],address:5,put:5,problem:[],valu:[],addit:[],unsaf:[],search:1,socket:[5,3,7],http:[0,6],construct:5,filter:[],mvc:[7,2,3,6],context:[],action:[],modif:[],implement:[0,4],mean:[],fix:[],first:[0,2,4,6],wiki:[],own:[],prerequisit:1,render:[7,3,6],can:[],overview:1,app:4,sql:[],terminolog:2,echo:[],header:0,unix:[],api:[3,7],todai:[],famili:5,wrap:4,instal:2,your:[0,5,4,6],speak:0,code:[],authz:4,differ:[],git:[],supplementari:7,commun:5,test:[0,5],interact:[2,6],three:2,messag:5,custom:5,compon:2,few:0,heroku:4,much:[],mime:0,includ:[],statement:[],basic:[0,3,6],forward:[],master:[],popul:[],type:[0,5],start:2,authn:4,"function":[],introspect:[],idempot:[],form:[3,7],about:2,schema:[],part:6,link:5,togeth:5,why:2,virtuelenv:2,imap:0,present:[8,6],serv:0,word:2,look:0,provid:4,prepar:[3,4,6],outlin:3,project:2,url:[],express:[],homework:[0,5,2,6],error:0,login:4,anonym:4,more:[],html:[],expect:1,control:6,listen:5,pyramid:[7,2,3,6],comput:[0,5],virtualenvwrapp:[],creat:[5,2],deactiv:2,demo:[],respons:[0,6],smtp:0,populatedb:[],templat:6,wtform:6,packag:2,intro:[],have:0,further:[0,5],incom:5,work:2,check:[],option:[],result:[],again:[],decor:[],cours:[8,3,7],develop:[],goal:[],secur:4,receiv:5,rout:6,format:4,detail:[],client:5,note:[],preserv:[],other:[],branch:[],sqlite3:[],verifi:[],you:[],concern:2,parameter:[],accept:5,life:[],updat:[],fork:[],map:0,finish:5,resourc:0,clean:[5,2],deploy:[7,3,4,6],"class":1,object:[],sqlalchemi:2,highlight:4,solut:[],user:6,deploi:[3,4],hide:4,data:[7,3,6],stack:5,util:[],handl:0,task:5,practic:[],third:[],tutori:[],read:7,bind:5,flow:5,uri:0,rule:[],doe:0,inform:5,exampl:0,thi:1,repli:5,far:[],mashup:[3,7],model:[2,6],sesstion:[3,7],make:6}}) \ No newline at end of file +Search.setIndex({envversion:42,terms:{icmp:5,interchang:2,four:0,database_url:4,prefix:[0,5],ronach:7,af_rout:5,forget:4,categori:2,aug:2,sorri:2,ipproto_raw:5,crisew:5,authorid:[],concret:2,under:[],dest_dir:2,spec:7,digit:[0,6],dele:0,rise:[],adodbapi:[],govern:[0,1,3],cmd:0,herbert:6,imaplib:[0,3],verif:4,"544kb":[],direct:[0,2],batch:2,enjoi:[],second:[],street:[],nthi:6,even:[0,2,3,7],list_of_tcp_and_udp_port_numb:5,"new":[],net:0,ever:7,told:4,ipproto_tcp:5,abov:[0,5,2,3,4],createdb:[],show_profil:[],here:[0,1,5,2,4,6,7],china:[],"4xx":0,path:[0,2,3,4,6],interpret:[0,5,2,6],credit:2,webfact:0,permit:[0,3],studi:7,portabl:1,golden:6,heroku_postgresql_maroon_url:4,wikimedia:[2,6],org:[0,5],total:4,unit:[],highli:1,yore:6,describ:5,would:[0,2,4,6],hellstrom:[],tail:4,dnt:0,call:[0,5,2,4,6,7],admin_password:4,typo:2,recommend:4,type:[],tell:[0,5,2,4],"5fb97f3":[],panach:6,notic:[0,5,2,4,6],phone:6,moin:[],unpack:2,addon:4,af_unix:5,join:0,flaskenv:[],restor:[2,4],worth:[2,6],conceptu:6,introduc:[1,2,3,6],root:4,defer:4,repoz:2,give:[1,2,3,4,5],smtp:[],indic:0,want:[0,1,2,4,6,7],everi:[0,2],end:[0,1,5,3,4,6,7],learning_journ:[2,4,6],frobozz:0,book_insert:[],concis:3,conn:[0,5],env:2,answer:[0,5,6],verifi:[],perspect:7,anon_1:2,after:[2,6],superus:2,diagram:2,befor:[0,5,2,3,4,6],wrong:2,parallel:7,demonstr:[0,2,3],attempt:5,classmethod:[2,4,6],authzpolici:4,minim:[0,7],greet:0,think:[5,2,3,4,6,7],alias:5,scoped_sess:2,dispar:3,environ:[1,2,3,4],waitress:4,incorpor:4,enter:[0,6],lambda:6,engine_from_config:[2,4,6],order:[1,2,3,4,6],hob7v7guwir4n1v:4,origin:[2,3,7],feedback:[],over:[5,7,2,3,6],fall:2,becaus:[0,2,4,6],jpeg:0,privileg:2,keyboard:0,flexibl:2,vari:[0,5],digest:7,fit:3,fix:[],simple_cli:0,toolbelt:[4,6],comprehend:7,better:[5,2,4,7],offic:0,complex:[2,3],comprehens:7,howdi:6,easier:[7,2,6],them:[0,1,2,3,4,5,6],thei:[0,1,2,3,4,5,6,7],"break":[],sqlite3:[],jinja2:[],initializedb:[2,4],choic:[1,7,2,3,5],getservbynam:5,rocki:4,each:[0,1,2,3,4,5,8],went:[0,6],webmast:0,bone:6,mean:[],laboratori:1,doug:3,logo:6,ooop:[],extract:[3,7],network:[1,7,6,3,5],goe:[2,6],god:2,newli:[],content:[],rewrit:[],got:[0,2,4,6],forth:0,navig:1,rail:0,nightmar:2,situat:[0,2],free:[4,6],standard:[0,1,2,3,4,5,7],hand:[4,6],s3cr3t:4,traceback:[],static_url:6,isn:[0,6],confus:[5,6],"__or__":5,pristin:[],rang:[0,1,6],independ:[0,2],eachoth:2,hook:2,instruct:[5,2,7],alreadi:[0,5,2,4,6],messag:[],fantast:[1,2,7],primari:[2,6],top:[2,4,6],"0x1103e38d0":2,sometim:[0,2],imap4rev1:0,too:[0,5,7,2,6],tom:2,my_view:6,consol:2,namespac:[],tool:[0,1,2,3,4,5,7],setuptool:2,took:2,incur:4,technic:[],keyword:[4,6],provid:[],tree:[2,4],project:[],matter:4,arriv:6,minut:[0,5,6],rad:5,contenti:[],close:[0,5,6],ran:[0,2],modern:[2,3],mind:7,mine:0,raw:0,af_sna:5,pylon:2,increment:[],"__main__":4,seen:[0,5,2,4,6],seem:4,seek:[2,4],strength:3,latter:2,thorough:[7,6],"0x1103e3fd0":2,shelf:2,transmit:2,hypertext_transfer_protocol:0,simplifi:0,endfor:[4,6],plenti:3,though:[0,4,7],usernam:[0,4,6],object:[],guess_typ:0,regular:2,artifact:2,bsd:5,models_id:2,typ:5,maria:5,tradit:6,don:[0,1,5,2,4,6,7],doc:[0,2,4],metal:[],doe:[],notnul:[],declar:[2,6],unchang:7,passwordfield:4,sign_in_out:4,dot:6,opposit:6,random:4,syntax:[],rst:[],radio:6,identifi:[0,6],edit_entri:[],involv:4,absolut:6,exactli:[0,5,6],layout:[7,3,4,6],menu:0,explain:[2,7],configur:[],apach:0,kessler:7,disert:7,busi:[],matchdict:[4,6],rich:[1,3],folder:[5,2,4,6],resolve_uri:0,patter:6,stop:[],report:[],bat:7,bar:[0,5,6],ietf:0,baz:0,"public":[4,6],buffsiz:5,reload:[0,4],metadata:2,steal:[2,4],respond:[],get_const:5,habit:[],disucss:3,result:[],respons:[],fail:[0,5,4],themselv:[],best:[2,4],subject:[],awar:4,pythoncert:[2,6],txpostgr:[],wikipedia:[0,5,2,7],urllib:3,mysql_length:2,figur:[5,2],score:2,outstand:6,pbkdf2passordmanag:4,awai:2,enlighten:7,approach:[1,2],side:[],never:[5,2],extend:[],weak:3,extens:[0,1,4],html5:[3,6],protect:0,accident:5,howev:[2,6],against:[0,4,6],logic:[2,4,6],login:[],seri:2,com:[0,5,2,4,6],compromis:1,get_appset:[2,4,6],assur:5,trunk:6,trust:2,assum:[5,2],speak:[],chrome:0,add_rout:[2,4,6],three:[],been:[2,4,6],redeploi:4,interest:7,basic:[],quickli:[0,2],life:[],setup_log:[2,6],telnet:5,ani:[0,1,5,2,4,6,7],"catch":0,ugli:0,ident:4,servic:[0,5,3,4,7],properti:[5,4],commerci:2,neat:0,seven:0,pyramid:[],af_appletalk:5,tabl:[2,4,6],toolkit:0,fnhg:0,march:1,tediou:2,sever:[4,7],mievil:[],perform:[2,6],suggest:[0,4],make:[],couchdb:2,drawback:3,split:0,complet:[0,1,2,3,4,5,6,7],rfc822:0,nic:5,hang:0,kit:7,rais:[0,5],kib:[],"548kb":2,thu:5,depli:[],hypothet:2,inherit:[2,6],client:[],greatest:[],thi:[],endif:[4,6],gzip:0,everyth:[0,1,2,4,6,7],moreov:0,left:[2,4,7],protocol:[],just:[0,5,2,4,6,7],human:[0,7,6],yet:[0,5,2,4,6],languag:[],previous:3,alchemi:2,easi:[7,2,4,6],shout:6,"8bitmim":0,httpfound:[4,6],els:[0,2,4,6],save:[0,2,4,6],hat:0,gave:2,opt:0,applic:[],race:[4,6],mayb:[],an_id:[],parse_var:2,render_markdown:4,elabor:4,enrypt:[],apart:[7,6],imap4_port:0,response_method_not_allow:0,specif:[5,2,3,4,6,7],arbitrari:[5,2,4],bcrypt:4,manual:2,bathtim:6,hung:0,install_requir:2,underli:[1,3,5],www:[0,5],right:[0,1,7,4,6],"0db8":5,nfrom:2,intern:0,importantli:[],bore:[],successfulli:2,transmiss:[0,5,7],txt:[0,5,2,4],cooper:[],bottom:5,subclass:[],buffer:[0,5],ssh2:7,exectut:2,condit:0,foo:[0,5,4,6],localhost:[0,4,6],mailgat:0,core:7,particular:[7,2,4,6],confer:3,repositori:[5,2,4,6],post:[0,4,6],"super":0,chapter:[2,7],postgresql:[2,4],surround:6,dinner:0,commit:[2,4],produc:[5,3],encod:[0,4],bound:[5,2],curios:3,down:[4,6],creativ:[2,6],wrap:[],storag:[0,2],guardia:[],deal:[5,7],utmcsr:0,support:[0,1,2,3,4,6,7],payment:4,avail:[5,2,4,6],reli:4,request_method:4,editor:[],get_address_info:5,rcpt:0,internet_protocol_suit:5,head:[0,5,4,6],medium:5,form:[],offer:[7,2,3,6],forc:7,sqlalchemi:[],hear:5,lignt:3,codehilit:4,reset:[],attr:6,strip_filt:6,maximum:5,until:[5,2],fundament:[1,3],intitalizedb:2,featur:[2,3,4,7],af_decnet:5,"abstract":2,decrypt:0,proven:2,exist:[0,2,4,6],glanc:7,check:[],assembl:6,encrypt:[4,7],mashup:[],when:[0,5,2,4,6,7],role:6,jone:0,test:[],tie:[],webob:2,roll:4,relat:[2,7],intend:[1,2,5],af_unspec:5,urllib2:3,djangocon:7,intent:1,consid:[0,7,2,6],src:6,receiv:[],longer:5,bullet:4,pbkdf2:4,initialize_learning_journal_db:[2,4],pathnam:[0,5],time:[],push:[0,2,4],breadth:7,concept:[1,2,3,4,5,7],chain:[2,6],skip:2,consum:[5,3,7],focus:7,invent:2,supplement:7,skim:7,rdbm:[],row:[2,4],decid:[],depend:[2,3,4,6],graph:6,readabl:[0,6],unpython:2,a0004:0,a0005:0,a0006:0,decis:[],a0002:0,a0003:0,must:[0,1,5,2,4,6],isinst:[],sourc:[0,1,2,3,4,5,6,7,8],string:[0,5,2,3,4,6,7],congest:5,lru:2,kitten:2,word:[],ydood:6,brows:[3,6],administr:[],level:[1,2,4],did:[0,5,2,6],reconcil:[],ipproto_udp:5,iter:[5,2],item:[2,6],unsupport:[],team:2,cooki:[0,4],div:[],dir:[0,5],declarative_bas:2,upper:6,slower:5,permiss:4,sign:[0,4],restkit:7,cost:4,port:[0,5,4],procfil:4,appear:[4,6],repli:[],scaffold:2,beautifulsoup:[3,7],"75a8462":[],current:[5,2],rst2xml:2,sinc:[5,2,6],"3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4":4,response_ok:0,deriv:3,gener:[],explicitli:2,address:[],along:[0,1,3,7],wait:[0,5],shift:0,queue:5,pysqlit:[],bob:[0,2],commonli:5,ourselv:[0,4],ipc:5,semant:5,session1:5,extra:5,modul:[0,1,2,3,4,5,7],prefer:0,backtick:[],fake:[],marker:6,fetch_head:[],market:2,types_map:0,prove:4,univers:7,visit:[4,6],todai:[],live:[5,2,4],criteria:[0,2],msg:5,checkout:[],plug:0,pyarmid:[],enhanc:3,visual:0,appendix:0,accept:[],obj:[2,6],behalf:6,prepar:[],pretend:0,focu:3,whatev:[5,6],purpos:[0,2,3,4,6],boilerpl:2,stream:[5,2],predict:0,agent:0,topic:[7,6],critic:7,app_factori:2,loginform:4,occur:5,flask_intro:[],alwai:[0,5,2,4],multipl:2,winter:1,tilt:[],charset:[0,6],write:[0,5,2,4,6,7],anyon:[4,6],xhtml:0,map:[],product:[2,4,7],max:[0,4,6],dive:[1,3,4],tomayko:7,mac:0,date:[0,2],classroom:2,gethostnam:5,bookdb:[],explicit:6,blabber:2,tale:[],ephemer:[5,2],"switch":2,cannot:[5,6],combin:[1,2,3,4,6],callabl:6,talk:[0,5,2,3,6,7],shield:3,repair:[],ydwoh:6,brain:[],populate_db:[],gitignor:2,still:[0,2,6],config_uri:[2,4,6],group:[5,2],"4z6rvnhte21mpljw5veive0eg57gn":4,how:[0,1,2,3,4,5,6,7],polici:[3,4],sec10:0,platform:4,window:[0,2,4],curli:6,mail:0,main:[0,2,4,6],non:0,killer:3,initi:[0,2,4,7],interview:0,safari:0,half:5,discuss:[5,7,2,3,6],term:[1,2],name:[0,5,2,4,6,7],config:[2,4,6],interpr:2,separ:[],magazin:[7,6],januari:1,compil:[4,7],domain:[],"0x105849b90":6,replac:[4,6],individu:[5,2,6],continu:[0,5,2,3,4],happen:[0,5,2,6],accomplish:[0,7],space:0,profil:5,correct:[0,5,6],she:4,tmpl:6,earlier:[0,2,4],pseudocod:0,bookid:[],ch05s03:0,argv:[2,4],orm:[],inevet:[],argn:4,brower:3,"byte":5,card:5,care:[0,5,7],sign_in:4,wai:[0,1,2,3,4,6,7],question:[0,2,4,6],where:[5,2,4,6],refus:5,turn:[0,2,3,4,6,7],place:[5,2,3,4,6],principl:1,imposs:2,frequent:2,first:[],oper:[1,6,4,5],info:[5,2,4],directli:[5,2,6],onc:[0,5,2,3,4,6],yourself:[0,1],submit:[],open:[5,4,6],size:[0,5,4],urin:0,given:[0,1,5,2,3,6,7],sheet:6,convent:0,bookmark:7,imap4_ssl_port:0,demostr:[],draft:0,conveni:2,friend:4,prettier:6,repostitori:[],copi:[0,4,6],huh:0,specifi:6,"short":7,mostli:[0,5,7],domin:2,than:[0,5,2,4,6,7],png:0,serv:[],susan:[],were:[5,2],posit:5,conn2:[],conn1:[],browser:[],sai:[0,2,4],pro:5,argument:[0,5,2,4,6],properli:[0,3,6],deliv:[],notimplementederror:0,saw:2,shtml:0,engin:[2,4,6],techniqu:[],ipproto_:5,ideal:[],take:[0,5,2,3,4,6,7],green:0,reload_templ:2,noth:[2,4,6],channel:[0,2],begin:[0,5,2,3,4,6],sure:[5,2,4,6],pain:[2,4],trace:2,normal:2,track:[],price:4,compress:[],cgitb:[],pair:[2,3,6],homepag:7,sesstion:[],utmccn:0,later:0,drive:7,"8mb":2,create_al:2,shortnam:4,gracefulli:0,show:[0,2,3,4,6],german:[],my_index:2,constitu:6,dflt_valu:[],ground:1,xml:[0,2,6],onli:[0,2,4,6],slow:5,"true":[0,5,2,4,6],activ:[],getattr:5,dict:[5,2],analyt:4,startswith:5,"8873ba1":[],variou:[2,3,6],get:[],mung:0,clang:2,ssl:0,tailor:0,ssh:5,url_for:[],requir:[],entryfactori:4,authenticated_userid:4,default_permiss:4,wiki:[],n10:6,test_request_context:[],detect:4,review:[0,5,2,4,6],enumer:4,label:[4,6],behind:[2,7],between:[0,1,2,3,5],"import":[0,5,2,4,6],across:[1,3,5],parent:2,elladan:5,tut:0,cycl:[2,6],come:[0,2,4,6],img:0,contract:[],tutori:[],wherin:2,mani:[0,5,2,4,6,7],among:[5,2,3,6],color:4,unittest:3,dispatch:7,imad1:0,typic:2,artu:0,coupl:[5,2],rebuild:0,zpt:[],mark:4,evangelista:[2,6],workshop:1,avian:5,emphas:1,docxmlrpcserv:3,lectur:[1,3],"1xx":0,those:[0,2],"case":[0,7,2,6],plugin:[],cast:2,outcom:[0,2],certainli:6,python_web:[2,6],ehlo:0,advantag:[2,4],ctrl:0,canon:5,worri:[5,4],destin:[],blah:0,smalltalk:2,proto:5,cc0:[2,6],same:[0,5,2,3,4,6,7],pai:4,document:[0,1,2,3,4,5,6,7,8],week:[0,1,2,3,4,5,6,7],finish:[],assist:2,someon:4,driven:[0,6],capabl:[],add_rount:4,improv:[0,2,4],extern:7,appropri:[5,3,4,6],redqueen:0,"__acl__":4,macro:[],markup:4,without:[5,2,6],promis:5,model:[],execut:[0,1,2,4,5,7],excel:[7,6],rest:[0,2,3,4,7],interrupt:0,kill:[0,2],aspect:[2,3,4,6],monei:[],heffalump:5,versu:1,hint:0,except:[0,5,2],littl:[4,6],apache2:7,identif:[],blob:4,versa:[],vulner:0,real:[],requri:4,tranmiss:5,around:[5,7,4,6],read:[],makin:6,dark:[],traffic:0,mon:0,world:[7,2,3,6],socket_tool:5,intel:0,whitespac:0,integ:[5,2,4],server:[],benefit:[0,5,3],either:[0,6],cascad:6,get_payload:[],output:[0,5,4],manag:[5,2,4],fulfil:4,alan:[2,6],b60ea2bb7052a5bd300772d7d9d40b19b27f7a1b:[],ipproto_ip:5,definit:6,"2xx":0,exit:2,posgresql:4,notabl:0,refer:[],af_inet6:5,power:[5,2,3,4,6,7],broken:0,fulli:[],regexp:6,comparison:7,deflat:0,central:2,acl:4,microframework:2,stand:[2,6],mytempl:[2,6],effici:1,console_script:2,interleav:[],inbox:0,strip:6,foreward:[],igmp:5,hew:[],buffer_s:5,httpnotfound:[4,6],her:4,set_authorization_polici:4,aren:[2,4],start:[],interfac:[0,5,2,3,4,7],ipv4:[5,7],lot:[0,7,2,6],ipv6:[5,7],"0x10b075ed0":2,hei:5,ago:[5,4],bottl:[],tupl:5,cx_oracl:[],categor:0,freddi:6,notat:6,dirti:2,possibl:[5,7,6],"default":[5,2,4,6],connect:[],gone:2,uid:0,creat:[],certain:[0,5,2],paster:[2,6],deep:[4,7],strongli:4,intro:[],file:[0,1,2,3,4,5,6],fill:[4,6],beyond:4,googl:[5,2],compel:2,field:[2,4,6],valid:[0,4,6],copiou:7,ignor:[2,7],you:[],juic:6,sequenc:0,symbol:[5,6],briefli:6,transceiv:5,pool:7,reduc:2,"1b6":0,wife:7,directori:[0,2,3,4,6],descript:[5,2],hello:[0,7,6],potenti:[3,4],alright:[],escap:4,represent:[5,2],all:[],skeleton:[5,2],osx:[0,4],forbidden:4,scalar:2,abil:[0,2],follow:[0,5,2,3,4,6,7],disk:0,dsn:0,af_inet:5,articl:[2,4,6],init:2,program:[],cgi:[],norm:0,liter:2,straightforward:[],chameleon:6,fals:[5,4],faq:0,mcdonough:7,util:[],verb:0,mechan:4,fam:5,veri:[0,5,2,3,4,6,7],ticket:4,egg_info:2,list:[0,1,2,3,4,6,7],last_nam:6,adjust:2,stderr:0,small:[],sync:3,past:[2,4],design:[1,5,2,3,4,6,7],pass:[0,5,2,3,4,6,7],further:[],pyodbc:[],integr:1,by_nam:4,what:[],sud:7,section:[0,7,2,6],abl:[0,2,3,4,6],brief:[3,7],delet:[0,1,4],version:[0,1,2,3,4],primary_kei:[2,4],intersect:6,deepli:1,method:[],contrast:1,full:[1,2,3],hash:4,berkelei:7,inher:3,goodby:0,strong:[4,6],modifi:0,valu:[],ahead:[5,4,6],prior:4,pick:[4,6],add_static_view:[2,6],via:[2,4,6],filenam:0,href:[4,6],greenwitch:[],recret:[],establish:5,select:[0,1,2],distinct:0,stdout:[5,2],regist:[5,4],two:[0,5,2,3,4,6,7],taken:4,more:[],flat:[],flaw:6,mozilla:[0,7,6],flag:[0,5,4],jsonp:6,known:[5,4],cach:[0,2],none:[0,5,2,4,6],endpoint:[0,5],hour:[0,5,3,6],outlin:[],dev:4,histori:[],venusian:2,remain:[4,7],learn:[],abandon:[],rst2html:2,def:[0,5,2,4,6],ndate:5,factori:4,prompt:[5,2,3],scan:[2,6],challeng:[0,4],registr:4,share:[0,5,2,4,6],templat:[],explor:[1,2,3,5],hilight:[],phrase:[2,6],login_form:4,scar:[],cours:[],mai:[0,5,2,4,7],first_nam:6,secur:[],rather:0,anoth:[5,2,3,4,6],comfort:[1,6],message_from_str:[],"__init__":[2,4,6],csv:[2,6],simpl:[],css:[0,7,4,6],unabl:4,"545kb":2,resourc:[],referenc:6,okai:[0,2],associ:3,github:[0,5,2,4,6],footer:6,author:[3,4],django:[],caus:2,hobbit:[],egg:2,checkbox:6,help:[0,1,5,2,3,6,7],mainthread:[2,4],hypertext:7,soon:[5,6],through:[0,1,2,3,4,6,7],pane:0,paramet:[],style:[0,2,4,6],psycopg2:[2,4],wipe:[],pserv:[4,6],might:[0,5,7,2,6],alter:[],pce:[1,6],tri:6,good:[0,1,2,3,4,7],"return":[0,5,2,4,6],pollut:2,cew:2,framework:[],maildrop:0,gethostbynam:5,msg_part:5,httplib:3,eventu:2,troubleshoot:4,unlik:[],authent:[],easili:[7,2,6],achiev:[],http_server:0,compris:2,found:[0,2,6],unicod:[2,4,6],joel:4,dig:6,hard:[2,3,4],idea:[0,5,2,3],realli:[0,5,7,4,6],expect:[],blog_creat:[],thing:[0,7,2,4,6],orient:2,ftp:5,publish:[2,7],research:2,bubbl:6,etag:0,authnpolici:4,print:[0,5,2,4,6],url_map:[],uwpc:[2,6],"__utmz":0,postgr:4,proxi:0,uncommit:2,advanc:0,new_model:2,guess:0,dune:[],reason:[0,6],base:[0,1,2,3,4],put:[],"__utma":0,recv:[0,5],imap4:0,bash:4,thread:[],by_id:[2,4,6],perhap:[0,6],perman:[0,2,4],assign:[0,1,2,3,4,5,6],"85a3":5,set_authentication_polici:4,obviou:0,prevent:4,feel:6,number:[0,5,2,3,4,6,7],placehold:[0,6],done:[0,5,2,4,6],construct:[],stdlib:[],blank:0,miss:2,differ:[],superpow:[],script:[0,5,2,3,4,6,7],interact:[],least:[2,6],getservbyport:5,station:[],order_bi:2,statement:[],zeromq:7,scheme:[],store:[2,4],luckili:[0,2,4,6],parc:2,option:[],relationship:[5,3],echo_socket:5,part:[],pars:[0,2,7],logged_in:4,off:[0,7,2,4,6],fred:2,king:[],kind:[0,5,4,6],grew:0,remot:[5,2,4,7],remov:[5,2,4],game:6,reus:[],str:2,relative_to:4,consumpt:[3,7],aclauthorizationpolici:4,payload:0,"_socketobject":5,packag:[],expir:4,larri:2,imagin:[4,6],built:[0,2,3,4,6,7],lib:[0,2],odd:6,self:4,also:[0,1,2,3,4,5,6,7],build:[0,1,2,3,4,5,6,7],textareafield:6,brace:6,distribut:2,kai:2,interpol:[],reach:5,chart:[2,6],most:[0,5,2,3,4,6],plai:[2,4,6],path_info:[],swiftli:[],addr:[0,5],filesystem:[0,3,6],mymodel:[2,4,6],cover:[0,1,2,4,7],clean:[],http_server_at_hom:0,latest:7,wsgi:[],hyper:0,v12:0,session:[],entry_point:2,fine:[0,6],find:[0,5,2,3,4,6,7],access:[0,1,3,4,7],nosql:2,copyright:2,solut:[],"172kb":2,factor:2,smtplib:3,darwin:2,hit:[],unus:2,resent:5,wrinkl:[],"3xx":0,restart:[0,4,6],rfc:[0,7],common:[],nowher:2,wrote:4,certif:[1,6],creator:7,overwhelm:2,"0x1103e3f50":2,af_ipx:5,see:[0,5,2,3,4,6],bare:6,sea:3,arg:2,reserv:[0,5],pyrami:[],someth:[0,2,4,6],particip:1,blog_act:[],topmost:5,won:0,subscript:6,experi:3,altern:[2,7],javascript:6,isol:2,mailbox:0,succeed:[],"31m":4,pymssql:[],both:[0,5,2,3,4,6,7],hiddenfield:4,last:[0,5,2,4,6],delimit:0,context:[],let:[0,5,2,4,6],load:[0,3,4,6],markdown:[3,4],simpli:[0,2,3,4,6],point:[0,5,2,4],instanti:2,header:[],route_url:[4,6],param:4,linux:[0,4],comput:[],throughout:1,xkcd:0,blog:[0,3],empti:[0,5,2,4,6],hellmann:3,runner:[],secret:4,newcom:[],authn:[],rstpep2html:2,"55c0287d4ef21f15b97eb1f107451b88b479bff":4,strategi:[],exercis:[1,3],fire:[0,2,4,6],imag:[0,6],cryptacular:4,append:[0,2,4],coordin:2,understand:[0,1,3,4,7],instructor:[],convers:7,formatd:0,look:[],solid:[1,4,7],histor:[1,7],"while":[0,5,2,3],executemani:[],"54f7e4d":4,homework:[],behavior:[5,2,6],error:[],fun:6,everyon:4,loop:0,engl:[],readi:[0,5,2,4,6],readm:2,itself:2,zopetransactionextens:[],grant:4,belong:[0,5,4],wherein:6,zope:2,conflict:2,b59b7c3:4,communc:5,moment:[5,2,4,6],temporari:6,user:[],robust:4,wherev:[],stack:[],recent:[0,2],travers:[],task:[],find_packag:2,entri:[],spent:5,doodi:6,pickl:2,person:[5,4,6],expens:[5,4],elev:0,connnect:5,five:0,macintosh:0,spend:[5,6],explan:0,make_wsgi_app:2,"__path__":2,shape:1,mysql:2,session05:0,session04:5,session06:[],session01:5,session02:[0,6],cur:[],restructuredtext:2,global_config:[2,4,6],populate_obj:[4,6],armin:7,appli:[3,4,6],input:[],bin:[2,4,6],varchar:2,format:[],big:[],intuit:[],folk:[],server_socket:5,blogcreateform:[],bit:[0,5,2,3,4,6,7],formal:[0,2],httpexcept:6,leisur:7,ipproto_icmp:5,docutil:2,altough:[],manifest:[2,3],collect:[2,6],princip:4,popular:[3,4],a0001:0,often:[0,5,2,7],visibl:3,some:[0,1,2,3,4,5,6,7],back:[0,5,2,3,4,6,7],global:[],understood:5,uidnext:0,sampl:[4,6],ljenv:[2,4,6],scale:4,cgihttpserv:7,sock_dgram:5,pep:[],per:[0,5,4],larg:[],werkzeug:[],machin:[],intial:0,previou:[0,3],authtktauthenticationpolici:4,viabl:2,crlf:0,impos:[],constraint:7,materi:[8,3,7],memori:1,"0x100563c90":5,block:[0,5,4,6],plan:4,supplementari:[],miracl:0,primarili:[],ensur:[0,5,2,4],lesson:7,html5shiv:6,span:4,sock:[0,5],stylesheet:6,fast:2,custom:[],heroku:[],pocoo:[],suit:[3,7],etc:[0,5,2,6],doctyp:[0,6],repeatedli:[5,2],great:[0,7,2,3,6],pwd:2,b60ea2bb70:[],link:[],atol:4,delta:[],line:[0,1,2,4,6],translationstr:2,utf:[0,6],consist:0,cid:[],planet:[],sum:6,highlight:[],similar:[0,2,3],clear:[0,5,3],sesson:0,constant:5,parser:7,chao:4,doesn:[0,5,2,4,6],repres:[0,2,3,6],gecko:0,response_not_found:0,titl:[0,2,6],scrape:3,nam:5,nav:6,librari:[0,1,2,3,4,5,6,7],nice:[0,3,4,6],llvm:2,mongodb:2,meaning:2,csrftoken:0,index_pag:[4,6],algorithm:4,vice:[],mimetyp:0,rst2latex:2,allowedvers:0,discrimin:[],depth:[1,7],came:4,scroll:[],oop:2,getaddrinfo:5,code:[],partial:[],sqlserver:2,pymysql:[],ljshell:6,broader:[],edu:5,sensit:[0,4],elsewher:[5,4],send:[],lower:[5,7,6],aris:2,sent:[0,5,2,3,4,6],charlesproxi:0,spool:0,stackoverflow:0,relev:2,recip:4,magic:6,button:6,hive:[],"try":[],rfc5321:0,particularli:[4,6],hasnochildren:0,pleas:[2,3,7],smaller:5,natur:6,uniqu:[2,4,6],video:7,download:[2,6],carlo:[],click:6,client_address:5,compat:2,index:[0,2,4,6],wahoo:0,compar:[0,4],resembl:6,cell:[],len:[0,5,2],madelin:[],bodi:[0,2,4,6],loadapp:4,intercept:4,logout:[],becom:2,pgbackup:4,convert:[2,4,6],pretti:[0,2],technolog:[5,4],thie:7,chang:[0,2,3,4,6,7],maker:6,chanc:3,firefox:0,parse_request:0,win:0,gatewai:3,"__name__":4,from:[0,1,2,3,4,5,6,7],commun:[],upgrad:4,next:[0,5,2,4,6,7],websit:[2,3,4,6],few:[],usr:2,sort:[],sudo:2,ipoac:5,babi:6,train:[2,6],somesecret:4,account:6,retriev:6,scalabl:2,alic:4,tag:[0,4,6],thin:5,meet:3,fetch:[0,2,4,6],aliv:[0,5],sqlite:[2,4],quickstart:[],tar:2,process:[1,5,2,3,4,6],lock:4,preformat:4,high:2,af_:5,tab:0,tal:[],onlin:[5,2,3,4],cache_max_ag:[2,6],gcc:2,cewing_socket:5,sit:7,client_socket:5,pyramid_jinja2:6,instead:[0,2,4,6],entryeditform:4,chri:7,delai:2,initialzedb:4,attend:1,other_sess:2,"6mb":2,attent:4,tier:4,philosophi:7,physic:[5,6],drop:[5,6],add_al:2,bind:[],correspond:5,element:[0,2,3,6],issu:[],webroot:0,chief:4,allow:[0,1,2,3,4,5,6,7],sendal:[0,5],elif:6,insight:3,bunch:5,uiqj579igrbrebhmjqnth8pffaz2qrj:0,verify_password:4,chosen:[],"0x10046cec0":5,infrastructur:4,bye:0,rat:[],recept:5,greater:7,python:[],auto:[],spell:6,dai:[0,3,6],auth:4,hateoa:7,httplib2:7,front:3,"8a2e":5,tilkov:7,somewher:[4,6],anyth:[2,4],entrycreateform:[4,6],nameerror:0,mode:2,autoincr:4,beneath:4,nearli:2,pygment:4,bump:0,sessionmak:[2,6],meta:6,"static":[],special:[2,3,4,6],out:[],variabl:4,influenc:[],defend:7,stub:[],suitabl:4,rel:6,leverag:4,clone:[5,2,6],red:0,clarifi:2,insid:[0,5,2],workflow:[],frank:6,manipul:2,zodb:2,auth_secret:4,first_lin:0,complianc:4,cri:[0,6],"0x1103d9f10":2,could:[0,2,4,7],lexer:4,ask:[0,5,2],keep:[0,1,2,3,5],length:[0,2,4,6],enforc:7,outsid:[2,4],south:[],softwar:[0,5,2,4,6],pygments_styl:4,qualiti:3,scene:[],echo:[],exact:6,models_valu:2,match_param:[4,6],smallish:5,owner:6,"long":[0,5,2,3,4],licens:[2,7],mkdir:2,system:[1,5,2,4,6,7],wrapper:5,attach:4,imap4_ssl:0,"3f80f":0,termin:[0,5,2,4],"final":[0,1,5,2,3,6],low:1,udp:[5,7],shell:[2,4],fnhg8:[],fnhg5:0,fnhg2:0,fnhg3:0,"8d3":5,dyno:4,textfield:[4,6],nobodi:[],route_nam:[4,6],embodi:[2,4],roberto:6,structur:[1,7,3,6],charact:[2,4,6],sens:6,"782d17e":[],f12:0,bet:[],unstag:2,favorit:0,py2:2,py3:2,deprec:2,mailer:[],myproject:4,have:[],disadvantag:[],need:[0,1,5,2,4,6,7],predic:4,paramiko:7,mangl:0,afraid:[0,2],min:[4,6],runapp:4,which:[0,5,2,3,4,6,7],itsdanger:[],authentication_polici:4,soap:[3,7],singl:[0,1,2,3,4,5,6],unless:5,ds_store:2,deploy:[],whl:2,who:[4,6],oracl:2,discov:0,deploi:[],pyc:2,segment:6,why:[],dens:1,request:[],wtform:[],face:6,pipe:6,build_db:4,deni:4,determin:[0,5,2,3,4,6],fact:[5,3,4,6],jkorpela:0,tolkien:[],text:[0,2,3,4,6],bring:[0,6],rough:2,trivial:[],identityset:2,redirect:0,locat:[0,5,2,4,6],should:[0,1,2,3,4,5,6],jan:[0,5],suppos:7,"3e1cb03b":0,"__tablename__":[2,4],local:[5,2,4,6],hope:7,move:[0,5,2,3],satisfact:4,familiar:[0,1],pypi:2,db8:5,log_buff:0,increas:7,aspen:[],smash:[7,6],blog_upd:[],enabl:[0,1,4],organ:7,rage:0,"0x10e7d6b90":6,stuff:6,"0x1005b8b40":5,contain:[0,5,2,3,4,6],attribut:[2,4,6],view:[],dbsession:[2,4,6],perdido:[],knowledg:[1,2,7],packet:[5,7],mistak:2,closer:2,statu:[2,4],wire:[5,4,6],correctli:[0,6],pattern:[7,2,3,6],tend:2,favor:[],written:[7,3,6],progress:[1,3],neither:7,flickr:4,email:[0,5,2],mysite1:0,sole:[0,5],kei:[2,4,6],job:[0,2,4,6],entir:2,jog:1,permanentflag:0,addit:[],dobb:0,admin:[3,4],trove:3,wsgiref:7,configpars:2,authorization_polici:4,instanc:[2,4],equat:5,wear:0,comment:[0,5,6],typifi:2,lang:6,this_id:6,rfc2616:0,chmod:4,walk:3,solv:[],tuesdai:1,silmarillion:[],quit:[0,5,2,3,4,6,7],divid:[5,2],addition:2,insuffici:0,compon:[],json:[7,3,6],rpclib:7,eloqu:[],immedi:5,treasur:3,sock_stream:5,bulk:2,untrack:2,togeth:[],present:[],ingredi:2,multi:0,plain:[0,2,3,4,6],cursor:[],defin:[5,7,2,6],xyzzi:0,wild:3,dbapi2:2,endblock:[4,6],layer:[0,5,2,7],ripe:3,demo:[],site:[2,3,4,6],inform:[],pastedeploi:2,cherrypi:[],lightweight:7,incom:[],whirl:[5,4],pyramid_chameleon:[2,6],undecid:[],welcom:2,parti:0,began:[],handl:[],demoenv:2,failur:[0,5],http:[],hostnam:5,absorb:2,effect:[],"5xx":0,student:[1,3],decoupl:[],expand:[],pull:[0,2],markupsaf:[],fenced_cod:4,center:0,well:[0,1,2,4,5,7],exampl:[],command:[0,1,2,4,6],choos:[1,6,2,5],undefin:6,usual:[5,2],distanc:5,svn:6,less:[0,5],kramer:4,tcp:[],emtpi:2,web:[],jinja:[],wed:0,nullabl:[4,6],smith:0,add:[],other:[],logger:2,match:[0,5,7,4,6],gmt:0,xmlrpc:[3,7],agnost:[5,6],crud:0,piec:6,arguabl:3,cedar:4,know:[1,5,2,4,6,7],unseen:0,password:[0,4,6],recurs:[],python2:2,insert:[],like:[],success:[0,5],echo_serv:5,lose:2,page:[0,1,2,3,4,6,7],backlog:5,didn:[2,7],captur:[2,6],suppli:4,utmcmd:0,"19t01":4,uidvalid:0,proper:[0,5,6],home:[0,2,4,6],transport:[],tmp:5,guid:7,gethostbyname_ex:5,esr:0,lead:[3,6],interfaceerror:[],broad:1,octet:0,leav:[2,6],blog_view:[],investig:[0,3,6],authz:[],journal:[2,3,4,6],usag:[1,2],facilit:7,host:[0,5,2,4],although:[0,2,6],wtttzy:4,about:[],actual:[0,5,2,4,6],socket:[],column:[2,4],herokuapp:4,datagram:[5,7],carrier:5,includ:[],constructor:5,own:[],washington:5,easy_instal:2,automat:[5,2,6],pcreat:[2,6],merg:[],sock_:5,val:[2,6],retr:0,transfer:[0,4,7],intention:0,appl:2,arg1:4,"var":[0,4],respositori:0,add_url_rul:[],xerox:2,gain:[1,2,3,4],inlin:[5,2],count:2,made:[0,5,2,4,6,7],view_config:[4,6],whether:0,wish:[2,4,7],googlecod:6,displai:[4,6],troubl:7,below:[5,4],limit:5,problem:[],evalu:[],"int":[2,4],dure:3,pid:[4,6],implement:[],ini:[2,4,6],pip:2,duru:2,probabl:[4,6],detail:[],virtual:[0,2],book:6,lookup:[5,6],futur:[5,3],rememb:[0,5,2,4,6],stat:0,mxodbc:[],"class":[],dewei:0,echo_cli:5,log:[0,2,4,6],fiddler2:0,databaseinterfac:[],"_queri":4,syllabu:2,reliabl:5,xmlrpclib:3,bcryptpasswordmanag:4,models_nam:2,portion:6,htmlparser:3},objtypes:{},objnames:{},filenames:["presentations/session05","index","presentations/session01","outline","presentations/session03","presentations/session04","presentations/session02","readings","presentations/index"],titles:["Session 05","Internet Programming with Python","Session 01","Course Outline","Session 03","Session 04","Session 02","Supplementary Course Readings","Course Presentations"],objects:{},titleterms:{wsgi:[3,7],req:[],protocol:[0,5,3,7],entri:4,queri:[],resp:[],option:[],all:5,tcp:[5,3,7],syntax:4,time:[0,5],session:[0,5,2,3,4,6,7],sqla:2,skill:[],dynam:[],web:[2,3,7],now:[],tire:[],flask:[],oooop:[],transact:[],configur:4,activ:2,enough:[],send:5,environment:[],add:6,program:1,congratul:[],persist:[3,7],input:6,kick:[],real:0,applic:[5,2,3,4,7],browser:[],rollback:[],get:[5,6],python:[0,1,2,5],safe:[],stop:[],pop3:0,framework:[],jinja2:6,characterist:[],requir:1,introduct:2,insert:[],like:0,walkthrough:[],edit:6,simpl:[],revers:[],revert:[],resolv:0,authent:[3,7],server:5,"try":[],bad:[],common:[],quick:[],side:5,view:[7,3,6],respond:5,machin:[],domain:[],set:4,old:[],request:6,batteri:[],second:[],"static":6,connect:5,polish:4,our:[2,6],submit:[0,5],transport:5,out:[],virtualenv:2,separ:2,what:[0,1],forcibl:[],learn:0,databas:2,asid:[],slide:[],content:0,state:[],irl:[],languag:0,internet:[1,5],django:[3,7],"new":[],method:0,refer:[1,3],cgi:[3,7],"break":[0,5],run:[5,4],extend:3,gener:[],preprar:3,setup:[],tdd:[],debug:[],step:0,orm:2,logout:4,dictionari:[],address:5,put:5,problem:[],valu:[],addit:[],unsaf:[],search:1,socket:[5,3,7],http:[0,6],construct:5,filter:[],mvc:[7,2,3,6],context:[],action:[],modif:[],implement:[0,4],mean:[],fix:[],first:[0,2,4,6],wiki:[],own:[],prerequisit:1,render:[7,3,6],can:[],overview:1,app:4,sql:[],terminolog:2,echo:[],header:0,unix:[],api:[3,7],todai:[],famili:5,wrap:4,instal:2,your:[0,5,4,6],speak:0,code:[],authz:4,differ:[],git:[],supplementari:7,commun:5,test:[0,5],interact:[2,6],three:2,messag:5,custom:5,compon:2,few:0,heroku:4,much:[],mime:0,authn:4,statement:[],basic:[0,3,6],forward:[],master:[],popul:[],type:[0,5],start:2,includ:[],"function":[],introspect:[],asset:6,form:[3,7],about:2,schema:[],part:6,link:5,togeth:5,why:2,virtuelenv:2,imap:0,present:[8,6],serv:0,word:2,look:0,provid:4,prepar:[3,4,6],outlin:3,project:2,url:[],express:[],homework:[0,5,2,6],error:0,login:4,anonym:4,more:[],html:[],expect:1,control:6,listen:5,pyramid:[7,2,3,6],comput:[0,5],virtualenvwrapp:[],creat:[5,2],deactiv:2,demo:[],respons:[0,6],smtp:0,populatedb:[],templat:6,wtform:6,packag:2,intro:[],have:0,further:[0,5],incom:5,work:2,check:[],idempot:[],result:[],again:[],decor:[],cours:[8,3,7],develop:[],goal:[],secur:4,receiv:5,rout:6,format:4,detail:[],client:5,note:[],preserv:[],other:[],branch:[],sqlite3:[],verifi:[],you:[],concern:2,parameter:[],accept:5,life:[],updat:[],fork:[],map:0,finish:5,resourc:0,clean:[5,2],deploy:[7,3,4,6],"class":1,object:[],sqlalchemi:2,highlight:4,solut:[],user:6,deploi:[3,4],hide:4,data:[7,3,6],stack:5,util:[],handl:0,task:5,practic:[],third:[],tutori:[],read:7,bind:5,flow:5,uri:0,rule:[],doe:0,inform:5,exampl:0,thi:1,repli:5,far:[],mashup:[3,7],model:[2,6],sesstion:[3,7],make:6}}) \ No newline at end of file diff --git a/slides/_sources/presentations/session01.txt b/slides/_sources/presentations/session01.txt index d0d5e7be..b6aa18e9 100644 --- a/slides/_sources/presentations/session01.txt +++ b/slides/_sources/presentations/session01.txt @@ -1415,7 +1415,7 @@ Any interaction with the database requires a ``session``. .. code-block:: pycon - >>> query = session.query(MyModel).all() + >>> query = session.query(MyModel) >>> type(query) @@ -1652,8 +1652,8 @@ Returning to queries, the second category is typified by the ``filter`` method >>> for obj in session.query(MyModel).filter(MyModel.value < 20): ... print obj.name, obj.value ... - larry 1 - fred 3 + one 1 + larry 3 tom 13 .. nextslide:: ``order_by`` @@ -1668,8 +1668,8 @@ Another typical method in this category is ``order_by``: >>> for obj in session.query(MyModel).order_by(MyModel.value): ... print obj.name, obj.value ... - larry 1 - fred 3 + one 1 + larry 3 tom 13 bob 34 @@ -1679,8 +1679,8 @@ Another typical method in this category is ``order_by``: ... print obj.name, obj.value ... bob 34 - fred 3 - larry 1 + larry 3 + one 1 tom 13 .. nextslide:: Method Chaining @@ -1698,8 +1698,8 @@ Since methods in this category return ``Query`` objects, they can be safely >>> for obj in q1: ... print obj.name, obj.value ... - fred 3 - larry 1 + larry 3 + one 1 tom 13 Note that you can do this inline as well diff --git a/slides/_sources/presentations/session03.txt b/slides/_sources/presentations/session03.txt index cb21f41b..bf761e7d 100644 --- a/slides/_sources/presentations/session03.txt +++ b/slides/_sources/presentations/session03.txt @@ -37,7 +37,7 @@ Questions About the Homework? class EntryEditForm(EntryCreateForm): id = HiddenField() -`View this online `_ +`View the form online `_ .. nextslide:: A Working Edit View @@ -56,7 +56,7 @@ Questions About the Homework? return HTTPFound(location=request.route_url('detail', id=entry.id)) return {'form': form, 'action': request.matchdict.get('action')} -`View this online `_ +`See this view online `_ .. nextslide:: Linking to the Edit Form @@ -75,7 +75,7 @@ Questions About the Homework? {% endblock %} -`View this online `_ +`View this template online `_ .. nextslide:: A Working User Model @@ -91,7 +91,7 @@ Questions About the Homework? def by_name(cls, name): return DBSession.query(User).filter(User.name == name).first() -`View this online `_ +`View this model online `_ Securing An Application ======================= @@ -222,13 +222,14 @@ We've now informed our application that we want to use security. .. rst-class:: build .. container:: - We've told it that by default we want a principal to have the 'view' - permission to see anything. + By default we require the 'view' permission to see anything. - Let's verify that this worked. + But we have yet to assign *any permissions to anyone* at all. - Start your application, and try to view any page (You should get 403 - Forbidden): + Let's verify now that we are unable to see anything in the website. + + Start your application, and try to view any page (You should get a 403 + Forbidden error response): .. code-block:: bash @@ -619,39 +620,32 @@ It would be nice to use the form library again to make a login form. ) -.. nextslide:: Login View - -We'll use that form in a view to log in (in ``learning_journal/views.py``): - -.. rst-class:: build -.. container:: +.. nextslide:: Login View in ``learning_journal/views.py`` - .. code-block:: python - - # a new imports: - from pyramid.security import forget, remember - from .forms import LoginForm - from .models import User +.. code-block:: python - # and a new view - @view_config(route_name='auth', match_param='action=in', renderer='string', - request_method='POST') - def sign_in(request): - login_form = None - if request.method == 'POST': - login_form = LoginForm(request.POST) - if login_form and login_form.validate(): - user = User.by_name(login_form.username.data) - if user and user.verify_password(login_form.password.data): - headers = remember(request, user.name) - else: - headers = forget(request) + # new imports: + from pyramid.security import forget, remember + from .forms import LoginForm + from .models import User + # and a new view + @view_config(route_name='auth', match_param='action=in', renderer='string', + request_method='POST') + def sign_in(request): + login_form = None + if request.method == 'POST': + login_form = LoginForm(request.POST) + if login_form and login_form.validate(): + user = User.by_name(login_form.username.data) + if user and user.verify_password(login_form.password.data): + headers = remember(request, user.name) else: headers = forget(request) - return HTTPFound(location=request.route_url('home'), - headers=headers) + else: + headers = forget(request) + return HTTPFound(location=request.route_url('home'), headers=headers) -.. nextslide:: Where's the form? +.. nextslide:: Where's the Renderer? Notice that this view doesn't render anything. No matter what, you end up returning to the ``home`` route. @@ -1383,7 +1377,7 @@ The chief advantage of Heroku is that we can re-deploy with a single command. Add and commit your changes to git. - Then re-deply by pushing to the ``heroku master``: + Then re-deploy by pushing to the ``heroku master``: .. code-block:: bash @@ -1478,10 +1472,10 @@ It would be nice if our journal entries could have HTML formatting. We could write HTML by hand in the body field, but that'd be a pain. - Instead, let's allow ourselves to write entries in `Markdown`_, a popular + Instead, let's allow ourselves to write entries `in Markdown`_, a popular markup syntax used by GitHub and many other websites. - .. _Markdown: http://daringfireball.net/projects/markdown/syntax + .. _in Markdown: http://daringfireball.net/projects/markdown/syntax Python provides several libraries that implement markdown formatting. @@ -1715,7 +1709,7 @@ with this feature. ) return output - Now, you'll be able to make hilighted code like so: + Now, you'll be able to make highlighted code blocks just like in GitHub: .. code-block:: text diff --git a/slides/outline.html b/slides/outline.html index 7eab229a..6d7034cf 100644 --- a/slides/outline.html +++ b/slides/outline.html @@ -52,7 +52,7 @@ - + diff --git a/slides/presentations/session01.html b/slides/presentations/session01.html index ed4c31bf..78ba73c2 100644 --- a/slides/presentations/session01.html +++ b/slides/presentations/session01.html @@ -1613,7 +1613,7 @@

      Basic Interactions

      This object represents the connection to the database.

      All database queries are phrased as methods of the session.

      -
      >>> query = session.query(MyModel).all()
      +
      >>> query = session.query(MyModel)
       >>> type(query)
       <class 'sqlalchemy.orm.query.Query'>
       
      @@ -1878,8 +1878,8 @@

      Methods Returning Queries

      >>> for obj in session.query(MyModel).filter(MyModel.value < 20):
       ...   print obj.name, obj.value
       ...
      -larry 1
      -fred 3
      +one 1
      +larry 3
       tom 13
       
      @@ -1899,8 +1899,8 @@

      order_by

      >>> for obj in session.query(MyModel).order_by(MyModel.value):
       ...   print obj.name, obj.value
       ...
      -larry 1
      -fred 3
      +one 1
      +larry 3
       tom 13
       bob 34
       
      @@ -1909,8 +1909,8 @@

      order_by

      ... print obj.name, obj.value ... bob 34 -fred 3 -larry 1 +larry 3 +one 1 tom 13
      @@ -1933,8 +1933,8 @@

      Method Chaining

      >>> for obj in q1: ... print obj.name, obj.value ... -fred 3 -larry 1 +larry 3 +one 1 tom 13
  • diff --git a/slides/presentations/session03.html b/slides/presentations/session03.html index ae1581eb..04c10293 100644 --- a/slides/presentations/session03.html +++ b/slides/presentations/session03.html @@ -121,7 +121,7 @@

    A Working Edit Form

    id = HiddenField()

    -

    View this online

    +

    View the form online

    @@ -146,7 +146,7 @@

    A Working Edit View

    return {'form': form, 'action': request.matchdict.get('action')}

    -

    View this online

    +

    See this view online

    @@ -170,7 +170,7 @@

    Linking to the Edit Form

    {% endblock %}

    -

    View this online

    +

    View this template online

    @@ -192,7 +192,7 @@

    A Working User Model

    return DBSession.query(User).filter(User.name == name).first() -

    View this online

    +

    View this model online

    @@ -327,11 +327,11 @@

    Verify It Worked

    We've now informed our application that we want to use security.

    -

    We've told it that by default we want a principal to have the 'view' -permission to see anything.

    -

    Let's verify that this worked.

    -

    Start your application, and try to view any page (You should get 403 -Forbidden):

    +

    By default we require the 'view' permission to see anything.

    +

    But we have yet to assign any permissions to anyone at all.

    +

    Let's verify now that we are unable to see anything in the website.

    +

    Start your application, and try to view any page (You should get a 403 +Forbidden error response):

    (ljenv)$ pserve development.ini
     Starting server in PID 84467.
     serving on http://0.0.0.0:6543
    @@ -754,16 +754,13 @@ 

    A Login Form

    -

    Login View

    +

    Login View in learning_journal/views.py

    -

    We'll use that form in a view to log in (in learning_journal/views.py):

    -
    -
    # a new imports:
    +      
    # new imports:
     from pyramid.security import forget, remember
     from .forms import LoginForm
     from .models import User
    -
     # and a new view
     @view_config(route_name='auth', match_param='action=in', renderer='string',
          request_method='POST')
    @@ -779,11 +776,9 @@ 

    Login View

    headers = forget(request) else: headers = forget(request) - return HTTPFound(location=request.route_url('home'), - headers=headers) + return HTTPFound(location=request.route_url('home'), headers=headers)
    -
    @@ -791,7 +786,7 @@

    Login View

    -

    Where's the form?

    +

    Where's the Renderer?

    Notice that this view doesn't render anything. No matter what, you end up @@ -1570,7 +1565,7 @@

    Re-Deploy

    The chief advantage of Heroku is that we can re-deploy with a single command.

    Add and commit your changes to git.

    -

    Then re-deply by pushing to the heroku master:

    +

    Then re-deploy by pushing to the heroku master:

    (ljenv)$ git push heroku master
     
    @@ -1674,7 +1669,7 @@

    Format Entries

    It would be nice if our journal entries could have HTML formatting.

    We could write HTML by hand in the body field, but that'd be a pain.

    -

    Instead, let's allow ourselves to write entries in `Markdown`_, a popular +

    Instead, let's allow ourselves to write entries in Markdown, a popular markup syntax used by GitHub and many other websites.

    Python provides several libraries that implement markdown formatting.

    They will take text that contains markdown formatting and convert it to @@ -1693,7 +1688,7 @@

    Adding the Dependency

    The first step, is to pick a package and add it to our dependencies.

    -

    My recommendation is the `markdown`_ python library.

    +

    My recommendation is the markdown python library.

    Open setup.py and add the package to the requires list:

    requires = [
         # ...
    @@ -1913,7 +1908,7 @@ 

    Add to Our Filter

    return output
    -

    Now, you'll be able to make hilighted code like so:

    +

    Now, you'll be able to make highlighted code blocks just like in GitHub:

    ```python
     def foo(x, y):
         return x**y
    diff --git a/slides/searchindex.js b/slides/searchindex.js
    index 01f96eb1..0a5583be 100644
    --- a/slides/searchindex.js
    +++ b/slides/searchindex.js
    @@ -1 +1 @@
    -Search.setIndex({envversion:42,terms:{interchang:2,four:0,database_url:4,prefix:[0,5],af_rout:5,skeleton:[5,2],stub:[],aug:2,sorri:2,ipproto_raw:5,crisew:5,concret:2,dest_dir:2,worth:[2,6],digit:[0,6],everi:[0,2],govern:0,cmd:0,herbert:6,imaplib:0,verif:4,direct:[0,2],second:[],nthi:6,even:[0,2],list_of_tcp_and_udp_port_numb:5,"new":[],net:0,metadata:2,ipproto_tcp:5,behavior:[5,2,6],never:[5,2],here:[0,5,2,4,6],"4xx":0,path:[],interpret:[0,5,2,6],credit:2,webfact:0,permit:0,golden:6,heroku_postgresql_maroon_url:4,wikimedia:[2,6],txt:[0,5,2,4],yore:6,describ:5,would:[0,2,4,6],init:2,dnt:0,call:[0,5,2,4,6],admin_password:4,typo:2,recommend:4,strip_filt:6,tell:[0,5,2,4],relat:2,panach:6,notic:[0,5,2,4,6],phone:6,unpack:2,must:[0,5,2,4,6],af_unix:5,join:0,restor:[2,4],work:[],conceptu:6,norm:0,root:4,defer:4,repoz:2,give:[5,2,4],smtp:[],indic:0,want:[0,2,4,6],dele:0,end:[0,5,4,6],learning_journ:[2,4,6],frobozz:0,how:[],sever:4,env:2,interview:0,verifi:[],config:[],updat:[],anon_1:2,earlier:[0,2,4],superus:2,diagram:2,befor:[0,5,2,4,6],wrong:2,demonstr:[0,2],domin:2,classmethod:[2,4,6],authzpolici:4,minim:0,greet:0,think:[5,2,4,6],alias:5,scoped_sess:2,environ:[],incorpor:4,enter:[0,6],engine_from_config:[2,4,6],order:[2,4,6],hob7v7guwir4n1v:4,oper:[5,4,6],over:[5,2,6],fam:5,becaus:[0,2,4,6],jpeg:0,privileg:2,keyboard:0,flexibl:2,vari:[0,5],img:0,fix:[0,2,6],simple_cli:0,toolbelt:[4,6],better:[5,2,4],offic:0,howdi:6,easier:[2,6],them:[0,5,2,4,6],thei:[0,5,2,4,6],safe:[],"break":[],sqlite3:2,promis:5,initializedb:[],choic:[5,2],getservbynam:5,rocki:4,each:[0,5,2,4],debug:[],went:[0,6],webmast:0,bone:6,mean:[],logo:6,network:[5,6],goe:[2,6],god:2,dsn:0,got:[0,2,4,6],forth:0,rail:0,nightmar:2,situat:[0,2],free:[4,6],standard:[0,5,2,4],hand:[4,6],s3cr3t:4,static_url:6,filter:[],mvc:[],isn:[0,6],confus:[5,6],user:[],rang:[0,6],render:[],independ:[0,2],hook:2,instruct:[5,2],alreadi:[0,5,2,4,6],messag:[],fantast:2,primari:[2,6],top:[2,4,6],"0x1103e38d0":2,sometim:[0,2],imap4rev1:0,too:[0,5,2,6],tom:2,my_view:6,tool:[0,5,2,4],setuptool:2,took:2,incur:4,keyword:[4,6],provid:[],tree:[2,4],project:[],matter:4,rfc2616:0,minut:[0,5,6],rad:5,ran:[0,2],modern:2,mine:0,raw:0,af_sna:5,pylon:2,increment:[],"__main__":4,seen:[0,5,2,4,6],seem:4,seek:[2,4],latter:2,thorough:6,"0x1103e3fd0":2,fnhg5:0,transmit:2,hypertext_transfer_protocol:0,simplifi:0,endfor:[4,6],sock_dgram:5,though:[0,4],usernam:[0,4,6],object:[],guess_typ:0,regular:2,alan:[2,6],bsd:5,models_id:2,typ:5,maria:5,tradit:6,don:[0,5,2,4,6],doc:[0,2,4],doe:[],declar:[2,6],passwordfield:4,sign_in_out:4,dot:6,opposit:6,random:4,syntax:[],radio:6,protocol:[],edit_entri:[],involv:4,absolut:6,menu:0,explain:2,configur:[],apach:0,theme:[],matchdict:[],folder:[5,2,4,6],resolve_uri:0,patter:6,stop:[],bar:[0,5,6],ietf:0,baz:0,"public":[4,6],buffsiz:5,reload:[0,4],told:4,steal:[2,4],respond:[],get_const:5,result:[],respons:[],fail:[0,5,4],best:[2,4],awar:4,pythoncert:[2,6],databas:[],wikipedia:[0,5,2],mysql_length:2,figur:[5,2],score:2,outstand:6,pbkdf2passordmanag:4,awai:2,approach:2,attribut:[2,4,6],extend:[4,6],extens:[0,4],wear:0,protect:0,accident:5,howev:[2,6],against:[0,4,6],logic:[2,4,6],login:[],seri:2,com:[0,5,2,4,6],get_appset:[2,4,6],assur:5,trust:2,assum:[5,2],speak:[],chrome:0,add_rout:[2,4,6],been:[2,4,6],much:[],redeploi:4,basic:[],quickli:[0,2],rfc5321:0,setup_log:[2,6],telnet:5,ani:[0,5,2,4,6],"catch":0,ugli:0,ident:4,servic:[0,5,4],properti:[5,4],commerci:2,neat:0,seven:0,pyramid:[],af_appletalk:5,toolkit:0,fnhg:0,tediou:2,conn:[0,5],prior:4,perform:[2,6],suggest:[0,4],make:[],couchdb:2,complex:2,split:0,complet:[],rfc822:0,nic:5,hang:0,xyzzi:0,rais:[0,5],engin:[2,4,6],"548kb":2,thu:5,depli:4,hypothet:2,inherit:[2,6],client:[],thi:[0,1,2,3,4,5,6,7,8],endif:[4,6],gzip:0,everyth:[0,2,4,6],moreov:0,left:[2,4],identifi:[0,6],just:[0,5,2,4,6],human:[0,6],yet:[0,5,2,6],languag:[],alchemi:2,easi:[2,4,6],shout:6,"8bitmim":0,httpfound:[4,6],els:[0,2,4,6],hat:0,gave:2,opt:0,applic:[],preserv:2,parse_var:2,render_markdown:4,server_socket:5,elabor:4,enrypt:[],apart:6,imap4_port:0,response_method_not_allow:0,specif:[5,2,4,6],deprec:2,reload_templ:2,arbitrari:[5,2,4],manual:2,hung:0,install_requir:2,underli:5,www:[0,5],right:[0,4,6],old:2,deal:5,nfrom:2,intern:0,successfulli:2,transmiss:[0,5],total:4,http_server_at_hom:0,subclass:[],track:[],exectut:2,condit:0,foo:[0,5,4,6],localhost:[0,4,6],mailgat:0,particular:[2,4,6],confer:[],repositori:[5,2,4,6],post:[0,4,6],"super":0,chapter:2,postgresql:[],surround:6,dinner:0,commit:[],produc:5,encod:[0,4],bound:[5,2],down:[4,6],creativ:[2,6],wrap:[],storag:[0,2],"0db8":5,wai:[0,2,4,6],support:[0,2,4,6],why:[],avail:[5,2,4,6],reli:4,request_method:4,editor:[],get_address_info:5,rcpt:0,internet_protocol_suit:5,head:[0,5,4,6],medium:5,form:[],offer:[2,6],sqlalchemi:[],hear:5,icmp:5,codehilit:4,attr:6,type:[],maximum:5,until:[5,2],intitalizedb:2,featur:[2,4],af_decnet:5,"abstract":2,decrypt:0,proven:2,exist:[0,2,4,6],check:[],assembl:6,encrypt:[],mashup:[],excel:6,role:6,jone:0,test:[],webob:2,roll:4,intend:[5,2],af_unspec:5,consid:[0,2,6],receiv:[],longer:5,bullet:4,sock:[0,5],pbkdf2:4,initialize_learning_journal_db:[],bottom:5,wtttzy:4,push:[0,2,4],osx:[0,4],concept:[5,2,4],skip:2,consum:5,invent:2,row:[2,4],depend:[],graph:6,readabl:[0,6],unpython:2,a0004:0,a0005:0,a0006:0,a0001:0,a0002:0,a0003:0,addon:4,isinst:[],sourc:[0,5,2,4,6],string:[],congest:5,lru:2,kitten:2,ydood:6,brows:6,administr:[],level:[2,4],did:[0,5,2,6],dig:6,ipproto_udp:5,item:[2,6],team:2,cooki:[0,4],imap4:0,dir:[0,5],declarative_bas:2,upper:6,slower:5,sign:[0,4],cost:4,port:[0,5,4],procfil:[],appear:[4,6],current:[5,2],rst2xml:2,"3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4":4,gener:[0,5,2,4,6],explicitli:2,address:[],along:[],wait:[0,5],shift:0,queue:5,bob:[0,2],commonli:5,ourselv:[0,4],ipc:5,semant:5,session1:5,extra:5,modul:[0,5,2,4],prefer:0,marker:6,instal:[],smallish:5,market:2,types_map:0,prove:4,visit:[4,6],todai:[0,5,4,6],live:[5,2,4],criteria:[0,2],msg:5,plug:0,pyarmid:[],visual:0,appendix:0,oop:2,obj:[2,6],behalf:6,prepar:[],pretend:0,uniqu:[2,4,6],whatev:[5,6],purpos:[0,2,4,6],boilerpl:2,stream:[5,2],predict:0,agent:0,topic:6,app_factori:2,occur:5,entryeditform:4,other_sess:2,multipl:2,charset:[0,6],write:[0,5,2,4,6],anyon:[4,6],familiar:0,xhtml:0,product:[2,4],max:[0,4,6],clone:[5,2,6],mac:0,models_valu:2,data:[],classroom:2,gethostnam:5,practic:0,divid:[5,2],explicit:6,predic:4,mangl:0,inform:[],"switch":2,tailor:0,combin:[2,4,6],callabl:6,talk:[0,5,2,6],ydwoh:6,gitignor:2,still:[0,2,6],dynam:[0,6],config_uri:[2,4,6],group:[5,2],"4z6rvnhte21mpljw5veive0eg57gn":4,polici:4,sec10:0,platform:4,window:[0,2,4],curli:6,mail:0,main:[0,2,4,6],non:0,initi:[0,2,4],answer:[0,5,6],safari:0,half:5,now:[0,5,2,4,6],discuss:[5,2,6],term:2,name:[0,5,2,4,6],simpl:[0,5,2,4,6],interpr:2,separ:[],magazin:6,compil:4,domain:[],"0x105849b90":6,replac:[4,6],individu:[5,2,6],continu:[0,5,2,4],happen:[],accomplish:0,space:0,profil:5,correct:[0,5,6],"0x1005b8b40":5,tmpl:6,myproject:4,after:[2,6],pseudocod:0,state:[2,4],ch05s03:0,argv:[2,4],orm:[],argn:4,org:[0,5],"byte":5,card:5,care:[0,5],sign_in:4,utmcsr:0,default_permiss:4,refus:5,thing:[0,2,4,6],place:[5,2,4,6],imposs:2,frequent:2,lambda:6,origin:2,directli:[5,2,6],onc:[0,5,2,4,6],yourself:0,"long":[0,5,2,4],open:[5,4,6],size:[0,5,4],urin:0,given:[0,5,2,6],sheet:6,convent:0,imap4_ssl_port:0,eachoth:2,draft:0,conveni:2,friend:4,includ:[],copi:[0,4,6],huh:0,artifact:2,github:[0,5,2,4,6],mostli:[0,5],attempt:5,than:[0,5,2,4,6],png:0,serv:[],were:[5,2],posit:5,"5xx":0,browser:[],sai:[0,2,4],pro:5,argument:[0,5,2,4,6],larri:2,deliv:[],notimplementederror:0,saw:2,shtml:0,date:[0,2],ipproto_:5,note:[0,5,2,4,6],take:[0,5,2,4,6],green:0,bcrypt:4,noth:[2,4,6],channel:[0,2],begin:[0,5,2,4,6],sure:[5,2,4,6],pain:[2,4],trace:2,normal:2,buffer:[0,5],price:4,pair:[2,6],homepag:[],utmccn:0,later:0,"8mb":2,create_al:2,shortnam:4,gracefulli:0,show:[0,2,4,6],my_index:2,constitu:6,permiss:[],xml:[0,2,6],onli:[0,2,4,6],slow:5,"true":[0,5,2,4,6],transact:[5,2,4],enough:[0,2,4],dict:[5,2],analyt:4,startswith:5,nearli:2,variou:[2,6],mung:0,clang:2,ssl:0,cannot:[5,6],ssh:5,requir:[],entryfactori:4,authenticated_userid:4,where:[],wiki:[],n10:6,reserv:[0,5],concern:[],detect:4,review:[0,5,2,4,6],enumer:4,label:[4,6],getattr:5,between:[0,5,2],"import":[0,5,2,4,6],across:5,parent:2,elladan:5,tut:0,cycl:[2,6],come:[0,2,4,6],contract:[],tutori:6,wherin:2,mani:[0,5,2,4,6],among:[5,2,6],color:4,imad1:0,artu:0,coupl:[5,2],rebuild:[],mark:4,evangelista:[2,6],avian:5,"1xx":0,those:[0,2],"case":[0,2,6],plugin:[],cast:2,outcom:[],certainli:6,python_web:[2,6],ehlo:0,advantag:[2,4],stdout:[5,2],canon:5,worri:[5,4],blah:0,smalltalk:2,develop:[0,2,4,6],proto:5,cc0:[2,6],same:[0,5,2,4,6],html:[0,4,6],pai:4,document:[0,1,2,3,4,5,6,7,8],week:[0,5,2,4,6],finish:[],assist:2,someon:4,driven:[0,6],capabl:[],add_rount:4,improv:[0,2,4],appropri:[5,4,6],"__acl__":4,markup:4,without:[5,2,6],model:[],execut:[],when:[0,5,2,4,6],rest:[0,2,4],interrupt:0,kill:[0,2],aspect:[2,4,6],heffalump:5,hint:0,except:[0,5,2],littl:[4,6],blog:0,blob:4,vulner:0,real:[],tranmiss:5,around:[5,4,6],makin:6,traffic:0,mon:0,redqueen:0,socket_tool:5,intel:0,whitespac:0,integ:[5,2,4],server:[],benefit:[0,5],either:[0,6],cascad:6,get_payload:[],output:[0,5,4],manag:[5,2,4],fulfil:4,ipproto_ip:5,definit:6,"2xx":0,exit:2,posgresql:4,notabl:0,refer:[5,2,6],af_inet6:5,power:[5,2,4,6],broken:0,regexp:6,src:6,deflat:0,central:2,acl:4,microframework:2,"19t01":4,mytempl:[2,6],console_script:2,inbox:0,strip:6,igmp:5,hew:[],buffer_s:5,httpnotfound:[4,6],her:4,set_authorization_polici:4,aren:[2,4],start:[],interfac:[0,5,2,4],ipv4:5,lot:[0,2,6],ipv6:5,"0x10b075ed0":2,machin:[],hei:5,index_pag:[],tupl:5,client_address:5,categor:0,freddi:6,pull:[0,2],dirti:2,possibl:[5,6],"default":[5,2,4,6],expect:[0,2,6],gone:2,uid:0,creat:[],certain:[0,5,2],deep:4,strongli:4,intro:[],file:[],fill:[4,6],again:[0,5,2,4,6],googl:[5,2],compel:2,field:[2,4,6],valid:[0,4,6],pathnam:[0,5],you:[],juic:6,sequenc:0,symbol:[5,6],briefli:6,transceiv:5,reduc:2,"1b6":0,directori:[0,2,4,6],descript:[5,2],potenti:4,escap:4,represent:[5,2],all:[],forget:4,forbidden:4,scalar:2,abil:[0,2],follow:[0,5,2,4,6],disk:0,content:[],af_inet:5,articl:[2,4,6],tail:4,introduc:[2,6],liter:2,chameleon:6,far:[5,2],faq:0,util:[],verb:0,mechan:4,fall:2,veri:[0,5,2,4,6],ticket:4,egg_info:2,list:[],last_nam:6,adjust:[],stderr:0,small:[],past:[2,4],design:[],pass:[],further:[],by_nam:4,what:[],section:[0,2,6],abl:[0,2,4,6],delet:[0,4],version:[0,2,4],primary_kei:[2,4],intersect:6,method:[],full:2,hash:4,trunk:6,goodby:0,strong:[4,6],modifi:0,valu:[],search:[0,6],ahead:[5,4,6],sensit:[0,4],pick:[],action:[5,2,4,6],add_static_view:[2,6],via:[],filenam:0,href:[4,6],establish:5,select:[0,2],distinct:0,ctrl:0,regist:[],two:[0,5,2,4,6],zopetransactionextens:[],taken:4,satisfact:4,more:[],flaw:6,mozilla:[0,6],flag:[0,5,4],jsonp:6,known:[5,4],cach:[0,2],none:[0,5,2,4,6],endpoint:[0,5],hour:[0,5,6],dev:4,venusian:2,remain:4,learn:[],rst2html:2,def:[0,5,2,4,6],ndate:5,factori:[],prompt:[5,2],scan:[2,6],challeng:[0,4],registr:4,share:[],accept:[],explor:[5,2],hilight:4,phrase:[2,6],login_form:4,goal:2,first_nam:6,secur:[],rather:0,anoth:[5,2,4,6],comfort:6,message_from_str:[],"__init__":[2,4,6],csv:[2,6],loginform:4,css:6,"545kb":2,resourc:[],referenc:6,okai:[0,2],"short":[],footer:6,author:4,django:2,caus:2,egg:2,translationstr:2,checkbox:6,help:[0,5,2,6],authorization_polici:4,mainthread:[2,4],soon:[5,6],through:[0,2,4,6],pane:0,style:[],psycopg2:[2,4],pserv:[4,6],might:[0,5,2,6],pce:6,recip:4,good:[0,2,4],"return":[],pollut:2,cew:2,framework:[2,4,6],maildrop:0,gethostbynam:5,msg_part:5,eventu:2,authent:[0,4],easili:[2,6],http_server:0,compris:2,found:[0,2,6],unicod:[2,4,6],joel:4,hard:[2,4],idea:[0,5,2],realli:[0,5,4,6],connect:[],blog_creat:[],beyond:4,orient:2,ftp:5,publish:2,research:2,bubbl:6,etag:0,authnpolici:4,print:[0,5,2,4,6],uwpc:[2,6],"__utmz":0,postgr:4,proxi:0,uncommit:2,advanc:0,new_model:2,differ:[],reason:[0,6],base:[],put:[],"__utma":0,recv:[0,5],bash:4,by_id:[2,4,6],perhap:[0,6],assign:[0,5,2,6],set_authentication_polici:4,obviou:0,prevent:4,feel:6,number:[0,5,2,4,6],placehold:[0,6],done:[],construct:[],blank:0,miss:2,guess:0,script:[],interact:[],least:[2,6],getservbyport:5,statement:2,store:[2,4],luckili:[0,2,4,6],parc:2,option:[],relationship:5,behind:2,echo_socket:5,part:[],pars:[],logged_in:4,off:[0,2,4,6],fred:2,kind:[0,5,4,6],grew:0,remot:[5,2,4],remov:[5,2,4],str:2,relative_to:4,aclauthorizationpolici:4,payload:0,"_socketobject":5,packag:[],expir:4,properli:[0,6],imagin:[4,6],built:[0,2,4,6],lib:[0,2],self:4,also:[0,5,2,4,6],build:[],textareafield:6,brace:6,distribut:2,kai:2,previou:0,reach:5,chart:[2,6],most:[0,5,2,4,6],"0x100563c90":5,plan:4,addr:[0,5],mymodel:[2,4,6],cover:[0,2,4],wsgi:[2,4],hyper:0,v12:0,session:[],particularli:[4,6],fine:[0,6],find:[0,5,2,4,6],nosql:2,copyright:2,solut:[],"172kb":2,factor:2,darwin:2,unus:2,resent:5,"3xx":0,restart:[0,4,6],rfc:0,common:[],nowher:2,wrote:4,certif:6,set:[],overwhelm:2,"0x1103e3f50":2,af_ipx:5,see:[0,5,2,4,6],bare:6,arg:2,close:[0,5,6],pyrami:[],uw_pc:[],someth:[0,2,4,6],blog_act:[],topmost:5,won:0,subscript:6,pastedeploi:2,sole:[0,5],isol:2,mailbox:0,succeed:[],"31m":4,both:[0,5,2,4,6],hiddenfield:4,delimit:0,unstag:2,logout:[],load:[0,4,6],markdown:[],simpli:[0,2,4,6],point:[0,5,2,4],instanti:2,header:[],route_url:[4,6],param:4,linux:[0,4],mistak:2,xkcd:0,authz:[],empti:[0,5,2,4,6],pgbackup:4,retr:0,secret:4,authn:[],rstpep2html:2,"55c0287d4ef21f15b97eb1f107451b88b479bff":4,fire:[0,2,4,6],imag:[0,6],cryptacular:4,coordin:2,understand:[0,4],convers:[],formatd:0,look:[],solid:4,batch:2,"while":[0,5,2],"54f7e4d":4,homework:[],abov:[0,5,2,4],error:[],fun:6,everyon:4,loop:0,readi:[0,5,2,4,6],readm:2,itself:2,"3f80f":0,decor:6,grant:4,belong:[0,5,4],wherein:6,zope:2,conflict:2,b59b7c3:4,communc:5,moment:[5,2,4,6],temporari:6,"__or__":5,robust:4,chang:[],recent:[0,2],lower:[5,6],task:[],find_packag:2,entri:[],spent:5,doodi:6,pickl:2,person:[5,4,6],expens:[5,4],elev:0,connnect:5,cedar:4,macintosh:0,spend:[5,6],explan:0,make_wsgi_app:2,"__path__":2,mysql:2,session05:0,session04:5,session01:5,session02:[0,6],restructuredtext:2,global_config:[2,4,6],populate_obj:[4,6],appli:[4,6],input:[],bin:[2,4,6],varchar:2,format:[],big:[],response_ok:0,game:6,blogcreateform:[],bit:[],formal:[0,2],httpexcept:6,an_id:[],ipproto_icmp:5,docutil:2,manifest:2,collect:[2,6],princip:4,popular:4,often:[0,5,2],some:[0,5,2,4,6],back:[0,5,2,4,6],understood:5,uidnext:0,sampl:[4,6],ljenv:[2,4,6],per:[0,5,4],larg:[],cgi:[],intial:0,run:[],authtktauthenticationpolici:4,viabl:2,crlf:0,plai:[2,4,6],block:[],miracl:0,ensur:[0,5,2,4],html5shiv:6,span:4,question:[0,2,4,6],stylesheet:6,fast:2,heroku:[],prettier:6,doctyp:[0,6],repeatedli:[5,2],pwd:2,link:[],atol:4,line:[0,2,4,6],info:[5,2,4],utf:[0,6],consist:0,sum:6,similar:[0,2],clear:[0,5],sesson:0,constant:5,chao:4,doesn:[0,5,2,4,6],repres:[0,2,6],gecko:0,response_not_found:0,titl:[0,2,6],nam:5,nav:6,nice:[0,4,6],llvm:2,mongodb:2,meaning:2,csrftoken:0,svn:6,algorithm:4,mimetyp:0,rst2latex:2,allowedvers:0,discrimin:[],came:4,hello:[0,6],getaddrinfo:5,code:[],queri:[],sqlserver:2,edu:5,bathtim:6,elsewher:[5,4],send:[],aris:2,sent:[0,5,2,4,6],charlesproxi:0,rollback:2,spool:0,stackoverflow:0,relev:2,tri:6,magic:6,button:6,"try":[],race:[4,6],entry_point:2,hasnochildren:0,pleas:2,smaller:5,natur:6,download:[2,6],odd:6,click:6,append:[0,2,4],compat:2,index:[0,2,4,6],wahoo:0,compar:[],resembl:6,can:[],len:[0,5,2],bodi:[0,2,4,6],loadapp:4,intercept:4,let:[0,5,2,4,6],becom:2,sinc:[5,2,6],great:[0,2,6],pretti:[0,2],technolog:[5,4],typic:2,maker:6,firefox:0,ago:[5,4],parse_request:0,win:0,app:[],api:[],"__name__":4,from:[0,5,2,4,6],upgrad:4,next:[0,5,2,4,6],websit:[2,4,6],few:[],usr:2,sudo:2,ipoac:5,babi:6,train:[2,6],somesecret:4,account:6,retriev:6,scalabl:2,alic:4,tag:[0,4,6],thin:5,fetch:[0,2,4,6],aliv:[0,5],control:[],sqlite:[2,4],tar:2,process:[5,2,4,6],lock:4,preformat:4,high:2,af_:5,tab:0,onlin:[5,2,4],cache_max_ag:[2,6],gcc:2,cewing_socket:5,client_socket:5,pyramid_jinja2:6,instead:[0,2,4,6],stand:[2,6],delai:2,initialzedb:4,alwai:[0,5,2,4],"6mb":2,attent:4,tier:4,physic:[5,6],drop:[5,6],add_al:2,bind:[],correspond:5,element:[0,2,6],webroot:0,runapp:[],allow:[0,5,2,4,6],sendal:[0,5],elif:6,move:[0,5,2],bunch:5,uiqj579igrbrebhmjqnth8pffaz2qrj:0,verify_password:4,"0x10046cec0":5,infrastructur:4,bye:0,recept:5,handl:[],demoenv:2,spell:6,dai:[0,6],auth:4,"8a2e":5,somewher:[4,6],anyth:[2,4],edit:[],entrycreateform:[4,6],nameerror:0,slide:[8,1,3,7],mode:2,autoincr:4,beneath:4,pygment:4,bump:0,sessionmak:[2,6],meta:6,"static":[],our:[],special:[2,4,6],out:[],variabl:4,categori:2,suitabl:4,rel:6,dive:4,red:0,clarifi:2,insid:[0,5,2],frank:6,manipul:2,zodb:2,auth_secret:4,first_lin:0,complianc:4,cri:[0,6],"0x1103d9f10":2,could:[0,2,4],lexer:4,ask:[0,5,2],keep:[0,5,2],length:[0,2,4,6],outsid:[2,4],waitress:4,softwar:[0,5,2,4,6],pygments_styl:4,echo:[],exact:6,mai:[0,5,2,4],match_param:[4,6],owner:6,licens:2,mkdir:2,system:[],wrapper:5,attach:4,imap4_ssl:0,termin:[0,5,2,4],"final":[0,5,2,6],udp:5,shell:[],fnhg8:[],shelf:2,fnhg2:0,fnhg3:0,"8d3":5,dyno:4,textfield:[4,6],exactli:[0,5,6],route_nam:[4,6],embodi:[2,4],roberto:6,charact:[2,4,6],sens:6,f12:0,favorit:0,py2:2,py3:2,respositori:0,requri:4,have:[],tabl:[],need:[0,5,2,4,6],turn:[0,2,4,6],afraid:[0,2],min:[4,6],rout:[],chief:4,which:[0,5,2,4,6],authentication_polici:4,singl:[0,5,2,4,6],unless:5,ds_store:2,whl:2,who:[4,6],oracl:2,discov:0,deploi:[],pyc:2,segment:6,payment:4,url:[],request:[],face:6,pipe:6,build_db:4,deni:4,determin:[],fact:[5,4,6],jkorpela:0,text:[0,2,4,6],bring:[0,6],rough:2,identityset:2,redirect:0,locat:[0,5,2,4,6],should:[0,5,2,4,6],jan:[0,5],"3e1cb03b":0,"__tablename__":[2,4],local:[5,2,4,6],notat:6,convert:[2,4,6],pypi:2,db8:5,log_buff:0,smash:6,blog_upd:[],enabl:[0,4],rage:0,"0x10e7d6b90":6,stuff:6,she:4,contain:[0,1,2,3,4,5,6,7,8],paster:[2,6],view:[],dbsession:[2,4,6],knowledg:2,packet:5,closer:2,statu:[2,4],wire:[5,4,6],correctli:[0,6],tend:2,written:6,flickr:4,email:[0,5,2],mysite1:0,javascript:6,kei:[2,4,6],job:[0,2,4,6],entir:2,permanentflag:0,addit:[],revers:[5,6],dobb:0,admin:4,configpars:2,etc:[0,5,2,6],instanc:[2,4],equat:5,html5:6,comment:[0,5,6],typifi:2,lang:6,this_id:6,arriv:6,chmod:4,quit:[0,5,2,4,6],addition:2,insuffici:0,json:6,immedi:5,sock_stream:5,bulk:2,untrack:2,togeth:[],ingredi:2,multi:0,plain:[0,2,4,6],defin:[],dbapi2:2,endblock:[4,6],layer:[0,5,2],site:[2,4,6],incom:[],whirl:[5,4],pyramid_chameleon:[2,6],welcom:2,parti:0,failur:[0,5],http:[],hostnam:5,absorb:2,"85a3":5,expand:[],fenced_cod:4,center:0,well:[0,5,2,4],exampl:[],command:[0,2,4,6],filesystem:[0,6],undefin:6,usual:[5,2],distanc:5,less:[0,5],kramer:4,emtpi:2,web:[],jinja:[],wed:0,nullabl:[4,6],smith:0,add:[],book:6,logger:2,match:[],gmt:0,agnost:[5,6],crud:0,piec:6,five:0,know:[5,2,4,6],unseen:0,password:[],python2:2,insert:4,like:[],success:[0,5],echo_serv:5,lose:2,page:[],backlog:5,didn:2,specifi:6,captur:[2,6],suppli:4,utmcmd:0,uidvalid:0,proper:[0,5,6],home:[0,2,4,6],librari:[0,5,2,4,6],tmp:5,gethostbyname_ex:5,esr:0,lead:6,octet:0,"16x16":[],leav:[2,6],blog_view:[],investig:[0,6],journal:[],usag:2,host:[0,5,2,4],although:[0,2,6],about:[],actual:[0,5,2,4,6],socket:[],world:[2,6],column:[],herokuapp:4,datagram:5,carrier:5,constructor:5,fals:[5,4],own:[],washington:5,easy_instal:2,automat:[5,2,6],pcreat:[2,6],leverag:4,sock_:5,val:[2,6],transfer:[0,4],intention:0,appl:2,arg1:4,"var":[0,4],"function":[0,5,2,4,6],mailer:[],xerox:2,gain:[2,4],inlin:[5,2],count:2,made:[0,5,2,4,6],view_config:[4,6],whether:0,wish:[2,4],googlecod:6,displai:[4,6],below:[5,4],limit:5,problem:[5,2,4],"int":[2,4],blabber:2,pid:[4,6],ephemer:[5,2],implement:[],ini:[2,4,6],pip:2,duru:2,probabl:[4,6],detail:[],virtual:[0,2],other:[],lookup:[5,6],futur:5,rememb:[0,5,2,4,6],stat:0,"class":[0,5,2,4,6],dewei:0,echo_cli:5,log:[0,2,4,6],fiddler2:0,"_queri":4,syllabu:2,reliabl:5,rule:[0,5,2],bcryptpasswordmanag:4,models_nam:2,portion:6},objtypes:{},objnames:{},filenames:["presentations/session05","index","presentations/session01","outline","presentations/session03","presentations/session04","presentations/session02","readings","presentations/index"],titles:["Session 05","Internet Programming with Python","Session 01","Course Outline","Session 03","Session 04","Session 02","Supplementary Course Readings","Course Presentations"],objects:{},titleterms:{all:[5,2],code:[0,2],protocol:[0,5],chain:2,queri:2,resp:[],stack:5,tcp:5,syntax:4,ljshell:6,permiss:4,polish:4,skill:5,languag:0,web:2,style:6,password:4,layout:6,execut:4,flask:[],configur:[2,4,6],activ:2,send:5,environment:[],add:[2,4,6],program:1,matchdict:6,persist:2,input:6,save:2,alter:2,match:6,real:0,deactiv:2,file:2,messag:5,"return":[0,2],string:6,get:[5,2,6],python:[0,1,2,5],express:6,stop:0,"break":[0,5,2,4],jinja2:[4,6],initializedb:4,bit:2,characterist:0,requir:4,introduct:2,environ:2,like:0,header:0,edit:[4,6],troubleshoot:4,list:[4,6],resolv:0,iter:2,server:[0,5],"try":[4,6],other:0,bad:0,session:[0,5,2,4,6],common:0,quick:[0,5],updat:[0,4],where:4,side:[5,2],view:[0,4,6],respond:5,machin:5,domain:5,set:4,famili:5,pop3:0,resourc:0,request:[0,6],revel:4,second:[],design:[],connect:[5,6],respons:[0,6],our:[0,2,4,6],happen:2,transport:5,concern:2,virtualenv:2,separ:2,what:[0,2,4,6],scale:4,hide:4,compar:4,databas:[2,4],scaffold:[],asid:0,content:0,adjust:4,irl:0,internet:[1,5],"new":2,method:[0,5,2],can:0,altern:2,core:0,run:[0,5,4],journal:4,error:0,tdd:0,debug:0,step:0,base:2,logout:4,dictionari:6,address:5,put:5,path:6,along:0,valu:6,addit:4,unsaf:0,about:[0,2,4],last:2,req:[],column:2,commun:5,page:6,filter:[4,6],mvc:[2,6],perman:2,context:[4,6],pick:6,congratul:5,commit:2,implement:[0,4],mean:[],rebuild:4,block:6,first:[0,2,4,6],wiki:[],own:5,render:6,markdown:4,solut:0,app:[2,4],deploi:4,repli:5,terminolog:2,system:[2,6],walkthrough:[],unix:5,api:6,done:4,construct:5,orm:2,batteri:[],chang:[2,4,6],your:[0,5,2,4,6],speak:0,authz:4,differ:0,git:[],modif:0,cryptactular:4,script:[2,6],interact:[0,2,6],regist:4,three:2,submit:[0,5,2],custom:5,compon:2,start:2,heroku:4,much:[],mime:0,asset:6,accept:5,basic:[0,2,6],master:[],homework:[0,5,2,6],instal:[2,4,6],more:2,fork:[],via:4,life:[],shell:4,consol:2,idempot:0,form:[4,6],smtp:0,bind:5,further:[0,5],depend:4,effect:2,part:6,link:[5,4],togeth:5,postgresql:4,virtuelenv:2,imap:0,present:[8,6],authn:4,serv:0,"static":6,word:[2,4],look:0,provid:[4,6],type:[0,5],setup:2,outlin:3,structur:[2,6],project:2,defin:6,outcom:6,glori:4,learn:0,highlight:4,anonym:4,listen:5,browser:0,control:6,factori:4,pyramid:[2,4,6],comput:[0,5],engag:4,creat:[5,2,4],applic:[5,2,4],wrap:4,demo:[0,6],pass:0,share:6,few:0,templat:6,uri:0,packag:2,sqla:2,stub:6,have:[0,2],tabl:2,incom:5,work:[2,4],check:4,option:0,result:4,cours:[8,3,7],irrelev:2,advic:2,secur:4,receiv:5,make:[2,4,6],format:[0,4],detail:6,access:6,client:5,how:4,cleanup:2,read:7,build:4,branch:[],order_bi:2,test:[0,5,4,6],verifi:4,you:2,out:[4,6],config:4,prepar:[4,6],css:4,complet:6,map:0,finish:5,http:[0,6],determin:0,safe:0,deploy:[4,6],why:2,object:[2,6],sqlalchemi:2,procfil:4,socket:5,pattern:[],user:[4,6],echo:0,sql:2,encrypt:4,data:6,login:4,index_pag:4,util:5,handl:0,task:5,third:[],choos:2,url:6,entri:4,initialize_learning_journal_db:2,flow:[5,6],wtform:6,doe:[0,6],inform:5,runapp:4,exampl:[0,4,6],ignor:2,clean:[5,2],time:[0,5,2,4],pars:0,model:[2,4,6],rout:6,includ:[]}})
    \ No newline at end of file
    +Search.setIndex({envversion:42,terms:{interchang:2,four:0,database_url:4,prefix:[0,5],af_rout:5,skeleton:[5,2],stub:[],aug:2,sorri:2,ipproto_raw:5,crisew:5,concret:2,dest_dir:2,worth:[2,6],digit:[0,6],everi:[0,2],govern:0,cmd:0,herbert:6,imaplib:0,verif:4,direct:[0,2],second:[],nthi:6,even:[0,2],list_of_tcp_and_udp_port_numb:5,"new":[],net:0,metadata:2,ipproto_tcp:5,behavior:[5,2,6],never:[5,2],here:[0,5,2,4,6],"4xx":0,path:[],interpret:[0,5,2,6],credit:2,webfact:0,permit:0,golden:6,heroku_postgresql_maroon_url:4,wikimedia:[2,6],txt:[0,5,2,4],yore:6,describ:5,would:[0,2,4,6],init:2,dnt:0,call:[0,5,2,4,6],admin_password:4,typo:2,recommend:4,strip_filt:6,tell:[0,5,2,4],relat:2,panach:6,notic:[0,5,2,4,6],phone:6,unpack:2,must:[0,5,2,4,6],af_unix:5,join:0,restor:[2,4],work:[],conceptu:6,norm:0,root:4,defer:4,repoz:2,give:[5,2,4],smtp:[],indic:0,want:[0,2,4,6],dele:0,end:[0,5,4,6],learning_journ:[],frobozz:0,how:[],sever:4,env:2,interview:0,verifi:[],config:[],updat:[],anon_1:2,earlier:[0,2,4],superus:2,diagram:2,befor:[0,5,2,4,6],wrong:2,demonstr:[0,2],domin:2,classmethod:[2,4,6],authzpolici:4,minim:0,greet:0,think:[5,2,4,6],alias:5,scoped_sess:2,environ:[],incorpor:4,enter:[0,6],engine_from_config:[2,4,6],order:[2,4,6],hob7v7guwir4n1v:4,oper:[5,4,6],over:[5,2,6],fam:5,becaus:[0,2,4,6],jpeg:0,privileg:2,keyboard:0,flexibl:2,vari:[0,5],img:0,fix:[0,2,6],simple_cli:0,toolbelt:[4,6],better:[5,2,4],offic:0,howdi:6,easier:[2,6],them:[0,5,2,4,6],thei:[0,5,2,4,6],safe:[],"break":[],sqlite3:2,promis:5,initializedb:[],choic:[5,2],getservbynam:5,rocki:4,each:[0,5,2,4],debug:[],went:[0,6],webmast:0,bone:6,mean:[],logo:6,network:[5,6],goe:[2,6],god:2,dsn:0,got:[0,2,4,6],forth:0,rail:0,nightmar:2,situat:[0,2],free:[4,6],standard:[0,5,2,4],hand:[4,6],s3cr3t:4,static_url:6,filter:[],mvc:[],isn:[0,6],confus:[5,6],user:[],rang:[0,6],render:[],independ:[0,2],hook:2,instruct:[5,2],alreadi:[0,5,2,4,6],messag:[],fantast:2,primari:[2,6],top:[2,4,6],"0x1103e38d0":2,sometim:[0,2],imap4rev1:0,too:[0,5,2,6],tom:2,my_view:6,tool:[0,5,2,4],setuptool:2,took:2,incur:4,keyword:[4,6],provid:[],tree:[2,4],project:[],matter:4,rfc2616:0,minut:[0,5,6],rad:5,ran:[0,2],modern:2,mine:0,raw:0,af_sna:5,pylon:2,increment:[],"__main__":4,seen:[0,5,2,4,6],seem:4,seek:[2,4],latter:2,thorough:6,"0x1103e3fd0":2,fnhg5:0,transmit:2,hypertext_transfer_protocol:0,simplifi:0,endfor:[4,6],sock_dgram:5,though:[0,4],usernam:[0,4,6],object:[],guess_typ:0,regular:2,alan:[2,6],bsd:5,models_id:2,typ:5,maria:5,tradit:6,don:[0,5,2,4,6],doc:[0,2,4],doe:[],declar:[2,6],passwordfield:4,sign_in_out:4,dot:6,opposit:6,random:4,syntax:[],radio:6,protocol:[],edit_entri:[],involv:4,absolut:6,menu:0,explain:2,configur:[],apach:0,theme:[],matchdict:[],folder:[5,2,4,6],resolve_uri:0,patter:6,stop:[],bar:[0,5,6],ietf:0,baz:0,"public":[4,6],buffsiz:5,reload:[0,4],told:4,steal:[2,4],respond:[],get_const:5,result:[],respons:[],fail:[0,5,4],best:[2,4],awar:4,pythoncert:[2,6],databas:[],wikipedia:[0,5,2],mysql_length:2,figur:[5,2],score:2,outstand:6,pbkdf2passordmanag:4,awai:2,approach:2,attribut:[2,4,6],extend:[4,6],extens:[0,4],wear:0,protect:0,accident:5,howev:[2,6],against:[0,4,6],logic:[2,4,6],login:[],seri:2,com:[0,5,2,4,6],get_appset:[2,4,6],assur:5,trust:2,assum:[5,2],speak:[],chrome:0,add_rout:[2,4,6],been:[2,4,6],much:[],redeploi:4,basic:[],quickli:[0,2],rfc5321:0,setup_log:[2,6],telnet:5,ani:[0,5,2,4,6],"catch":0,ugli:0,ident:4,servic:[0,5,4],properti:[5,4],commerci:2,neat:0,seven:0,pyramid:[],af_appletalk:5,toolkit:0,fnhg:0,tediou:2,conn:[0,5],prior:4,perform:[2,6],suggest:[0,4],make:[],couchdb:2,complex:2,split:0,complet:[],rfc822:0,nic:5,hang:0,xyzzi:0,rais:[0,5],engin:[2,4,6],"548kb":2,thu:5,depli:[],hypothet:2,inherit:[2,6],client:[],thi:[0,1,2,3,4,5,6,7,8],endif:[4,6],gzip:0,everyth:[0,2,4,6],moreov:0,left:[2,4],identifi:[0,6],just:[0,5,2,4,6],human:[0,6],yet:[0,5,2,4,6],languag:[],alchemi:2,easi:[2,4,6],shout:6,"8bitmim":0,httpfound:[4,6],els:[0,2,4,6],hat:0,gave:2,opt:0,applic:[],preserv:2,parse_var:2,render_markdown:4,server_socket:5,elabor:4,enrypt:[],apart:6,imap4_port:0,response_method_not_allow:0,specif:[5,2,4,6],deprec:2,reload_templ:2,arbitrari:[5,2,4],manual:2,hung:0,install_requir:2,underli:5,www:[0,5],right:[0,4,6],old:2,deal:5,nfrom:2,intern:0,successfulli:2,transmiss:[0,5],total:4,http_server_at_hom:0,subclass:[],track:[],exectut:2,condit:0,foo:[0,5,4,6],localhost:[0,4,6],mailgat:0,particular:[2,4,6],confer:[],repositori:[5,2,4,6],post:[0,4,6],"super":0,chapter:2,postgresql:[],surround:6,dinner:0,commit:[],produc:5,encod:[0,4],bound:[5,2],down:[4,6],creativ:[2,6],wrap:[],storag:[0,2],"0db8":5,wai:[0,2,4,6],support:[0,2,4,6],why:[],avail:[5,2,4,6],reli:4,request_method:4,editor:[],get_address_info:5,rcpt:0,internet_protocol_suit:5,head:[0,5,4,6],medium:5,form:[],offer:[2,6],sqlalchemi:[],hear:5,icmp:5,codehilit:4,attr:6,type:[],maximum:5,until:[5,2],intitalizedb:2,featur:[2,4],af_decnet:5,"abstract":2,decrypt:0,proven:2,exist:[0,2,4,6],check:[],assembl:6,encrypt:[],mashup:[],excel:6,role:6,jone:0,test:[],webob:2,roll:4,intend:[5,2],af_unspec:5,consid:[0,2,6],receiv:[],longer:5,bullet:4,sock:[0,5],pbkdf2:4,initialize_learning_journal_db:[],bottom:5,wtttzy:4,push:[0,2,4],osx:[0,4],concept:[5,2,4],skip:2,consum:5,invent:2,row:[2,4],depend:[],graph:6,readabl:[0,6],unpython:2,a0004:0,a0005:0,a0006:0,a0001:0,a0002:0,a0003:0,addon:4,isinst:[],sourc:[0,5,2,4,6],string:[],congest:5,lru:2,kitten:2,ydood:6,brows:6,administr:[],level:[2,4],did:[0,5,2,6],dig:6,ipproto_udp:5,item:[2,6],team:2,cooki:[0,4],imap4:0,dir:[0,5],declarative_bas:2,upper:6,slower:5,sign:[0,4],cost:4,port:[0,5,4],procfil:[],appear:[4,6],current:[5,2],rst2xml:2,"3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4":4,gener:[0,5,2,4,6],explicitli:2,address:[],along:[],wait:[0,5],shift:0,queue:5,bob:[0,2],commonli:5,ourselv:[0,4],ipc:5,semant:5,session1:5,extra:5,modul:[0,5,2,4],prefer:0,backtick:[],marker:6,instal:[],smallish:5,market:2,types_map:0,prove:4,visit:[4,6],todai:[0,5,4,6],live:[5,2,4],criteria:[0,2],msg:5,plug:0,pyarmid:[],visual:0,appendix:0,oop:2,obj:[2,6],behalf:6,prepar:[],pretend:0,uniqu:[2,4,6],whatev:[5,6],purpos:[0,2,4,6],boilerpl:2,stream:[5,2],predict:0,agent:0,topic:6,app_factori:2,occur:5,entryeditform:4,other_sess:2,multipl:2,charset:[0,6],write:[0,5,2,4,6],anyon:[4,6],familiar:0,xhtml:0,product:[2,4],max:[0,4,6],clone:[5,2,6],mac:0,models_valu:2,data:[],classroom:2,gethostnam:5,practic:0,divid:[5,2],explicit:6,predic:4,mangl:0,inform:[],"switch":2,tailor:0,combin:[2,4,6],callabl:6,talk:[0,5,2,6],ydwoh:6,gitignor:2,still:[0,2,6],dynam:[0,6],config_uri:[2,4,6],group:[5,2],"4z6rvnhte21mpljw5veive0eg57gn":4,polici:4,sec10:0,platform:4,window:[0,2,4],curli:6,mail:0,main:[0,2,4,6],non:0,initi:[0,2,4],answer:[0,5,6],safari:0,half:5,now:[0,5,2,4,6],discuss:[5,2,6],term:2,name:[0,5,2,4,6],simpl:[0,5,2,4,6],interpr:2,separ:[],magazin:6,compil:4,domain:[],"0x105849b90":6,replac:[4,6],individu:[5,2,6],continu:[0,5,2,4],happen:[],accomplish:0,space:0,profil:5,correct:[0,5,6],"0x1005b8b40":5,tmpl:6,myproject:4,after:[2,6],pseudocod:0,state:[2,4],ch05s03:0,argv:[2,4],orm:[],argn:4,org:[0,5],"byte":5,card:5,care:[0,5],sign_in:4,utmcsr:0,default_permiss:4,refus:5,thing:[0,2,4,6],place:[5,2,4,6],imposs:2,frequent:2,lambda:6,origin:2,directli:[5,2,6],onc:[0,5,2,4,6],yourself:0,"long":[0,5,2,4],open:[5,4,6],size:[0,5,4],urin:0,given:[0,5,2,6],sheet:6,convent:0,imap4_ssl_port:0,eachoth:2,draft:0,conveni:2,friend:4,includ:[],copi:[0,4,6],huh:0,artifact:2,github:[0,5,2,4,6],mostli:[0,5],attempt:5,than:[0,5,2,4,6],png:0,serv:[],were:[5,2],posit:5,"5xx":0,browser:[],sai:[0,2,4],pro:5,argument:[0,5,2,4,6],larri:2,deliv:[],notimplementederror:0,saw:2,shtml:0,date:[0,2],ipproto_:5,note:[0,5,2,4,6],take:[0,5,2,4,6],green:0,bcrypt:4,noth:[2,4,6],channel:[0,2],begin:[0,5,2,4,6],sure:[5,2,4,6],pain:[2,4],trace:2,normal:2,buffer:[0,5],price:4,pair:[2,6],homepag:[],utmccn:0,later:0,"8mb":2,create_al:2,shortnam:4,gracefulli:0,show:[0,2,4,6],my_index:2,constitu:6,permiss:[],xml:[0,2,6],onli:[0,2,4,6],slow:5,"true":[0,5,2,4,6],transact:[5,2,4],enough:[0,2,4],dict:[5,2],analyt:4,startswith:5,nearli:2,variou:[2,6],mung:0,clang:2,ssl:0,cannot:[5,6],ssh:5,requir:[],entryfactori:4,authenticated_userid:4,where:[],wiki:[],n10:6,reserv:[0,5],concern:[],detect:4,review:[0,5,2,4,6],enumer:4,label:[4,6],getattr:5,between:[0,5,2],"import":[0,5,2,4,6],across:5,parent:2,elladan:5,tut:0,cycl:[2,6],come:[0,2,4,6],contract:[],tutori:6,wherin:2,mani:[0,5,2,4,6],among:[5,2,6],color:4,imad1:0,artu:0,coupl:[5,2],rebuild:[],mark:4,evangelista:[2,6],avian:5,"1xx":0,those:[0,2],"case":[0,2,6],plugin:[],cast:2,outcom:[],certainli:6,python_web:[2,6],ehlo:0,advantag:[2,4],stdout:[5,2],canon:5,worri:[5,4],blah:0,smalltalk:2,develop:[0,2,4,6],proto:5,cc0:[2,6],same:[0,5,2,4,6],html:[0,4,6],pai:4,document:[0,1,2,3,4,5,6,7,8],week:[0,5,2,4,6],finish:[],assist:2,someon:4,driven:[0,6],capabl:[],add_rount:4,improv:[0,2,4],appropri:[5,4,6],"__acl__":4,markup:4,without:[5,2,6],model:[],execut:[],when:[0,5,2,4,6],rest:[0,2,4],interrupt:0,kill:[0,2],aspect:[2,4,6],heffalump:5,hint:0,except:[0,5,2],littl:[4,6],blog:0,blob:4,vulner:0,real:[],tranmiss:5,around:[5,4,6],makin:6,traffic:0,mon:0,redqueen:0,socket_tool:5,intel:0,whitespac:0,integ:[5,2,4],server:[],benefit:[0,5],either:[0,6],cascad:6,get_payload:[],output:[0,5,4],manag:[5,2,4],fulfil:4,ipproto_ip:5,definit:6,"2xx":0,exit:2,posgresql:4,notabl:0,refer:[5,2,6],af_inet6:5,power:[5,2,4,6],broken:0,regexp:6,src:6,deflat:0,central:2,acl:4,microframework:2,"19t01":4,mytempl:[2,6],console_script:2,inbox:0,strip:6,igmp:5,hew:[],buffer_s:5,httpnotfound:[4,6],her:4,set_authorization_polici:4,aren:[2,4],start:[],interfac:[0,5,2,4],ipv4:5,lot:[0,2,6],ipv6:5,"0x10b075ed0":2,machin:[],hei:5,index_pag:[],tupl:5,client_address:5,categor:0,freddi:6,pull:[0,2],dirti:2,possibl:[5,6],"default":[5,2,4,6],expect:[0,2,6],gone:2,uid:0,creat:[],certain:[0,5,2],deep:4,strongli:4,intro:[],file:[],fill:[4,6],again:[0,5,2,4,6],googl:[5,2],compel:2,field:[2,4,6],valid:[0,4,6],pathnam:[0,5],you:[],juic:6,sequenc:0,symbol:[5,6],briefli:6,transceiv:5,reduc:2,"1b6":0,directori:[0,2,4,6],descript:[5,2],potenti:4,escap:4,represent:[5,2],all:[],forget:4,forbidden:4,scalar:2,abil:[0,2],follow:[0,5,2,4,6],disk:0,content:[],af_inet:5,articl:[2,4,6],tail:4,introduc:[2,6],liter:2,chameleon:6,far:[5,2],faq:0,util:[],verb:0,mechan:4,fall:2,veri:[0,5,2,4,6],ticket:4,egg_info:2,list:[],last_nam:6,adjust:[],stderr:0,small:[],past:[2,4],design:[],pass:[],further:[],by_nam:4,what:[],section:[0,2,6],abl:[0,2,4,6],delet:[0,4],version:[0,2,4],primary_kei:[2,4],intersect:6,method:[],full:2,hash:4,trunk:6,goodby:0,strong:[4,6],modifi:0,valu:[],search:[0,6],ahead:[5,4,6],sensit:[0,4],pick:[],action:[5,2,4,6],add_static_view:[2,6],via:[],filenam:0,href:[4,6],establish:5,select:[0,2],distinct:0,ctrl:0,regist:[],two:[0,5,2,4,6],zopetransactionextens:[],taken:4,satisfact:4,more:[],flaw:6,mozilla:[0,6],flag:[0,5,4],jsonp:6,known:[5,4],cach:[0,2],none:[0,5,2,4,6],endpoint:[0,5],hour:[0,5,6],dev:4,venusian:2,remain:4,learn:[],rst2html:2,def:[0,5,2,4,6],ndate:5,factori:[],prompt:[5,2],scan:[2,6],challeng:[0,4],registr:4,share:[],accept:[],explor:[5,2],hilight:[],phrase:[2,6],login_form:4,goal:2,first_nam:6,secur:[],rather:0,anoth:[5,2,4,6],comfort:6,message_from_str:[],"__init__":[2,4,6],csv:[2,6],loginform:4,css:[],unabl:4,"545kb":2,resourc:[],referenc:6,okai:[0,2],"short":[],footer:6,author:4,django:2,caus:2,egg:2,translationstr:2,checkbox:6,help:[0,5,2,6],authorization_polici:4,mainthread:[2,4],soon:[5,6],through:[0,2,4,6],pane:0,style:[],psycopg2:[2,4],pserv:[4,6],might:[0,5,2,6],pce:6,recip:4,good:[0,2,4],"return":[],pollut:2,cew:2,framework:[2,4,6],maildrop:0,gethostbynam:5,msg_part:5,eventu:2,authent:[0,4],easili:[2,6],http_server:0,compris:2,found:[0,2,6],unicod:[2,4,6],joel:4,hard:[2,4],idea:[0,5,2],realli:[0,5,4,6],connect:[],blog_creat:[],beyond:4,orient:2,ftp:5,publish:2,research:2,bubbl:6,etag:0,authnpolici:4,print:[0,5,2,4,6],uwpc:[2,6],"__utmz":0,postgr:4,proxi:0,uncommit:2,advanc:0,new_model:2,differ:[],reason:[0,6],base:[],put:[],"__utma":0,recv:[0,5],bash:4,by_id:[2,4,6],perhap:[0,6],assign:[0,5,2,4,6],set_authentication_polici:4,obviou:0,prevent:4,feel:6,number:[0,5,2,4,6],placehold:[0,6],done:[],construct:[],blank:0,miss:2,guess:0,script:[],interact:[],least:[2,6],getservbyport:5,statement:2,store:[2,4],luckili:[0,2,4,6],parc:2,option:[],relationship:5,behind:2,echo_socket:5,part:[],pars:[],logged_in:4,off:[0,2,4,6],fred:2,kind:[0,5,4,6],grew:0,remot:[5,2,4],remov:[5,2,4],str:2,relative_to:4,aclauthorizationpolici:4,payload:0,"_socketobject":5,packag:[],expir:4,properli:[0,6],imagin:[4,6],built:[0,2,4,6],lib:[0,2],self:4,also:[0,5,2,4,6],build:[],textareafield:6,brace:6,distribut:2,kai:2,previou:0,reach:5,chart:[2,6],most:[0,5,2,4,6],"0x100563c90":5,plan:4,addr:[0,5],mymodel:[2,4,6],cover:[0,2,4],wsgi:[2,4],hyper:0,v12:0,session:[],particularli:[4,6],fine:[0,6],find:[0,5,2,4,6],nosql:2,copyright:2,solut:[],"172kb":2,factor:2,darwin:2,unus:2,resent:5,"3xx":0,restart:[0,4,6],rfc:0,common:[],nowher:2,wrote:4,certif:6,set:[],overwhelm:2,"0x1103e3f50":2,af_ipx:5,see:[0,5,2,4,6],bare:6,arg:2,close:[0,5,6],pyrami:[],uw_pc:[],someth:[0,2,4,6],blog_act:[],topmost:5,won:0,subscript:6,pastedeploi:2,sole:[0,5],isol:2,mailbox:0,succeed:[],"31m":4,both:[0,5,2,4,6],hiddenfield:4,delimit:0,unstag:2,logout:[],load:[0,4,6],markdown:[],simpli:[0,2,4,6],point:[0,5,2,4],instanti:2,header:[],route_url:[4,6],param:4,linux:[0,4],mistak:2,xkcd:0,authz:[],empti:[0,5,2,4,6],pgbackup:4,retr:0,secret:4,authn:[],rstpep2html:2,"55c0287d4ef21f15b97eb1f107451b88b479bff":4,fire:[0,2,4,6],imag:[0,6],cryptacular:4,coordin:2,understand:[0,4],convers:[],formatd:0,look:[],solid:4,batch:2,"while":[0,5,2],"54f7e4d":4,homework:[],abov:[0,5,2,4],error:[],fun:6,everyon:4,loop:0,readi:[0,5,2,4,6],readm:2,itself:2,"3f80f":0,decor:6,grant:4,belong:[0,5,4],wherein:6,zope:2,conflict:2,b59b7c3:4,communc:5,moment:[5,2,4,6],temporari:6,"__or__":5,robust:4,chang:[],recent:[0,2],lower:[5,6],task:[],find_packag:2,entri:[],spent:5,doodi:6,pickl:2,person:[5,4,6],expens:[5,4],elev:0,connnect:5,cedar:4,macintosh:0,spend:[5,6],explan:0,make_wsgi_app:2,"__path__":2,mysql:2,session05:0,session04:5,session01:5,session02:[0,6],restructuredtext:2,global_config:[2,4,6],populate_obj:[4,6],appli:[4,6],input:[],bin:[2,4,6],varchar:2,format:[],big:[],response_ok:0,game:6,blogcreateform:[],bit:[],formal:[0,2],httpexcept:6,an_id:[],ipproto_icmp:5,docutil:2,manifest:2,collect:[2,6],princip:4,popular:4,often:[0,5,2],some:[0,5,2,4,6],back:[0,5,2,4,6],understood:5,uidnext:0,sampl:[4,6],ljenv:[2,4,6],per:[0,5,4],larg:[],cgi:[],intial:0,run:[],authtktauthenticationpolici:4,viabl:2,crlf:0,plai:[2,4,6],block:[],miracl:0,ensur:[0,5,2,4],html5shiv:6,span:4,question:[0,2,4,6],stylesheet:6,fast:2,heroku:[],prettier:6,doctyp:[0,6],repeatedli:[5,2],pwd:2,link:[],atol:4,line:[0,2,4,6],info:[5,2,4],utf:[0,6],consist:0,sum:6,similar:[0,2],clear:[0,5],sesson:0,constant:5,chao:4,doesn:[0,5,2,4,6],repres:[0,2,6],gecko:0,response_not_found:0,titl:[0,2,6],nam:5,nav:6,nice:[0,4,6],llvm:2,mongodb:2,meaning:2,csrftoken:0,svn:6,algorithm:4,mimetyp:0,rst2latex:2,allowedvers:0,discrimin:[],came:4,hello:[0,6],getaddrinfo:5,code:[],queri:[],sqlserver:2,edu:5,bathtim:6,elsewher:[5,4],send:[],aris:2,sent:[0,5,2,4,6],charlesproxi:0,rollback:2,spool:0,stackoverflow:0,relev:2,tri:6,magic:6,button:6,"try":[],race:[4,6],entry_point:2,hasnochildren:0,pleas:2,smaller:5,natur:6,download:[2,6],odd:6,click:6,append:[0,2,4],compat:2,index:[0,2,4,6],wahoo:0,compar:[],resembl:6,can:[],len:[0,5,2],bodi:[0,2,4,6],loadapp:4,intercept:4,let:[0,5,2,4,6],becom:2,sinc:[5,2,6],great:[0,2,6],pretti:[0,2],technolog:[5,4],typic:2,maker:6,firefox:0,ago:[5,4],parse_request:0,win:0,app:[],api:[],"__name__":4,from:[0,5,2,4,6],upgrad:4,next:[0,5,2,4,6],websit:[2,4,6],few:[],usr:2,sudo:2,ipoac:5,babi:6,train:[2,6],somesecret:4,account:6,retriev:6,scalabl:2,alic:4,tag:[0,4,6],thin:5,fetch:[0,2,4,6],aliv:[0,5],control:[],sqlite:[2,4],tar:2,process:[5,2,4,6],lock:4,preformat:4,high:2,af_:5,tab:0,onlin:[5,2,4],cache_max_ag:[2,6],gcc:2,cewing_socket:5,client_socket:5,pyramid_jinja2:6,instead:[0,2,4,6],stand:[2,6],delai:2,initialzedb:4,alwai:[0,5,2,4],"6mb":2,attent:4,tier:4,physic:[5,6],drop:[5,6],add_al:2,bind:[],correspond:5,element:[0,2,6],webroot:0,runapp:[],allow:[0,5,2,4,6],sendal:[0,5],elif:6,move:[0,5,2],bunch:5,uiqj579igrbrebhmjqnth8pffaz2qrj:0,verify_password:4,"0x10046cec0":5,infrastructur:4,bye:0,recept:5,handl:[],demoenv:2,spell:6,dai:[0,6],auth:4,"8a2e":5,somewher:[4,6],anyth:[2,4],edit:[],entrycreateform:[4,6],nameerror:0,slide:[8,1,3,7],mode:2,autoincr:4,beneath:4,pygment:4,bump:0,sessionmak:[2,6],meta:6,"static":[],our:[],special:[2,4,6],out:[],variabl:4,categori:2,suitabl:4,rel:6,dive:4,red:0,clarifi:2,insid:[0,5,2],frank:6,manipul:2,zodb:2,auth_secret:4,first_lin:0,complianc:4,cri:[0,6],"0x1103d9f10":2,could:[0,2,4],lexer:4,ask:[0,5,2],keep:[0,5,2],length:[0,2,4,6],outsid:[2,4],waitress:4,softwar:[0,5,2,4,6],pygments_styl:4,echo:[],exact:6,mai:[0,5,2,4],match_param:[4,6],owner:6,licens:2,mkdir:2,system:[],wrapper:5,attach:4,imap4_ssl:0,termin:[0,5,2,4],"final":[0,5,2,6],udp:5,shell:[],fnhg8:[],shelf:2,fnhg2:0,fnhg3:0,"8d3":5,dyno:4,textfield:[4,6],exactli:[0,5,6],route_nam:[4,6],embodi:[2,4],roberto:6,charact:[2,4,6],sens:6,f12:0,favorit:0,py2:2,py3:2,respositori:0,requri:4,have:[],tabl:[],need:[0,5,2,4,6],turn:[0,2,4,6],afraid:[0,2],min:[4,6],rout:[],chief:4,which:[0,5,2,4,6],authentication_polici:4,singl:[0,5,2,4,6],unless:5,ds_store:2,whl:2,who:[4,6],oracl:2,discov:0,deploi:[],pyc:2,segment:6,payment:4,url:[],request:[],face:6,pipe:6,build_db:4,deni:4,determin:[],fact:[5,4,6],jkorpela:0,text:[0,2,4,6],bring:[0,6],rough:2,identityset:2,redirect:0,locat:[0,5,2,4,6],should:[0,5,2,4,6],jan:[0,5],"3e1cb03b":0,"__tablename__":[2,4],local:[5,2,4,6],notat:6,convert:[2,4,6],pypi:2,db8:5,log_buff:0,smash:6,blog_upd:[],enabl:[0,4],rage:0,"0x10e7d6b90":6,stuff:6,she:4,contain:[0,1,2,3,4,5,6,7,8],paster:[2,6],view:[],dbsession:[2,4,6],knowledg:2,packet:5,closer:2,statu:[2,4],wire:[5,4,6],correctli:[0,6],tend:2,written:6,flickr:4,email:[0,5,2],mysite1:0,javascript:6,kei:[2,4,6],job:[0,2,4,6],entir:2,permanentflag:0,addit:[],revers:[5,6],dobb:0,admin:4,configpars:2,etc:[0,5,2,6],instanc:[2,4],equat:5,html5:6,comment:[0,5,6],typifi:2,lang:6,this_id:6,arriv:6,chmod:4,quit:[0,5,2,4,6],addition:2,insuffici:0,json:6,immedi:5,sock_stream:5,bulk:2,untrack:2,togeth:[],ingredi:2,multi:0,plain:[0,2,4,6],defin:[],dbapi2:2,endblock:[4,6],layer:[0,5,2],site:[2,4,6],incom:[],whirl:[5,4],pyramid_chameleon:[2,6],welcom:2,parti:0,failur:[0,5],http:[],hostnam:5,absorb:2,"85a3":5,expand:[],fenced_cod:4,center:0,well:[0,5,2,4],exampl:[],command:[0,2,4,6],filesystem:[0,6],undefin:6,usual:[5,2],distanc:5,less:[0,5],kramer:4,emtpi:2,web:[],jinja:[],wed:0,nullabl:[4,6],smith:0,add:[],book:6,logger:2,match:[],gmt:0,agnost:[5,6],crud:0,piec:6,five:0,know:[5,2,4,6],unseen:0,password:[],python2:2,insert:4,like:[],success:[0,5],echo_serv:5,lose:2,page:[],backlog:5,didn:2,specifi:6,captur:[2,6],suppli:4,utmcmd:0,uidvalid:0,proper:[0,5,6],home:[0,2,4,6],librari:[0,5,2,4,6],tmp:5,gethostbyname_ex:5,esr:0,lead:6,octet:0,"16x16":[],leav:[2,6],blog_view:[],investig:[0,6],journal:[],usag:2,host:[0,5,2,4],although:[0,2,6],about:[],actual:[0,5,2,4,6],socket:[],world:[2,6],column:[],herokuapp:4,datagram:5,carrier:5,constructor:5,fals:[5,4],own:[],washington:5,easy_instal:2,automat:[5,2,6],pcreat:[2,6],leverag:4,sock_:5,val:[2,6],transfer:[0,4],intention:0,appl:2,arg1:4,"var":[0,4],"function":[0,5,2,4,6],mailer:[],xerox:2,gain:[2,4],inlin:[5,2],count:2,made:[0,5,2,4,6],view_config:[4,6],whether:0,wish:[2,4],googlecod:6,displai:[4,6],below:[5,4],limit:5,problem:[5,2,4],"int":[2,4],blabber:2,pid:[4,6],ephemer:[5,2],implement:[],ini:[2,4,6],pip:2,duru:2,probabl:[4,6],detail:[],virtual:[0,2],other:[],lookup:[5,6],futur:5,rememb:[0,5,2,4,6],stat:0,"class":[0,5,2,4,6],dewei:0,echo_cli:5,log:[0,2,4,6],fiddler2:0,"_queri":4,syllabu:2,reliabl:5,rule:[0,5,2],bcryptpasswordmanag:4,models_nam:2,portion:6},objtypes:{},objnames:{},filenames:["presentations/session05","index","presentations/session01","outline","presentations/session03","presentations/session04","presentations/session02","readings","presentations/index"],titles:["Session 05","Internet Programming with Python","Session 01","Course Outline","Session 03","Session 04","Session 02","Supplementary Course Readings","Course Presentations"],objects:{},titleterms:{all:[5,2],code:[0,2],protocol:[0,5],chain:2,queri:2,resp:[],stack:5,tcp:5,syntax:4,ljshell:6,permiss:4,polish:4,skill:5,languag:0,web:2,style:6,password:4,layout:6,execut:4,flask:[],configur:[2,4,6],activ:2,send:5,environment:[],add:[2,4,6],program:1,present:[8,6],persist:2,input:6,save:2,alter:2,match:6,real:0,deactiv:2,file:2,messag:5,"return":[0,2],string:6,get:[5,2,6],python:[0,1,2,5],express:6,stop:0,"break":[0,5,2,4],jinja2:[4,6],initializedb:4,bit:2,characterist:0,requir:4,introduct:2,environ:2,like:0,header:0,edit:[4,6],troubleshoot:4,list:[4,6],resolv:0,iter:2,server:[0,5],"try":[4,6],other:0,bad:0,session:[0,5,2,4,6],common:0,quick:[0,5],updat:[0,4],where:4,side:[5,2],view:[0,4,6],respond:5,machin:5,domain:5,set:4,pop3:0,resourc:0,request:[0,6],revel:4,second:[],design:[],connect:[5,6],respons:[0,6],our:[0,2,4,6],happen:2,transport:5,concern:2,virtualenv:2,separ:2,what:[0,2,4,6],scale:4,hide:4,compar:4,databas:[2,4],scaffold:[],asid:0,content:0,adjust:4,irl:0,internet:[1,5],"new":2,method:[0,5,2],can:0,altern:2,core:0,run:[0,5,4],journal:4,error:0,tdd:0,debug:0,step:0,base:2,logout:4,dictionari:6,address:5,put:5,path:6,along:0,valu:6,addit:4,unsaf:0,about:[0,2,4],last:2,req:[],column:2,commun:5,page:6,filter:[4,6],mvc:[2,6],perman:2,context:[4,6],pick:6,congratul:5,commit:2,implement:[0,4],mean:[],rebuild:4,block:6,first:[0,2,4,6],wiki:[],own:5,render:[4,6],markdown:4,solut:0,app:[2,4],deploi:4,repli:5,terminolog:2,system:[2,6],walkthrough:[],unix:5,api:6,done:4,construct:5,famili:5,batteri:[],chang:[2,4,6],your:[0,5,2,4,6],speak:0,authz:4,differ:0,git:[],modif:0,cryptactular:4,script:[2,6],interact:[0,2,6],regist:4,three:2,submit:[0,5,2],custom:5,compon:2,start:2,heroku:4,much:[],mime:0,asset:6,accept:5,basic:[0,2,6],master:[],homework:[0,5,2,6],instal:[2,4,6],more:2,fork:[],via:4,life:[],shell:4,consol:2,idempot:0,form:[4,6],smtp:0,bind:5,further:[0,5],depend:4,effect:2,part:6,link:[5,4],togeth:5,postgresql:4,virtuelenv:2,imap:0,matchdict:6,authn:4,serv:0,"static":6,word:[2,4],look:0,provid:[4,6],type:[0,5],setup:2,outlin:3,structur:[2,6],project:2,defin:6,outcom:6,glori:4,learn:0,highlight:4,anonym:4,listen:5,browser:0,control:6,factori:4,pyramid:[2,4,6],comput:[0,5],engag:4,creat:[5,2,4],applic:[5,2,4],wrap:4,demo:[0,6],pass:0,share:6,few:0,templat:6,uri:0,packag:2,sqla:2,stub:6,have:[0,2],tabl:2,incom:5,work:[2,4],check:4,option:0,result:4,cours:[8,3,7],irrelev:2,advic:2,secur:4,receiv:5,make:[2,4,6],format:[0,4],model:[2,4,6],detail:6,access:6,client:5,how:4,cleanup:2,read:7,build:4,branch:[],order_bi:2,test:[0,5,4,6],verifi:4,you:2,out:[4,6],config:4,prepar:[4,6],css:4,complet:6,map:0,finish:5,http:[0,6],determin:0,safe:0,deploy:[4,6],why:2,object:[2,6],sqlalchemi:2,procfil:4,socket:5,pattern:[],user:[4,6],echo:0,sql:2,encrypt:4,data:6,login:4,index_pag:4,util:5,handl:0,task:5,third:[],choos:2,url:6,entri:4,initialize_learning_journal_db:2,learning_journ:4,flow:[5,6],wtform:6,doe:[0,6],inform:5,runapp:4,exampl:[0,4,6],ignor:2,clean:[5,2],time:[0,5,2,4],pars:0,orm:2,rout:6,includ:[]}})
    \ No newline at end of file
    
    From 897bbea2a447033c809b30d046aa9c7279891f36 Mon Sep 17 00:00:00 2001
    From: cewing 
    Date: Wed, 21 Jan 2015 11:28:39 -0800
    Subject: [PATCH 078/114] fixing typos and unclear instructions in session 3
     docs
    
    ---
     html/_sources/presentations/session03.txt   | 14 +++++++++-----
     html/presentations/session03.html           | 11 ++++++-----
     html/searchindex.js                         |  2 +-
     slides/_sources/presentations/session03.txt | 14 +++++++++-----
     slides/presentations/session03.html         | 10 +++++-----
     slides/searchindex.js                       |  2 +-
     6 files changed, 31 insertions(+), 22 deletions(-)
    
    diff --git a/html/_sources/presentations/session03.txt b/html/_sources/presentations/session03.txt
    index bf761e7d..7ec40569 100644
    --- a/html/_sources/presentations/session03.txt
    +++ b/html/_sources/presentations/session03.txt
    @@ -89,7 +89,7 @@ Questions About the Homework?
     
             @classmethod
             def by_name(cls, name):
    -            return DBSession.query(User).filter(User.name == name).first()
    +            return DBSession.query(cls).filter(cls.name == name).first()
     
     `View this model online `_
     
    @@ -511,7 +511,7 @@ The job of comparing passwords should belong to the ``User`` object.
         .. code-block:: python
     
             # add this import at the top
    -        # from cryptacular.pbkdf2 import PBKDF2PassordManager as Manager
    +        # from cryptacular.pbkdf2 import PBKDF2PasswordManager as Manager
             from cryptacular.bcrypt import BCRYPTPasswordManager as Manager
     
             # add this method to the User class:
    @@ -535,7 +535,7 @@ We'll also need to have a user for our system.
         .. code-block:: python
     
             # add the import
    -        # from cryptacular.pbkdf2 import PBKDF2PassordManager as Manager
    +        # from cryptacular.pbkdf2 import PBKDF2PasswordManager as Manager
             from cryptacular.bcrypt import BCRYPTPasswordManager as Manager
             from ..models import User
             # and update the main function like so:
    @@ -622,6 +622,10 @@ It would be nice to use the form library again to make a login form.
     
     .. nextslide:: Login View in ``learning_journal/views.py``
     
    +.. ifnotslides::
    +
    +    Next, we'll create a login view in ``learning_journal/views.py``
    +
     .. code-block:: python
     
         # new imports:
    @@ -689,7 +693,7 @@ logged in, if any.
     
     .. nextslide:: Update ``list.jinja2``
     
    -Now we have to update our template to display the form, *if it is there*
    +Now we have to update the template for the ``index_page`` to display the form, *if it is there*
     
     .. rst-class:: build
     .. container::
    @@ -709,7 +713,7 @@ Now we have to update our template to display the form, *if it is there*
               {% endfor %}
               

    - {% else %} + {% endif %} {% if entries %} ... diff --git a/html/presentations/session03.html b/html/presentations/session03.html index 929e9a3a..77b8bf95 100644 --- a/html/presentations/session03.html +++ b/html/presentations/session03.html @@ -124,7 +124,7 @@

    But First@classmethod def by_name(cls, name): - return DBSession.query(User).filter(User.name == name).first() + return DBSession.query(cls).filter(cls.name == name).first()

    View this model online

    @@ -395,7 +395,7 @@

    Implement AuthNlearning_journal/models.py and add the following to the User class:

    # add this import at the top
    -# from cryptacular.pbkdf2 import PBKDF2PassordManager as Manager
    +# from cryptacular.pbkdf2 import PBKDF2PasswordManager as Manager
     from cryptacular.bcrypt import BCRYPTPasswordManager as Manager
     
     # add this method to the User class:
    @@ -412,7 +412,7 @@ 

    Implement AuthNlearning_journal/scripts/initialzedb.py:

    # add the import
    -# from cryptacular.pbkdf2 import PBKDF2PassordManager as Manager
    +# from cryptacular.pbkdf2 import PBKDF2PasswordManager as Manager
     from cryptacular.bcrypt import BCRYPTPasswordManager as Manager
     from ..models import User
     # and update the main function like so:
    @@ -477,6 +477,7 @@ 

    Providing Login UIlearning_journal/views.py

    # new imports:
     from pyramid.security import forget, remember
     from .forms import LoginForm
    @@ -526,7 +527,7 @@ 

    Providing Login UIindex_page to display the form, if it is there

    diff --git a/html/searchindex.js b/html/searchindex.js index e21943b1..b077c06e 100644 --- a/html/searchindex.js +++ b/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:42,terms:{icmp:5,interchang:2,four:0,database_url:4,prefix:[0,5],ronach:7,af_rout:5,forget:4,categori:2,aug:2,sorri:2,ipproto_raw:5,crisew:5,authorid:[],concret:2,under:[],dest_dir:2,spec:7,digit:[0,6],dele:0,rise:[],adodbapi:[],govern:[0,1,3],cmd:0,herbert:6,imaplib:[0,3],verif:4,"544kb":[],direct:[0,2],batch:2,enjoi:[],second:[],street:[],nthi:6,even:[0,2,3,7],list_of_tcp_and_udp_port_numb:5,"new":[],net:0,ever:7,told:4,ipproto_tcp:5,abov:[0,5,2,3,4],createdb:[],show_profil:[],here:[0,1,5,2,4,6,7],china:[],"4xx":0,path:[0,2,3,4,6],interpret:[0,5,2,6],credit:2,webfact:0,permit:[0,3],studi:7,portabl:1,golden:6,heroku_postgresql_maroon_url:4,wikimedia:[2,6],org:[0,5],total:4,unit:[],highli:1,yore:6,describ:5,would:[0,2,4,6],hellstrom:[],tail:4,dnt:0,call:[0,5,2,4,6,7],admin_password:4,typo:2,recommend:4,type:[],tell:[0,5,2,4],"5fb97f3":[],panach:6,notic:[0,5,2,4,6],phone:6,moin:[],unpack:2,addon:4,af_unix:5,join:0,flaskenv:[],restor:[2,4],worth:[2,6],conceptu:6,introduc:[1,2,3,6],root:4,defer:4,repoz:2,give:[1,2,3,4,5],smtp:[],indic:0,want:[0,1,2,4,6,7],everi:[0,2],end:[0,1,5,3,4,6,7],learning_journ:[2,4,6],frobozz:0,book_insert:[],concis:3,conn:[0,5],env:2,answer:[0,5,6],verifi:[],perspect:7,anon_1:2,after:[2,6],superus:2,diagram:2,befor:[0,5,2,3,4,6],wrong:2,parallel:7,demonstr:[0,2,3],attempt:5,classmethod:[2,4,6],authzpolici:4,minim:[0,7],greet:0,think:[5,2,3,4,6,7],alias:5,scoped_sess:2,dispar:3,environ:[1,2,3,4],waitress:4,incorpor:4,enter:[0,6],lambda:6,engine_from_config:[2,4,6],order:[1,2,3,4,6],hob7v7guwir4n1v:4,origin:[2,3,7],feedback:[],over:[5,7,2,3,6],fall:2,becaus:[0,2,4,6],jpeg:0,privileg:2,keyboard:0,flexibl:2,vari:[0,5],digest:7,fit:3,fix:[],simple_cli:0,toolbelt:[4,6],comprehend:7,better:[5,2,4,7],offic:0,complex:[2,3],comprehens:7,howdi:6,easier:[7,2,6],them:[0,1,2,3,4,5,6],thei:[0,1,2,3,4,5,6,7],"break":[],sqlite3:[],jinja2:[],initializedb:[2,4],choic:[1,7,2,3,5],getservbynam:5,rocki:4,each:[0,1,2,3,4,5,8],went:[0,6],webmast:0,bone:6,mean:[],laboratori:1,doug:3,logo:6,ooop:[],extract:[3,7],network:[1,7,6,3,5],goe:[2,6],god:2,newli:[],content:[],rewrit:[],got:[0,2,4,6],forth:0,navig:1,rail:0,nightmar:2,situat:[0,2],free:[4,6],standard:[0,1,2,3,4,5,7],hand:[4,6],s3cr3t:4,traceback:[],static_url:6,isn:[0,6],confus:[5,6],"__or__":5,pristin:[],rang:[0,1,6],independ:[0,2],eachoth:2,hook:2,instruct:[5,2,7],alreadi:[0,5,2,4,6],messag:[],fantast:[1,2,7],primari:[2,6],top:[2,4,6],"0x1103e38d0":2,sometim:[0,2],imap4rev1:0,too:[0,5,7,2,6],tom:2,my_view:6,consol:2,namespac:[],tool:[0,1,2,3,4,5,7],setuptool:2,took:2,incur:4,technic:[],keyword:[4,6],provid:[],tree:[2,4],project:[],matter:4,arriv:6,minut:[0,5,6],rad:5,contenti:[],close:[0,5,6],ran:[0,2],modern:[2,3],mind:7,mine:0,raw:0,af_sna:5,pylon:2,increment:[],"__main__":4,seen:[0,5,2,4,6],seem:4,seek:[2,4],strength:3,latter:2,thorough:[7,6],"0x1103e3fd0":2,shelf:2,transmit:2,hypertext_transfer_protocol:0,simplifi:0,endfor:[4,6],plenti:3,though:[0,4,7],usernam:[0,4,6],object:[],guess_typ:0,regular:2,artifact:2,bsd:5,models_id:2,typ:5,maria:5,tradit:6,don:[0,1,5,2,4,6,7],doc:[0,2,4],metal:[],doe:[],notnul:[],declar:[2,6],unchang:7,passwordfield:4,sign_in_out:4,dot:6,opposit:6,random:4,syntax:[],rst:[],radio:6,identifi:[0,6],edit_entri:[],involv:4,absolut:6,exactli:[0,5,6],layout:[7,3,4,6],menu:0,explain:[2,7],configur:[],apach:0,kessler:7,disert:7,busi:[],matchdict:[4,6],rich:[1,3],folder:[5,2,4,6],resolve_uri:0,patter:6,stop:[],report:[],bat:7,bar:[0,5,6],ietf:0,baz:0,"public":[4,6],buffsiz:5,reload:[0,4],metadata:2,steal:[2,4],respond:[],get_const:5,habit:[],disucss:3,result:[],respons:[],fail:[0,5,4],themselv:[],best:[2,4],subject:[],awar:4,pythoncert:[2,6],txpostgr:[],wikipedia:[0,5,2,7],urllib:3,mysql_length:2,figur:[5,2],score:2,outstand:6,pbkdf2passordmanag:4,awai:2,enlighten:7,approach:[1,2],side:[],never:[5,2],extend:[],weak:3,extens:[0,1,4],html5:[3,6],protect:0,accident:5,howev:[2,6],against:[0,4,6],logic:[2,4,6],login:[],seri:2,com:[0,5,2,4,6],compromis:1,get_appset:[2,4,6],assur:5,trunk:6,trust:2,assum:[5,2],speak:[],chrome:0,add_rout:[2,4,6],three:[],been:[2,4,6],redeploi:4,interest:7,basic:[],quickli:[0,2],life:[],setup_log:[2,6],telnet:5,ani:[0,1,5,2,4,6,7],"catch":0,ugli:0,ident:4,servic:[0,5,3,4,7],properti:[5,4],commerci:2,neat:0,seven:0,pyramid:[],af_appletalk:5,tabl:[2,4,6],toolkit:0,fnhg:0,march:1,tediou:2,sever:[4,7],mievil:[],perform:[2,6],suggest:[0,4],make:[],couchdb:2,drawback:3,split:0,complet:[0,1,2,3,4,5,6,7],rfc822:0,nic:5,hang:0,kit:7,rais:[0,5],kib:[],"548kb":2,thu:5,depli:[],hypothet:2,inherit:[2,6],client:[],greatest:[],thi:[],endif:[4,6],gzip:0,everyth:[0,1,2,4,6,7],moreov:0,left:[2,4,7],protocol:[],just:[0,5,2,4,6,7],human:[0,7,6],yet:[0,5,2,4,6],languag:[],previous:3,alchemi:2,easi:[7,2,4,6],shout:6,"8bitmim":0,httpfound:[4,6],els:[0,2,4,6],save:[0,2,4,6],hat:0,gave:2,opt:0,applic:[],race:[4,6],mayb:[],an_id:[],parse_var:2,render_markdown:4,elabor:4,enrypt:[],apart:[7,6],imap4_port:0,response_method_not_allow:0,specif:[5,2,3,4,6,7],arbitrari:[5,2,4],bcrypt:4,manual:2,bathtim:6,hung:0,install_requir:2,underli:[1,3,5],www:[0,5],right:[0,1,7,4,6],"0db8":5,nfrom:2,intern:0,importantli:[],bore:[],successfulli:2,transmiss:[0,5,7],txt:[0,5,2,4],cooper:[],bottom:5,subclass:[],buffer:[0,5],ssh2:7,exectut:2,condit:0,foo:[0,5,4,6],localhost:[0,4,6],mailgat:0,core:7,particular:[7,2,4,6],confer:3,repositori:[5,2,4,6],post:[0,4,6],"super":0,chapter:[2,7],postgresql:[2,4],surround:6,dinner:0,commit:[2,4],produc:[5,3],encod:[0,4],bound:[5,2],curios:3,down:[4,6],creativ:[2,6],wrap:[],storag:[0,2],guardia:[],deal:[5,7],utmcsr:0,support:[0,1,2,3,4,6,7],payment:4,avail:[5,2,4,6],reli:4,request_method:4,editor:[],get_address_info:5,rcpt:0,internet_protocol_suit:5,head:[0,5,4,6],medium:5,form:[],offer:[7,2,3,6],forc:7,sqlalchemi:[],hear:5,lignt:3,codehilit:4,reset:[],attr:6,strip_filt:6,maximum:5,until:[5,2],fundament:[1,3],intitalizedb:2,featur:[2,3,4,7],af_decnet:5,"abstract":2,decrypt:0,proven:2,exist:[0,2,4,6],glanc:7,check:[],assembl:6,encrypt:[4,7],mashup:[],when:[0,5,2,4,6,7],role:6,jone:0,test:[],tie:[],webob:2,roll:4,relat:[2,7],intend:[1,2,5],af_unspec:5,urllib2:3,djangocon:7,intent:1,consid:[0,7,2,6],src:6,receiv:[],longer:5,bullet:4,pbkdf2:4,initialize_learning_journal_db:[2,4],pathnam:[0,5],time:[],push:[0,2,4],breadth:7,concept:[1,2,3,4,5,7],chain:[2,6],skip:2,consum:[5,3,7],focus:7,invent:2,supplement:7,skim:7,rdbm:[],row:[2,4],decid:[],depend:[2,3,4,6],graph:6,readabl:[0,6],unpython:2,a0004:0,a0005:0,a0006:0,decis:[],a0002:0,a0003:0,must:[0,1,5,2,4,6],isinst:[],sourc:[0,1,2,3,4,5,6,7,8],string:[0,5,2,3,4,6,7],congest:5,lru:2,kitten:2,word:[],ydood:6,brows:[3,6],administr:[],level:[1,2,4],did:[0,5,2,6],reconcil:[],ipproto_udp:5,iter:[5,2],item:[2,6],unsupport:[],team:2,cooki:[0,4],div:[],dir:[0,5],declarative_bas:2,upper:6,slower:5,permiss:4,sign:[0,4],restkit:7,cost:4,port:[0,5,4],procfil:4,appear:[4,6],repli:[],scaffold:2,beautifulsoup:[3,7],"75a8462":[],current:[5,2],rst2xml:2,sinc:[5,2,6],"3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4":4,response_ok:0,deriv:3,gener:[],explicitli:2,address:[],along:[0,1,3,7],wait:[0,5],shift:0,queue:5,pysqlit:[],bob:[0,2],commonli:5,ourselv:[0,4],ipc:5,semant:5,session1:5,extra:5,modul:[0,1,2,3,4,5,7],prefer:0,backtick:[],fake:[],marker:6,fetch_head:[],market:2,types_map:0,prove:4,univers:7,visit:[4,6],todai:[],live:[5,2,4],criteria:[0,2],msg:5,checkout:[],plug:0,pyarmid:[],enhanc:3,visual:0,appendix:0,accept:[],obj:[2,6],behalf:6,prepar:[],pretend:0,focu:3,whatev:[5,6],purpos:[0,2,3,4,6],boilerpl:2,stream:[5,2],predict:0,agent:0,topic:[7,6],critic:7,app_factori:2,loginform:4,occur:5,flask_intro:[],alwai:[0,5,2,4],multipl:2,winter:1,tilt:[],charset:[0,6],write:[0,5,2,4,6,7],anyon:[4,6],xhtml:0,map:[],product:[2,4,7],max:[0,4,6],dive:[1,3,4],tomayko:7,mac:0,date:[0,2],classroom:2,gethostnam:5,bookdb:[],explicit:6,blabber:2,tale:[],ephemer:[5,2],"switch":2,cannot:[5,6],combin:[1,2,3,4,6],callabl:6,talk:[0,5,2,3,6,7],shield:3,repair:[],ydwoh:6,brain:[],populate_db:[],gitignor:2,still:[0,2,6],config_uri:[2,4,6],group:[5,2],"4z6rvnhte21mpljw5veive0eg57gn":4,how:[0,1,2,3,4,5,6,7],polici:[3,4],sec10:0,platform:4,window:[0,2,4],curli:6,mail:0,main:[0,2,4,6],non:0,killer:3,initi:[0,2,4,7],interview:0,safari:0,half:5,discuss:[5,7,2,3,6],term:[1,2],name:[0,5,2,4,6,7],config:[2,4,6],interpr:2,separ:[],magazin:[7,6],januari:1,compil:[4,7],domain:[],"0x105849b90":6,replac:[4,6],individu:[5,2,6],continu:[0,5,2,3,4],happen:[0,5,2,6],accomplish:[0,7],space:0,profil:5,correct:[0,5,6],she:4,tmpl:6,earlier:[0,2,4],pseudocod:0,bookid:[],ch05s03:0,argv:[2,4],orm:[],inevet:[],argn:4,brower:3,"byte":5,card:5,care:[0,5,7],sign_in:4,wai:[0,1,2,3,4,6,7],question:[0,2,4,6],where:[5,2,4,6],refus:5,turn:[0,2,3,4,6,7],place:[5,2,3,4,6],principl:1,imposs:2,frequent:2,first:[],oper:[1,6,4,5],info:[5,2,4],directli:[5,2,6],onc:[0,5,2,3,4,6],yourself:[0,1],submit:[],open:[5,4,6],size:[0,5,4],urin:0,given:[0,1,5,2,3,6,7],sheet:6,convent:0,bookmark:7,imap4_ssl_port:0,demostr:[],draft:0,conveni:2,friend:4,prettier:6,repostitori:[],copi:[0,4,6],huh:0,specifi:6,"short":7,mostli:[0,5,7],domin:2,than:[0,5,2,4,6,7],png:0,serv:[],susan:[],were:[5,2],posit:5,conn2:[],conn1:[],browser:[],sai:[0,2,4],pro:5,argument:[0,5,2,4,6],properli:[0,3,6],deliv:[],notimplementederror:0,saw:2,shtml:0,engin:[2,4,6],techniqu:[],ipproto_:5,ideal:[],take:[0,5,2,3,4,6,7],green:0,reload_templ:2,noth:[2,4,6],channel:[0,2],begin:[0,5,2,3,4,6],sure:[5,2,4,6],pain:[2,4],trace:2,normal:2,track:[],price:4,compress:[],cgitb:[],pair:[2,3,6],homepag:7,sesstion:[],utmccn:0,later:0,drive:7,"8mb":2,create_al:2,shortnam:4,gracefulli:0,show:[0,2,3,4,6],german:[],my_index:2,constitu:6,dflt_valu:[],ground:1,xml:[0,2,6],onli:[0,2,4,6],slow:5,"true":[0,5,2,4,6],activ:[],getattr:5,dict:[5,2],analyt:4,startswith:5,"8873ba1":[],variou:[2,3,6],get:[],mung:0,clang:2,ssl:0,tailor:0,ssh:5,url_for:[],requir:[],entryfactori:4,authenticated_userid:4,default_permiss:4,wiki:[],n10:6,test_request_context:[],detect:4,review:[0,5,2,4,6],enumer:4,label:[4,6],behind:[2,7],between:[0,1,2,3,5],"import":[0,5,2,4,6],across:[1,3,5],parent:2,elladan:5,tut:0,cycl:[2,6],come:[0,2,4,6],img:0,contract:[],tutori:[],wherin:2,mani:[0,5,2,4,6,7],among:[5,2,3,6],color:4,unittest:3,dispatch:7,imad1:0,typic:2,artu:0,coupl:[5,2],rebuild:0,zpt:[],mark:4,evangelista:[2,6],workshop:1,avian:5,emphas:1,docxmlrpcserv:3,lectur:[1,3],"1xx":0,those:[0,2],"case":[0,7,2,6],plugin:[],cast:2,outcom:[0,2],certainli:6,python_web:[2,6],ehlo:0,advantag:[2,4],ctrl:0,canon:5,worri:[5,4],destin:[],blah:0,smalltalk:2,proto:5,cc0:[2,6],same:[0,5,2,3,4,6,7],pai:4,document:[0,1,2,3,4,5,6,7,8],week:[0,1,2,3,4,5,6,7],finish:[],assist:2,someon:4,driven:[0,6],capabl:[],add_rount:4,improv:[0,2,4],extern:7,appropri:[5,3,4,6],redqueen:0,"__acl__":4,macro:[],markup:4,without:[5,2,6],promis:5,model:[],execut:[0,1,2,4,5,7],excel:[7,6],rest:[0,2,3,4,7],interrupt:0,kill:[0,2],aspect:[2,3,4,6],monei:[],heffalump:5,versu:1,hint:0,except:[0,5,2],littl:[4,6],apache2:7,identif:[],blob:4,versa:[],vulner:0,real:[],requri:4,tranmiss:5,around:[5,7,4,6],read:[],makin:6,dark:[],traffic:0,mon:0,world:[7,2,3,6],socket_tool:5,intel:0,whitespac:0,integ:[5,2,4],server:[],benefit:[0,5,3],either:[0,6],cascad:6,get_payload:[],output:[0,5,4],manag:[5,2,4],fulfil:4,alan:[2,6],b60ea2bb7052a5bd300772d7d9d40b19b27f7a1b:[],ipproto_ip:5,definit:6,"2xx":0,exit:2,posgresql:4,notabl:0,refer:[],af_inet6:5,power:[5,2,3,4,6,7],broken:0,fulli:[],regexp:6,comparison:7,deflat:0,central:2,acl:4,microframework:2,stand:[2,6],mytempl:[2,6],effici:1,console_script:2,interleav:[],inbox:0,strip:6,foreward:[],igmp:5,hew:[],buffer_s:5,httpnotfound:[4,6],her:4,set_authorization_polici:4,aren:[2,4],start:[],interfac:[0,5,2,3,4,7],ipv4:[5,7],lot:[0,7,2,6],ipv6:[5,7],"0x10b075ed0":2,hei:5,ago:[5,4],bottl:[],tupl:5,cx_oracl:[],categor:0,freddi:6,notat:6,dirti:2,possibl:[5,7,6],"default":[5,2,4,6],connect:[],gone:2,uid:0,creat:[],certain:[0,5,2],paster:[2,6],deep:[4,7],strongli:4,intro:[],file:[0,1,2,3,4,5,6],fill:[4,6],beyond:4,googl:[5,2],compel:2,field:[2,4,6],valid:[0,4,6],copiou:7,ignor:[2,7],you:[],juic:6,sequenc:0,symbol:[5,6],briefli:6,transceiv:5,pool:7,reduc:2,"1b6":0,wife:7,directori:[0,2,3,4,6],descript:[5,2],hello:[0,7,6],potenti:[3,4],alright:[],escap:4,represent:[5,2],all:[],skeleton:[5,2],osx:[0,4],forbidden:4,scalar:2,abil:[0,2],follow:[0,5,2,3,4,6,7],disk:0,dsn:0,af_inet:5,articl:[2,4,6],init:2,program:[],cgi:[],norm:0,liter:2,straightforward:[],chameleon:6,fals:[5,4],faq:0,mcdonough:7,util:[],verb:0,mechan:4,fam:5,veri:[0,5,2,3,4,6,7],ticket:4,egg_info:2,list:[0,1,2,3,4,6,7],last_nam:6,adjust:2,stderr:0,small:[],sync:3,past:[2,4],design:[1,5,2,3,4,6,7],pass:[0,5,2,3,4,6,7],further:[],pyodbc:[],integr:1,by_nam:4,what:[],sud:7,section:[0,7,2,6],abl:[0,2,3,4,6],brief:[3,7],delet:[0,1,4],version:[0,1,2,3,4],primary_kei:[2,4],intersect:6,deepli:1,method:[],contrast:1,full:[1,2,3],hash:4,berkelei:7,inher:3,goodby:0,strong:[4,6],modifi:0,valu:[],ahead:[5,4,6],prior:4,pick:[4,6],add_static_view:[2,6],via:[2,4,6],filenam:0,href:[4,6],greenwitch:[],recret:[],establish:5,select:[0,1,2],distinct:0,stdout:[5,2],regist:[5,4],two:[0,5,2,3,4,6,7],taken:4,more:[],flat:[],flaw:6,mozilla:[0,7,6],flag:[0,5,4],jsonp:6,known:[5,4],cach:[0,2],none:[0,5,2,4,6],endpoint:[0,5],hour:[0,5,3,6],outlin:[],dev:4,histori:[],venusian:2,remain:[4,7],learn:[],abandon:[],rst2html:2,def:[0,5,2,4,6],ndate:5,factori:4,prompt:[5,2,3],scan:[2,6],challeng:[0,4],registr:4,share:[0,5,2,4,6],templat:[],explor:[1,2,3,5],hilight:[],phrase:[2,6],login_form:4,scar:[],cours:[],mai:[0,5,2,4,7],first_nam:6,secur:[],rather:0,anoth:[5,2,3,4,6],comfort:[1,6],message_from_str:[],"__init__":[2,4,6],csv:[2,6],simpl:[],css:[0,7,4,6],unabl:4,"545kb":2,resourc:[],referenc:6,okai:[0,2],associ:3,github:[0,5,2,4,6],footer:6,author:[3,4],django:[],caus:2,hobbit:[],egg:2,checkbox:6,help:[0,1,5,2,3,6,7],mainthread:[2,4],hypertext:7,soon:[5,6],through:[0,1,2,3,4,6,7],pane:0,paramet:[],style:[0,2,4,6],psycopg2:[2,4],wipe:[],pserv:[4,6],might:[0,5,7,2,6],alter:[],pce:[1,6],tri:6,good:[0,1,2,3,4,7],"return":[0,5,2,4,6],pollut:2,cew:2,framework:[],maildrop:0,gethostbynam:5,msg_part:5,httplib:3,eventu:2,troubleshoot:4,unlik:[],authent:[],easili:[7,2,6],achiev:[],http_server:0,compris:2,found:[0,2,6],unicod:[2,4,6],joel:4,dig:6,hard:[2,3,4],idea:[0,5,2,3],realli:[0,5,7,4,6],expect:[],blog_creat:[],thing:[0,7,2,4,6],orient:2,ftp:5,publish:[2,7],research:2,bubbl:6,etag:0,authnpolici:4,print:[0,5,2,4,6],url_map:[],uwpc:[2,6],"__utmz":0,postgr:4,proxi:0,uncommit:2,advanc:0,new_model:2,guess:0,dune:[],reason:[0,6],base:[0,1,2,3,4],put:[],"__utma":0,recv:[0,5],imap4:0,bash:4,thread:[],by_id:[2,4,6],perhap:[0,6],perman:[0,2,4],assign:[0,1,2,3,4,5,6],"85a3":5,set_authentication_polici:4,obviou:0,prevent:4,feel:6,number:[0,5,2,3,4,6,7],placehold:[0,6],done:[0,5,2,4,6],construct:[],stdlib:[],blank:0,miss:2,differ:[],superpow:[],script:[0,5,2,3,4,6,7],interact:[],least:[2,6],getservbyport:5,station:[],order_bi:2,statement:[],zeromq:7,scheme:[],store:[2,4],luckili:[0,2,4,6],parc:2,option:[],relationship:[5,3],echo_socket:5,part:[],pars:[0,2,7],logged_in:4,off:[0,7,2,4,6],fred:2,king:[],kind:[0,5,4,6],grew:0,remot:[5,2,4,7],remov:[5,2,4],game:6,reus:[],str:2,relative_to:4,consumpt:[3,7],aclauthorizationpolici:4,payload:0,"_socketobject":5,packag:[],expir:4,larri:2,imagin:[4,6],built:[0,2,3,4,6,7],lib:[0,2],odd:6,self:4,also:[0,1,2,3,4,5,6,7],build:[0,1,2,3,4,5,6,7],textareafield:6,brace:6,distribut:2,kai:2,interpol:[],reach:5,chart:[2,6],most:[0,5,2,3,4,6],plai:[2,4,6],path_info:[],swiftli:[],addr:[0,5],filesystem:[0,3,6],mymodel:[2,4,6],cover:[0,1,2,4,7],clean:[],http_server_at_hom:0,latest:7,wsgi:[],hyper:0,v12:0,session:[],entry_point:2,fine:[0,6],find:[0,5,2,3,4,6,7],access:[0,1,3,4,7],nosql:2,copyright:2,solut:[],"172kb":2,factor:2,smtplib:3,darwin:2,hit:[],unus:2,resent:5,wrinkl:[],"3xx":0,restart:[0,4,6],rfc:[0,7],common:[],nowher:2,wrote:4,certif:[1,6],creator:7,overwhelm:2,"0x1103e3f50":2,af_ipx:5,see:[0,5,2,3,4,6],bare:6,sea:3,arg:2,reserv:[0,5],pyrami:[],someth:[0,2,4,6],particip:1,blog_act:[],topmost:5,won:0,subscript:6,experi:3,altern:[2,7],javascript:6,isol:2,mailbox:0,succeed:[],"31m":4,pymssql:[],both:[0,5,2,3,4,6,7],hiddenfield:4,last:[0,5,2,4,6],delimit:0,context:[],let:[0,5,2,4,6],load:[0,3,4,6],markdown:[3,4],simpli:[0,2,3,4,6],point:[0,5,2,4],instanti:2,header:[],route_url:[4,6],param:4,linux:[0,4],comput:[],throughout:1,xkcd:0,blog:[0,3],empti:[0,5,2,4,6],hellmann:3,runner:[],secret:4,newcom:[],authn:[],rstpep2html:2,"55c0287d4ef21f15b97eb1f107451b88b479bff":4,strategi:[],exercis:[1,3],fire:[0,2,4,6],imag:[0,6],cryptacular:4,append:[0,2,4],coordin:2,understand:[0,1,3,4,7],instructor:[],convers:7,formatd:0,look:[],solid:[1,4,7],histor:[1,7],"while":[0,5,2,3],executemani:[],"54f7e4d":4,homework:[],behavior:[5,2,6],error:[],fun:6,everyon:4,loop:0,engl:[],readi:[0,5,2,4,6],readm:2,itself:2,zopetransactionextens:[],grant:4,belong:[0,5,4],wherein:6,zope:2,conflict:2,b59b7c3:4,communc:5,moment:[5,2,4,6],temporari:6,user:[],robust:4,wherev:[],stack:[],recent:[0,2],travers:[],task:[],find_packag:2,entri:[],spent:5,doodi:6,pickl:2,person:[5,4,6],expens:[5,4],elev:0,connnect:5,five:0,macintosh:0,spend:[5,6],explan:0,make_wsgi_app:2,"__path__":2,shape:1,mysql:2,session05:0,session04:5,session06:[],session01:5,session02:[0,6],cur:[],restructuredtext:2,global_config:[2,4,6],populate_obj:[4,6],armin:7,appli:[3,4,6],input:[],bin:[2,4,6],varchar:2,format:[],big:[],intuit:[],folk:[],server_socket:5,blogcreateform:[],bit:[0,5,2,3,4,6,7],formal:[0,2],httpexcept:6,leisur:7,ipproto_icmp:5,docutil:2,altough:[],manifest:[2,3],collect:[2,6],princip:4,popular:[3,4],a0001:0,often:[0,5,2,7],visibl:3,some:[0,1,2,3,4,5,6,7],back:[0,5,2,3,4,6,7],global:[],understood:5,uidnext:0,sampl:[4,6],ljenv:[2,4,6],scale:4,cgihttpserv:7,sock_dgram:5,pep:[],per:[0,5,4],larg:[],werkzeug:[],machin:[],intial:0,previou:[0,3],authtktauthenticationpolici:4,viabl:2,crlf:0,impos:[],constraint:7,materi:[8,3,7],memori:1,"0x100563c90":5,block:[0,5,4,6],plan:4,supplementari:[],miracl:0,primarili:[],ensur:[0,5,2,4],lesson:7,html5shiv:6,span:4,sock:[0,5],stylesheet:6,fast:2,custom:[],heroku:[],pocoo:[],suit:[3,7],etc:[0,5,2,6],doctyp:[0,6],repeatedli:[5,2],great:[0,7,2,3,6],pwd:2,b60ea2bb70:[],link:[],atol:4,delta:[],line:[0,1,2,4,6],translationstr:2,utf:[0,6],consist:0,cid:[],planet:[],sum:6,highlight:[],similar:[0,2,3],clear:[0,5,3],sesson:0,constant:5,parser:7,chao:4,doesn:[0,5,2,4,6],repres:[0,2,3,6],gecko:0,response_not_found:0,titl:[0,2,6],scrape:3,nam:5,nav:6,librari:[0,1,2,3,4,5,6,7],nice:[0,3,4,6],llvm:2,mongodb:2,meaning:2,csrftoken:0,index_pag:[4,6],algorithm:4,vice:[],mimetyp:0,rst2latex:2,allowedvers:0,discrimin:[],depth:[1,7],came:4,scroll:[],oop:2,getaddrinfo:5,code:[],partial:[],sqlserver:2,pymysql:[],ljshell:6,broader:[],edu:5,sensit:[0,4],elsewher:[5,4],send:[],lower:[5,7,6],aris:2,sent:[0,5,2,3,4,6],charlesproxi:0,spool:0,stackoverflow:0,relev:2,recip:4,magic:6,button:6,hive:[],"try":[],rfc5321:0,particularli:[4,6],hasnochildren:0,pleas:[2,3,7],smaller:5,natur:6,uniqu:[2,4,6],video:7,download:[2,6],carlo:[],click:6,client_address:5,compat:2,index:[0,2,4,6],wahoo:0,compar:[0,4],resembl:6,cell:[],len:[0,5,2],madelin:[],bodi:[0,2,4,6],loadapp:4,intercept:4,logout:[],becom:2,pgbackup:4,convert:[2,4,6],pretti:[0,2],technolog:[5,4],thie:7,chang:[0,2,3,4,6,7],maker:6,chanc:3,firefox:0,parse_request:0,win:0,gatewai:3,"__name__":4,from:[0,1,2,3,4,5,6,7],commun:[],upgrad:4,next:[0,5,2,4,6,7],websit:[2,3,4,6],few:[],usr:2,sort:[],sudo:2,ipoac:5,babi:6,train:[2,6],somesecret:4,account:6,retriev:6,scalabl:2,alic:4,tag:[0,4,6],thin:5,meet:3,fetch:[0,2,4,6],aliv:[0,5],sqlite:[2,4],quickstart:[],tar:2,process:[1,5,2,3,4,6],lock:4,preformat:4,high:2,af_:5,tab:0,tal:[],onlin:[5,2,3,4],cache_max_ag:[2,6],gcc:2,cewing_socket:5,sit:7,client_socket:5,pyramid_jinja2:6,instead:[0,2,4,6],entryeditform:4,chri:7,delai:2,initialzedb:4,attend:1,other_sess:2,"6mb":2,attent:4,tier:4,philosophi:7,physic:[5,6],drop:[5,6],add_al:2,bind:[],correspond:5,element:[0,2,3,6],issu:[],webroot:0,chief:4,allow:[0,1,2,3,4,5,6,7],sendal:[0,5],elif:6,insight:3,bunch:5,uiqj579igrbrebhmjqnth8pffaz2qrj:0,verify_password:4,chosen:[],"0x10046cec0":5,infrastructur:4,bye:0,rat:[],recept:5,greater:7,python:[],auto:[],spell:6,dai:[0,3,6],auth:4,hateoa:7,httplib2:7,front:3,"8a2e":5,tilkov:7,somewher:[4,6],anyth:[2,4],entrycreateform:[4,6],nameerror:0,mode:2,autoincr:4,beneath:4,nearli:2,pygment:4,bump:0,sessionmak:[2,6],meta:6,"static":[],special:[2,3,4,6],out:[],variabl:4,influenc:[],defend:7,stub:[],suitabl:4,rel:6,leverag:4,clone:[5,2,6],red:0,clarifi:2,insid:[0,5,2],workflow:[],frank:6,manipul:2,zodb:2,auth_secret:4,first_lin:0,complianc:4,cri:[0,6],"0x1103d9f10":2,could:[0,2,4,7],lexer:4,ask:[0,5,2],keep:[0,1,2,3,5],length:[0,2,4,6],enforc:7,outsid:[2,4],south:[],softwar:[0,5,2,4,6],pygments_styl:4,qualiti:3,scene:[],echo:[],exact:6,models_valu:2,match_param:[4,6],smallish:5,owner:6,"long":[0,5,2,3,4],licens:[2,7],mkdir:2,system:[1,5,2,4,6,7],wrapper:5,attach:4,imap4_ssl:0,"3f80f":0,termin:[0,5,2,4],"final":[0,1,5,2,3,6],low:1,udp:[5,7],shell:[2,4],fnhg8:[],fnhg5:0,fnhg2:0,fnhg3:0,"8d3":5,dyno:4,textfield:[4,6],nobodi:[],route_nam:[4,6],embodi:[2,4],roberto:6,structur:[1,7,3,6],charact:[2,4,6],sens:6,"782d17e":[],f12:0,bet:[],unstag:2,favorit:0,py2:2,py3:2,deprec:2,mailer:[],myproject:4,have:[],disadvantag:[],need:[0,1,5,2,4,6,7],predic:4,paramiko:7,mangl:0,afraid:[0,2],min:[4,6],runapp:4,which:[0,5,2,3,4,6,7],itsdanger:[],authentication_polici:4,soap:[3,7],singl:[0,1,2,3,4,5,6],unless:5,ds_store:2,deploy:[],whl:2,who:[4,6],oracl:2,discov:0,deploi:[],pyc:2,segment:6,why:[],dens:1,request:[],wtform:[],face:6,pipe:6,build_db:4,deni:4,determin:[0,5,2,3,4,6],fact:[5,3,4,6],jkorpela:0,tolkien:[],text:[0,2,3,4,6],bring:[0,6],rough:2,trivial:[],identityset:2,redirect:0,locat:[0,5,2,4,6],should:[0,1,2,3,4,5,6],jan:[0,5],suppos:7,"3e1cb03b":0,"__tablename__":[2,4],local:[5,2,4,6],hope:7,move:[0,5,2,3],satisfact:4,familiar:[0,1],pypi:2,db8:5,log_buff:0,increas:7,aspen:[],smash:[7,6],blog_upd:[],enabl:[0,1,4],organ:7,rage:0,"0x10e7d6b90":6,stuff:6,"0x1005b8b40":5,contain:[0,5,2,3,4,6],attribut:[2,4,6],view:[],dbsession:[2,4,6],perdido:[],knowledg:[1,2,7],packet:[5,7],mistak:2,closer:2,statu:[2,4],wire:[5,4,6],correctli:[0,6],pattern:[7,2,3,6],tend:2,favor:[],written:[7,3,6],progress:[1,3],neither:7,flickr:4,email:[0,5,2],mysite1:0,sole:[0,5],kei:[2,4,6],job:[0,2,4,6],entir:2,jog:1,permanentflag:0,addit:[],dobb:0,admin:[3,4],trove:3,wsgiref:7,configpars:2,authorization_polici:4,instanc:[2,4],equat:5,wear:0,comment:[0,5,6],typifi:2,lang:6,this_id:6,rfc2616:0,chmod:4,walk:3,solv:[],tuesdai:1,silmarillion:[],quit:[0,5,2,3,4,6,7],divid:[5,2],addition:2,insuffici:0,compon:[],json:[7,3,6],rpclib:7,eloqu:[],immedi:5,treasur:3,sock_stream:5,bulk:2,untrack:2,togeth:[],present:[],ingredi:2,multi:0,plain:[0,2,3,4,6],cursor:[],defin:[5,7,2,6],xyzzi:0,wild:3,dbapi2:2,endblock:[4,6],layer:[0,5,2,7],ripe:3,demo:[],site:[2,3,4,6],inform:[],pastedeploi:2,cherrypi:[],lightweight:7,incom:[],whirl:[5,4],pyramid_chameleon:[2,6],undecid:[],welcom:2,parti:0,began:[],handl:[],demoenv:2,failur:[0,5],http:[],hostnam:5,absorb:2,effect:[],"5xx":0,student:[1,3],decoupl:[],expand:[],pull:[0,2],markupsaf:[],fenced_cod:4,center:0,well:[0,1,2,4,5,7],exampl:[],command:[0,1,2,4,6],choos:[1,6,2,5],undefin:6,usual:[5,2],distanc:5,svn:6,less:[0,5],kramer:4,tcp:[],emtpi:2,web:[],jinja:[],wed:0,nullabl:[4,6],smith:0,add:[],other:[],logger:2,match:[0,5,7,4,6],gmt:0,xmlrpc:[3,7],agnost:[5,6],crud:0,piec:6,arguabl:3,cedar:4,know:[1,5,2,4,6,7],unseen:0,password:[0,4,6],recurs:[],python2:2,insert:[],like:[],success:[0,5],echo_serv:5,lose:2,page:[0,1,2,3,4,6,7],backlog:5,didn:[2,7],captur:[2,6],suppli:4,utmcmd:0,"19t01":4,uidvalid:0,proper:[0,5,6],home:[0,2,4,6],transport:[],tmp:5,guid:7,gethostbyname_ex:5,esr:0,lead:[3,6],interfaceerror:[],broad:1,octet:0,leav:[2,6],blog_view:[],investig:[0,3,6],authz:[],journal:[2,3,4,6],usag:[1,2],facilit:7,host:[0,5,2,4],although:[0,2,6],wtttzy:4,about:[],actual:[0,5,2,4,6],socket:[],column:[2,4],herokuapp:4,datagram:[5,7],carrier:5,includ:[],constructor:5,own:[],washington:5,easy_instal:2,automat:[5,2,6],pcreat:[2,6],merg:[],sock_:5,val:[2,6],retr:0,transfer:[0,4,7],intention:0,appl:2,arg1:4,"var":[0,4],respositori:0,add_url_rul:[],xerox:2,gain:[1,2,3,4],inlin:[5,2],count:2,made:[0,5,2,4,6,7],view_config:[4,6],whether:0,wish:[2,4,7],googlecod:6,displai:[4,6],troubl:7,below:[5,4],limit:5,problem:[],evalu:[],"int":[2,4],dure:3,pid:[4,6],implement:[],ini:[2,4,6],pip:2,duru:2,probabl:[4,6],detail:[],virtual:[0,2],book:6,lookup:[5,6],futur:[5,3],rememb:[0,5,2,4,6],stat:0,mxodbc:[],"class":[],dewei:0,echo_cli:5,log:[0,2,4,6],fiddler2:0,databaseinterfac:[],"_queri":4,syllabu:2,reliabl:5,xmlrpclib:3,bcryptpasswordmanag:4,models_nam:2,portion:6,htmlparser:3},objtypes:{},objnames:{},filenames:["presentations/session05","index","presentations/session01","outline","presentations/session03","presentations/session04","presentations/session02","readings","presentations/index"],titles:["Session 05","Internet Programming with Python","Session 01","Course Outline","Session 03","Session 04","Session 02","Supplementary Course Readings","Course Presentations"],objects:{},titleterms:{wsgi:[3,7],req:[],protocol:[0,5,3,7],entri:4,queri:[],resp:[],option:[],all:5,tcp:[5,3,7],syntax:4,time:[0,5],session:[0,5,2,3,4,6,7],sqla:2,skill:[],dynam:[],web:[2,3,7],now:[],tire:[],flask:[],oooop:[],transact:[],configur:4,activ:2,enough:[],send:5,environment:[],add:6,program:1,congratul:[],persist:[3,7],input:6,kick:[],real:0,applic:[5,2,3,4,7],browser:[],rollback:[],get:[5,6],python:[0,1,2,5],safe:[],stop:[],pop3:0,framework:[],jinja2:6,characterist:[],requir:1,introduct:2,insert:[],like:0,walkthrough:[],edit:6,simpl:[],revers:[],revert:[],resolv:0,authent:[3,7],server:5,"try":[],bad:[],common:[],quick:[],side:5,view:[7,3,6],respond:5,machin:[],domain:[],set:4,old:[],request:6,batteri:[],second:[],"static":6,connect:5,polish:4,our:[2,6],submit:[0,5],transport:5,out:[],virtualenv:2,separ:2,what:[0,1],forcibl:[],learn:0,databas:2,asid:[],slide:[],content:0,state:[],irl:[],languag:0,internet:[1,5],django:[3,7],"new":[],method:0,refer:[1,3],cgi:[3,7],"break":[0,5],run:[5,4],extend:3,gener:[],preprar:3,setup:[],tdd:[],debug:[],step:0,orm:2,logout:4,dictionari:[],address:5,put:5,problem:[],valu:[],addit:[],unsaf:[],search:1,socket:[5,3,7],http:[0,6],construct:5,filter:[],mvc:[7,2,3,6],context:[],action:[],modif:[],implement:[0,4],mean:[],fix:[],first:[0,2,4,6],wiki:[],own:[],prerequisit:1,render:[7,3,6],can:[],overview:1,app:4,sql:[],terminolog:2,echo:[],header:0,unix:[],api:[3,7],todai:[],famili:5,wrap:4,instal:2,your:[0,5,4,6],speak:0,code:[],authz:4,differ:[],git:[],supplementari:7,commun:5,test:[0,5],interact:[2,6],three:2,messag:5,custom:5,compon:2,few:0,heroku:4,much:[],mime:0,authn:4,statement:[],basic:[0,3,6],forward:[],master:[],popul:[],type:[0,5],start:2,includ:[],"function":[],introspect:[],asset:6,form:[3,7],about:2,schema:[],part:6,link:5,togeth:5,why:2,virtuelenv:2,imap:0,present:[8,6],serv:0,word:2,look:0,provid:4,prepar:[3,4,6],outlin:3,project:2,url:[],express:[],homework:[0,5,2,6],error:0,login:4,anonym:4,more:[],html:[],expect:1,control:6,listen:5,pyramid:[7,2,3,6],comput:[0,5],virtualenvwrapp:[],creat:[5,2],deactiv:2,demo:[],respons:[0,6],smtp:0,populatedb:[],templat:6,wtform:6,packag:2,intro:[],have:0,further:[0,5],incom:5,work:2,check:[],idempot:[],result:[],again:[],decor:[],cours:[8,3,7],develop:[],goal:[],secur:4,receiv:5,rout:6,format:4,detail:[],client:5,note:[],preserv:[],other:[],branch:[],sqlite3:[],verifi:[],you:[],concern:2,parameter:[],accept:5,life:[],updat:[],fork:[],map:0,finish:5,resourc:0,clean:[5,2],deploy:[7,3,4,6],"class":1,object:[],sqlalchemi:2,highlight:4,solut:[],user:6,deploi:[3,4],hide:4,data:[7,3,6],stack:5,util:[],handl:0,task:5,practic:[],third:[],tutori:[],read:7,bind:5,flow:5,uri:0,rule:[],doe:0,inform:5,exampl:0,thi:1,repli:5,far:[],mashup:[3,7],model:[2,6],sesstion:[3,7],make:6}}) \ No newline at end of file +Search.setIndex({envversion:42,terms:{icmp:5,interchang:2,four:0,database_url:4,prefix:[0,5],ronach:7,af_rout:5,forget:4,categori:2,aug:2,sorri:2,ipproto_raw:5,crisew:5,authorid:[],concret:2,under:[],dest_dir:2,spec:7,digit:[0,6],dele:0,rise:[],adodbapi:[],govern:[0,1,3],cmd:0,herbert:6,imaplib:[0,3],verif:4,"544kb":[],direct:[0,2],batch:2,enjoi:[],second:[],street:[],nthi:6,even:[0,2,3,7],list_of_tcp_and_udp_port_numb:5,"new":[],net:0,ever:7,told:4,ipproto_tcp:5,abov:[0,5,2,3,4],createdb:[],show_profil:[],here:[0,1,5,2,4,6,7],china:[],"4xx":0,path:[0,2,3,4,6],interpret:[0,5,2,6],credit:2,webfact:0,permit:[0,3],studi:7,portabl:1,golden:6,heroku_postgresql_maroon_url:4,wikimedia:[2,6],org:[0,5],total:4,unit:[],highli:1,yore:6,describ:5,would:[0,2,4,6],hellstrom:[],tail:4,dnt:0,call:[0,5,2,4,6,7],admin_password:4,typo:2,recommend:4,type:[],tell:[0,5,2,4],"5fb97f3":[],panach:6,notic:[0,5,2,4,6],phone:6,moin:[],unpack:2,addon:4,af_unix:5,join:0,flaskenv:[],restor:[2,4],worth:[2,6],conceptu:6,introduc:[1,2,3,6],root:4,defer:4,repoz:2,give:[1,2,3,4,5],smtp:[],indic:0,want:[0,1,2,4,6,7],everi:[0,2],end:[0,1,5,3,4,6,7],learning_journ:[2,4,6],frobozz:0,book_insert:[],concis:3,conn:[0,5],env:2,answer:[0,5,6],verifi:[],perspect:7,anon_1:2,after:[2,6],superus:2,diagram:2,befor:[0,5,2,3,4,6],wrong:2,parallel:7,demonstr:[0,2,3],attempt:5,classmethod:[2,4,6],authzpolici:4,minim:[0,7],greet:0,think:[5,2,3,4,6,7],alias:5,scoped_sess:2,dispar:3,environ:[1,2,3,4],waitress:4,incorpor:4,enter:[0,6],lambda:6,engine_from_config:[2,4,6],order:[1,2,3,4,6],hob7v7guwir4n1v:4,origin:[2,3,7],feedback:[],over:[5,7,2,3,6],fall:2,becaus:[0,2,4,6],jpeg:0,privileg:2,keyboard:0,flexibl:2,vari:[0,5],digest:7,fit:3,fix:[],simple_cli:0,toolbelt:[4,6],comprehend:7,better:[5,2,4,7],offic:0,complex:[2,3],comprehens:7,howdi:6,easier:[7,2,6],them:[0,1,2,3,4,5,6],thei:[0,1,2,3,4,5,6,7],"break":[],sqlite3:[],jinja2:[],initializedb:[2,4],choic:[1,7,2,3,5],getservbynam:5,rocki:4,each:[0,1,2,3,4,5,8],went:[0,6],webmast:0,bone:6,mean:[],laboratori:1,doug:3,logo:6,ooop:[],extract:[3,7],network:[1,7,6,3,5],goe:[2,6],god:2,newli:[],content:[],rewrit:[],got:[0,2,4,6],forth:0,navig:1,rail:0,nightmar:2,situat:[0,2],free:[4,6],standard:[0,1,2,3,4,5,7],hand:[4,6],s3cr3t:4,traceback:[],static_url:6,isn:[0,6],confus:[5,6],"__or__":5,pristin:[],rang:[0,1,6],independ:[0,2],eachoth:2,hook:2,instruct:[5,2,7],alreadi:[0,5,2,4,6],messag:[],fantast:[1,2,7],primari:[2,6],top:[2,4,6],"0x1103e38d0":2,sometim:[0,2],imap4rev1:0,too:[0,5,7,2,6],tom:2,my_view:6,consol:2,namespac:[],tool:[0,1,2,3,4,5,7],setuptool:2,took:2,incur:4,technic:[],keyword:[4,6],provid:[],tree:[2,4],project:[],matter:4,arriv:6,minut:[0,5,6],rad:5,contenti:[],close:[0,5,6],ran:[0,2],modern:[2,3],mind:7,mine:0,raw:0,af_sna:5,pylon:2,increment:[],"__main__":4,seen:[0,5,2,4,6],seem:4,seek:[2,4],strength:3,latter:2,thorough:[7,6],"0x1103e3fd0":2,shelf:2,transmit:2,hypertext_transfer_protocol:0,simplifi:0,endfor:[4,6],plenti:3,though:[0,4,7],usernam:[0,4,6],object:[],guess_typ:0,regular:2,artifact:2,bsd:5,models_id:2,typ:5,maria:5,tradit:6,don:[0,1,5,2,4,6,7],doc:[0,2,4],metal:[],doe:[],notnul:[],declar:[2,6],unchang:7,passwordfield:4,sign_in_out:4,dot:6,opposit:6,random:4,syntax:[],rst:[],radio:6,identifi:[0,6],edit_entri:[],involv:4,absolut:6,exactli:[0,5,6],layout:[7,3,4,6],menu:0,explain:[2,7],configur:[],apach:0,kessler:7,disert:7,busi:[],matchdict:[4,6],rich:[1,3],folder:[5,2,4,6],resolve_uri:0,patter:6,stop:[],report:[],bat:7,bar:[0,5,6],ietf:0,baz:0,"public":[4,6],buffsiz:5,reload:[0,4],metadata:2,steal:[2,4],respond:[],get_const:5,habit:[],disucss:3,result:[],respons:[],fail:[0,5,4],themselv:[],best:[2,4],subject:[],awar:4,pythoncert:[2,6],txpostgr:[],wikipedia:[0,5,2,7],urllib:3,mysql_length:2,figur:[5,2],score:2,outstand:6,pbkdf2passordmanag:[],awai:2,enlighten:7,approach:[1,2],side:[],never:[5,2],extend:[],weak:3,extens:[0,1,4],html5:[3,6],protect:0,accident:5,howev:[2,6],against:[0,4,6],logic:[2,4,6],login:[],seri:2,com:[0,5,2,4,6],compromis:1,get_appset:[2,4,6],assur:5,trunk:6,trust:2,assum:[5,2],speak:[],chrome:0,add_rout:[2,4,6],three:[],been:[2,4,6],redeploi:4,interest:7,basic:[],quickli:[0,2],life:[],setup_log:[2,6],telnet:5,ani:[0,1,5,2,4,6,7],"catch":0,ugli:0,ident:4,servic:[0,5,3,4,7],properti:[5,4],commerci:2,neat:0,seven:0,pyramid:[],af_appletalk:5,tabl:[2,4,6],toolkit:0,fnhg:0,march:1,tediou:2,sever:[4,7],mievil:[],perform:[2,6],suggest:[0,4],make:[],couchdb:2,drawback:3,split:0,complet:[0,1,2,3,4,5,6,7],rfc822:0,nic:5,hang:0,kit:7,rais:[0,5],kib:[],"548kb":2,thu:5,depli:[],hypothet:2,inherit:[2,6],client:[],greatest:[],thi:[],endif:[4,6],gzip:0,everyth:[0,1,2,4,6,7],moreov:0,left:[2,4,7],protocol:[],just:[0,5,2,4,6,7],human:[0,7,6],yet:[0,5,2,4,6],languag:[],previous:3,alchemi:2,easi:[7,2,4,6],shout:6,"8bitmim":0,httpfound:[4,6],els:[0,2,4,6],save:[0,2,4,6],hat:0,gave:2,opt:0,applic:[],race:[4,6],mayb:[],an_id:[],parse_var:2,render_markdown:4,elabor:4,enrypt:[],apart:[7,6],imap4_port:0,response_method_not_allow:0,specif:[5,2,3,4,6,7],arbitrari:[5,2,4],bcrypt:4,manual:2,bathtim:6,hung:0,install_requir:2,underli:[1,3,5],www:[0,5],right:[0,1,7,4,6],"0db8":5,nfrom:2,intern:0,importantli:[],bore:[],successfulli:2,transmiss:[0,5,7],txt:[0,5,2,4],cooper:[],bottom:5,subclass:[],buffer:[0,5],ssh2:7,exectut:2,condit:0,foo:[0,5,4,6],localhost:[0,4,6],mailgat:0,core:7,particular:[7,2,4,6],confer:3,repositori:[5,2,4,6],post:[0,4,6],"super":0,chapter:[2,7],postgresql:[2,4],surround:6,dinner:0,commit:[2,4],produc:[5,3],encod:[0,4],bound:[5,2],curios:3,down:[4,6],creativ:[2,6],wrap:[],storag:[0,2],guardia:[],deal:[5,7],utmcsr:0,support:[0,1,2,3,4,6,7],payment:4,avail:[5,2,4,6],reli:4,request_method:4,editor:[],get_address_info:5,rcpt:0,internet_protocol_suit:5,head:[0,5,4,6],medium:5,form:[],offer:[7,2,3,6],forc:7,sqlalchemi:[],hear:5,lignt:3,codehilit:4,reset:[],attr:6,strip_filt:6,maximum:5,until:[5,2],fundament:[1,3],intitalizedb:2,featur:[2,3,4,7],af_decnet:5,"abstract":2,decrypt:0,proven:2,exist:[0,2,4,6],glanc:7,check:[],assembl:6,encrypt:[4,7],mashup:[],when:[0,5,2,4,6,7],role:6,jone:0,test:[],tie:[],webob:2,roll:4,relat:[2,7],intend:[1,2,5],af_unspec:5,urllib2:3,djangocon:7,intent:1,consid:[0,7,2,6],src:6,receiv:[],longer:5,bullet:4,pbkdf2:4,initialize_learning_journal_db:[2,4],pathnam:[0,5],time:[],push:[0,2,4],breadth:7,concept:[1,2,3,4,5,7],chain:[2,6],skip:2,consum:[5,3,7],focus:7,invent:2,supplement:7,skim:7,rdbm:[],row:[2,4],decid:[],depend:[2,3,4,6],graph:6,readabl:[0,6],unpython:2,a0004:0,a0005:0,a0006:0,decis:[],a0002:0,a0003:0,must:[0,1,5,2,4,6],isinst:[],sourc:[0,1,2,3,4,5,6,7,8],string:[0,5,2,3,4,6,7],congest:5,lru:2,kitten:2,word:[],ydood:6,brows:[3,6],administr:[],level:[1,2,4],did:[0,5,2,6],reconcil:[],ipproto_udp:5,iter:[5,2],item:[2,6],unsupport:[],team:2,cooki:[0,4],div:[],dir:[0,5],declarative_bas:2,upper:6,slower:5,permiss:4,sign:[0,4],restkit:7,cost:4,port:[0,5,4],procfil:4,appear:[4,6],repli:[],scaffold:2,beautifulsoup:[3,7],"75a8462":[],current:[5,2],rst2xml:2,sinc:[5,2,6],"3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4":4,response_ok:0,deriv:3,gener:[],explicitli:2,address:[],along:[0,1,3,7],wait:[0,5],shift:0,queue:5,pysqlit:[],bob:[0,2],commonli:5,ourselv:[0,4],ipc:5,semant:5,session1:5,extra:5,modul:[0,1,2,3,4,5,7],prefer:0,backtick:[],fake:[],marker:6,fetch_head:[],market:2,types_map:0,prove:4,univers:7,visit:[4,6],todai:[],live:[5,2,4],criteria:[0,2],msg:5,checkout:[],plug:0,pyarmid:[],enhanc:3,visual:0,appendix:0,accept:[],obj:[2,6],behalf:6,prepar:[],pretend:0,focu:3,whatev:[5,6],purpos:[0,2,3,4,6],boilerpl:2,stream:[5,2],predict:0,agent:0,topic:[7,6],critic:7,app_factori:2,loginform:4,occur:5,flask_intro:[],alwai:[0,5,2,4],multipl:2,winter:1,tilt:[],charset:[0,6],write:[0,5,2,4,6,7],anyon:[4,6],xhtml:0,map:[],product:[2,4,7],max:[0,4,6],dive:[1,3,4],tomayko:7,mac:0,date:[0,2],classroom:2,gethostnam:5,bookdb:[],explicit:6,blabber:2,tale:[],ephemer:[5,2],"switch":2,cannot:[5,6],combin:[1,2,3,4,6],callabl:6,talk:[0,5,2,3,6,7],shield:3,repair:[],ydwoh:6,brain:[],populate_db:[],gitignor:2,still:[0,2,6],config_uri:[2,4,6],group:[5,2],"4z6rvnhte21mpljw5veive0eg57gn":4,how:[0,1,2,3,4,5,6,7],polici:[3,4],sec10:0,platform:4,window:[0,2,4],curli:6,mail:0,main:[0,2,4,6],non:0,killer:3,initi:[0,2,4,7],interview:0,safari:0,half:5,discuss:[5,7,2,3,6],term:[1,2],name:[0,5,2,4,6,7],config:[2,4,6],interpr:2,separ:[],magazin:[7,6],januari:1,compil:[4,7],domain:[],"0x105849b90":6,replac:[4,6],individu:[5,2,6],continu:[0,5,2,3,4],happen:[0,5,2,6],accomplish:[0,7],space:0,profil:5,correct:[0,5,6],she:4,tmpl:6,earlier:[0,2,4],pseudocod:0,bookid:[],ch05s03:0,argv:[2,4],orm:[],inevet:[],argn:4,brower:3,"byte":5,card:5,care:[0,5,7],sign_in:4,wai:[0,1,2,3,4,6,7],question:[0,2,4,6],where:[5,2,4,6],refus:5,turn:[0,2,3,4,6,7],place:[5,2,3,4,6],principl:1,imposs:2,frequent:2,first:[],oper:[1,6,4,5],info:[5,2,4],directli:[5,2,6],onc:[0,5,2,3,4,6],yourself:[0,1],submit:[],open:[5,4,6],size:[0,5,4],urin:0,given:[0,1,5,2,3,6,7],sheet:6,convent:0,bookmark:7,imap4_ssl_port:0,demostr:[],draft:0,conveni:2,friend:4,prettier:6,repostitori:[],copi:[0,4,6],huh:0,specifi:6,"short":7,mostli:[0,5,7],domin:2,than:[0,5,2,4,6,7],png:0,serv:[],susan:[],were:[5,2],posit:5,conn2:[],conn1:[],browser:[],sai:[0,2,4],pro:5,argument:[0,5,2,4,6],properli:[0,3,6],deliv:[],notimplementederror:0,saw:2,shtml:0,engin:[2,4,6],techniqu:[],ipproto_:5,ideal:[],take:[0,5,2,3,4,6,7],green:0,reload_templ:2,noth:[2,4,6],channel:[0,2],begin:[0,5,2,3,4,6],sure:[5,2,4,6],pain:[2,4],trace:2,normal:2,track:[],price:4,compress:[],cgitb:[],pair:[2,3,6],homepag:7,sesstion:[],utmccn:0,later:0,drive:7,"8mb":2,create_al:2,shortnam:4,gracefulli:0,show:[0,2,3,4,6],german:[],my_index:2,constitu:6,dflt_valu:[],ground:1,xml:[0,2,6],onli:[0,2,4,6],slow:5,"true":[0,5,2,4,6],activ:[],getattr:5,dict:[5,2],analyt:4,startswith:5,"8873ba1":[],variou:[2,3,6],get:[],mung:0,clang:2,ssl:0,tailor:0,ssh:5,url_for:[],requir:[],entryfactori:4,authenticated_userid:4,default_permiss:4,wiki:[],n10:6,test_request_context:[],detect:4,review:[0,5,2,4,6],enumer:4,label:[4,6],behind:[2,7],between:[0,1,2,3,5],"import":[0,5,2,4,6],across:[1,3,5],parent:2,elladan:5,tut:0,cycl:[2,6],come:[0,2,4,6],img:0,contract:[],tutori:[],wherin:2,mani:[0,5,2,4,6,7],among:[5,2,3,6],color:4,unittest:3,dispatch:7,imad1:0,typic:2,artu:0,coupl:[5,2],rebuild:0,zpt:[],mark:4,evangelista:[2,6],workshop:1,avian:5,emphas:1,docxmlrpcserv:3,lectur:[1,3],"1xx":0,those:[0,2],"case":[0,7,2,6],plugin:[],cast:2,outcom:[0,2],certainli:6,python_web:[2,6],ehlo:0,advantag:[2,4],ctrl:0,canon:5,worri:[5,4],destin:[],blah:0,smalltalk:2,proto:5,cc0:[2,6],same:[0,5,2,3,4,6,7],pai:4,document:[0,1,2,3,4,5,6,7,8],week:[0,1,2,3,4,5,6,7],finish:[],assist:2,someon:4,driven:[0,6],capabl:[],add_rount:4,improv:[0,2,4],extern:7,appropri:[5,3,4,6],redqueen:0,"__acl__":4,macro:[],markup:4,without:[5,2,6],promis:5,model:[],execut:[0,1,2,4,5,7],excel:[7,6],rest:[0,2,3,4,7],interrupt:0,kill:[0,2],aspect:[2,3,4,6],monei:[],heffalump:5,versu:1,hint:0,except:[0,5,2],littl:[4,6],apache2:7,identif:[],blob:4,versa:[],vulner:0,real:[],requri:4,tranmiss:5,around:[5,7,4,6],read:[],makin:6,dark:[],traffic:0,mon:0,world:[7,2,3,6],socket_tool:5,intel:0,whitespac:0,integ:[5,2,4],server:[],benefit:[0,5,3],either:[0,6],cascad:6,get_payload:[],output:[0,5,4],manag:[5,2,4],fulfil:4,alan:[2,6],b60ea2bb7052a5bd300772d7d9d40b19b27f7a1b:[],ipproto_ip:5,definit:6,"2xx":0,exit:2,posgresql:4,notabl:0,refer:[],af_inet6:5,power:[5,2,3,4,6,7],broken:0,fulli:[],regexp:6,comparison:7,deflat:0,central:2,acl:4,microframework:2,stand:[2,6],mytempl:[2,6],effici:1,console_script:2,interleav:[],inbox:0,strip:6,foreward:[],igmp:5,hew:[],buffer_s:5,httpnotfound:[4,6],her:4,set_authorization_polici:4,aren:[2,4],start:[],interfac:[0,5,2,3,4,7],ipv4:[5,7],lot:[0,7,2,6],ipv6:[5,7],"0x10b075ed0":2,hei:5,ago:[5,4],bottl:[],tupl:5,cx_oracl:[],categor:0,freddi:6,notat:6,dirti:2,possibl:[5,7,6],"default":[5,2,4,6],connect:[],gone:2,uid:0,creat:[],certain:[0,5,2],paster:[2,6],deep:[4,7],strongli:4,intro:[],file:[0,1,2,3,4,5,6],fill:[4,6],beyond:4,googl:[5,2],compel:2,field:[2,4,6],valid:[0,4,6],copiou:7,ignor:[2,7],you:[],juic:6,sequenc:0,symbol:[5,6],briefli:6,transceiv:5,pool:7,reduc:2,"1b6":0,wife:7,directori:[0,2,3,4,6],descript:[5,2],hello:[0,7,6],potenti:[3,4],alright:[],escap:4,represent:[5,2],all:[],skeleton:[5,2],osx:[0,4],forbidden:4,scalar:2,abil:[0,2],follow:[0,5,2,3,4,6,7],disk:0,dsn:0,af_inet:5,articl:[2,4,6],init:2,program:[],cgi:[],norm:0,liter:2,straightforward:[],chameleon:6,fals:[5,4],faq:0,mcdonough:7,util:[],verb:0,mechan:4,fam:5,veri:[0,5,2,3,4,6,7],ticket:4,egg_info:2,list:[0,1,2,3,4,6,7],last_nam:6,adjust:2,stderr:0,small:[],sync:3,past:[2,4],design:[1,5,2,3,4,6,7],pass:[0,5,2,3,4,6,7],further:[],pyodbc:[],integr:1,by_nam:4,what:[],sud:7,section:[0,7,2,6],abl:[0,2,3,4,6],brief:[3,7],delet:[0,1,4],version:[0,1,2,3,4],primary_kei:[2,4],intersect:6,deepli:1,method:[],contrast:1,full:[1,2,3],hash:4,berkelei:7,inher:3,goodby:0,strong:[4,6],modifi:0,valu:[],ahead:[5,4,6],prior:4,pick:[4,6],add_static_view:[2,6],via:[2,4,6],filenam:0,href:[4,6],greenwitch:[],recret:[],establish:5,select:[0,1,2],distinct:0,stdout:[5,2],regist:[5,4],two:[0,5,2,3,4,6,7],taken:4,more:[],flat:[],flaw:6,mozilla:[0,7,6],flag:[0,5,4],jsonp:6,known:[5,4],cach:[0,2],none:[0,5,2,4,6],endpoint:[0,5],hour:[0,5,3,6],outlin:[],dev:4,histori:[],venusian:2,remain:[4,7],learn:[],abandon:[],rst2html:2,def:[0,5,2,4,6],ndate:5,factori:4,prompt:[5,2,3],scan:[2,6],challeng:[0,4],registr:4,share:[0,5,2,4,6],templat:[],explor:[1,2,3,5],hilight:[],phrase:[2,6],login_form:4,scar:[],cours:[],mai:[0,5,2,4,7],first_nam:6,secur:[],rather:0,anoth:[5,2,3,4,6],comfort:[1,6],message_from_str:[],"__init__":[2,4,6],csv:[2,6],simpl:[],css:[0,7,4,6],unabl:4,"545kb":2,resourc:[],referenc:6,okai:[0,2],associ:3,github:[0,5,2,4,6],footer:6,author:[3,4],django:[],caus:2,hobbit:[],egg:2,checkbox:6,help:[0,1,5,2,3,6,7],mainthread:[2,4],hypertext:7,soon:[5,6],through:[0,1,2,3,4,6,7],pane:0,paramet:[],style:[0,2,4,6],psycopg2:[2,4],wipe:[],pserv:[4,6],might:[0,5,7,2,6],alter:[],pce:[1,6],tri:6,good:[0,1,2,3,4,7],"return":[0,5,2,4,6],pollut:2,cew:2,framework:[],maildrop:0,gethostbynam:5,msg_part:5,httplib:3,eventu:2,troubleshoot:4,unlik:[],authent:[],easili:[7,2,6],achiev:[],http_server:0,compris:2,found:[0,2,6],unicod:[2,4,6],joel:4,dig:6,hard:[2,3,4],idea:[0,5,2,3],realli:[0,5,7,4,6],expect:[],blog_creat:[],thing:[0,7,2,4,6],orient:2,ftp:5,publish:[2,7],research:2,bubbl:6,etag:0,authnpolici:4,print:[0,5,2,4,6],url_map:[],uwpc:[2,6],"__utmz":0,postgr:4,proxi:0,uncommit:2,advanc:0,new_model:2,guess:0,dune:[],reason:[0,6],base:[0,1,2,3,4],put:[],"__utma":0,recv:[0,5],imap4:0,bash:4,thread:[],by_id:[2,4,6],perhap:[0,6],perman:[0,2,4],assign:[0,1,2,3,4,5,6],"85a3":5,set_authentication_polici:4,obviou:0,prevent:4,feel:6,number:[0,5,2,3,4,6,7],placehold:[0,6],done:[0,5,2,4,6],construct:[],stdlib:[],blank:0,miss:2,differ:[],superpow:[],script:[0,5,2,3,4,6,7],interact:[],pbkdf2passwordmanag:4,least:[2,6],getservbyport:5,station:[],order_bi:2,statement:[],zeromq:7,scheme:[],store:[2,4],luckili:[0,2,4,6],parc:2,option:[],relationship:[5,3],echo_socket:5,part:[],pars:[0,2,7],logged_in:4,off:[0,7,2,4,6],fred:2,king:[],kind:[0,5,4,6],grew:0,remot:[5,2,4,7],remov:[5,2,4],game:6,reus:[],str:2,relative_to:4,consumpt:[3,7],aclauthorizationpolici:4,payload:0,"_socketobject":5,packag:[],expir:4,larri:2,imagin:[4,6],built:[0,2,3,4,6,7],lib:[0,2],odd:6,self:4,also:[0,1,2,3,4,5,6,7],build:[0,1,2,3,4,5,6,7],textareafield:6,brace:6,distribut:2,kai:2,interpol:[],reach:5,chart:[2,6],most:[0,5,2,3,4,6],plai:[2,4,6],path_info:[],swiftli:[],addr:[0,5],filesystem:[0,3,6],mymodel:[2,4,6],cover:[0,1,2,4,7],clean:[],http_server_at_hom:0,latest:7,wsgi:[],hyper:0,v12:0,session:[],entry_point:2,fine:[0,6],find:[0,5,2,3,4,6,7],access:[0,1,3,4,7],nosql:2,copyright:2,solut:[],"172kb":2,factor:2,smtplib:3,darwin:2,hit:[],unus:2,resent:5,wrinkl:[],"3xx":0,restart:[0,4,6],rfc:[0,7],common:[],nowher:2,wrote:4,certif:[1,6],creator:7,overwhelm:2,"0x1103e3f50":2,af_ipx:5,see:[0,5,2,3,4,6],bare:6,sea:3,arg:2,reserv:[0,5],pyrami:[],someth:[0,2,4,6],particip:1,blog_act:[],topmost:5,won:0,subscript:6,experi:3,altern:[2,7],javascript:6,isol:2,mailbox:0,succeed:[],"31m":4,pymssql:[],both:[0,5,2,3,4,6,7],hiddenfield:4,last:[0,5,2,4,6],delimit:0,context:[],let:[0,5,2,4,6],load:[0,3,4,6],markdown:[3,4],simpli:[0,2,3,4,6],point:[0,5,2,4],instanti:2,header:[],route_url:[4,6],param:4,linux:[0,4],comput:[],throughout:1,xkcd:0,blog:[0,3],empti:[0,5,2,4,6],hellmann:3,runner:[],secret:4,newcom:[],authn:[],rstpep2html:2,"55c0287d4ef21f15b97eb1f107451b88b479bff":4,strategi:[],exercis:[1,3],fire:[0,2,4,6],imag:[0,6],cryptacular:4,append:[0,2,4],coordin:2,understand:[0,1,3,4,7],instructor:[],convers:7,formatd:0,look:[],solid:[1,4,7],histor:[1,7],"while":[0,5,2,3],executemani:[],"54f7e4d":4,homework:[],behavior:[5,2,6],error:[],fun:6,everyon:4,loop:0,engl:[],readi:[0,5,2,4,6],readm:2,itself:2,zopetransactionextens:[],grant:4,belong:[0,5,4],wherein:6,zope:2,conflict:2,b59b7c3:4,communc:5,moment:[5,2,4,6],temporari:6,user:[],robust:4,wherev:[],stack:[],recent:[0,2],travers:[],task:[],find_packag:2,entri:[],spent:5,doodi:6,pickl:2,person:[5,4,6],expens:[5,4],elev:0,connnect:5,five:0,macintosh:0,spend:[5,6],explan:0,make_wsgi_app:2,"__path__":2,shape:1,mysql:2,session05:0,session04:5,session06:[],session01:5,session02:[0,6],cur:[],restructuredtext:2,global_config:[2,4,6],populate_obj:[4,6],armin:7,appli:[3,4,6],input:[],bin:[2,4,6],varchar:2,format:[],big:[],intuit:[],folk:[],server_socket:5,blogcreateform:[],bit:[0,5,2,3,4,6,7],formal:[0,2],httpexcept:6,leisur:7,ipproto_icmp:5,docutil:2,altough:[],manifest:[2,3],collect:[2,6],princip:4,popular:[3,4],a0001:0,often:[0,5,2,7],visibl:3,some:[0,1,2,3,4,5,6,7],back:[0,5,2,3,4,6,7],global:[],understood:5,uidnext:0,sampl:[4,6],ljenv:[2,4,6],scale:4,cgihttpserv:7,sock_dgram:5,pep:[],per:[0,5,4],larg:[],werkzeug:[],machin:[],intial:0,previou:[0,3],authtktauthenticationpolici:4,viabl:2,crlf:0,impos:[],constraint:7,materi:[8,3,7],memori:1,"0x100563c90":5,block:[0,5,4,6],plan:4,supplementari:[],miracl:0,primarili:[],ensur:[0,5,2,4],lesson:7,html5shiv:6,span:4,sock:[0,5],stylesheet:6,fast:2,custom:[],heroku:[],pocoo:[],suit:[3,7],etc:[0,5,2,6],doctyp:[0,6],repeatedli:[5,2],great:[0,7,2,3,6],pwd:2,b60ea2bb70:[],link:[],atol:4,delta:[],line:[0,1,2,4,6],translationstr:2,utf:[0,6],consist:0,cid:[],planet:[],sum:6,highlight:[],similar:[0,2,3],clear:[0,5,3],sesson:0,constant:5,parser:7,chao:4,doesn:[0,5,2,4,6],repres:[0,2,3,6],gecko:0,response_not_found:0,titl:[0,2,6],scrape:3,nam:5,nav:6,librari:[0,1,2,3,4,5,6,7],nice:[0,3,4,6],llvm:2,mongodb:2,meaning:2,csrftoken:0,index_pag:[4,6],algorithm:4,vice:[],mimetyp:0,rst2latex:2,allowedvers:0,discrimin:[],depth:[1,7],came:4,scroll:[],oop:2,getaddrinfo:5,code:[],partial:[],sqlserver:2,pymysql:[],ljshell:6,broader:[],edu:5,sensit:[0,4],elsewher:[5,4],send:[],lower:[5,7,6],aris:2,sent:[0,5,2,3,4,6],charlesproxi:0,spool:0,stackoverflow:0,relev:2,recip:4,magic:6,button:6,hive:[],"try":[],rfc5321:0,particularli:[4,6],hasnochildren:0,pleas:[2,3,7],smaller:5,natur:6,uniqu:[2,4,6],video:7,download:[2,6],carlo:[],click:6,client_address:5,compat:2,index:[0,2,4,6],wahoo:0,compar:[0,4],resembl:6,cell:[],len:[0,5,2],madelin:[],bodi:[0,2,4,6],loadapp:4,intercept:4,logout:[],becom:2,pgbackup:4,convert:[2,4,6],pretti:[0,2],technolog:[5,4],thie:7,chang:[0,2,3,4,6,7],maker:6,chanc:3,firefox:0,parse_request:0,win:0,gatewai:3,"__name__":4,from:[0,1,2,3,4,5,6,7],commun:[],upgrad:4,next:[0,5,2,4,6,7],websit:[2,3,4,6],few:[],usr:2,sort:[],sudo:2,ipoac:5,babi:6,train:[2,6],somesecret:4,account:6,retriev:6,scalabl:2,alic:4,tag:[0,4,6],thin:5,meet:3,fetch:[0,2,4,6],aliv:[0,5],sqlite:[2,4],quickstart:[],tar:2,process:[1,5,2,3,4,6],lock:4,preformat:4,high:2,af_:5,tab:0,tal:[],onlin:[5,2,3,4],cache_max_ag:[2,6],gcc:2,cewing_socket:5,sit:7,client_socket:5,pyramid_jinja2:6,instead:[0,2,4,6],entryeditform:4,chri:7,delai:2,initialzedb:4,attend:1,other_sess:2,"6mb":2,attent:4,tier:4,philosophi:7,physic:[5,6],drop:[5,6],add_al:2,bind:[],correspond:5,element:[0,2,3,6],issu:[],webroot:0,chief:4,allow:[0,1,2,3,4,5,6,7],sendal:[0,5],elif:6,insight:3,bunch:5,uiqj579igrbrebhmjqnth8pffaz2qrj:0,verify_password:4,chosen:[],"0x10046cec0":5,infrastructur:4,bye:0,rat:[],recept:5,greater:7,python:[],auto:[],spell:6,dai:[0,3,6],auth:4,hateoa:7,httplib2:7,front:3,"8a2e":5,tilkov:7,somewher:[4,6],anyth:[2,4],entrycreateform:[4,6],nameerror:0,mode:2,autoincr:4,beneath:4,nearli:2,pygment:4,bump:0,sessionmak:[2,6],meta:6,"static":[],special:[2,3,4,6],out:[],variabl:4,influenc:[],defend:7,stub:[],suitabl:4,rel:6,leverag:4,clone:[5,2,6],red:0,clarifi:2,insid:[0,5,2],workflow:[],frank:6,manipul:2,zodb:2,auth_secret:4,first_lin:0,complianc:4,cri:[0,6],"0x1103d9f10":2,could:[0,2,4,7],lexer:4,ask:[0,5,2],keep:[0,1,2,3,5],length:[0,2,4,6],enforc:7,outsid:[2,4],south:[],softwar:[0,5,2,4,6],pygments_styl:4,qualiti:3,scene:[],echo:[],exact:6,models_valu:2,match_param:[4,6],smallish:5,owner:6,"long":[0,5,2,3,4],licens:[2,7],mkdir:2,system:[1,5,2,4,6,7],wrapper:5,attach:4,imap4_ssl:0,"3f80f":0,termin:[0,5,2,4],"final":[0,1,5,2,3,6],low:1,udp:[5,7],shell:[2,4],fnhg8:[],fnhg5:0,fnhg2:0,fnhg3:0,"8d3":5,dyno:4,textfield:[4,6],nobodi:[],route_nam:[4,6],embodi:[2,4],roberto:6,structur:[1,7,3,6],charact:[2,4,6],sens:6,"782d17e":[],f12:0,bet:[],unstag:2,favorit:0,py2:2,py3:2,deprec:2,mailer:[],myproject:4,have:[],disadvantag:[],need:[0,1,5,2,4,6,7],predic:4,paramiko:7,mangl:0,afraid:[0,2],min:[4,6],runapp:4,which:[0,5,2,3,4,6,7],itsdanger:[],authentication_polici:4,soap:[3,7],singl:[0,1,2,3,4,5,6],unless:5,ds_store:2,deploy:[],whl:2,who:[4,6],oracl:2,discov:0,deploi:[],pyc:2,segment:6,why:[],dens:1,request:[],wtform:[],face:6,pipe:6,build_db:4,deni:4,determin:[0,5,2,3,4,6],fact:[5,3,4,6],jkorpela:0,tolkien:[],text:[0,2,3,4,6],bring:[0,6],rough:2,trivial:[],identityset:2,redirect:0,locat:[0,5,2,4,6],should:[0,1,2,3,4,5,6],jan:[0,5],suppos:7,"3e1cb03b":0,"__tablename__":[2,4],local:[5,2,4,6],hope:7,move:[0,5,2,3],satisfact:4,familiar:[0,1],pypi:2,db8:5,log_buff:0,increas:7,aspen:[],smash:[7,6],blog_upd:[],enabl:[0,1,4],organ:7,rage:0,"0x10e7d6b90":6,stuff:6,"0x1005b8b40":5,contain:[0,5,2,3,4,6],attribut:[2,4,6],view:[],dbsession:[2,4,6],perdido:[],knowledg:[1,2,7],packet:[5,7],mistak:2,closer:2,statu:[2,4],wire:[5,4,6],correctli:[0,6],pattern:[7,2,3,6],tend:2,favor:[],written:[7,3,6],progress:[1,3],neither:7,flickr:4,email:[0,5,2],mysite1:0,sole:[0,5],kei:[2,4,6],job:[0,2,4,6],entir:2,jog:1,permanentflag:0,addit:[],dobb:0,admin:[3,4],trove:3,wsgiref:7,configpars:2,authorization_polici:4,instanc:[2,4],equat:5,wear:0,comment:[0,5,6],typifi:2,lang:6,this_id:6,rfc2616:0,chmod:4,walk:3,solv:[],tuesdai:1,silmarillion:[],quit:[0,5,2,3,4,6,7],divid:[5,2],addition:2,insuffici:0,compon:[],json:[7,3,6],rpclib:7,eloqu:[],immedi:5,treasur:3,sock_stream:5,bulk:2,untrack:2,togeth:[],present:[],ingredi:2,multi:0,plain:[0,2,3,4,6],cursor:[],defin:[5,7,2,6],xyzzi:0,wild:3,dbapi2:2,endblock:[4,6],layer:[0,5,2,7],ripe:3,demo:[],site:[2,3,4,6],inform:[],pastedeploi:2,cherrypi:[],lightweight:7,incom:[],whirl:[5,4],pyramid_chameleon:[2,6],undecid:[],welcom:2,parti:0,began:[],handl:[],demoenv:2,failur:[0,5],http:[],hostnam:5,absorb:2,effect:[],"5xx":0,student:[1,3],decoupl:[],expand:[],pull:[0,2],markupsaf:[],fenced_cod:4,center:0,well:[0,1,2,4,5,7],exampl:[],command:[0,1,2,4,6],choos:[1,6,2,5],undefin:6,usual:[5,2],distanc:5,svn:6,less:[0,5],kramer:4,tcp:[],emtpi:2,web:[],jinja:[],wed:0,nullabl:[4,6],smith:0,add:[],other:[],logger:2,match:[0,5,7,4,6],gmt:0,xmlrpc:[3,7],agnost:[5,6],crud:0,piec:6,arguabl:3,cedar:4,know:[1,5,2,4,6,7],unseen:0,password:[0,4,6],recurs:[],python2:2,insert:[],like:[],success:[0,5],echo_serv:5,lose:2,page:[0,1,2,3,4,6,7],backlog:5,didn:[2,7],captur:[2,6],suppli:4,utmcmd:0,"19t01":4,uidvalid:0,proper:[0,5,6],home:[0,2,4,6],transport:[],tmp:5,guid:7,gethostbyname_ex:5,esr:0,lead:[3,6],interfaceerror:[],broad:1,octet:0,leav:[2,6],blog_view:[],investig:[0,3,6],authz:[],journal:[2,3,4,6],usag:[1,2],facilit:7,host:[0,5,2,4],although:[0,2,6],wtttzy:4,about:[],actual:[0,5,2,4,6],socket:[],column:[2,4],herokuapp:4,datagram:[5,7],carrier:5,includ:[],constructor:5,own:[],washington:5,easy_instal:2,automat:[5,2,6],pcreat:[2,6],merg:[],sock_:5,val:[2,6],retr:0,transfer:[0,4,7],intention:0,appl:2,arg1:4,"var":[0,4],respositori:0,add_url_rul:[],xerox:2,gain:[1,2,3,4],inlin:[5,2],count:2,made:[0,5,2,4,6,7],view_config:[4,6],whether:0,wish:[2,4,7],googlecod:6,displai:[4,6],troubl:7,below:[5,4],limit:5,problem:[],evalu:[],"int":[2,4],dure:3,pid:[4,6],implement:[],ini:[2,4,6],pip:2,duru:2,probabl:[4,6],detail:[],virtual:[0,2],book:6,lookup:[5,6],futur:[5,3],rememb:[0,5,2,4,6],stat:0,mxodbc:[],"class":[],dewei:0,echo_cli:5,log:[0,2,4,6],fiddler2:0,databaseinterfac:[],"_queri":4,syllabu:2,reliabl:5,xmlrpclib:3,bcryptpasswordmanag:4,models_nam:2,portion:6,htmlparser:3},objtypes:{},objnames:{},filenames:["presentations/session05","index","presentations/session01","outline","presentations/session03","presentations/session04","presentations/session02","readings","presentations/index"],titles:["Session 05","Internet Programming with Python","Session 01","Course Outline","Session 03","Session 04","Session 02","Supplementary Course Readings","Course Presentations"],objects:{},titleterms:{wsgi:[3,7],req:[],protocol:[0,5,3,7],entri:4,queri:[],resp:[],all:5,tcp:[5,3,7],syntax:4,time:[0,5],session:[0,5,2,3,4,6,7],sqla:2,skill:[],dynam:[],web:[2,3,7],now:[],tire:[],flask:[],oooop:[],transact:[],configur:4,activ:2,enough:[],send:5,environment:[],add:6,program:1,congratul:[],persist:[3,7],input:6,kick:[],real:0,applic:[5,2,3,4,7],browser:[],rollback:[],get:[5,6],python:[0,1,2,5],safe:[],stop:[],pop3:0,framework:[],asset:6,jinja2:6,characterist:[],requir:1,introduct:2,insert:[],like:0,walkthrough:[],edit:6,simpl:[],revers:[],revert:[],resolv:0,authent:[3,7],server:5,"try":[],bad:[],common:[],quick:[],side:5,view:[7,3,6],respond:5,machin:[],domain:[],set:4,old:[],request:6,batteri:[],second:[],"static":6,connect:5,polish:4,our:[2,6],submit:[0,5],transport:5,out:[],virtualenv:2,separ:2,what:[0,1],forcibl:[],learn:0,databas:2,asid:[],slide:[],content:0,state:[],irl:[],languag:0,internet:[1,5],django:[3,7],"new":[],method:0,refer:[1,3],cgi:[3,7],"break":[0,5],run:[5,4],extend:3,gener:[],preprar:3,setup:[],tdd:[],debug:[],step:0,orm:2,logout:4,dictionari:[],address:5,put:5,problem:[],valu:[],addit:[],unsaf:[],search:1,socket:[5,3,7],http:[0,6],construct:5,filter:[],mvc:[7,2,3,6],context:[],action:[],modif:[],implement:[0,4],mean:[],fix:[],first:[0,2,4,6],wiki:[],own:[],prerequisit:1,render:[7,3,6],can:[],overview:1,app:4,sql:[],terminolog:2,echo:[],header:0,unix:[],api:[3,7],todai:[],famili:5,wrap:4,instal:2,your:[0,5,4,6],speak:0,code:[],authz:4,differ:[],git:[],supplementari:7,commun:5,test:[0,5],interact:[2,6],three:2,messag:5,custom:5,compon:2,few:0,heroku:4,much:[],mime:0,includ:[],statement:[],basic:[0,3,6],forward:[],master:[],popul:[],type:[0,5],start:2,authn:4,"function":[],introspect:[],idempot:[],form:[3,7],about:2,schema:[],part:6,link:5,togeth:5,why:2,virtuelenv:2,imap:0,present:[8,6],serv:0,word:2,look:0,provid:4,prepar:[3,4,6],outlin:3,project:2,url:[],express:[],homework:[0,5,2,6],error:0,login:4,anonym:4,more:[],html:[],expect:1,control:6,listen:5,pyramid:[7,2,3,6],comput:[0,5],virtualenvwrapp:[],creat:[5,2],deactiv:2,demo:[],respons:[0,6],smtp:0,populatedb:[],templat:6,wtform:6,packag:2,intro:[],have:0,further:[0,5],incom:5,work:2,check:[],option:[],result:[],again:[],decor:[],cours:[8,3,7],develop:[],goal:[],secur:4,receiv:5,rout:6,format:4,detail:[],client:5,note:[],preserv:[],other:[],branch:[],sqlite3:[],verifi:[],you:[],concern:2,parameter:[],accept:5,life:[],updat:[],fork:[],map:0,finish:5,resourc:0,clean:[5,2],deploy:[7,3,4,6],"class":1,object:[],sqlalchemi:2,highlight:4,solut:[],user:6,deploi:[3,4],hide:4,data:[7,3,6],stack:5,util:[],handl:0,task:5,practic:[],third:[],tutori:[],read:7,bind:5,flow:5,uri:0,rule:[],doe:0,inform:5,exampl:0,thi:1,repli:5,far:[],mashup:[3,7],model:[2,6],sesstion:[3,7],make:6}}) \ No newline at end of file diff --git a/slides/_sources/presentations/session03.txt b/slides/_sources/presentations/session03.txt index bf761e7d..7ec40569 100644 --- a/slides/_sources/presentations/session03.txt +++ b/slides/_sources/presentations/session03.txt @@ -89,7 +89,7 @@ Questions About the Homework? @classmethod def by_name(cls, name): - return DBSession.query(User).filter(User.name == name).first() + return DBSession.query(cls).filter(cls.name == name).first() `View this model online `_ @@ -511,7 +511,7 @@ The job of comparing passwords should belong to the ``User`` object. .. code-block:: python # add this import at the top - # from cryptacular.pbkdf2 import PBKDF2PassordManager as Manager + # from cryptacular.pbkdf2 import PBKDF2PasswordManager as Manager from cryptacular.bcrypt import BCRYPTPasswordManager as Manager # add this method to the User class: @@ -535,7 +535,7 @@ We'll also need to have a user for our system. .. code-block:: python # add the import - # from cryptacular.pbkdf2 import PBKDF2PassordManager as Manager + # from cryptacular.pbkdf2 import PBKDF2PasswordManager as Manager from cryptacular.bcrypt import BCRYPTPasswordManager as Manager from ..models import User # and update the main function like so: @@ -622,6 +622,10 @@ It would be nice to use the form library again to make a login form. .. nextslide:: Login View in ``learning_journal/views.py`` +.. ifnotslides:: + + Next, we'll create a login view in ``learning_journal/views.py`` + .. code-block:: python # new imports: @@ -689,7 +693,7 @@ logged in, if any. .. nextslide:: Update ``list.jinja2`` -Now we have to update our template to display the form, *if it is there* +Now we have to update the template for the ``index_page`` to display the form, *if it is there* .. rst-class:: build .. container:: @@ -709,7 +713,7 @@ Now we have to update our template to display the form, *if it is there* {% endfor %}

    - {% else %} + {% endif %} {% if entries %} ... diff --git a/slides/presentations/session03.html b/slides/presentations/session03.html index 04c10293..7a67e77c 100644 --- a/slides/presentations/session03.html +++ b/slides/presentations/session03.html @@ -189,7 +189,7 @@

    A Working User Model

    @classmethod def by_name(cls, name): - return DBSession.query(User).filter(User.name == name).first() + return DBSession.query(cls).filter(cls.name == name).first()

    View this model online

    @@ -628,7 +628,7 @@

    Comparing Passwords

    Open learning_journal/models.py and add the following to the User class:

    # add this import at the top
    -# from cryptacular.pbkdf2 import PBKDF2PassordManager as Manager
    +# from cryptacular.pbkdf2 import PBKDF2PasswordManager as Manager
     from cryptacular.bcrypt import BCRYPTPasswordManager as Manager
     
     # add this method to the User class:
    @@ -655,7 +655,7 @@ 

    Create a User

    We can leverage the database initialization script to handle this.

    Open learning_journal/scripts/initialzedb.py:

    # add the import
    -# from cryptacular.pbkdf2 import PBKDF2PassordManager as Manager
    +# from cryptacular.pbkdf2 import PBKDF2PasswordManager as Manager
     from cryptacular.bcrypt import BCRYPTPasswordManager as Manager
     from ..models import User
     # and update the main function like so:
    @@ -836,7 +836,7 @@ 

    Updating index_pageUpdate list.jinja2

    -

    Now we have to update our template to display the form, if it is there

    +

    Now we have to update the template for the index_page to display the form, if it is there

    {% block body %}
     {% if login_form %}
    @@ -851,7 +851,7 @@ 

    Update list.jinja2 {% endfor %} <p><input type="submit" name="Log In" value="Log In"/></p> </form></aside> -{% else %} +{% endif %} {% if entries %} ...

    diff --git a/slides/searchindex.js b/slides/searchindex.js index 0a5583be..7bfca730 100644 --- a/slides/searchindex.js +++ b/slides/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:42,terms:{interchang:2,four:0,database_url:4,prefix:[0,5],af_rout:5,skeleton:[5,2],stub:[],aug:2,sorri:2,ipproto_raw:5,crisew:5,concret:2,dest_dir:2,worth:[2,6],digit:[0,6],everi:[0,2],govern:0,cmd:0,herbert:6,imaplib:0,verif:4,direct:[0,2],second:[],nthi:6,even:[0,2],list_of_tcp_and_udp_port_numb:5,"new":[],net:0,metadata:2,ipproto_tcp:5,behavior:[5,2,6],never:[5,2],here:[0,5,2,4,6],"4xx":0,path:[],interpret:[0,5,2,6],credit:2,webfact:0,permit:0,golden:6,heroku_postgresql_maroon_url:4,wikimedia:[2,6],txt:[0,5,2,4],yore:6,describ:5,would:[0,2,4,6],init:2,dnt:0,call:[0,5,2,4,6],admin_password:4,typo:2,recommend:4,strip_filt:6,tell:[0,5,2,4],relat:2,panach:6,notic:[0,5,2,4,6],phone:6,unpack:2,must:[0,5,2,4,6],af_unix:5,join:0,restor:[2,4],work:[],conceptu:6,norm:0,root:4,defer:4,repoz:2,give:[5,2,4],smtp:[],indic:0,want:[0,2,4,6],dele:0,end:[0,5,4,6],learning_journ:[],frobozz:0,how:[],sever:4,env:2,interview:0,verifi:[],config:[],updat:[],anon_1:2,earlier:[0,2,4],superus:2,diagram:2,befor:[0,5,2,4,6],wrong:2,demonstr:[0,2],domin:2,classmethod:[2,4,6],authzpolici:4,minim:0,greet:0,think:[5,2,4,6],alias:5,scoped_sess:2,environ:[],incorpor:4,enter:[0,6],engine_from_config:[2,4,6],order:[2,4,6],hob7v7guwir4n1v:4,oper:[5,4,6],over:[5,2,6],fam:5,becaus:[0,2,4,6],jpeg:0,privileg:2,keyboard:0,flexibl:2,vari:[0,5],img:0,fix:[0,2,6],simple_cli:0,toolbelt:[4,6],better:[5,2,4],offic:0,howdi:6,easier:[2,6],them:[0,5,2,4,6],thei:[0,5,2,4,6],safe:[],"break":[],sqlite3:2,promis:5,initializedb:[],choic:[5,2],getservbynam:5,rocki:4,each:[0,5,2,4],debug:[],went:[0,6],webmast:0,bone:6,mean:[],logo:6,network:[5,6],goe:[2,6],god:2,dsn:0,got:[0,2,4,6],forth:0,rail:0,nightmar:2,situat:[0,2],free:[4,6],standard:[0,5,2,4],hand:[4,6],s3cr3t:4,static_url:6,filter:[],mvc:[],isn:[0,6],confus:[5,6],user:[],rang:[0,6],render:[],independ:[0,2],hook:2,instruct:[5,2],alreadi:[0,5,2,4,6],messag:[],fantast:2,primari:[2,6],top:[2,4,6],"0x1103e38d0":2,sometim:[0,2],imap4rev1:0,too:[0,5,2,6],tom:2,my_view:6,tool:[0,5,2,4],setuptool:2,took:2,incur:4,keyword:[4,6],provid:[],tree:[2,4],project:[],matter:4,rfc2616:0,minut:[0,5,6],rad:5,ran:[0,2],modern:2,mine:0,raw:0,af_sna:5,pylon:2,increment:[],"__main__":4,seen:[0,5,2,4,6],seem:4,seek:[2,4],latter:2,thorough:6,"0x1103e3fd0":2,fnhg5:0,transmit:2,hypertext_transfer_protocol:0,simplifi:0,endfor:[4,6],sock_dgram:5,though:[0,4],usernam:[0,4,6],object:[],guess_typ:0,regular:2,alan:[2,6],bsd:5,models_id:2,typ:5,maria:5,tradit:6,don:[0,5,2,4,6],doc:[0,2,4],doe:[],declar:[2,6],passwordfield:4,sign_in_out:4,dot:6,opposit:6,random:4,syntax:[],radio:6,protocol:[],edit_entri:[],involv:4,absolut:6,menu:0,explain:2,configur:[],apach:0,theme:[],matchdict:[],folder:[5,2,4,6],resolve_uri:0,patter:6,stop:[],bar:[0,5,6],ietf:0,baz:0,"public":[4,6],buffsiz:5,reload:[0,4],told:4,steal:[2,4],respond:[],get_const:5,result:[],respons:[],fail:[0,5,4],best:[2,4],awar:4,pythoncert:[2,6],databas:[],wikipedia:[0,5,2],mysql_length:2,figur:[5,2],score:2,outstand:6,pbkdf2passordmanag:4,awai:2,approach:2,attribut:[2,4,6],extend:[4,6],extens:[0,4],wear:0,protect:0,accident:5,howev:[2,6],against:[0,4,6],logic:[2,4,6],login:[],seri:2,com:[0,5,2,4,6],get_appset:[2,4,6],assur:5,trust:2,assum:[5,2],speak:[],chrome:0,add_rout:[2,4,6],been:[2,4,6],much:[],redeploi:4,basic:[],quickli:[0,2],rfc5321:0,setup_log:[2,6],telnet:5,ani:[0,5,2,4,6],"catch":0,ugli:0,ident:4,servic:[0,5,4],properti:[5,4],commerci:2,neat:0,seven:0,pyramid:[],af_appletalk:5,toolkit:0,fnhg:0,tediou:2,conn:[0,5],prior:4,perform:[2,6],suggest:[0,4],make:[],couchdb:2,complex:2,split:0,complet:[],rfc822:0,nic:5,hang:0,xyzzi:0,rais:[0,5],engin:[2,4,6],"548kb":2,thu:5,depli:[],hypothet:2,inherit:[2,6],client:[],thi:[0,1,2,3,4,5,6,7,8],endif:[4,6],gzip:0,everyth:[0,2,4,6],moreov:0,left:[2,4],identifi:[0,6],just:[0,5,2,4,6],human:[0,6],yet:[0,5,2,4,6],languag:[],alchemi:2,easi:[2,4,6],shout:6,"8bitmim":0,httpfound:[4,6],els:[0,2,4,6],hat:0,gave:2,opt:0,applic:[],preserv:2,parse_var:2,render_markdown:4,server_socket:5,elabor:4,enrypt:[],apart:6,imap4_port:0,response_method_not_allow:0,specif:[5,2,4,6],deprec:2,reload_templ:2,arbitrari:[5,2,4],manual:2,hung:0,install_requir:2,underli:5,www:[0,5],right:[0,4,6],old:2,deal:5,nfrom:2,intern:0,successfulli:2,transmiss:[0,5],total:4,http_server_at_hom:0,subclass:[],track:[],exectut:2,condit:0,foo:[0,5,4,6],localhost:[0,4,6],mailgat:0,particular:[2,4,6],confer:[],repositori:[5,2,4,6],post:[0,4,6],"super":0,chapter:2,postgresql:[],surround:6,dinner:0,commit:[],produc:5,encod:[0,4],bound:[5,2],down:[4,6],creativ:[2,6],wrap:[],storag:[0,2],"0db8":5,wai:[0,2,4,6],support:[0,2,4,6],why:[],avail:[5,2,4,6],reli:4,request_method:4,editor:[],get_address_info:5,rcpt:0,internet_protocol_suit:5,head:[0,5,4,6],medium:5,form:[],offer:[2,6],sqlalchemi:[],hear:5,icmp:5,codehilit:4,attr:6,type:[],maximum:5,until:[5,2],intitalizedb:2,featur:[2,4],af_decnet:5,"abstract":2,decrypt:0,proven:2,exist:[0,2,4,6],check:[],assembl:6,encrypt:[],mashup:[],excel:6,role:6,jone:0,test:[],webob:2,roll:4,intend:[5,2],af_unspec:5,consid:[0,2,6],receiv:[],longer:5,bullet:4,sock:[0,5],pbkdf2:4,initialize_learning_journal_db:[],bottom:5,wtttzy:4,push:[0,2,4],osx:[0,4],concept:[5,2,4],skip:2,consum:5,invent:2,row:[2,4],depend:[],graph:6,readabl:[0,6],unpython:2,a0004:0,a0005:0,a0006:0,a0001:0,a0002:0,a0003:0,addon:4,isinst:[],sourc:[0,5,2,4,6],string:[],congest:5,lru:2,kitten:2,ydood:6,brows:6,administr:[],level:[2,4],did:[0,5,2,6],dig:6,ipproto_udp:5,item:[2,6],team:2,cooki:[0,4],imap4:0,dir:[0,5],declarative_bas:2,upper:6,slower:5,sign:[0,4],cost:4,port:[0,5,4],procfil:[],appear:[4,6],current:[5,2],rst2xml:2,"3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4":4,gener:[0,5,2,4,6],explicitli:2,address:[],along:[],wait:[0,5],shift:0,queue:5,bob:[0,2],commonli:5,ourselv:[0,4],ipc:5,semant:5,session1:5,extra:5,modul:[0,5,2,4],prefer:0,backtick:[],marker:6,instal:[],smallish:5,market:2,types_map:0,prove:4,visit:[4,6],todai:[0,5,4,6],live:[5,2,4],criteria:[0,2],msg:5,plug:0,pyarmid:[],visual:0,appendix:0,oop:2,obj:[2,6],behalf:6,prepar:[],pretend:0,uniqu:[2,4,6],whatev:[5,6],purpos:[0,2,4,6],boilerpl:2,stream:[5,2],predict:0,agent:0,topic:6,app_factori:2,occur:5,entryeditform:4,other_sess:2,multipl:2,charset:[0,6],write:[0,5,2,4,6],anyon:[4,6],familiar:0,xhtml:0,product:[2,4],max:[0,4,6],clone:[5,2,6],mac:0,models_valu:2,data:[],classroom:2,gethostnam:5,practic:0,divid:[5,2],explicit:6,predic:4,mangl:0,inform:[],"switch":2,tailor:0,combin:[2,4,6],callabl:6,talk:[0,5,2,6],ydwoh:6,gitignor:2,still:[0,2,6],dynam:[0,6],config_uri:[2,4,6],group:[5,2],"4z6rvnhte21mpljw5veive0eg57gn":4,polici:4,sec10:0,platform:4,window:[0,2,4],curli:6,mail:0,main:[0,2,4,6],non:0,initi:[0,2,4],answer:[0,5,6],safari:0,half:5,now:[0,5,2,4,6],discuss:[5,2,6],term:2,name:[0,5,2,4,6],simpl:[0,5,2,4,6],interpr:2,separ:[],magazin:6,compil:4,domain:[],"0x105849b90":6,replac:[4,6],individu:[5,2,6],continu:[0,5,2,4],happen:[],accomplish:0,space:0,profil:5,correct:[0,5,6],"0x1005b8b40":5,tmpl:6,myproject:4,after:[2,6],pseudocod:0,state:[2,4],ch05s03:0,argv:[2,4],orm:[],argn:4,org:[0,5],"byte":5,card:5,care:[0,5],sign_in:4,utmcsr:0,default_permiss:4,refus:5,thing:[0,2,4,6],place:[5,2,4,6],imposs:2,frequent:2,lambda:6,origin:2,directli:[5,2,6],onc:[0,5,2,4,6],yourself:0,"long":[0,5,2,4],open:[5,4,6],size:[0,5,4],urin:0,given:[0,5,2,6],sheet:6,convent:0,imap4_ssl_port:0,eachoth:2,draft:0,conveni:2,friend:4,includ:[],copi:[0,4,6],huh:0,artifact:2,github:[0,5,2,4,6],mostli:[0,5],attempt:5,than:[0,5,2,4,6],png:0,serv:[],were:[5,2],posit:5,"5xx":0,browser:[],sai:[0,2,4],pro:5,argument:[0,5,2,4,6],larri:2,deliv:[],notimplementederror:0,saw:2,shtml:0,date:[0,2],ipproto_:5,note:[0,5,2,4,6],take:[0,5,2,4,6],green:0,bcrypt:4,noth:[2,4,6],channel:[0,2],begin:[0,5,2,4,6],sure:[5,2,4,6],pain:[2,4],trace:2,normal:2,buffer:[0,5],price:4,pair:[2,6],homepag:[],utmccn:0,later:0,"8mb":2,create_al:2,shortnam:4,gracefulli:0,show:[0,2,4,6],my_index:2,constitu:6,permiss:[],xml:[0,2,6],onli:[0,2,4,6],slow:5,"true":[0,5,2,4,6],transact:[5,2,4],enough:[0,2,4],dict:[5,2],analyt:4,startswith:5,nearli:2,variou:[2,6],mung:0,clang:2,ssl:0,cannot:[5,6],ssh:5,requir:[],entryfactori:4,authenticated_userid:4,where:[],wiki:[],n10:6,reserv:[0,5],concern:[],detect:4,review:[0,5,2,4,6],enumer:4,label:[4,6],getattr:5,between:[0,5,2],"import":[0,5,2,4,6],across:5,parent:2,elladan:5,tut:0,cycl:[2,6],come:[0,2,4,6],contract:[],tutori:6,wherin:2,mani:[0,5,2,4,6],among:[5,2,6],color:4,imad1:0,artu:0,coupl:[5,2],rebuild:[],mark:4,evangelista:[2,6],avian:5,"1xx":0,those:[0,2],"case":[0,2,6],plugin:[],cast:2,outcom:[],certainli:6,python_web:[2,6],ehlo:0,advantag:[2,4],stdout:[5,2],canon:5,worri:[5,4],blah:0,smalltalk:2,develop:[0,2,4,6],proto:5,cc0:[2,6],same:[0,5,2,4,6],html:[0,4,6],pai:4,document:[0,1,2,3,4,5,6,7,8],week:[0,5,2,4,6],finish:[],assist:2,someon:4,driven:[0,6],capabl:[],add_rount:4,improv:[0,2,4],appropri:[5,4,6],"__acl__":4,markup:4,without:[5,2,6],model:[],execut:[],when:[0,5,2,4,6],rest:[0,2,4],interrupt:0,kill:[0,2],aspect:[2,4,6],heffalump:5,hint:0,except:[0,5,2],littl:[4,6],blog:0,blob:4,vulner:0,real:[],tranmiss:5,around:[5,4,6],makin:6,traffic:0,mon:0,redqueen:0,socket_tool:5,intel:0,whitespac:0,integ:[5,2,4],server:[],benefit:[0,5],either:[0,6],cascad:6,get_payload:[],output:[0,5,4],manag:[5,2,4],fulfil:4,ipproto_ip:5,definit:6,"2xx":0,exit:2,posgresql:4,notabl:0,refer:[5,2,6],af_inet6:5,power:[5,2,4,6],broken:0,regexp:6,src:6,deflat:0,central:2,acl:4,microframework:2,"19t01":4,mytempl:[2,6],console_script:2,inbox:0,strip:6,igmp:5,hew:[],buffer_s:5,httpnotfound:[4,6],her:4,set_authorization_polici:4,aren:[2,4],start:[],interfac:[0,5,2,4],ipv4:5,lot:[0,2,6],ipv6:5,"0x10b075ed0":2,machin:[],hei:5,index_pag:[],tupl:5,client_address:5,categor:0,freddi:6,pull:[0,2],dirti:2,possibl:[5,6],"default":[5,2,4,6],expect:[0,2,6],gone:2,uid:0,creat:[],certain:[0,5,2],deep:4,strongli:4,intro:[],file:[],fill:[4,6],again:[0,5,2,4,6],googl:[5,2],compel:2,field:[2,4,6],valid:[0,4,6],pathnam:[0,5],you:[],juic:6,sequenc:0,symbol:[5,6],briefli:6,transceiv:5,reduc:2,"1b6":0,directori:[0,2,4,6],descript:[5,2],potenti:4,escap:4,represent:[5,2],all:[],forget:4,forbidden:4,scalar:2,abil:[0,2],follow:[0,5,2,4,6],disk:0,content:[],af_inet:5,articl:[2,4,6],tail:4,introduc:[2,6],liter:2,chameleon:6,far:[5,2],faq:0,util:[],verb:0,mechan:4,fall:2,veri:[0,5,2,4,6],ticket:4,egg_info:2,list:[],last_nam:6,adjust:[],stderr:0,small:[],past:[2,4],design:[],pass:[],further:[],by_nam:4,what:[],section:[0,2,6],abl:[0,2,4,6],delet:[0,4],version:[0,2,4],primary_kei:[2,4],intersect:6,method:[],full:2,hash:4,trunk:6,goodby:0,strong:[4,6],modifi:0,valu:[],search:[0,6],ahead:[5,4,6],sensit:[0,4],pick:[],action:[5,2,4,6],add_static_view:[2,6],via:[],filenam:0,href:[4,6],establish:5,select:[0,2],distinct:0,ctrl:0,regist:[],two:[0,5,2,4,6],zopetransactionextens:[],taken:4,satisfact:4,more:[],flaw:6,mozilla:[0,6],flag:[0,5,4],jsonp:6,known:[5,4],cach:[0,2],none:[0,5,2,4,6],endpoint:[0,5],hour:[0,5,6],dev:4,venusian:2,remain:4,learn:[],rst2html:2,def:[0,5,2,4,6],ndate:5,factori:[],prompt:[5,2],scan:[2,6],challeng:[0,4],registr:4,share:[],accept:[],explor:[5,2],hilight:[],phrase:[2,6],login_form:4,goal:2,first_nam:6,secur:[],rather:0,anoth:[5,2,4,6],comfort:6,message_from_str:[],"__init__":[2,4,6],csv:[2,6],loginform:4,css:[],unabl:4,"545kb":2,resourc:[],referenc:6,okai:[0,2],"short":[],footer:6,author:4,django:2,caus:2,egg:2,translationstr:2,checkbox:6,help:[0,5,2,6],authorization_polici:4,mainthread:[2,4],soon:[5,6],through:[0,2,4,6],pane:0,style:[],psycopg2:[2,4],pserv:[4,6],might:[0,5,2,6],pce:6,recip:4,good:[0,2,4],"return":[],pollut:2,cew:2,framework:[2,4,6],maildrop:0,gethostbynam:5,msg_part:5,eventu:2,authent:[0,4],easili:[2,6],http_server:0,compris:2,found:[0,2,6],unicod:[2,4,6],joel:4,hard:[2,4],idea:[0,5,2],realli:[0,5,4,6],connect:[],blog_creat:[],beyond:4,orient:2,ftp:5,publish:2,research:2,bubbl:6,etag:0,authnpolici:4,print:[0,5,2,4,6],uwpc:[2,6],"__utmz":0,postgr:4,proxi:0,uncommit:2,advanc:0,new_model:2,differ:[],reason:[0,6],base:[],put:[],"__utma":0,recv:[0,5],bash:4,by_id:[2,4,6],perhap:[0,6],assign:[0,5,2,4,6],set_authentication_polici:4,obviou:0,prevent:4,feel:6,number:[0,5,2,4,6],placehold:[0,6],done:[],construct:[],blank:0,miss:2,guess:0,script:[],interact:[],least:[2,6],getservbyport:5,statement:2,store:[2,4],luckili:[0,2,4,6],parc:2,option:[],relationship:5,behind:2,echo_socket:5,part:[],pars:[],logged_in:4,off:[0,2,4,6],fred:2,kind:[0,5,4,6],grew:0,remot:[5,2,4],remov:[5,2,4],str:2,relative_to:4,aclauthorizationpolici:4,payload:0,"_socketobject":5,packag:[],expir:4,properli:[0,6],imagin:[4,6],built:[0,2,4,6],lib:[0,2],self:4,also:[0,5,2,4,6],build:[],textareafield:6,brace:6,distribut:2,kai:2,previou:0,reach:5,chart:[2,6],most:[0,5,2,4,6],"0x100563c90":5,plan:4,addr:[0,5],mymodel:[2,4,6],cover:[0,2,4],wsgi:[2,4],hyper:0,v12:0,session:[],particularli:[4,6],fine:[0,6],find:[0,5,2,4,6],nosql:2,copyright:2,solut:[],"172kb":2,factor:2,darwin:2,unus:2,resent:5,"3xx":0,restart:[0,4,6],rfc:0,common:[],nowher:2,wrote:4,certif:6,set:[],overwhelm:2,"0x1103e3f50":2,af_ipx:5,see:[0,5,2,4,6],bare:6,arg:2,close:[0,5,6],pyrami:[],uw_pc:[],someth:[0,2,4,6],blog_act:[],topmost:5,won:0,subscript:6,pastedeploi:2,sole:[0,5],isol:2,mailbox:0,succeed:[],"31m":4,both:[0,5,2,4,6],hiddenfield:4,delimit:0,unstag:2,logout:[],load:[0,4,6],markdown:[],simpli:[0,2,4,6],point:[0,5,2,4],instanti:2,header:[],route_url:[4,6],param:4,linux:[0,4],mistak:2,xkcd:0,authz:[],empti:[0,5,2,4,6],pgbackup:4,retr:0,secret:4,authn:[],rstpep2html:2,"55c0287d4ef21f15b97eb1f107451b88b479bff":4,fire:[0,2,4,6],imag:[0,6],cryptacular:4,coordin:2,understand:[0,4],convers:[],formatd:0,look:[],solid:4,batch:2,"while":[0,5,2],"54f7e4d":4,homework:[],abov:[0,5,2,4],error:[],fun:6,everyon:4,loop:0,readi:[0,5,2,4,6],readm:2,itself:2,"3f80f":0,decor:6,grant:4,belong:[0,5,4],wherein:6,zope:2,conflict:2,b59b7c3:4,communc:5,moment:[5,2,4,6],temporari:6,"__or__":5,robust:4,chang:[],recent:[0,2],lower:[5,6],task:[],find_packag:2,entri:[],spent:5,doodi:6,pickl:2,person:[5,4,6],expens:[5,4],elev:0,connnect:5,cedar:4,macintosh:0,spend:[5,6],explan:0,make_wsgi_app:2,"__path__":2,mysql:2,session05:0,session04:5,session01:5,session02:[0,6],restructuredtext:2,global_config:[2,4,6],populate_obj:[4,6],appli:[4,6],input:[],bin:[2,4,6],varchar:2,format:[],big:[],response_ok:0,game:6,blogcreateform:[],bit:[],formal:[0,2],httpexcept:6,an_id:[],ipproto_icmp:5,docutil:2,manifest:2,collect:[2,6],princip:4,popular:4,often:[0,5,2],some:[0,5,2,4,6],back:[0,5,2,4,6],understood:5,uidnext:0,sampl:[4,6],ljenv:[2,4,6],per:[0,5,4],larg:[],cgi:[],intial:0,run:[],authtktauthenticationpolici:4,viabl:2,crlf:0,plai:[2,4,6],block:[],miracl:0,ensur:[0,5,2,4],html5shiv:6,span:4,question:[0,2,4,6],stylesheet:6,fast:2,heroku:[],prettier:6,doctyp:[0,6],repeatedli:[5,2],pwd:2,link:[],atol:4,line:[0,2,4,6],info:[5,2,4],utf:[0,6],consist:0,sum:6,similar:[0,2],clear:[0,5],sesson:0,constant:5,chao:4,doesn:[0,5,2,4,6],repres:[0,2,6],gecko:0,response_not_found:0,titl:[0,2,6],nam:5,nav:6,nice:[0,4,6],llvm:2,mongodb:2,meaning:2,csrftoken:0,svn:6,algorithm:4,mimetyp:0,rst2latex:2,allowedvers:0,discrimin:[],came:4,hello:[0,6],getaddrinfo:5,code:[],queri:[],sqlserver:2,edu:5,bathtim:6,elsewher:[5,4],send:[],aris:2,sent:[0,5,2,4,6],charlesproxi:0,rollback:2,spool:0,stackoverflow:0,relev:2,tri:6,magic:6,button:6,"try":[],race:[4,6],entry_point:2,hasnochildren:0,pleas:2,smaller:5,natur:6,download:[2,6],odd:6,click:6,append:[0,2,4],compat:2,index:[0,2,4,6],wahoo:0,compar:[],resembl:6,can:[],len:[0,5,2],bodi:[0,2,4,6],loadapp:4,intercept:4,let:[0,5,2,4,6],becom:2,sinc:[5,2,6],great:[0,2,6],pretti:[0,2],technolog:[5,4],typic:2,maker:6,firefox:0,ago:[5,4],parse_request:0,win:0,app:[],api:[],"__name__":4,from:[0,5,2,4,6],upgrad:4,next:[0,5,2,4,6],websit:[2,4,6],few:[],usr:2,sudo:2,ipoac:5,babi:6,train:[2,6],somesecret:4,account:6,retriev:6,scalabl:2,alic:4,tag:[0,4,6],thin:5,fetch:[0,2,4,6],aliv:[0,5],control:[],sqlite:[2,4],tar:2,process:[5,2,4,6],lock:4,preformat:4,high:2,af_:5,tab:0,onlin:[5,2,4],cache_max_ag:[2,6],gcc:2,cewing_socket:5,client_socket:5,pyramid_jinja2:6,instead:[0,2,4,6],stand:[2,6],delai:2,initialzedb:4,alwai:[0,5,2,4],"6mb":2,attent:4,tier:4,physic:[5,6],drop:[5,6],add_al:2,bind:[],correspond:5,element:[0,2,6],webroot:0,runapp:[],allow:[0,5,2,4,6],sendal:[0,5],elif:6,move:[0,5,2],bunch:5,uiqj579igrbrebhmjqnth8pffaz2qrj:0,verify_password:4,"0x10046cec0":5,infrastructur:4,bye:0,recept:5,handl:[],demoenv:2,spell:6,dai:[0,6],auth:4,"8a2e":5,somewher:[4,6],anyth:[2,4],edit:[],entrycreateform:[4,6],nameerror:0,slide:[8,1,3,7],mode:2,autoincr:4,beneath:4,pygment:4,bump:0,sessionmak:[2,6],meta:6,"static":[],our:[],special:[2,4,6],out:[],variabl:4,categori:2,suitabl:4,rel:6,dive:4,red:0,clarifi:2,insid:[0,5,2],frank:6,manipul:2,zodb:2,auth_secret:4,first_lin:0,complianc:4,cri:[0,6],"0x1103d9f10":2,could:[0,2,4],lexer:4,ask:[0,5,2],keep:[0,5,2],length:[0,2,4,6],outsid:[2,4],waitress:4,softwar:[0,5,2,4,6],pygments_styl:4,echo:[],exact:6,mai:[0,5,2,4],match_param:[4,6],owner:6,licens:2,mkdir:2,system:[],wrapper:5,attach:4,imap4_ssl:0,termin:[0,5,2,4],"final":[0,5,2,6],udp:5,shell:[],fnhg8:[],shelf:2,fnhg2:0,fnhg3:0,"8d3":5,dyno:4,textfield:[4,6],exactli:[0,5,6],route_nam:[4,6],embodi:[2,4],roberto:6,charact:[2,4,6],sens:6,f12:0,favorit:0,py2:2,py3:2,respositori:0,requri:4,have:[],tabl:[],need:[0,5,2,4,6],turn:[0,2,4,6],afraid:[0,2],min:[4,6],rout:[],chief:4,which:[0,5,2,4,6],authentication_polici:4,singl:[0,5,2,4,6],unless:5,ds_store:2,whl:2,who:[4,6],oracl:2,discov:0,deploi:[],pyc:2,segment:6,payment:4,url:[],request:[],face:6,pipe:6,build_db:4,deni:4,determin:[],fact:[5,4,6],jkorpela:0,text:[0,2,4,6],bring:[0,6],rough:2,identityset:2,redirect:0,locat:[0,5,2,4,6],should:[0,5,2,4,6],jan:[0,5],"3e1cb03b":0,"__tablename__":[2,4],local:[5,2,4,6],notat:6,convert:[2,4,6],pypi:2,db8:5,log_buff:0,smash:6,blog_upd:[],enabl:[0,4],rage:0,"0x10e7d6b90":6,stuff:6,she:4,contain:[0,1,2,3,4,5,6,7,8],paster:[2,6],view:[],dbsession:[2,4,6],knowledg:2,packet:5,closer:2,statu:[2,4],wire:[5,4,6],correctli:[0,6],tend:2,written:6,flickr:4,email:[0,5,2],mysite1:0,javascript:6,kei:[2,4,6],job:[0,2,4,6],entir:2,permanentflag:0,addit:[],revers:[5,6],dobb:0,admin:4,configpars:2,etc:[0,5,2,6],instanc:[2,4],equat:5,html5:6,comment:[0,5,6],typifi:2,lang:6,this_id:6,arriv:6,chmod:4,quit:[0,5,2,4,6],addition:2,insuffici:0,json:6,immedi:5,sock_stream:5,bulk:2,untrack:2,togeth:[],ingredi:2,multi:0,plain:[0,2,4,6],defin:[],dbapi2:2,endblock:[4,6],layer:[0,5,2],site:[2,4,6],incom:[],whirl:[5,4],pyramid_chameleon:[2,6],welcom:2,parti:0,failur:[0,5],http:[],hostnam:5,absorb:2,"85a3":5,expand:[],fenced_cod:4,center:0,well:[0,5,2,4],exampl:[],command:[0,2,4,6],filesystem:[0,6],undefin:6,usual:[5,2],distanc:5,less:[0,5],kramer:4,emtpi:2,web:[],jinja:[],wed:0,nullabl:[4,6],smith:0,add:[],book:6,logger:2,match:[],gmt:0,agnost:[5,6],crud:0,piec:6,five:0,know:[5,2,4,6],unseen:0,password:[],python2:2,insert:4,like:[],success:[0,5],echo_serv:5,lose:2,page:[],backlog:5,didn:2,specifi:6,captur:[2,6],suppli:4,utmcmd:0,uidvalid:0,proper:[0,5,6],home:[0,2,4,6],librari:[0,5,2,4,6],tmp:5,gethostbyname_ex:5,esr:0,lead:6,octet:0,"16x16":[],leav:[2,6],blog_view:[],investig:[0,6],journal:[],usag:2,host:[0,5,2,4],although:[0,2,6],about:[],actual:[0,5,2,4,6],socket:[],world:[2,6],column:[],herokuapp:4,datagram:5,carrier:5,constructor:5,fals:[5,4],own:[],washington:5,easy_instal:2,automat:[5,2,6],pcreat:[2,6],leverag:4,sock_:5,val:[2,6],transfer:[0,4],intention:0,appl:2,arg1:4,"var":[0,4],"function":[0,5,2,4,6],mailer:[],xerox:2,gain:[2,4],inlin:[5,2],count:2,made:[0,5,2,4,6],view_config:[4,6],whether:0,wish:[2,4],googlecod:6,displai:[4,6],below:[5,4],limit:5,problem:[5,2,4],"int":[2,4],blabber:2,pid:[4,6],ephemer:[5,2],implement:[],ini:[2,4,6],pip:2,duru:2,probabl:[4,6],detail:[],virtual:[0,2],other:[],lookup:[5,6],futur:5,rememb:[0,5,2,4,6],stat:0,"class":[0,5,2,4,6],dewei:0,echo_cli:5,log:[0,2,4,6],fiddler2:0,"_queri":4,syllabu:2,reliabl:5,rule:[0,5,2],bcryptpasswordmanag:4,models_nam:2,portion:6},objtypes:{},objnames:{},filenames:["presentations/session05","index","presentations/session01","outline","presentations/session03","presentations/session04","presentations/session02","readings","presentations/index"],titles:["Session 05","Internet Programming with Python","Session 01","Course Outline","Session 03","Session 04","Session 02","Supplementary Course Readings","Course Presentations"],objects:{},titleterms:{all:[5,2],code:[0,2],protocol:[0,5],chain:2,queri:2,resp:[],stack:5,tcp:5,syntax:4,ljshell:6,permiss:4,polish:4,skill:5,languag:0,web:2,style:6,password:4,layout:6,execut:4,flask:[],configur:[2,4,6],activ:2,send:5,environment:[],add:[2,4,6],program:1,present:[8,6],persist:2,input:6,save:2,alter:2,match:6,real:0,deactiv:2,file:2,messag:5,"return":[0,2],string:6,get:[5,2,6],python:[0,1,2,5],express:6,stop:0,"break":[0,5,2,4],jinja2:[4,6],initializedb:4,bit:2,characterist:0,requir:4,introduct:2,environ:2,like:0,header:0,edit:[4,6],troubleshoot:4,list:[4,6],resolv:0,iter:2,server:[0,5],"try":[4,6],other:0,bad:0,session:[0,5,2,4,6],common:0,quick:[0,5],updat:[0,4],where:4,side:[5,2],view:[0,4,6],respond:5,machin:5,domain:5,set:4,pop3:0,resourc:0,request:[0,6],revel:4,second:[],design:[],connect:[5,6],respons:[0,6],our:[0,2,4,6],happen:2,transport:5,concern:2,virtualenv:2,separ:2,what:[0,2,4,6],scale:4,hide:4,compar:4,databas:[2,4],scaffold:[],asid:0,content:0,adjust:4,irl:0,internet:[1,5],"new":2,method:[0,5,2],can:0,altern:2,core:0,run:[0,5,4],journal:4,error:0,tdd:0,debug:0,step:0,base:2,logout:4,dictionari:6,address:5,put:5,path:6,along:0,valu:6,addit:4,unsaf:0,about:[0,2,4],last:2,req:[],column:2,commun:5,page:6,filter:[4,6],mvc:[2,6],perman:2,context:[4,6],pick:6,congratul:5,commit:2,implement:[0,4],mean:[],rebuild:4,block:6,first:[0,2,4,6],wiki:[],own:5,render:[4,6],markdown:4,solut:0,app:[2,4],deploi:4,repli:5,terminolog:2,system:[2,6],walkthrough:[],unix:5,api:6,done:4,construct:5,famili:5,batteri:[],chang:[2,4,6],your:[0,5,2,4,6],speak:0,authz:4,differ:0,git:[],modif:0,cryptactular:4,script:[2,6],interact:[0,2,6],regist:4,three:2,submit:[0,5,2],custom:5,compon:2,start:2,heroku:4,much:[],mime:0,asset:6,accept:5,basic:[0,2,6],master:[],homework:[0,5,2,6],instal:[2,4,6],more:2,fork:[],via:4,life:[],shell:4,consol:2,idempot:0,form:[4,6],smtp:0,bind:5,further:[0,5],depend:4,effect:2,part:6,link:[5,4],togeth:5,postgresql:4,virtuelenv:2,imap:0,matchdict:6,authn:4,serv:0,"static":6,word:[2,4],look:0,provid:[4,6],type:[0,5],setup:2,outlin:3,structur:[2,6],project:2,defin:6,outcom:6,glori:4,learn:0,highlight:4,anonym:4,listen:5,browser:0,control:6,factori:4,pyramid:[2,4,6],comput:[0,5],engag:4,creat:[5,2,4],applic:[5,2,4],wrap:4,demo:[0,6],pass:0,share:6,few:0,templat:6,uri:0,packag:2,sqla:2,stub:6,have:[0,2],tabl:2,incom:5,work:[2,4],check:4,option:0,result:4,cours:[8,3,7],irrelev:2,advic:2,secur:4,receiv:5,make:[2,4,6],format:[0,4],model:[2,4,6],detail:6,access:6,client:5,how:4,cleanup:2,read:7,build:4,branch:[],order_bi:2,test:[0,5,4,6],verifi:4,you:2,out:[4,6],config:4,prepar:[4,6],css:4,complet:6,map:0,finish:5,http:[0,6],determin:0,safe:0,deploy:[4,6],why:2,object:[2,6],sqlalchemi:2,procfil:4,socket:5,pattern:[],user:[4,6],echo:0,sql:2,encrypt:4,data:6,login:4,index_pag:4,util:5,handl:0,task:5,third:[],choos:2,url:6,entri:4,initialize_learning_journal_db:2,learning_journ:4,flow:[5,6],wtform:6,doe:[0,6],inform:5,runapp:4,exampl:[0,4,6],ignor:2,clean:[5,2],time:[0,5,2,4],pars:0,orm:2,rout:6,includ:[]}}) \ No newline at end of file +Search.setIndex({envversion:42,terms:{interchang:2,four:0,database_url:4,prefix:[0,5],af_rout:5,skeleton:[5,2],stub:[],aug:2,sorri:2,ipproto_raw:5,crisew:5,concret:2,dest_dir:2,worth:[2,6],digit:[0,6],everi:[0,2],govern:0,cmd:0,herbert:6,imaplib:0,verif:4,direct:[0,2],second:[],nthi:6,even:[0,2],list_of_tcp_and_udp_port_numb:5,"new":[],net:0,metadata:2,ipproto_tcp:5,behavior:[5,2,6],never:[5,2],here:[0,5,2,4,6],"4xx":0,path:[],interpret:[0,5,2,6],credit:2,webfact:0,permit:0,golden:6,heroku_postgresql_maroon_url:4,wikimedia:[2,6],txt:[0,5,2,4],yore:6,describ:5,would:[0,2,4,6],init:2,dnt:0,call:[0,5,2,4,6],admin_password:4,typo:2,recommend:4,strip_filt:6,tell:[0,5,2,4],relat:2,panach:6,notic:[0,5,2,4,6],phone:6,unpack:2,must:[0,5,2,4,6],af_unix:5,join:0,restor:[2,4],work:[],conceptu:6,norm:0,root:4,defer:4,repoz:2,give:[5,2,4],smtp:[],indic:0,want:[0,2,4,6],dele:0,end:[0,5,4,6],learning_journ:[],frobozz:0,how:[],sever:4,env:2,interview:0,verifi:[],config:[],updat:[],anon_1:2,earlier:[0,2,4],superus:2,diagram:2,befor:[0,5,2,4,6],wrong:2,demonstr:[0,2],domin:2,classmethod:[2,4,6],authzpolici:4,minim:0,greet:0,think:[5,2,4,6],alias:5,scoped_sess:2,environ:[],incorpor:4,enter:[0,6],engine_from_config:[2,4,6],order:[2,4,6],hob7v7guwir4n1v:4,oper:[5,4,6],over:[5,2,6],fam:5,becaus:[0,2,4,6],jpeg:0,privileg:2,keyboard:0,flexibl:2,vari:[0,5],img:0,fix:[0,2,6],simple_cli:0,toolbelt:[4,6],better:[5,2,4],offic:0,howdi:6,easier:[2,6],them:[0,5,2,4,6],thei:[0,5,2,4,6],safe:[],"break":[],sqlite3:2,promis:5,initializedb:[],choic:[5,2],getservbynam:5,rocki:4,each:[0,5,2,4],debug:[],went:[0,6],webmast:0,bone:6,mean:[],logo:6,network:[5,6],goe:[2,6],god:2,dsn:0,got:[0,2,4,6],forth:0,rail:0,nightmar:2,situat:[0,2],free:[4,6],standard:[0,5,2,4],hand:[4,6],s3cr3t:4,static_url:6,filter:[],mvc:[],isn:[0,6],confus:[5,6],user:[],rang:[0,6],render:[],independ:[0,2],hook:2,instruct:[5,2],alreadi:[0,5,2,4,6],messag:[],fantast:2,primari:[2,6],top:[2,4,6],"0x1103e38d0":2,sometim:[0,2],imap4rev1:0,too:[0,5,2,6],tom:2,my_view:6,tool:[0,5,2,4],setuptool:2,took:2,incur:4,keyword:[4,6],provid:[],tree:[2,4],project:[],matter:4,rfc2616:0,minut:[0,5,6],rad:5,ran:[0,2],modern:2,mine:0,raw:0,af_sna:5,pylon:2,increment:[],"__main__":4,seen:[0,5,2,4,6],seem:4,seek:[2,4],latter:2,thorough:6,"0x1103e3fd0":2,fnhg5:0,transmit:2,hypertext_transfer_protocol:0,simplifi:0,endfor:[4,6],sock_dgram:5,though:[0,4],usernam:[0,4,6],object:[],guess_typ:0,regular:2,alan:[2,6],bsd:5,models_id:2,typ:5,maria:5,tradit:6,don:[0,5,2,4,6],doc:[0,2,4],doe:[],declar:[2,6],passwordfield:4,sign_in_out:4,dot:6,opposit:6,random:4,syntax:[],radio:6,protocol:[],edit_entri:[],involv:4,absolut:6,menu:0,explain:2,configur:[],apach:0,theme:[],matchdict:[],folder:[5,2,4,6],resolve_uri:0,patter:6,stop:[],bar:[0,5,6],ietf:0,baz:0,"public":[4,6],buffsiz:5,reload:[0,4],told:4,steal:[2,4],respond:[],get_const:5,result:[],respons:[],fail:[0,5,4],best:[2,4],awar:4,pythoncert:[2,6],databas:[],wikipedia:[0,5,2],mysql_length:2,figur:[5,2],score:2,outstand:6,pbkdf2passordmanag:[],awai:2,approach:2,attribut:[2,4,6],extend:[4,6],extens:[0,4],wear:0,protect:0,accident:5,howev:[2,6],against:[0,4,6],logic:[2,4,6],login:[],seri:2,com:[0,5,2,4,6],get_appset:[2,4,6],assur:5,trust:2,assum:[5,2],speak:[],chrome:0,add_rout:[2,4,6],been:[2,4,6],much:[],redeploi:4,basic:[],quickli:[0,2],rfc5321:0,setup_log:[2,6],telnet:5,ani:[0,5,2,4,6],"catch":0,ugli:0,ident:4,servic:[0,5,4],properti:[5,4],commerci:2,neat:0,seven:0,pyramid:[],af_appletalk:5,toolkit:0,fnhg:0,tediou:2,conn:[0,5],prior:4,perform:[2,6],suggest:[0,4],make:[],couchdb:2,complex:2,split:0,complet:[],rfc822:0,nic:5,hang:0,xyzzi:0,rais:[0,5],engin:[2,4,6],"548kb":2,thu:5,depli:[],hypothet:2,inherit:[2,6],client:[],thi:[0,1,2,3,4,5,6,7,8],endif:[4,6],gzip:0,everyth:[0,2,4,6],moreov:0,left:[2,4],identifi:[0,6],just:[0,5,2,4,6],human:[0,6],yet:[0,5,2,4,6],languag:[],alchemi:2,easi:[2,4,6],shout:6,"8bitmim":0,httpfound:[4,6],els:[0,2,4,6],hat:0,gave:2,opt:0,applic:[],preserv:2,parse_var:2,render_markdown:4,server_socket:5,elabor:4,enrypt:[],apart:6,imap4_port:0,response_method_not_allow:0,specif:[5,2,4,6],deprec:2,reload_templ:2,arbitrari:[5,2,4],manual:2,hung:0,install_requir:2,underli:5,www:[0,5],right:[0,4,6],old:2,deal:5,nfrom:2,intern:0,successfulli:2,transmiss:[0,5],total:4,http_server_at_hom:0,subclass:[],track:[],exectut:2,condit:0,foo:[0,5,4,6],localhost:[0,4,6],mailgat:0,particular:[2,4,6],confer:[],repositori:[5,2,4,6],post:[0,4,6],"super":0,chapter:2,postgresql:[],surround:6,dinner:0,commit:[],produc:5,encod:[0,4],bound:[5,2],down:[4,6],creativ:[2,6],wrap:[],storag:[0,2],"0db8":5,wai:[0,2,4,6],support:[0,2,4,6],why:[],avail:[5,2,4,6],reli:4,request_method:4,editor:[],get_address_info:5,rcpt:0,internet_protocol_suit:5,head:[0,5,4,6],medium:5,form:[],offer:[2,6],sqlalchemi:[],hear:5,icmp:5,codehilit:4,attr:6,type:[],maximum:5,until:[5,2],intitalizedb:2,featur:[2,4],af_decnet:5,"abstract":2,decrypt:0,proven:2,exist:[0,2,4,6],check:[],assembl:6,encrypt:[],mashup:[],excel:6,role:6,jone:0,test:[],webob:2,roll:4,intend:[5,2],af_unspec:5,consid:[0,2,6],receiv:[],longer:5,bullet:4,sock:[0,5],pbkdf2:4,initialize_learning_journal_db:[],bottom:5,wtttzy:4,push:[0,2,4],osx:[0,4],concept:[5,2,4],skip:2,consum:5,invent:2,row:[2,4],depend:[],graph:6,readabl:[0,6],unpython:2,a0004:0,a0005:0,a0006:0,a0001:0,a0002:0,a0003:0,addon:4,isinst:[],sourc:[0,5,2,4,6],string:[],congest:5,lru:2,kitten:2,ydood:6,brows:6,administr:[],level:[2,4],did:[0,5,2,6],dig:6,ipproto_udp:5,item:[2,6],team:2,cooki:[0,4],imap4:0,dir:[0,5],declarative_bas:2,upper:6,slower:5,sign:[0,4],cost:4,port:[0,5,4],procfil:[],appear:[4,6],current:[5,2],rst2xml:2,"3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4":4,gener:[0,5,2,4,6],explicitli:2,address:[],along:[],wait:[0,5],shift:0,queue:5,bob:[0,2],commonli:5,ourselv:[0,4],ipc:5,semant:5,session1:5,extra:5,modul:[0,5,2,4],prefer:0,backtick:[],marker:6,instal:[],smallish:5,market:2,types_map:0,prove:4,visit:[4,6],todai:[0,5,4,6],live:[5,2,4],criteria:[0,2],msg:5,plug:0,pyarmid:[],visual:0,appendix:0,oop:2,obj:[2,6],behalf:6,prepar:[],pretend:0,uniqu:[2,4,6],whatev:[5,6],purpos:[0,2,4,6],boilerpl:2,stream:[5,2],predict:0,agent:0,topic:6,app_factori:2,occur:5,entryeditform:4,other_sess:2,multipl:2,charset:[0,6],write:[0,5,2,4,6],anyon:[4,6],familiar:0,xhtml:0,product:[2,4],max:[0,4,6],clone:[5,2,6],mac:0,models_valu:2,data:[],classroom:2,gethostnam:5,practic:0,divid:[5,2],explicit:6,predic:4,mangl:0,inform:[],"switch":2,tailor:0,combin:[2,4,6],callabl:6,talk:[0,5,2,6],ydwoh:6,gitignor:2,still:[0,2,6],dynam:[0,6],config_uri:[2,4,6],group:[5,2],"4z6rvnhte21mpljw5veive0eg57gn":4,polici:4,sec10:0,platform:4,window:[0,2,4],curli:6,mail:0,main:[0,2,4,6],non:0,initi:[0,2,4],answer:[0,5,6],safari:0,half:5,now:[0,5,2,4,6],discuss:[5,2,6],term:2,name:[0,5,2,4,6],simpl:[0,5,2,4,6],interpr:2,separ:[],magazin:6,compil:4,domain:[],"0x105849b90":6,replac:[4,6],individu:[5,2,6],continu:[0,5,2,4],happen:[],accomplish:0,space:0,profil:5,correct:[0,5,6],"0x1005b8b40":5,tmpl:6,myproject:4,after:[2,6],pseudocod:0,state:[2,4],ch05s03:0,argv:[2,4],orm:[],argn:4,org:[0,5],"byte":5,card:5,care:[0,5],sign_in:4,utmcsr:0,default_permiss:4,refus:5,thing:[0,2,4,6],place:[5,2,4,6],imposs:2,frequent:2,lambda:6,origin:2,directli:[5,2,6],onc:[0,5,2,4,6],yourself:0,"long":[0,5,2,4],open:[5,4,6],size:[0,5,4],urin:0,given:[0,5,2,6],sheet:6,convent:0,imap4_ssl_port:0,eachoth:2,draft:0,conveni:2,friend:4,includ:[],copi:[0,4,6],huh:0,artifact:2,github:[0,5,2,4,6],mostli:[0,5],attempt:5,than:[0,5,2,4,6],png:0,serv:[],were:[5,2],posit:5,"5xx":0,browser:[],sai:[0,2,4],pro:5,argument:[0,5,2,4,6],larri:2,deliv:[],notimplementederror:0,saw:2,shtml:0,date:[0,2],ipproto_:5,note:[0,5,2,4,6],take:[0,5,2,4,6],green:0,bcrypt:4,noth:[2,4,6],channel:[0,2],begin:[0,5,2,4,6],sure:[5,2,4,6],pain:[2,4],trace:2,normal:2,buffer:[0,5],price:4,pair:[2,6],homepag:[],utmccn:0,later:0,"8mb":2,create_al:2,shortnam:4,gracefulli:0,show:[0,2,4,6],my_index:2,constitu:6,permiss:[],xml:[0,2,6],onli:[0,2,4,6],slow:5,"true":[0,5,2,4,6],transact:[5,2,4],enough:[0,2,4],dict:[5,2],analyt:4,startswith:5,nearli:2,variou:[2,6],mung:0,clang:2,ssl:0,cannot:[5,6],ssh:5,requir:[],entryfactori:4,authenticated_userid:4,where:[],wiki:[],n10:6,reserv:[0,5],concern:[],detect:4,review:[0,5,2,4,6],enumer:4,label:[4,6],getattr:5,between:[0,5,2],"import":[0,5,2,4,6],across:5,parent:2,elladan:5,tut:0,cycl:[2,6],come:[0,2,4,6],contract:[],tutori:6,wherin:2,mani:[0,5,2,4,6],among:[5,2,6],color:4,imad1:0,artu:0,coupl:[5,2],rebuild:[],mark:4,evangelista:[2,6],avian:5,"1xx":0,those:[0,2],"case":[0,2,6],plugin:[],cast:2,outcom:[],certainli:6,python_web:[2,6],ehlo:0,advantag:[2,4],stdout:[5,2],canon:5,worri:[5,4],blah:0,smalltalk:2,develop:[0,2,4,6],proto:5,cc0:[2,6],same:[0,5,2,4,6],html:[0,4,6],pai:4,document:[0,1,2,3,4,5,6,7,8],week:[0,5,2,4,6],finish:[],assist:2,someon:4,driven:[0,6],capabl:[],add_rount:4,improv:[0,2,4],appropri:[5,4,6],"__acl__":4,markup:4,without:[5,2,6],model:[],execut:[],when:[0,5,2,4,6],rest:[0,2,4],interrupt:0,kill:[0,2],aspect:[2,4,6],heffalump:5,hint:0,except:[0,5,2],littl:[4,6],blog:0,blob:4,vulner:0,real:[],tranmiss:5,around:[5,4,6],makin:6,traffic:0,mon:0,redqueen:0,socket_tool:5,intel:0,whitespac:0,integ:[5,2,4],server:[],benefit:[0,5],either:[0,6],cascad:6,get_payload:[],output:[0,5,4],manag:[5,2,4],fulfil:4,ipproto_ip:5,definit:6,"2xx":0,exit:2,posgresql:4,notabl:0,refer:[5,2,6],af_inet6:5,power:[5,2,4,6],broken:0,regexp:6,src:6,deflat:0,central:2,acl:4,microframework:2,"19t01":4,mytempl:[2,6],console_script:2,inbox:0,strip:6,igmp:5,hew:[],buffer_s:5,httpnotfound:[4,6],her:4,set_authorization_polici:4,aren:[2,4],start:[],interfac:[0,5,2,4],ipv4:5,lot:[0,2,6],ipv6:5,"0x10b075ed0":2,machin:[],hei:5,index_pag:[],tupl:5,client_address:5,categor:0,freddi:6,pull:[0,2],dirti:2,possibl:[5,6],"default":[5,2,4,6],expect:[0,2,6],gone:2,uid:0,creat:[],certain:[0,5,2],deep:4,strongli:4,intro:[],file:[],fill:[4,6],again:[0,5,2,4,6],googl:[5,2],compel:2,field:[2,4,6],valid:[0,4,6],pathnam:[0,5],you:[],juic:6,sequenc:0,symbol:[5,6],briefli:6,transceiv:5,reduc:2,"1b6":0,directori:[0,2,4,6],descript:[5,2],potenti:4,escap:4,represent:[5,2],all:[],forget:4,forbidden:4,scalar:2,abil:[0,2],follow:[0,5,2,4,6],disk:0,content:[],af_inet:5,articl:[2,4,6],tail:4,introduc:[2,6],liter:2,chameleon:6,far:[5,2],faq:0,util:[],verb:0,mechan:4,fall:2,veri:[0,5,2,4,6],ticket:4,egg_info:2,list:[],last_nam:6,adjust:[],stderr:0,small:[],past:[2,4],design:[],pass:[],further:[],by_nam:4,what:[],section:[0,2,6],abl:[0,2,4,6],delet:[0,4],version:[0,2,4],primary_kei:[2,4],intersect:6,method:[],full:2,hash:4,trunk:6,goodby:0,strong:[4,6],modifi:0,valu:[],search:[0,6],ahead:[5,4,6],sensit:[0,4],pick:[],action:[5,2,4,6],add_static_view:[2,6],via:[],filenam:0,href:[4,6],establish:5,select:[0,2],distinct:0,ctrl:0,regist:[],two:[0,5,2,4,6],zopetransactionextens:[],taken:4,satisfact:4,more:[],flaw:6,mozilla:[0,6],flag:[0,5,4],jsonp:6,known:[5,4],cach:[0,2],none:[0,5,2,4,6],endpoint:[0,5],hour:[0,5,6],dev:4,venusian:2,remain:4,learn:[],rst2html:2,def:[0,5,2,4,6],ndate:5,factori:[],prompt:[5,2],scan:[2,6],challeng:[0,4],registr:4,share:[],accept:[],explor:[5,2],hilight:[],phrase:[2,6],login_form:4,goal:2,first_nam:6,secur:[],rather:0,anoth:[5,2,4,6],comfort:6,message_from_str:[],"__init__":[2,4,6],csv:[2,6],loginform:4,css:[],unabl:4,"545kb":2,resourc:[],referenc:6,okai:[0,2],"short":[],footer:6,author:4,django:2,caus:2,egg:2,translationstr:2,checkbox:6,help:[0,5,2,6],authorization_polici:4,mainthread:[2,4],soon:[5,6],through:[0,2,4,6],pane:0,style:[],psycopg2:[2,4],pserv:[4,6],might:[0,5,2,6],pce:6,recip:4,good:[0,2,4],"return":[],pollut:2,cew:2,framework:[2,4,6],maildrop:0,gethostbynam:5,msg_part:5,eventu:2,authent:[0,4],easili:[2,6],http_server:0,compris:2,found:[0,2,6],unicod:[2,4,6],joel:4,hard:[2,4],idea:[0,5,2],realli:[0,5,4,6],connect:[],blog_creat:[],beyond:4,orient:2,ftp:5,publish:2,research:2,bubbl:6,etag:0,authnpolici:4,print:[0,5,2,4,6],uwpc:[2,6],"__utmz":0,postgr:4,proxi:0,uncommit:2,advanc:0,new_model:2,differ:[],reason:[0,6],base:[],put:[],"__utma":0,recv:[0,5],bash:4,by_id:[2,4,6],perhap:[0,6],assign:[0,5,2,4,6],set_authentication_polici:4,obviou:0,prevent:4,feel:6,number:[0,5,2,4,6],placehold:[0,6],done:[],construct:[],blank:0,miss:2,guess:0,script:[],interact:[],pbkdf2passwordmanag:4,least:[2,6],getservbyport:5,statement:2,store:[2,4],luckili:[0,2,4,6],parc:2,option:[],relationship:5,behind:2,echo_socket:5,part:[],pars:[],logged_in:4,off:[0,2,4,6],fred:2,kind:[0,5,4,6],grew:0,remot:[5,2,4],remov:[5,2,4],str:2,relative_to:4,aclauthorizationpolici:4,payload:0,"_socketobject":5,packag:[],expir:4,properli:[0,6],imagin:[4,6],built:[0,2,4,6],lib:[0,2],self:4,also:[0,5,2,4,6],build:[],textareafield:6,brace:6,distribut:2,kai:2,previou:0,reach:5,chart:[2,6],most:[0,5,2,4,6],"0x100563c90":5,plan:4,addr:[0,5],mymodel:[2,4,6],cover:[0,2,4],wsgi:[2,4],hyper:0,v12:0,session:[],particularli:[4,6],fine:[0,6],find:[0,5,2,4,6],nosql:2,copyright:2,solut:[],"172kb":2,factor:2,darwin:2,unus:2,resent:5,"3xx":0,restart:[0,4,6],rfc:0,common:[],nowher:2,wrote:4,certif:6,set:[],overwhelm:2,"0x1103e3f50":2,af_ipx:5,see:[0,5,2,4,6],bare:6,arg:2,close:[0,5,6],pyrami:[],uw_pc:[],someth:[0,2,4,6],blog_act:[],topmost:5,won:0,subscript:6,pastedeploi:2,sole:[0,5],isol:2,mailbox:0,succeed:[],"31m":4,both:[0,5,2,4,6],hiddenfield:4,delimit:0,unstag:2,logout:[],load:[0,4,6],markdown:[],simpli:[0,2,4,6],point:[0,5,2,4],instanti:2,header:[],route_url:[4,6],param:4,linux:[0,4],mistak:2,xkcd:0,authz:[],empti:[0,5,2,4,6],pgbackup:4,retr:0,secret:4,authn:[],rstpep2html:2,"55c0287d4ef21f15b97eb1f107451b88b479bff":4,fire:[0,2,4,6],imag:[0,6],cryptacular:4,coordin:2,understand:[0,4],convers:[],formatd:0,look:[],solid:4,batch:2,"while":[0,5,2],"54f7e4d":4,homework:[],abov:[0,5,2,4],error:[],fun:6,everyon:4,loop:0,readi:[0,5,2,4,6],readm:2,itself:2,"3f80f":0,decor:6,grant:4,belong:[0,5,4],wherein:6,zope:2,conflict:2,b59b7c3:4,communc:5,moment:[5,2,4,6],temporari:6,"__or__":5,robust:4,chang:[],recent:[0,2],lower:[5,6],task:[],find_packag:2,entri:[],spent:5,doodi:6,pickl:2,person:[5,4,6],expens:[5,4],elev:0,connnect:5,cedar:4,macintosh:0,spend:[5,6],explan:0,make_wsgi_app:2,"__path__":2,mysql:2,session05:0,session04:5,session01:5,session02:[0,6],restructuredtext:2,global_config:[2,4,6],populate_obj:[4,6],appli:[4,6],input:[],bin:[2,4,6],varchar:2,format:[],big:[],response_ok:0,game:6,blogcreateform:[],bit:[],formal:[0,2],httpexcept:6,an_id:[],ipproto_icmp:5,docutil:2,manifest:2,collect:[2,6],princip:4,popular:4,often:[0,5,2],some:[0,5,2,4,6],back:[0,5,2,4,6],understood:5,uidnext:0,sampl:[4,6],ljenv:[2,4,6],per:[0,5,4],larg:[],cgi:[],intial:0,run:[],authtktauthenticationpolici:4,viabl:2,crlf:0,plai:[2,4,6],block:[],miracl:0,ensur:[0,5,2,4],html5shiv:6,span:4,question:[0,2,4,6],stylesheet:6,fast:2,heroku:[],prettier:6,doctyp:[0,6],repeatedli:[5,2],pwd:2,link:[],atol:4,line:[0,2,4,6],info:[5,2,4],utf:[0,6],consist:0,sum:6,similar:[0,2],clear:[0,5],sesson:0,constant:5,chao:4,doesn:[0,5,2,4,6],repres:[0,2,6],gecko:0,response_not_found:0,titl:[0,2,6],nam:5,nav:6,nice:[0,4,6],llvm:2,mongodb:2,meaning:2,csrftoken:0,svn:6,algorithm:4,mimetyp:0,rst2latex:2,allowedvers:0,discrimin:[],came:4,hello:[0,6],getaddrinfo:5,code:[],queri:[],sqlserver:2,edu:5,bathtim:6,elsewher:[5,4],send:[],aris:2,sent:[0,5,2,4,6],charlesproxi:0,rollback:2,spool:0,stackoverflow:0,relev:2,tri:6,magic:6,button:6,"try":[],race:[4,6],entry_point:2,hasnochildren:0,pleas:2,smaller:5,natur:6,download:[2,6],odd:6,click:6,append:[0,2,4],compat:2,index:[0,2,4,6],wahoo:0,compar:[],resembl:6,can:[],len:[0,5,2],bodi:[0,2,4,6],loadapp:4,intercept:4,let:[0,5,2,4,6],becom:2,sinc:[5,2,6],great:[0,2,6],pretti:[0,2],technolog:[5,4],typic:2,maker:6,firefox:0,ago:[5,4],parse_request:0,win:0,app:[],api:[],"__name__":4,from:[0,5,2,4,6],upgrad:4,next:[0,5,2,4,6],websit:[2,4,6],few:[],usr:2,sudo:2,ipoac:5,babi:6,train:[2,6],somesecret:4,account:6,retriev:6,scalabl:2,alic:4,tag:[0,4,6],thin:5,fetch:[0,2,4,6],aliv:[0,5],control:[],sqlite:[2,4],tar:2,process:[5,2,4,6],lock:4,preformat:4,high:2,af_:5,tab:0,onlin:[5,2,4],cache_max_ag:[2,6],gcc:2,cewing_socket:5,client_socket:5,pyramid_jinja2:6,instead:[0,2,4,6],stand:[2,6],delai:2,initialzedb:4,alwai:[0,5,2,4],"6mb":2,attent:4,tier:4,physic:[5,6],drop:[5,6],add_al:2,bind:[],correspond:5,element:[0,2,6],webroot:0,runapp:[],allow:[0,5,2,4,6],sendal:[0,5],elif:6,move:[0,5,2],bunch:5,uiqj579igrbrebhmjqnth8pffaz2qrj:0,verify_password:4,"0x10046cec0":5,infrastructur:4,bye:0,recept:5,handl:[],demoenv:2,spell:6,dai:[0,6],auth:4,"8a2e":5,somewher:[4,6],anyth:[2,4],edit:[],entrycreateform:[4,6],nameerror:0,slide:[8,1,3,7],mode:2,autoincr:4,beneath:4,pygment:4,bump:0,sessionmak:[2,6],meta:6,"static":[],our:[],special:[2,4,6],out:[],variabl:4,categori:2,suitabl:4,rel:6,dive:4,red:0,clarifi:2,insid:[0,5,2],frank:6,manipul:2,zodb:2,auth_secret:4,first_lin:0,complianc:4,cri:[0,6],"0x1103d9f10":2,could:[0,2,4],lexer:4,ask:[0,5,2],keep:[0,5,2],length:[0,2,4,6],outsid:[2,4],waitress:4,softwar:[0,5,2,4,6],pygments_styl:4,echo:[],exact:6,mai:[0,5,2,4],match_param:[4,6],owner:6,licens:2,mkdir:2,system:[],wrapper:5,attach:4,imap4_ssl:0,termin:[0,5,2,4],"final":[0,5,2,6],udp:5,shell:[],fnhg8:[],shelf:2,fnhg2:0,fnhg3:0,"8d3":5,dyno:4,textfield:[4,6],exactli:[0,5,6],route_nam:[4,6],embodi:[2,4],roberto:6,charact:[2,4,6],sens:6,f12:0,favorit:0,py2:2,py3:2,respositori:0,requri:4,have:[],tabl:[],need:[0,5,2,4,6],turn:[0,2,4,6],afraid:[0,2],min:[4,6],rout:[],chief:4,which:[0,5,2,4,6],authentication_polici:4,singl:[0,5,2,4,6],unless:5,ds_store:2,whl:2,who:[4,6],oracl:2,discov:0,deploi:[],pyc:2,segment:6,payment:4,url:[],request:[],face:6,pipe:6,build_db:4,deni:4,determin:[],fact:[5,4,6],jkorpela:0,text:[0,2,4,6],bring:[0,6],rough:2,identityset:2,redirect:0,locat:[0,5,2,4,6],should:[0,5,2,4,6],jan:[0,5],"3e1cb03b":0,"__tablename__":[2,4],local:[5,2,4,6],notat:6,convert:[2,4,6],pypi:2,db8:5,log_buff:0,smash:6,blog_upd:[],enabl:[0,4],rage:0,"0x10e7d6b90":6,stuff:6,she:4,contain:[0,1,2,3,4,5,6,7,8],paster:[2,6],view:[],dbsession:[2,4,6],knowledg:2,packet:5,closer:2,statu:[2,4],wire:[5,4,6],correctli:[0,6],tend:2,written:6,flickr:4,email:[0,5,2],mysite1:0,javascript:6,kei:[2,4,6],job:[0,2,4,6],entir:2,permanentflag:0,addit:[],revers:[5,6],dobb:0,admin:4,configpars:2,etc:[0,5,2,6],instanc:[2,4],equat:5,html5:6,comment:[0,5,6],typifi:2,lang:6,this_id:6,arriv:6,chmod:4,quit:[0,5,2,4,6],addition:2,insuffici:0,json:6,immedi:5,sock_stream:5,bulk:2,untrack:2,togeth:[],ingredi:2,multi:0,plain:[0,2,4,6],defin:[],dbapi2:2,endblock:[4,6],layer:[0,5,2],site:[2,4,6],incom:[],whirl:[5,4],pyramid_chameleon:[2,6],welcom:2,parti:0,failur:[0,5],http:[],hostnam:5,absorb:2,"85a3":5,expand:[],fenced_cod:4,center:0,well:[0,5,2,4],exampl:[],command:[0,2,4,6],filesystem:[0,6],undefin:6,usual:[5,2],distanc:5,less:[0,5],kramer:4,emtpi:2,web:[],jinja:[],wed:0,nullabl:[4,6],smith:0,add:[],book:6,logger:2,match:[],gmt:0,agnost:[5,6],crud:0,piec:6,five:0,know:[5,2,4,6],unseen:0,password:[],python2:2,insert:4,like:[],success:[0,5],echo_serv:5,lose:2,page:[],backlog:5,didn:2,specifi:6,captur:[2,6],suppli:4,utmcmd:0,uidvalid:0,proper:[0,5,6],home:[0,2,4,6],librari:[0,5,2,4,6],tmp:5,gethostbyname_ex:5,esr:0,lead:6,octet:0,"16x16":[],leav:[2,6],blog_view:[],investig:[0,6],journal:[],usag:2,host:[0,5,2,4],although:[0,2,6],about:[],actual:[0,5,2,4,6],socket:[],world:[2,6],column:[],herokuapp:4,datagram:5,carrier:5,constructor:5,fals:[5,4],own:[],washington:5,easy_instal:2,automat:[5,2,6],pcreat:[2,6],leverag:4,sock_:5,val:[2,6],transfer:[0,4],intention:0,appl:2,arg1:4,"var":[0,4],"function":[0,5,2,4,6],mailer:[],xerox:2,gain:[2,4],inlin:[5,2],count:2,made:[0,5,2,4,6],view_config:[4,6],whether:0,wish:[2,4],googlecod:6,displai:[4,6],below:[5,4],limit:5,problem:[5,2,4],"int":[2,4],blabber:2,pid:[4,6],ephemer:[5,2],implement:[],ini:[2,4,6],pip:2,duru:2,probabl:[4,6],detail:[],virtual:[0,2],other:[],lookup:[5,6],futur:5,rememb:[0,5,2,4,6],stat:0,"class":[0,5,2,4,6],dewei:0,echo_cli:5,log:[0,2,4,6],fiddler2:0,"_queri":4,syllabu:2,reliabl:5,rule:[0,5,2],bcryptpasswordmanag:4,models_nam:2,portion:6},objtypes:{},objnames:{},filenames:["presentations/session05","index","presentations/session01","outline","presentations/session03","presentations/session04","presentations/session02","readings","presentations/index"],titles:["Session 05","Internet Programming with Python","Session 01","Course Outline","Session 03","Session 04","Session 02","Supplementary Course Readings","Course Presentations"],objects:{},titleterms:{all:[5,2],code:[0,2],protocol:[0,5],chain:2,queri:2,resp:[],stack:5,tcp:5,syntax:4,ljshell:6,permiss:4,polish:4,skill:5,languag:0,web:2,style:6,password:4,layout:6,execut:4,flask:[],configur:[2,4,6],activ:2,send:5,environment:[],add:[2,4,6],program:1,matchdict:6,persist:2,input:6,save:2,alter:2,match:6,real:0,deactiv:2,file:2,messag:5,"return":[0,2],string:6,get:[5,2,6],python:[0,1,2,5],express:6,stop:0,"break":[0,5,2,4],jinja2:[4,6],initializedb:4,bit:2,characterist:0,requir:4,introduct:2,environ:2,like:0,header:0,edit:[4,6],troubleshoot:4,list:[4,6],resolv:0,iter:2,server:[0,5],"try":[4,6],other:0,bad:0,session:[0,5,2,4,6],common:0,quick:[0,5],updat:[0,4],where:4,side:[5,2],view:[0,4,6],respond:5,machin:5,domain:5,set:4,pop3:0,resourc:0,request:[0,6],revel:4,second:[],design:[],connect:[5,6],respons:[0,6],our:[0,2,4,6],happen:2,transport:5,concern:2,virtualenv:2,separ:2,what:[0,2,4,6],scale:4,hide:4,compar:4,databas:[2,4],scaffold:[],asid:0,content:0,adjust:4,irl:0,internet:[1,5],"new":2,method:[0,5,2],can:0,altern:2,core:0,run:[0,5,4],journal:4,error:0,tdd:0,debug:0,step:0,base:2,logout:4,dictionari:6,address:5,put:5,path:6,along:0,valu:6,addit:4,unsaf:0,about:[0,2,4],last:2,req:[],column:2,commun:5,page:6,filter:[4,6],mvc:[2,6],perman:2,context:[4,6],pick:6,congratul:5,commit:2,implement:[0,4],mean:[],rebuild:4,block:6,first:[0,2,4,6],wiki:[],own:5,render:[4,6],markdown:4,solut:0,app:[2,4],deploi:4,repli:5,terminolog:2,system:[2,6],walkthrough:[],unix:5,api:6,done:4,construct:5,famili:5,batteri:[],chang:[2,4,6],your:[0,5,2,4,6],speak:0,authz:4,differ:0,git:[],modif:0,cryptactular:4,script:[2,6],data:6,interact:[0,2,6],regist:4,three:2,submit:[0,5,2],custom:5,compon:2,start:2,heroku:4,much:[],mime:0,asset:6,accept:5,basic:[0,2,6],master:[],homework:[0,5,2,6],instal:[2,4,6],more:2,fork:[],via:4,life:[],shell:4,consol:2,idempot:0,form:[4,6],smtp:0,bind:5,further:[0,5],depend:4,effect:2,part:6,link:[5,4],togeth:5,postgresql:4,virtuelenv:2,imap:0,present:[8,6],authn:4,serv:0,"static":6,word:[2,4],look:0,provid:[4,6],type:[0,5],setup:2,outlin:3,structur:[2,6],project:2,defin:6,outcom:6,glori:4,learn:0,highlight:4,anonym:4,listen:5,browser:0,control:6,factori:4,pyramid:[2,4,6],comput:[0,5],engag:4,creat:[5,2,4],applic:[5,2,4],wrap:4,demo:[0,6],pass:0,share:6,few:0,templat:6,uri:0,packag:2,sqla:2,stub:6,have:[0,2],tabl:2,incom:5,work:[2,4],check:4,option:0,result:4,cours:[8,3,7],irrelev:2,advic:2,secur:4,receiv:5,make:[2,4,6],format:[0,4],detail:6,access:6,client:5,how:4,cleanup:2,read:7,build:4,branch:[],order_bi:2,test:[0,5,4,6],verifi:4,you:2,out:[4,6],config:4,prepar:[4,6],css:4,complet:6,map:0,finish:5,http:[0,6],determin:0,safe:0,deploy:[4,6],why:2,object:[2,6],sqlalchemi:2,procfil:4,socket:5,pattern:[],user:[4,6],echo:0,sql:2,encrypt:4,orm:2,login:4,index_pag:4,util:5,handl:0,task:5,third:[],choos:2,url:6,entri:4,initialize_learning_journal_db:2,learning_journ:4,flow:[5,6],wtform:6,doe:[0,6],inform:5,runapp:4,exampl:[0,4,6],ignor:2,clean:[5,2],time:[0,5,2,4],pars:0,model:[2,4,6],rout:6,includ:[]}}) \ No newline at end of file From cd32e6a3b79a9c802498eeae5c2b952a01167c6b Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 8 Feb 2015 22:32:26 -0800 Subject: [PATCH 079/114] updates to session 5 and other objects --- html/_sources/presentations/index.txt | 1 + html/genindex.html | 33 ++++++++++++++++++++++++++ html/index.html | 1 + html/objects.inv | Bin 228 -> 284 bytes html/presentations/index.html | 6 +++++ html/presentations/session05.html | 10 ++++---- html/readings.html | 10 ++++---- html/searchindex.js | 2 +- 8 files changed, 52 insertions(+), 11 deletions(-) diff --git a/html/_sources/presentations/index.txt b/html/_sources/presentations/index.txt index 7a25f445..6f5f5f35 100644 --- a/html/_sources/presentations/index.txt +++ b/html/_sources/presentations/index.txt @@ -20,3 +20,4 @@ course. session03 session04 session05 + session06 diff --git a/html/genindex.html b/html/genindex.html index 460dee62..9a559c4d 100644 --- a/html/genindex.html +++ b/html/genindex.html @@ -60,8 +60,41 @@

    Navigation

    Index

    + C + | S + | T
    +

    C

    + + +
    + +
    center (built-in class), [1] +
    + +
    + +

    S

    + + +
    + +
    small (built-in class), [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11] +
    + +
    + +

    T

    + + +
    + +
    tiny (built-in class) +
    + +
    +
    diff --git a/html/index.html b/html/index.html index cb43a379..79f5e450 100644 --- a/html/index.html +++ b/html/index.html @@ -85,6 +85,7 @@

    Internet Programming with PythonSession 03
  • Session 04
  • Session 05
  • +
  • Session 06
  • Supplementary Course Readings
      diff --git a/html/objects.inv b/html/objects.inv index cd95a2ac98c98d67b80b99a19db4794752d7869c..eb64dcff4580b8df15ecf5e1c6ff0183d7f4f960 100644 GIT binary patch delta 147 zcmV;E0Brx{0h|Jmk$;trO$q`r42AbSML@UpXQMDTa3KhuAhuzqkfzd9aBgp<6%hn+ z7vB3mUSje=Jl#Qy9~dvhV7G9cZS2KrDv=j(O#a3Mhi7C)k}uLL?M6eDFuUm!Y+1+7 z4LIRQMk6xU@xd{wLj5C?k`yc#^B2bqUtE+EV_l>^@8Sls{00000 diff --git a/html/presentations/index.html b/html/presentations/index.html index bfbcf7b3..b0f2c5c3 100644 --- a/html/presentations/index.html +++ b/html/presentations/index.html @@ -106,6 +106,12 @@

      Course PresentationsHTTP

  • +
  • Session 06 +
  • diff --git a/html/presentations/session05.html b/html/presentations/session05.html index 92c3fe08..41a816c1 100644 --- a/html/presentations/session05.html +++ b/html/presentations/session05.html @@ -25,7 +25,7 @@ - + @@ -50,7 +50,7 @@

    Navigation

    index
  • - next |
  • Previous topic
  • Session 04

    Next topic

    -

    Supplementary Course Readings

    +

    Session 06

    This Page

    index
  • - next |
  • - + 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 |a(#$IOrp2bnl*7V9jFnT6pTlv-WHZej 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

    lHgO!Bi;|pi<^i+Cz)g^AVKV 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 literal 0 HcmV?d00001 diff --git a/html/_images/granny_mashup.png b/html/_images/granny_mashup.png new file mode 100644 index 0000000000000000000000000000000000000000..7ded8365d15b7625555a798e8bfd7fabc14eb79e GIT binary patch literal 216410 zcmZ_02RxVk`#${9KqVw(Wt6g#lI&edgp8ylEtRs8vPVT4ip*@XS60Xt*-6f@9*80&*!?{*ZX~*$8ns;d0zL6bLyveZfDs}B9V5UQ9h|fB5mGH zB9Zk`Zo*Gmk2j0qU)wB{FFqiVcHkE~c9W5ULYPP-Dr4glC(fO_V{T>s;EuTk=a~~H zI4vyAZyB2ykw`W_v-FIu*qZ&Eo?QKO{pWtVU7O0Z8qd;kei+RWBHxrYj$I^sOSnUTOv*Oi!R-ZfdcuYa-pZA(kV{%`wl@&?yu9e97`g0-jh z?7iqGIzB4X5|&np=2qMdKYuE(*WVvHuBAZ9mAd#^@P&U@jyZF|Y{`N@`-q%PhhQen zyic)o;_@j=TSflsu3nkfhn0>h@}HuV7enT>~+@vChT2RkHv>vsvS$tdzSIPTD1 zbJfYBQ@qummuF9za7l$Sft{Dl{GhAO0^^&>eXcr&{v6f2wdR<(qU|h9cuy!d?{M`R zxqMn*kn6nMe%G@cylll9l!4tHKXg^A?z_?oJ8JgGhk5lSQc76}5l%4>Q#cY~%Xe zS#eTTzqYf&=E3_YcB}Y|Y(e(n=armaZ&^zEXeXA1S?9IBWmc)5W(qC89B=ukz}`$% zpQ>~`A@c2Ks}qMVzflUh#M)Q=M_F5%EzxAc&ZC=MiIf@2H;iG5zlU{NQflf1)C5Y#x}5xcRJ(PrZ5MRS+VpQ_WfG zvMeYh*A;SMv$qZBVqBi{KF!rqHjdX)Jn64-$eZ_hJfDSp6xaK>Et~dj*3?xu z;Le~O(C&4qQqVcOZOcgyMIHYhwYM*hK2PMckuMiNIp?eVLRDTcc$tzc*!7Z=Ui6o^ z2wgTtfunch{j@*3{E$zPJfwB~DoU5Qs^gdznOhi@ zlF8TIxoh~&9ph&fcGBZCw;QiG-?F-S1o zO~2jY*;jh|C)!2QKDDBGyjcI8h%+9e8!jj-N`Zq0eY5b#Sbo#k9t|% z8|YVZ6;mD`ji%nBwY@ZQSFfs@I?4LZ<@7Rr9jbToYLAUYHbu*)lS zp~U}KKxF$zrNi>fAL$*weZT+rxDrE~%T?tAyiaRLeN`fQFJC?}-(tBr=>0FHd$e?c zWNL5k^^&`7t^I!SZQEOBb{Gvu3(?_z_=fs=He~qCRqNvD~H@G0^+q*(D0{vI8nxLm20*>F7@j zKGtqxb1?M^_8w67rFy5ZUp^v}bFc7bS?zccO7|Ln>8kg?OZX%yzD5{Dh)ZrOQcC%J zyGrlsnI~LXoLgAPesbkR9AMd6r1@g8S-_2lugeO+Do-n1((dd% z;;!=~JAUVL#WhO$193XkTPe!D_>a)XY>oPHq<4GPmT)O6VGDIrP2(ffS>y-L9kZbF zBZV{fvw0|vZxT9AB}h@LsnW~1cXQ(VZ}**iPc8dhxfR}({C=P2IU#dG>*}4;y%su#E5h|o=^Fi$I}yK zpU?HPIGDaYbB;c1n=Uy$1I5cyGNo?{5p)sXk6s-zNmIXiXX}xh)V$lbd%S;N!lp&x z5!D~#w)yn65_;af6rX<>dr<|FH18~z`?)H8M$%9*3GXP4jOE-tUd_Icyp-kv^&neBg>=zSXsMfYDK>E7N7hI7NOM_`c)Q`@1G_V zsor&WKh@CwgH!3`qy?oNn|^u@9yra2pYt3}`JG|EUYG5nb{RZ4%6 zHt31e#osD4ucIF%tm=Kk&uX+-s1+J5M145E9nd;)A|dwI`fLQgZ7Xi2^qf}l)E-K8 zO0MYNZ9dxq*S~!Ea(c(M1UAlonmDzy4$`tmk518X-DKh7SW8ICuM}|D#3cFF>wz_` zWz+nbLrWyCj)mQp%P)M|E}nOFSkhH|bSU)8!D1QTv`03NFN-YLHmv@Ra=ekNR6a?? zaQZ7(zt6WFD{H^SGoE;Dx9tCTz`u6sx2e&@R2h1K05i?&`s(vM; zJ~ux%7q^G%&{v0X@6VBAf2(40f2_9so;na9RQS6lRY*VkcVg0o50|p+>V7^P6*FnG zsf$$$PA!~R7Szw~PBUG}9vADjnyJg_wCfnp+34Hb^J(T=ev$2h%tEJq&zn#w>#mKG zi7tC~hoN8Y9JW@IMUI~1&Z{MldBPko=xT>tz;JtqpCa?0cMt zDTInwYm(#~#^+j{XZyknrp(QY=Kko*t+m(pIIV;_Z(Uo&qliu?GTeE0AX z=LrS(la43KmNGYU{rQ+>ZDn=kh_xBmsNQYn&&F0hMuTh{hw1^q~?26p_eww~sT3)A)Lt-T#$+j4<;7U9FLI+s{SJCif(CF1@h4TjlY z;igMTd0jp_LN_mJAY!iDj++-jtwmdu$haBRvBI^@|+JUnYIXTORQfxR7$G(5@~h>t1V$ez8;8v)8PtTx$sq{5H;_ zg0fP!l}e*MpR6054Vin43u$7UA1#78TtNK@~Y2DJ-joMv^&*%BTjSC|1>36fAn>0RmKiGZ|(3U9iEHrtHpO4 zcs%4bf9Vi9(Q-2J1u7BF8_HU0B$87YiR9T%B8^m#NN?VdNY;)dQl}n?Bzp<}(03fU z{Ft;^{@$6B3OY7F$3m@b=*w9vdji`Fy;X!7?6)1KA8vTHg`WQ0Tk7r4Bj`2h-NLtS zIjN~|F8cZVCk>jz`}RgJT-oGG%{4yp==Pt5O77A70j{)kBP+Jkf7$XgGxIYaNcGtF zSa)-2smRlAQNZ5~r1FFR^Tz>KPRb|vyJj2l3)(GyyNUnDNy*Ri?~}AT>i>St86WcB zSO2#koRi@C_lXEg#s5C>zg|({fBnJ#?G~Q2ETUvjIIH%bxO}-2XZYbtq22h;tatC; zefsxTTU*Kg_)xYaA3?Euk^6ImY)W@n>T`N0eY>WMm2o3XiL=nbrp#zn5*& zo^iWA?0_m`1(U3Bf8{m&g=YJ3A%_S--Dl9zRnfqYSCr$RWk`nW?`yDJH z>Tw4Y6crV<#5T5&lS_tvYZ5#&@|1Sp!zf?lAa>8np4frnf#tbTmHw_z_fJsX?~tnT z7Yz13w=_MF*{@UNfPdEph?!qeq*Xo|hYhfuS}`h-tu+76bDHzb?CozM5*7kt=H0VGfjk=QwWqX_^^VSw zb!k|iynH#NxND**LHlq(Z5(&Z$2&jX8x`_u$DWm!CuMW}3%33+%f5=&K=_Ha^c(eI zG89;%&EKo|rbZx}gr%#Sn;)NctkrOX3Ks*P))x2iue(zR>%%YbkKpqv1?*CfzKYc8 zlglY?XW-Yt;w%Sh&VRTpAuU~S@&z5Q{;q$4%ls9f@Q6Fzabwer3xHW|C74qBW3s$CrJ#ugS9F)DtEItg^_#9vqPtc=eFx%@l!+#3kSJlmOD zs{Gg*yUB-=p|~q04NdCh+>C}Z7c*~_pR)gZRBdK)st*s+mT#SEM+D#8VOm<+h%ggB z{_}~tDVMN5m7~@o|DOK~4d1}8GIwxd8gZ7aqHMAbZT9Bp&Yi;|np{}0fY`IlAJ0m& zTrP5G?+CJ)?mshG$i>BV{9a4)`6OLrM!3UtbwmWG$M68s+qRBuQ*ABd##prr zsaNK*Wpq-n6y9x4ta+jR{^YigGSbwSi=7OV(oB1b9B2O2AqFxY9j)Nki9eVB$n-$; zcE&@`>)Z$==>NfU_^?@5-oqrUI>)T*&0eX3nX`Xt12lHNBr;Pc!8`Vs;(1RgO-)T! zQIm82RX9ky1%G5z>j#5;r?utRtYU|+6o_Xt5J2K}nxgDTHm--Y;6Ti}3))#Wm~J5C zbCN0DwlkDwD{3iTb0)mpo6k3e z$=K_DxSWfdIj=8O){Mm%U&^}MdYqA!Qsiz^)v(p||E`oP z7u6)Uv6^W!_4|OTKbxG>Wz(jIg@D9eyLM^FtyxujA4vD}T2V4F83Wk)AG(-aWv^=W~JQip9O2qUh{Zmyh3L+Kx zgNKSY*6+P8CJw1Nv3aIm&alYA)@0v*$t3g+PbFnoGR5Eo*AXe>49wNZ_)G2&`ve!Q%-H0{Md%IOTedMV>( zb%?}+_0<^-)g#Rb+Hpv8h(Na3uL|tU;)BSOK)?&OJ9&)UsMh~HT_Pxh6+ zZZ|g)cC~r`w-5L#@dbo?EdGQ>wQ&k z_v33J$M5Ohyva?1vDNyaEAoVUwrPj#)R*0DvQ;+@MCztqN#XXb(fMHfvr$8?3qg%D z{%Iom-(E@=ojiSdV|g_7*sZT^AB}x}Y9Wvg8{}C{bmm(8D#a!GJSzLJi`5>?$B5@^ z6d~h;2ooxt)dCg+qn?aEMWT9DQgVHH$slm+>$~);pEog7(6h01V#WBoB|+Pr_KBJ+ zCnLVF46S_YTS%_`f>~A!I1P6i20G(z>5jy1PV+v%`4G4fCcV^O?L(61Gi^(|hHw7N zHf5!ybs2xknUIFW$9}EPHfr3J4Er#Ot-cH(8Er{<_4?mpPQS*PX#|NF<6zBlSV=D# z1%HBZzJ*EwxH(uU6dK+b2RW}!Rn87K?h(3@+`__t;RA6AL#HL9%b!^YVL&4@H8qt9 z=oB$-z!%9}w3czdh4GFY+nGN@ekZ*0e~q~zVyB(v+i!!gx4Phoi|2pd!#mpSA-@6Z$#Ehq&wXOOTdYw3#o4epK^NA9X)y!Q9f`x-0{)c@L)=r>fbeWBLfpWPI9_20h*P&~kmDkz4)SZ9kc?a01(1>A^f>LoWA^ zU`f5mD?}4mnwbQJaO3xv7w_IfvT*$F>yyKdf*YI0AKk9?AIBfZe?(RG{V6zs6Y`WY z%dwvw`T;KJlWwdWVrtG zUMiBtgBFYyfQ0+qc>{G+DRNj6!g^+~{#eEG!lWF|q>`JH4#6xPds0cMaH@j!!Jn^W zE>NdxK_Ur|Ky8O8pG1eEsDb!HhPH;xfJPms%J)FfNdLQ?!Yye1RKw!Y)>H~|a;Lwa zDG*l&Z?VbKayyRw%u3P-mkky(CwF-?{u9?6{vm1*WvS>@`3k%{2d@NW4e5J^Q7yhi ze!HHF(lS7quXt^~16d3O&|l+sZ@RzQ^yfz+Y^zSxqs9QQ+T*0Wyu5^p7T@dVn6(|G zd~%aMP9uB*rT9p55?KVW(9m)2d`t30O@c1YST*ym$N}+n=dL0x zciCGlbuhrt_sIMA?*p=NV{?we1HnMXs;K%>w;i}l^Q%2*t8IluoFEciRDqUzM%-!D z20{~BfPw_ZUHkn?Nb$spe>bDW!oC+fZy-)L$>WT$t}CA`t|7V=gju=11QmXF-7Dw{PGwgEQ!e4Sfk1wT4eUT>5UQ0}WqI{1<06`WkWB;hoZjQa%K5|if zSHI@<$?ihn4DroPn>XM7`tIn1KWBZ_0L9i}PRqmCjph{n1)LL#gw>%aPgh!+;lhYI ztaNXzdgxE=44xeURtG(IHc&Y5zJGjtJg}8a{>OWzwF{S&m6hKey-|Tx$M`Y`=&~W3 z9gSaNmrOdccaoN8hkZ2f8OJ#F(Hvy=9DF5IL~=n%C1T#anmw?wI#Um{*;L{}wt4K4 zJxjeM4i-{syt`29;K5ix3$)v}XuV#()LFVLJrgg z9S;UMb(w|Z9yvWuqgIlWwSHEU-Hryc^-_{7^eYDvj_dsw9XNk>mCex z1{66Wr;sr?Z&QTkWUF5?L6AYmN#{_A;9Hdy75v3C)A84X{(#m-ZbK+X#8qpm zp$6ai_x#5~xZB2B_Bcbz0q^F=+G+ac2CIE;<2n$1FJ8T}hjiFjDBh4cNwbH5sV}G; zqCw-8o*b!{vPK|c!%$YP*c^p0(B>$DW!k3O?|avZs1 zXK~naxFH5-&Ms=w7S+1WKT}oqEkfaGX=&*dn_q5lJRm|$5Q8-9-a&UBV3TRej!0Th ztOAZy`Q(=RePHtRShsH>@!Ks#hVVU&eg%=1K!g2vJd$dG#DPk3aYXV$2(UCI=6eNlyoF8hjwHuG2j-CJZDv+3@ZPF_H0-*!I$CnRZAWmP* zJPbCJj{4F2zrPF(-60Jj5P-sk)@S(SR>qEbR+cfbid#f%xA-P6&0hbz{M7=)qV?nz zwMHayQ{KZ-$%iA{tYd5p3|YvNwUq^TS65%SUxyBTmHWPqz=4z&BsJk2)k7t_^Vd;& z0hbTj2lKt?Lfwgr4MJRFxzsc?#TLI5Ss1G4$2$Z!#^7``&*mXRI)<%K7+bIXADi$5BF;awajwYtXpz?r z$T8W3#O?IFy*`d5JOZEdCySESrLKRW48ObQkY2>2EI>+GCf!(fVLp7i_180?#pU`O z&*#to^2IW;iKsQ^_ZK;?XypZ1ciWyGmqev%nn?!|IKa!x8xzSjm%N203qjxpme)RH|Prg#PjNo$Eo^!(dy!qPM8Uc zeHS3y!HkWd1WWvE<(&Z$^rWkq?Kp`5ig_6if^1npuTk_T-tJR+gA%RyaG9Yzfujfx zkE5grUq~St{292TR>&SuJFu4Nee{p1VS2|n(p61YLL&4VvJa|(hF$s-mT~t6V8Oh* zAkf<~&vM|U);0*enKO@XG^ZgHJ4uSZMdr=w_u0-1UDn-m;d0L14UHfZkLS;a06Kbl@0t%K2*jb%8LaWEP3#=D zx~2LaxFg%eCoV3I1%d$f$~if_Viatuz-^ajec%-(7ywg83E-sOduVeTZai^Hg0I_Q zrtYR+BO)Ef2-6Md^9FSwe7U(MZQZpIiS9kFwETZU zwU(j12uaPohI&?htGaIdxnJ<_7N%6R=xC9aq;tu7=^`!1?tJGwuYsFy02*9fw{U$S z>ILe(iQU7G@*N>v)@u@Ao`KM_vh}|O;6bCKL!y1L&hz>eZ}#3}&@K`r-T5A&kY_G^ zQG75_fz<1^=So_%267A-g2NpaeBR8IYW(x>ud@C7_s96Ar>Dd9q1mxR`?wXHm(6~S zKpelXbs)KL=XGOKF||x=k+G)w%L|5%=NaZ1A7S@NOvi3{WUXO?MlPZ$)RO-U$)+bZ zA@g#wJ(K6PD9`y^erbnAi;Y5EYkuw6uXu>$asQQ$d?{3@%BBve$A16*oqRf>>6Ef^ z6$D>nd>;UQ4au(RO?2do$m>Gh_D5Y7gUK;Xg$Wj>8i$!0JQ%#)ben~iOw z;)5Xm^9J8m_Plu*T=r~desO9(|n@xdA= zT6XpcZ0h{s%b(7L?vs}8bdHy@osPD?CJ<(Y9ZcYjLk4Z#vL)W)RzPixD7ade0ReNd zf}ckq_^qdHbvPI!!5eBnxc+cXhe6b-omucm+?ZoRl8y8LvV+=Xdk1JW+$~2MVqR$+ z0JD6&ZkF8rAzSCe<-i9MHy+hl4D>&kLLKGvQx-9W-zn$R%YG1qh-R%H=D9xgBt`cA8Pz2QzjQ%w=tDayV+%-+rFM>AOEqx z+hTIwr=VJml?5v~Z#WSZy)E2%-#sw%wXCE69FF#66ucBqaUZ#XqH=i*9#X2-s{iK0 zekVteeW-7BIPxBiCz|zx@JGtvWklu0s0dqf45RxC(g;x>gtRq8G2JM_5z@K`#h-1& zMW{b`!-z$|E8;|Yu48tWe4YCC?c0eCLdMo)THbpS0Ugv8a1^>97_O>PvrFrhx5uZA zPW4qLHUAVmeTDq}vxbtAlBQOJZZsnDo{{fl;nt7PNzmd?88YqQdVLx0A9lNDe1&s% z%SPpG=J<(PhD*g~lSd^UjlE;ZCJe(bDfEZ*&TUIZ;n!7nX0$o!_8djHfpK_#!2Ffl z7yDq3N1Jg2Xh+JR=dO0mIZm>|Dbgxt82lR8n4rz`ZE5rLa%u7w%IV&WYh}-#KYtFv z2ZVP3D0()$HyGJt8YXS4m6w3(H-QF@kn)Yt=|@Ro*pWfM3s(Y-<%oe3!PJmZt2ALcD?q?lnYL z!-_yn2sJVJnE78JpKQ`ykgN2H5x4~9vP2ZL=~?QvzI+e<_I?HpLD=1#snnbBgfcMd zwe7JRO~KOhyCzU^$4B0;^5P1dIt)v^AFeDc%{{w!`_%A@_?wmpZ;rmnmG<*7cN(9jY@e(8pA2)HMa23keMK!N|4IF@o#+dv4&w3T#m z{A#X`?_;j6hMTCzY5oXb^AAFoYRQ0^+=So#}h%A{|L~c_<3bVRSybfJ_^VKu4>kz0GAzqfH4uchf<%mF4A2 z^n{y-sy}36bQQb_h}%iRv8dU5&)#f40dcfLs30QmJ8~!ORvkWclnGSq(l*e!h&=e2w!<+2 zBUl3*Y`7SvurU{UoO6=*5N>#`?A7# z_*d(2pdTVdAWd(>Kv0jHfeq<27;4=hUY3Mw_c$(eq0k}hTAaee|C%g!c?rD-G!YFR zhg)m*^W!jjC+HKbRXYGC5_LC@Yj>Q8t_ug}Bi*~uoJhVlfm2T=45 zOF(ylf`l_bDOV&`co=I!kc@nfeA+Q?2HO!TY@{V67#0R1VGN=VEQ`j4_0N+FE^%RY zcTqqRaJbtt<;%_mvah}{&Z$w?t)-6YV)npGvJdrz{Ek}TvJpj$3iWg8^>cy z0S~^RZBj9Ue^6dm`T}1N4yR6?LgQ%=_DJ2|nA;rk-H1BarU=o}pr9{I0zg5y;;2z? zT)ZeuTXsYiH7p5J3wV~Qru+xuY-lZxqVz)1a6QI{l8OqgZhz1GNJK57Y_E)+Rf1N` zA%Pp{cfw`NK*1R71)Wf6dPzkox53~9G0$06<$0yQc z;S2{Gs5Kh^fYvXZHL)&Y@(84f^~X=sh0#zY zh@pM11#>O>2>(K%R{070Xoe@8q^m)p2&oe#;yE5~4D~3qhdOtuPb*gD|>*d3(NKM$!Z&kuJO_svV5kea$YNWZY zq{8#{Yr)H(EbiPH>S|?VV0ehJL#v8+micBh$rhR?)hbrCScD+#5cFZqc;O5A^Dg*0QLFP;MO7il!7*zQq|s zwPS~r&EJSir^;%syyjdWnGd+8++Ua-Z8e8qPgpOX?neb_S=7s$?|stgOdu+85l+sl zXlwHZ3wxsfAI~&`f-ceo-c8W9-3LFKbuEMEpw>S{C2U5g3w|8{7E=@AF|&i=&g#Z| zblfM>o@jPEt(cnZ++rJl%_G73&x_qWXw<{ob|I?G9iWv+x?@BE3Mi-`ua<_FlKF5{ z_n*3hqm>T3_F82|qj`JAff->BbY{FLp2LWj1K^tF5GX{0WiGMKEmjm9j_0M0&RqsYCccw%w~+2uS_Cl+{r`)c(o&IQVE zw(w644qt#Zp!x60`%OZL(lS9WEOR4^}$5Cp({Xs$w7K z5if+VfV}~3)}Unx$<4lM#RNZ9?*4Dr1%JdkEK>#!UT;aF!WT8sJ6LFr;;pLiD&Y5g zqR##NF2erl{B%^5(wk9y5HV6*+Y}1vJc6DR#G7OHeDUhEDu{ypFCz;7LD1-Ap%JVr zY*l&D^=Zias%1GW<>! zLCn1J9FL(KJ5#>L(4?oR5Yq-=_VN}Rc_z4Rh`>6D3mc%WkB0(t2{U9Rc`Wgk2kmLEuLIZx4yQ#f z(%CR+30_`G)_#Rv6!6T#H=lc}c^q{wo02yO^PMKtKI&tGmfd^z%Anv0e~kjm4xKSn zwl97tR_(7ReBH7#MM-5(FZuaK$d$yk}x}$83YD5W#tEWL}k9REGB$I%vX_L`%?mv_%l|n?MzX z+lVf>=Zy~?;aat^&`^ST(FdU+5eNivq072?)24>?vv3(;5avQG4(Elz2|yu13<@Ax zJdTE!!h8qJ;t_ITM51sp5!L@UZ&=@h1`-N|1Ns|~H}KAHjuwM*LWPZ9T0h2j88BfZ z7%)<7<^U0|#pgWMmQGkcvJQ(l|5#&x43eRfL^x@h?_D=ijK+Q`K1Y2t*_o@o#P|wr z4UED;=G?GWn(!uQ&b-G74x2eF0YJ&Sqkbw#t)0gOFfOIgMo&YHOKX`IV+VSEJVp~! zNb~(kmB|LUzNb%}y5zPn+0z4==evcOtH1qrxC{`z{-5X6QS^~Oh^EvTm^M#QUy9s0 z2lL6{jU&`!(+8~1mLmfUixtFLRive*VXR2X?^yT1FA$%gZt}a0$4W2hr;6R+vKuLj zeX^a2O-w^HFUHt>lz2GeTlS07)dab9f}iN*1(rkVk#V8|L5P;L*jVTlIpnek!Batm(OY2iL$cP3>qNu!gN5uGV;F%sDg9V(Vw!OfmfY~M zV}%2TDbwD);}1UMOJ7!5!XtM5$e0JsDh;@H@=X>luoG=-HOl)7S&_g@;jM68$V)wC zmw81*=vn*OdmrT!z9XUxLzlkrwNcE1xn|k@fK4l9G;(^PafF}&RBzo*KLk}ha-0T} zX^ zv*vGb9+V3naUR`XKpan)&3gz3Xy~kV6KkC_Iyy~&Oq?AD9i0}cGHicIiF~*)*or7# z$$Bw8j^Vl=*uQ+}D#$Y(IDM%4pmj8||KL#w*B^yA5@Ck=WYW1v#giwuIK4gg6uWB= z9|st=0>Xof@T6OEi!H5Y*%?r$#9$lCf(t|r*rsl9O&3f7ms`&W(Kxt4os2vjIgX~< z!59TGPRT&sbA@7RZY6fkM=d+)}Ss zvqj@jL@ZNm+9PiJsy6%;Is$RFYOtm z8POiqvW8u@0~_E8I8$J@lVPVJ`h}0n1}tUZLy#iq#P$bv5zYAYXB-vpa!gCia^MP{ z_ru`E11#?8)2GcJA|fKNt;B>vLTgW)21od=H%I4D(}YMqR8cWzs=!P^tVVb@{)M7K zuZ9nE$S7~75^DOU7CQuqS?F5TC0%~qWSh91mcSkC8VI#cZfTKd8a(2wyoet-Zbymq z`DF_N#18!HxZRike2wG}1NNdv)6d1D=LU+;b3)z9@V>z<2lU1ru0w#o8hqmtXW zhzVYB5>)QgXoxK(7ueMKw3!{mq2=Vc9aacB=HTD#S99(0iw$rf4>va@7u=TPsMi^s zZ{&1rQznDVIAHA-E<)6s5VjxuvBYuocg)Df7{A$eLWt zCi+rMevR;re20FBm@fYPrLwgG1Br%3(rAipZ=1fLUUT2rRL*M1D{l&#{1WT=8cPzv z;8=+adp)ExM9K~l;Jr*}TBa9Tg4_kB0L``h|feyt8Xs>Hxc`aP}d? zGay56zteBuzO{bv$rsDB$OfAUV|#NmSnPnl{aZ6PL0R;EESF)wZF8RUhxHHtLPwuNKLz-;6*+iyzm z&tCytNPR@USx2^D_NiMKK)oI#TD0_sb>r__8^4y6lRUfXGaWrzoq1A@~nadQOR?ezM87(?k9L` zEki?388&5saIBgpi%(WV8&Q>g8h;Gr7es|BkXn#|S?{a^5W<9I0W*ceD|Tj2kUw)p zFeb~KlRCOM!c2CqyGFKp~pJI#>ikbfOUDhNjT(n@pJNHa&p_Vm5#E)XeMc|S6>zm2% z{#Nv`SpE6R9Nu^)^-Clp$mr8bSs};ka#VcB`dh>YiQyjj+Z|c=tWlteI57(&HJ+cN*3)q{y&m1Mk%Usooop~RU9FD^8Bc|zWInVLg zCb!+>&cp;i6$uE(ALBN7h(}o^DYUc2@~RuT{wy>v2DxNeiKZ|{z~+{~ma~tj9*+Nf z2oCH%mhI5*w&3jO?}qm@3UV&g9-+#z`r4(9G9Nn2#(c^~8Ur@d-P0ItTlsRVeS97g zH(!p8wEA>_M+6}`Z_MnLBSUzHGYQY!$idnAX0BL3~t#IzXEWW^X3$}y6~>f-%y z+V{S~`}hGsV{3-tTd&a3(V^`xd$%bb7{8P0NW|68PcS*~%`5hX$C7mutT)0|K<^Bo zz+djG@fdC|uUwM>J2h$j$sd?Fa77Hj`zW(9z1bY2y2tOJ2t(wsM&+Bm)?;m&Fbsg_ zD}!pv1`>Q4zcC_n`EY>qW4t($7!hN&5QBMQC&=%S+kR!gU=vl~9~dDI8wcGw9>s8Q(owP;lQT_+C-v9=meG(!p!k7M$ZKQ{QYNaM|&Bjc2m%)?e7&w^3k!=}O{sy5aQdx9hnPIhEm z`*f^UItC1Wwz}0nIb-VLM>C)Yv=u;cl-0Z-@}QnAG13nzG0cCYwzdGj`cu@y&WUHR z=!xMqF0`VW^x_v|?Ub1{2fJ`0?4Efdr8j;suhsP4e#Rj?vI{5K!tE z4~q+@&*FJ`^Xn`q%A56;0q!t>yXAB`Gc*C@V{c5g7f2*C7+b_IqVvQlpx=l8N=mRTpcza;Yo{%(I=A*aAbU0f!DB zX9A7f6D<)+6TWCNljQN5OvC*{fSYP2bfdPAdK_kUik3TG!#p`0i8LxEk92GdT)c(> z%O&5l;g;T7d6z$+yOV(gFlA zWtc8f%yjhn7hDQrR2tKh@c$GX;tleN?!<%ss&r_WdklLTMTku-c6L54;{@Li zp&*>yEOP_5037ewxwFt=DT9G4fbobTn}RSYOZE}~Go6oi%hYX@n54hBseZ;bZ!LHI z7sna`{;;1ByLRmwqTA!mo1#WGW5PTzlR%>Y6*EqKq&3wujY z%mRiD;2k8^5q53dA0!I**b=#dM_29BWa4_mX{~hm@@3=;#-R`j1##!$@GV-vb0Rbl z9szWN1`|$N@LYsEa5Kzt{$j{^>*D`0w>DrD(XfhA5l^*)@$ltEjN)ULAD{u)#saU9 zrcbH>$`iJRN*@=~pev`fn`JZKZ3+09(-uEI-M;~287LB-l|vX*w<77%7jL?qB3{_s zjS2KrFJxHS z58QMd#f7}w-@@@b(a=y#gvw)yK9TBw5FU3vE)DR8AXW^$}*cNnDn=DwD1CUjf85sELL9F75GPwu~v{9j?U7P?@Ga^Io)DGaX%J?211mQ2!?8- zuj+aL8wf57UKL{x-scF*`W9;Nf4zX--m4~F9@o)+`hTZw1$@-+<4~a;$mEgv*f>W+ zvzZq>Vc#Fh@blMFS)Z8G>d#{xLvfBM`o-me$Oyv-Y@SMaQmuI^=TQOp)5hgu6W%E~m z>FP9KqO!7*L)?OM{9@v<7eEV>pC7Bo9|6@^!(Y*i7=`(t;~^>ob<_I*Ex;JIQ&w0E zqjs?%2E1oWG$27P+js7SIXi(yq0in{7zeXoQf2`kabNLPUZ3_Kbfc&FGU3HR2cE}^ zuj1mLAk6`;G?>&t6l|<76iYSi2Dr~jTtGvh=>r}EGge$Ea?xd@+`b*A0wI|Sn+d2# znL}9781A8m0|+!m$BB@wow+k$F>e`zXPxWl$Dso?G!uLH!iSIrE@D@DpktXWK+vx%@eJ+95ct|c#gR;@Bljd(@Map|Lp((MpT#cQmHttbCVwM*M=UmDQ}N>UG^sTh7qnl>!ni z6Vtn*GEBCLf!9cP5GxRzuyu=|A|dgb5xux5e1Y@j-!LPBpCZNDO|qf3W=EP;12r&{ z9$(art)Dt7r_A^N9~%BJ${dsQjEZ?0Omo{;&%@I*9B+~qr^7N?h06iz@O<$icO?@; zqa||7ap(*}I<~>9BYM&mTVv?F?=I&%?d*+1iz4y%^_!4~F-*C*g^QqjOC7?c+b2Z)MsB5QEtm+qlY9flpzC ze0SDSl$0u0^#AvHWMablwQ2s{W`2fWvzQQ1I!wQ3Pb=ITfZV1MY|f$DQH;93(;6a% zg3wT-A>G0ImZ<9-<{=wrpns6cvpJE8t!{O@V9D~uN zP>|142+`kbrUVWGV`6+Ki&o53D#nTK ztO0JCyT6B#g!z0kpgtxfae*5c%3j?;bhw!ZJ`ls}^&c>Op-*v;o14%xc#)SFaC^4G zA-6oVzw8L+I>rpwF}kz?`wDgUkHqr=8=DDf=aIKY_zdvsFhP)0zn|O%H(ebshoWib ziZv!)w3QWF#_w7sQBI6Hta=kgmue&PGYCOSwV5@pl+k6>4F#%U@SOMUD~)^CI82Oi z8VAWXC+gq(9`QIwU?+*`MvcHMT4C{m;7J*@{&G}ypmh!ANyIB;g6m7Sk}!$Dpj@q= z1Lp%tvBIW@VFm>HrPHWSDmN;~BETBD%sCx07QOP}pY>bk(7=zW_pzDzqb5LEPvM;N zDaZbTaS>{i#j%$j9y*?~Sk3KLWXWik946=z);o|6IMRWXj$-HH`lnTX0s+PQJHk7< zQwLJ)F}35qll71GEu_l&!`So-ox6~j7yLT2xgjXd(D0kXwd$JClE7Q-w2EPNBMBHg z!#n5-h3jn8l`x`2)M}A}kX@L7H>z!z`S%6{{<{Tq^z_kRYl$hs{8@r?YX*(mKJS9;ggaCh0Eqo57tl4Fp5&`mz0$3s;Sn$hF9dY-JIzZ)x%{AP1=Pw zu0yv^fB1_Tin#z?R7T7UgVDruXar)Em&g7o+T`PfJ`@UnNL;Yjz@vddciHuuy zkoM(K|Q)AzLx?tJp}X<_+E3|(XN(m&Z!%g`VG1YEZGQrVg_ODCBB%{V{1Ik*2B z$ouYP9#_0~QVb&xU3K5{75Vmy0&y5@8rA<(_~{%7Rp&7hfta(-yBOCPD7ejhuX*(l zl7g6wLVQ8Yp4W#c^`jo3-?i(lpuTABtY6(LKvJ}p1^}ap3!6LFy^dbOMT1$$#P0k< z`9AR|XLAzL7!9v;9WZ)R z4pn0q34EZXB5ORPH22bc8aY9RVa>tQE@>*ir6th7lW zGzf@A&oJ>TG8%888u7(g>e=jOWc;(A4Fi3>&Tjtfg)o${f^}KWaABg_JY2$*Z#p}L zh(G@eC%}Ir?m8qVF}!5dD2ZWq7Q^Fetg;R^H*ZG!3X6(9LYaVSDDnT{>&wHT?Eio7 zu@0dzR46i;!6+I#g_y+5n6V6PmdchaN%nR$i6R*Hha>p8g9o~@8LP}Q~-c!i3206o{$qBXFB9UVi|&Ao|PB z_x<(kOT~Qw=FM~DvHc4EgWB}Cq17`fP+$;S04~sBKtMS-x95DW$1k1`hV~=1YeL#& z6coPiKelbd7jRFk<+nj<3xu5@ko)j-GP2qT7Wn2s5J<)T=%X`4D{s}qL7m1`Ku4>3 z&yzUx2u69#nQV7x<@LXbSU|oVVSIo8sOwhV!e}E51LJEa1LQrHDxB;(u-Zn^O0Ue| zTde!N7&nHyIomAs33Ky2G%!D>BU{JN@Aw?08dgqLteU-X&r5yezbb9}R5i8iQw<)) zgRSG7lP52%#50zVE;vK=R$968(~%(o8d4{^wwJU0M+4wahp{M)UCzb+rqaDkZ}mOq~47hl8{jPT8ybmR4Dnmj6S*(HyFhkRA}^9WEp0rHc6Y`Naf9niJI zA+kTWG9FZhYjV@gL3i_Qm<#bC3w}B7+S%ftR6*r$FlFJ zyd5)9Q=Dzk25mp=u(o?vaHjPp>yMLdvfOHsuTWFQ0{e4Do^BXRj#(ONQ~h`~sL2b? z>^MtMe1+BxYn9|u*v#?$WY&(WorH_#cPBcIKW;C16@_~Fj1~n<$ht2x@cul^?R#T1 z^)BqW2vBHfH&FQbmJ?&R+;QhP8(@fu% z^No%@hwjpgf#~oU2u%N#Q$fpt^Qxu}H9Z6@0)nvy`YdGP{Hs#nff|cn19^ESWW?!xH=lp^ep{%S7DS>jBKP#vYJEdwQZ}u^W?sSRvVx!v? z_u%d8F<0@Lv|oES<)1}*7M3+Xcwn^8xEBBsBi~LAysUE`#cunaQ_I%QtQ;=3fkx}~ zg7bYKntzp0hi=TSG~K)>;sa0D%@6oOSg0D%Ex1fv$N2#vA-Y)%_efx}8!YPWL8nb6 zdtbq5{co6)ZF9GM#N~+sZ<@JpA@nFPFGs`*XLz81;LmxzSU$C^?Uwvtt3Uj5&kJIH zj>%GTw%cI$?yEl^G}eD^Ty(G;-wm{+6#&byL?GT{P~BSjUcn$pp98-A-CJnT^~eM= z>~_LDI|0}Oipzsa%5m>8&;`R$3EdW|TLeV)8`>v9!ABjF^ABR~ZVPzMJ~Ya=>|5vL zd2my`_L~vzcW>kWESoCAPmRifukS84jN1hk-H*`qnNuR3@Q|nlrcs#9+pq z*DG&E|~=0%EpUm6_R^x;!G@I-S@2(Y4@e;kn)ph63n=bvOk z{^2;R-HJ;!Ft|cje+EzqXtO~%0a!!zFG z(&*~j2bG_`>;H*CMNv=-(R2*>B+8&u2mMFiyTRJ+#w(kbs;iH|&*9jgAHuC%xd2HB zrqF4^Tv~np1{^$n8DD`ntHh7HLB!PKmtfh*3Om0OaPG)ezk_;Pme)SKFsJV_0$K#P zpnyjl29Cbk{@?cDv_JbU!fvlQ58|JdA;Sr24I2FD@gX37MG!B7fDn4;0sozcKAJW_ z+syvptiSvN2pWw(F=qPz?hdaB*Yi93^;=_}TN{nz5)Un}t77=Y8~eXz-fN z2-K@8g`e=^M|KZ-YO8*dxgjd-I=}8o_qr3=>-9cDSkaKqq#Ydi(DcLmG{9sz@3p2a zNGs@WnB8gMA7{_hS?TJ&2h>J2=J!%m_p~?T7f|#bFJXgN4~s!(c?dKF;37crNx)+| zWKTn!)!^Qd{!{Ac%09BYj8487T)2f72S@P5YOhm(2k9Ot4KDbx?)Z2EY^V_L{Lq;PdgvS&nfNmHX zhkL$lxNQxzc|Wez#^z3suDh4|)>`SwhSELtD_2SQ>g~Pi-%hQk-ac13>2(|wIrPPSCR~Bl-+U&B z!2mn8)^ORgXAiU&#-Ho~8UEV4a_ow~qm!7n6R?DEmgOF7fCcRhV+2f6+_4L5Lh|hZ z?}h*O2TD&RpTeJm<@S>}M1}31|E1>fBK?E2>!w_gIKoK=8BLje{LQyR!r$9>V18@lFOK5lW zS|{KaF3w4)Qb9rkV$8>-8>JgZ#$b4cK6eOo+aQsE9%cB}u?5gqLD-D6yc%!%$`hMWhM8?{I3_k4jbR{3cLI_OFpx#ebSw6(S2-2rdQH{0v^;hg&>KyrX2 zANmNW%e|4}F<=J)+5sb{Rl1Z8{{}laG3{VMT-2@L=_N39dtKY(rguXOl#G!ZwzouA zAEb}P6=r?w^10ZV6TXNAxcT4Qn#=FUS{t*iM_1X{+ysE9H%I3`+VPNl{e86@hv58s z#XT?TMOQ7!T-ND{jR51Vx!~e3cGDbk_UP6o{qLqhYVae&#bwLrp-VYgvT$%z9`ht0 zTi*Wf?{D|W9>X3fIh6_jwateLv;2U(B9Ec6dH|8mbA9f3&T0Wr34_0ZYe~W+r4Kqj z8Z9Ne^HGqg?aD z>{EGQsn8UGBiw^Q$w2#^vpE7t!SC}wKCH<3RlW7nIFIZO8Fcxoji34fPXM}QN~oZh zvKMBUe;P%AZyg0){FA$Y9#e0LOD zOvvLRhf3}FuP4Dzzb;o5dVEW`d{FV@7d8CX2cY-u@m83Y_oh~Y5)4G%0FiqpcR?)x zC+L=JW$I!0`MCQZASm7ytIfd-2Qdd?F@D0_l@?9JYCA|!cNy{f(b|7~YTlGFJgUW82{ zStKAbCL@;^cyF^_MxKQ64i4eB=U1MNIttb$h-!j@pmXRqH3g1m;5UJcd~vM$ZENsX zaH$6XtOKwenM9)Jz~~3ck$|s8pwDQ8P9(0NW-E3-e02}ciGSn!q`sdDPzA^n8XQ1L zUu{_5{UZp?Go(v{qwHnGv#{&G^YUyNs$hBt@lk_`JwWfX%@ChjkpZd}R`I%TAWdlA z+pfEtWScn$85j`11Ol?LOIDfT;3F;pw4fpMWIdX<819Hge4J|cz8a#_D2?UshT4D$(=WMI<-SQ)NWY1$U_jrW!tELXr8`O5DaKn zGP@v*>-8V;Q=bTR+e}XHiGZ-fUR~&TyDZ_XI_CN0U?(#VI1rChxxdSbQ0qMiNkO&- z-IF!=#OK!lT{e>paG_ZfQY$bivG~yNuAGsL{*Arg%{zru=@ZX_YH-+WEBmS9gUMhfm45m z7<_`rM(A24kS(>_5?Ls(`0xr$(FkZ*N=z=E!W#RoqDkpi!nx(=u6ftL69^b0=kqul z4o+Bb{`aiXfUZRl6yUzLl3Kxg76DF;3Lbz=Xw#J_E)7)8aqw>}UJpzoIR2oacdkz8 z-)$_{b?6@K4Acr7)^hR;DtLh?jJ`LYwu_@qu!06wx(#lvYig=9a z0j1)Y5PtjN!-vo~LYr3$AMu$cP4ER83~(MSL*Q_LC40rr=oF;yf_=o3|J_bQ8dOSc z2fu~%Yy-oRx_XM4jzqH;Xxm{SVkSU%*Yza+St?M5?Uz2opOyoS2sj(?1fLHCDuY-N zKy64MwKlu`x(nn`@?CIc@1C<>4|}TlsqV=!n367&HFj9M1BwGqoI6mbFPqM+PxeLK z^3a3ARr!&BH`WVS1Q-mjLoW`x`wISH2;PNe-(y|3T!%?Nw9lye>D*X7N)rMT+e6<) zCh$=p6EgwB66-++kXs-hdvO75HXYw_3aLuI=TJ>Zi+e*x%@#+a14DVs_7 zYWn=Nw6tmX9H1SY+=R;8;gZA6X17ewjnxMixXjPOt*Vhl1(|T+Y7W9xfO`g_j1xN} zR(jxXLSo4NflqVW(A8iF9~?omo{qC-KMz8C1wX77nN<}j!<;?0(0c>;sZU05vAz$i zQUQUAlG1CR32^a!t0q8~1Ldxg3sYO=KlfYECV{|iuDKIX!dt*{jn`{!hj#{-*r%vk zFh@cS^sJRbt%^RD{Y92S$7|c+7)1?@|MnKnc$u+;x8A^U!4i6$6}O4MXJbDLUOh}Z zYBoCKk5-AE%aGTFVCCi0PoM63VymG#N#sK!kIbCI*b~>z+oG(ObA=x^1ynSqOUn#uc#{;?1T+t{3gep?TnHw_3!i{MfYgv;dwA! zVM?IO7Oh`_f*i?@pwj|I8OCzdCHPEjDToW_!Jg7~@+8!87~0^RenmcD?veTFe?-}A z0WcMcvQ5@!*iHYR*rB>r589f6^ME}FlxSgQrYm$kFdsPB+wbvw75eb?Y}#^j1q9%q zIdIhc-pT&|*bdx$Q9bwnD-`Hg@%3>~V?+CdMkd3V45@4DfP#dY`tSA=*oWYD0K^F_ z%b;RvgCz&;oog%5nqb|y=-q3xv7Yzk>I0jv@m6V9pvVe{SSULbI0K+}k9S-NM8cK> z1pqC@{F)0szY#{FdY~8qbi=d*`Z_Zk-}VFMjXUc%qDF%DNhIxM&&|~AzIY;uqTU$Q@dogVvVc%%@52(yM zCF8#@C&4&}1=v3%b_%ZjWz#jN`7U6m4VbCH7Wh>r#SOj=A6gfiNtn1HXJ`K>Kh))F zS~tJuh&vJ=hjYcWi{zQtNv&{hyE<+@cwnh;1Dx}D4~kT=l@B1 za{%*$|94bTrEWR~_aD?u?1P6^7rH}~#=;v-Ms?uJ%S^?8L0f|nObM)|>Ya4-(mDG! zuo+#=OLWFj?9T^Y{aVP)h?hyE9T)S$r%JbNxd3-~-hLr|q==ETruoS4*oAxO5d3#7 zN>13^9{P~gJML3YTx|#~c%4ZZ5A7B~n)^BK8M;XWq8Ll5DaZ1L{0AWSMG^t8wx|vR z$9@12P{zazM}$tdBt!ESHUHW7(--)jTVBf&Dq!)zw{1+K!5v=$vfxWaMb1GG^$jN$ z>{V~TfEuoViUZ2VHQ8k_u>9Kp0?H#u8dl%qn7$HJ6hWtkTd^X{2Y%;r93>Kp$c@)q z*GyI{jl%x#yq}A14|NdTC8+f@^z#K+L2y{X>7t6qzbY?65spwN5HsA!egabpp9k}? z+w!Z>v6j1Ey#5@r#Xc^08uL&h%9-*%{yb)Diw%!K>#2w!nci~=g`1jWB_7bAq`#UYO*K9}c+LPFO))1MzqG1yL zkaPa7m;AMTFUA?fv$c^Zd4#tv5Xb}SX=KD^s4idL3h#UGh!D=UfF(VE&DDN{9mS5k z3`;vW_!{gM;~w5NkE{I`3GSrDSCe0YXePA43%Jm1{Y)@KH&VW&u}bxKJQfXK;vW)P%}^ga5;9cG$1u2W2@*3 zjEJT6x8^y-2YH4Yk6af^X17!XT+&+t(ia5;;D=iubw^;7gjfG%QY+hk{Z&0w?f+0l zZ(!X2FJ;v7_Vee61*^P|h=+F=C~> zJwFdTJOW?>Tnm^2_5&;eje5>b(~op%qoRPUgw-4NC6Cr`0P(|YhJt+?3jPEH1c3K( zCOUQJ$_U6c3ZTI83+dWIfNjzE0~phMk5^DZwgi325zx;yaP*OF#-)F{PU%AzoAV3n zTfOwtPZkuh4nQNGUi69saMxaZ z-<@@%CZIW5#8uP!``5G@&7?umcr@7pVw)aJfN66A&L|R*2%kp)2P_nht%vj-$M-^r z8npg@0S2wr|MDc;8V;BoXzc)9gWzoAVKL+(WFMT@|95r>KnR!+nBUc~ge}E@(z92> zP&EST3e@NsdIustr-0A0f_DNRR95!d>et4q6o2|}{X;J<{m|EO0>EoFoBPXnbJTK_ zrnokTL1!%&RXAbL)LYQo!Ao3#_W7A+HJUmGY5{0p-2VQ6HPcs=#i&zXu(u$;wEh4R zB)|%mfDP{@%xy4BL-akU-YKwgJlHg^o{Ip{ui_g4kh31j%!8uuJcqx$IeSLe^)D2` z36NW&2?X#0iHV7NUmrpbenjo#|4bXI4TQ!NYAW<{ zPMr(PKX@3$oB;&#DWyu@b16Rha5hylzXK3141!8}1vK&iy>#g_u;1mlL^QfMCk9+` zIPys*E|pM({6~NMdu0PO>Y?=juUst)|NFXV&DJ5XIpz+UR>{$~ymDMUAc7k)M-C=E zcfL1`FdHN#$wY=%y8nE9@Xt6_U-M7f&a{|!kzadp}wQqXJ4uxzQ7BD zp9AXicn6^y>g{7V(5Bk2bz72;U0AHA`N?44c0tj`6)()limIyBNehsSf8=ZHS<9UNL2(=xd)o|5YT?E~^V_tyt~iYj6s{nrZA?`4W8XW-kN4Q=?PA4yr{4Fp$hcpm@|7wVq@TsOlP&9Cm$sS1}sz(X+| z1vF;TH_PF6&A@c`C#+472zt0LPp}<|E|jt-AYC#sxdy{NYzmfHG+BLgQeR873-%-Q zZ|FSK`}GWr%V3T&ONOqw!e4*pPRHA5NCTf_6FA$NBT!0#ng*hUg-a+<{zD{0qc_2P z0U7)w&=A(r53u`C0$u0?pUXWTojG?lT!HQ%_?PiY5awlkSsqew9X>)@gXQ)s?*NGT zA=+SLRtfMV*U6i;w--Xt3!sZnsJdYL3to3laOd^x4+4yDFAfw>X-M6oZ(0E2+V+j+uY)%sCZ(x;<9C1FYmHL@_@qE(?P1XTzn2* zd^rElpgt!U8c$_?+kO`fPrSspJo`~g5ILsx)cWpmM_)}p9S!rKtQTkZjAQ zaNqo*0_e=vWv@d65W4~*2g90t4(dN}^3jc84UMf#-a{dr1f=LQ)nqfZ1=Nh3=lQ2$>R zp^rS)nARsc<9Y;DoNm!JhSL3|r2NU5BSlL7o_*EOJBQf0n~o*}@0w?*#V?1?F=_qQ zum^<0X5e89*t)a%V&s>2D>MxQ_WO+>EqLZl1n^5w2-UU!$MwSha`3|0S~#ixh4KSS zBH2txDg!O=51WPzfbfq3I^L(|h^_W+{sMg!Nbx;L;XvqE!%=@hkyrfSWd!(iUWT8m z&aP5o@A&F`K<QB^z5Ux9 zlp1d0<8kh4F}qB;ci_r{y&2Uy1|=&FZM3_V&ckt#eHc|gLiJ6D{d;bG959Y-^2NBf zEMTTUK_wIcsCVnZs%jBf%HaV+J-2UzujGDE8uRr_fM0q6`_VffJF^J#x#65aLHiZ9 zApf#B^gRr^fm+|Az@b6q6if!A%56+x8>mC!FM_XUI>G{!0?>Q-fM#|m1I;La z$_l-m7d#Va-~K2lcyNK5z3aqa)`HBx{ws_VZ~#Mo@_m5V!Ab?1C)L4OBT>%Tp{}Mv zc(4`_8X$sx;#s7*5sg02A3(M4;5R{^Gy%%lo8@|~OAuN67YTUUwURc1EvqO9Lyn15vLHF&#Z@C0FM2tgC!m!oLNHec<-V%F@ z3z5fmd2}6j$)WSiUs{NAyVS(@gUWKYViCyEslyU?z^$-N;%R0LFiavAO>nUf!#o(l z1?Lt_EHQ{CK3ayEppbgZ43TX|<|+!$NK@GF7k?OtAG}DBVkc$pI+*>I{*g!klps$R+qg)rqdAJQ`tW!X8WDQ5a-C2QND$#lef&ldgQ*ZsEW{GPfW)7_m27 zHrr!yK8=c(_HP!O_oy(`-+xV;s5+Uwja63Ws#8i2(VE4H@eCX9^h=ssN~asLD%Tk| z9RP?G$Q!4p299@jm|KN+QJ7s?9=k2c%{VrLiWTOQys;Q~Q;$XwkAh@U^VlIROI7eI zl$P&PNxtJxn@9`hxH=@dE%)cJUwzNx7E&1lk_kgGKEk~iyV%}T-eC5`t0X5GHkM%L zBME2j!HqR9i(JzcOW2Ho6SyQc6)TyUwA?;|)v{N?2VvpX$;(|o@%CZT)!T;x!rHuO zs<`)Swp^oRYscv%+~K=xYNlq6ekAbRdZ@)6n37@aJ&hH>J*NoVda%nh23T3GK6Msd z>Mj-7hjU2b+o3sRY-vfb^DZ^l<>k)1E7xhMeSM}IWY6tBmo-;{(8{*Vs%T_#-5A{K zSTa6lNuX^tq3O<>_5@dXETvDkoX6I*|7Is+)Um`xRf`i+;GnwsFDoKg*5HIhhpD@3 zhh1baEi;LxiLZKNPg}*GC|aJ3<9^`L$Q7R>2KdZrCMQzHn~~8=!pUe>P%Pq`Cd6_s zj;Fzd3|ff4wV*}I6xZ9 z_i0e1+6K_}xF)T(!-iiCjV;_AX>4ZD;}ApV@Yr{|&wt|>$(!`)mU3|E@Sp}BuB@jX z!itYAUvPIGmra3(A+7aNPW0+WkoIWn;8Bvz?SurLt?rdD!w*EJ_VZ0^#stH27LBJD zg+~mS2!_L${`)m@g~6>FN5(3`%L>CA-^R9Dh12@jI!*a|1|LQ5-ae%3+Na{rYz$Qs zVsQo*%h*>%cBLKd0ZFHg%(J1y-e`GzV^NZl z0bk&LJPJppb!_t6v8$k}h{k;^jx8+^D2Y*%f+GkdNlji7uQU2MC8qbIbE~Fu1#40N ztGfk{mvWCc@fDXp;73bI?p~X>Q`}d(+evG{nJh^?LBWr5@GN1Z#BLewmg6A@>cL^8 zbwLo?BBlK!Z*;F(-Tb^t*Agc_wto1y`oWTZjXhVTpU)u=WBOJwua2xJ5V$Qj{+JeO zkGR(Gl;9!;i-JDKk5Xwpy8OQ6oTd^ofx~uC`3f&pz)|c|A@Pg^!D+5y95*Q*n*dJ- zTOm~8-`_1HU&Uwp~=$Bq=vsjy|s+%wr&k)gbS zBmt2i1`2TAw8hKVcno(@aNdL&)BP?x&}qenBS#lX%VG9>@GN4JgxztaBwbh>-yb=y zbYp-dLv;S^w{v=xr*rp-B~`LCJ8Rpzk>=YZ-{?!jzyq>;(-f(g6kbW~5nixF3Xkg+qOaL*DNQAk z1eqKhoxI1)Yfpr2&YFRTYtF@I7+5G4JvYr-L}nQ@Ipp>G3UvdiRoX-OJ<|mg4xv9j z&gwLQhi6n!@Ei)?q?!_jtn+s+oVhkEu6{=Iq}H>U%f>#H_j{^*;*thzgS_Ka%J0|X z4#*Uu+u5jDk%>wWnD=| zf}u~a*6t+j3JR$*DZi7*rco>rESVHRsL*PslS#@J@2J?GY93w}AtgCw+|knA|4d!# zU6GSJ&B3y~`wchGZ_mQak&}m;KtTXz2WuNc7bpcGJxveZM7$Y~fX)&E@0OC;M95R| zyu8>>gAS_GCm`PunxGn;12?QMMorbfmq2!WdTQ*HgIh)DprvG-R!owXmVO=vk9Ev@ zmRC|@i{vZctdLvBL&`ZghAt)JGnULP(joT#v*)(f*&kQJoWJ4WZ?Zo(*SGiHu^%tg zNvAUHrHh_Ym}^2G9@D;1A*2T$iY!bPh0GDP$E2e4Bj24J6BXZh{e$0X}Y!V&&|ZAQ2o7XP5-p7RP$35=eZs znMj7mm1ZhKag6Mhl$Js87UnFWIAfT+2{dI()o> zx7V!?YjGEfMHhDMj(QfIZn$1(D!`DqNvDxLwz{SEL27Q=4l-0(G6@^}d?JkNyFg&lq%1|_k6D;oF7wVyuBch&l;PWAErs)oTGvcw5ts(enNqplwA|iuC97lm z#=kw9C-Vlu0yDDyB^qcLX^tfT;CBUjQxL$Q07`K0A#Sso4&R|^LLgFP7icv0vT&Vm zq$b(40c>89(rTOSY%vKa8w_f-CO0x`xtK&Y7r!c?tOVaEHTzE|kGm>zU#e=Q{ayQg zK5YB@`i@y%Ja=xXY{DO%EL(i0M4Qj?RicgDgIs)5rsfGv?TA%l8o76(RRtq&G_sa! zn_I(wNaYscN;p`CE%6-lUz|p#%Hx=HBL^8nraM6Hv>`ED>{)w;re@+Ia*FI0JalRH zk~B<~M+oz&sdm$;1w|??(>Bpi);`H&Mh~Gwxg!Via5!)6=f89ny{oWCWw09n^a0@9E%eME|l#fmE_Vk#iGBgW4uc&1R(o<>MSQq8TBow2x8uU_vv*q_FJ zb<%ZLhzHTWpi|2ZIYEp&Wn}%xi?jH~w_A<&r^E^N(#zt#3Js%LMK7rY5Ju@F~Ztkt&QnY%UqJ$saFJrLPn|iqI-W$Dt1?>JFjwUsd zVwZ$y7D44JEg3cmN;qyLg{-oRw;EMWTIBw-JlaReLw4W|FraiikO<9Z% zT}o$kfA!&w-q-<_gDS~B>KW_!qD*FaY#D}taDoqVV-%Xmy5(sPiA#ufHCP>lOx~lKp52qdV!E;x_ak0GQ1ES|K=O)Ui zNn<@LFzd9OTL)IK#jBOD6+?EZ$1{;0ELK|*t5h*y(l@;>>RBQ?Q2Lsi>&RkJ&v=-Ym;&GRDmK@ zr6H6lHg{N*fBdA&iggFefF1>D<&OuBX`rncRfNs`8x8^pBR39m2KdGJn|EA}+U6jS zr>do^+7-K}Z86O7NTIlLnAvjUYEnMdmyv}lu(+4zn#sY?G`V<(s-1aC2*LjAc3(}p z`t~c%_Ty?TZxyp>+22^A%#x$}?KpL6UgeU?B5br6U!a^@_aee4uGxFPxl(w` zrZ!Bn=HP_3G&RAM<({lwj5{9H(acC+%b8$5w=n1ILTpn;C{}{r6A0o^EfE}%!IKJP z`ZJ%JkP4Z?2?0SOud_IUbk1-xLa3s}rWr_J>3hwnriDIH&95J~t)o^+(2*wJBw|j| z5^ki7Mi+&plt6+0ldbn@)yrL2&17X64WU**5rwa~&*ick=E|($C}ldDbrGe#nt z0gZ5RLH|HrdXjtsmUcgcP@ycLJDF+X&rLMR+D(={w~Iz-rtoFU#Y=c>S9kd;37mHX zp}IO)O^cJrLi|ha$K@C-l~BPvM4|(C5UFD395QiPvWZ26odwNV(pOnGL0blk@rD8? z!r*KZ*qTKQS&oe9ReVJS+el2pHh$Dza#WEa^LkK1ra(d(@#U=x>w0l`@>`rE>ehsG zpbvnYeZF`Sjj4raI>TVO6;S~zxi$8!(}hU3HsY9It=Zn&JQMvqx)?7O-t{pyO0y)` z zp^2{&$lQJ%@2>gtt~o;P*c%_+dfb)45q)p+d*xT>xbt*s>TI4y)*^bxOmqa@RxEI+ zZUoEcChP|B(S)FSw+fqK%5q|s5lJvMjN~gL?J8&41<5Djsp3qbN$Z#aDZ&6tBgm6a z@YoU6(^Qzj(kOjcMSK1dO&-3mZV?%aAy+ALojRJyCx{4#-IE8W2~Q%=fm~`f24jo% zYsC;;DV@=jX=NyMXFG_?*eBH)S8iM^uMiPpwwzy}%=DkQEaF(GDuw4t^ff=Um6DdE z^~#th(#V$YG!O@w$K)u=+ac5C{sj`nZes$GnNQH={YqSt_=0y&0iz#s~Are9Aoc(Zfg$+yw#lElP0 z6ZZ$g%otc#^Rv5<1lH3kLG^y~N2h4u{>$rTLxPIR9WWH@+mZGv#HAkF;iZqvG=AhqQk6G+cP<|JpAR zm)&w_COQ&Rv zO=#-VC`uA12z*^lM^~G3dESgnwrdT!IUv$>gBt_aQb&>z?_?=4eGBx=QYlnZ2NuEd z9SlnL{`X&Ao@yDeG-uWIMA0{2i(xZ2l=5&631WNH7F`~piXSgpcQtW{_*CY~`XVz2 zaTE2?@T^5b<#lJzlpu_bkEgVf?d%Y96-l3@bjo^?LV7R{F^^dey<4Hsu2{iUgV`aO zjZcv%6A{TVSzBF?`5klJDqyaEbE_z?JLlPnW(kbFwu2LiPh|0&wuFk&`yy&SR1zOK zI+}E<&^jvUOa6RA#WJuIfvP~Km$NbJzEy~vyMJ~`frBm~Rk5it{vrOadS7;| zQy6~sCy{xUOJw}1txj1PeA|TAdI-OPU>m?ai@1iOZaDwm4+- zVW?NQwR~SUu_^2fLT@+e=fvk8j}-C@GENo>lsiG2yEnG5-vGmzNM0VMAYGmoH51$H z;bBqEoWv}lR!xt!gufHqnT!Qi)K-p0=42K{IjH&T-L+SP4 zno=#S>sjUO?hc7eF^gOQQlk{&WOAOqno~rSD!ov-S542%`{(AzZ!iw3d(>RT)c8zk zy4~jmJw<%Vulpk>L)u;`d$;l%m>~OfOEZpyjqOK#$V=TsYT0W z_!elp(y@6O8J=}itTUF-zUkHBIBE)$OSCdXyzvNw*CmNRV)Sb1?Q&{Vg$b#dq$*JR zma=4`KP4`n&6TuetR5^{#AqwO@i>|+w$R_5WiMOSt+q`#n8>ihVhAKmC#%y=O}oij ztSbDfq{YWCp3|({5qYF#ES!Pp?OnIzzII3SA^bcm3s;uZl<$m{r1Bkf{abKsY=>lJ zpKRq+!9Ww`wZA_JOSX9D&8Swc919nE=wTQsnMF8iiome7&N#i=L_wnqM^#B4@oij0 zex>w^)hOdJ{3bf%j;rrR?RRO0jwRwvZ`iWE{(fbcye~#>ba);vqG(&Cspi|#rMf4I zT_b}rql;B7wKY8{p}6eREHN*6wWdYNv#@UE(KoAXoO350ngs1iNKc?x?SJ%Cof}fH z`)M(+utl)`wyGB5MapHB<6LRSg+cDP%F?Qx9?G~s!}TR{`LnIraLpD7MChxap~I5#u60L zI{}QQ?dnXDaF?x21XOu*C85{*v|u$uxlFu@c;h0A+#OTYu;YT(;%c-QhbSl-&E-l!DfsjuGt8rX4ZSC+qytQ0BvWtVI z%0#&4tKgM93rghnc?Z)=4LC*&vVX|Y4e^%7e2?K4}gwe0CG@B)yCft|2C7w|B zjwDE66*$!*IeNad#}~1)d5=A)e!C^Ic|J5mGc75A7j?O|uttX=L(LP&a2c8f24ozA zC`rd~UcU6kIqVeu8tpHC~DuvKLGqhnLTUvE;S zF1=wyOdY&LSEMYQkbB{WbBex2`p910H0EdMu2rx0we6}74WaXiwkZuM`pbr18;%-; zH?c5krR#*8evS4-3`xN;;ofU5wYs6Afr?k!sS{!+7(HXZ>8z4$NwAuGpo-8$?}R3Y z!U|%#+uZb0^Jp-sl5hoQ3f4fypQkvGSeV>bvR5UU$93I()woBceCV|qW|SJyEBTan zFSRE7tA{bRgI~X&Zdawr5xc60k+988qw5i|SyMV z1&H7`glJksg|e%CV@(kR(1OGLv)d}#hx^6r(Kt&@4*D=?*z&D+f-2(KS1gG79~VY;C$K*;$RoJ9{JG`8o?L2ie& zH$%2v_i+M6^ZteH_!DGO0jqJ?gjLBbAF3Ws5}zg{0(Ki7bltYl`dRSeinP4&8E2eE zhPyweWobz$FUo~kyZV~=$r4XbbV#IOylG!Is5?tYmbRQFdMA-dE@|%U{d=TNc29n=C9fIa2RBJ9 zV@Dt|HRgs=9^y6P?}=Aj@L5srktN-Nso2(HSHDPO1MMdt8JgVnVb_t${!-)RHb2VK`kE_hAn^wf@VjBG9Vh*H9^6Ua%4u^vVyw znn<3@OP)a3II=2EKvXGJBc!=HR6FF?1*-{F0_CuhHA~NtLNLl*5v^9qcbE)QdpkTq z!d%i^>G&m+8j%_BP|+;F064O)=PY5&OU+UyFH2fP=Hv8YWw1DgYG4{Lex-t5pYX;z zZ${s+BQm)-7{3J~wX4HnW@F9?M$oy%?7liYZN_Sx@=O?;xi+HS;$VmElI(m)ZWzgP zPLZ;;dtXrCUgd_&7&eVWxW2tMTohZl@#^s2f&r6sHh}g5QOoYDiiJ`wIV#kEVVx5a zgbLg!MKYJFw@>SA>dj3CO$a?f)UM(xW&1CR?^ZDHxTf@eLe*gjdgzCT-P7WF<(SP; zdi-xX`I!Yo54J4F&5!Jali-y|%W@eq?B+R+>9Vt=mhb--`B&PeWDZi84O^}fyJw;; z)SX-Vow0eN{smIY1nEYFg5emSa*v>b;^6H`Vm5~xU1t3xA(#(}#29e*6TfG#yaM$x zBo09q2}rqnp4evcz@|6?a$;CT5cGN}?Ed1qNOmW2e^`#a;WPk)iqv^i|npH*M{l9J+yJzVc6=%8su)4F>Fo zB^E3(WL88g-dko?#=ti+JTJLJK3t`9E<)(9qDhkM(|zn=qb&&L!Dd$xRtZAy_e3uj z#yF@xHi5fWz+HrIA~%WLoR+zVp3Uo?AQ^Z(7jrPJiL{0~p`|AIYiEsgr*3IleRs#s zDq0|+!u2OXHBgPOTs1NHIWPGRMe-e6S4X>)XIKU-XgJ*T)C*!ttVU66;TU*lqFcLs z<1D7le3VA#nqHp>HloIytP_Q7A-#v?VCds7F~rbX^)P&KjFjYhv0{b7^bczOJm{H) zCS$v=T29+PO|0)e5Te&dM+`}d>`0l^d-q(a4fYoZTb&-`K*i))R&rKPPM<6?cgx4p zUiojOZX?EU?Nb-08q)E)t_|ICCl>yx;L>sFt`52+wJV&h+~Gl^sK~P_^AbkE>MKck zRYu0z11csbKC5UPFVviNN_!ulRQ%nkj=Olxo2i$IJ!M6b#?4!2~wECx> zY+qTyqX$Q{uU7e!(^O{95(LOLygE;GBWQb&o}az>lA)JnJ6PtwYclYf)sYY0R3h=HA^y`_epCnydxm5W78wupSB!2>wR6(US60hTV$cD!Ia{){ z%usR}Ld_c_YGWUo_^D}1mNLtgbxS2waCW*{y!S12i!cDaaL95(ij_C3uw0^vD4-R! z>yi|`lX%?f8yt3LG^_y(p|eX~2C)~$>~2(4z%!+{4s0aBp<03F^fc>Fe4D-S_p6)zoBejPSwkerl3F{L%SxFoGl_{486e z?3MR;Y}rcVyWv;e1c_rZNlpWHYU~1NXRjU~6KK07;o9vE&@g$~;R&>?JiNCyPC;N~ zBg4cflXpwDh-s6R)Jg0F<-TY!x}p=Yw?K@&jnG165bWA79t$z^;%d46J+P1~9)Y-v zZ9Qgdf#`T3FYz1+_aqtO{?RPWga|~bov8;i6UTP&<(56!2t`6=1yeH#htc#tH($8l zd|%It=mU73rI;?R_}TQ(%UxzCoyoYeC$;4aJvVBqM9uDfGQsh3T_0a2R~ziqPPU@s zxQaDXOdyekAI)03UdqW~2GGGwHrGoGHW z{%7yEHVZ$xVpKa`j?&+~VbY*NZBMLqyG#K~Z)%wrpslTh#CXuPqfxB#@_Qk>6D$?A z<&dy^9^9{}ei(oZP_BYy_!p#hK%4t_>IK*$KyAGh66@gEvEXll$eu|sSZivQfaM1w zB-od>?+bZa_wk4|==OcC_-z7F9waETL3ju6HVMxV0HGy>y7cTgxcC`Jt-<lL;l?2S$$jEe%-8H2jVn?ugC*)Z6%|TaXRYwhjmL*kE-`!13k)><<6-* z-c(B?lTYA6Hu=~Qx2~S{e8-k$dp;6z#7=Zy)^#8gJcJdzZWGojIfIHfqeCgUOx{Wl z)yG^O=m2=GRF0=2-2Mb(p?G+AOg}|LxV_3gLHS-cjxnm zYq1s#^9=W%*k_-;<KvYO8EzwRJ@1fS2Zr_*w|?)9<`az2a+l*J8bL*m+-wKj67 zn5LLE4#?K4>90ml6gaB$)-V=(ZD_DIXva*BmKg) zI94Xqly=E@_+|r94|Cm~Pj%7TZ90RyT_XMw%~4Q)rdLQxaHczT6bvEW-%wp{?SJ|r zl17e{H9}D}QiP}7uNXmMm1y;XK>NlIZ3v#Hb)^MM@P$%A!d4{R&e-qI4II7JTMV7X z&wZ|Ie6BGVFIrI=-~2}VYwPRM*HgpBZgVITX`rgPe7on?QXsW!qZ(H-Z)s_{Cbj>G z2$JqPVL;?_(SaJd@cUf$Pa3)mdhL5IC`)Z=6S=oyc+YCy^M77?pl9Sd4i**C*m^+> zt^-;IS+)ynYioC#S$CWD+dsC?uYsVXPmesq(T1}0)emk^wKapC;+FHK{aqkGjM^6h zJB*C?7v1-@Y-hzk>bFofYADJl#47XC8Y{zL=;#Z{-OQcmFqqG|n-2~IU_Mv-cYFIk z$l%`l=id9^`>}k*8kY#TU2lO4_c=rTWW2?vcJvrcLuII| zx>v7WIezMYje19)|B+_7gO9I5$>DDMJy^Yw-qQX8hr>ONzGmGl5&8U`eY9}aLSN{{ zJzy+LPYk*H=Pyl7Z9|Zb>nCd_8yfpo%+hts11bMBh)HA=wG3Y*nUp_;H_;Yn zwB=P;NtCgR-Vc0Huc9?%)q@>qIdu(;5qK~zdaCXktMQ%fjTXgv#BvI)F#%X8tK z+miMi4wnqOOFhUrgpiOdb~*eDoUyb z6@EX?k0yY5$UZ#y+%ZjGY_`yGrty(rV$k(%b(n@SLE?LJb57SV=J%q46S+}0Tz{DJ z*|5@ls~{Bi=-7Vvm}NXUJc^x9tPIf&@Fx85PCP8i9u7caYRB^XKXYU5p8lFNNl{pY z%HbmLaEI7AT&45dX`$IL^d`yXatMnr%~K5Yyq9EE)BzKr=S*rtG6u-2M>IGCS}<6R zBQNCrqVdRXqQ$BglvrNXyaom(wtz7*_1pQ@{@xs_p24$@i&sP!dhpkybo(3Q#VzCA z$z-!PHB0l=c-h@{%iXr;oX7c~BUsqe{M47Bgayi!yC84{!Ra=vTMwpn5C@y*Xp30< z?rl9iJ;f%sThJ5uQXuh(<#)%L*n;H;+QcJF)_B?Bh? zMsES-`{n4h{kmAS7c3}!n*X#u2mHp1#lS(`I}g+R{1)t5x#d3N_u5onIIFHHH6BcN zadhvXy}KE{zj??|43zb3t00Ti;MZKwpEtV?qweWlPwsNd{dJ4oA2d;Rx%^()!e|-V>S|`ms2-NgG`dZF>^s7MXT@}&+=&2+beVhX6)BE3y z5fEY1^xAsm^KbLc>0-x9`WnaQ0H;{b+3p<-Chfcouq4!#xoO3DcCc)`%g+C)mv;Uj z_~QKa!qtSQGhXKX&HDZA!u@UEAXwKqTmu3s4;PL>17Y{0Zmlpc8lES9PksR&Wf&FZ zc0XP>9uGBumGJv+n^8?|m+*f5_{85bPxGC$9{6bylj9HuVvPTmxhknW+WAXKDr4kr zaw|A6Sn|VasiN1yT%}@~kxoyK&HJyep--)ctJtX!-GOLRhY0CYmnC^>|3WQ%Z*p== zQ`(@-A%hU4!FoD|j5aZOoaA%rIJU6w7>90gxPZAy;lKsRltzc`13{D7Fj#`3gpi0Avb@_7 zUgPlgZ3Rz61(&?0oGD}9qWXWCT~-Eg%_9$^7-tMZNW!PZP6FHsKXo){2^yOKW*@F; zIxDU@0UP$q2MVotY{q#L|M8$v%aF?N{N>hbR)G+!khAGnZ00eOjx+Z)pjRp^@UdlY z%)BT+$CH6drMxZ75eT(P3=d$6VKysOPp_h&_b>NF?+L{hoSoFSqNg$St2i)y9>;-9 zt|)0Nd;5VI5}q5L$lkysFKk@PgQw^m4C#5G*CwyrMx*@U?$Spa4KkpH*c>LLX71w*>Hu#4XxRHP)3PqLzj=OLknY^q z!FYE7R^m4`eLUX0SxPATybAU=?^ZPL%q=PbFD1hXNgWFXLV~E23CcgPiqa39kerBo z@X%X9kY1^EJZ}L~ra*yn9|%PO-HTfwBmmN|Uh*ipp5fslj=9Z21+s=>?oDo zh?y8&T!xthRPgxRpZoZH>$ZyQtpK_i$gF*<)c z0!CQ_wd_>%g9TByA&GUvPpb)omdASwC*@zfb~Ih3D-gB}UZE2XVr)SKZhdECQ5y_t~zUEK|`E&xO$s4GuOP z1o7VtSUsymI(si&pu*Edw{-L9=F`DyGK>JoIFCK(F@a4$}t^pB~?^*)TXn}#%yOgBKO0!vB0)nEXI&g zvHUj5;)~AoBsu1f#eeR?YFg~Xrf9^!WoHICsg+2A`f!M~71G#PdP>?&NBsROa{a3& z#2*C0aBnL%C>3Fsei#AFt$ymSK1_C6qc4^?B}TUS@v|2dzVB*#5K)Dc*e(&ooRInV zJWfKsu)Q6P*!GideTL-A-(D$fx8i_S+*{&vsniF!`Rtw1&0@>{>vJ!=OR9Fw%Jf#B@CqRJK23DOG2gBm6#cUD-l`=R-k!0~(Jn4K;P7rc5Z z?@k)oRG(e65oNjzNl3qJJyd@HLy0f*H|$hQO-+H-RaA_QCfr2b8Ml_}xdw-Y{qy@X z$NMuN{tQye{WVA(Uf@)_z1`n=AusH6X5~X+Gx{p?C>}KXM$WzLAeP^wc7pD~EvpTY z{J7Za=idAIAb{~R&}jtAwn3A|p1ZD-M(3RmpE-TA=4Bc7+H;Y|otSp~yi5x!y~&01 z=5w!Q+J#zBw3-#HX@DZF?}0IRNj#Dz<-Ia9X@TyGt$t$6A}`V z-W_RJiBq?)gHo)3FX^&5k?X;YAK7UlRk57>gupu7lLF1q-u zClW0#t-y1j9@!|X7Jw3ew>*y17H)POeXc>(h~t~)P`{~ea`lJ*=EDMM7=#KoW!|WFWuQ?IDOlz)Ui@)?{uY#!D^tVXKp{Qr7CiLf zr(w_et%4mO5B)-3WOR=F8lN>8doMFQA4Ahv8~W1$tB8drWhFTnE)OwMXisOjgH4>mjyL%eWQbI zdjvasQrq|DsqHXK3p0t@?h-5B;Uv<$W0We^W=&AnFY8; z6jfj{N#xJ9w~A%vD=A@$X_i#dkiyE|)*#v6RPyG&zi}RcqZrYr7w(IsvP1JLVK!qC z#8hAl=jqmuP#9VGPbP>v!MDfe?P%xsu<~I1oXU88Gf=@XW6BI3m*^I+R>2e5M4gZ{ zXc}>BPJ|G29BtWvFm-HySFI)MR}KWZflvfu<2>BE1;KR|2{8{14XVjs%!)m7wr zvJ)38+)qZ5sPl8@gI8I6E9{#h`)&9G{t{m#hs`t5#}oEdNAP*xs|@cNlSH}TKb>nu zrK=Nlxtx-_FAC;#*ZdUt+*kFzUw@>ginRY{N;gXV6Pq`V{R1|>TA^@!8)Zhtx-4gv zO`av(wTI-ruAisHq#f3OZ`Pjg*<1FKAjAAPt%WcrVuZeDrYTugbdJ%DlMIZ?EV5&o zY7qG9EllQObVAU=NRoN(KBO5U6?yIX43 z{$u%$VMCKExFXNlgp(`WZ$ik}i7JtsJ%Ck!Yzl@ixVfd)1}`L5VojqG$hLF{L>=atnlbm8*pu4 zZ52Z{qA?LVe)kU2Klc;zBCv?7K;;k0VhBG%oVY){kg}f_;|RZ|HI2> zg5J6bL|>`W!M`*xLvUr8TAgJWYkwuuB(16P`jT0+4HW*9;x1yYpddcJ2p*zVAQ^%F zr81Hj32<0MDESk%Pl#&@QIoNuXDjCOIH6;h4M6?XLZ=T}+dNHRFxR{^0^#WWDp z(x~p&n7Iml4@j}>Lh*~Z0x(yh{u-oaks9{6ZAr|Wktk4{M2LBtAIyAKC!-&9h$#&UXnBRZM(WeKGz%e$x@|++1}EoG}GU?5b=rJgo001 z^!bnBID7;&yqYLoG=#H12ZnA7lJf?bJM2AUm2I_Q8NEuUi${LM_@F zrF@N$&kXN>oC2(JO^Fp{;_um;;^j{wRNf_)(7yaVKhQ|w^;mS6R<+WAr%F;i;-7qR z>~v=lE}Ej{4@6Hm4?ctn-OiMNDoQ{LN7g;NFmwExD-;|5)MGAIgo`5w9H>8YHM=ND zDjaYG8f-m%QVxH(HEq8*FCoMB&i7vZp|(QKJ92aLnNHlK$oS^e9+U)*3;(rbcWB!G6kG)Q|! zE`uV#7Xu)W+jHsuiy5_lHBL%zWIxMF7o(J8lIVzlSmdUL+E|AgEf zs`MP$d4$V^U?%%rNaydDtd_jYhkU;%iSEPdM%@?^6O*lARfJYdj2WJ1$HLWoqNp9; z{J76N3Xv;F5oMtixR@u-^;q6)`85lC8T_N~A)mDpndc$;d`YV26 zBI||w(Lhnh!=1!-ctK;97;?_${6mFbQGvWf(E7QK$7OiHc{`mxw1?J==RZhsg&LGt z#~BHD?y?4Ga(MMm-e^r2E{k@F>C)^cBtTivh#A#nvI&eOH3?mZnNOWo z<>nn~mKnLFzF*I-Ka(EjYx+lCb^+kaYY^h?0Cd?4&;#k)QRya77aH+iML(v8)TZG! zf|NqkDAW>&x7|3szN?|%6`z{47Tz0cg}0%gM$qq=K|pnQv-o0Q^C83i z{h!fWc>>~GNmnbBv|FmgTo~E>Ee@J5fDSG*z!68GhU7}C>Bl2$y9M3A2=#M;=iYyH zh8>y;28k%FLi(~-^SjLzKO7o3qBSzg*$!NiSAiqWTr4-KsTH!)hDKT{`o%z zRk2Fz#a8C#e=@X03fS=kr58R#J5O+cTrA9NzlS;6^F|)Isoh7=m)rjz4>x&{_%|w% zR})m#*w{2{ZJDGj%p5gHdX4F2sH?% zHf{n-DQu^=XlH!9Ce~7iK%nyXIly`EP?6Zpd)-Y}k0*}pvbg1{Skhi|@6YLLqZ#q_bQgw` zY@FMk8d_@VOGn8yphy&UeYVUM&wX3#$#CRC^zB@Fee^;&1qGagre0I&jTt{aAhTMt=Z5;RrRqTB~H~!g^1i(Ylts1d6dB;(f;4p ztpjc);^mU0=X5w64+ac%+3_Dgg@(QV?ImMJ&%$A|W&a3a%A?eu$Hr_HS&0ix){9OO zK1KBgRyDf(j0eI0Tmg zb&O%^s%k2YWc;LR?FQw8N}-^#3Z;GvgO~k}oK{H8=ubRa@gXrJfoe_X%!LA^vFCJh zacnE;GGt|4i^gX3Xe?A17K)!T(yP|C8IY|#`yLhCJmpXLzG-K2J$*bRxi2yNX$W{t0{JG!^V)7BK&~9|d!+jX zf$%^IWjdV;U2?mAN2!#I%Ph4pKFs*=2jwUY5D zxr*ynqS4${_@8X?Uq^1A`KuuOyjZG zhQRhsT)m)a6yog3oPG%&3k!*~Rw$BK!I})$SC#x-ralvec6;`p^8~Vy*CcT~QkJ*o ziBAZcQ7(27|S1j#MS~T{#;cKbK`x(L^o9 zdcd~_h8~*t#9$Tn#Ywz}S)A5uyh;-{Nr<0}`F(jeo1zx_I*EGG=Meo;zhzp)-& z(-q31qTc7_Gce2O%_jj%0jk}>cBl1LV7I|HDpot`TYP@ZIE1)@uA~%EF|(i0G{2$J zFY%U9M=Rm2D-0?u`VPm0X_^=9|*uA2;*SKxq>Np7=}% zoLeDL$PEgN|7-T;whbVi5vdUdZ(iKr?cd+IJT6G6?iXu5i~^8h0t(Flr*v-H*lk3S z60H>j1WKxqqmeJ(Cwl>kD6`AU#ff8`!HWj`rJ;Ai<#UVCEeGOEY7W9pa!P%*Bdxa z078g(pP!XU?leh}E^!85Azblxc@HmMm1KE>ozXg_AV$gE=|6cJ75DkAYp$lX?3wSS?TAi-sog z7IA4I&y~eHjBCPy=bCQQ>dl-<6ckq9zn||-xqzOtBP9AcV@hgDsuA4&{2Ggkjj#6z zK4EV$s5@QK04Fd+$74c=arU#g^XDQZ4ETbPBrLgYvdSM8x5!)M=+IrByK&f+R!val zx=&-qU!Hm4NFUXeL0UZ*uIIBj7cW*jfipo~>NN^*@bQ}*0Z1iEAPj=AB3~+cgII3@2cTVC!VC!F{@kuV_oDBzG;K91j-MW+I z0qTSgPaWPkiqEw`KLcRU(91>9<>Tb@G*n%SDhB}MxPQfh0zMmog)116P5B%>^l=8( zyz@mPmyKYqkttpZYIh*oBsup9j2pm6I;(c7j7#TqybN%x7|v_0iM^*Rl5XQhzh^bC zku9%j;n4FLu|E#?AT?r^#E7tNZxA38<~FK!H}WHoIH0-`<-|kFWtx2xK(Dw=ku;^9 zex^*%8L0zfhIC$vGZ`vIA4E4Bmhg4iG%&6w7QuC~LYP=SB~sh5rX99pIFpF9;)R+< zX~f0%Fv%@uBec__`cocp8w#!!bRy}94b-c66#uy2KL3gjkx*f`fMWd&U6I#{?U|&~ zC)aM%w~Hhuhd?bY2%q6{c3Cn~gFm+b9)v>>2~X39==2f{BBAi5O3OcjH8?5s8b>~r9-*zMb^8N)SNK` z7827miKN=;_mxw&?rRmCgp9K-0wPtyk}Zzwdm|%DIhJ;X<1`G6Wg=eDtObBHNKdw7~S6mqb)j#_xT2n zqO|gZYg&2Z)9zy<@_A;Y+oHnC%3mi!sTt4$Ob1NG!sR0V3=h#g`QWQVYL=F#@u*)5 zO9)z%i{K)mB#+<>MI)1?FtBxt$Hms&&-Wb&*DvBi(^EW+ejvRpe^DuYU3q`(b2r@d zLDta8?&b#Iz`AJ+ed$(lfX^EB8&Kn}q*qY|k(sHgwl0@M2c$Ndk zU;w#zX^@B_pJbinKa^TwCQ3<8t_485L+w&93ZDlvF&fg&3mf z9H=q{M0}ur`j)DH%V9(_C?T`U1aSYT{Rb>F@56m>fBXenlQZ*Y)mBp5 z1`!bvL>|8bhJe^RDCSMF($gC^zo$LB8u@~x7za2*r-e{7C;T!@Nz&;9RgjD8j&0ecdbRoVa0S(08Vve@;+parp&mjC1`Mi$Aq4#ic3 zx|@Wd8`wd6>ncoi+w_=ga}Op8Z3_{dK!1!;IF*&!>?;|;C(9f_Q&MEhbudtf^&~rs zc+6cqDLiZ#7pW1MVByFdzxt2GZF;En%GC@wdA}d~&dVw31LdpE4#yu}B?PUQ+5u?nBhu!b(sdTbW9zK7Uk(Qa6k~)1Dz&QJ1H+m{1 z#i6X>&FI>7#;xyZn&@-;zfh`hi=-h8zl7I*^5Q(s++AO+P# zbdWG^@7i-%BOW|Z1mF9i&)BKm>7o6c#|Ja>P65REoP5aD1CWgRyzi@LKJL}pbiXVx z`nm9N_Dsp__HUS)~JbUQm1yI9<59s1TyLAww=q*YcJ zhR&k9d#?5?5czkEgxH@;)<5{A8p-(=#)g&OCp%!SL=iBs_e~#^K`1B#pz|p4_gUaH zgPPBR36Uo^={2Ztd~Q+mR@B#72Z0Z7ewE#XDnI@IirfwUkX zI7R3#jM`QiU;Rn?F?-V?ebZ6XwEGUQO&;ioq`v+!?+*Tb^U^II=L0nmj?{)M>URRJ zt&yvZw2&Dpof(698Y7U;N6|_8(zP?!-R?`IFTYAl0Bv88{^}73)G!dtw;2s@H-MC) z&r%TO-CJdmdw_rre?j3ow04mUq|LuN8F*vhFUfW$@ZfZlV zk)@56w4SHSkZ&%w}Q!S*B*G3o$E+ zN{kKDAfbF^@Kz!`Mc$NL7sB)tiM;zmBS36_*7KP6+F?P`>!RmoVCT=y zTUh)SbtA>@S!@%|`QEhGHLv7)L4mwBhr+Q-r83aBb>2|%bkZ&f;^|Pzh>S|0&Hel5 zu`i~@xQTwU0Aa-R3=~~Q!+%w09+SQjXlVq zc2zVs*47)Ss?Z|IsCqheqo5sFW{I_24km=PxDUI4iV(a>)GVrQE!7S{RNhvKqh^s3 z!0N%|6rpDXY!0n5Tql|~KHR6f?|=aT>ZMR@EQvV)FQE`jfOM{*hVR_BT98_hevj)X zoA#7HMr0nRuRq;X)r8xC0g>v%j1%zXI$)ADzQSGn(vin_yV0YYb@r>E^dJY7mP5rs zdangn&q4HhyaP2)#(BDk2Cktvm{|fRDZBSDhO9y#G&BDaixq-#`b2h!huY;g1JXG?9E3L3#GK1jvQFI6md~g2|R@g}x znn1lNhPE*N8?dj#-pNbhfvIPKVOQdcMxq#$Fi%VtV2v-aEdRG^{fzrZGlElH=J}RE zyiFaC1vx|n^O3|G3QKa4q0Vxd|NL>0sluvqrW8vXHom^0{jc0@d;WI%BXknfGq@_$ zw8?N4%;SWKqXI0_^KDY|k?^l<>JjQ09}8x7sqK2HU>Wy9(-K#kRP#^0 zIe0mv+mtYBAjNh2qk<&Ph0s@AAY?JUf4hoJm19Cv9}=J=FE)+%GVyx3bSY2NfsT>7 z)WRT>{XxWoW-bJRXJ)rzw2kRMtP(wpg(`7NNxAzsJyY94o zvJz<`1(+0Tr267Ap~sSq?*MsNLWb!UH_gmR_~6=vMp~uiXcBB>bHDEP%&TS(#En7v zr(-D@j{JNd6BEA|SU&kS&Gu=rEbGdSsPX>y#=%w8HlZec-6}E-TxTTrz02fU)TZE! znDm+(vB5aJloS+l7q4DWOYMoP@f6Cm;1|MbJk8gK_>FHQ zu;?8`7%mSM`i>37dH4o&nl-IMdHnf4*3aW$l}@HwM>6SHn94wK@ksP_Fd}jpQVlM? z>NPe^^3MYmS#St7@5l97i0Gf_kaYn`L8;IN-6l}v{h#v7l9olSs11}V%Vu^#5E69D z>Yv#B04PyO>z6=wWZ(EFKMQb;b&%+Hvt;%Rqsrlhfh%G>2(WJ=*rs%As;w%=#r559?JHO0wVGwcMZIXP!5%f7(Ca znG%weMB#H_2FK9u=>wdtBp*=%30oADF@B~a?ObU>tphv#N7*87=`0Nb%snc1XDzAB zr`5X}yma9>Zaa@?H(+_3X#atP6%!K!BjKwlogS$clPr_03_B!y^~0QnrLfGeFXm@3 zRU5SleKTTlObTKJ0nf3wcp(Z6}@q z?Og?AA$l>V%7<#U2S_Tj(*I;}383bN!no_>8yRu*+#7+I{u+N5b5Th2eI91Ld7xfb}^t{2J_42==!7kaF#(1$R$ zw0qYw6M^m|%oa-WnN!dbgWF%#5H|-eL2yD`UIj^Yh|U>~i`bE3Re@oVo7tDb7;S#h zO?#KMI1Xo4%+TA4av+hZRVB_k#JNP3ID~^58jRDGWlJR7;jr4MrA7F%9=n31D)Q%Q0FK(a(BqmjVJ@e~IK-{@0LT zILQU={aKg1^7plMN(xJ>hT{lWOS<$^ESNwbg$j)HflYW7PuZ2C)tkfYz^Nb!7&RmP zlg+@T9HmMaBRu(a?d@5BVhdi0yjfm1gJ+4xsIkFZGcY`n@?4{&)Z9P+$|KLB@V8<8 zj7Q_kT=g!B-xIxEHdA?h))7L8(lkeStn}#Us&AhvrLKc9XB*Da)3OG5DQCEMP1cwT zZhJ15+7OjYu@>3g`29t!af>(@^7>d;dLA zSk$NF+n}bQxk^!9y5l}upLeeh2@c+a+gDD^?|Yv&gp@6&OP&E3PwMP%);pYZ7q?Y; zx6{Up*tA>QMHEpAMPCPGC4SX7RFR3QF87S;Z~>1f{C3Hk+K>YgpI_(7hdp_v|4WdK zrF_6F^ldZ$Bf!4#FT{OKn^DG|_)W&o*GwXmj4TlP_36U^2wVM*6Qs3|1TzH<5!Vn( z5ylfcNYcJR1SuDL37hA8K+f*LrWEy&ESNOKk8dklZDuQXhJGS$jqs&%AR?H|SBstS zS5EoFpCbV>ZT!P10%;Q%hNw+s_)j84pA(e-?5Sd7nJJW|azLY3MovjqA(5Ir5UN8C z4Uo}330S96q*Sk+NLI@Go~vl!{su;naLyx}tVs2KDmq?=%M!+7609K=NG;2Wlxk^B~yV-uM5^jc%KrHO@4-8k&?B*^|5+duAc*_XBxmE~W z6D8cD`#)zC*EzddCS9JXcBHk7$_K{VfB)s&;*eAnq`&{Sc1o)p9I`bS43B$i7MOQq zGim(kvTE{XF)pIzty?XXWa&cZH2ph8&V3DJ3K(;(F^k zImDRK_ve?kqj1H|m0in%vEh@SZuj$Zp2bkeAky`#vWCNZq;1QG@F6O*uz*@&!9;;d zz+m{!r&?haEpZmO{6Z#ns%Z1zSqp@Qpd?Wdf|zh$4h=#%n4 zRZ=TcH@$}sA1irz7ro1HwT5aO$m;m714?ULn!`d3@GwKwDnEloO5PB(z%Kyp?*fd9 zYd}o*+$jh2hi>oPN$*|bE7`qrReUsvPKhxYBwf9SU8RRhP8TgwFx($vyS(UCBK0T+ z5`ny=a|mIA-u^OmNMamxB=N;R#Q&@-oJ{W zk_zz;w~o0Jn%Rn2tn=aAs$@Q|Mm}5AO5t)wp`^#V=HMdfn;`tF!8X^gjBQm00AI5C?Pwy zZ|F~3s3k0n5Lb|is5hnx$-yU!Y(@Ao$)V$NKFjCR$dDgLa7`JgywWtRPALWISCOie` z`!^2FTa=qO{#1n;&sXG24+&@=KAgDxcU`kPdpcKKCV6{jHMUiiqw8X8S-nHq)TKCT z8y?Ev*A*1xCAR;>d9gK`ellR|%Ju7MiSC)__4!U(Mv8>eI zrW$FbJVZh*-^$$kN)gE0*v3by9svRSUy18Bagi@d(z0H2M&#~LEGJkt<(@Fhj`Cma zIy4wZM@B};rM^t0pKTe|d*&`JB;~sDI|q8RgmL{v!h>6&U;@y-OJ}MX6&1`#mopHY z#a!-06Exetkrz;z48b9GU!%x7vS43rYQF2cXwA=;X+u+BAYttqzDqL!&e7~l`LACm zVA(*@^6u#=V0}$C%)6cs9-5G^#iKz^6if9Wy`wb6SbpJC+$_1QHM4XP^n&`;;R-+T z5ZDT_)L1xt&--P`aB)q^Vq}sf=bF_Z5OiT={saw+887F5kl1%3!TRwj0p|%{%;lgX zG0X}{Y&1efn68T%tf7VZ3M=vN>qznt<$EGA5}QnCV&A*P&1~v|RTM@<)d-OP(p=5k zNYH&rsI5xNC*TFy%?JeI-(pl%XzM_`EF01#MqcMPG&$%$;+_(%hw{O{JFz*4z{;_z z9PYqBZbtt}acHOtwqjUhSc-=^K|B)#%~uiIh>7V}VRmSYr2%Ux`_MPOqAS=!$YNI^ z+mM0XRuyt(qfmt7q|c$?E6MoRPO9a|!OG9>=D$X)Pdtn)A0b!<|9E5)yqo_#faKj) z0=c;K3H$d03ouXzNP}IHR|9ANR7w%+tFNH`%v;Wj3UiHWtQHq**E+m0&FN30(V!9Bnryzx&~*R9TFqFw8c3>1Meh)sBUQ6EO#+^p zVr?CCJ&xX&>I>OraELubNicj61PJ=3ch?i8%I_qW+|}$L zxVLx}bULzB(?%i?uAc%mWBY=IPx_8$CG0Z#Im99v?PSroni;87NYK*f>b51p?v&l+ zyPDm(`?U3&v+{z>^r*=ASFgZK-&jA{BpuB8(hQQ*B%Mv~S5)i@rxp?Q7Tu?L@~6f% zx3sSrV<(Q)@)!19492%yts?8QbNzeF?YDC4{|i9$#a;&KwOq484gkPZ|FP>Xy-Ehq{Ycby?g=>NW@WCv zWm3bKH6F`-*=SP9-E?*hkC6zjb)9|(E0u#n*ggdI2oh;HF(Gj<4-}`4w@L%j>&VVz z1J1pOV6AZPv9Q;{X}su#fgaz=@T7+$QmO<>GCJu~GK<6q28ISeUg4`2GTW{~u4%lE zmRL*9QR3EgK7!r%;A4D={*rOKO@t{wSU#emOrNo85cfS>SX30-m*^&Hp>gTx-Y_|3 z+jZtPS6WQkwZBUGz~a25a_>F{Y!j_~)x1laY+6cNsNLB%5rgd2l6J%8qj*6N(QNih zx44e2H|_-3FOkI_#x5O>2x8*4iKPuLfY+s?r=R;c@KI9K7Gq|yC{e!PK|)9cx`}KV z(VT;oQcj-0oOtv}UJ% z7g1bhyEiK$D(Kz*UpKwWtke88Jnh2XeQq8E5cx4Bvia`@?9(lI`s5-05z)BW6fL3eEg6d(>KLf^T7_eMbim`zJi*G z;+5HqXo`sprksd*x*$@^w$vp|2uU4)jYg#sC2K`b%o4}Wg07$zDU!&eoyle%;~UDu zW0#BXSB_-zXVJ4r4|tIO_&^3-t4ame93NL;g9(@K4_7EJsFashSHNe1!%i>$r1Zl! z1TDkGX*k|B<~m$3b{zlgHB^>>IY$&+aqFj725wHQcEKjkTg1G4Y`$cLr?r)Ff?1V7>8rdc(wyl)P zsqwk-m5#TCtG|mA|It@hWFQ|;^Yt&L!e@hN@k{ddfs@F>51w8yrtKIgzOSqz;I!uE zyjCgnf2>c(z*wpJ_^E_8qb)iMDb?fCHE~blCy(ds2_}yK*sd2+pv+~$eC&67-8L0> z3&s(a%}!|=+uj}y-cBv995p|5%L<05b3IB$pRCB60_JLTG`?7xhU=zQo`HJhk|pa; z797)Hgl~l})EBqUyH4C>V31s~2{gz=k9|q(Q3v0q#6VW$D zTSc&4I3=FAfqeb(3Zb8zmYGIPpOyYR!=T0C=)&v^{ky8#o!yJOC|#!yh2C461=k2h z8E$oz+P@BrPn_Mmqr}#tkiUN)jLbw29jC(-^R?~P2EUg+y*}X2x;k=m{EOQEeE`%r z<~b7$J7~Pwoxl*)?bO=*xtno^R5w8IPEimTSXE@oeE?Y1u4SHcTbFJ3e4|93MJ`(<6Pi&q zkvdkFqdR9{7Ny#wG*5~pC8EX@UZJYWjL7jn$KdCn5DCVWO-E$2WFu`SoMnt7r(aTd|fo~*MEf$3p0|P1An3#kxLO5&xS@?#f2yu#4n)#KH2k}&)#DsS@m_}E%o zvBaecPRPte5)lux!1RARzL(s}1IKHC^Y)JB$0m{V^(DjCjvfedsH#*kd+8V) zYJ)EpUa^tX#5y{<>s_FiXqE20Amn}S7J}^VpYy!CmA=bEAdm;YucBz7TJrDtoF+~^ zZs%Xp$|{E_f0=F`Bp?XM9jiELYIY|oG;RGLIlC=wRJEX<(?&(|^=6*5)BqJh{!v zD&L*)e)jK$%J}x@`|$1hUE`7MXpKnT7n(KKUF|RV7kBRDaU7d1)+hOz;=!v#&##}1 zR=-=w1mT%Y6<(=oo8GWCopyJ*d>Xr6g;xu)?!o=x+HQ$pb{3LP@w{pS9H z?}lHJ4Ll2MZHHKAluz*DwEg#p$zO=C+&s!=rRtaEt7VcT{QzH;&?0r3PniXLn!E3L zhv`WCm;+KPtk$y8^TT~*IQ>ISnNmIFh4%twcOOlMa4S$E$kPVUrl>j(m`&rpBdIWP z2L>V`v5sAjo^10}w5{G5n;H|QygrmvRuBk&dmN<$3!3UYAUEr!DPZD}QwSI{Cni>6 zQdn(^kkuw*cGo6X+{Q;^2HrAjv)Rn+Ai9PuO5h5qLxY*nL-_PHLI)whtM=QW6_-;i>nIu{UT*c?Et}{H~4s-u@ zcKiUrW@n+vVeaoi&+lrp=;=Do^^>6#uj}(K;5&bA>-xAOc20+Dhc{Id0WVxL?DdZh zzue8LnFhBVNFtmUhq3;ei0*Gq3s>J5@GXvhtQ6!WAt~Zxp6ZoMN4=iAGdScXxyx3} zJLq<0;X30NAU0cHIl4dS_GJ0%Ht_lSY0*FNRr9Gu$JOa6Jo8C|xU^NI#wb}5MbS>4 z`twq!ESy=NHq-|=GeS8Lx0N2sXJ;cpFRX@_ zE{9FL`+GceV!W9>i9FT+S`W}?ronxd32YL-*?0i9l;iAASu*3BE4PTAe&e$WFvDFi ze*J#(|6Rf%iVh5RM6bXysd?mOM9W14fau51KPoR|1xPSMWFF#@CLsC@1tSm|8LH25 zn@tj;!c^t0L&37|#4r!DDJ}!LHG69~#JcUtuK=ni7B3ZjF$>YnM$o5nb$;XhieC&M zV)1Vce*RW~+4{Qxz^1mV!Vb&Jb7I+?hAewn2D0%=TEh|8#O5$Mr(dEE|BzP>Sp>PS zsFM^d49MKavk@}k6(^_Uo%$(8nDQ}= z;5bCcEedEE5IEbt<>2Wqq!KpAXO?T>Ou<2`fI#iEnh~E51Z#%ilDIfZWICW4Lt}d> zXklz$bKT@^Y0p|pY+8uuxTee}Qx{*ceJ$qLJ9^Swklr_cetoN@Yf(naRW{J%;ARQx z9(tNV+ec(CVPo&ycwORB8g*TY*v(?VqUi(m2&psAFLckIN=|b3u|9ASdZ4Hs*ryjp zu)F+X=hSmhDQ~X?rb1ga`a;^v{nu(b?7({Ww~F24NT1u+Cj0TXQM97z9t+o&9rBPK zm@Jo0nOW*ldn1;kd=b-bSDkl_klTt%re%tVd|pSXWq&Q^IBlT!$aYPV+^Qt<%6k#0 zUzUo|Tz`+Id-~Yxu*K_Irbh3v=UVyZ+1S9%$d8gm9M5{L^Dk9{A+MW<8F(W`#WqU>&=hrBX zC29jdtOroeZ%`Zcdam=U3_=fOAO|eQRk#d&h<|Emf5s$oWrF?wctrW)`;$C2jaR{0 z&E7)8)PCo0KBljN^Vl|2Rt|TA#~?s~U8^e~OyVq4s`w`-?E&_9?8QqzFKr5*mt@a0 zzK+$6aTK{KB*Tl9u)FeP=~bDpf-#`Exm*e^XjrWYS`?8I=Gk~M{a-x_1wuVy(Xb+N zy3BE@$P{JsZb^vs?P63EgA{d2MM5_)AULpbl~ilfHl_i=1o5>E0`#j~os8e;N@a@w zBk4TD;p*BbJVqNWMvbUrqPOTRZ7_r=(MF7j-g_6lMkjjjLKvMOB5Dx5cTqz08a)Kx z@qTli%Rhdw?X&lK*18u0O!-A7qi}#;ymQ%5T9Zl@3$Dl!2IdNUqN=dv#G?cO!IcnP zTDR0W9v&3*;;Hq0%BuN4k;jn~s|68xqh-@OX+pt6 z5nREbYd!V;a%WM+W32+4hC&QRMT|nATl7aa@KO8N^f?&mpStmvAR%FE#-e;te$1u1 z`Sa~^fL-P5_x=`rH5?Jr61vU{woPYBB%~xjf`O^Y>(%z%d(!%X^~Zf6R(dyW1Huo2 z-QR$?jZYW1UR=>u<#uTEkDWR&=mL7ll?9kj0(@|TGaGf1adOFX(;42JaOMDyc z%d`BB2=Ggfa=W)y2@|Xe!b<7{jvai8y4$+TRiCS1eY8kfP?Q1*(6NH_?+cDMuP^po zXe@k+ACq|9LC!h_0HCUTcBX(!lI4Qr=a2bqfW+`XQ{Eu=owPLstx4(PLF|w#sAIR7 z#}T0;2%&k){T`*1=wyBJ6yG=&MXAjird?xV6K`4#rVN}`w~dFxt(i^Br~>Mep;Y`; zmEYJqJ83(mw4w=-9Wn?5<4+$ltK;|yVBngNww9wp(lXFgJZTaaG*)43jbCyq@CiP( z;c$uKSW$Vz*y|+FgO8r$#a5$9C4c{B*fp*#$2}BMR0Muk+ip#OdqbIS>cfYas1H%v zGN{8&;mmt=I)i$ZO%q!~uZD|^jZ5k%R#%Oqnfdxv6Q$P9uXF{teXi?11yxZ}`fUjw@Um+iEEE=g;?kkOJ|jHexYH)a*R-8B?A$bURx zH6_LdMdI2mxnAw=+I$*Uw5q%P_AjCt|I=gdP`}re*!0QN)X5S1*}s^@1O$WuiOk30 z;Li`n+Ur!~&<4AstcpjGXX*m`QyTHo$%sn%H@s$PInTy6U89}tjC_17zKriDn!29U z?+GbJ)@wb!{5-C+!}db%1>NAfdQ&YR4(m1i=!p1o_o;H&$^L%pyViiU>;ssr)Lt;u z)$djSEAdN;(Qx+DJCEWWeF)rk7k&mPKevn4j(;P~R4hQb>1n1Q2s1xvIb8!f#DmSE z-Jn2X!Y0ZAotQVjb%N1*B@LUHcpwO|(5~9_FfOsPR?rcf%4fD7)s6%uJ-UDScDMx} zUdF=%_fJ(%7k^zksT(ipPf3a8oqB+Z42>BWV3h1+rpfm)c7ANvvOsRh@#@+Bm+H9D zgqX){!|I%bXFoCK9RbY;RC}J~xReTNJhuj#ZrmJjF7DC|sOISx+aJHT0^Ydq=`{E@ zS0@us9_ch}0zN0038+`nT8U4ml4$(k$qouE z#)BzP+~*>N=Sm7otZ&O!zBZ{_?78WvoR_un=| zD4K2Dn|z{juYs1J5%Y=Y{Z2}T73c2~XFlfpqBgqQCyRf6RpKY#8H#-VtunRNAN{vN z#qu$jJLAM%s>iEY4+!=GX`jD$mPbDs+-pX^jy4dY%n^KVoM+G}p$LmCAhze@P%ari ztXL`liz=*b#2_{r)yRc{Re`~PxJ$`g9AUL|rP2!hm78lqsiyh}WhESK^gui6VW6YR zd)ei6c8Lo5cYu7|q3z5zN?B`zk?7FWE@E%_A5v5mlQa6YWXw) zl&iJs%M5p<;6-8~%3fUXTO)mW3ZC-zm@8mqV|(*PtRjQ{fdW+(Pc@e{I+?ZC2)#Ss z22eE-A$q(NuwV!0CJC=hxF6`^K%Jw0&ac zdmXFqW(qjLZ6lHJ_sG_K~-d%fF8lgUNdK3n9_6hXIB99@ITYpGR$!D&B|* z3um%gzMPTp2FdWZ5NA~g@1#R5LppjGy$N)KprE!WVi~nO$1w4)c217fPnY(G7}E5( z2>asAl0$0_yco>zWGR|iwf$$vns2UiW_>I!Cp2F9^uJlGslWLD+F9ubvI57zG#>!A zfbUpqSIG_E)>Pu&TMrPdOm@JL-)+h^6yoC)pS%{R9h9K^E0ahjTL6|pnt)P5kIiaBgnCW&Cfn*08lHT4xd` z7xR)@F25}g!-c~ty;_DgQwn-5g^=Ol>EN!&AcO`^7t7#R4Pj`eHe(6Y${2m1W#AnI zCK!qB=ZuO2KtIU86fh8;e%EJeFpeyVjzaOv;Q_+3m@?U*(e=#WF8mKKOBAg(w@;I4 zDL_YMqLNS4*BdJ%YIb$tSXtSUV>@mT`$@$dU`e;6w^rJoGbK7XFapNk;(#- zmg3y*)V91?8(}LCA%(9pk##H#mZGm_-2VOE>^U46v8a7-%6ZM0B5U-vTx;j-Ypqai zw#RBR?+e@K>F5zcDD7%ltvntQfF)6-m=<#x2uu}`p_2=@zV^C`EqRX{d6kUs*v;3l zDj!XVQxYz?6=U9~0jEDhij>LYxGB|wS@Hmin5Wrf+I57xGW^|hEF}%;b>G&@s=2&8 zZI=!(VX}E`J%Jc(QcW`sMO9ouZF}uESg^3)r&`uFE*9S22Q5Ka`2#_(vi2UGT{X8n zD&=u4=_lxosXx zNFisf+mN5mSqWhO+M&sG&HnLUY$DrABbN7Ztio!_)}b>m{OqM=V1)kkfw^H84?5SQ zSxP6Z>Ub1-Xb=YLumIKz0Nn&8(@1#Wmp#+%(nnEqhn_ZJ!U;wMYU432WcKGm zD+1T(Dp8K}%jP!U>!N71-m&3!&&kQkzkkrL-qjg2<7wI4SF)pel2$h4vD$|FZFyyj z4hn)(^h4Vcv_uL;x&lJAxy*3Ih>ul{PCjZUeHcw)K7}mBcox>xL{-fyE*~`x1D#`4 zYkz=5m!95zF=K*0tN6S4>%Bzx$d;=_mDI=1I7I+L#1YoOl=*kZuaO3{_$S6a6KEK> zRy@3$UV4$u?Va7p6o60O9w1Qw{*5~r+?~Dm_B}S=`IA2>Apf#jK811Nl8x9xtb9^d zA{x-%SwCj;K8h;XI6WNVg(EFUy@M7M{3=i`693IGi=cxC3y2RDv-MjiosW*oqkD3h zSC34LfI;oFRo&dbT^p~GS_c!1kXWgItQn%S87v*%mkR}-Uv*_Kc=?RlPgrT-pS@Cw ziT<2!{Js2?Vl}B2h2rO+rNjTZqRnt4p4_8O$4Dy+FiZhsnAb?`YA{#Eq@ZyWv%1Sv ztU&jyDOm$Q1k&$RLyz1OBa|o9Z!J=Z8^$yA=$@GM z@@MYs(g=h#T5wF~5k*08EPF-Mmytb}xyXgIEq<}3w2Yjbv~0AF#cNqKwW&~PITIaS z#Tu{m5sPw}?Yb*>Y$JFv6w=t%%F~k;l>P5Fd+Qpn{Vae`yB#WU9Hv?c(xN2c zVRKA#%at>%4Sb}i?|G(|l3_^b?=NpsCZYhG-_Uwud|0YDj5yc{YLm<4JG%6FFObs4 zWeN!_$_YFQnF1ZVz?A>&%TYJfUsiR`ow=$8KZuJ*YF;r5ZTuCT(w~1Md$_7##O6ZG zlP78XwoJ6$$#dZYZ*_o3D*HJwW;yW0KznuOJU?=E>+yP z3lchd)2I)G5=8Ap#X3U5g5;P8RF5jCTs5c$iV+cY6n&Kxgv$GAxH5vSV@V!?0*QzA z=Q!a%G!l;zX97iFyGO+1lx5MM1kO+as;JVwQbAC7AUUCtDtg;3B7*f0AkSr#u(H^w zt|<~2#4cWUaof!}Tg=zn9snGuDe9Fw)!>}kds`#N6M#(7vMS%%@t6Lsi#-Q)^?ys= z2w%zP>}R@3R0#osLPMN!b$FvNgW`y-trAtOm8Y6i#UKzflxCymo0dH>sYnLzYJ9E^ zW#L9!zGb!vItDpZSf-wgYFHSm`Ic<%kv%!aAL!+!RCzgkWN&osKohHXLOH@)_VUY$Qoh; za!RSl&`oIy#(IK(6p;UpC{JH2*uq9tA?m>e78Lox@pHGF5G$Fc2-1R>jCLIcf3{!B zB}gN*Iab0I3S~&e$tR{?^=Iyu;pyywF>8{~5GgL_Mi7E{vQad${LC^_@UD%jmxunc zYJ&K1Y^2mj{p2i_rj5q9b+(}3Ao=3U>ynZn#bcr=wdAkanrVtQ=_Z50AtCH9URctp z*h+pgG-4V2xx2gTP-|Mwx`CF5iTMQr$EA=Rbj)vNHxu>p%p|9*kLruBpx7NXO@dNpJyyBUa_zt+FH?hxVzxWXbD zq36*gq$1m{`W}=sBI8$^?rv|a@7ORTBqZhKU3X_2-@kwE&`^(VRvrPKg#%DqID7WR zU9{!G^_+vl;2SlikTBy)6#rNjJ%8DGLfRq2S2#ZEqlru+R8wE5TVR74Y>kkZZ z#KN2mWO1d1%Rl0E$D>kM9>gh^WzgqXOj@5lp*Xm|vGI8C?4&*DIF$7GAD9vaMe`6r z^j1IknzyO0@Z`aYCE28g~=C!GVDzB5?c{?3f@g*w~~GxgrP+Y%4j6ip)vrS3;jGe{n6SdvcOu zcJE-WZsLHbiaK9E#|Y)~oo>-#3T<9q{`kKI)ay8|EY=K&meG95fGzC~zX2ruo;eTJ zo_{Kr!0McVlKlyY4D1^##^j}%b_|$A@jrZk%#)gqXa;d#KqG3@DRC)n=7h2wIS$ok9C3y4y3nd>PJcO;Oa)MaeKCfg|^wrR%IUOj2e4-E7N z2erR5F}OaWf(>H` zBw&PJGcyXFyEx>xCq>-DF$qJp>Q7k(kr-i^auwChdC3F0JaElUX)rIbutqHc1sWvk zwQYr4asvdo9>DOz=&1sxM-O=T$|(a zv-OSvLVwW%EVk}KyxA)|v`ccb87b4&z;FX8Lr4vdW*MtTJMI}0m4rnC&&5<;#wmY{ z3FKflfU-j0$9pX0eK&4c(8IG6P9Mx;=6tzyP#Kn>wbKcJRJwHDB)_LhnXU~FcQr-V zJ!ZgBH6xLNZV%Fy;@vAW*ZxEOLKUS(W~Tme&4daUN=>%bh6xN)h(}Hja-d#ALHymF zy+|$9Bnv}_P|!=0u3-ZHh(zK@P@Xb5e#!YZH(&qDW^f>Rm?sP?kZ1S_5iC&TR7a*O zYeIgd5F$k+OjB3=X z1lwRFRoKT=?ppaR=ST{FSL4snnKjCm; zT`uU&8y+^Yir`U#z4YZd`c;!*vF7M_Hp}>Q762D{nAB6#phjPH&Ioq@EI9Qs5Afsa z=&>UUB*mW2AJhX{_$+#xk1s@z)YC^*A+uI~q0r+yRUSWBlfKej^r1O~0IMBZZP8Rl z+t{mN9i5eNaI*nK(p<)QHH4havpsc6_4>;Mp4ac@I^;in^#)ju!VIOuRHOkfDwml6yG$ehn z_fPov(3fE#t(qYYSc1n7sAS5MOE+ZOvl`LARrz=)j_I*vO}BfngcDgRW-U%54a(j$ zm{N$2H3rqbC?eHbX<+dBdDv5|Sld|gaCSu1_8rb;VHJmS>#pMK*f#MLleFrPG67_` zbMVZg%jKsc8MB+4qWQiJwN=32V6WlB#LgCf+BYnj@2W{UD3scIoum%9t!B6BTamw_ zb8RQ#kd84Hl{f+yM3@f)=LPa$(|-97DA(281)SjwXlN-4$~+x@#6<6i(QJT6r-8|r zJ-`eqEm$I`a8o9eK>#OX}RIiFu zdJF<&)Nrbyld+T*7l1(ytgnqS2~JR_5)=rEk&qHTD-M(bO9P@eE}0a+M|tw}4xa)P zaT$~+9L7ry2&RR6SXxwkvRq7GrgO6Ni%svL>WmKGt&_pCJN@8#|)w zf{KW+(xngJ9VBl)!Ff((hSChKuO{XO~r~X9@PiMt`K#TiL>NixI>s1 z?{lLZsRdNNl{hSG>#7@P7KcIb4`e_n5P;m_CBh$8h=0WU^cdxe^WvnJpmH&~FbJV#_6M;Hplu{!brnc# zPsNJ}YuanWz{L?Aw3@^DQV1GZ^jCl@_Y5fXEVL>S5HO2JCYVg~iZLy^8yLE|S=a~z z+JX*=dWt3|_#&UQPz-}io%xukjuni45*g;H|K1>4wu7Z#m8y?ic1(wa;?t1bwo9Lz zm!V_c?pchbsBJ-j$Dk-JJPKhFt*m1b6=-%!ORGMC*(_zPNzN34{b|6`)(E^WC5wu& z)prU@ehMOybiZaKoCZ=gNp<3auJfm2jI%!CpTBpn{s=kNk(0ZmVnz{H{_UAY-i=JR z?%;5BYi4&7_(yaVKo#xuw{;PK?aeOBqCDP{28dzb+)RAQ1_(ePZ-^3g?-#QnQ)aFp zv>=kT|GFZ+aAMs9FdGO=UG)hSlRq$yM-oKWp$ismNI3Ju>K`xEaFmX{Hf%`|hbGm~ z3<;7uSj6GZ1mPgSMg&saq%BdOJ86t}4gS4Mltmkb;;CG(_-;u<$cMN#H;Fv5Yn)?#vI5GJ4N-Ee;qE{@tLMPr8C&1d>CBLZ2Je_C@Tv^Tzb z2uqOgERst>9i%y$&*9URN7z?=9!h8-A6;uwLjH&=zo!q?L^n~DZ*FSFdnvZ)IUi86 zC0Cv-OlMF|&Z(wXS#1SXrf9G{UUxM%UM(n)8BE4Cjt$Y_l~GMvOu3dz_uM7mheE7k zM>w07dnU&}qh)ftFT`nt#KinoU8j{_DSQ1oo&WH1TO{F=Rh0EaQc}Nqf8Q6JIPwjy z1LHW}s{0|Zyz#xsol{}u8XXeZT#h!cgd&gf^_rht`;DhlX9K(5=AKS2!io**>4m51 z2j@Ms@>vRk5UlsLo`az;Wxb0NM;)pYNwOrOQO;*I(a~nNbTdmH#4_{`P)%R=i_#-E}b3)%}0bPyyJ9 zh`Z_1U2q*GqC9@boVX*ri2`9NVCgsx5Rif5S$=hr2Raf2!ldq^-Z1jVZ)|^-!C^qV zi_##MKWIkSwvLUq+|2qNhrDVqi!0xtCV#Ps;sOxW$6x?N@$^0!f_B~l0~<)1j%X(; zF)%pMD<%I%2qA~!nR3JYi-W$9Lnk-$G&ymY#DQ}bGa7_7EZO>bV#^IUSaUfT7-C^} zYjQ=?*jfzrL z7Us-X`DvkM(_Qkq#_E2Os#QXWE8trX{>HXj`DOp>;#HIJ!|y-rpL>oA{AhfVBk5q^ z=Ex^=m^asa-iCc}ZcRavu=@Rbx!iZOF(^v@@i^-T;x5I88+gp)kJ&V-jGeDL_!>CT(F%XYw?(?X*1?A zo@VY6>A28<6e_67HH184o_NrIT1%bN3(G+9)HNX>_jjK=_gR39!Joix<_CxZ$nUnV zE;eA#uCbF7)7w9j2fiEB4}HhqtqxGU`Y9-&_bUE<+U&XSFFO6pp;MXiDWE-Pv@Rg= zzg!awG%oT{%LOk`5(8jgZ9zRXJWfTob@j=&NdpQ6RC!V`l-WJnZ(z#nmT=bl`Ems+ z{=qC*T!5W>bZUE0$GUjYN+i9mjfz_c*$wZIo|@W@7B=2cKgE@*O{{OVpcQq3hg!bq8(b`?Jf5Jvw1E~DF3AvU@W-&l{;>}APvhk;nPz^>P%yCU z=VSc+0Yo5&CHeZYPxGRMNO}P<|5c8tfd%!!VgA9$5DvEf_cRevCb3Z>RW{%X0Uud> z1s)JWVCdER09j4ph%6HWBa<*zmB~DL;*-gq(Xat0>3+}veRw$l4IL%t3Ry-YVPQ^a zYN<26YfeU zX1`cvSfD&!bCl0zQo|$GO~X=k@6rc?B~D|Ei-;w-HBYdEbJbC-w9>*e zTVGiOhS<<@gWVTuZ>(foZPxKg=~LgNN?as8B3Y=iv$65^c5xX8rkHv|c zCx8jVcM+IZwz8L;w`Kv57Eqia%Nk5dxGF!ShR1lXD_w3807tAMMl`c!v22s46L{+Q z)L4v3xQaPyJAK~-PHC6IhuD^%@)uOG8nLL3w9(Q4W2hQ`^TS`E*cy}|0Z)q`hq@7e zz6RwrYDd(_`9suXKXPDdIJlXNqPJsG&^L;>npCT)&vNn9f>{){Pj%9Zu4|a258ET* zuv~xD0SQL_DyiUuERT&NrJo;iKXR3oI;gwP4Yf< z2o}~#CDw~>17bF$!TUCt&e_ZIz~@fy+=jE$9=@P1Dx!E;P(ByZTOF5|EL8ONME|71 zkJsnjS#8dBF#8ij+axp);y8RBSyEDRhh2ULB-cb9KPCbJaxc)GaDMx2^}(?AG3~`8 zGvMm9Tm}^0{%ILomMYwK!RXx&<5x(x{9cGoUK=VxQEB^6e({v+)>?GO_&#+vQAI>M zC-cNQiat2RA6E6yPu^?vNNjtSDErIH=af+zVQ@$s5J06gV1p$Htz7?1zeJZ|)Q-;( zobAuSj~&U<%^Zk%)NhshG5PV&47_8fAa+?`kr*2p353Rqi~XdhWn$osV2pH2kt|9h zr-2r9AgBv|tijUoP?NM2)-r_E6c9Lh$#AX;Wu$s82n?s;jZ7|FtFB8a3XiC&a)Ocp z7yUlPVs8WLIHnbgVk9I)llLK4RbYv?+WS7?F%SmFBx*4JvsOPXFF%?SvzYdCtzgG? z#j{W7IMUU6M|A#+?bYv@v3IqO-IdpKGrvtrB{YY3x@pR}5TBR%hcg8til-2>SX2yl z$5@cIRr{4+eGt?v;0InW*hz4G`N;c=fD{CZ!0yGN#h1f6B!I#Ck^7QrQf6 zKH}toagL_=u|cILmp=NJuxHBgI=qUtQ8EUG6~Sp&*S>0JWcH2Cwr zIJi8I3;~vbqMY(+HSee7E=;QEr_4Er-n$PFv`T!I&*ncB6_GN{Ov?|dWlU$e&Glx8 z*>1kRzJGK5zJVcA0_c+hijx{Dcm?jnxEp-Oy}Id^RfdC$ksUf34FyC{f3#v?LW4u~WL8>0 zCr_U$7wFE7xPYcMZfmIn$JWC|;4o15e(|UGq@_%2=zzRGPY3oft1Ku???Vm!0^L=3 zbss!#i?y56OBPFu6*qb+L{2shTkd^5-y3~6IT;y5WpX5SPaU8c9=J9E z?#2Z@t4TR3tVG#zA^DIpSAS4GoE)=!^fMNSaj4-S@l?sQaLJCc3EJ=F-|~}>n@&-A z78a9`3I-_Foit!U5RNnk6DSFRU?CB3>|OFm0(fIQw;=&D%_DGFOwU@y z&@%SSZBFxZ(t6&eKCkxC0f}jyCW*nP4Xv}>8nX)ELUILaU%ZJ~*gJIsO41H(xwXL1 zhkbsOc45U%6QvPgda6g@s)xGFgngp+>qM$;aW@Tcc&*IJE_+ImC zp$&TD2`0cC@LK+h7aoiFL%|BWeP>svCD${Zoj1nbtLIy_(-op9@kUYolKGae1*Kie z*4AP<@qN4dtqYO4$d1v5!5VG+WDFd|u) zJC(GhV&`=5G&8QdY&Fnf1!y#h=UF^^BGS{M$Zk z{g!_n$M=VGZh`)VcWaj-YO{aGgm!l5T;DQ1cXZmB&=N`$R$gu9&cVhdPEf!yh6{cy zt10Z?`LNtj2|3q@+Gq?_WFm_xIR+$>)4DPaIQlnNZqtumq4o?%D}`e#gB4`G?&N z)c-ZNo}agzzG*$(T>i(&#s2h54qfpBxC2!blsiX*uRNi``p4r2ED(7@+(RQ7O^{HS zM1qc%d~XyD2qlG7CdQF}kCpxv&6|=g@58m+gT2_IAE=9YIl#LEW(lCSHU{l2$kZjrVqcH*jtbD9{=o6tmA3Z*;xfRc=`N z1-jqlmBObx`!fvLQt>Ha_9FoaU16pHlm;gdF^!Ihb=E?S8;Lp%NvvZqQ=($uKQg=J zZbvpKk%S8?E?rev^D1nIGLrG>rgsh`nAJ2AH2i#-F#G$W_wSsyy}9}3*V5NO9flXf z-hsWo-!IDp`o|kt8$qwczF@fIH3mQu)3k_fE-*n-FmUI3k_&EXGZ>G2U_t4SoK3A9FR2EKf4ESXZY=)$&Ki69W0zMPUbwY68rdH?`Izk%^UrKG6)pE@ljVM z`D2PQk-_0mf?Y&2jF}4*)$io56c!u|Y0Kr31hNk|%1ESB8gF0m{>uo(>Ug1y#{6R8 z`*f-VdYpt)NR*mlZA9#B({f{)FyA}SuEuUt>R^XwTVIeffdEm8Xl2qa`)V3<6_oPRY{pc7){;cqA05<7_ZPeK3J zRpJ!1&UEQ_vrTYInh(aT?I43oFXeG<3xepmKDX!88#%J24||LN~`e5QY+ zOxL4K7XeJE^hiyH$(*lFT+ivoGi8xq2$h9?^=Yhyx)}!g|9q4p@v={AdVI@MLu6d_ z75;mhSSrD8t^v>y|L3cIt%P+R3^dSvS8P4wxQIZB3Y=akE9;cC>{xX_q`gCQXp44zf!0AV}pp-8PJ^e{gWo*E-(1wxpxAwTJOI{4$kS2EdO$bZCe z%Ee_GAYWq}%=X?#p?C+ZQ5qxIy&=Iic!bgrxwS##Q5D(rd$e81Cuu~R-#=$hjY~B4 zfkN#@nA2x{<1W$UqB)c z&VEw==TNDr>$Q>jXyG&VNsfEa**K!$s#@)u^QGf@d#}?SJ&jlFs-dP<#sjzK`T+Uh zx%02HdHdVDXdOvRFnCG<0+Div!>)9GXgP2*}pk7L%h(wloK@wMG!|$zeK9P>?B?+6ei}B z))f6PxjaH4d9?c}+WeX0epKEAqqo!Dc7FEm?sbxk9dlEh7AeCyt=?;CrF2rSln!I& z?fnLyo@YMw**=@My9XH>U{(>EO5aL^YRqq>f*jN*>pccurCW&x$zF8=oXhPN{+Z4dq5*G zGXOgCKq}q@lfL5AhTlu|%gF8ORZI}MPu24qL zV&SxX;78x>dp3Gn{|5rt@C1z2OC#D^jFpz6%g3$ zF@~GVvBdJ=`TO!9a9kRC*58=zhl;X7InEAs0p&_h0S*o?VPAw}ac;JfvnZKhY4bry zF}^dSD!;IRGG}R6pn&sKuo;d`7+$fNg=q$92@EVBt@?xJ2^j?)gArs+IrSw$sNrj# zP1SC@RHacRDq>YCgs>%}t%^a{8`A-L4i1DINTxR*ye(*e^%8hXKZuu{U}i-q$(to3 zk7MyoKB&ZnrhY@Y3e8GBYySH)EyGUIdH}ZTsR1t&*0;UL!kvRzpVHtj-dsYv4_T3qzLy2sX z`}?lAF8q)tdl*x*7rM$;s_)6|w4ZqG#-_!kNoZo} zN|AzG2);6EJ>`j!nwB1l#SQbPp${@I2Ezi)BDqlt@sDg4%F1wRBl;e^p_(s28u41hoL}+U>dLBr5!H_tDaYl-eD+z|msN$Jp3Z9@w+l7eSv0M^ zti4G6wEOws{E_Z{rCz8n==1W7(dR_gZYNtj76D<8-to5svSC_dDzO}&AYtu~UkI~M zypND$ER-y@63Y@9M<-}V)5-kuKEw%zyk!JGM(&1GD4lA`B9)RrWBea0Y7>i4b(@d- zi`1OrcLhzNILozcrO+y$gk%EYo+IHA020lZjYT?woFpo>fTh2BW`Yb#97{7$lb*V6 z!;E9L@z&HV-kF-&iH8jjjmunOHBIUf1~CYUfe>UB^bP7dl(y)*Fc^%?n5vqlX}UhO z6rU*d6|3{Yt8#9C_!y+krYJ!7&f&Cf;r&i>W(fMJ$7Hknx0R_3ec$mCiX`*ME3fHC zt+^uA7}`{Ko8AZDsvw>ant&qnAp})T57F?`CT+g^wqC#bx;$+qAJ;ef{=1k9FJH!n z1zOT;NtjbS-D@z?L`mIeOW-Q{(rVFqa^ie-*nvL%jWBEHq%8E{j-pTUW#RUf9wM(+eGBL0f-}y zPojh0U$&TL`vJ(GRvrvDz;`9_A(FsC3oFE*CHFJkSJFEfT)wo%rPnjXUSzBsfCTtV%cPp6>LeU|3t4R)Bs z8WSlTxO!3rQEBLTiH78jUjTJ z6OjwnoTH?kbQ#iwFoJX)6b3a10HHqxun<8@9`w~z@o}X&`{~>*H*ml<%eaDn-ULW`)4(DJYYd^C$$QgL zwdr9P?GAbk6Stw-hiqrN#8|^@Hu6jULKte)@rc>vyAS%+9QLi$I3TTL7m98>e8ecXM;_13vBz72F6S z+Z{6hr^5F%10a+LN`w>%P%+a(P*ZFs%rBJ0!9@1_yKbUiSBdvVQ#=dXWR zs4wZdJt1~dx4b=BYD%{cysdA7o?irM(>AXOR=2FHYy>2L7(sTM9rkn46?}neAdmo(p9^5TFe8zXnn@2vHela_DoyS*z zI(OI3a0>(z)bu3Wc4zK(XaM+la95z>4jdAt5;dgg$r4uM8_nJ~8gu2FjclY|LKYtz z9R>TdB^!am+8|18zCVw|Vl&%u5V2;OWE4_UhBQYbisW(zMjNmn;&^{!H1}#8_4!}= zhjq&1V|wH!)OstqZR|R+uf`Q;umUS5X=tdXqfI`+(VD`M^2w>PETze7u7hwZN%h8N zb~!WJLRv@EH2y~p4HQR_%dzM8bEe6hUja|?M+uGlK1K9$1Y9QCF1-%ka@Ar^UxY7SDu1QD2s#Gc1! zUM;VytE*bi$nqnVG(|inI0cU6vWA#dUrGc+_{xCn%c&TM3cI1 z7}LpRqOOzrQ`{=_q=YCQu4u6D^tuS9DRbZ$I4RGF*C#peUm3br3lTqkO!#)^+Yf(! zK2AnKPT~pGnutI`?WvCzR%ZE}g(jHXWOX=AHG0}T`SwT7-&3B;RiHKp7-GL^AsfE^ zl;itVzHsUGdg&JE4RKgyuYKm@>3Ov`4jc`CdMdiu(RlX4;iVO&z?5Kmyw}EdzgfS0 zZegJr_^dfeWDGi~aE?1QmSG}haSxnh-sK*UK|pbdxldlfm>&|7c^p_uM$7DO+f{3K zifev))w&C`3177{eYaKI;xSXDgd0RX%CT%Ca@WY;T{G)Y>*ha295+@|&pf3$bVWjC#7h zElmsiHX+tQMkp)KXfc45>`Uo@fg4$Ir4J&V1d4dKsc6dPMJ|*I@KI7((&c=5oY2||;C*~P@i7BGQDsS&MvQ5XW03z0I!9C z6Je_kFWUy>prNyCS=GP%r0^r9FI^XlN^B6L+k-@y;(RS_Qx&#x&N(FOa{~g@` z=EN7Sfq+rjUdXqHA>Wv`qoyE=zx!!Y{$B0+wfi7T6lhy zxr;Fwd3F-TH?TC|;pF6`kmup}y8gE04u!+Jaeog$1kYMw-CcS!E6n;OL;&(o6Ea}I>#wN;kGVhl9&A}OK?Q4B;M;)}&{{epoYjy#P0~&VqRM>d9{6Jd zE@<<0=Jz=4{JXYOHDqUGgM=oiDi$9QxiRFm*cg$~6N5*w)^K-j%ySbFrL*#uA#z$~aGO94CCm zdHfIzMp22ys9<;gCU2+7{H~*$v#p=A^uku5$J%-?k1G5?lYR<*rgZ~YYm2XbC$mG+ z(hCbasijVcQs4!>Ahp1I@>8enYtYr2|D^OnC6lW~0F26*HaW674u#p`6GaImym1%` zU#bjwVgAKrm&526-1}eRcWhAr#x;9?xD&j)|Az<6NI` zWVOX3mT$44*Gn%I&!SseTC6YLT3^Wa*b37n+gAqJy0*koPs55VG!QUa}U<(mt~I z)h%xpwCyqIc`k|2uJJf+2&uIF-{e$ZpI%T*tjb9vUxIOdR zmx_Y}mgSZFkkwHC)$^Mp=fLwznxc=F0GIG{rsBN&Zsc|pC@m#@dv$bC2wd`yfP~Wx z^TpHYf$OU7$(p09+h0I=@V|%*AaMQlVLNs-0cars0;AQ9y8u_f`&EG&7OMM3w_?wh zaI#5^zgUYpMQd#IZ=~8Jq=|r3Sh2~0j9fs{7j+)OJ zmy&!8@Trm@Lkz0;6tY2nB5#_hTy(dwgoLS*&+m^Ai{$C(<;(mRq+fO~Tc{P!$3RI! zEy? z$Zyso#>Y>e(YBpTFFDqam6g_Tu!HbwMv9oTl9rOZ&*`TO*?-k*N+9Q~o&3}P2O0H&jM_VqNXx#Q2`BN}1jOccrkR2webczbZMX*4_Ci$) zgsgI&lML^An(b5q2yF3 z_mBg|fcm-GH-xMv1mi5^0!t7aF~6@bn$BY0jAW+fq@{Hte8%&Tg%+Qj%|AldkzQK+uL_H6gKW331d%|#i!)YKPAxn zwF1MNEb6M>dDpcwKkVOc?oNyM7aod07ABx7MAHcrkNz!?7%96r7f;F<>vPaS0T$Y|3Qh zc^QKwXd;?Q6{taq6SuV3D3lugf^QXX_Up;{Z--O<4R-=%U44f5^0)#JLQc=O4K%<1 z0frweA#q6Ed<6)kRY5V>?mEjm!^r7tkS_c?T3mcq&|tte2gb`8fy9`LFbkM0JV*Wf zgPLvn`R8vO4ZP~IF7PHA+g5M=a+RVt7j5eo212K2cvFB1ytjj%?H^rqsDU{1r*?cT z8I>lf^Y4{lJ`T;$s5u<140yF$w7QRtKh!I9jTjPK$$>WXREE}G{n5yj2 zjlnf46DbcQHQX)tyBwmuFTGJnN`=3hcfoi^H-|?dcbXe4Li}6{4TB~+|3_Dq9 z97$>z8F3t6O&EWe0B(Ac$E>K}B)DNIc=|_ggT$G3_wi?B(1*`{k$$otPVcL@Teb4y#M2XE8iWgraw*SBWc=)huN!O8y?1V{-Rbf#lUo1_ z)*yV6nFCd5hY>DF`>7hAq&cfy8uo8F)-WU)f~0r+i-hZa1B0jfP~6fqZ_Ow^8~m_h zWQ!9vl`lRXoufJj(!3wTZ7O8l?Q;`kQF~nB3ex>Zf93{)Z58+{s2_ARo4>PTCUrN0 zlBMN;U+L5**MybuMj+ym3Qh+r3WKVhqn!7ZM`tM4q*0#0~ zGAVv_`KMYF09q!1Ul(5ZeEYb%v?A}h8&$t2Qp6RWIWWkq9yduy-hl_KBR)fN1g z=jgiHyYet-`2g$D{^I2C!gkkMO+rO<{6iyNDV`Alm6@(C1+3IS_kqAs9}zFR2(MR0 zOdOd3l?Cm>&IyJT;rDZ9U~jSRX#Wtobh+~N3Iu`-HL$qHl$|hnPYzVHtt|6n?KVz1 z@RdYbMjXTnbg3$nW(h!W-ImBSSl26M@Qu7 zaIFJ))0ORyDH5r^%t`QY8xA?V{&G**?noKFsPhB`s}$!>Ccq-qqMTRqDjIWM#v_Pz z=WG8ULBH4^I_4KL_opXvbV#I&s9V#7g|nK~^+fFZMEY^^o%E~xC-I={)wqPv_a?E@ zSv#Q!>h)5`4E=Jqwi4W@)4qftezZpm=TMS&GBX%co#U8xjJW9alO&bJhd(}N!kP8t zlflgzYUlVye$i7##~fXfL+9^(!IbE#WxNiidTXCOKSzxery7la*7%t^B(Z;(*jXi! zA1fAzC(GcdWvj$2aYm8JlUQ7%5`lMrr;X$D@NZUwdok!@0lR0gw`s%Sm76Lbetvz? z^tFYBFJIQX0|m?NfcT$G_--#x`?#CvJ?y72Hj3xbLO0KnL8BWsH{+rhL2w<3O1q~S zZZHfdV_G;VqkP`>u)+s56bfAJpj4AXO{~0Q0I9$)1rf2OvHb1>^y*>9_oX_{4oPwWMlfK@V+q6kdj&xHzx!y{DdP)Nx#?j8C(k#hRNk; zml>KAW#Fb7F-L@Qa`HO=*f~ievTi!-t%4apm9r3ba?u*c zqmSMcI<56qdvs%OJE{9fjfReGsCC4}WYsmQoWE~TfGpb^X?_!XDZkHeLS{;y^g1?$ zHY@j4HOFUtj?BB_n;g8?ktF3UqfZFI9zSUz+m}e0?acSq)l83zAi==*S@Oav>Ux4M zj^D%&fu;)OXpEBi2Q$62c*<3uWHW)lVmP_v4cd_GBLPmLZ(uF-J@!nwg5d2->&bL) z>S>0us$51KaGE_YLV}J84@7XErNfriNMn@7u412yxC%GjzmLc?@XT@*k6ngxma#ap zR4;}##%fkcpm5@MPNx%yl%1Co&B-fH7jzB`MZe>MDd|33L{@>+S(|I4U-|I9qm={{nsj36z^#Tx2 z(NvtU2ej8NE{qa`!ac7qj&4pULA}7qI(72`F{=P@6ax)+1W@pqco8IXChGN+j+2%D zZP$j^?V6Kb!R!6mqK@XS>k4gbTQWG2HSVOEquSXF%ToDX$-W5QNT zmhV<ZTHu}L`@&yp9WXGbCVjZe%Am7NVn4L5 zjuih<#g77~Az#ZAm$%*~21k~jjJYIKvO^`LaQHw7IL)smo}Yj%7md<&B3w8R*5I3>Xy~00G=^I)?zOEeZyY}`+RN7Ndi{IF zNilGHwrDNzYpQeVdT|T2^w%Ju%JTPZi{2K z5BVQ*sM@I>%e3ZM9m}Wn`N$HzzhCyk&JH>*%AvF!5NxkNb}d2%scfBqS+GhO!L|cM zW;tL@WDlTQAT@RfcKXDh46d)cQR?ZjX&!21lFk3mdlHfoG7kB>thMynpm-yiyb@%E4{ z*s3Kwn6$%*;)qhfo`QK#F5F!AE<^Gx2sy6*xfJ36+f>OjfO~fq5UlCpI7oYG*(=F#(kd^G=ORf` zAspf(sXCHcH;VseH_Xm{-(8kMw$wwm^!_y8PXo-cXMu?V7u$tKoRTn{=vK%7>%ZLW zwadr;YiFC5{`v9&Uf;h?X#M*=6?BNg7Iw9oF`UFTRi<6H6cls~#OI{3L_O$_dFpkD zXu4S0Azak)^O!#0zg`GRR;sJZ_pVGX%7IlzAzeyWhCcN4obS)-)thJ|{CDQ6PbYN5 zjSP4#tgVHMU{n+7P4N{Lwb7Uk^SWI^&4D!I{kR4crl{R8c;3~_A-%sZ^Ik#pqFeA0|B@0-@Z7b%g$!P!Ov zkWMOKBr8ES5KduJ6|GWL>_Ut-DKrS*v>A3BP{)ZSFEx<*@5A$0B4GGFW5p_(%H@}+ z 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

    ~D!^9GwR3<7{z%?}+5JUxR=5=@GIQATQjWhaM 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 KiLN$ri}@dUAk1_C literal 0 HcmV?d00001 diff --git a/html/_images/scream.jpg b/html/_images/scream.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bccec1786d1dadedc7b15a5f54da737fda9b10e2 GIT binary patch literal 629018 zcmeFaWmFtX+wVPtySuwXaCdi?Ab}tQ8QeXP;O_1g+=CM&xCZwS90I{z!

    Not Found

    " + except Exception: + status = "500 Internal Server Error" + body = "

    Internal Server Error

    " + finally: + headers.append(('Content-length', str(len(body)))) + start_response(status, headers) + return [body] + + +Test Your Work +-------------- + +Once you've got your script settled, run it:: + + $ python bookapp.py + +.. rst-class:: build + +Then point your browser at ``http://localhost:8080/`` + +.. rst-class:: build + +* ``http://localhost/book/id3`` +* ``http://localhost/book/id73/`` +* ``http://localhost/sponge/damp`` + +.. rst-class:: build + +Did that all work as you would have expected? + + +Building the List +----------------- + +The function ``books`` should return an html list of book titles where each +title is a link to the detail page for that book + +.. rst-class:: build + +* You'll need all the ids and titles from the book database. +* You'll need to build a list in HTML using this information +* Each list item should have the book title as a link +* The href for the link should be of the form ``/book/`` + + +My Solution +----------- + +.. code-block:: python + + def books(): + all_books = DB.titles() + body = ['

    My Bookshelf

    ', '
    ') + return '\n'.join(body) + + +Test Your Work +-------------- + +Quit and then restart your application script:: + + $ python bookapp.py + +.. container:: incremental + + Then reload the root of your application:: + + http://localhost:8080/ + +.. rst-class:: build + +You should see a nice list of the books in the database. Do you? + +.. rst-class:: build + +Click on a link to view the detail page. Does it load without error? + + +Showing Details +--------------- + +The next step of course is to polish up those detail pages. + +.. rst-class:: build + +* You'll need to retrieve a single book from the database +* You'll need to format the details about that book and return them as HTML +* You'll need to guard against ids that do not map to books + +.. rst-class:: build + +In this last case, what's the right HTTP response code to send? + + +My Solution +----------- + +.. code-block:: python + + def book(book_id): + page = """ +

    {title}

    + + + + +
    Author{author}
    Publisher{publisher}
    ISBN{isbn}
    + Back to the list + """ + book = DB.title_info(book_id) + if book is None: + raise NameError + return page.format(**book) + + +Revel in Your Success +--------------------- + +Quit and restart your script one more time + +.. rst-class:: build + +Then poke around at your application and see the good you've made + +.. rst-class:: build + +And your application is portable and sharable + +.. rst-class:: build + +It should run equally well under any `wsgi server +`_ + + +A Few Steps Further +------------------- + +Next steps for an app like this might be: + +* Create a shared full page template and incorporate it into your app +* Improve the error handling by emitting error codes other than 404 and 500 +* Swap out the basic backend here with a different one, maybe a Web Service? +* Think about ways to make the application less tightly coupled to the pages + it serves + + +Homework +-------- + +For your homework this week, you'll be creating a wsgi application of your +own. + +.. rst-class:: build + +As the source of your data, use the mashup you created last week. + +.. rst-class:: build + +Your application should have at least two separate "pages" in it. + +.. rst-class:: build + +The HTML you produce does not need to be pretty, but it should be something +that shows up in a browser. + + +Submitting Your Homework +------------------------ + +To submit your homework: + +.. class:: small + +* Create a new python script in ``assignments/session04``. It should be + something I can run with: + +.. class:: small + +:: + + $ python your_script.py + +.. class:: small + +* Once your script is running, I should be able to view your application in my + browser. + +* Include all instructions I need to successfully run and view your script. + +* Add tests for your code. I should be able to run the tests like so: + +.. class:: small + +:: + + $ python tests.py + +.. class:: small + +* Commit your changes to your fork of the repo in github, then open a pull + request. + + +But Wait, There's More +---------------------- + +In addition, read and step through the quick tutorials on templates and +database persistence in the assignments directory. + +Use your flaskenv Python, it has everything you need installed. + + +Wrap-Up +------- + +For educational purposes, you might wish to take a look at the source code for +the ``wsgiref`` module. It's the canonical example of a simple wsgi server + + >>> import wsgiref + >>> wsgiref.__file__ + '/full/path/to/your/copy/of/wsgiref.py' + ... + +.. rst-class:: build center + +**See you Next Time** diff --git a/html/_sources/presentations/session07.txt b/html/_sources/presentations/session07.txt new file mode 100644 index 00000000..6fe08bd7 --- /dev/null +++ b/html/_sources/presentations/session07.txt @@ -0,0 +1,1635 @@ +********** +Session 07 +********** + +.. figure:: /_static/granny_mashup.png + :align: center + :width: 50% + + Paul Downey http://www.flickr.com/photos/psd/492139935/ - CC-BY + +Scraping, APIs and Mashups +========================== + +Wherein we learn how to make order from the chaos of the wild internet. + + +A Dilemma +--------- + +The internet makes a vast quantity of data available. + +.. rst-class:: build +.. container:: + + But not always in the form or combination you want. + + It would be nice to be able to combine data from different sources to + create *meaning*. + + +The Big Question +---------------- + +.. rst-class:: large centered + +But How? + + +The Big Answer +-------------- + +.. rst-class:: large centered + +Mashups + + +Mashups +------- + +A mashup is:: + + a web page, or web application, that uses and combines data, presentation + or functionality from two or more sources to create new services. + + -- `wikipedia `_ + + +Data Sources +------------ + +The key to mashups is the idea of data sources. + +.. rst-class:: build +.. container:: + + These come in many flavors: + + .. rst-class:: build + + * Simple websites with data in HTML + * Web services providing structured data + * Web services providing tranformative service (geocoding) + * Web services providing presentation (mapping) + +Web Scraping +============ + +.. rst-class:: left +.. container:: + + It would be nice if all online data were available in well-structured formats. + + .. rst-class:: build + .. container:: + + The reality is that much data is available only in HTML. + + Still we can get at it, with some effort. + + By scraping the data from the web pages. + + +HTML, Ideally +------------- + +.. code-block:: html + + + + + + +

    A nice clean paragraph

    +

    And another nice clean paragraph

    + + + + +HTML... IRL +----------- + +.. code-block:: html + + +
    + + from table fragments + if ( !support.tbody ) { + + // String was a
    Row 1 cell 1 +
    Row 2 cell 1 + + Row 2 cell 2
    This
    sure is a long cell + + + + +FFFFFFFFFUUUUUUUUUUUUU +---------------------- + +.. figure:: /_static/scream.jpg + :align: center + :width: 32% + + Photo by Matthew via Flickr (http://www.flickr.com/photos/purplemattfish/3918004964/) - CC-BY-NC-ND + + +The Law of The Internet +----------------------- + +.. rst-class:: large centered + +"Be strict in what you send and tolerant in what you receive" + + +Taming the Mess +--------------- + +Luckily, there are tools to help with this. + +.. rst-class:: build +.. container:: + + In python there are several candidates, but I like ``BeautifulSoup``. + + BeautifulSoup is a great tool, but it's not in the Standard Library. + + We'll need to install it. + + Create a virtualenv to do so: + + .. code-block:: bash + + $ virtualenv soupenv + ... + $ source soupenv/bin/activate + + (remember, for Windows users that should be ``soupenv/Scripts/activate``) + + +Install BeautifulSoup +--------------------- + +Once the virtualenv is activated, you can simply use pip or easy_install to +install the libraries you want: + +.. code-block:: bash + + source + + (soupenv)$ pip install beautifulsoup4 + + +Choose a Parsing Engine +----------------------- + +BeautifulSoup is built to use the Python HTMLParser. + +.. rst-class:: build + +* Batteries Included. It's already there +* It's not great, especially before Python 2.7.3 + +.. rst-class:: build +.. container:: + + BeautifulSoup also supports using other parsers. + + There are two good choices: ``lxml`` and ``html5lib``. + + ``lxml`` is better, but much harder to install. Let's use ``html5lib``. + + +Install a Parsing Engine +------------------------ + +Again, this is pretty simple:: + + (soupenv)$ pip install html5lib + +.. rst-class:: build +.. container:: + + Once installed, BeautifulSoup will choose it automatically. + + BeautifulSoup will choose the "best" available. + + You can specify the parser if you need to for some reason. + +Install Requests +---------------- + +Python provides tools for opening urls and communicating with servers. It's +spread across the ``urllib`` and ``urllib2`` packages. + +.. rst-class:: build +.. container:: + + These packages have pretty unintuitive APIs. + + The ``requests`` library is becoming the de-facto standard for this type of + work. Let's install it too. + + .. code-block:: bash + + (soupenv)$ pip install requests + + +Our Class Mashup +---------------- + +We're going to explore some tools for making a mashup today + +.. rst-class:: build +.. container:: + + We'll be starting by scraping ZIP codes for Seattle + + Then we'll choose one of them and look up restaurant health code data for + that ZIP code + + Then, we'll look up the geographic location of those zipcodes using Google + + Open a new file in your editor: ``mashup.py``. + + +Examine the Source +------------------ + +Craigslist doesn't have an api, just a website, so we'll need to dig a bit + +.. rst-class:: build + +By going to the website and playing with the form there, we can derive a +formula for a search URL + +.. rst-class:: build + +* Base URL: ``http://seattle.craigslist.org/search/apa`` +* keywords: ``query=keyword+values+here`` +* price: ``minAsk=NNN maxAsk=NNN`` +* bedrooms: ``bedrooms=N`` (N in range 1-8) + +.. rst-class:: build + +We'll make an HTTP request with these parameters + + +Opening URLs with Requests +-------------------------- + +In ``requests``, each HTTP method has a module-level function: + +.. rst-class:: build + +* ``GET`` == ``requests.get(url, **kwargs)`` +* ``POST`` == ``requests.post(url, **kwargs)`` +* ... + +.. rst-class:: build + +``kwargs`` represent other parts of an HTTP request: + +.. rst-class:: build + +* ``params``: a dict of url parameters (?foo=bar&baz=bim) +* ``headers``: a dict of headers to send with the request +* ``data``: the body of the request, if any (form data for POST goes here) +* ... + + +Getting Responses with Requests +------------------------------- + +The return value from one of these functions is a ``response`` which provides: + +.. rst-class:: build + +* ``response.status_code``: see the HTTP Status Code returned +* ``response.ok``: True if ``response.status_code`` is not an error +* ``response.raise_for_status()``: call to raise a python error if it is +* ``response.headers``: The headers sent from the server +* ``response.text``: Body of the response, decoded to unicode +* ``response.encoding``: The encoding used to decode +* ``response.content``: The original encoded response body as bytes + +.. rst-class:: build small + +``requests documentation``: http://docs.python-requests.org/en/latest/ + +Fetch Search Results +-------------------- + +We'll start by writing a function ``fetch_search_results`` + +.. rst-class:: build + +* It will accept one keyword argument for each of the possible query values +* It will build a dictionary of request query parameters from incoming keywords +* It will make a request to the craigslist server using this query +* It will return the body of the response if there is no error +* It will raise an error if there is a problem with the response + +.. rst-class:: build + +Try writing this function. Put it in ``mashup.py`` + + +My Solution +----------- + +Here's the one I created: + +.. code-block:: python + + import requests + + def fetch_search_results( + query=None, minAsk=None, maxAsk=None, bedrooms=None + ): + incoming = locals().copy() + base = 'http://seattle.craigslist.org/search/apa' + search_params = dict( + [(key, val) for key, val in incoming.items() + if val is not None]) + if not search_params: + raise ValueError("No valid keywords") + + resp = requests.get(base, params=search_params, timeout=3) + resp.raise_for_status() #<- no-op if status==200 + return resp.content, resp.encoding + + +Parse the Results +----------------- + +Next, we need a function ``parse_source`` to set up HTML for scraping. It will +need to: + +.. rst-class:: build + +* Take the response body from the previous method (or some other source) +* Parse it using BeautifulSoup +* Return the parsed object for further processing + +.. rst-class:: build + +Before you start, a word about parsing HTML with BeautifulSoup + + +Parsing HTML with BeautifulSoup +------------------------------- + +The BeautifulSoup object can be instantiated with a string or a file-like +object as the sole argument: + +.. code-block:: python + + from bs4 import BeautifulSoup + parsed = BeautifulSoup('

    Some HTML

    ') + + fh = open('a_page.html', 'r') + parsed = BeautifulSoup(fh) + + page = urllib2.urlopen('http://site.com/page.html') + parsed = BeautifulSoup(page) + + +.. rst-class:: build + +You might want to open the documentation as reference +(http://www.crummy.com/software/BeautifulSoup/bs4/doc) + + +My Solution +----------- + +Take a shot at writing this new function in ``mashup.py`` + +.. code-block:: python + + # add this import at the top + from bs4 import BeautifulSoup + + # then add this function lower down + def parse_source(html, encoding='utf-8'): + parsed = BeautifulSoup(html, from_encoding=encoding) + return parsed + + +Put It Together +--------------- + +We'll need to make our script do something when run. + +.. code-block:: python + + if __name__ == '__main__': + # do something + +.. rst-class:: build + +* Fetch a search results page +* Parse the resulting HTML +* For now, print out the results so we can see what we get + +.. container:: incremental small + + Use the ``prettify`` method on a BeautifulSoup object:: + + print parsed.prettify() + + +My Solution +----------- + +Try to come up with the proper code on your own. Add it to ``mashup.py`` + +.. code-block:: python + + if __name__ == '__main__': + html, encoding = fetch_search_results( + minAsk=500, maxAsk=1000, bedrooms=2 + ) + doc = parse_source(html, encoding) + print doc.prettify(encoding=encoding) + + +Test Your Work +-------------- + +Assuming your virtualenv is still active, you should be able to execute the +script. + +.. rst-class:: build + +:: + + (soupenv)$ python mashup.py + + + + + seattle apts/housing for rent classifieds - craigslist + + ... + + +Preserve the Results +-------------------- + +Try it again, this time redirect the output to a local file, so we can use +it without needing to hit the craiglist servers each time:: + + (soupenv)$ python mashup.py > craigslist_results.html + + +Finding The Needle +------------------ + +Next we find the bits of this pile of HTML that matter to us. + +.. rst-class:: build + +Open your html file in a browser and take a look (w/ dev tools). + +.. rst-class:: build + +We'll want to find: + +.. rst-class:: build + +* The HTML element that contains a single listing +* The source of location data, listings without location should be abandoned +* The description of a listing +* The link to a full listing page on craigslist +* Relevant price or size data. + + +Pulling it Out +-------------- + +We can extract this information now. In BeautifulSoup: + +.. rst-class:: build + +* All HTML elements (including the parsed document itself) are ``tags`` +* A ``tag`` can be searched using its ``find_all`` method +* This searches the descendents of the tag on which it is called. +* It takes arguments which act as *filters* on the search results + +.. container:: incremental + + like so: + + .. class:: small + + :: + + tag.find_all(name, attrs, recursive, text, limit, **kwargs) + + +Searching by CSS Class +---------------------- + +The items we are looking for are ``p`` tags which have the CSS class +``row``: + +.. rst-class:: build + +``find_all`` supports keyword arguments. If the keyword you use isn't one of +the listed arguments, it is treated as an ``attribute`` + +.. rst-class:: build + +In Python, ``class`` is a reserved word, so we can't use it as a keyword, but +you can use ``class_``! + +.. rst-class:: build small + +:: + + parsed.find_all('p', class_='row') + + +Try It Out +---------- + +Let's fire up a python interpreter and get our hands dirty here:: + + (soupenv)$ python + +.. code-block:: python + + >>> html = open('craigslist_results.html', 'r').read() + >>> from bs4 import BeautifulSoup + >>> parsed = BeautifulSoup(html) + >>> listings = parsed.find_all('p', class_='row') + >>> len(listings) + 100 + + +.. rst-class:: build + +That sounds about right. Let's see if we can get only those with location +data. + + +Filtering Tricks +---------------- + +Attribute filters given a ``True`` value match tags with that attribute + +.. rst-class:: build + +Location data was in the ``data-latitude`` and ``data-longitude`` attributes. + +.. code-block:: python + + >>> location_attrs = { + ... 'data-longitude': True, + ... 'data-latitude': True} + >>> locatable = parsed.find_all( + ... 'p', class_='row', attrs=location_attrs) + >>> len(locatable) + 43 + +.. rst-class:: build + +Great. That worked nicely + + +Parsing a Row +------------- + +Now that we have the rows we want, we need to parse them. We want to preserve: + +.. rst-class:: build + +* Location data (latitude and longitude) +* Source link (to craiglist detailed listing) +* Description text +* Price and size data + +.. rst-class:: build + +Which parts of a single row contain each of these elements? + + +Extracting Location +------------------- + +Location data is in the ``data-`` attributes we used to filter rows. + +.. container:: incremental + + We can read the HTML attributes of a 'tag' easily, using ``attrs``: + + .. code-block:: python + + >>> row1 = locatable[0] + >>> row1.attrs + {u'data-pid': u'3949023084', u'data-latitude': u'35.8625743108992', + u'class': [u'row'], u'data-longitude': u'-78.6232739959049'} + >>> lat = row1.attrs.get('data-latitude', None) + >>> lon = row1.attrs.get('data-longitude', None) + >>> print lat, lon + 46.9989830869194 -122.847250593816 + + +Extracting Description and Link +------------------------------- + +Where ``find_all`` will find many elements, ``find`` will only find the first +that matches the filters you provide. + +.. container:: incremental + + Our targets are in the first ``a`` tag in the ``pl`` span inside our row: + + .. code-block:: python + + >>> link = row1.find('span', class_='pl').find('a') + +.. container:: incremental + + The link path will be in the attrs: + + .. code-block:: python + + >>> path = link.attrs['href'] + +.. container:: incremental + + Text contained *inside* tags is in the ``string`` property: + + .. code-block:: python + + >>> description = link.string.strip() + + +Extracting Price and Size +------------------------- + +Both price and size are held in the ``l2`` span: + +.. code-block:: python + + >>> l2 = row1.find('span', class_='l2') + +.. container:: incremental + + Price, conveniently, is in it's own container: + + .. code-block:: python + + >>> price_span = l2.find('span', class_='price') + >>> price = price_span.string.strip() + +.. rst-class:: build + +But the size element is not. It is a standalone *text node*. + +.. rst-class:: build + +Try finding it by reading the ``string`` property of our ``l2`` tag. + + +Simple Navigation and Text +-------------------------- + +We can get to a simple text node by navigating there. + +.. rst-class:: build + +You can navigate up, down and across document nodes. + +.. container:: incremental + + We already have the ``price`` span, the size text node is next at the same + level: + + .. code-block:: python + + >>> size = price_span.next_sibling.strip(' \n-/') + >>> size + u'2br - 912ft\xb2' + +.. rst-class:: build + +You may have noticed that we keep using ``strip``. There are two reasons for +this. + + +The NavigableString Element +--------------------------- + +The most obvious reason is that we don't want extra whitespace. + +.. rst-class:: build + +The second reason is more subtle. The values returned by ``string`` are +**not** simple unicode strings + +.. container:: incremental + + They are actually instances of a class called ``NavigableString``: + + .. code-block:: python + + >>> price_span.next_sibling.__class__ + + +.. rst-class:: build + +Calling ``strip`` or casting them to ``unicode`` converts them, saving memory + + +Put It All Together +------------------- + +Okay, a challenge. Combine everything we've done into a function that: + +.. rst-class:: build + +* Extracts all the locatable listings from our html page +* Iterates over each of them, and builds a dictionary of data + + * include ``location``, ``href``, ``description``, ``price`` and ``size`` + +* Returns a list of these dictionaries + +.. rst-class:: build + +Call it ``extract_listings`` + +.. rst-class:: build + +Put this new function into ``mashup.py`` and call it from ``__main__``, +printing the result + + +Break Time +---------- + +Once you have this working, take a break. + +.. rst-class:: build + +When we return, we'll try a saner approach to getting data from online + +.. container:: incremental + + While you have a moment, sign up for an API key from this service: + + http://www.walkscore.com/professional/api.php + + +My Solution +----------- + +.. code-block:: python + + def extract_listings(doc): + location_attrs = {'data-latitude': True, + 'data-longitude': True} + for row in doc.find_all('p', class_='row', + attrs=location_attrs): + location = dict( + [(key, row.attrs.get(key)) for key in location_attrs]) + link = row.find('span', class_='pl').find('a') + price_span = row.find('span', class_='price') + listing = { + 'location': location, + 'href': link.attrs['href'], + 'description': link.string.strip(), + 'price': price_span.string.strip(), + 'size': price_span.next_sibling.strip(' \n-/') + } + yield listing + + +My Solution +----------- + +.. code-block:: python + + if __name__ == '__main__': + html, encoding = fetch_search_results( + minAsk=500, maxAsk=1000, bedrooms=2 + ) + doc = parse_source(html, encoding) + for listing in extract_listings(doc): + print listing + + +Another Approach +---------------- + +Scraping web pages is tedious and inherently brittle + +.. rst-class:: build + +The owner of the website updates their layout, your code breaks + +.. rst-class:: build + +But there is another way to get information from the web in a more normalized +fashion + +.. rst-class:: build center + +**Web Services** + + +Web Services +------------ + +"a software system designed to support interoperable machine-to-machine +interaction over a network" - W3C + +.. rst-class:: build + +* provides a defined set of calls +* returns structured data + + +Early Web Services +------------------ + +RSS is one of the earliest forms of Web Services + +* First known as ``RDF Site Summary`` +* Became ``Really Simple Syndication`` +* More at http://www.rss-specification.com/rss-specifications.htm + +.. rst-class:: build + +A single web-based *endpoint* provides a dynamically updated listing of +content + +.. rst-class:: build + +Implemented in pure HTTP. Returns XML + +.. rst-class:: build + +**Atom** is a competing, but similar standard + + +RSS Document +------------ + +.. class:: tiny + +:: + + + + + RSS Title + This is an example of an RSS feed + http://www.someexamplerssdomain.com/main.html + Mon, 06 Sep 2010 00:01:00 +0000 + Mon, 06 Sep 2009 16:45:00 +0000 + 1800 + + + Example entry + Here is some text containing an interesting description. + http://www.wikipedia.org/ + unique string per item + Mon, 06 Sep 2009 16:45:00 +0000 + + ... + + + + +XML-RPC +------- + +RSS provides a pre-defined data set, can we also allow *calling procedures* to +get more dynamic data? + +.. rst-class:: build + +We can! Enter XML-RPC (Remote Procedure Call) + +.. rst-class:: build + +* Provides a set of defined procedures which can take arguments +* Calls are made via HTTP GET, by passing an XML document +* Returns from a call are sent to the client in XML + +.. rst-class:: build + +There is an interactive example of this at the end of this session. We will +not go through it here, though. + + +Beyond XML-RPC +-------------- + +.. rst-class:: build + +* XML-RPC allows introspection +* XML-RPC forces you to introspect to get information +* **Wouldn't it be nice to get that automatically?** +* XML-RPC provides data types +* XML-RPC provides only *certain* data types +* **Wouldn't it be nice to have an extensible system for types?** +* XML-RPC allows calling methods with parameters +* XML-RPC only allows calling methods, nothing else +* **wouldn't it be nice to have contextual data as well?** + +.. rst-class:: build center + +**Enter SOAP: Simple Object Access Protocol** + + +SOAP +---- + +SOAP extends XML-RPC in a couple of useful ways: + +.. rst-class:: build + +* It uses Web Services Description Language (WSDL) to provide meta-data about + an entire service in a machine-readable format (Automatic introspection) + +* It establishes a method for extending available data types using XML + namespaces + +* It provides a wrapper around method calls called the **envelope**, which + allows the inclusion of a **header** with system meta-data that can be used + by the application + + +SOAP in Python +-------------- + +There is no standard library module that supports SOAP directly. + +.. rst-class:: build + +* The best-known and best-supported module available is **Suds** +* The homepage is https://fedorahosted.org/suds/ +* It can be installed using ``easy_install`` or ``pip install`` + +.. rst-class:: build + +Again, there is a good example of using SOAP via the ``suds`` library at the +end of this session. + +.. rst-class:: build + +But we're going to move on + + +Afterword +--------- + +SOAP (and XML-RPC) have some problems: + +.. rst-class:: build + +* XML is pretty damned inefficient as a data transfer medium +* Why should I need to know method names? +* If I can discover method names at all, I have to read a WSDL to do it? + +.. rst-class:: build + +Suds is the best we have, and it hasn't been updated since Sept. 2010. + +If Not XML, Then What? +---------------------- + +.. rst-class:: large centered incremental + +**JSON** + + +JSON +---- + +JavaScript Object Notation: + +.. rst-class:: build + +* a lightweight data-interchange format +* easy for humans to read and write +* easy for machines to parse and generate + +.. rst-class:: build + +Based on Two Structures: + +.. rst-class:: build + +* object: ``{ string: value, ...}`` +* array: ``[value, value, ]`` + +.. class:: center incremental + +pythonic, no? + + +JSON Data Types +--------------- + +JSON provides a few basic data types (see http://json.org/): + +.. rst-class:: build + +* string: unicode, anything but ", \\ and control characters +* number: any number, but json does not use octal or hexadecimal +* object, array (we've seen these above) +* true +* false +* null + +.. rst-class:: build center + +**No date type? OMGWTF??!!1!1** + + +Dates in JSON +------------- + +.. rst-class:: build + +Option 1 - Unix Epoch Time (number): + +.. code-block:: python + + >>> import time + >>> time.time() + 1358212616.7691269 + +.. rst-class:: build + +Option 2 - ISO 8661 (string): + +.. code-block:: python + + >>> import datetime + >>> datetime.datetime.now().isoformat() + '2013-01-14T17:18:10.727240' + + +JSON in Python +-------------- + +You can encode python to json, and decode json back to python: + +.. code-block:: python + + >>> import json + >>> array = [1,2,3] + >>> json.dumps(array) + >>> '[1, 2, 3]' + >>> orig = {'foo': [1,2,3], 'bar': u'my resumé', 'baz': True} + >>> encoded = json.dumps(orig) + >>> encoded + '{"baz": true, "foo": [1, 2, 3], "bar": "my resum\\u00e9"}' + >>> decoded = json.loads(encoded) + >>> decoded == orig + True + +.. rst-class:: build + +Customizing the encoder or decoder class allows for specialized serializations + + +JSON in Python +-------------- + +the json module also supports reading and writing to *file-like objects* via +``json.dump(fp)`` and ``json.load(fp)`` (note the missing 's') + +.. rst-class:: build + +Remember duck-typing. Anything with a ``.write`` and a ``.read`` method is +*file-like* + +.. rst-class:: build + +This usage can be much more memory-friendly with large files/sources + + +What about WSDL? +---------------- + +SOAP was invented in part to provide completely machine-readable +interoperability. + +.. rst-class:: build + +Does that really work in real life? + +.. rst-class:: build center + +Hardly ever + + +What about WSDL? +---------------- + +Another reason was to provide extensibility via custom types + +.. rst-class:: build + +Does that really work in real life? + +.. rst-class:: build center + +Hardly ever + + +Why Do All The Work? +-------------------- + +So, if neither of these goals is really achieved by using SOAP, why pay all +the overhead required to use the protocol? + +.. rst-class:: build + +Enter REST + + +REST +---- + +.. class:: center + +Representational State Transfer + +.. rst-class:: build + +* Originally described by Roy T. Fielding (worth reading) +* Use HTTP for what it can do +* Read more in `this book + `_\* + +.. class:: image-credit incremental + +\* Seriously. Buy it and read +( HTTP/1.1 +* GET /comment HTTP/1.1 +* POST /comment HTTP/1.1 +* PUT /comment/ HTTP/1.1 +* DELETE /comment/ HTTP/1.1 + + +ROA +--- + +This is **Resource Oriented Architecture** + +.. rst-class:: build + +The URL represents the *resource* we are working with + +.. rst-class:: build + +The HTTP Method represents the ``action`` to be taken + +.. rst-class:: build + +The HTTP Code returned tells us the ``result`` (whether success or failure) + + +HTTP Codes Revisited +-------------------- + +.. class:: small + +POST /comment HTTP/1.1 (creating a new comment): + +.. rst-class:: build small + +* Success: ``HTTP/1.1 201 Created`` +* Failure (unauthorized): ``HTTP/1.1 401 Unauthorized`` +* Failure (NotImplemented): ``HTTP/1.1 405 Not Allowed`` +* Failure (ValueError): ``HTTP/1.1 406 Not Acceptable`` + +.. class:: small incremental + +PUT /comment/ HTTP/1.1 (edit comment): + +.. rst-class:: build small + +* Success: ``HTTP/1.1 200 OK`` +* Failure: ``HTTP/1.1 409 Conflict`` + +.. class:: small incremental + +DELETE /comment/ HTTP/1.1 (delete comment): + +.. rst-class:: build small + +* Success: ``HTTP/1.1 204 No Content`` + + +HTTP Is Stateless +----------------- + +No individual request may be assumed to know anything about any other request. + +.. rst-class:: build + +All the required information representing the possible actions to take *should +be present in every response*. + +.. rst-class:: build big-centered + +Thus: HATEOAS + + +HATEOAS +------- + +.. rst-class:: large centered + +Hypermedia As The Engine Of Application State + + +Applications are State Engines +------------------------------ + +A State Engine is a machine that provides *states* for a resource to be in and +*transitions* to move resources between states. A Restful api should: + +.. rst-class:: build + +* provide information about the current state of a resource +* provide information about available transitions for that resource (URIs) +* provide all this in *each* HTTP response + + +Playing With REST +----------------- + +Let's take a moment to play with REST. + +.. rst-class:: build + +We'll use a common, public API provided by Google. + +.. rst-class:: build center + +**Geocoding** + + +Geocoding with Google APIs +-------------------------- + +https://developers.google.com/maps/documentation/geocoding + +.. container:: incremental + + Open a python interpreter using our virtualenv: + + .. class:: small + + :: + + (soupenv)$ python + +.. code-block:: python + + >>> import requests + >>> import json + >>> from pprint import pprint + >>> url = 'http://maps.googleapis.com/maps/api/geocode/json' + >>> addr = '1325 4th Ave, Seattle, 98101' + >>> parameters = {'address': addr, 'sensor': 'false' } + >>> resp = requests.get(url, params=parameters) + >>> data = json.loads(resp.text) + >>> if data['status'] == 'OK': + ... pprint(data) + + + +Reverse Geocoding +----------------- + +You can do the same thing in reverse, supply latitude and longitude and get +back address information: + +.. code-block:: python + + >>> location = data['results'][0]['geometry']['location'] + >>> latlng="{lat},{lng}".format(**location) + >>> parameters = {'latlng': latlng, 'sensor': 'false'} + >>> resp = requests.get(url, params=paramters) + >>> data = json.loads(resp.text) + >>> if data['status'] == 'OK': + ... pprint(data) + +.. rst-class:: build + +Notice that there are a number of results returned, ordered from most specific +to least. + + +Mash It Up +---------- + +Let's add a new function to ``mashup.py``. It will: + +.. rst-class:: build + +* take a single listing from our craiglist work +* format the location data provided in that listing properly +* make a reverse geocoding lookup using the google api above +* add the best available address to the listing +* return the updated listing + +.. rst-class:: build + +Call it ``add_address`` + + +My Solution +----------- + +.. code-block:: python + + # add an import + import json + + # and a function + def add_address(listing): + api_url = 'http://maps.googleapis.com/maps/api/geocode/json' + loc = listing['location'] + latlng_tmpl = "{data-latitude},{data-longitude}" + parameters = { + 'sensor': 'false', + 'latlng': latlng_tmpl.format(**loc), + } + resp = requests.get(api_url, params=parameters) + data = json.loads(resp.text) + if data['status'] == 'OK': + best = data['results'][0] + listing['address'] = best['formatted_address'] + else: + listing['address'] = 'unavailable' + return listing + + +Add Address to Output +--------------------- + +Go ahead and bolt the new function into our ``__main__`` block: + +.. code-block:: python + + import pprint + if __name__ == '__main__': + params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2} + html, encoding = fetch_search_results(**params) + doc = parse_source(html, encoding) + for listing in extract_listings(doc): + listing = add_address(listing) + pprint.pprint(listing) + +.. container:: incremental + + And give the result a whirl: + + .. class:: small + + :: + + (soupenv)$ python mashup.py + {'address': u'123 Some Street, Chapel Hill, NC ...', + 'description': u'3 bedroom 2 bathroom unit is move in ready!' + ... + } + + +One More Step +------------- + +I'm a big fan of walking places. + +.. rst-class:: build + +So I'd like to find an apartment that is located somewhere 'walkable' + +.. rst-class:: build + +There's an API for that! + +.. rst-class:: build + +http://www.walkscore.com/professional/api.php + +.. rst-class:: build + +If you haven't already, sign up for an API key now. + + +Getting a Walk Score +-------------------- + +The API documentation tells us we have to provide lat, lon and address to get +a walk score, along with our API key. + +.. rst-class:: build + +It also tells us we have a choice of XML or JSON output. Let's use JSON + +.. rst-class:: build + +Let's poke at it and see what we get back + +.. rst-class:: build + +Fire up your virtualenv Python interpreter again + + +Making an API Call +------------------ + +:: + + (soupenv)$ python + +.. code-block:: python + + >>> import requests + >>> import json + >>> from pprint import pprint + >>> api_url = 'http://api.walkscore.com/score' + >>> lat, lon = 35.9108986, -79.053783 + >>> addr = '120 E. Cameron Avenue Chapel Hill, NC 27599' + >>> params = {'lat': lat, 'lon', lon, 'address': addr} + >>> params['wsapikey'] = '' + >>> params['format'] = 'json' + >>> resp = requests.get(api_url, params=params) + >>> data = json.loads(resp.text) + >>> if data['status'] == 1: + ... pprint(data) + + +Mash It Up +---------- + +Add a function to ``mashup.py`` that: + +.. rst-class:: build + +* takes a single listing from our craigslist search +* uses the location and address to make a walkscore api call +* adds the description, walkscore and ws_link parameters to the listing +* returns the updated listing + +.. rst-class:: build + +Call the function ``add_walkscore`` + +.. rst-class:: build + +Bolt it into our script's ``__main__`` block where it fits best + + +My Solution +----------- + +.. code-block:: python + + def add_walkscore(listing): + api_url = 'http://api.walkscore.com/score' + apikey = '' + loc = listing['location'] + if listing['address'] == 'unavailable': + return listing + parameters = { + 'lat': loc['data-latitude'], 'lon': loc['data-longitude'], + 'address': listing['address'], 'wsapikey': apikey, + 'format': 'json' + } + resp = requests.get(api_url, params=parameters) + data = json.loads(resp.text) + if data['status'] == 1: + listing['ws_description'] = data['description'] + listing['ws_score'] = data['walkscore'] + listing['ws_link'] = data['ws_link'] + return listing + + +My Results +---------- + +.. code-block:: python + + if __name__ == '__main__': + params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2} + html, encoding = fetch_search_results(**params) + doc = parse_source(html, encoding) + for listing in extract_listings(doc): + listing = add_address(listing) + listing = add_walkscore(listing) + pprint.pprint(listing) + +.. container:: incremental + + Let's try it out:: + + (soupenv)$ python mashup.py + + +Wrap Up +------- + +We've built a simple mashup combining data from three different sources. + +.. rst-class:: build + +As a result we can now make a listing of apartments ranked by the walkability +of their neighborhood. + +.. rst-class:: build + +What other data sources might we use? Check out +http://www.programmableweb.com/apis/directory to see some of the possibilities + + +Addenda +------- + +Altough we do not have class time to do walkthrough examples of using XML-RPC +and SOAP, I have provided exercises in each as an addenda to this session. If +you have the time and the interest, please try them out. + +.. class:: center + +`Web Service API Addenda `_ + + +Homework +-------- + +For your homework this week, you'll be creating a mashup of your own. + +.. rst-class:: build + +Use the programmable web api directory from above as a source of inspiration. + +.. rst-class:: build + +Your mashup should combine at least two sources of data in some way that +tickles your fancy. + +.. rst-class:: build + +Your results need not look pretty. Focus on data acquisition and processing. + + +Submitting Your Homework +------------------------ + +To submit your homework: + +* Create a new python script in ``assignments/session03``. It should be + something I can run with:: + + $ python your_script.py + +* Provide me with a text file describing what you did. Tell me about the + sources you use, how you combine them, what you hoped to achieve. + +* Include any instruction I might need to successfully run your script. + +* Commit your changes to your fork of the repo in github, then open a pull + request. + + +Extra Credit +------------ + +Bonus points if you write unit tests for the elements of your mashup. + diff --git a/html/presentations/session06.html b/html/presentations/session06.html new file mode 100644 index 00000000..b81bfb61 --- /dev/null +++ b/html/presentations/session06.html @@ -0,0 +1,1164 @@ + + + + + + + + Session 06 — Internet Programming with Python + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    +
    +
    + +
    +

    Session 06¶

    + +
    +

    CGI, WSGI and Living Online¶

    +

    Wherein we discover the gateways to dynamic processes on a server.

    +
    +

    But First¶

    +

    Homework Review and Questions

    +
    +
    +

    Previously¶

    +
      +
    • You’ve learned about passing messages back and forth with sockets
    • +
    • You’ve created a simple HTTP server using sockets
    • +
    • You may even have made your server dynamic by returning the output of a +python script.
    • +
    +
    +

    What if you want to pass information to that script?

    +

    How can you give the script access to information about the HTTP request +itself?

    +
    +
    +
    +

    Stepping Away: The Environment¶

    +

    A computer has an environment:

    +
    +

    in *nix, you can see this in a shell:

    +
    $ printenv
    +TERM_PROGRAM=iTerm.app
    +...
    +
    +
    +

    or in Windows at the command prompt:

    +
    C:\> set
    +ALLUSERSPROFILE=C:\ProgramData
    +...
    +
    +
    +
    +

    This can be manipulated:

    +
    +

    In a bash shell we can do this:

    +
    $ export VARIABLE='some value'
    +$ echo $VARIABLE
    +some value
    +
    +
    +

    or at a Windows command prompt:

    +
    C:\Users\Administrator\> set VARIABLE='some value'
    +C:\Users\Administrator\> echo %VARIABLE%
    +'some value'
    +
    +
    +
    +

    These new values are now part of the environment

    +
    +

    *nix:

    +
    $ printenv
    +TERM_PROGRAM=iTerm.app
    +...
    +VARIABLE=some value
    +
    +
    +

    Windows:

    +
    C:\> set
    +ALLUSERSPROFILE=C:\ProgramData
    +...
    +VARIABLE='some value'
    +
    +
    +
    +

    We can see this environment in Python, too:

    +
    $ python
    +
    +
    +
    >>> import os
    +>>> print os.environ['VARIABLE']
    +some_value
    +>>> print os.environ.keys()
    +['VERSIONER_PYTHON_PREFER_32_BIT', 'VARIABLE',
    + 'LOGNAME', 'USER', 'PATH', ...]
    +
    +
    +

    You can alter os environment values while in Python:

    +
    >>> os.environ['VARIABLE'] = 'new_value'
    +>>> print os.environ['VARIABLE']
    +new_value
    +
    +
    +
    +

    But that doesn’t change the original value, outside Python:

    +
    >>> ^D
    +
    +$ echo this is the value: $VARIABLE
    +this is the value: some_value
    +<OR>
    +C:\> \Users\Administrator\> echo %VARIABLE%
    +'some value'
    +
    +
    +
    +
    +
      +
    • Subprocesses inherit their environment from their Parent
    • +
    • Parents do not see changes to environment in subprocesses
    • +
    • In Python, you can actually set the environment for a subprocess explicitly
    • +
    +
    subprocess.Popen(args, bufsize=0, executable=None,
    +                 stdin=None, stdout=None, stderr=None,
    +                 preexec_fn=None, close_fds=False,
    +                 shell=False, cwd=None, env=None, # <-------
    +                 universal_newlines=False, startupinfo=None,
    +                 creationflags=0)
    +
    +
    +
    +
    +
    +
    +

    CGI - The Web Environment¶

    +

    CGI is little more than a set of standard environmental variables

    +
    +

    What is CGI¶

    +

    First discussed in 1993, formalized in 1997, the current version (1.1) has +been in place since 2004.

    +

    From the preamble:

    +
    +

    This memo provides information for the Internet community. It does not +specify an Internet standard of any kind.

    +

    —RFC 3875 - CGI Version 1.1: http://tools.ietf.org/html/rfc3875

    +
    +
    4.  The CGI Request . . . . . . . . . . . . . . . . . . . . . . .  10
    +    4.1. Request Meta-Variables . . . . . . . . . . . . . . . . .  10
    +         4.1.1.  AUTH_TYPE. . . . . . . . . . . . . . . . . . . .  11
    +         4.1.2.  CONTENT_LENGTH . . . . . . . . . . . . . . . . .  12
    +         4.1.3.  CONTENT_TYPE . . . . . . . . . . . . . . . . . .  12
    +         4.1.4.  GATEWAY_INTERFACE. . . . . . . . . . . . . . . .  13
    +         4.1.5.  PATH_INFO. . . . . . . . . . . . . . . . . . . .  13
    +         4.1.6.  PATH_TRANSLATED. . . . . . . . . . . . . . . . .  14
    +         4.1.7.  QUERY_STRING . . . . . . . . . . . . . . . . . .  15
    +         4.1.8.  REMOTE_ADDR. . . . . . . . . . . . . . . . . . .  15
    +         4.1.9.  REMOTE_HOST. . . . . . . . . . . . . . . . . . .  16
    +         4.1.10. REMOTE_IDENT . . . . . . . . . . . . . . . . . .  16
    +         4.1.11. REMOTE_USER. . . . . . . . . . . . . . . . . . .  16
    +         4.1.12. REQUEST_METHOD . . . . . . . . . . . . . . . . .  17
    +         4.1.13. SCRIPT_NAME. . . . . . . . . . . . . . . . . . .  17
    +         4.1.14. SERVER_NAME. . . . . . . . . . . . . . . . . . .  17
    +         4.1.15. SERVER_PORT. . . . . . . . . . . . . . . . . . .  18
    +         4.1.16. SERVER_PROTOCOL. . . . . . . . . . . . . . . . .  18
    +         4.1.17. SERVER_SOFTWARE. . . . . . . . . . . . . . . . .  19
    +
    +
    +
    +
    +

    Running CGI¶

    +

    You have a couple of options:

    +
    +
      +
    • Python Standard Library CGIHTTPServer
    • +
    • Apache
    • +
    • IIS (on Windows)
    • +
    • Some other HTTP server that implements CGI (lighttpd, ...?)
    • +
    +

    Let’s keep it simple by using the Python module

    +
    +

    In the class resources for this session, you’ll find a directory named cgi.

    +
    +

    Make a copy of that folder in your class working directory.

    +

    Windows Users, you may have to edit the first line of +cgi/cgi-bin/cgi_1.py to point to your python executable.

    +
      +
    • Open two terminal windows in this cgi directory
    • +
    • In the first terminal, run python -m CGIHTTPServer
    • +
    • Open a web browser and load http://localhost:8000/
    • +
    • Click on CGI Test 1
    • +
    +
    +
      +
    • If nothing at all happens, check your terminal window
    • +
    • Look for this: OSError: [Errno 13] Permission denied
    • +
    • If you see something like that, check permissions for cgi-bin and +cgi_1.py
    • +
    • The file must be executable, the cgi-bin directory needs to be readable +and executable.
    • +
    +
    +

    Remember that you can use the bash chmod command to change permissions +in *nix: chmod a+x cgi-bin/cgi_1.py

    +

    Windows users, use the ‘properties’ context menu to get to permissions, +just grant ‘full’

    +
    +

    Problems with permissions can lead to failure. So can scripting errors

    +
    +
      +
    • Open cgi/cgi-bin/cgi_1.py in an editor
    • +
    • Before where it says cgi.test(), add a single line:
    • +
    +
    1 / 0
    +
    +
    +

    Reload your browser, what happens now?

    +
    +

    CGI is famously difficult to debug. There are reasons for this:

    +
      +
    • CGI is designed to provide access to runnable processes to the internet
    • +
    • The internet is a wretched hive of scum and villainy
    • +
    • Revealing error conditions can expose data that could be exploited
    • +
    +

    Back in your editor, add the following lines, just below import cgi:

    +
    +
    import cgitb
    +cgitb.enable()
    +
    +
    +

    Now, reload again.

    +
    +
    +../_images/cgitb_output.png +
    +

    Let’s fix the error from our traceback. Edit your cgi_1.py file to match:

    +
    #!/usr/bin/env python
    +import cgi
    +import cgitb
    +
    +cgitb.enable()
    +
    +cgi.test()
    +
    +
    +
    +

    Notice the first line of that script: #!/usr/bin/python.

    +

    This is called a shebang (short for hash-bang)

    +

    It tells the system what executable program to use when running the script.

    +
    +
    +
    +

    CGI Process Execution¶

    +

    Servers like CGIHTTPServer run CGI scripts as a system user called +nobody.

    +
    +

    This is just like you calling:

    +
    $ ./cgi_bin/cgi_1.py
    +
    +
    +

    In fact try that now in your second terminal (use the real path), what do +you get?

    +

    Windows folks, you may need C:\>python cgi-bin/cgi_1.py

    +

    Notice what is missing?

    +
    +

    There are a couple of important facts about CGI that derive from this:

    +
      +
    • The script must include a shebang so that the system knows how to run +it.
    • +
    • The script must be executable.
    • +
    • The executable named in the shebang will be called as the nobody user.
    • +
    • This is a security feature to prevent CGI scripts from running as a user +with any privileges.
    • +
    • This means that the executable from the script shebang must be one that +anyone can run.
    • +
    +

    CGI is largely a set of agreed-upon environmental variables.

    +
    +

    We’ve seen how environmental variables are found in python in +os.environ

    +

    We’ve also seen that at least some of the variables in CGI are not part +of the system environment.

    +

    Where do they come from?

    +
    +

    Let’s find ‘em. In a terminal fire up python:

    +
    +
    >>> import CGIHTTPServer
    +>>> CGIHTTPServer.__file__
    +'/big/giant/path/to/lib/python2.6/CGIHTTPServer.py'
    +
    +
    +

    Copy this path and open the file it points to in your text editor

    +
    +

    From CGIHTTPServer.py, in the CGIHTTPServer.run_cgi method:

    +
    # Reference: http://hoohoo.ncsa.uiuc.edu/cgi/env.html
    +# XXX Much of the following could be prepared ahead of time!
    +env = {}
    +env['SERVER_SOFTWARE'] = self.version_string()
    +env['SERVER_NAME'] = self.server.server_name
    +env['GATEWAY_INTERFACE'] = 'CGI/1.1'
    +env['SERVER_PROTOCOL'] = self.protocol_version
    +env['SERVER_PORT'] = str(self.server.server_port)
    +env['REQUEST_METHOD'] = self.command
    +...
    +ua = self.headers.getheader('user-agent')
    +if ua:
    +    env['HTTP_USER_AGENT'] = ua
    +...
    +os.environ.update(env)
    +...
    +
    +
    +

    And that’s it, the big secret. The server takes care of setting up the +environment so it has what is needed.

    +
    +

    Now, in reverse. How does the information that a script creates end up in +your browser?

    +

    A CGI Script must print its results to stdout.

    +

    Use the same method as above to import and open the source file for the +cgi module. Note what test does for an example of this.

    +
    +

    What the Server Does:

    +
      +
    • parses the request
    • +
    • sets up the environment, including HTTP and SERVER variables
    • +
    • figures out if the URI points to a CGI script and runs it
    • +
    • builds an appropriate HTTP Response first line (‘HTTP/1.1 200 OK\r\n’)
    • +
    • appends what comes from the script on stdout and sends that back
    • +
    +

    What the Script Does:

    +
      +
    • names appropriate executable in it’s shebang line
    • +
    • uses os.environ to read information from the HTTP request
    • +
    • builds any and all appropriate HTTP Headers (Content-type:, +Content-length:, ...)
    • +
    • prints headers, empty line and script output (body) to stdout
    • +
    +
    +
    +

    In-Class Exercise¶

    +

    You’ve seen the output from the cgi.test() method from the cgi module. +Let’s make our own version of this.

    +
    +
      +
    • In the directory cgi-bin you will find the file cgi_2.py.
    • +
    • Open that file in your editor.
    • +
    • The script contains some html with text naming elements of the CGI +environment.
    • +
    • You should use the values in os.environ to fill in the blanks.
    • +
    • You should be able to view the results of your work by loading +http://localhost:8000/ and clicking on Exercise One
    • +
    +

    GO

    +
    +
    +
    +

    Getting Data from Users¶

    +

    All this is well and good, but where’s the dynamic stuff?

    +
    +

    It’d be nice if a user could pass form data to our script for it to use.

    +

    In HTTP, these types of inputs show up in the URL query (the part after +the ?):

    +
    http://myhost.com/script.py?a=23&b=37
    +
    +
    +

    You’ve seen this before, right? In your Pyramid learning journal?

    +

    It’s how we got the id of an entry to the edit form.

    +
    +

    In the cgi module, we get access to this with the FieldStorage class:

    +
    import cgi
    +
    +form = cgi.FieldStorage()
    +stringval = form.getvalue('a', None)
    +listval = form.getlist('b')
    +
    +
    +
      +
    • The values in the FieldStorage are always strings
    • +
    • getvalue allows you to return a default, in case the field isn’t present
    • +
    • getlist always returns a list: empty, one-valued, or as many values as +are present
    • +
    +
    +
    +

    In-Class Exercise¶

    +

    Let’s create a dynamic adding machine.

    +
      +
    • In the cgi-bin directory you’ll find cgi_sums.py.
    • +
    • In the index.html file in the cgi directory, the third link leads to +this file.
    • +
    • You will use the structure of that link, and what you learned just now about +cgi.FieldStorage.
    • +
    • Complete the cgi script in cgi_sums.py so that the result of adding all +operands sent via the url query is returned.
    • +
    • Return the results as plain text, with the appropriate Content-Type +header.
    • +
    +
    form = cgi.FieldStorage()
    +operands = form.getlist('operand')
    +total = 0
    +for operand in operands:
    +    try:
    +        value = int(operand)
    +    except ValueError:
    +        value = 0
    +    total += value
    +
    +output = str(total)
    +
    +print "Content-Type: text/plain"
    +print "Content-Length: %s" % len(output)
    +print
    +print output
    +
    +
    +

    Let’s take a break here, before continuing

    +
    +
    +
    +

    WSGI¶

    +
    +

    CGI Problems¶

    +

    CGI is great, but there are problems:

    +
    +
      +
    • Code is executed in a new process
    • +
    • Every call to a CGI script starts a new process on the server
    • +
    • Starting a new process is expensive in terms of server resources
    • +
    • Especially for interpreted languages like Python
    • +
    +

    How do we overcome this problem?

    +
    +

    The most popular approach is to have a long-running process inside the +server that handles CGI scripts.

    +
    +

    FastCGI and SCGI are existing implementations of CGI in this fashion.

    +

    The PHP scripting language works in much the same way.

    +

    The Apache module mod_python offers a similar capability for Python +code.

    +
      +
    • Each of these options has a specific API
    • +
    • None are compatible with each-other
    • +
    • Code written for one is not portable to another
    • +
    +

    This makes it much more difficult to share resources

    +
    +
    +
    +

    A Solution¶

    +

    Enter WSGI, the Web Server Gateway Interface.

    +
    +

    Other alternatives are specific implementations of the CGI standard.

    +

    WSGI is itself a new standard, not an implementation.

    +
    +

    WSGI is generalized to describe a set of interactions.

    +

    Developers can write WSGI-capable apps and deploy them on any WSGI server.

    +

    Read the WSGI spec: http://www.python.org/dev/peps/pep-0333

    +
    +
    +

    Apps and Servers¶

    +

    WSGI consists of two parts, a server and an application.

    +
    +
    +

    A WSGI Server must:

    +
      +
    • set up an environment, much like the one in CGI
    • +
    • provide a method start_response(status, headers, exc_info=None)
    • +
    • build a response body by calling an application, passing +environment and start_response as args
    • +
    • return a response with the status, headers and body
    • +
    +
    +
    +

    A WSGI Appliction must:

    +
      +
    • Be a callable (function, method, class)
    • +
    • Take an environment and a start_response callable as arguments
    • +
    • Call the start_response method.
    • +
    • Return an iterable of 0 or more strings, which are treated as the +body of the response.
    • +
    +
    +
    +
    from some_application import simple_app
    +
    +def build_env(request):
    +    # put together some environment info from the reqeuest
    +    return env
    +
    +def handle_request(request, app):
    +    environ = build_env(request)
    +    iterable = app(environ, start_response)
    +    for data in iterable:
    +        # send data to client here
    +
    +def start_response(status, headers):
    +    # start an HTTP response, sending status and headers
    +
    +# listen for HTTP requests and pass on to handle_request()
    +serve(simple_app)
    +
    +
    +

    Where the simplified server above is not functional, this is a complete +app:

    +
    def application(environ, start_response)
    +    status = "200 OK"
    +    body = "Hello World\n"
    +    response_headers = [('Content-type', 'text/plain'),
    +                        ('Content-length', len(body))]
    +    start_response(status, response_headers)
    +    return [body]
    +
    +
    +

    A third part of the puzzle is something called WSGI middleware

    +
    +
      +
    • Middleware implements both the server and application interfaces
    • +
    • Middleware acts as a server when viewed from an application
    • +
    • Middleware acts as an application when viewed from a server
    • +
    +
    +../_images/wsgi_middleware_onion.png +
    +
    +
    +
    +

    Flowcharts¶

    +

    WSGI Servers:

    +
    +
    +center incremental
    +
    + +

    HTTP <—> WSGI

    +

    WSGI Applications:

    +
    +
    +center incremental
    +
    + +

    WSGI <—> app code

    +
    +
    +

    The Whole Enchilada¶

    +

    The WSGI Stack can thus be expressed like so:

    +

    HTTP <—> WSGI <—> app code

    +
    +
    +

    Using wsgiref¶

    +

    The Python standard lib provides a reference implementation of WSGI:

    +presentations/img/wsgiref_flow.png +
    +
    +

    Apache mod_wsgi¶

    +

    You can also deploy with Apache as your HTTP server, using mod_wsgi:

    +presentations/img/mod_wsgi_flow.png +
    +
    +

    Proxied WSGI Servers¶

    +

    Finally, it is also common to see WSGI apps deployed via a proxied WSGI +server:

    +presentations/img/proxy_wsgi.png +
    +
    +

    The WSGI Environment¶

    +
    +
    +class small¶
    +
    + +
    +
    REQUEST_METHOD
    +
    The HTTP request method, such as “GET” or “POST”. This cannot ever be an +empty string, and so is always required.
    +
    SCRIPT_NAME
    +
    The initial portion of the request URL’s “path” that corresponds to the +application object, so that the application knows its virtual “location”. +This may be an empty string, if the application corresponds to the “root” of +the server.
    +
    PATH_INFO
    +
    The remainder of the request URL’s “path”, designating the virtual +“location” of the request’s target within the application. This may be an +empty string, if the request URL targets the application root and does not +have a trailing slash.
    +
    QUERY_STRING
    +
    The portion of the request URL that follows the ”?”, if any. May be empty or +absent.
    +
    CONTENT_TYPE
    +
    The contents of any Content-Type fields in the HTTP request. May be empty or +absent.
    +
    +
    +
    +

    The WSGI Environment¶

    +
    +
    +class small
    +
    + +
    +
    CONTENT_LENGTH
    +
    The contents of any Content-Length fields in the HTTP request. May be empty +or absent.
    +
    SERVER_NAME, SERVER_PORT
    +
    When combined with SCRIPT_NAME and PATH_INFO, these variables can be used to +complete the URL. Note, however, that HTTP_HOST, if present, should be used +in preference to SERVER_NAME for reconstructing the request URL. See the URL +Reconstruction section below for more detail. SERVER_NAME and SERVER_PORT +can never be empty strings, and so are always required.
    +
    SERVER_PROTOCOL
    +
    The version of the protocol the client used to send the request. Typically +this will be something like “HTTP/1.0” or “HTTP/1.1” and may be used by the +application to determine how to treat any HTTP request headers. (This +variable should probably be called REQUEST_PROTOCOL, since it denotes the +protocol used in the request, and is not necessarily the protocol that will +be used in the server’s response. However, for compatibility with CGI we +have to keep the existing name.)
    +
    +
    +
    +

    The WSGI Environment¶

    +
    +
    +class small
    +
    + +
    +
    HTTP_ Variables
    +
    Variables corresponding to the client-supplied HTTP request headers (i.e., +variables whose names begin with “HTTP_”). The presence or absence of these +variables should correspond with the presence or absence of the appropriate +HTTP header in the request.
    +
    +
    +
    +center incremental
    +
    + +

    Seem Familiar?

    +
    +
    +

    A Bit of Repetition¶

    +

    Let’s start simply. We’ll begin by repeating our first CGI exercise in WSGI

    +
      +
    • Find the wsgi directory in the class resources. Copy it to your working +directory.
    • +
    • Open the file wsgi_1.py in your text editor.
    • +
    • We will fill in the missing values using the wsgi environ, just as we +use os.environ in cgi
    • +
    +

    But First

    +
    +
    +

    Orientation¶

    +
    if __name__ == '__main__':
    +    from wsgiref.simple_server import make_server
    +    srv = make_server('localhost', 8080, application)
    +    srv.serve_forever()
    +
    +
    +

    Note that we pass our application function to the server factory

    +

    We don’t have to write a server, wsgiref does that for us.

    +

    In fact, you should never have to write a WSGI server.

    +
    +
    +

    Orientation¶

    +
    def application(environ, start_response):
    +    response_body = body % (
    +         environ.get('SERVER_NAME', 'Unset'), # server name
    +            ...
    +         )
    +    status = '200 OK'
    +    response_headers = [('Content-Type', 'text/html'),
    +                        ('Content-Length', str(len(response_body)))]
    +    start_response(status, response_headers)
    +    return [response_body]
    +
    +
    +

    We do not define start_response, the application does that.

    +

    We are responsible for determining the HTTP status.

    +
    +
    +

    Running a WSGI Script¶

    +

    You can run this script with python:

    +
    $ python wsgi_1.py
    +
    +
    +

    This will start a wsgi server. What host and port will it use?

    +

    Point your browser at http://localhost:8080/. Did it work?

    +

    Go ahead and fill in the missing bits. Use the environ passed into +application

    +
    +
    +

    Some Tips¶

    +

    Because WSGI is a long-running process, the file you are editing is not +reloaded after you edit it.

    +

    You’ll need to quit and re-run the script between edits.

    +

    You may also want to consider using print environ in your application so +you can see the dictionary.

    +

    If you do that, where will the printed environment appear?

    +
    +
    +

    A More Complex Example¶

    +

    Let’s create a multi-page wsgi application. It will serve a small database of +python books.

    +

    The database (with a very simple api) can be found in wsgi/bookdb.py

    +
      +
    • We’ll need a listing page that shows the titles of all the books
    • +
    • Each title will link to a details page for that book
    • +
    • The details page for each book will display all the information and have a +link back to the list
    • +
    +
    +
    +

    Some Questions to Ponder¶

    +

    When viewing our first wsgi app, do we see the name of the wsgi application +script anywhere in the URL?

    +

    In our wsgi application script, how many applications did we actually have?

    +

    How are we going to serve different types of information out of a single +application?

    +
    +
    +

    Dispatch¶

    +

    We have to write an app that will map our incoming request path to some code +that can handle that request.

    +

    This process is called dispatch. There are many possible approaches

    +

    Let’s begin by designing this piece of it.

    +

    Open bookapp.py from the wsgi folder. We’ll do our work here.

    +
    +
    +

    PATH¶

    +

    The wsgi environment gives us access to PATH_INFO, which maps to the URI the +user requested when they loaded the page.

    +

    We can design the URLs that our app will use to assist us in routing.

    +

    Let’s declare that any request for / will map to the list page

    +
    +

    We can also say that the URL for a book will look like this:

    +
    http://localhost:8080/book/<identifier>
    +
    +
    +
    +
    +
    +

    Writing resolve_path¶

    +

    Let’s write a function, called resolve_path in our application file.

    +
      +
    • It should take the PATH_INFO value from environ as an argument.
    • +
    • It should return the function that will be called.
    • +
    • It should also return any arguments needed to call that function.
    • +
    • This implies of course that the arguments should be part of the PATH
    • +
    +
    +
    +

    My Solution¶

    +
    def resolve_path(path):
    +    urls = [(r'^$', books),
    +            (r'^book/(id[\d]+)$', book)]
    +    matchpath = path.lstrip('/')
    +    for regexp, func in urls:
    +        match = re.match(regexp, matchpath)
    +        if match is None:
    +            continue
    +        args = match.groups([])
    +        return func, args
    +    # we get here if no url matches
    +    raise NameError
    +
    +
    +
    +
    +

    Application Updates¶

    +

    We need to hook our new router into the application.

    +
      +
    • The path should be extracted from environ.
    • +
    • The router should be used to get a function and arguments
    • +
    • The body to return should come from calling that function with those +arguments
    • +
    • If an error is raised by calling the function, an appropriate response +should be returned
    • +
    • If the router raises a NameError, the application should return a 404 +response
    • +
    +
    +
    +

    My Solution¶

    +
    def application(environ, start_response):
    +    headers = [("Content-type", "text/html")]
    +    try:
    +        path = environ.get('PATH_INFO', None)
    +        if path is None:
    +            raise NameError
    +        func, args = resolve_path(path)
    +        body = func(*args)
    +        status = "200 OK"
    +    except NameError:
    +        status = "404 Not Found"
    +        body = "<h1>Not Found</h1>"
    +    except Exception:
    +        status = "500 Internal Server Error"
    +        body = "<h1>Internal Server Error</h1>"
    +    finally:
    +        headers.append(('Content-length', str(len(body))))
    +        start_response(status, headers)
    +        return [body]
    +
    +
    +
    +
    +

    Test Your Work¶

    +

    Once you’ve got your script settled, run it:

    +
    $ python bookapp.py
    +
    +
    +

    Then point your browser at http://localhost:8080/

    +
      +
    • http://localhost/book/id3
    • +
    • http://localhost/book/id73/
    • +
    • http://localhost/sponge/damp
    • +
    +

    Did that all work as you would have expected?

    +
    +
    +

    Building the List¶

    +

    The function books should return an html list of book titles where each +title is a link to the detail page for that book

    +
      +
    • You’ll need all the ids and titles from the book database.
    • +
    • You’ll need to build a list in HTML using this information
    • +
    • Each list item should have the book title as a link
    • +
    • The href for the link should be of the form /book/<id>
    • +
    +
    +
    +

    My Solution¶

    +
    def books():
    +    all_books = DB.titles()
    +    body = ['<h1>My Bookshelf</h1>', '<ul>']
    +    item_template = '<li><a href="/book/{id}">{title}</a></li>'
    +    for book in all_books:
    +        body.append(item_template.format(**book))
    +    body.append('</ul>')
    +    return '\n'.join(body)
    +
    +
    +
    +
    +

    Test Your Work¶

    +

    Quit and then restart your application script:

    +
    $ python bookapp.py
    +
    +
    +
    +

    Then reload the root of your application:

    +
    http://localhost:8080/
    +
    +
    +
    +

    You should see a nice list of the books in the database. Do you?

    +

    Click on a link to view the detail page. Does it load without error?

    +
    +
    +

    Showing Details¶

    +

    The next step of course is to polish up those detail pages.

    +
      +
    • You’ll need to retrieve a single book from the database
    • +
    • You’ll need to format the details about that book and return them as HTML
    • +
    • You’ll need to guard against ids that do not map to books
    • +
    +

    In this last case, what’s the right HTTP response code to send?

    +
    +
    +

    My Solution¶

    +
    def book(book_id):
    +    page = """
    +<h1>{title}</h1>
    +<table>
    +    <tr><th>Author</th><td>{author}</td></tr>
    +    <tr><th>Publisher</th><td>{publisher}</td></tr>
    +    <tr><th>ISBN</th><td>{isbn}</td></tr>
    +</table>
    +<a href="/">Back to the list</a>
    +"""
    +    book = DB.title_info(book_id)
    +    if book is None:
    +        raise NameError
    +    return page.format(**book)
    +
    +
    +
    +
    +

    Revel in Your Success¶

    +

    Quit and restart your script one more time

    +

    Then poke around at your application and see the good you’ve made

    +

    And your application is portable and sharable

    +

    It should run equally well under any wsgi server

    +
    +
    +

    A Few Steps Further¶

    +

    Next steps for an app like this might be:

    +
      +
    • Create a shared full page template and incorporate it into your app
    • +
    • Improve the error handling by emitting error codes other than 404 and 500
    • +
    • Swap out the basic backend here with a different one, maybe a Web Service?
    • +
    • Think about ways to make the application less tightly coupled to the pages +it serves
    • +
    +
    +
    +

    Homework¶

    +

    For your homework this week, you’ll be creating a wsgi application of your +own.

    +

    As the source of your data, use the mashup you created last week.

    +

    Your application should have at least two separate “pages” in it.

    +

    The HTML you produce does not need to be pretty, but it should be something +that shows up in a browser.

    +
    +
    +

    Submitting Your Homework¶

    +

    To submit your homework:

    +
    +
    +class small
    +
    + +
      +
    • Create a new python script in assignments/session04. It should be +something I can run with:
    • +
    +
    +
    +class small
    +
    + +
    $ python your_script.py
    +
    +
    +
    +
    +class small
    +
    + +
      +
    • Once your script is running, I should be able to view your application in my +browser.
    • +
    • Include all instructions I need to successfully run and view your script.
    • +
    • Add tests for your code. I should be able to run the tests like so:
    • +
    +
    +
    +class small
    +
    + +
    $ python tests.py
    +
    +
    +
    +
    +class small
    +
    + +
      +
    • Commit your changes to your fork of the repo in github, then open a pull +request.
    • +
    +
    +
    +

    But Wait, There’s More¶

    +

    In addition, read and step through the quick tutorials on templates and +database persistence in the assignments directory.

    +

    Use your flaskenv Python, it has everything you need installed.

    +
    +
    +

    Wrap-Up¶

    +

    For educational purposes, you might wish to take a look at the source code for +the wsgiref module. It’s the canonical example of a simple wsgi server

    +
    >>> import wsgiref
    +>>> wsgiref.__file__
    +'/full/path/to/your/copy/of/wsgiref.py'
    +...
    +
    +
    +

    See you Next Time

    +
    +
    +
    + + +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/html/presentations/session07.html b/html/presentations/session07.html new file mode 100644 index 00000000..86573618 --- /dev/null +++ b/html/presentations/session07.html @@ -0,0 +1,1364 @@ + + + + + + + + Session 07 — Internet Programming with Python + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    +
    +
    + +
    +

    Session 07¶

    + +
    +

    Scraping, APIs and Mashups¶

    +

    Wherein we learn how to make order from the chaos of the wild internet.

    +
    +

    A Dilemma¶

    +

    The internet makes a vast quantity of data available.

    +
    +

    But not always in the form or combination you want.

    +

    It would be nice to be able to combine data from different sources to +create meaning.

    +
    +
    +
    +

    The Big Question¶

    +

    But How?

    +
    +
    +

    The Big Answer¶

    +

    Mashups

    +
    +
    +

    Mashups¶

    +

    A mashup is:

    +
    a web page, or web application, that uses and combines data, presentation
    +or functionality from two or more sources to create new services.
    +
    +-- `wikipedia <http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)>`_
    +
    +
    +
    +
    +

    Data Sources¶

    +

    The key to mashups is the idea of data sources.

    +
    +

    These come in many flavors:

    +
      +
    • Simple websites with data in HTML
    • +
    • Web services providing structured data
    • +
    • Web services providing tranformative service (geocoding)
    • +
    • Web services providing presentation (mapping)
    • +
    +
    +
    +
    +
    +

    Web Scraping¶

    +
    +

    It would be nice if all online data were available in well-structured formats.

    +
    +

    The reality is that much data is available only in HTML.

    +

    Still we can get at it, with some effort.

    +

    By scraping the data from the web pages.

    +
    +
    +
    +

    HTML, Ideally¶

    +
    <!DOCTYPE html>
    +<html>
    +  <head>
    +  </head>
    +  <body>
    +    <p>A nice clean paragraph</p>
    +    <p>And another nice clean paragraph</p>
    +  </body>
    +</html>
    +
    +
    +
    +
    +

    HTML... IRL¶

    +
    <html>
    + <form>
    +  <table>
    +   <td><input name="input1">Row 1 cell 1
    +   <tr><td>Row 2 cell 1
    +  </form>
    +  <td>Row 2 cell 2<br>This</br> sure is a long cell
    + </body>
    +</html>
    +
    +
    +
    +
    +

    FFFFFFFFFUUUUUUUUUUUUU¶

    +
    +../_images/scream.jpg +

    Photo by Matthew via Flickr (http://www.flickr.com/photos/purplemattfish/3918004964/) - CC-BY-NC-ND

    +
    +
    +
    +

    The Law of The Internet¶

    +

    “Be strict in what you send and tolerant in what you receive”

    +
    +
    +

    Taming the Mess¶

    +

    Luckily, there are tools to help with this.

    +
    +

    In python there are several candidates, but I like BeautifulSoup.

    +

    BeautifulSoup is a great tool, but it’s not in the Standard Library.

    +

    We’ll need to install it.

    +

    Create a virtualenv to do so:

    +
    $ virtualenv soupenv
    +...
    +$ source soupenv/bin/activate
    +
    +
    +

    (remember, for Windows users that should be soupenv/Scripts/activate)

    +
    +
    +
    +

    Install BeautifulSoup¶

    +

    Once the virtualenv is activated, you can simply use pip or easy_install to +install the libraries you want:

    +
    source
    +
    +(soupenv)$ pip install beautifulsoup4
    +
    +
    +
    +
    +

    Choose a Parsing Engine¶

    +

    BeautifulSoup is built to use the Python HTMLParser.

    +
      +
    • Batteries Included. It’s already there
    • +
    • It’s not great, especially before Python 2.7.3
    • +
    +
    +

    BeautifulSoup also supports using other parsers.

    +

    There are two good choices: lxml and html5lib.

    +

    lxml is better, but much harder to install. Let’s use html5lib.

    +
    +
    +
    +

    Install a Parsing Engine¶

    +

    Again, this is pretty simple:

    +
    (soupenv)$ pip install html5lib
    +
    +
    +
    +

    Once installed, BeautifulSoup will choose it automatically.

    +

    BeautifulSoup will choose the “best” available.

    +

    You can specify the parser if you need to for some reason.

    +
    +
    +
    +

    Install Requests¶

    +

    Python provides tools for opening urls and communicating with servers. It’s +spread across the urllib and urllib2 packages.

    +
    +

    These packages have pretty unintuitive APIs.

    +

    The requests library is becoming the de-facto standard for this type of +work. Let’s install it too.

    +
    (soupenv)$ pip install requests
    +
    +
    +
    +
    +
    +

    Our Class Mashup¶

    +

    We’re going to explore some tools for making a mashup today

    +
    +

    We’ll be starting by scraping ZIP codes for Seattle

    +

    Then we’ll choose one of them and look up restaurant health code data for +that ZIP code

    +

    Then, we’ll look up the geographic location of those zipcodes using Google

    +

    Open a new file in your editor: mashup.py.

    +
    +
    +
    +

    Examine the Source¶

    +

    Craigslist doesn’t have an api, just a website, so we’ll need to dig a bit

    +

    By going to the website and playing with the form there, we can derive a +formula for a search URL

    +
      +
    • Base URL: http://seattle.craigslist.org/search/apa
    • +
    • keywords: query=keyword+values+here
    • +
    • price: minAsk=NNN maxAsk=NNN
    • +
    • bedrooms: bedrooms=N (N in range 1-8)
    • +
    +

    We’ll make an HTTP request with these parameters

    +
    +
    +

    Opening URLs with Requests¶

    +

    In requests, each HTTP method has a module-level function:

    +
      +
    • GET == requests.get(url, **kwargs)
    • +
    • POST == requests.post(url, **kwargs)
    • +
    • ...
    • +
    +

    kwargs represent other parts of an HTTP request:

    +
      +
    • params: a dict of url parameters (?foo=bar&baz=bim)
    • +
    • headers: a dict of headers to send with the request
    • +
    • data: the body of the request, if any (form data for POST goes here)
    • +
    • ...
    • +
    +
    +
    +

    Getting Responses with Requests¶

    +

    The return value from one of these functions is a response which provides:

    +
      +
    • response.status_code: see the HTTP Status Code returned
    • +
    • response.ok: True if response.status_code is not an error
    • +
    • response.raise_for_status(): call to raise a python error if it is
    • +
    • response.headers: The headers sent from the server
    • +
    • response.text: Body of the response, decoded to unicode
    • +
    • response.encoding: The encoding used to decode
    • +
    • response.content: The original encoded response body as bytes
    • +
    +

    requests documentation: http://docs.python-requests.org/en/latest/

    +
    +
    +

    Fetch Search Results¶

    +

    We’ll start by writing a function fetch_search_results

    +
      +
    • It will accept one keyword argument for each of the possible query values
    • +
    • It will build a dictionary of request query parameters from incoming keywords
    • +
    • It will make a request to the craigslist server using this query
    • +
    • It will return the body of the response if there is no error
    • +
    • It will raise an error if there is a problem with the response
    • +
    +

    Try writing this function. Put it in mashup.py

    +
    +
    +

    My Solution¶

    +

    Here’s the one I created:

    +
    import requests
    +
    +def fetch_search_results(
    +    query=None, minAsk=None, maxAsk=None, bedrooms=None
    +):
    +    incoming = locals().copy()
    +    base = 'http://seattle.craigslist.org/search/apa'
    +    search_params = dict(
    +        [(key, val) for key, val in incoming.items()
    +                    if val is not None])
    +    if not search_params:
    +        raise ValueError("No valid keywords")
    +
    +    resp = requests.get(base, params=search_params, timeout=3)
    +    resp.raise_for_status() #<- no-op if status==200
    +    return resp.content, resp.encoding
    +
    +
    +
    +
    +

    Parse the Results¶

    +

    Next, we need a function parse_source to set up HTML for scraping. It will +need to:

    +
      +
    • Take the response body from the previous method (or some other source)
    • +
    • Parse it using BeautifulSoup
    • +
    • Return the parsed object for further processing
    • +
    +

    Before you start, a word about parsing HTML with BeautifulSoup

    +
    +
    +

    Parsing HTML with BeautifulSoup¶

    +

    The BeautifulSoup object can be instantiated with a string or a file-like +object as the sole argument:

    +
    from bs4 import BeautifulSoup
    +parsed = BeautifulSoup('<h1>Some HTML</h1>')
    +
    +fh = open('a_page.html', 'r')
    +parsed = BeautifulSoup(fh)
    +
    +page = urllib2.urlopen('http://site.com/page.html')
    +parsed = BeautifulSoup(page)
    +
    +
    +

    You might want to open the documentation as reference +(http://www.crummy.com/software/BeautifulSoup/bs4/doc)

    +
    +
    +

    My Solution¶

    +

    Take a shot at writing this new function in mashup.py

    +
    # add this import at the top
    +from bs4 import BeautifulSoup
    +
    +# then add this function lower down
    +def parse_source(html, encoding='utf-8'):
    +    parsed = BeautifulSoup(html, from_encoding=encoding)
    +    return parsed
    +
    +
    +
    +
    +

    Put It Together¶

    +

    We’ll need to make our script do something when run.

    +
    if __name__ == '__main__':
    +    # do something
    +
    +
    +
      +
    • Fetch a search results page
    • +
    • Parse the resulting HTML
    • +
    • For now, print out the results so we can see what we get
    • +
    +
    +

    Use the prettify method on a BeautifulSoup object:

    +
    print parsed.prettify()
    +
    +
    +
    +
    +
    +

    My Solution¶

    +

    Try to come up with the proper code on your own. Add it to mashup.py

    +
    if __name__ == '__main__':
    +    html, encoding = fetch_search_results(
    +        minAsk=500, maxAsk=1000, bedrooms=2
    +    )
    +    doc = parse_source(html, encoding)
    +    print doc.prettify(encoding=encoding)
    +
    +
    +
    +
    +

    Test Your Work¶

    +

    Assuming your virtualenv is still active, you should be able to execute the +script.

    +
    (soupenv)$ python mashup.py
    +<!DOCTYPE html>
    +<html class="nojs">
    + <head>
    +  <title>
    +   seattle apts/housing for rent classifieds  - craigslist
    +  </title>
    +...
    +
    +
    +
    +
    +

    Preserve the Results¶

    +

    Try it again, this time redirect the output to a local file, so we can use +it without needing to hit the craiglist servers each time:

    +
    (soupenv)$ python mashup.py > craigslist_results.html
    +
    +
    +
    +
    +

    Finding The Needle¶

    +

    Next we find the bits of this pile of HTML that matter to us.

    +

    Open your html file in a browser and take a look (w/ dev tools).

    +

    We’ll want to find:

    +
      +
    • The HTML element that contains a single listing
    • +
    • The source of location data, listings without location should be abandoned
    • +
    • The description of a listing
    • +
    • The link to a full listing page on craigslist
    • +
    • Relevant price or size data.
    • +
    +
    +
    +

    Pulling it Out¶

    +

    We can extract this information now. In BeautifulSoup:

    +
      +
    • All HTML elements (including the parsed document itself) are tags
    • +
    • A tag can be searched using its find_all method
    • +
    • This searches the descendents of the tag on which it is called.
    • +
    • It takes arguments which act as filters on the search results
    • +
    +
    +

    like so:

    +
    +
    +class small¶
    +
    + +
    tag.find_all(name, attrs, recursive, text, limit, **kwargs)
    +
    +
    +
    +
    +
    +

    Searching by CSS Class¶

    +

    The items we are looking for are p tags which have the CSS class +row:

    +

    find_all supports keyword arguments. If the keyword you use isn’t one of +the listed arguments, it is treated as an attribute

    +

    In Python, class is a reserved word, so we can’t use it as a keyword, but +you can use class_!

    +
    parsed.find_all('p', class_='row')
    +
    +
    +
    +
    +

    Try It Out¶

    +

    Let’s fire up a python interpreter and get our hands dirty here:

    +
    (soupenv)$ python
    +
    +
    +
    >>> html = open('craigslist_results.html', 'r').read()
    +>>> from bs4 import BeautifulSoup
    +>>> parsed = BeautifulSoup(html)
    +>>> listings = parsed.find_all('p', class_='row')
    +>>> len(listings)
    +100
    +
    +
    +

    That sounds about right. Let’s see if we can get only those with location +data.

    +
    +
    +

    Filtering Tricks¶

    +

    Attribute filters given a True value match tags with that attribute

    +

    Location data was in the data-latitude and data-longitude attributes.

    +
    >>> location_attrs = {
    +...     'data-longitude': True,
    +...     'data-latitude': True}
    +>>> locatable = parsed.find_all(
    +...     'p', class_='row', attrs=location_attrs)
    +>>> len(locatable)
    +43
    +
    +
    +

    Great. That worked nicely

    +
    +
    +

    Parsing a Row¶

    +

    Now that we have the rows we want, we need to parse them. We want to preserve:

    +
      +
    • Location data (latitude and longitude)
    • +
    • Source link (to craiglist detailed listing)
    • +
    • Description text
    • +
    • Price and size data
    • +
    +

    Which parts of a single row contain each of these elements?

    +
    +
    +

    Extracting Location¶

    +

    Location data is in the data- attributes we used to filter rows.

    +
    +

    We can read the HTML attributes of a ‘tag’ easily, using attrs:

    +
    >>> row1 = locatable[0]
    +>>> row1.attrs
    +{u'data-pid': u'3949023084', u'data-latitude': u'35.8625743108992',
    + u'class': [u'row'], u'data-longitude': u'-78.6232739959049'}
    +>>> lat = row1.attrs.get('data-latitude', None)
    +>>> lon = row1.attrs.get('data-longitude', None)
    +>>> print lat, lon
    +46.9989830869194 -122.847250593816
    +
    +
    +
    +
    + +
    +

    Extracting Price and Size¶

    +

    Both price and size are held in the l2 span:

    +
    >>> l2 = row1.find('span', class_='l2')
    +
    +
    +
    +

    Price, conveniently, is in it’s own container:

    +
    >>> price_span = l2.find('span', class_='price')
    +>>> price = price_span.string.strip()
    +
    +
    +
    +

    But the size element is not. It is a standalone text node.

    +

    Try finding it by reading the string property of our l2 tag.

    +
    +
    +

    Simple Navigation and Text¶

    +

    We can get to a simple text node by navigating there.

    +

    You can navigate up, down and across document nodes.

    +
    +

    We already have the price span, the size text node is next at the same +level:

    +
    >>> size = price_span.next_sibling.strip(' \n-/')
    +>>> size
    +u'2br - 912ft\xb2'
    +
    +
    +
    +

    You may have noticed that we keep using strip. There are two reasons for +this.

    +
    +
    +

    The NavigableString Element¶

    +

    The most obvious reason is that we don’t want extra whitespace.

    +

    The second reason is more subtle. The values returned by string are +not simple unicode strings

    +
    +

    They are actually instances of a class called NavigableString:

    +
    >>> price_span.next_sibling.__class__
    +<class 'bs4.element.NavigableString'>
    +
    +
    +
    +

    Calling strip or casting them to unicode converts them, saving memory

    +
    +
    +

    Put It All Together¶

    +

    Okay, a challenge. Combine everything we’ve done into a function that:

    +
      +
    • Extracts all the locatable listings from our html page
    • +
    • Iterates over each of them, and builds a dictionary of data
        +
      • include location, href, description, price and size
      • +
      +
    • +
    • Returns a list of these dictionaries
    • +
    +

    Call it extract_listings

    +

    Put this new function into mashup.py and call it from __main__, +printing the result

    +
    +
    +

    Break Time¶

    +

    Once you have this working, take a break.

    +

    When we return, we’ll try a saner approach to getting data from online

    +
    +

    While you have a moment, sign up for an API key from this service:

    +

    http://www.walkscore.com/professional/api.php

    +
    +
    +
    +

    My Solution¶

    +
    def extract_listings(doc):
    +    location_attrs = {'data-latitude': True,
    +                      'data-longitude': True}
    +    for row in doc.find_all('p', class_='row',
    +                            attrs=location_attrs):
    +        location = dict(
    +            [(key, row.attrs.get(key)) for key in location_attrs])
    +        link = row.find('span', class_='pl').find('a')
    +        price_span = row.find('span', class_='price')
    +        listing = {
    +            'location': location,
    +            'href': link.attrs['href'],
    +            'description': link.string.strip(),
    +            'price': price_span.string.strip(),
    +            'size': price_span.next_sibling.strip(' \n-/')
    +        }
    +        yield listing
    +
    +
    +
    +
    +

    My Solution¶

    +
    if __name__ == '__main__':
    +    html, encoding = fetch_search_results(
    +        minAsk=500, maxAsk=1000, bedrooms=2
    +    )
    +    doc = parse_source(html, encoding)
    +    for listing in extract_listings(doc):
    +        print listing
    +
    +
    +
    +
    +

    Another Approach¶

    +

    Scraping web pages is tedious and inherently brittle

    +

    The owner of the website updates their layout, your code breaks

    +

    But there is another way to get information from the web in a more normalized +fashion

    +

    Web Services

    +
    +
    +

    Web Services¶

    +

    “a software system designed to support interoperable machine-to-machine +interaction over a network” - W3C

    +
      +
    • provides a defined set of calls
    • +
    • returns structured data
    • +
    +
    +
    +

    Early Web Services¶

    +

    RSS is one of the earliest forms of Web Services

    + +

    A single web-based endpoint provides a dynamically updated listing of +content

    +

    Implemented in pure HTTP. Returns XML

    +

    Atom is a competing, but similar standard

    +
    +
    +

    RSS Document¶

    +
    +
    +class tiny¶
    +
    + +
    <?xml version="1.0" encoding="UTF-8" ?>
    +<rss version="2.0">
    +<channel>
    +  <title>RSS Title</title>
    +  <description>This is an example of an RSS feed</description>
    +  <link>http://www.someexamplerssdomain.com/main.html</link>
    +  <lastBuildDate>Mon, 06 Sep 2010 00:01:00 +0000 </lastBuildDate>
    +  <pubDate>Mon, 06 Sep 2009 16:45:00 +0000 </pubDate>
    +  <ttl>1800</ttl>
    +
    +  <item>
    +    <title>Example entry</title>
    +    <description>Here is some text containing an interesting description.</description>
    +    <link>http://www.wikipedia.org/</link>
    +    <guid>unique string per item</guid>
    +    <pubDate>Mon, 06 Sep 2009 16:45:00 +0000 </pubDate>
    +  </item>
    +  ...
    +</channel>
    +</rss>
    +
    +
    +
    +
    +

    XML-RPC¶

    +

    RSS provides a pre-defined data set, can we also allow calling procedures to +get more dynamic data?

    +

    We can! Enter XML-RPC (Remote Procedure Call)

    +
      +
    • Provides a set of defined procedures which can take arguments
    • +
    • Calls are made via HTTP GET, by passing an XML document
    • +
    • Returns from a call are sent to the client in XML
    • +
    +

    There is an interactive example of this at the end of this session. We will +not go through it here, though.

    +
    +
    +

    Beyond XML-RPC¶

    +
      +
    • XML-RPC allows introspection
    • +
    • XML-RPC forces you to introspect to get information
    • +
    • Wouldn’t it be nice to get that automatically?
    • +
    • XML-RPC provides data types
    • +
    • XML-RPC provides only certain data types
    • +
    • Wouldn’t it be nice to have an extensible system for types?
    • +
    • XML-RPC allows calling methods with parameters
    • +
    • XML-RPC only allows calling methods, nothing else
    • +
    • wouldn’t it be nice to have contextual data as well?
    • +
    +

    Enter SOAP: Simple Object Access Protocol

    +
    +
    +

    SOAP¶

    +

    SOAP extends XML-RPC in a couple of useful ways:

    +
      +
    • It uses Web Services Description Language (WSDL) to provide meta-data about +an entire service in a machine-readable format (Automatic introspection)
    • +
    • It establishes a method for extending available data types using XML +namespaces
    • +
    • It provides a wrapper around method calls called the envelope, which +allows the inclusion of a header with system meta-data that can be used +by the application
    • +
    +
    +
    +

    SOAP in Python¶

    +

    There is no standard library module that supports SOAP directly.

    +
      +
    • The best-known and best-supported module available is Suds
    • +
    • The homepage is https://fedorahosted.org/suds/
    • +
    • It can be installed using easy_install or pip install
    • +
    +

    Again, there is a good example of using SOAP via the suds library at the +end of this session.

    +

    But we’re going to move on

    +
    +
    +

    Afterword¶

    +

    SOAP (and XML-RPC) have some problems:

    +
      +
    • XML is pretty damned inefficient as a data transfer medium
    • +
    • Why should I need to know method names?
    • +
    • If I can discover method names at all, I have to read a WSDL to do it?
    • +
    +

    Suds is the best we have, and it hasn’t been updated since Sept. 2010.

    +
    +
    +

    If Not XML, Then What?¶

    +

    JSON

    +
    +
    +

    JSON¶

    +

    JavaScript Object Notation:

    +
      +
    • a lightweight data-interchange format
    • +
    • easy for humans to read and write
    • +
    • easy for machines to parse and generate
    • +
    +

    Based on Two Structures:

    +
      +
    • object: { string: value, ...}
    • +
    • array: [value, value, ]
    • +
    +
    +
    +center incremental
    +
    + +

    pythonic, no?

    +
    +
    +

    JSON Data Types¶

    +

    JSON provides a few basic data types (see http://json.org/):

    +
      +
    • string: unicode, anything but ”, \ and control characters
    • +
    • number: any number, but json does not use octal or hexadecimal
    • +
    • object, array (we’ve seen these above)
    • +
    • true
    • +
    • false
    • +
    • null
    • +
    +

    No date type? OMGWTF??!!1!1

    +
    +
    +

    Dates in JSON¶

    +

    Option 1 - Unix Epoch Time (number):

    +
    >>> import time
    +>>> time.time()
    +1358212616.7691269
    +
    +
    +

    Option 2 - ISO 8661 (string):

    +
    >>> import datetime
    +>>> datetime.datetime.now().isoformat()
    +'2013-01-14T17:18:10.727240'
    +
    +
    +
    +
    +

    JSON in Python¶

    +

    You can encode python to json, and decode json back to python:

    +
    >>> import json
    +>>> array = [1,2,3]
    +>>> json.dumps(array)
    +>>> '[1, 2, 3]'
    +>>> orig = {'foo': [1,2,3], 'bar': u'my resumé', 'baz': True}
    +>>> encoded = json.dumps(orig)
    +>>> encoded
    +'{"baz": true, "foo": [1, 2, 3], "bar": "my resum\\u00e9"}'
    +>>> decoded = json.loads(encoded)
    +>>> decoded == orig
    +True
    +
    +
    +

    Customizing the encoder or decoder class allows for specialized serializations

    +
    +
    +

    JSON in Python¶

    +

    the json module also supports reading and writing to file-like objects via +json.dump(fp) and json.load(fp) (note the missing ‘s’)

    +

    Remember duck-typing. Anything with a .write and a .read method is +file-like

    +

    This usage can be much more memory-friendly with large files/sources

    +
    +
    +

    What about WSDL?¶

    +

    SOAP was invented in part to provide completely machine-readable +interoperability.

    +

    Does that really work in real life?

    +

    Hardly ever

    +
    +
    +

    What about WSDL?¶

    +

    Another reason was to provide extensibility via custom types

    +

    Does that really work in real life?

    +

    Hardly ever

    +
    +
    +

    Why Do All The Work?¶

    +

    So, if neither of these goals is really achieved by using SOAP, why pay all +the overhead required to use the protocol?

    +

    Enter REST

    +
    +
    +

    REST¶

    +
    +
    +class center¶
    +
    + +

    Representational State Transfer

    +
      +
    • Originally described by Roy T. Fielding (worth reading)
    • +
    • Use HTTP for what it can do
    • +
    • Read more in this book*
    • +
    +
    +
    +image-credit incremental
    +
    + +

    * Seriously. Buy it and read +(<http://www.crummy.com/writing/RESTful-Web-Services/)

    +
    +
    +

    A Comparison¶

    +

    The XML-RCP/SOAP way:

    +
      +
    • POST /getComment HTTP/1.1
    • +
    • POST /getComments HTTP/1.1
    • +
    • POST /addComment HTTP/1.1
    • +
    • POST /editComment HTTP/1.1
    • +
    • POST /deleteComment HTTP/1.1
    • +
    +

    The RESTful way:

    +
      +
    • GET /comment/<id> HTTP/1.1
    • +
    • GET /comment HTTP/1.1
    • +
    • POST /comment HTTP/1.1
    • +
    • PUT /comment/<id> HTTP/1.1
    • +
    • DELETE /comment/<id> HTTP/1.1
    • +
    +
    +
    +

    ROA¶

    +

    This is Resource Oriented Architecture

    +

    The URL represents the resource we are working with

    +

    The HTTP Method represents the action to be taken

    +

    The HTTP Code returned tells us the result (whether success or failure)

    +
    +
    +

    HTTP Codes Revisited¶

    +
    +
    +class small
    +
    + +

    POST /comment HTTP/1.1 (creating a new comment):

    +
      +
    • Success: HTTP/1.1 201 Created
    • +
    • Failure (unauthorized): HTTP/1.1 401 Unauthorized
    • +
    • Failure (NotImplemented): HTTP/1.1 405 Not Allowed
    • +
    • Failure (ValueError): HTTP/1.1 406 Not Acceptable
    • +
    +
    +
    +small incremental
    +
    + +

    PUT /comment/<id> HTTP/1.1 (edit comment):

    +
      +
    • Success: HTTP/1.1 200 OK
    • +
    • Failure: HTTP/1.1 409 Conflict
    • +
    +
    +
    +small incremental
    +
    + +

    DELETE /comment/<id> HTTP/1.1 (delete comment):

    +
      +
    • Success: HTTP/1.1 204 No Content
    • +
    +
    +
    +

    HTTP Is Stateless¶

    +

    No individual request may be assumed to know anything about any other request.

    +

    All the required information representing the possible actions to take should +be present in every response.

    +

    Thus: HATEOAS

    +
    +
    +

    HATEOAS¶

    +

    Hypermedia As The Engine Of Application State

    +
    +
    +

    Applications are State Engines¶

    +

    A State Engine is a machine that provides states for a resource to be in and +transitions to move resources between states. A Restful api should:

    +
      +
    • provide information about the current state of a resource
    • +
    • provide information about available transitions for that resource (URIs)
    • +
    • provide all this in each HTTP response
    • +
    +
    +
    +

    Playing With REST¶

    +

    Let’s take a moment to play with REST.

    +

    We’ll use a common, public API provided by Google.

    +

    Geocoding

    +
    +
    +

    Geocoding with Google APIs¶

    +

    https://developers.google.com/maps/documentation/geocoding

    +
    +

    Open a python interpreter using our virtualenv:

    +
    +
    +class small
    +
    + +
    (soupenv)$ python
    +
    +
    +
    +
    >>> import requests
    +>>> import json
    +>>> from pprint import pprint
    +>>> url = 'http://maps.googleapis.com/maps/api/geocode/json'
    +>>> addr = '1325 4th Ave, Seattle, 98101'
    +>>> parameters = {'address': addr, 'sensor': 'false' }
    +>>> resp = requests.get(url, params=parameters)
    +>>> data = json.loads(resp.text)
    +>>> if data['status'] == 'OK':
    +...     pprint(data)
    +
    +
    +
    +
    +

    Reverse Geocoding¶

    +

    You can do the same thing in reverse, supply latitude and longitude and get +back address information:

    +
    >>> location = data['results'][0]['geometry']['location']
    +>>> latlng="{lat},{lng}".format(**location)
    +>>> parameters = {'latlng': latlng, 'sensor': 'false'}
    +>>> resp = requests.get(url, params=paramters)
    +>>> data = json.loads(resp.text)
    +>>> if data['status'] == 'OK':
    +...     pprint(data)
    +
    +
    +

    Notice that there are a number of results returned, ordered from most specific +to least.

    +
    +
    +

    Mash It Up¶

    +

    Let’s add a new function to mashup.py. It will:

    +
      +
    • take a single listing from our craiglist work
    • +
    • format the location data provided in that listing properly
    • +
    • make a reverse geocoding lookup using the google api above
    • +
    • add the best available address to the listing
    • +
    • return the updated listing
    • +
    +

    Call it add_address

    +
    +
    +

    My Solution¶

    +
    # add an import
    +import json
    +
    +# and a function
    +def add_address(listing):
    +    api_url = 'http://maps.googleapis.com/maps/api/geocode/json'
    +    loc = listing['location']
    +    latlng_tmpl = "{data-latitude},{data-longitude}"
    +    parameters = {
    +        'sensor': 'false',
    +        'latlng': latlng_tmpl.format(**loc),
    +    }
    +    resp = requests.get(api_url, params=parameters)
    +    data = json.loads(resp.text)
    +    if data['status'] == 'OK':
    +        best = data['results'][0]
    +        listing['address'] = best['formatted_address']
    +    else:
    +        listing['address'] = 'unavailable'
    +    return listing
    +
    +
    +
    +
    +

    Add Address to Output¶

    +

    Go ahead and bolt the new function into our __main__ block:

    +
    import pprint
    +if __name__ == '__main__':
    +    params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2}
    +    html, encoding = fetch_search_results(**params)
    +    doc = parse_source(html, encoding)
    +    for listing in extract_listings(doc):
    +        listing = add_address(listing)
    +        pprint.pprint(listing)
    +
    +
    +
    +

    And give the result a whirl:

    +
    +
    +class small
    +
    + +
    (soupenv)$ python mashup.py
    +{'address': u'123 Some Street, Chapel Hill, NC ...',
    + 'description': u'3 bedroom 2 bathroom unit is move in ready!'
    + ...
    +}
    +
    +
    +
    +
    +
    +

    One More Step¶

    +

    I’m a big fan of walking places.

    +

    So I’d like to find an apartment that is located somewhere ‘walkable’

    +

    There’s an API for that!

    +

    http://www.walkscore.com/professional/api.php

    +

    If you haven’t already, sign up for an API key now.

    +
    +
    +

    Getting a Walk Score¶

    +

    The API documentation tells us we have to provide lat, lon and address to get +a walk score, along with our API key.

    +

    It also tells us we have a choice of XML or JSON output. Let’s use JSON

    +

    Let’s poke at it and see what we get back

    +

    Fire up your virtualenv Python interpreter again

    +
    +
    +

    Making an API Call¶

    +
    (soupenv)$ python
    +
    +
    +
    >>> import requests
    +>>> import json
    +>>> from pprint import pprint
    +>>> api_url = 'http://api.walkscore.com/score'
    +>>> lat, lon = 35.9108986, -79.053783
    +>>> addr = '120 E. Cameron Avenue Chapel Hill, NC 27599'
    +>>> params = {'lat': lat, 'lon', lon, 'address': addr}
    +>>> params['wsapikey'] = '<type your api key here>'
    +>>> params['format'] = 'json'
    +>>> resp = requests.get(api_url, params=params)
    +>>> data = json.loads(resp.text)
    +>>> if data['status'] == 1:
    +...     pprint(data)
    +
    +
    +
    +
    +

    Mash It Up¶

    +

    Add a function to mashup.py that:

    +
      +
    • takes a single listing from our craigslist search
    • +
    • uses the location and address to make a walkscore api call
    • +
    • adds the description, walkscore and ws_link parameters to the listing
    • +
    • returns the updated listing
    • +
    +

    Call the function add_walkscore

    +

    Bolt it into our script’s __main__ block where it fits best

    +
    +
    +

    My Solution¶

    +
    def add_walkscore(listing):
    +    api_url = 'http://api.walkscore.com/score'
    +    apikey = '<your api key goes here>'
    +    loc = listing['location']
    +    if listing['address'] == 'unavailable':
    +        return listing
    +    parameters = {
    +        'lat': loc['data-latitude'], 'lon': loc['data-longitude'],
    +        'address': listing['address'], 'wsapikey': apikey,
    +        'format': 'json'
    +    }
    +    resp = requests.get(api_url, params=parameters)
    +    data = json.loads(resp.text)
    +    if data['status'] == 1:
    +        listing['ws_description'] = data['description']
    +        listing['ws_score'] = data['walkscore']
    +        listing['ws_link'] = data['ws_link']
    +    return listing
    +
    +
    +
    +
    +

    My Results¶

    +
    if __name__ == '__main__':
    +    params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2}
    +    html, encoding = fetch_search_results(**params)
    +    doc = parse_source(html, encoding)
    +    for listing in extract_listings(doc):
    +        listing = add_address(listing)
    +        listing = add_walkscore(listing)
    +        pprint.pprint(listing)
    +
    +
    +
    +

    Let’s try it out:

    +
    (soupenv)$ python mashup.py
    +
    +
    +
    +
    +
    +

    Wrap Up¶

    +

    We’ve built a simple mashup combining data from three different sources.

    +

    As a result we can now make a listing of apartments ranked by the walkability +of their neighborhood.

    +

    What other data sources might we use? Check out +http://www.programmableweb.com/apis/directory to see some of the possibilities

    +
    +
    +

    Addenda¶

    +

    Altough we do not have class time to do walkthrough examples of using XML-RPC +and SOAP, I have provided exercises in each as an addenda to this session. If +you have the time and the interest, please try them out.

    +
    +
    +class center
    +
    + +

    Web Service API Addenda

    +
    +
    +

    Homework¶

    +

    For your homework this week, you’ll be creating a mashup of your own.

    +

    Use the programmable web api directory from above as a source of inspiration.

    +

    Your mashup should combine at least two sources of data in some way that +tickles your fancy.

    +

    Your results need not look pretty. Focus on data acquisition and processing.

    +
    +
    +

    Submitting Your Homework¶

    +

    To submit your homework:

    +
      +
    • Create a new python script in assignments/session03. It should be +something I can run with:

      +
      $ python your_script.py
      +
      +
      +
    • +
    • Provide me with a text file describing what you did. Tell me about the +sources you use, how you combine them, what you hoped to achieve.

      +
    • +
    • Include any instruction I might need to successfully run your script.

      +
    • +
    • Commit your changes to your fork of the repo in github, then open a pull +request.

      +
    • +
    +
    +
    +

    Extra Credit¶

    +

    Bonus points if you write unit tests for the elements of your mashup.

    +
    +
    +
    + + +
    +
    +
    +
    +
    +

    Table Of Contents

    + + +

    This Page

    + +

    Slides

    + + + +
    +
    +
    +
    + + + + \ No newline at end of file From 8352caa39d589ee03ea5e794a7a94ecc8974e027 Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 8 Feb 2015 22:33:50 -0800 Subject: [PATCH 081/114] updates to session 5 slides --- slides/_sources/presentations/index.txt | 1 + slides/genindex.html | 33 ++++++++++++++++++++++++ slides/objects.inv | Bin 228 -> 276 bytes slides/presentations/session05.html | 2 +- slides/readings.html | 2 +- slides/searchindex.js | 2 +- 6 files changed, 37 insertions(+), 3 deletions(-) diff --git a/slides/_sources/presentations/index.txt b/slides/_sources/presentations/index.txt index 7a25f445..6f5f5f35 100644 --- a/slides/_sources/presentations/index.txt +++ b/slides/_sources/presentations/index.txt @@ -20,3 +20,4 @@ course. session03 session04 session05 + session06 diff --git a/slides/genindex.html b/slides/genindex.html index 58243513..6485d04a 100644 --- a/slides/genindex.html +++ b/slides/genindex.html @@ -73,8 +73,41 @@

    Index

    + C + | S + | T
    +

    C

    + + +
    + +
    center (built-in class), [1] +
    + +
    + +

    S

    + + +
    + +
    small (built-in class), [1], [2], [3] +
    + +
    + +

    T

    + + +
    + +
    tiny (built-in class) +
    + +
    + diff --git a/slides/objects.inv b/slides/objects.inv index cd95a2ac98c98d67b80b99a19db4794752d7869c..0428f3c1254135120aaa7fdd3f05bd03c9ae5fba 100644 GIT binary patch delta 139 zcmV;60CfN40h9uek$;trO9}!p3_$liMZnqC&q|mZxDW(S5Zf?QNKteu- zyYTWJNlZS7rx$4PBjbY@>Y_0ch^LVYBYR){4e(Swp|9ggSL4q#0Qvi=pk0R%ZhR7MC^LKgr4 delta 90 zcmV-g0Hyzw0^|XZkyFdfPsz+nNv%*QE=jS^@8SMBe_y7O^ diff --git a/slides/presentations/session05.html b/slides/presentations/session05.html index e69e5f58..94471a0d 100644 --- a/slides/presentations/session05.html +++ b/slides/presentations/session05.html @@ -53,7 +53,7 @@ - + diff --git a/slides/readings.html b/slides/readings.html index 449ddaf3..caafe992 100644 --- a/slides/readings.html +++ b/slides/readings.html @@ -52,7 +52,7 @@ - + diff --git a/slides/searchindex.js b/slides/searchindex.js index 7bfca730..2f1eba8e 100644 --- a/slides/searchindex.js +++ b/slides/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:42,terms:{interchang:2,four:0,database_url:4,prefix:[0,5],af_rout:5,skeleton:[5,2],stub:[],aug:2,sorri:2,ipproto_raw:5,crisew:5,concret:2,dest_dir:2,worth:[2,6],digit:[0,6],everi:[0,2],govern:0,cmd:0,herbert:6,imaplib:0,verif:4,direct:[0,2],second:[],nthi:6,even:[0,2],list_of_tcp_and_udp_port_numb:5,"new":[],net:0,metadata:2,ipproto_tcp:5,behavior:[5,2,6],never:[5,2],here:[0,5,2,4,6],"4xx":0,path:[],interpret:[0,5,2,6],credit:2,webfact:0,permit:0,golden:6,heroku_postgresql_maroon_url:4,wikimedia:[2,6],txt:[0,5,2,4],yore:6,describ:5,would:[0,2,4,6],init:2,dnt:0,call:[0,5,2,4,6],admin_password:4,typo:2,recommend:4,strip_filt:6,tell:[0,5,2,4],relat:2,panach:6,notic:[0,5,2,4,6],phone:6,unpack:2,must:[0,5,2,4,6],af_unix:5,join:0,restor:[2,4],work:[],conceptu:6,norm:0,root:4,defer:4,repoz:2,give:[5,2,4],smtp:[],indic:0,want:[0,2,4,6],dele:0,end:[0,5,4,6],learning_journ:[],frobozz:0,how:[],sever:4,env:2,interview:0,verifi:[],config:[],updat:[],anon_1:2,earlier:[0,2,4],superus:2,diagram:2,befor:[0,5,2,4,6],wrong:2,demonstr:[0,2],domin:2,classmethod:[2,4,6],authzpolici:4,minim:0,greet:0,think:[5,2,4,6],alias:5,scoped_sess:2,environ:[],incorpor:4,enter:[0,6],engine_from_config:[2,4,6],order:[2,4,6],hob7v7guwir4n1v:4,oper:[5,4,6],over:[5,2,6],fam:5,becaus:[0,2,4,6],jpeg:0,privileg:2,keyboard:0,flexibl:2,vari:[0,5],img:0,fix:[0,2,6],simple_cli:0,toolbelt:[4,6],better:[5,2,4],offic:0,howdi:6,easier:[2,6],them:[0,5,2,4,6],thei:[0,5,2,4,6],safe:[],"break":[],sqlite3:2,promis:5,initializedb:[],choic:[5,2],getservbynam:5,rocki:4,each:[0,5,2,4],debug:[],went:[0,6],webmast:0,bone:6,mean:[],logo:6,network:[5,6],goe:[2,6],god:2,dsn:0,got:[0,2,4,6],forth:0,rail:0,nightmar:2,situat:[0,2],free:[4,6],standard:[0,5,2,4],hand:[4,6],s3cr3t:4,static_url:6,filter:[],mvc:[],isn:[0,6],confus:[5,6],user:[],rang:[0,6],render:[],independ:[0,2],hook:2,instruct:[5,2],alreadi:[0,5,2,4,6],messag:[],fantast:2,primari:[2,6],top:[2,4,6],"0x1103e38d0":2,sometim:[0,2],imap4rev1:0,too:[0,5,2,6],tom:2,my_view:6,tool:[0,5,2,4],setuptool:2,took:2,incur:4,keyword:[4,6],provid:[],tree:[2,4],project:[],matter:4,rfc2616:0,minut:[0,5,6],rad:5,ran:[0,2],modern:2,mine:0,raw:0,af_sna:5,pylon:2,increment:[],"__main__":4,seen:[0,5,2,4,6],seem:4,seek:[2,4],latter:2,thorough:6,"0x1103e3fd0":2,fnhg5:0,transmit:2,hypertext_transfer_protocol:0,simplifi:0,endfor:[4,6],sock_dgram:5,though:[0,4],usernam:[0,4,6],object:[],guess_typ:0,regular:2,alan:[2,6],bsd:5,models_id:2,typ:5,maria:5,tradit:6,don:[0,5,2,4,6],doc:[0,2,4],doe:[],declar:[2,6],passwordfield:4,sign_in_out:4,dot:6,opposit:6,random:4,syntax:[],radio:6,protocol:[],edit_entri:[],involv:4,absolut:6,menu:0,explain:2,configur:[],apach:0,theme:[],matchdict:[],folder:[5,2,4,6],resolve_uri:0,patter:6,stop:[],bar:[0,5,6],ietf:0,baz:0,"public":[4,6],buffsiz:5,reload:[0,4],told:4,steal:[2,4],respond:[],get_const:5,result:[],respons:[],fail:[0,5,4],best:[2,4],awar:4,pythoncert:[2,6],databas:[],wikipedia:[0,5,2],mysql_length:2,figur:[5,2],score:2,outstand:6,pbkdf2passordmanag:[],awai:2,approach:2,attribut:[2,4,6],extend:[4,6],extens:[0,4],wear:0,protect:0,accident:5,howev:[2,6],against:[0,4,6],logic:[2,4,6],login:[],seri:2,com:[0,5,2,4,6],get_appset:[2,4,6],assur:5,trust:2,assum:[5,2],speak:[],chrome:0,add_rout:[2,4,6],been:[2,4,6],much:[],redeploi:4,basic:[],quickli:[0,2],rfc5321:0,setup_log:[2,6],telnet:5,ani:[0,5,2,4,6],"catch":0,ugli:0,ident:4,servic:[0,5,4],properti:[5,4],commerci:2,neat:0,seven:0,pyramid:[],af_appletalk:5,toolkit:0,fnhg:0,tediou:2,conn:[0,5],prior:4,perform:[2,6],suggest:[0,4],make:[],couchdb:2,complex:2,split:0,complet:[],rfc822:0,nic:5,hang:0,xyzzi:0,rais:[0,5],engin:[2,4,6],"548kb":2,thu:5,depli:[],hypothet:2,inherit:[2,6],client:[],thi:[0,1,2,3,4,5,6,7,8],endif:[4,6],gzip:0,everyth:[0,2,4,6],moreov:0,left:[2,4],identifi:[0,6],just:[0,5,2,4,6],human:[0,6],yet:[0,5,2,4,6],languag:[],alchemi:2,easi:[2,4,6],shout:6,"8bitmim":0,httpfound:[4,6],els:[0,2,4,6],hat:0,gave:2,opt:0,applic:[],preserv:2,parse_var:2,render_markdown:4,server_socket:5,elabor:4,enrypt:[],apart:6,imap4_port:0,response_method_not_allow:0,specif:[5,2,4,6],deprec:2,reload_templ:2,arbitrari:[5,2,4],manual:2,hung:0,install_requir:2,underli:5,www:[0,5],right:[0,4,6],old:2,deal:5,nfrom:2,intern:0,successfulli:2,transmiss:[0,5],total:4,http_server_at_hom:0,subclass:[],track:[],exectut:2,condit:0,foo:[0,5,4,6],localhost:[0,4,6],mailgat:0,particular:[2,4,6],confer:[],repositori:[5,2,4,6],post:[0,4,6],"super":0,chapter:2,postgresql:[],surround:6,dinner:0,commit:[],produc:5,encod:[0,4],bound:[5,2],down:[4,6],creativ:[2,6],wrap:[],storag:[0,2],"0db8":5,wai:[0,2,4,6],support:[0,2,4,6],why:[],avail:[5,2,4,6],reli:4,request_method:4,editor:[],get_address_info:5,rcpt:0,internet_protocol_suit:5,head:[0,5,4,6],medium:5,form:[],offer:[2,6],sqlalchemi:[],hear:5,icmp:5,codehilit:4,attr:6,type:[],maximum:5,until:[5,2],intitalizedb:2,featur:[2,4],af_decnet:5,"abstract":2,decrypt:0,proven:2,exist:[0,2,4,6],check:[],assembl:6,encrypt:[],mashup:[],excel:6,role:6,jone:0,test:[],webob:2,roll:4,intend:[5,2],af_unspec:5,consid:[0,2,6],receiv:[],longer:5,bullet:4,sock:[0,5],pbkdf2:4,initialize_learning_journal_db:[],bottom:5,wtttzy:4,push:[0,2,4],osx:[0,4],concept:[5,2,4],skip:2,consum:5,invent:2,row:[2,4],depend:[],graph:6,readabl:[0,6],unpython:2,a0004:0,a0005:0,a0006:0,a0001:0,a0002:0,a0003:0,addon:4,isinst:[],sourc:[0,5,2,4,6],string:[],congest:5,lru:2,kitten:2,ydood:6,brows:6,administr:[],level:[2,4],did:[0,5,2,6],dig:6,ipproto_udp:5,item:[2,6],team:2,cooki:[0,4],imap4:0,dir:[0,5],declarative_bas:2,upper:6,slower:5,sign:[0,4],cost:4,port:[0,5,4],procfil:[],appear:[4,6],current:[5,2],rst2xml:2,"3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4":4,gener:[0,5,2,4,6],explicitli:2,address:[],along:[],wait:[0,5],shift:0,queue:5,bob:[0,2],commonli:5,ourselv:[0,4],ipc:5,semant:5,session1:5,extra:5,modul:[0,5,2,4],prefer:0,backtick:[],marker:6,instal:[],smallish:5,market:2,types_map:0,prove:4,visit:[4,6],todai:[0,5,4,6],live:[5,2,4],criteria:[0,2],msg:5,plug:0,pyarmid:[],visual:0,appendix:0,oop:2,obj:[2,6],behalf:6,prepar:[],pretend:0,uniqu:[2,4,6],whatev:[5,6],purpos:[0,2,4,6],boilerpl:2,stream:[5,2],predict:0,agent:0,topic:6,app_factori:2,occur:5,entryeditform:4,other_sess:2,multipl:2,charset:[0,6],write:[0,5,2,4,6],anyon:[4,6],familiar:0,xhtml:0,product:[2,4],max:[0,4,6],clone:[5,2,6],mac:0,models_valu:2,data:[],classroom:2,gethostnam:5,practic:0,divid:[5,2],explicit:6,predic:4,mangl:0,inform:[],"switch":2,tailor:0,combin:[2,4,6],callabl:6,talk:[0,5,2,6],ydwoh:6,gitignor:2,still:[0,2,6],dynam:[0,6],config_uri:[2,4,6],group:[5,2],"4z6rvnhte21mpljw5veive0eg57gn":4,polici:4,sec10:0,platform:4,window:[0,2,4],curli:6,mail:0,main:[0,2,4,6],non:0,initi:[0,2,4],answer:[0,5,6],safari:0,half:5,now:[0,5,2,4,6],discuss:[5,2,6],term:2,name:[0,5,2,4,6],simpl:[0,5,2,4,6],interpr:2,separ:[],magazin:6,compil:4,domain:[],"0x105849b90":6,replac:[4,6],individu:[5,2,6],continu:[0,5,2,4],happen:[],accomplish:0,space:0,profil:5,correct:[0,5,6],"0x1005b8b40":5,tmpl:6,myproject:4,after:[2,6],pseudocod:0,state:[2,4],ch05s03:0,argv:[2,4],orm:[],argn:4,org:[0,5],"byte":5,card:5,care:[0,5],sign_in:4,utmcsr:0,default_permiss:4,refus:5,thing:[0,2,4,6],place:[5,2,4,6],imposs:2,frequent:2,lambda:6,origin:2,directli:[5,2,6],onc:[0,5,2,4,6],yourself:0,"long":[0,5,2,4],open:[5,4,6],size:[0,5,4],urin:0,given:[0,5,2,6],sheet:6,convent:0,imap4_ssl_port:0,eachoth:2,draft:0,conveni:2,friend:4,includ:[],copi:[0,4,6],huh:0,artifact:2,github:[0,5,2,4,6],mostli:[0,5],attempt:5,than:[0,5,2,4,6],png:0,serv:[],were:[5,2],posit:5,"5xx":0,browser:[],sai:[0,2,4],pro:5,argument:[0,5,2,4,6],larri:2,deliv:[],notimplementederror:0,saw:2,shtml:0,date:[0,2],ipproto_:5,note:[0,5,2,4,6],take:[0,5,2,4,6],green:0,bcrypt:4,noth:[2,4,6],channel:[0,2],begin:[0,5,2,4,6],sure:[5,2,4,6],pain:[2,4],trace:2,normal:2,buffer:[0,5],price:4,pair:[2,6],homepag:[],utmccn:0,later:0,"8mb":2,create_al:2,shortnam:4,gracefulli:0,show:[0,2,4,6],my_index:2,constitu:6,permiss:[],xml:[0,2,6],onli:[0,2,4,6],slow:5,"true":[0,5,2,4,6],transact:[5,2,4],enough:[0,2,4],dict:[5,2],analyt:4,startswith:5,nearli:2,variou:[2,6],mung:0,clang:2,ssl:0,cannot:[5,6],ssh:5,requir:[],entryfactori:4,authenticated_userid:4,where:[],wiki:[],n10:6,reserv:[0,5],concern:[],detect:4,review:[0,5,2,4,6],enumer:4,label:[4,6],getattr:5,between:[0,5,2],"import":[0,5,2,4,6],across:5,parent:2,elladan:5,tut:0,cycl:[2,6],come:[0,2,4,6],contract:[],tutori:6,wherin:2,mani:[0,5,2,4,6],among:[5,2,6],color:4,imad1:0,artu:0,coupl:[5,2],rebuild:[],mark:4,evangelista:[2,6],avian:5,"1xx":0,those:[0,2],"case":[0,2,6],plugin:[],cast:2,outcom:[],certainli:6,python_web:[2,6],ehlo:0,advantag:[2,4],stdout:[5,2],canon:5,worri:[5,4],blah:0,smalltalk:2,develop:[0,2,4,6],proto:5,cc0:[2,6],same:[0,5,2,4,6],html:[0,4,6],pai:4,document:[0,1,2,3,4,5,6,7,8],week:[0,5,2,4,6],finish:[],assist:2,someon:4,driven:[0,6],capabl:[],add_rount:4,improv:[0,2,4],appropri:[5,4,6],"__acl__":4,markup:4,without:[5,2,6],model:[],execut:[],when:[0,5,2,4,6],rest:[0,2,4],interrupt:0,kill:[0,2],aspect:[2,4,6],heffalump:5,hint:0,except:[0,5,2],littl:[4,6],blog:0,blob:4,vulner:0,real:[],tranmiss:5,around:[5,4,6],makin:6,traffic:0,mon:0,redqueen:0,socket_tool:5,intel:0,whitespac:0,integ:[5,2,4],server:[],benefit:[0,5],either:[0,6],cascad:6,get_payload:[],output:[0,5,4],manag:[5,2,4],fulfil:4,ipproto_ip:5,definit:6,"2xx":0,exit:2,posgresql:4,notabl:0,refer:[5,2,6],af_inet6:5,power:[5,2,4,6],broken:0,regexp:6,src:6,deflat:0,central:2,acl:4,microframework:2,"19t01":4,mytempl:[2,6],console_script:2,inbox:0,strip:6,igmp:5,hew:[],buffer_s:5,httpnotfound:[4,6],her:4,set_authorization_polici:4,aren:[2,4],start:[],interfac:[0,5,2,4],ipv4:5,lot:[0,2,6],ipv6:5,"0x10b075ed0":2,machin:[],hei:5,index_pag:[],tupl:5,client_address:5,categor:0,freddi:6,pull:[0,2],dirti:2,possibl:[5,6],"default":[5,2,4,6],expect:[0,2,6],gone:2,uid:0,creat:[],certain:[0,5,2],deep:4,strongli:4,intro:[],file:[],fill:[4,6],again:[0,5,2,4,6],googl:[5,2],compel:2,field:[2,4,6],valid:[0,4,6],pathnam:[0,5],you:[],juic:6,sequenc:0,symbol:[5,6],briefli:6,transceiv:5,reduc:2,"1b6":0,directori:[0,2,4,6],descript:[5,2],potenti:4,escap:4,represent:[5,2],all:[],forget:4,forbidden:4,scalar:2,abil:[0,2],follow:[0,5,2,4,6],disk:0,content:[],af_inet:5,articl:[2,4,6],tail:4,introduc:[2,6],liter:2,chameleon:6,far:[5,2],faq:0,util:[],verb:0,mechan:4,fall:2,veri:[0,5,2,4,6],ticket:4,egg_info:2,list:[],last_nam:6,adjust:[],stderr:0,small:[],past:[2,4],design:[],pass:[],further:[],by_nam:4,what:[],section:[0,2,6],abl:[0,2,4,6],delet:[0,4],version:[0,2,4],primary_kei:[2,4],intersect:6,method:[],full:2,hash:4,trunk:6,goodby:0,strong:[4,6],modifi:0,valu:[],search:[0,6],ahead:[5,4,6],sensit:[0,4],pick:[],action:[5,2,4,6],add_static_view:[2,6],via:[],filenam:0,href:[4,6],establish:5,select:[0,2],distinct:0,ctrl:0,regist:[],two:[0,5,2,4,6],zopetransactionextens:[],taken:4,satisfact:4,more:[],flaw:6,mozilla:[0,6],flag:[0,5,4],jsonp:6,known:[5,4],cach:[0,2],none:[0,5,2,4,6],endpoint:[0,5],hour:[0,5,6],dev:4,venusian:2,remain:4,learn:[],rst2html:2,def:[0,5,2,4,6],ndate:5,factori:[],prompt:[5,2],scan:[2,6],challeng:[0,4],registr:4,share:[],accept:[],explor:[5,2],hilight:[],phrase:[2,6],login_form:4,goal:2,first_nam:6,secur:[],rather:0,anoth:[5,2,4,6],comfort:6,message_from_str:[],"__init__":[2,4,6],csv:[2,6],loginform:4,css:[],unabl:4,"545kb":2,resourc:[],referenc:6,okai:[0,2],"short":[],footer:6,author:4,django:2,caus:2,egg:2,translationstr:2,checkbox:6,help:[0,5,2,6],authorization_polici:4,mainthread:[2,4],soon:[5,6],through:[0,2,4,6],pane:0,style:[],psycopg2:[2,4],pserv:[4,6],might:[0,5,2,6],pce:6,recip:4,good:[0,2,4],"return":[],pollut:2,cew:2,framework:[2,4,6],maildrop:0,gethostbynam:5,msg_part:5,eventu:2,authent:[0,4],easili:[2,6],http_server:0,compris:2,found:[0,2,6],unicod:[2,4,6],joel:4,hard:[2,4],idea:[0,5,2],realli:[0,5,4,6],connect:[],blog_creat:[],beyond:4,orient:2,ftp:5,publish:2,research:2,bubbl:6,etag:0,authnpolici:4,print:[0,5,2,4,6],uwpc:[2,6],"__utmz":0,postgr:4,proxi:0,uncommit:2,advanc:0,new_model:2,differ:[],reason:[0,6],base:[],put:[],"__utma":0,recv:[0,5],bash:4,by_id:[2,4,6],perhap:[0,6],assign:[0,5,2,4,6],set_authentication_polici:4,obviou:0,prevent:4,feel:6,number:[0,5,2,4,6],placehold:[0,6],done:[],construct:[],blank:0,miss:2,guess:0,script:[],interact:[],pbkdf2passwordmanag:4,least:[2,6],getservbyport:5,statement:2,store:[2,4],luckili:[0,2,4,6],parc:2,option:[],relationship:5,behind:2,echo_socket:5,part:[],pars:[],logged_in:4,off:[0,2,4,6],fred:2,kind:[0,5,4,6],grew:0,remot:[5,2,4],remov:[5,2,4],str:2,relative_to:4,aclauthorizationpolici:4,payload:0,"_socketobject":5,packag:[],expir:4,properli:[0,6],imagin:[4,6],built:[0,2,4,6],lib:[0,2],self:4,also:[0,5,2,4,6],build:[],textareafield:6,brace:6,distribut:2,kai:2,previou:0,reach:5,chart:[2,6],most:[0,5,2,4,6],"0x100563c90":5,plan:4,addr:[0,5],mymodel:[2,4,6],cover:[0,2,4],wsgi:[2,4],hyper:0,v12:0,session:[],particularli:[4,6],fine:[0,6],find:[0,5,2,4,6],nosql:2,copyright:2,solut:[],"172kb":2,factor:2,darwin:2,unus:2,resent:5,"3xx":0,restart:[0,4,6],rfc:0,common:[],nowher:2,wrote:4,certif:6,set:[],overwhelm:2,"0x1103e3f50":2,af_ipx:5,see:[0,5,2,4,6],bare:6,arg:2,close:[0,5,6],pyrami:[],uw_pc:[],someth:[0,2,4,6],blog_act:[],topmost:5,won:0,subscript:6,pastedeploi:2,sole:[0,5],isol:2,mailbox:0,succeed:[],"31m":4,both:[0,5,2,4,6],hiddenfield:4,delimit:0,unstag:2,logout:[],load:[0,4,6],markdown:[],simpli:[0,2,4,6],point:[0,5,2,4],instanti:2,header:[],route_url:[4,6],param:4,linux:[0,4],mistak:2,xkcd:0,authz:[],empti:[0,5,2,4,6],pgbackup:4,retr:0,secret:4,authn:[],rstpep2html:2,"55c0287d4ef21f15b97eb1f107451b88b479bff":4,fire:[0,2,4,6],imag:[0,6],cryptacular:4,coordin:2,understand:[0,4],convers:[],formatd:0,look:[],solid:4,batch:2,"while":[0,5,2],"54f7e4d":4,homework:[],abov:[0,5,2,4],error:[],fun:6,everyon:4,loop:0,readi:[0,5,2,4,6],readm:2,itself:2,"3f80f":0,decor:6,grant:4,belong:[0,5,4],wherein:6,zope:2,conflict:2,b59b7c3:4,communc:5,moment:[5,2,4,6],temporari:6,"__or__":5,robust:4,chang:[],recent:[0,2],lower:[5,6],task:[],find_packag:2,entri:[],spent:5,doodi:6,pickl:2,person:[5,4,6],expens:[5,4],elev:0,connnect:5,cedar:4,macintosh:0,spend:[5,6],explan:0,make_wsgi_app:2,"__path__":2,mysql:2,session05:0,session04:5,session01:5,session02:[0,6],restructuredtext:2,global_config:[2,4,6],populate_obj:[4,6],appli:[4,6],input:[],bin:[2,4,6],varchar:2,format:[],big:[],response_ok:0,game:6,blogcreateform:[],bit:[],formal:[0,2],httpexcept:6,an_id:[],ipproto_icmp:5,docutil:2,manifest:2,collect:[2,6],princip:4,popular:4,often:[0,5,2],some:[0,5,2,4,6],back:[0,5,2,4,6],understood:5,uidnext:0,sampl:[4,6],ljenv:[2,4,6],per:[0,5,4],larg:[],cgi:[],intial:0,run:[],authtktauthenticationpolici:4,viabl:2,crlf:0,plai:[2,4,6],block:[],miracl:0,ensur:[0,5,2,4],html5shiv:6,span:4,question:[0,2,4,6],stylesheet:6,fast:2,heroku:[],prettier:6,doctyp:[0,6],repeatedli:[5,2],pwd:2,link:[],atol:4,line:[0,2,4,6],info:[5,2,4],utf:[0,6],consist:0,sum:6,similar:[0,2],clear:[0,5],sesson:0,constant:5,chao:4,doesn:[0,5,2,4,6],repres:[0,2,6],gecko:0,response_not_found:0,titl:[0,2,6],nam:5,nav:6,nice:[0,4,6],llvm:2,mongodb:2,meaning:2,csrftoken:0,svn:6,algorithm:4,mimetyp:0,rst2latex:2,allowedvers:0,discrimin:[],came:4,hello:[0,6],getaddrinfo:5,code:[],queri:[],sqlserver:2,edu:5,bathtim:6,elsewher:[5,4],send:[],aris:2,sent:[0,5,2,4,6],charlesproxi:0,rollback:2,spool:0,stackoverflow:0,relev:2,tri:6,magic:6,button:6,"try":[],race:[4,6],entry_point:2,hasnochildren:0,pleas:2,smaller:5,natur:6,download:[2,6],odd:6,click:6,append:[0,2,4],compat:2,index:[0,2,4,6],wahoo:0,compar:[],resembl:6,can:[],len:[0,5,2],bodi:[0,2,4,6],loadapp:4,intercept:4,let:[0,5,2,4,6],becom:2,sinc:[5,2,6],great:[0,2,6],pretti:[0,2],technolog:[5,4],typic:2,maker:6,firefox:0,ago:[5,4],parse_request:0,win:0,app:[],api:[],"__name__":4,from:[0,5,2,4,6],upgrad:4,next:[0,5,2,4,6],websit:[2,4,6],few:[],usr:2,sudo:2,ipoac:5,babi:6,train:[2,6],somesecret:4,account:6,retriev:6,scalabl:2,alic:4,tag:[0,4,6],thin:5,fetch:[0,2,4,6],aliv:[0,5],control:[],sqlite:[2,4],tar:2,process:[5,2,4,6],lock:4,preformat:4,high:2,af_:5,tab:0,onlin:[5,2,4],cache_max_ag:[2,6],gcc:2,cewing_socket:5,client_socket:5,pyramid_jinja2:6,instead:[0,2,4,6],stand:[2,6],delai:2,initialzedb:4,alwai:[0,5,2,4],"6mb":2,attent:4,tier:4,physic:[5,6],drop:[5,6],add_al:2,bind:[],correspond:5,element:[0,2,6],webroot:0,runapp:[],allow:[0,5,2,4,6],sendal:[0,5],elif:6,move:[0,5,2],bunch:5,uiqj579igrbrebhmjqnth8pffaz2qrj:0,verify_password:4,"0x10046cec0":5,infrastructur:4,bye:0,recept:5,handl:[],demoenv:2,spell:6,dai:[0,6],auth:4,"8a2e":5,somewher:[4,6],anyth:[2,4],edit:[],entrycreateform:[4,6],nameerror:0,slide:[8,1,3,7],mode:2,autoincr:4,beneath:4,pygment:4,bump:0,sessionmak:[2,6],meta:6,"static":[],our:[],special:[2,4,6],out:[],variabl:4,categori:2,suitabl:4,rel:6,dive:4,red:0,clarifi:2,insid:[0,5,2],frank:6,manipul:2,zodb:2,auth_secret:4,first_lin:0,complianc:4,cri:[0,6],"0x1103d9f10":2,could:[0,2,4],lexer:4,ask:[0,5,2],keep:[0,5,2],length:[0,2,4,6],outsid:[2,4],waitress:4,softwar:[0,5,2,4,6],pygments_styl:4,echo:[],exact:6,mai:[0,5,2,4],match_param:[4,6],owner:6,licens:2,mkdir:2,system:[],wrapper:5,attach:4,imap4_ssl:0,termin:[0,5,2,4],"final":[0,5,2,6],udp:5,shell:[],fnhg8:[],shelf:2,fnhg2:0,fnhg3:0,"8d3":5,dyno:4,textfield:[4,6],exactli:[0,5,6],route_nam:[4,6],embodi:[2,4],roberto:6,charact:[2,4,6],sens:6,f12:0,favorit:0,py2:2,py3:2,respositori:0,requri:4,have:[],tabl:[],need:[0,5,2,4,6],turn:[0,2,4,6],afraid:[0,2],min:[4,6],rout:[],chief:4,which:[0,5,2,4,6],authentication_polici:4,singl:[0,5,2,4,6],unless:5,ds_store:2,whl:2,who:[4,6],oracl:2,discov:0,deploi:[],pyc:2,segment:6,payment:4,url:[],request:[],face:6,pipe:6,build_db:4,deni:4,determin:[],fact:[5,4,6],jkorpela:0,text:[0,2,4,6],bring:[0,6],rough:2,identityset:2,redirect:0,locat:[0,5,2,4,6],should:[0,5,2,4,6],jan:[0,5],"3e1cb03b":0,"__tablename__":[2,4],local:[5,2,4,6],notat:6,convert:[2,4,6],pypi:2,db8:5,log_buff:0,smash:6,blog_upd:[],enabl:[0,4],rage:0,"0x10e7d6b90":6,stuff:6,she:4,contain:[0,1,2,3,4,5,6,7,8],paster:[2,6],view:[],dbsession:[2,4,6],knowledg:2,packet:5,closer:2,statu:[2,4],wire:[5,4,6],correctli:[0,6],tend:2,written:6,flickr:4,email:[0,5,2],mysite1:0,javascript:6,kei:[2,4,6],job:[0,2,4,6],entir:2,permanentflag:0,addit:[],revers:[5,6],dobb:0,admin:4,configpars:2,etc:[0,5,2,6],instanc:[2,4],equat:5,html5:6,comment:[0,5,6],typifi:2,lang:6,this_id:6,arriv:6,chmod:4,quit:[0,5,2,4,6],addition:2,insuffici:0,json:6,immedi:5,sock_stream:5,bulk:2,untrack:2,togeth:[],ingredi:2,multi:0,plain:[0,2,4,6],defin:[],dbapi2:2,endblock:[4,6],layer:[0,5,2],site:[2,4,6],incom:[],whirl:[5,4],pyramid_chameleon:[2,6],welcom:2,parti:0,failur:[0,5],http:[],hostnam:5,absorb:2,"85a3":5,expand:[],fenced_cod:4,center:0,well:[0,5,2,4],exampl:[],command:[0,2,4,6],filesystem:[0,6],undefin:6,usual:[5,2],distanc:5,less:[0,5],kramer:4,emtpi:2,web:[],jinja:[],wed:0,nullabl:[4,6],smith:0,add:[],book:6,logger:2,match:[],gmt:0,agnost:[5,6],crud:0,piec:6,five:0,know:[5,2,4,6],unseen:0,password:[],python2:2,insert:4,like:[],success:[0,5],echo_serv:5,lose:2,page:[],backlog:5,didn:2,specifi:6,captur:[2,6],suppli:4,utmcmd:0,uidvalid:0,proper:[0,5,6],home:[0,2,4,6],librari:[0,5,2,4,6],tmp:5,gethostbyname_ex:5,esr:0,lead:6,octet:0,"16x16":[],leav:[2,6],blog_view:[],investig:[0,6],journal:[],usag:2,host:[0,5,2,4],although:[0,2,6],about:[],actual:[0,5,2,4,6],socket:[],world:[2,6],column:[],herokuapp:4,datagram:5,carrier:5,constructor:5,fals:[5,4],own:[],washington:5,easy_instal:2,automat:[5,2,6],pcreat:[2,6],leverag:4,sock_:5,val:[2,6],transfer:[0,4],intention:0,appl:2,arg1:4,"var":[0,4],"function":[0,5,2,4,6],mailer:[],xerox:2,gain:[2,4],inlin:[5,2],count:2,made:[0,5,2,4,6],view_config:[4,6],whether:0,wish:[2,4],googlecod:6,displai:[4,6],below:[5,4],limit:5,problem:[5,2,4],"int":[2,4],blabber:2,pid:[4,6],ephemer:[5,2],implement:[],ini:[2,4,6],pip:2,duru:2,probabl:[4,6],detail:[],virtual:[0,2],other:[],lookup:[5,6],futur:5,rememb:[0,5,2,4,6],stat:0,"class":[0,5,2,4,6],dewei:0,echo_cli:5,log:[0,2,4,6],fiddler2:0,"_queri":4,syllabu:2,reliabl:5,rule:[0,5,2],bcryptpasswordmanag:4,models_nam:2,portion:6},objtypes:{},objnames:{},filenames:["presentations/session05","index","presentations/session01","outline","presentations/session03","presentations/session04","presentations/session02","readings","presentations/index"],titles:["Session 05","Internet Programming with Python","Session 01","Course Outline","Session 03","Session 04","Session 02","Supplementary Course Readings","Course Presentations"],objects:{},titleterms:{all:[5,2],code:[0,2],protocol:[0,5],chain:2,queri:2,resp:[],stack:5,tcp:5,syntax:4,ljshell:6,permiss:4,polish:4,skill:5,languag:0,web:2,style:6,password:4,layout:6,execut:4,flask:[],configur:[2,4,6],activ:2,send:5,environment:[],add:[2,4,6],program:1,matchdict:6,persist:2,input:6,save:2,alter:2,match:6,real:0,deactiv:2,file:2,messag:5,"return":[0,2],string:6,get:[5,2,6],python:[0,1,2,5],express:6,stop:0,"break":[0,5,2,4],jinja2:[4,6],initializedb:4,bit:2,characterist:0,requir:4,introduct:2,environ:2,like:0,header:0,edit:[4,6],troubleshoot:4,list:[4,6],resolv:0,iter:2,server:[0,5],"try":[4,6],other:0,bad:0,session:[0,5,2,4,6],common:0,quick:[0,5],updat:[0,4],where:4,side:[5,2],view:[0,4,6],respond:5,machin:5,domain:5,set:4,pop3:0,resourc:0,request:[0,6],revel:4,second:[],design:[],connect:[5,6],respons:[0,6],our:[0,2,4,6],happen:2,transport:5,concern:2,virtualenv:2,separ:2,what:[0,2,4,6],scale:4,hide:4,compar:4,databas:[2,4],scaffold:[],asid:0,content:0,adjust:4,irl:0,internet:[1,5],"new":2,method:[0,5,2],can:0,altern:2,core:0,run:[0,5,4],journal:4,error:0,tdd:0,debug:0,step:0,base:2,logout:4,dictionari:6,address:5,put:5,path:6,along:0,valu:6,addit:4,unsaf:0,about:[0,2,4],last:2,req:[],column:2,commun:5,page:6,filter:[4,6],mvc:[2,6],perman:2,context:[4,6],pick:6,congratul:5,commit:2,implement:[0,4],mean:[],rebuild:4,block:6,first:[0,2,4,6],wiki:[],own:5,render:[4,6],markdown:4,solut:0,app:[2,4],deploi:4,repli:5,terminolog:2,system:[2,6],walkthrough:[],unix:5,api:6,done:4,construct:5,famili:5,batteri:[],chang:[2,4,6],your:[0,5,2,4,6],speak:0,authz:4,differ:0,git:[],modif:0,cryptactular:4,script:[2,6],data:6,interact:[0,2,6],regist:4,three:2,submit:[0,5,2],custom:5,compon:2,start:2,heroku:4,much:[],mime:0,asset:6,accept:5,basic:[0,2,6],master:[],homework:[0,5,2,6],instal:[2,4,6],more:2,fork:[],via:4,life:[],shell:4,consol:2,idempot:0,form:[4,6],smtp:0,bind:5,further:[0,5],depend:4,effect:2,part:6,link:[5,4],togeth:5,postgresql:4,virtuelenv:2,imap:0,present:[8,6],authn:4,serv:0,"static":6,word:[2,4],look:0,provid:[4,6],type:[0,5],setup:2,outlin:3,structur:[2,6],project:2,defin:6,outcom:6,glori:4,learn:0,highlight:4,anonym:4,listen:5,browser:0,control:6,factori:4,pyramid:[2,4,6],comput:[0,5],engag:4,creat:[5,2,4],applic:[5,2,4],wrap:4,demo:[0,6],pass:0,share:6,few:0,templat:6,uri:0,packag:2,sqla:2,stub:6,have:[0,2],tabl:2,incom:5,work:[2,4],check:4,option:0,result:4,cours:[8,3,7],irrelev:2,advic:2,secur:4,receiv:5,make:[2,4,6],format:[0,4],detail:6,access:6,client:5,how:4,cleanup:2,read:7,build:4,branch:[],order_bi:2,test:[0,5,4,6],verifi:4,you:2,out:[4,6],config:4,prepar:[4,6],css:4,complet:6,map:0,finish:5,http:[0,6],determin:0,safe:0,deploy:[4,6],why:2,object:[2,6],sqlalchemi:2,procfil:4,socket:5,pattern:[],user:[4,6],echo:0,sql:2,encrypt:4,orm:2,login:4,index_pag:4,util:5,handl:0,task:5,third:[],choos:2,url:6,entri:4,initialize_learning_journal_db:2,learning_journ:4,flow:[5,6],wtform:6,doe:[0,6],inform:5,runapp:4,exampl:[0,4,6],ignor:2,clean:[5,2],time:[0,5,2,4],pars:0,model:[2,4,6],rout:6,includ:[]}}) \ No newline at end of file +Search.setIndex({envversion:42,terms:{content_length:3,interchang:[2,4],four:0,database_url:6,prefix:[0,7],af_rout:7,skeleton:[7,4],whose:3,aug:4,sorri:4,ipproto_raw:7,crisew:7,concret:4,swap:3,under:3,dest_dir:4,spec:3,formatd:0,digit:[0,8],everi:[0,2,3,4],govern:0,vast:2,chapel:2,location_attr:2,fetch_search_result:2,cmd:0,herbert:8,imaplib:0,verif:6,direct:[0,4],second:[0,7,2,3,4,6,8],street:2,nthi:8,even:[0,3,4],introspect:2,list_of_tcp_and_udp_port_numb:7,net:0,ever:[2,3],told:6,ipproto_tcp:7,behavior:[7,4,8],never:[7,3,4],here:[0,7,2,3,4,6,8],"4xx":0,path:[],redeploi:6,credit:[],webfact:0,permit:0,portabl:3,golden:8,pprint:[2,3],heroku_postgresql_maroon_url:6,wikimedia:[4,8],avenu:2,txt:[0,7,4,6],unit:2,yore:8,describ:[7,2,3],would:[0,2,3,4,6,8],init:4,dnt:0,call:[],admin_password:6,typo:4,recommend:6,calc:3,strip_filt:8,tell:[0,7,2,3,4,6],fastcgi:3,relat:4,panach:8,notic:[0,7,2,3,4,6,8],phone:8,unpack:4,must:[0,7,3,4,6,8],af_unix:7,join:[0,3],flaskenv:[],restor:[4,6],worth:[2,4,8],conceptu:8,introduc:[4,8],root:[3,6],defer:6,bookapp:3,give:[7,2,3,4,6],smtp:[],indic:0,unavail:2,want:[0,2,3,4,6,8],dele:0,end:[0,7,2,3,6,8],learning_journ:[],frobozz:0,classifi:2,how:[],sever:[2,3,6],env:[3,4],interview:0,verifi:[],config:[],updat:[],anon_1:4,after:[3,4,8],superus:4,diagram:4,befor:[0,7,2,3,4,6,8],wrong:4,lat:2,beautifulsoup4:2,demonstr:[0,4],domin:4,third:3,classmethod:[4,6,8],ipproto_icmp:7,wsapikei:2,greet:0,imposs:4,alias:7,scoped_sess:4,verb:0,green:0,incorpor:[3,6],enter:[0,2,3,8],mechan:6,engine_from_config:[4,6,8],order:[2,4,6,8],hob7v7guwir4n1v:6,origin:[2,3,4],belong:[0,7,6],over:[7,2,4,8],fall:4,becaus:[0,4,6,8],jpeg:0,privileg:[3,4],keyboard:0,flexibl:4,vari:[0,7],fit:2,fix:[0,3,4,8],simple_cli:0,toolbelt:[6,8],better:[7,2,4,6],offic:0,"1xx":0,easier:[4,8],descend:2,them:[0,7,2,3,4,6,8],thei:[0,7,2,3,4,6,8],id73:3,safe:[],sqlite3:4,bang:3,promis:7,initializedb:[],rental:[],choic:[7,2,4],walkthrough:2,bonu:2,getvalu:3,rocki:6,timeout:2,each:[0,7,2,3,4,6],debug:[],went:[0,8],utmcmd:0,bone:8,mean:[0,7,2,3,4,6,8],resum:2,logo:8,network:[7,2,8],goe:[2,4,8],god:4,content:[],got:[0,3,4,6,8],forth:[0,3],rail:0,nightmar:4,situat:[0,4],free:[6,8],ineffici:2,hand:[2,6,8],getservbynam:7,uiuc:3,puzzl:3,traceback:3,static_url:8,filter:[],iso:2,isn:[0,2,3,8],subtl:2,confus:[7,8],"__or__":7,rang:[0,2,8],render:[],independ:[0,4],rank:2,hook:[3,4],instruct:[7,2,3,4],alreadi:[0,7,2,4,6,8],wrapper:[7,2],agre:3,fantast:4,primari:[4,8],top:[2,4,6,8],"0x1103e38d0":4,sometim:[0,4],imap4rev1:0,necessarili:3,master:[4,6],too:[0,7,2,3,4,8],tom:4,logged_in:6,namespac:2,pubdat:2,lighttpd:3,took:4,incur:6,next_sibl:2,target:[2,3],keyword:[2,6,8],provid:[],tree:[4,6],matter:[2,6],arriv:8,minut:[0,7,8],latitud:2,rad:7,fashion:[2,3],bs4:2,walkscor:2,modern:4,mine:0,raw:0,af_sna:7,pylon:4,increment:2,"__main__":[2,3,6],seen:[0,7,2,3,4,6,8],seem:[3,6],seek:[4,6],latter:4,thorough:8,"0x1103e3fd0":4,shelf:4,transmit:4,hypertext_transfer_protocol:0,simplifi:[],endfor:[6,8],sock_dgram:7,though:[0,2,6],usernam:[0,6,8],guess_typ:0,minask:2,regular:4,alan:[4,8],bsd:7,models_id:4,typ:7,maria:[7,3],tradit:8,don:[0,7,2,3,4,6,8],doc:[0,2,4,6],doe:[],declar:[3,4,8],passwordfield:6,section:[0,3,4,8],dot:8,asid:[],opposit:8,random:6,syntax:[],radio:8,protocol:[],involv:6,absolut:8,exactli:[0,7,8],menu:[0,3],explain:[3,4],response_head:3,apach:[],restaur:2,scgi:3,folder:[7,3,4,6,8],resolve_uri:0,patter:8,stop:[],reconstruct:3,bar:[0,7,2,8],ietf:[0,3],baz:[0,2],buffsiz:7,reload:[0,3,6],metadata:4,steal:[4,6],title_info:3,respond:[],get_const:7,serve_forev:3,result:[],respons:[],fail:[0,7,6],best:[2,4,6],awar:6,pythoncert:[4,8],wikipedia:[0,7,2,4],urllib:2,yet:[0,7,4,6,8],figur:[7,3,4],score:[],outstand:8,awai:[],approach:[],attribut:[2,4,6,8],extend:[2,6,8],extens:[0,2,6],html5:8,toler:2,pull:[],protect:0,accident:7,expos:3,howev:[3,4,8],against:[0,3,6,8],logic:[4,6,8],browser:[],com:[0,7,2,3,4,6,8],get_appset:[4,6,8],assur:7,trunk:8,trust:4,assum:[7,2,4],speak:[],bathroom:2,chrome:0,add_rout:[4,6,8],been:[2,3,4,6,8],much:[0,7,2,3,4,8],interpret:[0,7,2,3,4,8],interest:2,futur:7,raise_for_statu:2,tini:2,quickli:[0,4],life:[0,2],xxx:3,setup_log:[4,8],telnet:7,ani:[0,7,2,3,4,6,8],matchpath:3,"catch":0,build_env:3,ugli:0,ident:6,servic:[],properti:[7,2,3,6],commerci:4,calcul:3,apikei:2,neat:0,seven:0,af_appletalk:7,shebang:3,toolkit:0,kwarg:2,fnhg:0,tediou:[2,4],fedorahost:2,conn:[0,7],datetim:2,perform:[3,4,8],suggest:[0,6],couchdb:4,craigslist:2,complex:[],split:0,version_str:3,complet:[],rfc822:0,nic:7,hang:0,xyzzi:0,nix:3,rais:[0,7,2,3],editcom:2,"548kb":4,thu:[7,2,3],hypothet:4,inherit:[3,4,8],client:[],thi:[0,1,2,3,4,5,6,7,8,9,10],endif:[6,8],gzip:0,programm:2,everyth:[0,2,4,6,8],moreov:0,left:[4,6],identifi:[0,3,8],just:[0,7,2,3,4,6,8],photo:[2,3],human:[0,2,8],mysql_length:4,languag:[],alchemi:4,easi:[2,4,6,8],shout:8,"8bitmim":0,httpfound:[6,8],els:[0,2,4,6,8],hat:0,gave:4,opt:0,race:[6,8],mayb:3,preserv:[],parse_var:4,render_markdown:6,elabor:6,apart:[2,8],imap4_port:0,response_method_not_allow:0,specif:[7,2,3,4,6,8],deprec:4,reload_templ:4,arbitrari:[7,4,6],manual:4,hung:0,install_requir:4,underli:7,www:[0,7,2,3],right:[0,2,3,6,8],old:4,"0db8":7,nfrom:4,intern:[0,3],successfulli:[2,3,4],craiglist:2,transmiss:[0,7],total:[3,6],bottom:7,multipli:3,exectut:4,overcom:3,condit:[0,3],foo:[0,7,2,6,8],fieldstorag:3,localhost:[0,3,6,8],mailgat:0,oracl:4,bolt:2,repositori:[7,3,4,6,8],post:[0,2,3,6,8],"super":0,plug:0,obj:[4,8],surround:8,dinner:0,sept:2,produc:7,encod:[0,2,6],bound:[7,4],down:[2,6,8],creativ:[4,8],bufsiz:3,storag:[0,4],git:[4,6],deal:7,utmcsr:0,support:[0,2,3,4,6,8],hypermedia:2,"class":[],avail:[7,2,4,6,8],reli:6,request_method:[3,6],editor:[2,3],overhead:2,get_address_info:7,rcpt:0,fork:[0,2],head:[0,7,2,6,8],medium:[7,2],offer:[3,4,8],forc:2,hear:7,icmp:7,"true":[0,7,2,4,6,8],absent:3,attr:[2,8],type:[],maximum:7,until:[7,4],absenc:3,emit:3,nnn:2,featur:[3,4,6],af_decnet:7,"abstract":4,decrypt:0,proven:4,exist:[0,3,4,6,8],check:[],assembl:8,when:[0,7,2,3,4,6,8],role:8,jone:0,test:[],webob:4,roll:6,realiti:2,node:2,intend:[7,4],af_unspec:7,urllib2:2,iterm:3,receiv:[],longer:7,bullet:6,anywher:3,pbkdf2:6,regexp:[3,8],wtttzy:6,push:[0,4,6],serious:2,osx:[0,6],concept:[7,4,6],skip:4,jsonp:8,invent:[2,4],row:[],depend:[],flask:4,graph:8,readabl:[0,2,3,8],unpython:4,a0004:0,a0005:0,certainli:8,a0001:0,a0002:0,a0003:0,addon:6,query_str:3,sourc:[],string:[],congest:7,price_span:2,lru:4,kitten:4,ydood:8,my_index:4,brows:8,administr:3,level:[2,4,6],did:[],dig:[2,8],ipproto_udp:7,item:[2,3,4,8],team:4,quick:[],imap4:0,dir:[0,7],declarative_bas:4,upper:8,slower:7,thin:7,lstrip:3,htm:2,sign:[0,2,6],cost:6,port:[0,7,3,6],appear:[6,8],scaffold:4,current:[7,2,3,4],rst2xml:4,"3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4":6,response_bodi:3,deriv:[2,3],urlopen:2,gener:[0,7,2,3,4,6,8],unauthor:2,explicitli:[3,4],address:[],wait:[],shift:0,queue:7,bob:[0,4],commonli:7,ourselv:[0,6],ipc:7,semant:7,session1:7,extra:[],modul:[0,7,2,3,4,6],prefer:[0,3],repoz:4,seattl:2,marker:8,http_:3,smallish:7,market:4,types_map:0,prove:6,visit:[6,8],todai:[0,7,2,6,8],live:[],criteria:[0,4],msg:7,tightli:3,chapter:4,maxask:2,walkabl:2,visual:0,appendix:0,accept:[],postgresql:[],effort:2,content_typ:3,prepar:[],pretend:0,uniqu:[2,4,6,8],whatev:[7,8],purpos:[0,3,4,6,8],boilerpl:4,input1:2,stream:[7,4],predict:0,agent:[0,3],topic:8,app_factori:4,occur:7,entryeditform:6,alwai:[0,7,2,3,4,6],lxml:2,multipl:[3,4],charset:[0,8],write:[],anyon:[3,6,8],pure:2,xhtml:0,map:[],product:[4,6],max:[0,6,8],clone:[7,4,8],mac:0,"4th":2,mai:[0,7,2,3,4,6],data:[],classroom:4,gethostnam:7,practic:0,bookdb:3,explicit:8,predic:6,mangl:0,inform:[],"switch":4,tailor:0,combin:[2,3,4,6,8],printenv:3,callabl:[3,8],talk:[0,7,4,8],log_buff:0,ydwoh:8,ttl:2,gitignor:4,still:[0,2,4,8],dynam:[0,2,3,8],config_uri:[4,6,8],group:[7,3,4],"4z6rvnhte21mpljw5veive0eg57gn":6,authorization_polici:6,sec10:0,platform:6,window:[0,2,3,4,6],curli:8,mail:0,main:[0,2,4,6,8],non:0,noj:2,profession:2,initi:[0,3,4,6],answer:[],safari:0,half:7,now:[0,7,2,3,4,6,8],discuss:[7,3,4,8],term:[3,4],name:[0,7,2,3,4,6,8],simpl:[],interpr:4,server_softwar:3,magazin:8,path_transl:3,compil:6,domain:[],"0x105849b90":8,replac:[6,8],individu:[7,2,4,8],continu:[0,7,3,4,6],wsgi_1:3,protocol_vers:3,operand:3,accomplish:0,space:0,profil:7,formula:2,sensor:2,correct:[0,7,8],she:6,tmpl:8,myproject:6,earlier:[0,4,6],pseudocod:0,state:[],ch05s03:0,envelop:2,argv:[4,6],argn:6,org:[0,7,2,3],"byte":[7,2],search_param:2,care:[0,7,3],sign_in:6,wai:[0,2,3,4,6,8],question:[],default_permiss:6,syndic:2,refus:7,thing:[0,2,4,6,8],place:[7,2,3,4,6,8],router:3,think:[7,3,4,6,8],frequent:4,lambda:8,oper:[7,3,6,8],info:[7,3,4,6],directli:[7,2,4,8],onc:[0,7,2,3,4,6,8],arrai:2,yourself:0,acquisit:2,fast:4,open:[],size:[],urin:0,given:[0,7,2,4,8],sheet:8,convent:0,imap4_ssl_port:0,eachoth:4,paramt:2,lognam:3,conveni:[2,4],friend:6,prettier:8,grant:[3,6],especi:[2,3],memo:3,copi:[0,2,3,6,8],huh:0,artifact:4,github:[0,7,2,3,4,6,8],mostli:[0,7],attempt:7,than:[0,7,3,4,6,8],png:0,serv:[],were:[7,2,4],posit:7,seri:4,pre:2,internet_protocol_suit:7,sai:[0,3,4,6],angel:3,pro:7,argument:[0,7,2,3,4,6,8],larri:4,rent:2,notimplementederror:0,saw:4,shtml:0,engin:[],ipproto_:7,note:[0,7,2,3,4,6,8],wretch:3,take:[0,7,2,3,4,6,8],bcrypt:6,noth:[2,3,4,6,8],channel:[0,2,4],begin:[0,7,3,4,6,8],sure:[7,2,4,6,8],pain:[4,6],trace:4,normal:[2,4],buffer:[0,7],price:[],pair:[4,8],homepag:2,run_cgi:3,utmccn:0,later:0,"8mb":4,quantiti:2,create_al:4,link:[],shortnam:6,preambl:3,gracefulli:0,shot:2,show:[],subprocess:3,checkbox:8,xml:[],onli:[0,2,4,6,8],slow:7,codehilit:6,transact:[7,4,6],enough:[0,4,6],dict:[7,2,4],analyt:6,startswith:7,nearli:4,variou:[4,8],mung:0,clang:4,repo:2,ssl:0,cannot:[7,3,8],ssh:7,requir:[],reveal:3,entryfactori:6,yield:2,authenticated_userid:6,draft:0,where:[],summari:2,wiki:[0,7,2],n10:8,lng:2,web_application_hybrid:2,detect:6,review:[0,7,3,4,6,8],enumer:6,label:[6,8],getattr:7,between:[0,7,2,3,4],"import":[0,7,2,3,4,6,8],across:[7,2],parent:[3,4],elladan:7,tut:0,cycl:[4,8],portion:[3,8],come:[0,2,3,4,6,8],img:0,tutori:8,wherin:4,improv:[0,3,4,6],among:[7,4,8],intitalizedb:4,color:6,inspir:2,"__class__":2,exploit:3,imad1:0,artu:0,coupl:[7,2,3,4],hardli:2,mark:6,evangelista:[4,8],valueerror:[2,3],extract_list:2,avian:7,doesn:[0,7,2,3,4,6,8],howdi:8,standard:[0,7,2,3,4,6],"case":[0,3,4,8],interoper:2,cast:[2,4],outcom:[],scum:3,python_web:[4,8],ehlo:0,zipcod:2,advantag:[4,6],ctrl:0,canon:[7,3],worri:[7,6],blah:0,reqeuest:3,smalltalk:4,develop:[0,2,3,4,6,8],author:[3,6],cc0:[4,8],same:[0,7,2,3,4,6,8],epoch:2,html:[],pai:[2,6],eventu:4,week:[0,7,2,3,4,6,8],someexamplerssdomain:2,finish:[],assist:[3,4],someon:6,driven:[0,8],capabl:3,http_host:3,add_rount:6,mani:[0,7,2,3,4,6,8],appropri:[7,3,6,8],"__acl__":6,markup:6,without:[7,2,3,4,8],execut:[],excel:8,resp:[0,2],googleapi:2,interrupt:0,kill:[0,4],aspect:[4,6,8],flavor:2,nam:7,heffalump:7,hint:0,except:[0,7,3,4],param:[2,6],blog:0,ws_score:2,pile:2,blob:6,exercis:[],vulner:0,real:[],tranmiss:7,around:[7,2,3,6,8],read:[],psd:2,makin:8,traffic:0,mon:[0,2],redqueen:0,socket_tool:7,intel:0,whitespac:[0,2],integ:[7,4,6],server:[],benefit:[0,7],either:[0,8],cascad:8,output:[],manag:[7,4,6],fulfil:6,ipproto_ip:7,definit:8,"2xx":0,exit:4,posgresql:6,notabl:0,refer:[7,2,3,4,8],af_inet6:7,power:[7,4,6,8],broken:0,"__name__":[2,3,6],src:8,deflat:0,central:4,acl:6,microframework:4,srv:3,"19t01":6,act:[2,3],mytempl:[4,8],consid:[0,4,8],status_cod:2,console_script:4,isoformat:2,inbox:0,strip:[2,8],igmp:7,loc:2,buffer_s:7,httpnotfound:[6,8],her:6,set_authorization_polici:6,aren:[4,6],lon:2,strict:2,interfac:[0,7,3,4,6],ipv4:7,lot:[0,4,8],ipv6:7,"0x10b075ed0":4,hei:7,svn:8,handle_request:3,tupl:7,categor:0,congratul:[],freddi:8,notat:[2,8],dirti:[2,4],possibl:[7,2,3,8],"default":[7,3,4,6,8],start_respons:3,connect:[],gone:4,uid:0,certain:[0,7,2,4],deep:6,strongli:6,omgwtf:2,fill:[3,6,8],again:[0,7,2,3,4,6,8],models_valu:4,googl:[],compel:4,field:[2,3,4,6,8],valid:[0,2,6,8],compet:2,pathnam:[0,7],juic:8,sequenc:0,symbol:[7,8],briefli:8,transceiv:7,reduc:4,json_output:[],"1b6":0,directori:[0,2,3,4,6,8],descript:[],potenti:6,escap:6,unset:3,represent:[7,2,4],forget:6,roi:2,forbidden:6,scalar:4,abil:[0,4],cameron:2,follow:[0,7,3,4,6,8],disk:0,dsn:0,script_nam:3,af_inet:7,articl:[4,6,8],tail:6,those:[0,2,3,4],norm:0,hill:2,sound:2,liter:4,chameleon:8,far:[7,4],faq:0,util:[],candid:2,fan:2,fam:7,veri:[0,7,3,4,6,8],ticket:6,simple_app:3,webmast:0,list:[],last_nam:8,adjust:[],stderr:[0,3],small:[2,3],neighborhood:2,your_script:2,past:[4,6],design:[7,2,3,4,6,8],pass:[],further:[],by_nam:6,sud:2,sum:8,abl:[0,2,3,4,6,8],delet:[0,2,6],version:[0,2,3,4,6],tickl:2,primary_kei:[4,6],intersect:8,"public":[2,6,8],craigslist_result:2,hasn:2,full:[2,3,4],hash:[3,6],inher:2,goodby:0,strong:[6,8],modifi:0,rfc3875:3,valu:[],search:[],ahead:[7,2,3,6,8],popen:3,prior:6,action:[7,2,4,6,8],add_static_view:[4,8],via:[],transit:2,filenam:0,href:[2,3,6,8],famili:[],establish:[7,2],select:[0,4],hexadecim:2,distinct:0,stdout:[7,3,4],two:[0,7,2,3,4,6,8],taken:[2,6],flaw:8,octal:2,mozilla:[0,8],flag:[0,7,6],addcom:2,particular:[4,6,8],known:[7,2,6],cach:[0,4],none:[0,7,2,3,4,6,8],endpoint:[0,7,2],s3cr3t:6,hour:[0,7,8],hous:2,dev:[2,3,6],venusian:4,remain:6,paragraph:2,learn:[],abandon:2,rst2html:4,def:[0,7,2,3,4,6,8],ndate:7,prompt:[7,3,4],scan:[4,8],challeng:[0,2,6],registr:6,share:[],templat:[],explor:[7,2,4],phrase:[4,8],login_form:6,goal:[2,4],first_nam:8,secur:[],rather:0,anoth:[],comfort:8,divis:3,"__init__":[4,6,8],csv:[4,8],loginform:6,css:[],unabl:6,"545kb":4,resourc:[],referenc:8,okai:[0,2,4],"short":3,footer:8,proto:7,django:4,caus:4,egg:4,constitu:8,help:[0,7,2,4,8],"912ft":2,mainthread:[4,6],stackoverflow:0,soon:[7,8],listval:3,held:2,through:[0,2,4,6,8],pane:0,paramet:2,style:[],psycopg2:[4,6],relev:[2,4],pserv:[6,8],might:[0,7,2,3,4,8],pce:8,tri:8,good:[0,2,3,4,6],pollut:4,cew:4,framework:[4,6,8],maildrop:0,gethostbynam:7,msg_part:7,document:[],authent:[0,6],easili:[2,4,8],achiev:2,http_server:0,compris:4,found:[0,3,4,8],unicod:[2,4,6,8],button:8,hard:[4,6],idea:[0,7,2,4],procedur:2,realli:[0,7,2,6,8],expect:[0,3,4,8],beyond:[],orient:[],some_valu:3,ftp:7,publish:[3,4],research:4,bubbl:8,etag:0,health:2,authnpolici:6,print:[0,7,2,3,4,6,8],uwpc:[4,8],some_appl:3,"__utmz":0,postgr:6,proxi:[],uncommit:4,advanc:0,new_model:4,differ:[],cooki:[0,6],reason:[0,2,3,8],ask:[0,7,4],"__utma":0,earliest:2,recv:[0,7],bash:[3,6],applict:3,by_id:[4,6,8],perhap:[0,8],find_al:2,assign:[0,7,2,4,6,8],request_protocol:3,"85a3":7,feed:2,oserror:3,set_authentication_polici:6,obviou:[0,2],prevent:[3,6],feel:8,number:[0,7,2,4,6,8],placehold:[0,8],done:[],construct:[],blank:[0,3],miss:[2,3,4],fanci:2,guess:0,pbkdf2passwordmanag:6,least:[2,3,4,8],getservbyport:7,statement:4,store:[4,6],luckili:[0,2,4,6,8],parc:4,option:[],relationship:7,behind:4,echo_socket:7,doctyp:[0,2,8],part:[],pars:[],my_view:8,fenced_cod:6,fred:4,kind:[0,7,3,6,8],grew:0,remot:[7,2,4,6],remov:[7,4,6],str:[3,4],relative_to:6,aclauthorizationpolici:6,payload:0,"_socketobject":7,expir:6,"null":2,imagin:[6,8],built:[0,2,3,4,6,8],lib:[0,3,4],remote_addr:3,self:[3,6],click:[3,8],also:[0,7,2,3,4,6,8],build:[],cgi_1:3,textareafield:8,brace:8,tool:[0,7,2,3,4,6],http_user_ag:3,distribut:4,setuptool:4,kai:4,previou:[0,2],reach:7,chart:[4,8],most:[0,7,2,3,4,6,8],plai:[],wahoo:0,plan:6,addr:[0,7,2],mymodel:[4,6,8],cover:[0,4,6],http_server_at_hom:0,usual:[7,4],wsgi:[],hyper:0,latlng_tmpl:2,v12:0,getcom:2,particularli:[6,8],fine:[0,8],find:[],giant:3,nosql:4,pretti:[0,2,4],solut:[],"172kb":4,factor:4,darwin:4,hit:2,unus:4,"__file__":3,resent:7,famous:3,rest:[],"3xx":0,restart:[0,3,6,8],rfc:[0,3],common:[],cri:[0,8],wrote:6,certif:8,set:[],dump:2,sep:2,overwhelm:4,"0x1103e3f50":4,af_ipx:7,see:[0,7,2,3,4,6,8],bare:8,arg:[3,4],reserv:[0,7,2],someth:[0,2,3,4,6,8],topmost:7,won:0,subscript:8,pastedeploi:4,javascript:[2,8],isol:4,mailbox:0,"31m":6,cgi_sum:3,both:[0,7,2,3,4,6,8],hiddenfield:6,delimit:0,unstag:4,load:[0,2,3,6,8],simpli:[0,2,3,4,6,8],point:[],instanti:[2,4],header:[],route_url:[6,8],littl:[3,6,8],suppli:[2,3,6],batteri:2,comput:[],xkcd:0,backend:3,damp:3,empti:[0,7,3,4,6,8],sinc:[7,2,3,4,8],retr:0,secret:[3,6],damn:2,rstpep2html:4,"55c0287d4ef21f15b97eb1f107451b88b479bff":6,fire:[0,2,3,4,6,8],imag:[0,2,8],cryptacular:6,append:[0,3,4,6],coordin:4,understand:[0,6],func:3,educ:3,remote_us:3,look:[],solid:6,add_walkscor:2,batch:4,"while":[0,7,2,3,4],"54f7e4d":6,abov:[0,7,2,3,4,6],error:[],fun:8,everyon:6,loop:0,readi:[0,7,2,4,6,8],unintuit:2,readm:[3,4],itself:[2,3,4],spong:3,"3f80f":0,decor:8,minim:0,remote_id:3,wherein:[2,3,8],decod:2,zope:4,conflict:[2,4],b59b7c3:6,communc:7,moment:[7,2,4,6,8],temporari:8,user:[],robust:6,stack:[],recent:[0,4],lower:[7,2,8],task:[],find_packag:4,entri:[],spent:7,doodi:8,pickl:4,person:[7,6,8],expens:[7,3,6],elev:0,connnect:7,cedar:6,macintosh:0,spend:[7,8],explan:0,make_wsgi_app:4,"__path__":4,mysql:4,session05:0,session04:7,session01:7,session03:2,session02:[0,8],a0006:0,restructuredtext:4,global_config:[4,6,8],populate_obj:[6,8],appli:[6,8],input:[],cgi_2:3,bin:[2,3,4,6,8],bim:2,varchar:4,format:[],response_ok:0,folk:3,server_socket:7,formal:[0,3,4],httpexcept:8,docutil:4,altough:2,manifest:4,collect:[4,8],princip:6,popular:[3,6],often:[0,7,4],some:[],back:[0,7,2,3,4,6,8],understood:7,uidnext:0,sampl:[6,8],ljenv:[4,6,8],formatted_address:2,cgihttpserv:3,pep:3,id3:3,per:[0,7,2,6],larg:[2,3],slash:3,machin:[],intial:0,run:[],authtktauthenticationpolici:6,simple_serv:3,viabl:4,step:[],crlf:0,subtract:3,"resum\u00e9":2,memori:2,"0x100563c90":7,exc_info:3,path_info:3,miracl:0,within:3,ensur:[0,7,4,6],html5shiv:8,inclus:2,span:[2,6],errno:3,sock:[0,7],stylesheet:8,"long":[0,7,2,3,4,6],heroku:[],includ:[0,7,2,3,4,6,8],term_program:3,properli:[0,2,8],repeatedli:[7,4],great:[0,2,3,4,8],pwd:4,game:8,atol:6,atom:2,line:[0,3,4,6,8],translationstr:4,row1:2,utf:[0,2,8],consist:[0,3],latlng:2,similar:[0,2,3,4],clear:[0,7],sesson:0,constant:7,parser:2,chao:[2,6],ws_descript:2,repres:[0,2,4,8],gecko:0,response_not_found:0,titl:[0,2,3,4,8],xb2:2,nav:8,librari:[0,7,2,3,4,6,8],nice:[0,2,3,6,8],llvm:4,mongodb:4,meaning:4,csrftoken:0,longitud:2,esr:0,index_pag:[],algorithm:6,mimetyp:0,rst2latex:4,parse_sourc:2,sign_in_out:6,came:6,hello:[0,3,8],oop:4,getaddrinfo:7,sqlserver:4,edu:[7,3],a_pag:2,bathtim:8,elsewher:[7,6],friendli:2,send:[],becam:2,aris:4,sent:[0,7,2,3,4,6,8],charlesproxi:0,rollback:4,spool:0,add_address:2,runnabl:3,recip:6,magic:8,joel:6,geograph:2,hive:3,"try":[],rfc5321:0,book_id:3,entry_point:4,hasnochildren:0,pleas:[2,4],impli:3,smaller:7,natur:8,focu:2,download:[4,8],odd:8,html5lib:2,client_address:7,compat:[3,4],index:[0,3,4,6,8],poke:[2,3],resembl:8,cell:2,can:[],len:[0,7,2,3,4],bodi:[0,2,3,4,6,8],loadapp:6,intercept:6,let:[0,7,2,3,4,6,8],myhost:3,becom:[2,4],pgbackup:6,convert:[2,4,6,8],didn:4,copyright:4,technolog:[7,6],stringval:3,rdf:2,typic:[3,4],purplemattfish:2,maker:8,firefox:0,ago:[7,6],parse_request:0,win:0,gatewai:3,apt:2,ran:[0,4],api:[],duck:2,apa:2,from:2,zip:2,commun:[],upgrad:6,next:[0,7,2,3,4,6,8],websit:[2,4,6,8],few:[],usr:[3,4],remaind:3,sudo:4,ipoac:7,babi:8,trail:3,train:[4,8],somesecret:6,account:8,retriev:[3,8],scalabl:4,alic:6,annot:[],tag:[0,2,6,8],universal_newlin:3,fetch:[],aliv:[0,7],control:[],sqlite:[4,6],tar:4,process:[],lock:6,preformat:6,high:4,af_:7,tab:0,onlin:[],serial:2,cache_max_ag:[4,8],gcc:4,cewing_socket:7,client_socket:7,pyramid_jinja2:8,instead:[0,4,6,8],stand:[4,8],delai:4,initialzedb:6,other_sess:4,"6mb":4,class_:2,attent:6,tier:6,physic:[7,8],add_al:4,bind:[],correspond:[7,3],element:[],webroot:0,chief:6,prettifi:2,allow:[0,7,2,3,4,6,8],sendal:[0,7],elif:8,move:[0,7,2,4],bunch:7,uiqj579igrbrebhmjqnth8pffaz2qrj:0,verify_password:6,"0x10046cec0":7,infrastructur:6,bye:0,recept:7,handl:[],demoenv:4,spell:8,dai:[0,8],auth:6,close_fd:3,"8a2e":7,mashup_:2,all_book:3,somewher:[2,6,8],anyth:[2,4,6],edit:[],entrycreateform:[6,8],nameerror:[0,3],soupenv:2,slide:[10,1,5,9],mode:4,autoincr:6,beneath:6,pygment:6,item_templ:3,bump:0,sessionmak:[4,8],consum:7,meta:[],"static":[],brittl:2,wander:3,special:[2,4,6,8],out:[],variabl:[],facto:2,categori:4,suitabl:6,rel:8,cwd:3,red:0,clarifi:4,insid:[0,7,2,3,4],frank:8,manipul:[3,4],sock_:7,standalon:2,zodb:4,downei:2,auth_secret:6,first_lin:0,complianc:6,nowher:4,"0x1103d9f10":4,could:[0,3,4,6],lexer:6,put:[],keep:[0,7,2,3,4],length:[0,3,4,6,8],outsid:[3,4,6],geometri:2,waitress:6,softwar:[0,7,2,4,6,8],isbn:3,pygments_styl:6,echo:[],exact:8,date:[],match_param:[6,8],owner:[2,8],intention:0,licens:4,mkdir:4,messag:[],attach:6,imap4_ssl:0,termin:[0,7,3,4,6],"final":[0,7,3,4,8],udp:7,shell:[],fnhg5:0,fnhg2:0,fnhg3:0,"8d3":7,dyno:6,textfield:[6,8],nobodi:3,haven:2,route_nam:[6,8],embodi:[4,6],dive:6,roberto:8,charact:[2,4,6,8],sens:8,sensit:[0,6],f12:0,stdin:3,favorit:0,py2:4,py3:4,requri:6,close:[0,7,8],need:[0,7,2,3,4,6,8],turn:[0,4,6,8],villaini:3,afraid:[0,4],lightweight:2,min:[6,8],rout:[],which:[0,7,2,3,4,6,8],from_encod:2,authentication_polici:6,ncsa:3,singl:[0,7,2,3,4,6,8],unless:7,ds_store:4,whl:4,who:[6,8],wandering_angel:3,discov:[0,2,3],deploi:[],pyc:4,segment:8,payment:6,url:[],request:[],face:8,pipe:8,build_db:6,deni:[3,6],determin:[],fact:[7,3,6,8],jkorpela:0,text:[],bring:[0,8],server_nam:3,bedroom:2,rough:4,identityset:4,redirect:[0,2],locat:[],auth_typ:3,"2br":2,should:[0,7,2,3,4,6,8],jan:[0,7],"3e1cb03b":0,"__tablename__":[4,6],local:[7,2,4,6,8],hope:2,satisfact:6,familiar:[0,3],pypi:4,db8:7,notimpl:2,smash:8,authzpolici:6,enabl:[0,3,6],rage:0,"0x10e7d6b90":8,stuff:[3,8],"0x1005b8b40":7,contain:[0,1,2,3,4,5,6,7,8,9,10],programmableweb:2,paster:[4,8],view:[],dbsession:[4,6,8],knowledg:4,packet:7,closer:4,statu:[2,3,4,6],wire:[7,6,8],correctli:[0,8],uidvalid:0,pattern:[4,8],make_serv:3,creationflag:3,tend:4,written:[3,8],limit:[7,2],neither:2,flickr:[2,3,6],email:[0,7,3,4],mysite1:0,sole:[0,7,2],kei:[2,3,4,6,8],gethead:3,job:[0,4,6,8],entir:[2,4],permanentflag:0,egg_info:4,addit:[],revers:[],dobb:0,startupinfo:3,equal:3,configpars:4,etc:[0,7,4,8],instanc:[2,4,6],equat:7,wear:0,comment:[0,7,2,8],typifi:4,lang:8,this_id:8,rfc2616:0,chmod:[3,6],admin:6,orig:2,quit:[0,7,3,4,6,8],divid:[7,3,4],addition:4,card:7,insuffici:0,json:[],treat:[2,3],immedi:7,presenc:3,sock_stream:7,tranform:2,bulk:4,untrack:4,saner:2,behalf:8,togeth:[],preexec_fn:3,ingredi:4,multi:[0,3],"14t17":2,plain:[0,3,4,6,8],harder:2,contextu:2,defin:[],wild:2,dbapi2:4,endblock:[6,8],layer:[0,7,4],site:[2,4,6,8],server_protocol:3,incom:[],whirl:[7,2,6],pyramid_chameleon:[4,8],welcom:4,parti:0,matthew:2,failur:[0,7,2,3],difficult:3,http:[],hostnam:7,denot:3,absorb:4,upon:3,"5xx":0,php:[2,3],api_url:2,off:[0,4,6,8],center:[0,2],well:[0,7,2,3,4,6],exampl:[],command:[0,3,4,6,8],filesystem:[0,8],undefin:8,latest:2,deletecom:2,distanc:7,less:[0,7,3],kramer:6,paul:2,emtpi:4,wed:0,nullabl:[6,8],smith:0,book:2,polici:6,logger:4,gmt:0,branch:4,agnost:[7,8],crud:0,piec:[3,8],five:0,know:[7,2,3,4,6,8],unseen:0,password:[],recurs:2,lastbuildd:2,python2:[3,4],insert:6,like:[],success:[],echo_serv:7,lose:4,architectur:2,page:[],backlog:7,drop:[7,8],specifi:[2,3,8],captur:[4,8],linux:[0,6],"export":3,mistak:4,proper:[0,7,2,3,8],home:[0,3,4,6,8],transport:[],tmp:7,guid:2,gethostbyname_ex:7,programdata:3,lead:[3,8],octet:0,leav:[4,8],settl:3,server_port:3,u00e9:2,investig:[0,8],journal:[],usag:[2,4],host:[0,7,3,4,6],although:[0,4,8],actual:[0,7,2,3,4,6,8],world:[3,4,8],herokuapp:6,datagram:7,carrier:7,constructor:7,fals:[7,2,3,6],remote_host:3,own:[],washington:7,easy_instal:[2,4],automat:[7,2,4,8],guard:3,hoohoo:3,leverag:6,w3c:2,mod_python:3,val:[2,4,8],allusersprofil:3,transfer:[0,2,6],rcp:2,spread:2,appl:4,wouldn:2,arg1:6,"var":[0,6],"function":[0,7,2,3,4,6,8],respositori:0,getlist:3,versioner_python_prefer_32_bit:3,xerox:4,bui:2,gain:[4,6],bookshelf:3,inlin:[7,4],count:4,gateway_interfac:3,made:[0,7,2,3,4,6,8],view_config:[6,8],whether:[0,2],wish:[3,4,6],googlecod:8,displai:[3,6,8],below:[7,3,6],pcreat:[4,8],problem:[],"int":[3,4,6],blabber:4,pid:[2,6,8],ephemer:[7,4],implement:[],ini:[4,6,8],pip:[2,4],duru:4,probabl:[3,6,8],sharabl:3,crummi:2,detail:[],virtual:[0,3,4],new_valu:3,other:[],lookup:[7,2,8],ws_link:2,rememb:[0,7,2,3,4,6,8],stat:0,repeat:3,allowedvers:0,dewei:0,echo_cli:7,log:[0,4,6,8],fiddler2:0,"_queri":6,syllabu:4,reliabl:7,rule:[0,7,4],bcryptpasswordmanag:6,models_nam:4,cgi_bin:3,htmlparser:2},objtypes:{"0":"py:class"},objnames:{"0":["py","class","Python class"]},filenames:["presentations/session05","index","presentations/session07","presentations/session06","presentations/session01","outline","presentations/session03","presentations/session04","presentations/session02","readings","presentations/index"],titles:["Session 05","Internet Programming with Python","Session 07","Session 06","Session 01","Course Outline","Session 03","Session 04","Session 02","Supplementary Course Readings","Course Presentations"],objects:{"":{center:[2,0,1,""],tiny:[2,0,1,""]}},titleterms:{all:[7,2,4],code:[0,2,4],chain:4,queri:4,ljshell:8,implement:[0,6],row:2,content:0,depend:6,send:7,environment:3,program:1,roa:2,deactiv:4,sourc:2,string:8,util:7,did:3,list:[3,6,8],iter:4,"try":[2,6,8],adjust:6,quick:[0,7],prepar:[3,6,8],machin:7,outlin:5,pass:0,further:[0,7,3],what:[0,2,3,4,6,8],hide:6,compar:6,repli:7,asid:0,beautifulsoup:2,navigablestr:2,"new":4,method:[0,7,4],outcom:8,logout:6,address:[7,2],path:[3,8],along:0,valu:8,wait:[],search:2,credit:2,orm:4,pick:8,chang:[4,6,8],via:6,extra:2,apach:3,app:[3,4,6],unix:7,api:[2,8],famili:7,instal:[2,4,6,8],middlewar:3,from:3,commun:7,regist:6,few:[0,3],live:3,call:2,asset:8,handl:0,type:[0,7,2],more:[2,4],idempot:0,share:8,templat:8,examin:2,iii:3,socket:7,word:[4,6],setup:4,work:[2,3,4,6],can:0,learn:[0,3],fetch:2,control:8,process:3,smtp:0,accept:7,onlin:3,cours:[10,5,9],secur:6,anoth:2,revisit:2,write:3,how:6,answer:2,verifi:6,config:6,needl:2,css:[2,6],updat:[0,3,6],map:0,resourc:0,mess:2,resolve_path:3,date:2,law:2,data:[2,3,8],bind:7,learning_journ:6,element:2,inform:7,runapp:6,environ:[3,4],style:8,complex:[],persist:4,alter:[3,4],"return":[0,4],python:[0,1,2,3,4,7],safe:0,"break":[0,7,2,3,4,6],hateoa:2,jinja2:[6,8],recap:3,introduct:4,addenda:2,edit:[6,8],simpl:[2,3],troubleshoot:6,revers:2,separ:4,debug:0,side:[7,4],domain:7,meta:3,"static":8,connect:[7,8],our:[0,2,4,6,8],happen:4,beyond:2,extract:2,orient:3,out:[2,6,8],variabl:3,stub:8,internet:[1,2,7],factori:6,proxi:3,navig:2,base:4,mime:0,dictionari:8,put:[7,2],geocod:2,filter:[2,6,8],mvc:[4,8],perman:4,first:[0,3,4,6,8],render:[6,8],echo:0,done:6,construct:7,tame:2,open:2,size:2,differ:0,script:[3,4,8],interact:[0,4,8],system:[4,8],messag:7,order_bi:4,listen:7,shell:6,consol:4,option:0,part:8,pars:[0,2],virtuelenv:4,matchdict:8,rss:2,serv:0,provid:[6,8],structur:[4,8],project:4,browser:0,comput:[0,7],packag:4,have:[0,4],tabl:4,ponder:3,engin:2,advic:4,rout:8,ideal:2,exampl:[0,6,8],build:[3,6],soap:2,simplifi:3,deploy:[6,8],price:2,object:[4,8],procfil:6,cgitb:3,plai:2,deploi:6,"class":[2,3],url:[2,8],flow:[7,3,8],uri:0,doe:[0,8],determin:0,wsgi:3,show:3,text:2,syntax:6,session:[0,7,2,3,4,6,8],permiss:6,sqla:4,find:2,xml:2,access:8,locat:2,configur:[4,6,8],activ:4,get:[7,2,3,4,8],express:8,stop:0,pop3:0,tcp:7,requir:6,layout:8,bad:0,common:0,where:6,view:[0,3,6,8],respond:7,set:[3,6],result:[2,3,6],respons:[0,2,8],concern:4,databas:[4,6],state:2,score:2,irl:[0,2],awai:3,approach:2,altern:[3,4],addit:6,last:4,wsgiref:3,context:[6,8],modif:0,login:6,whole:[],markdown:6,point:[],dispatch:3,walk:2,header:0,rpc:2,speak:0,authz:6,cryptactular:6,rebuild:6,three:4,compon:4,json:2,authn:6,basic:[0,4,8],togeth:[7,2],input:8,repetit:[],imap:0,present:[10,8],look:0,servic:2,trick:2,defin:8,homework:[0,7,2,3,4,8],error:[0,3],anonym:6,real:0,pyramid:[4,6,8],engag:6,demo:[0,8],incom:7,irrelev:4,receiv:7,make:[2,4,6,8],preserv:2,html:2,document:2,mod_wsgi:3,complet:8,finish:7,http:[0,2,8],effect:4,solut:[0,2,3],user:[3,6,8],stack:[7,3],stateless:2,task:7,entri:6,client:7,choos:[2,4],model:[4,6,8],protocol:[0,7],execut:[3,6],rest:2,initializedb:6,polish:6,skill:7,languag:0,previous:3,web:[2,3,4],characterist:0,add:[2,4,6,8],book:3,exercis:3,enchilada:[],flowchart:[],save:4,match:8,earli:2,applic:[7,2,3,4,6],format:[0,6],read:9,big:2,bit:4,password:6,like:0,success:3,resolv:0,server:[0,7,3],output:[2,3],page:8,some:3,revel:[3,6],transport:7,virtualenv:4,afterword:2,cgi:3,core:0,run:[0,7,3,6],journal:6,tdd:0,step:[0,2,3],wsdl:2,unsaf:0,comparison:2,about:[0,2,4,6],postgresql:6,fffffffffuuuuuuuuuuuuu:2,column:4,commit:4,other:0,block:8,repair:3,own:7,dilemma:2,terminolog:4,wrap:[2,3,6],lesson:3,your:[0,7,2,3,4,6,8],question:[2,3],submit:[0,7,2,3,4],custom:7,start:4,heroku:6,form:[3,6,8],sqlalchemi:4,link:[7,2,6],congratul:7,pull:2,glori:6,highlight:6,problem:3,creat:[7,4,6],request:[0,2,8],wtform:8,file:4,check:6,encrypt:6,googl:2,mashup:2,tip:3,detail:[3,8],scrape:2,cleanup:4,test:[0,7,2,3,6,8],you:4,clean:[7,4],why:[2,4],scale:6,sql:4,index_pag:6,initialize_learning_journal_db:4,descript:2,mash:2,ignor:4,time:[0,7,2,3,4,6]}}) \ No newline at end of file From 7a3939c2cb18d12ee5f623d8e07066dc808dabaf Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 8 Feb 2015 22:34:36 -0800 Subject: [PATCH 082/114] adding slides for session 6 and partly session 7 --- slides/_images/cgitb_output.png | Bin 0 -> 48545 bytes slides/_images/gateway.jpg | Bin 0 -> 475556 bytes slides/_images/granny_mashup.png | Bin 0 -> 216410 bytes slides/_images/mod_wsgi_flow.png | Bin 0 -> 23498 bytes slides/_images/proxy_wsgi.png | Bin 0 -> 24188 bytes slides/_images/scream.jpg | Bin 0 -> 629018 bytes slides/_images/wsgi_middleware_onion.png | Bin 0 -> 8554 bytes slides/_images/wsgiref_flow.png | Bin 0 -> 21611 bytes slides/_sources/presentations/session06.txt | 1326 +++++++++++++ slides/_sources/presentations/session07.txt | 1635 ++++++++++++++++ slides/presentations/session06.html | 1658 +++++++++++++++++ slides/presentations/session07.html | 1864 +++++++++++++++++++ 12 files changed, 6483 insertions(+) create mode 100644 slides/_images/cgitb_output.png create mode 100644 slides/_images/gateway.jpg create mode 100644 slides/_images/granny_mashup.png create mode 100644 slides/_images/mod_wsgi_flow.png create mode 100644 slides/_images/proxy_wsgi.png create mode 100644 slides/_images/scream.jpg create mode 100644 slides/_images/wsgi_middleware_onion.png create mode 100644 slides/_images/wsgiref_flow.png create mode 100644 slides/_sources/presentations/session06.txt create mode 100644 slides/_sources/presentations/session07.txt create mode 100644 slides/presentations/session06.html create mode 100644 slides/presentations/session07.html diff --git a/slides/_images/cgitb_output.png b/slides/_images/cgitb_output.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc6d78ed2ccf7cad4014bed721c74c04c334850 GIT binary patch literal 48545 zcmd?QWl&sA*EWhISg_#k7BslKI|(7UyE}txfZ*;hxVyW%yTjlPgS&m)@AKT>sZ(E_ zpXbM^Q`NhsX7Aandv#y4ddbxxN(z!l2zUq(5D-YxQer>kZJlVFnREZQvTak1oe~f|Fmvcjn^6Yf4^-V zi^8D!lfeB?dk9CQ`0uZTFK}_C{&N@3f0LCZ`rjA2O^rxM|9vnyB=o=KX2$sa`L7%} zf!vzcOV4xT&R;zL%4-sFJ3HV_uNcOL|IavtQ9UL8-{_hg`v2D*{OWXq`p=wubN9IB z*>Sb!V%Xr~7d^NUUxQZ%rI|#-#%HDkPNDiA4@jHoYJcDQ1MB1zkz8pm6+>>=co+IsY$YY*^8d1uL zkJ>HgwT%F?R}xqE@lTf>ikDi8aKfbV6VIHsy9=~}u3pqSlaoR!brFTHQ~D&=j`_=2 z{{_#V4X*6&eIKM2cSNMbux?ti-T>*L!+zP)%@F&AToo2YpHWdJVX~q8UuOOpl=1R!^qM;9f3W^%gKfV$ zz%LUR!aZ+LADrhK$)IumsUzbe^S`u&iAF2fnH99o8){i7CRDUOmbCI>Hx4VVkXV6gekK1oZK8!ycXvJ;5hI%-H8c`%!K7+~4a8K_#)AK~@J8sJv8xl9>vm z0wa73wnZh|C)gY{HeTd?E}P5w?OTIrkxr*0n{`rm6FS4IwG)~<%g$3$N%U~%_WU1{ zA#(4^ZWp86de3@3p}nvEezN0c@g`s74Vu7L{QZ;{R^aNA{&%NRa81tbjZ}oyW2#lN zh#Q#W)#d?UrfzPr8pV1f`;Qgu5b;IlF2?>uPx713${W=~`(J~l3 z!%-G9MN{8gEAic$tmp49QSvPCLc&;`)Qt+yad=jw;$}#K*A#@j2OCVGI9lGKebX+Y zGcCKcD2uDLN+@^iU(^-x;8?ai>;TrBtOgK)f|Ddw`KcxRAW;Cw*DnmClHUZt-(*gh z)B_u0X)umW=glX-690=x-R?`2=Tg{$Zuw5k?tB^Duf(;d!fUtN&fhH7D*{QnWOE_a zPDcxopcHFuzUjyg{($T&8qLW@Dk>TIVC06;NdLp7Z|OskU-$D&3omBEb^0VfJ2t!^ zCa544<>ofuXNuyWexdj?MamPO_mz{Givi8->1vK(QsEjF9t|dcieE=w-WbWbj;z2G zf$3FmTG5pzgXd4&68GFo)nbcTq^YhJ0sQn2qsTMSa~lg<*$E|6D{(mu6cekKkm%B} z2CIL!6R2#XaquYlmoc9xFE{+!-^No|SvBePfe~do`rvq79}nyk%|@h1XuWe)-bc-2 z1earoSLOmLCc`(2+`VELj!CWIc+IO6hZ7Up2qCdggnoTV&r`ezcyyz#?ChCq`Wwu9 zKq%UXEE^5~Ut#&^%R=30@B1M)m~zdzzRD0^tq+T$@z2t&`KHh4K$*@UcZRe1H^h?# z1hY-4Znr`J4`m8(H9Ywf^HDX?&4gUmeHI3hD}cgBb80w$_lEM|o30NqF3_0~7VW?# z{zp}Dc)hFw4G0ByHsw>6ffuej_A?Ma9Ae*CIhAoAQhdDS_QiM#(B?3TCh%MJ#Tu&)5>K$0Yw?#> zS4K7lK?}XtI?6VdQ{IBL>iHK1Pc*}U(hAzu8u5QOT_H~mQ+LzUcN?j&0;DN5=kVs8 z##~s1{X}~NxMLRv+-eBIu{85ylh?9qAyjz}U2=wZ7|00N`)a+8{2lL~vI#^=;xm+l zEt+fMm_9ADEq;kT* zI1fjb=M841qGPd<1g>A07+XTJ<5qt>&EXLpB@VVWo2bJ={z|&OiyJ2@jNj&NwSlEe z-TmQ^K94`vib|G~W_Sd532AVvb8vCtOULT$E;K%XI;DOuOg~b80nR@n&bWeDP&!stg4~w8C$No_blmZbxYAC;QU<%M zc6XbkZ`?*{^Rhp+mvQkGmG3T#Z0rBj4|-oXxGr+zpoQ?RorrJ)TW0Uhe`QqP`Z?Dx zC*uBJ)@tIkXm9sPL*}}Ezw>q?W50fMOjZf4_UA+I88ZZikA0u@5K!9*X12mIdOZQ? zHSPg#W!mrMc#GRtq#{Zm07sa1;5E2=bFPI<22nRSM!4Eycz5C!naEXf4*#8;Hx2`; zkb}6|5!bTrq#x$11@9}N<>stDo$D3Q_Q425OjZU_t`qGE;sqt)!d|fdW7XJ3+CYWh|Va0d4=y#KWvj5T6KF4 z3JMdVYuWf}>B#PnA4d=LLgqR*zJM8j03j+M2OT5moFz{BYZ)s_lOBDgFcwFJI$d`| z_I(h@s9xXqRQ9<})XX(5?>ytxLC>XP=Jj7X$*?s>Y{fFu(**8i@r413qKA}DSgVzP zO4o$g9l~-rYb41+I4+G2lJAAshHovZ88nT|}VO;00 zT}gXK#~kcUtAYO^JbS05Vut$s_C|Pp(3=5?&0hADS4L9_5 z5uykf+va2xk%c}uL#dQ1PDC*x_Yc37vufUHn zSg3x(aa%yTR1LOXCWD4&n#v1S|I*jobFD-8l_?osdU1+j`bxU|?Zb&>)MD0R=qm}4 zhr4=7XQ+o!NPMY*9iYjj;-G^&))Le&;)+^`KsgdRzL!BdnSmqYSZ^E;q5i_;6?Eu8 z>YRIFncV@onKO91DUU%JQDhhq>8eHWZnQ|UhCZB!pkaO8@(+u}l9tD6kaGuX~(4fs0E zVGhr%;a{sv!cK zB2^R^5!(v7!Nm5S85f{N3EOt4tLBqa@I;;lGdz|HbgwZBswYw6TK9GbFs^*t9Sq8P zh}`9~!o@f$9ZqZOx2dvYUrJ`waC9(O&)IGDaU)!LFNZYt#W44Y7Yq3S{R2U6KM}Z& z@MdBIn(P{Y+n#$*;&Ftcli+e;l=*%Y47yXx%g|l8nHln|H$HJUzj0e-O(kWeF2{S7 z7!Doi`Ge)OLT50wZg<1&$|QhG`^zDA$kI2?Rrb`*&>+el`@7}ARb z)t-<^yDOeiRZFcu*NyWOcADL4F$+ir_GnRotm zLP|=|)di}TA#ag|-{4GLr0{5UI-Qx>m!1GRb-dYbIMOa}>y&kX`o~02LzeMY0((CD z`?@3V&p*}CE5s25@jxNg!_)z2J=Crfcf+qtG7Qm#6UUJjMBHHq(y_wC! zo(LsKrlav|``W2GY)ASm=MkmwD(c; zd$W9wZJ?t?-Zq3$*>&w07g!~)@HQW!04dc7Y4TtJ2SM_Eje8Iux-Xw*?_Gfn#vfg5 zYE`hF+X>e%Y$vM>oAVWAR4x0f+%r#yYzF7mc*WbG(!~ZwYm%5U{li@h8~k*k)y*$v z_@{~xr*E5QZ7efFmma)--Pq!6NU_a7&1EB%rMIQdbF?lSQs3_d4sM&5bxJ8!h1O~! zJe*5T+P$Z4ILgxF{IGYCCCyA~IOrUpo?bYHIwdP~IX4Amv|U3sA#jhANrT z8xhbMJXIej3=Lnj)t@7T7h5s^5HB;L{?;j|Tm`D`-IN8*dk-}eMwLnDIu6pbs--!1 zr1XD5TKnF?d4Gr0tM{p1M)G3+{9Bbee%$3T!`MO`buTKaiLMHC``{>ZtGR`N7Ky!Wu6%|pRfKZhX9Pr_W>e%OS+C@uuKiF=J7~mwR@yT z=B7#8v==0_#+X1`h)aaBf2oXEF_#Hv3d$9mIje{P`&b6P^oI*OCwQgupR)ri2Z;F_LoQ`H z8}wCaK?Ac?V)Ajy+qFEeb! zGC=E`i~g)Dr*}S8UpBJS57*}WGbWb5B}Zov%gg$f8ImWb+3g<)BX|uCPA9J*ZPtum zw_?}Jb-X@Gvd-x>N6&BITMSM9^!=W3ZmrXVMtxn&weCl8v%V3PPp3WcY|v>B8YWiX=ym50qG(O8dmC3l&PaUg51S(R7KKft;mIq zW>oikAz#lBBDQOMther_@68*5TZsyCe? zPDWZyXzn5rhU~#n3k!F`9RHXdC}_LspiBH%KG|8U=!%_A;ZPV4EqotQET#~V8`PdQ~qU6;u`2ZJ4 zeLfb|=3Wz7B~MiyHM`i(aQ@@{VhLJHJip(1WhS{KKuwyDY=yw6+s}w#*fbuwJK4rtAyRHrIav+yh2YPXych36B^@Xho zQ)L7D^6iH8&c0>ZOLisrpo;K#fc5*FfN0`0@-u>a28cr2O zpRd7?i}R0%YgvoGxuL>kPlu{&>;LF>r`4$ zyKSa(4XwQcLg)E<5R4?CQpnB@)zlj_8OuEqhxmUaH5*@Bi2JetPYxcLmS$FFV!Doz zIZUDI?NhI4vWiL|Zz?vuPD^{(F8yNE?*4@wmc6jr+62LzAb&_66uNJdT@kSSdF7iB>vHFX z>e?gp5p3<>Mv(Pjp3lmp0X{N#`)sYiAG5bgcnkSn)@|pqy-$8n!~wvAUomzgwC=4(t7I7PPbtWk4uZ%+Hb8T8?nTAhzpP-1kdx`P?Y5y{ ztdOx0Y-OX2xQ=qdf$7e^BZE8~t8TyOISUOFC4c8=s~47}*Msj=KK%qFt%5Pov#ChA zH7=2b#>TB7gB4dRoX*Et{i;wnFBg{KQ2d7@4Tj{g~ z`%H2>-nPPGdtV<~BH=)gV+-dO$V<^}k~y~&9EJT>Ds8kWRn~@?MCtB^=&lPfdu)P` z0{3NzZvSNyp%^Ee!+RP!g`ilVL8gH5dNoJd!K25RqD7EWULE+%od z-`isQACUuSuxqY3+xHEZxuT`;GW()ED#+_Kn>0IR+4rbvG`ym11$ich?=Sv=Q`@`UHat!oD=L@?RPYDP8sF8pLkBZXCOS|!~*UW z_iUso9zv5OE424CHLJF*^I~R}oBH*usVY814mtbONDs2#5akw_WuG{Yue>N@EWJ#$ ztZ!T>Uf!i)zMQkdGa8ia>!PrE^o3+N5V|lQDSVjo)o-vPnX6L2j>295cV$ zfX@|I(v`O(((B#o2`cK&5tfeDK35y^pc^JtBD?{l;xwmO$B1hZ{}T2d*_;VUIGi-W zAvh44vNQhtevL1XVY{&YBHb#jJzw}3mh$5f=P~PHg0EI$d}4gh>Y*%oawVgXKLV8q zDgjfV{G`Kj-kO4YOd><0G3EYXX>`-1(`tZ}MTHJ=FWA*^io?J%BuL2b4HzMD%DCKQz>47?`|j&4=`&-B z#5Usd)EK$*u(IUNV)o~1we&7;&&iHiN7}gjGzd*YpwAoEcQ>pQ@<+Y7QO^1D4om}4 z++(VXdFnjvJXeL~ro%lFFkZ>S?Ex#(dlg0ox+~jjSgv2eFM%)`u#Hd_YP_wfuUcH!VH(4ukbRvU?lT)KMo{{etW zX?zl@?q+Z(8fLA1f2^z=> zG$mmGCqtXn`wX%%}6E#Hg3uGk_c04S( z^lQIqp;l<1rH*P+&`fej{vXvGy^7A*%Dw);_N_t@2V!dr$+>V1XI|VA84ym*x*#mf z@EOj#1`lU}Sk7n^0pvLE*5<^d?1FTRj zu@x^dg!MSgL~{+U6hJ(s+ub6I02|Xs{8W{&i~wsp0KyB#`yPL~Ydy*``G2bgQT?>8 zu%g4VG6*p~8gGFYw7>2aoa(2dAAkKO=UxOop9ZMPTX1Yb6}zA4&JygtQkT?La99qs z{I00Po_J1v&wUNpp1-%wQN1LVLWs)M#iCa~SO5JsMCziYw;dUNrvR+5v$?XU)*XP@ z7Z!UYeG@QGldR+bb8(l3D@QrkO+**B_Q&9OMCLv0BjU+KHtD#0C6b_6!pwVJE$uD{ z!1plJ9DL)PLI_*`iUASan1uHhdT`HTl+ddeVbS44^DBr})G_x22etN zHkpH_WR!ycq5SJQQmYq_qgQX5T`KoLDuxA>xBh2LG;_*~qS8p?golY?nD8716Kn7k8^{kG|S~~O4 zD(FxYXi~uA^1HemeFiqwVvvcLVH3*iM(a>O1|7Q}lZlw4ug6H!Jzt4DDTW5*+$tW_ zav~!xy6oiRegn>O)?lL`g??IR202z^PiJxJZIbm{o}FZEDvjo4;90mN)YeK(#%Pb< zst*l`Jy%xx@-QbduCGi7Hh6aQePBjL3Qh@sZ0P=JCR-G4;JO}zacQ)`Gr*wf*>dd5 z9g3H(3AzQt>fJ(IJl2TwE18~G`DD$N1Tw$-XDS=py(5GJM!7#>3L*xoM5AE`Qw_aV zYEHiXo<1dSJ1=SmB-G1j0kol~sujI1NkYR2oYz0y`6D$w=gZGb|3sY?`FkUiGi5|7 z*Wa=B$QOxd{LtRnDID08{o>PSxsGW>&=1Wdc`A~f%_f?m8BFSoqqh)oPMtM zGosfz^F|SNSJg>gncp(tAEmYxa|>hen+^k~&q~bu4$mNUcG69N0XxjtnXYG3HTr3h zc?I2tw6UwYM^?HENv@o*gf#1~Xf6kT(t7`{2Xz!k z;b>gXB$KTFx=e5YlWWJp8Y`u*xC`Z&Q(ZCs*Jjr!%)IBQAD&ab=LM}I8; zg7lOl?+DG36EKxnF)Ks)m{}_}*SruaXM3o|y&^o>&A@=CATuKrg!lXe_rnRx<$j7Ju5x|n($Bh^t$2sbBU#>lwZdr!GV5AWnN^N z{Vu#q0e|Ixt0Ux3w+7^$2HfzzEPZRFVYGyj!sGQ7&Rlj?w@V&~ln#MOV@M3>An0y4 zmnX9O@N67EOTNma^=eq!exRa|@J_{va0S-^u&mvBc7JzyG)Y5XbGRqxefmHlabqd! zr43yu6IF9S9K0M5F_7w?ZY|J$93ln^zV zKK5rtLC84D5m>2$4xTA}Xspxsd;R`nckSqf%UwjMEpcNy*O^qy)j7?$ zCfu0DduP0Qx>~ys85f-7TY7_xM|{|{K014=sgQ0u{3n8*^l#p!wzf?RGD6gD&{t0T z-oI%@r98cNFY9G@IjCj_#5voK6BC(@el6?4Ywn8vQsDOzruiM8oTg7OZ2(^N%Lb^{ zp-b%p?)f`DHNZM7>%%!T_jjXQw+vl(>bE<$pmFN7F#65|y5A2D%TrPse;bPuIDZ+XWOh*ww4SEgqBQ4(V&EI;qfp>3xi{Izy@jJ zF0m=R-Ftx`_b!Ui_=Ehikr-@>bJon|a@9Or8(Wu&p#}QwT;Yx0sfSEJDao-cibI!f z+NJM%jZ?wSCU9+DLDBBy_aBLRDyn>PX$9CWmFk(Wd|ilL;)1*uSWcQUnUYoKXoG`M zg@;03W5&kyZ_`xe*ioK1m30e95Gr=4^SpPL<`tRH$gqsIz+Rjuko?+$Ah03w0K7CU zB>n?;V{&7%z>^zE^T9g1@(1JUn@#vaUT}6nOk7|^hicK${lmCXA@>v3r@?WJr_?9k zg7TE_HI8Fx{*CR8gI{3r^}{t%`!|960}a(rh@~brzqw9lyZnVm)qIz&Pr_`CP>DBE z(ua9d_$8%@z`gTKYyDpWJ*Jaz%FMO+w|GSs*Th{K^>~c`2zMAhyM0yCO!~@hpDpax z?`P{8E1I=)rvfxt8^`>?(-}YWm`}9c)evGMx&JzB^*;3GKGQ4u@C*%uVCvQD|0o~A z)w{2K%fWgyj=`k7)NLDfNhW-m;bx#>iWh-kIa)e0G-@f9*%+)$&XUG!vSlx~az$-X zf>;-VTu+Q~M7MmjBh`8+{od1g5{C%OB!@Zn+6t6bjw?&@M^k>d9yM-bZpZQh5jF5< ziUdWNR)SI9{nP=A=xBSWiq4dRSpE&)A>8hNPC#%G7!;H_!Y(9Tt%JcXx+Z8rH#@He z(9T8X=mzgi*+!Mm%ibsiAZKJNEj(ke-UlB_R z{L)i7zJA0=ouL$#c_Nh7+11KOVZrs$@-Rw?F~i!!E(awj504p8i=&O{T$A@{rOn;; zOz_ytZ}k9E=MOw!YnikvQ>B9f(j{_S*mN9&6dn2J0znSk*Xf{`Em5A97b9I|H-G;& zw8TjsN*mq44SG)AA_#m*kTMo^2kJn^1$=rW;( z&RnlvY4I1$^!Zb7=y53|L6aRLgY3i?_$Bq!<>nMBpYqN*-WetRXVO3k-Lt1Qx(Swz zb6{tj2yhlZx#=~*lvPJzZ@vcHY~2>y@dx{@EoJ<(X*wt92%o!orz|cQ(^-m!dHQbF zRx^R;>i{iB)3K}no>JcaE|0Aed$gcetN7z!3TI`{mNy+4A+OcPcAE$QN}XQvzw}{0 z$DLJ)867-}V~lT1tT;SR8_q02BFey+8Esj5q|Yr5*rWPI?oG0ld$skoJyV#rEx4h} zqp2}p!XoqDQHiAUavYXEm}xmK&MWgDxauOA9bi;9&%C)Sxl%}*+xJPX0z4GTSHE6B zd)^>LJd|SF9y|LOA6Z}8ZhwS))Qt_1Tm_8}aiR#$;*=X6m*%|5T}R-gDqf#y%{5W? z+~>qPl+0(0dIZa+Tb{d$L|fKO{{9+rN1!YTR~zh6N69 zPo6J<_ro?@a2&1GR&Uscsn&Ap_X#N10q7y}l@tI7PHv@K6SxrZZAd2BmV2?GfwE@2dqFH`JaGaC0B2xkk?vOS=T-?jQ7m zO?gy&J5t*v{f~gB-*XFjMM3B%>g^rewR_Ei7d>yRFK)+36k^VCwJiZnW%q{n2Dh? zW~RauP@aQzDJdR6ycbTL!F!5SHGz}KCvJ1xiQ8%ckrH{SR`l)L9&vBODxwQsad{`4 z{3sO$-yYl2fa=CCX*{*>dX(&8PplN=BY^=L&>pHUW2=fBtv2PVGOdCet_)5_sY1_J_ zI@kpxv-C*2+mRTq5_Ts~#XzP^?>hyFT|Qsx(}Q-!SJu8x@6M<%Q?@Oi-HXdCy1D4A zvX-_#3jVO?Yx|als^XYXihyLWvC(PR4=BW0D<_vW48B;jd0y7}+9xmCnzE{5i22yO z4_~?TKC+n~yz~7OG=P1;7yLXQ>L5V{pfc$b(g~+E1c;M!BDDiQjhfs}GI(*U+GRF5 z5_@DG%H3Z?^0ihlSvF`9d#TBvyI|QmJ{s24zLoi?|2` zD@!*6@qK(xab{Z5Bu|m3C#%h~pG5}@YYh+Wci8KGz-C*l4_#VQ(+qvlf?k~2;*4SI zK<8XXRTz(PC*uuta6e#P7)KEUL6ev=Ie|l?%Uq0*Lda{J$&o&N^~?rBTSh9?fd=I- zK&be_1IcDQb(U`i4qzor@#{%fz7m0~VKdUS=CYc$wNGk*P7C$sEaPhevEv7qbRGMV zi5~$ZFD4%;(f6{EtnvzfbIvzC!DrxF!lLReX^|PeGFZT<8E1f85U~*8#Gi?z+1-LB z<^G5TBudjGjAr|-;z-37iWA9vCJ`9WUDI+kk}lA<>Rmsj!t8T%j}Z@1edcO$WbM?b z4x^#`v%7kTt7QfN0 zdiY>R0I}b$<)fvJAexnv5}+#nU4`eqx4g_VNi=KwP67x~`RW<0tO3OmeE}pvt7WG^ zmNK|$haV>=%Ls$oUh1AF-kG0c*xn-F{G0yygZsV}N}?^Q;ed)gv7mgKAnH#NJJ5&b zA^*MmaEa$2d={hFE~4rKx>ZWKZ<_n zs@qhiOR<^bcHa2m^UxN3t28>I6Kug1=X5wuj_hj?W}88nSa|ZuDcgjJsr}FCfld4* zx2XSpl0X$-#)HE9F<<`QGYVSHOI|VmjQM}s1>a9E-?x*fE?nv2H;`5c%J_AZ@si=jW%!=biXF%GG0JcO{ zz_t>b{pDJ_(y&d1k;YH3`;}>UO`QEic)}s%>sIA(b=*766-uL%AA*ohrG>Vx*Xe^9 z!TR9%Zsn_Oo`)&YBjyCh_Bbm;?_No*XZODfDHJm_q5Y%K_=iGs|0rbp#F>Qll90He zOVkJrzYg>?fnu8E0B|t!mWUBOj-o?2{f4FEL+vS7>=>*$QWr9f2cpI+*`NGL8X|}VFF{1xZT76x#yxS4^J0Qzi9 zZ+aFank8e@bJO`9Rn^6jawm8#?dnW?X?Yf__Kl&o3|3*I>&m+5O?#=`Y;nV~VeV>2p%)#MS3P zj*$(H()<;k{Dw`L_*~ew3TXbe_q1X~sH`2j-zK0N+n3GI@pGoAG`~MF5yWzA@AqMx zYO0r`W%vjo=X&6^reA7sXXNBehN0e+MLA~J=Xa1ZgKZN%DTW~^YSK>fRXhX`&T5~E zdX8efQO+xU(0!9O-Uq_eKNHGkwgZ#GCLpsyTY{vr_DkpvJ4V(8HbAK1>I=QLvJT;? z91y+1GYo4dn~ab?)~Aa(C#7Eu$IY`?7mIu!NIk3UU^p#2eW>iXR^Il?Yuo+{$LxlQ zkJbCRcZjfYA_O>p=Qxg&oxj9nWQ}^o*ZpAnJ%8D8C$WFx1wVJfd%j$<>0vu!y&jU% z5I#3n>}C|_CO@nk(0iMv8;A5M?N{)B!YN*=O^GrIH$0ZK9Llupcwbp@m`eD5Uz}~m z<~405lFVfY8BFLN$&M*_5o4?_VKTv$2)1u;m{e;{!R6ksVoTXk(=r22FAy;rT&^7q zrEsMoJ=PA-{mB|87+FKwO9yqvhNL7?vR9VduiM|oFBCkde8_!bxvZZoW@~9KWHJRS z=MD`Yjn4H`3Q;;zBU4hF(ij$aM@$5+={%VNbLh4A+P}R4sP4q$mXp%ukWhReo6M5x z5?a+;U9k*V-p7zLVtNDV+)R(TSO&+8jKOr$sJ~FqUvqE zX~r^03-87L^9z<6V>tcEAv?)jCK#1_X{Nx239m?I!=R60vD15%@T0sDV|4Px$c@un zjWQ1eg6%!a-3apf95?6ypL0)mat2qlnd1akj~gWlPsU{5@wA$i zJ<#+?aXVpfebG88R#1}np=Q$**25u*+GnJRSN&OYBgOb2Vx4YFqmyW6r-0$26by(S zom&*35PY{>0NYh@M(uSwW*q!AAUqV$?Ad#UELZd_71XXj0iP}zca9(>t#mZjjlGOi z2ERpAo~e!QF1EETY3uHnXk}M^a2;iQEDP^hn7vA+OV@2v5vhil%lS)Q${s6c>Q2iC z<$dA5M*us9ZuSOQ<%<(Ht{aHHd-1Uky8CR3qRSQQ;l19O76fbUy8>@Q$UMZB_^Su6D2dS`$z|Seyp*EW&tN5!_!DSLV=%hQVMdsN~*%r(s);Kn4D#jmtLk$W6KSHXCZ)r z1+qXK_J*q5rPCaNyWl0)#>xQ9Bi@dj!8R`eCK~zWx4^x@I9ga+Ryg*&@JmU_Y^5fD zs?K;6c{cF{WlSHXaX7d1>epcoUu&&!Bgei(5c1Kz`Xb}Wr$M%6>44VnsUr)b#F|#4 zWsa6F;E~4Fn~XcFVDK>}@zq(e4X@Wzo%!+{J^F5P;#mnBAp@^9&lwGGzUkWjdYHpL zmCv1vlD@`)o}wS)j*anIc1NvcE`hg)yi5eiiFM`QB3gI*4=CF-|Kh>8RZJ zIpcb3fr@X@4R`{La&}`}rs!ENh`H(v@XE^_c@3DZ{jy#MnFQ)+EE-!onpE+AukQ1D zA6Rr56ZVE2uMF-8FT8t}c~O2N%ib8*WDHwMeP?|)(7I^UvR zPId ztCwXwN%lahyf7fvM$N%s^4CybobEoCbygC;kf7wH?$CL7K)u2U_AO0UfMESszoQ-k zQ9t7duj8ssGNZ6sE8Y`JnV7((T6$b;%Ot-nbf&P=;_6T6lI|{C4cD4`#z}_MlPTI8zyGY#eic_%;xMKiG>BwX+rc9v56o{qyu9 zeDtdBs>$GKeL0Iil4D;ZDDt7ia?#n}FjcFtTN?+H&NO9o!DquzhYf2c=2vUYUV&$8 z++__v(b<%C`?hQc|GYJ=3fEcgct{5oZK$1m)9i}jp6S}&x?}q`;|DHLOrKevRp zmiNAvop*V(0{Y6m*YgIwG&d#JD+Rka=}4XJh}ndavQbzFaNZU=aR8P%A|va|e-3yi zzYacStpzZ6xC=(#hE(1b{%i#|MAhAt8E`oc-2966K>r7zd1Gsdn%IvSD{q>OAA9ue zCQYaB{-UVvzJ-`Q$&YHV;qRKTD3fucf$)?u%?nZpUA{Z!;Pu~j-C_-aej(EfbZ4wV z-wBGUUu+2B_0((7a<-R1>q4d#)kl#1fb-8n+GlPj^+QA7Pu@Kc+XH?<1Q?p?N=kRT z<9M@{GyTdftteQ}5~qK1{W@!V0<{n&5wn1-YPLEdWaRkrgHQ>qi~kLfwqW5>q4}ve zBgCQw7Zhhcs>;g9-!tBBma4Ifr)9|0i26%mF`U3I<^Gcl#~ZX1+04q5hfQ%f_Niv~ z---Q)G2tSqvm|I!?Y1?6xIGPq;%5-GB)Y=g=%^nu5huKY_6=mFS3_`)b}+ZQ#^jiN z<8+wPA<4y+rsa17qca~LDX`C7;~M*_NJO_l+r;#u+FK!6@wr!5RQjC9%${53 zH9l}Dc)BY+_&Ix+U~r*owdqGLpb`*&YrzCiG?wAs09`C3Mp%Jfl&?3AL||9%e*rzK zyBR~xtHw)f5EDRG;)}p*y)Xy7wZLh=^%H?lHY79iG!xd3cj*F)E{78xB3?s{fW2;} zwxZRSQC&8f50>6P_KIj`+tdrTW2v2i=ybr?JzS^$^V{5O|L4{**;|p77{oaot)&Rb zw2QT1m+HO5l7CE9!iw|xla$Ps>vrtQJyu)_;K?z58nTh&ER#rsr4#(jqDqW# z_q#vm`K?>jmcc+w%M#Cb^G!E9`R4;GzvE2q^P0Pu{PR2cr(S(~jO@{}I9xtuU1#5YP78eReW-b;Sz;*Gq z9b%j1e17bePDtC=i?;QM2nXd-<2Q;4mY`xcJijMPgwT&gM!?vUW2l2zuPvrgbxK@?Y_C8(2P|1Q$LG)cw?)!+%d~D-YkLSm!A$v zy3E5RFf4yXJvz% zM_w2Wlp9NxEAsi53(y|Lq?10Rd(f~0d>|Zy!a_RtmS*PK*3Q7@(nOZ>+IC!a*-fHP z>uCI*#K`J%brLAATSF9o$=m6DV_adB-XV2(=h-bsbP#CoV`O({S5q6z>Uv>EC1`t> z#d>nfS4R|3pAuXwFo7*psj#@T#;JxuB=U2{tINTKpn5s)r}G~sU#T?0%NUEa#d7@y z$G@uLmc9w-k1H<9}XqRf$~?^blW5Id^uRV~WYhLb}^ z|2nvxJKo4I*p640=9nna(8w>Y?Y%0aJ>NlL{rCmCQ5irRRNpA9Nt@kV2^iX{G-a;E z!TO-n+>)vx;J!K6l@&Fe`4xA$6ODDCm_!ZOOW_}Fig$wnCk6h;?dyJk$N95|Xq3@d zSMO|K4$}q&rt9Oi$h~``&X1W=a`0%pVd`s-G$$yL+SW>``DHnWzE_@+Gt;fma$_bh zJqYTp*BIxWtihH^k27CIUc(7BZ}sZT>nZ*0d!KwpZJ&H9;q{rO+XZ~(35V|WqLz33 zEcPJ_Sb*V~F}ve>9-Ic{V#>*@RX`m|lr)9a6gw*~3Jb}dCzif773kzbI3Jg>xs9H& z$gx#StRJOb__pe>d4jHcqNwS4PW~;>aPGOoc`@y7;z_K_cwf<*fB7c=FgyS1q?yT) zed~L4k;&zk$>>y%PUV6gTY}-aUwS*Np1%(VO2sLxUUt8XO&FG_zjOj1qOLE_TcK{# zD%5$76jy2S-iQiB_s{yA!b@CZ``45dpd&c%PPRfP59}-_-X_W4 zX43xIP-Lsj_vA7}J*R&KmRn*+&prYu1Uc~{L;{^X7w?5|4^mGR0g)`5bC(*0rt5{b z67CzXa1cxz(}BgrUh;3->UHP0)ZnL4DI0sYa|IERp1&|00{lrx&!fxV?-htN;nUYA zCWA{c_x3%s70-$!lZ{U)bfDArHTSS_ndA zm9FG}`eY;f&cEyQz7gtPkIjzy;d$%a^FJ%{VlTo3aDT>>)bf^Pr_LWePvOVQ!d3(U zx1D_U7Kr~Bb8i(E*Av7GB1s6r0tC0<2^xaiKyW7ncXxNU;0__UB@iG4cNyH>eSpCS zcbgexf&aaC_kQ2rhke`g)HCOt>8kGPs$W-C*UVR&(>kk@u|KRhb{la^$oOlSjKoO- z&)M1xR(p1He!px&_X|cX5)SjY_EMiNwl!mZXku2zgz9O1_j@omQzXdYD@O@6(=1=o z+IA_&G}to3+#BI_*U$EOM3KduDrF{w8&2Rb_ogdOc^S){{!b}}OR~MT{x9544ay5O zfO)~4x4heD)`wU?M(`#16l4)o)ow2nxcq0~QKA1tITyHfiUkUy&#e)~xn{IMfm2ol zb#?Z%tENl7S}b1wj!SHRZs`NTfccgbTiuF`3o$c!gk~GG=6~>^v^1`Sz{If0JZo+o zBanlOK6aRH7VL59dniMACrwaDv@k9@lXcrD8erXXFx=Zc>P8Dm7jM8H-^^Dd-7k;m z9d9kb+6rd(TlMvz`w>JKyd*4nth}&wSXKOd)Vg$cBdo$pJGIFoZs2Mq_u~jZ2yv1DaZ;#9#xSEV;5UFzBOp4{S;x7<|Nb=3mdLz(5V<+-=1Hom4?B_x$j=%?v-rYS1x zn?iYgg|@MDmiF!)ZuyszBfDD3{2jz*d+mMlLvC4IrCE0ky2J&3Iu?Gj#FzyW%0gUQ ztW~Ef@vw&7q1$q~L=>)}_v#%R!SI?rd2xL%@6-Ujg8DNoZ`bnG4M>J5yJxy3N9s38 zAv>>qec8+{x6ULcSC%uo(;GwFFjccW3hphx+tLN^=$O`&Erp5#PS;hQDaJUA`quNW zN9qNvwgT4ZnP*9f^}nWo$(ozN5rI>3=VshJf*m!ja>uiEp^U-ig+aHLbl=EYq<5Ie zjX!l5Om*=VjqLhbr|Ehr(`R(Km&%sz%91Ezu54cKB)cJ4Xe3TOFnzwJR1Mxklg_JK~hNj(n?}=iXN|KC!J}Sd>*9FJ0w_H}) zl3f1XZPWMZ-@e|^TWn#q&4R$@T(#rvVbhSNhnn3|mCR0LxoSK(YW84IhF@^*A>UkJ z_Tui4YR-*{f0NDJ@=tm0yMM^m=2}BWereUrx-#&Us?X=Fk2rw4waz$&zHQJqt@!x( zDZUXA@OvXK^J+7O$pqT4KW-Hhxgz*;!nx_}U2U(yI_`RwxpB0Y3(PAzI2ZN$Afxwh zu|zR9PHqI9z-ri@heENMx}ucFJIYu`V59l;{y34UMW^Vey_mn5dRLhBo^$)-du;nX z7B5s~vw8kV76v&)wMKgh{)?9tVsJg2eyfJQGzMCTCI1q=Q{yGlT*vE7yu3Fl8SO>J zCuqU37R#*z3f6A^s5}atwJcVG?(__hwI&zJe)MNCwRreB)^tTHUpBeQg5FX_+`{%Q z<`sV2#EHWQkW?4Y(UiTS3~l|xH}r_hl^X(?u|@`f-AyB=_sx|-2#^6&Etb;O^U))` z73U&-tXHkDRw3(O ztaM&V3&W^eL6wz8w1?ilV=RaJG&dxr`{UXwW`0T9SX{oAUax)pbgxazSdauBEry+$ z04t_$sM}(E`%A{#?TI7(t~nvjcpPnstL2b)nfKxQ<&nzjtau-l)hWF2V<%2hyB=%y z`1$T=@+ox%=?f@ML=d@H?j7zv#wOQ4VS=k8AuTS+JK$PWsLS zj(@u)hJQwsYt6p17FzEy`sG0`8>ZWLJPDMcW_S_20lxFUIuZc<+q-|bVN9bfM*GZx`NiGilYR)=aA%D8g+mi<9hY)$X)x8O3e!R9=XGsmpyG{_Eg% zKb7~V_msiG16*k)$+!2Z2Wgx%FHY`!1bn2nSG5T1S*$ zA6nd1QB+*wv~Drfh_{`(8E8j{r8C#cf})jx79O(V4nU_ScU; zYrJEmt3#z>Y=t@lu7a#bQvrrk0M}DT^D3(eVx1Ub!%p$Qq273h;L%bCaq=XFVb~@nXaDIOpwS zq6KzBlT!p8j@|5t*Nco1iTVhN%r3NXak0m%J4coy;gi!cavP+vLwJKwknQ>FKe4*G z5ibmE#1fM+$b!Qkum1cZGpYpt0L>{0qw32pv+7T#y`Vqa@HD_*3NCG-0)Yp>?$P_H zOv~YPHx%Q(D`VJqWMRJQf@qV2`2@N2)^MLCQt&mN{YXR3u6?OVPYJwof$8>sB!m;- z?Wan7bWxtlHcOCUJATJBpR7k)r(ST;#r2oM7-hlZ1o?d>xwYaGxtl2etfviU+S`@a`5!N=E?=Nz1;7!ev@cD3=jeIQXVlz=i3U-|6t;`RQIHh1wfejK zvwLBeKq$))V$J5-9N3gYzrx2I-|kwoRqyI^Tnk5BT3n3r_Ps|FGXHF|+D3I(k-md< z{The&UfcX(k-(fAIo8T}?8_nr2MSZK;%tE#7e4yd#lc)GAwv$~BhPZ>=dqU6OA=dO zoqRCnQm@*?sy9L|$+F*C=52d%-w{PY_TClhJiM7AaDDPVS{S&N2)$gTM7Npa+2II3 zC!0=*qWyg#7dVkRd;@Oo0lz{HdWiF6eMl@lH>%y(>8Qx*@J_J$x1Y8No4fX zp=UqrdF~h5QU~6u$+zJ#8rXPZaI5PUJoe&J9C;mz6T z*~qNt_}znr3fIJ95Pgc@8y?MDyI+<8=P%ygZU*pT_s5*x8CDw5v@M$3VcJ8HBpzNl zpK6|+{~owJPjweeU98(~hd&^YzpwO(x)@h~W*hd6HsOQA(W}Mvzb@!@mQxx0fi42? z_ybyaHxXwUdK!Y{ibYR_zew7V`K#B`vt^miQXstf33#S66D5howrad+YPtQJo3FZ~ zdoBMtKL7#8xP-&rmG)B*)~xE%>H(lNQ(8HB{KIO^wPP~ba$l;<1NKf}iMSt5VAWW3 zDq^yt;Y5dwyFaMSXmbAAV(M7NfSi9aQ*|yu_ni&=Ke@*Lw?ysOBkw*%c5_H^KYBVj z7Hg-4h`v^-?L7&<3PbR)(%~;?s}09P)63mWs&^bZrgM;Qx7?`ISeJS=E5sG$iZZ3a zZ7tBIfoXEQxj$VkOlj^Ec*&cTTXdfmLQ*Jz)*f_M4oT{c%~jW1wC zI+nno-6@I5hYrzU&>6O`twGB=qMOeR({f;1-15jW*64;kmQ6Yg<#XVZPJhF0MIlN8(;sPf9n3I2irvh+-!SS zAJMa`W9Z9edl%0UxrU(_pW+-_w5BQ_cxI88k8NaE7D$%@Kv^j513G=sfBOH)`M00T zM@&V~%0%|v!U5+Di-jiINr_ONd5F(xxPq>r;C)kGhd2n#P z>d)i z%CJPu-}U(b*sb{75oEPFj)bPril}d_6M&mPcisXH|=p4yd z@&h+?MC6SOL<*FuZke8C+BXIv2xe^+vKP{q?AJ?fi|-4UZaiQp8FJcp=YNBV_xYgE z^VUh)vE}EnzOJqEA6GxeI;F10>BS;)kEQ1G%&f9JXAg%h@%zhd$Ma*zfeTsI(3pDI zVlr&!oInYfQ+>{3_Vi#?RvGt}!!kt{57MxjOI7>;_d?@Ung9%JReq+cx4fI>c|nx2 zQJCce;yg^!XRnT+Ge@K(MfK@~3fKs_pqCv| zSlOL2I%#Hr1l-mL_+Z9b!S+}uvDxV#M=P+5BQ(2SL2P183%QFv)zY%8%V^(|--wu` zVSmr!XvZ;j%X_H=Otc-SvSk}-(nw5IdLC6BLp+>6tKeEx0zj8I@*D3&_?1-jJBUy6 z74`Lf_jUhqJm?#%?>&{pwSg7?t6A=#1RzBurDT4 z-`IdXK6C)-K%vaL6GKdi8a8lwpMyEFLt;Q6n|&F_B>$Uz~5+D|A_0sm~L#)sUu z3ym46#=j*ZzpHkN5U^J1yjU1l<{6%0{;ujQQJwHQk#pGgfg2`tsn;&1POLUBczZ!k zk5a}pG4lqTa^%2$!%G-rX=T9kY7w-@)EmCRFO>Tj3`|hpZf71DYhB#_I+#i zfyD`!6?C)T?2S9C+a#ta>SOvhrvHy|7}J}kej9K_CQpa ze09%)0aI0WzLhDCNLJP&Nuv`Lz4;S$;ArLQD8o9%7~a|9D2@fiNYqqG^e+C$z_ih< z|IwyJHQ}p<$W*?mq4Mn7&+qfb?Rh!Z8C_0CtzQb9GdsNNmFGIYS$5=Lf1w9S=XUno z0^!(*v3XjNrX3TU=;6;h8MgbX6<`LtXEUyL&7ACHiotpt7HW&bp~v27FefC`zRVIG z?cqt~2{|&PxceRqvGeue7ribFg6zu7Wdn)w=sRy?ii*-Yve1+2sFS0YLrS1ksX?f8 zW$ZwYTMX8>J;ynC!TrfRj6^tr22eN)S9!qqRBpCkUsZ zSlJ~2_UR_3zJ&bxmO4x_1(}ENL4q=FRQmny{%yQ%HFWFW&@voCDBvAsWz&UWM?WU8 z+v~+#vLb9rM%+K*B(4HU7^P4miHR^=8{#d2wFZ~vtwWb9ELJ>O;#4&aY$>|Vh3YGK zI{}(&w_%KdG#;*!I3NSgUe3e-2 zk1lY)1Dz-AA*yhAo2(=^FiKI#;l>Y2ot|b-_o>9S_QvWUjP{Q&N$=H56`WIz#~v8O zK%)1%Ml1eP9m?m;E{%NYMasB@3oK1OS$G@Ps3_d{H@4U9#w`zH+B^*P-c-xRLG}Av zN9(J1J0@)VT>P32?d@Y>?fThF+rsbHu^oH|Ul{Jf+ zo!fMDuWH#H=kgp~79Kx|;U=OGBT_%go})oc+WxoI=?|W`hjR`mI|6H5o1WXUCF)T25G3tb-sWSB^=PJ10YI~R;QJ3Nkm2fuJByyqj_G5+ zvxeI-^ztshgUt&dl?SO0e0*+;J<1zro}q+wK4!-741COCMx*Wqoml)J(2?2l9+jT< zVLp!rNhTAjRvhwC&G<{gPYa#eQ8*2~gnA$q&7&?4rm#pWJ5ep{jcgakOElDGSWQf0 z;@W8urh+n#VU{GHf3WQ|d#E=>RfVTHD!r2o0`m1eS0Kp;!%HPr@?5F|<=_4zXp8i* zDE8IAY<)l0DbHVSgRV6XO$S0P>?n3fHegGHT@e_ccJa}K{>_3>YNM&h=LHJGuOmmA zA4JfRPd;BB=bz$*&0~q$>3^!-QKwu4JU&pK>S~6|s=(=BP?#cFxLGxz=S)Gz_!Wpk zzJKShSG_D+YyH>nXA>}-+stdexhWNnpM0_jW?m9U9TQ0Cs}*84yPvAG~xbp%#&bwpg zt$syxZ^0f(&(R8Zy=k=Mo_G8b?}y`ptOx!<^^&tzmBbG3;s z`j(!djKW=Uara<&IT1bC#Me6+a_nT#mH0T@?ArkTC`6|1(>b9N{@F&wvhB32lbg6# zv#GNUL$6<*@H)3GQdp`=38FD3^aH+jZ(o^t&8|D;=OTeI<}%t?UPa#?9Gfwb&tHN? zxNyarmwVDnSw6@sfaiA%Hw94zd^sIz)6%AJG@F-tDPR&%=0YzYOA^xIj`m~w#{zXV zyCg%R>XH+MrY@_le!ED;X%X&{9eYMso5+=BbaJuZvsm0fh>wQR9!oJUu0!fw7E15= zNpRI(RIYEEhMoO!l;=>52kathBX%u`A$NYH31d7zCqnGkNPtEtau-Dmq^vk*rj9z@ zx>v)qS@08OGUPbg^u&PCzGan!Snc3MUlOYq{~Vw++{&6P_P*7X>A_@`N@vWPJnG|x)Q zS#y?jy8}`2y|juZz{UYczlJt7wwG{a$BK=irxuT*Mv6sxH;HW`K_|Z->{aMrghO(VlIsW0OE;|LvfnVJu>>_beKZ|gqb@Wx zm`jxD(;nP*kDQ>I;m8U(h6tFeB?$J_e`3Q-Jx@Vu0{raal0{!G)r&n~4z$KdUDhM@ z)FZyE{B$mj7I%FXqf*cy)037bb*BBOAZ2dcfCP&qQViN$v)#t5^9{w?D*dikZ4>A} zD@?*j9I72+j}zP&Tit?M!p&oe8!L6ilNyU>M19b}55D>06OED_GZc^Oyd0Dgk&(Ci zdK1Xt7gMY^h8pqdmv|41SRcE~K?Vgz?E0cGHVHwAMg^Ak%TpU1sQP7rRffDGxs27p zR}7^{5{!Trf6M?na##!{9-3JS{SaM8xb0(>ckYf!2evT(wp%n?)zu}n->e7vdm+o2 z(@u4${QJcbE@bkWwbm{2&x%izK1CP8Y7bOl>1TysT^Jaw@_1fq1cqQ?TFld6F~>}N z60fP#d2M(Qwq~RMY3;gr+?Y9_cJlHt3ng_IY4t2gGvEG&<+bpJ@apMrGoa{+8-|{} z>A85)!#6AGvtvxYGKntT@P=n3dY4?4-Wn6|gzv}T~jT`;Tmc6op`{h z^mJ6aKM0T#+HR|xM?v8PAr}I>hD*mK9GI&5Gkdw23*CQ;CYaJRyU(L?3FoFqtlNjb zuo30i*eF1QAeFw!f$V@sai?XycA{94LNiX+-23)S0YF2oau$0uHCiaaC7kS>^ z{Y`jav44>RaX61!W7W$arOs-LUHn_sbgayobQz&_eP=Y6KcisyuZnfS$Ya%xJ_CYR z?dAUNLC|V5gus!X<@t}tu$yq$55`Ftk8gjnr@booDX0h;Rm zF4|;ILKkbVXg%PQjCEtS?$s|UV4hSVL`c(;l#Yn|6JHj}^wi8eY?V9onM|#v;hi1e zxXxiHY7MutBl_EQBDcUjfk`N}RbG|IV0|CBX}>^Gb*o&F&}#X*t*v|UV}$|y+dE|Y zNJJTri#Y|4C6Q_?S@rTb2LBZQW63%S2`vh|&O>#jFIVT0m9tvVhWu~KD#zy?i-O}k z4qWY!drYEE+c}5*(hqIh0%{1x6{lkl?(uD|kIZW2K?Hb6G4vEe|2olY<+|N;ETI@Cp#oog%jVl)*E+5>t4bjAAM*r zJ0N%t^4+%(-Wo+kgtmyTU~p>9wcTuBJZjCAO|FS8_RHh@=^XbS`+ay%NOr#0Z7mT= zmr~`W-tA)#(mEmEg-Kl(HlhhgBL)%7A0{ z%d;bbMsj$h8DE`L9b}2LxBt0s)#v*+rvwRPb3x4ZYzaur&&fY@L{yR^(z+vv{ZNMX zjRN`mwDCe&tCu1hiZWVSTNjB0Nacg}QPyP{F=&-ZFdyC{K`)7gcXq+3_bXTslto&r zE~C@+&zUMysFUlnmHxZBj#m%R%?6$BndyRagDq&6zgkaPg=h|ME3i>BZe^aSFa17l*dR= zxw7PvFsi4iW>nV@>gq7j_c_^qSLn3clcU`_--`!9jouQR&sw7q1&Q^xZA`TKB>wm`Uj0+vbM-P zXP^8piv|X(I~H#+fj49Do?)N90U@yCS+5ay{R2xjy`PHX_}-xFDU772xe_G4GN+(d zN0JJ6AU#}6C0bhQ2_tE?x#=9~oFTXKo*XQPb++Y&%SvM_SSD(eBu7o&5DrlVWf^v^6 zX#b%rHi+SP!SHaIA1ohr=5dyzSM|Yg4nP1c5*Gj#yioAu$w26(4!L#8KK2?5vTJBe zi8yX!SYO5<2i#Bh^yM^aG<5dxqeV(Vl{n7z98`-TIGAP3Mwi@rE1qMIe10_AqC|Fv z(2tL-pK42w~_j(y8Ge>xWzvY-|T z)sFJo>q+|cJgd2D@1*IaKGtowCP1j2w9-3Mf^*n6th!?PrA1~wix$=J^(q=}d(zKm zh5REw^=mXs+v-o7G&5h3Iwj8VyxHgwDQJDnsZYVB(;*mY2!KA5 zKw}b6$`@J(2IDtu_QJv@2){!&e3N;E`H`yj)Qp((icWzX#zFSllUA4vDYW`C>2 zpHI{GOigaX=5m^hOoP)daZZR-6W?`S z`+CgD=~q=)=S1m=4!`qRZ_AOpk!D)P={k1)(iRm^6JQ*emdOd7fu*LYaV}Ez0}LWh zfUW&qbyzJ+o`8+=-YnH_{fG21SrP=9dH-(lDHbyp#S>=rLSth*1ukaTOU3(h!785i zGGF?BMc**+Nkl-G8yJ6Y`BErwV$vkn89S7hLHi zzdb<3o)TalrkoAE>>p3jmTjrjQ#&8wP;vuS-$J^SwTpAq7}hQm*t> zrTiWAb+@--&woy2!jfK@4)6555mkpsUF6Fyt4SaCHhY)dS`2ot)nmBej^63!_${Mz zFX6xlE9EFLnHf5*iMeP0wb(?n*Ycz4>e=xrOH1o+$scRR)S^J#uMGZvi(|yl^G**m ztuv~B`!eJ$1&OMb9jb)$UE3|=8CNa`fE82mT|}i)pfScmp$w1jBJQu8q}402i9ed} zD8i=bsrKM0TKqj#H{{?soiEu0#v&YS*ax!v53b3o>hvcrF|wnbMR9xI55m4Aqb_4H zB;j>v;8_W=K9+0^DyLBI#`*Px-vf+&1IC7eL1nJYlgGc_Jovdby}s(vXBY7q&2{WhD8*TOQ5(xW#BxqTDdbKd>QxmF)R zhNr1EAfpf%V4(-~77*GqE4kZkHX=xrgjA<}pu=J{#ALI9+Umq>XZxj6S?8UX#=^VB zOUkbEgQ5T{QFw6$_Q5!9WFNlj&ckzb!db2WQx&KB^Tv6g)@*|Ny2#kl*!7m} z@+DW(K~L@a7mua30`V4>4|q4}P^7AecBWUva>2620yc|Zqq}fIB5<6}avR*jLwd1u z>dNAMn^Uv;mUyBi$|x-EzmNxnQXg>ff%kqZ>J0BW=`&OT=g&$>l$CMkT$;wQ1X*ke z4({m*N}^iEI5cjFN%HZ3N@ zLRhH#aH2q(uTw3I*ngO^zA%=wYk|CaQ`b5+*aEHD^~3Xdz_4^9NT$h{g&c)g{M zZ#8H4{=D(wN;pbEaA*jt(KihaHGwXkU25A_ZUXt)Pp<+s5HfddU_Kad_Ol9(U8%5c z(yIcq$?e4m^nDvN9iaf~jj!Q10tUg=MIeppt@oB!A|)e0r^EP;Ki#?>5WnZli(9J` z*$kW?+CL1CniT|uqbYBLRFpT4qKP>}i_=BbvI{4JlP?+>i0Y^0uYcz?{ELWU0w#4( zhfa0-rV7$$)$Dj-e3T%t^se7%wRt?}hxx~`!%xlcf{i{)c*PH(^Oz>{(U;H{)Uw27 z_u`Oecn}LeardR1e52j8!?);=16^SBayBM986flMu*ry1d}FZQnQjU*U@DfxEX2?+)+g*ZU!lVypEtfSt+86j{P8>& z6Nsoha8}PYc;6_FJ3ki;uw{izyVJEwAIOINR5Kw~SKd5*n-woYO}(kdmW|z_jWpgQ zj|=egCJIx)6W(@PsxdnV_oG1^&!#jEb@sX6JFBLX9s$7ycX+;o$}O>kL977s(LB<@_DDzkq}p*W{^L@DQa-VW zP_T{Mc--o}J42JmsXet{X29)%5ZyZ&J+Kca0q66Rb9bjQE+fCSEo-1$Kz^%S`yJiv zv4DMKnt+|fLP71rC4ZD7d^?iIrMwS=u*fG&#ASmVon#shSGdMLDw1&-{8i)p@f>~# zc20-RF1k_;Q43t>NvMAP#znP9?2Gl0)Z6W-=tJ(UV6{D4?XOHsG^a0Yj{){yA0K4u zGzSRsqkL#TIwPY4l6iWZ8X%DJnj?PFcyA5rv*GjjesF+mqgDBxNshzXq z)%r#c=`d=R2FLLo_FdVgy0#oup}F5D02uQ<|b zuZw;Ws@NQJER;P``Da$6D%RK?xmV(Xj4PD?9N&*I_FLX_TQ9q;oI7dx9y z&okLagQ0A@%uIBbc&eJsmjpdzNVb1mZ0?C%z72L3LO(jC*3M%6M+%GU-b&;J5_W~s+pqcl>&{A&M1O*2a- z`KJuITAr7i+Cmd%OvwhoU`3O6DCy&QjfA$OJXfv}=GYlHPRR z&%GQmi2op?)%nrnbtTv=ViJC-?TY_%SQW&_N?)d`M7Ct%insB&Q$3Cr! z`zyhVv_5gYE$(mX`hfCn?b@yg)*@T`(8ns6$90vf^f7O^TN6P-)IrHE3PsT9`E6bA z@4oyQaW6rDr;Z!vb>60MnfkOOGqqbqA57$z4d3}xE!8sx%;3wm0@-oxDZ*d2r;Qej z%~c3dW637Qx=0Nh+FQ}tmSy!hGmZ& z3`FP6BQx_|($IDwc(lJZSFW!#8~QSN5TcRczO_ghB#nBGT~c=N*yA56zmh{jHZz)! z_zu}i{kKWL3NCv|IW-1NyY|JTiH)!yI$rtl8#ijnC1oDxb(NkJy>WYzNMi5w9Ro<2 zG<@)?=Bv4}j5F>zuGFPOtedn99!7n2Ky_eGfBmPq3!jb)6{21f7=(Z|2>EIl--$b@ zbvXWvOD?A!noathcVuuees93~!dz*W_1bNASbzBbdjUG3z<2V2mk07A-Sf>@zKaV8 zpE!?3|0)?b{Npv*Qq`?z1dpc40a?W)@e8Xz^Cl)p`{e_xFeEA{7DIp|2omTNG8^CT zN^Vz06+)fK;x;}+rIh6VT^6>>x?!hV=FKkaRZ$y#_(|G6nakgjp3y(X^Tp|bEt=$% zx&#VeaGTe|&O_01r|AFdD6~C`jm&0d1IgIHV=N!L88q(a8I)d)JhDZ8_f9d)j=94x zUfFN-;EB`zo}!L1DN>#K?B1Z`T-#eNE}~8$>I6><6a}r%u;kw~$m7AN8^a}cv*D-? zrarR7pFD=8_%s4A4=ef1PEF<5e+>HJbJI>Xds1b0Yg{!JC+AH6rl97lS?^kivYdG^ zE0ZpQYB%*^)D_cx%5`T)_{Ji;zEMx$yrY8n(Ke_JgP-;812mxaL!w~D+$vY^ssmEy zY6!r$YvBl7OLdDAm8og^k%6c%I9IU%tyI8ADcPwK$(aqt1(lcAqkIy zb=x2oMW>NxDZbX0NINd`JwJa|xjG9qGA?t53aKT3oc};%ZLucM2@%B3Pzis4 zrEgBt_O!p#TxGJnvbG=}9T`N`B@$Zdc(iyGG`3O4?6RMcB`z5S5wXWOasA{blVeB$ zNfJI$dM?~{Yf?(PXJsyGELsvhWGEz>7ZVcilYisVPt795_v0b+Rr#F1+4kSaD3;Cu za43FqaN02c(}?(H0q95M?fYfIy8F;Y;cqzDK!M>-o%#nZ!<|XabdYw~cBRqb;8_)A zGM73=K_zM?eSIbL588Y`1YDPEf4X?qR!?!<|7%va;UCnlRZ}p>9-(A_qdr{st1wt^emdx@C#;x2H*L+BktCt#Cj}9U0CYm+I&>72jH^i6)Aydd^i31NGNz2j9 z*;1JU3*o+++LpJNVTl%rFQYzI6{;aNWWH?pgiBxp673;Sd8EYV&VkF@7d;O z-hAW$nrXxR-8-}<&g1YI_ZV88WR#9&AZF<(*=0=e}59aE1z;`>b~K%#a=1dD3kUdk({f`7F6CV4d# zt)E~(*CQx9t4|X*{?|kO^*?ieYqcuY zIWQYiy^x`Q<&M-vuaH|yenS1s^%v{Md!m*6fsg0tb45u#THcmMl|CT}F%}PuOesPH z?uEj(uGQ1{`7@^$$TP;+q#9psd&po8Azf(6IgYh49YC?KV4Rv6r;Ki9zz?nVI0}ifgHc(G%#8 zp828sIyaMxBxaJ&RR6u#_0qvI5v8yzg5VLUc^wr$z0u$EYfWD&>~XeyL{a`n%Bsal zA=fhr{XK<)L=k_wVnZWE|KsH=FWH8bPXYUXP5~S?TAU;v_UlS$s^CTR(>PEGIS}|# zt+{0yUdJkGR6(YBlQ&K7Dg3)R_gkZE?i%49_G{M7buOIrf)K**&jg6Cf0w4oY%Jt) zqDqnr<3BJx!yM~%(KRpgI_bMT-H&$GYJ+!wJ_5fg?z=+wr|bh9QCv~emFkSa6~P^* zZ5}bh&XFQd)NQUiAkyF{%ntj9&l{?LT8ofOb6=I4m!+!#W*xX%+Q3w=oufNO{K45s zLVE2L5^JokCL4^+L%yWhmn_x*cxrLoU2I6$`54>NMhQCsO+TnjlFE4>4c(tD%hkGy zD3frl^A%&v`uowP*O6ni;jDyhZ}FMPa5_X3xXN|gRoh^hm_A^Q8K`7$lI4YTuCFqq6J7JSLg5rpnknh+d#FG&MgislsiX9>R1jo5X`^pfl9Psg zo>=W!jj9NO|&qg!on#MCngtLI?>qm}Bj-1mnt6dI2pU%XPJK>(+P=y0RP*g$-8 zL}*$;JQ-uSy$F?Z2o2b zcLN(WY*gxbDx|u9N+IZ_przFR&U=2R(c?ox`#|#bL)X%l{)W}g*U=De;m?~bf9qwQ zhLYtgM$V&`tU(9wfwMaTu^Nx*)RB-%?{f-gwRt6Hbt~p<7Zcb!9nbzD?65GClg`ve zzyBbv{+si&lTGSS{DgQH7T+^iPvB5BNk4mJ+|Z(5{Ce6ahER@5fFRQi- zR?}vJ9*xR1`~EuaaT|5v@@);hBl6Tpclje~gz2r!Zs~j|7V28J_P_bZFogmg{|~@D zWxS#4`h4I=J<@Z(u2COD6`r*P3umOj#rK-$N1U?UCLHYDHUi#?k-t2J3@`s^}I z7EQiLaS*b~#LyxzIGPTPTF@W=i5Mg~PTd&LQj|uRas6A7p9G%eJ=f8B?TmP7kiTTlOB97)~HuOnUjalYV?~V@lCW? zNOTM6_lWS1&P<{IFK(YLh61s4ZpH3I!Xbcr0N%^^M=)IkeZcykxd8t=uuezV%BP^E zsK7U^GCwC?>Lnyq2*AyB75PD%U7$7(G^Sle*6XpY(^I0B3&gh@jnw0MQ2r(A#>+K0smHmp86R)L!m(KZPxg^&H^Y6iJx)ZJP zjBbeeeWM}b!g7BqdH-)HT;%npPcxe2WHr!=0K-$TbxbS2CbzO92IW%?p@O-Qr6FR) zc->rFI5QKS5Pb@jJ7OQ!A>`{9>LZc~P7|o96Z_cBJ+=q_Cn(qAM#MqM69f#GdXMoi zP1l~}8Nfl+P=adl{{{C3M8Yc{m(IcF=EA^7hYgmqJAQup`oYA!%)U00p2e9G-Nt}J zqM0&`s{a=c(rNtk?dSHM1tWIbCYL-}AXhiOd4+c$OOs1>vi1P`{Zy~PK9lwz6w9;C>1@| zsB|-ha)jrPs0N+thM2S?nfO-!Xxy55^!Mxy%FyF~|EWJ{BmLqH^a!rA=q7cct;!4b z$D&D`6sy;IngOZh@Mn(~*$X{_6$@o%#W;^g=g(W)UL#buUkBa{(`&PN4d&xp*nN=B z;E!Je^avENQswXKI)b{^XckR6j6SPq55J_tZOG)&HHfIbDG&O!#lHYsv$^WMfY2Lz z!_(~kA8-@P*!Wq8ivZt`N`2j@L23`6Wf_NKKLXVM{6PO9&V04gmv_uUi@~(3uL#4@ z-s;yB)u<$fG#D_x)@ltY4!bZsK4U%@J(3>lRZUE4rq)l8Knp6Plb2GZX%D zlYfr$9XdS_L9gV}(qGB$b*%NYTn=G{&yzdh0>|qXr!vlBk13ZY6GjKTv=X0WaXL#@ z;C~nvn8O!=TIv66D~k-xbA!g{|0fLsd#W`7SufZ^Xl$<95`p6Z2IVB|jr%=?3IB8# z7yqH>Au6ZklzWy)d|7hIuE+OsdMYbitz9o zWw=lICmdUBT_GGEHEIx%h*H?7xzdGti$O0>!1n>(yO9*egoSA%;K{XU= z|8@6)zD54dcV@fVKqlZ4#3Yw?&p@JFOr|5QrN1_+|9CiO?7QXNt&RH3SV41b9_Fm7 z_GKk_^L&DpZ)$%K+XnbIZepn<Sa-P=9S(H3C6BiJc&r#?LFGnk7L7qF`e9~o z@bG=L%OC-YVix49LWLji_#Jo2ykn-ad1mI~U4s3h9{3^K+veS@7h3xuSve@}dY^Gf zD6N$S5BON6*4eKMh5dmd&#TsCu%z}U1*6#iV8~!AHl@C5Z?|$QM=q-x4d}~gKALIR z_m4OF)nwG3fhweg<(dRd*Y2J+ukilI5R)Oxx`OdcQ=V(heUs5<6N=xMb5LL}TYfF> zZe0k!Kl9$fkM;7hph}13ya%I!DbawsR4P4P5^~sbIf4ZV?&%~I6^_`vB<|5I$1ICR z1T++6xE6G4BzVirQU@?b>l7)>Zbh#9DM8>wwFajxmC@BK+q|Y2H9T=-r#{~C&)#r! zjHWDsxxDf%MSu?9fk6y(ig)2CFuFNsbbJ>3W#oAbVWV$I2Ah$m>>8I#j&?VP0)U%C z`R>}KzM&0}q~6m!DjvQ~(MSk&-E&DhrhqPJcrEo5Q`qGlzLLx;Wpqlq%4p!&Zmo^- zGnSla+-)QsA>QTReYqVf=nsgZI37MfQE#mmfimvkrjx{z``qDl`wrWM_YX-N z4=-KP?a@OA2EIiv{WdxyOwDXg={=x`w1eKF&4RT(q#_;wwz3@^_lilcI9D0CscABM zIK7-f)`JAhY7Gg9Guj+xpM}vPyuT_J=R5DnnVwxlz3n&AAJ2-BNp?V=+Bq&(H}56B zH}0XxmwJ*{>5-x9^_j<>xwIgv;=6j#;L6s^)@qn_}Xc{IVU z_ri&B^HVof7G2UZKO&jPQiNJZ+rm>G?>p414e&}`?zYc5%2GFB z?HlD}H=GaU@nuO{rKLNncTE8-a6qNZUa<9N;a;4YvtQ^UIUUv)Gu>I$bYvhG`pU9* zpB7&7`=ebMPKL)DeMw$Zb){JI`1;=eSZ{JZ28$d<4?8bS)U*akvjvu#O^rM6t45#y zD5mh-#~~i}_*$)`W4!WBmCUGCkAmyF`oZM83;2>Jtf*+z^91HNOCB2uiou!;+ouubvWc%VIHJxFwEPyrLA9Z)8L&f5t@1 zPESPjjRPaPfIGDjv2Z669T5`6_sKsJ6MXP zl3oKlTHenMDcrtz`qfTb5Au3Hq}xCNS2eMC@8cIcV9b6B%gla@?Xe>EsO17^O_2h} zwMaX72(3FmvDjNh9OBfLPcFjUpfSy9JyR0XRVTA;0b$~sbkE4)xqMXuIbbnOB7|g* z<)~EJFSC`LP@88eD~wUDW|My(De2h<*{F6`&G)6XyRy2w+8`7xg4fd!g4aq zxpAwhxmV%}ds{{$TBe0cbLtOe6p*-^%9J1){L@}2CA1w2xi%<$(OyX0OUrxUwZxNd zEAn?(snb-#k80)LJlv!QMbdJDXtzAKcb})?PeX;o1vzCZg{Ym&%Vs!UwDMX91yh7M zkRGR+pD0|NuFBFq)J4kJ76ma@zSqq(-n?E`n}*hiHt>hjimw>hd}$fQDt|-l9EL|^ zFb!>Azv?fb;yL*oiye7xv0Gcr;>nA>`w5Bzu{pt!py~x$AZiDu0c@s_ov~1r@9-$t z(Vlr~q2OI<0dXl6KZ|T^(JU{Su~2sH18rQZ5kVl#roS4@q!DK{uZVBV5;aUdk)94E zWfYT($ga9O&7Wumr(nNcFp&`CKTF7!i2zNv1KD9A!k_Lo z{TS3x$2a(6c`KwP=n14^Osu(LEz7BP(NKB1ow!!1n-a1W?jtK9u+%H1dQFk3^lLtd5_ODNUYIbuJ-X~$O7zb6X!u}lgi^QHq3c`3v>B3iDiTa(<`N?j=iC5 z7WBNw7?Y~`pvok7m_Io3Xhn)Z#ET1e&q*fz${H{WKd$PFQMCTR5bVMtjv}t(mU0Shz5*at>nB6e3X?KKRacl-m^eHHQyHwpZ+Ag zwd!X{De7((WI z{cY}@hYR_bYMc0ZTYJIj(X{QTfgZ;TFnW{y)UxR9-QelDD)O2q7&R4i;(p8kcCl9qOb3 z@(*Gkv>4b-3bE40w9}6dyfJtz%@HI0c0x_hZdG@yGkWl- z+AF#ABNOivP)9)$>AtM=1X4%9$?yd>z7Nmw!55#r?3)7Vi-sEg6aYQo9 z)z`70S~&Bqj;=`IW={(@pT~Nn6PnS_MgVG z(L%=;_aH}%zFN%;nAmrf$8X&rPCqoTk|X8i#Q+N;!bj1&{iMA;Yo4i$wgh)*jJbJt zW|o^ZWi~%c`Ie?R@^{yS@9(rJoZ7SmvtOI(A_Cx7kf4F^KRsJZ#d|-vA5n2*qh8y9 za*(aaK|CgY0_ASNWfgDox{}_3a|tA5Y~K4|EBlyjrO(yJX5wwqN=u-qdiqRvQb!g< zDpA@xFeBw$^BqrEB22YWo2}V>V--|99rim$tzQQgEUauT=sH$^%9PU``?Q%;NeV;$7fwHE01#<5TGi8q} zK4B`+nLX>IuACQMXM^|`stTexR9f1$dxx|w)z`jUn)(V`LYX#U9@MATbm7&9xWw85 z)L9*wh6rJFn z2lFISoL@Ea{`&8c(;Qcv~=|a&up3YoP#ad;u!_YICU=Acs=+LSKKN3UlvIgWwO?Mc@v!(4~JlU zNY#c3zP?EYF$AN~`tQj(w7dS|9SeJexaf5J8pv0G?uJH3pP|5`LbNwXW$Y^6r`1{! zebnntK$)*rf?o&{J`9OQ?U{+1a+;P9=U-rN@J#z=N8e8`Jke$2_7eE?w=bb1`qHAU zqK5XzX8Y6aZDaY1AH8c1!w0KN{<*7*$@afN6bGqF#8o*j5(~F)=iw3{a8(zImc2GF zp~DY@&0#VG_))9oD*Msx8%^=J85DChwCs0EaSmroSP#9_vU}W{#wRBZlH100iSG__ecd8dhjt9BB0lH7%T*(#^hq6B(J6`2)Ru-(9gJBU?8%I=VWF3dsKs^L zQKt93%@`b6Ki`QAQnFn!83Y9h%D1~XG!uKHEYp6fPRlDX0uB-5&OXC>WyQ`LYeE_( z*ov6Z83Dt3<{MM=F9l^4HxxJU6KmW?3CBknN|{hCYTb(S61Gbec~BP4YVZ55hQyl} z0j#KJKok*BYWO{A5z9_QGe=1{=yvrB8->vBw&L! z9i#>!E{k;Zo6>x?t{+n~e14b+axn*%j&l0AgW37Z+c-R^*|5ABoFdf+{7$pi*6+Au zKEtS|dFD=AuC?&#yk_8FodHP{y&KB~6wc|cnW4&xR>ZvUNQ|Yvm}k75Q@Eg!YqxQ# zne^Szmq&+X_=SlI6NY-=v}>9ROzanFf3?06py2e2&1h%aEz5w+Ra~y)9F`{>j>TM_ zENsiLmb97HX2v@;iK|ggTs|uY3ub({KbyFVvJ~#=eM!Minl5dSGRv>~an@n%AqK@h z>Jn!=Z=OcrbE*K;DKju8g0 zQst5Q+Fn*NX9|OWO3JM&25Y46*SVINGFamyK8vxz2f|XGsg{A^fRh z-c1(KzFO@>o%1v9ry%EcbUhe!SQP8_%l)Ej!vPhHS7ZDE#s^6CS4TF?6Q(-m28g_4k` z?GAI_3m=*a=O8D_`QJ`*-CnkuZ<1~O*uuLD0)(gTGL8)(#yS~?US?%5{kxIn!#3~! zfjjvkz>AX(N18E-Om-yfyq^5d(cfL8e(3yzvV`@Zgn916%=T{Dw?N7hb zXyLjoLtZg&C^)#b$*zUw9&+)`p7SUZR#~mfT-RlEb2Dk2EwWD|wf%%k{1^|R|Cy+rAG<4*h4GUVOc)YiLzhkeO% zIW5vgwCC~XhNds#z4TD6O!tszf=mfa{DBRp09`GY$F3$jBvjDOVtwqx;QObkLxac! z9|4KECf)XCn-m zzT;7ECw5gH?T7B;#*3_Rg@)w*xFdkkiO{EG=h(p7vkQ8DI&FKLT#NLxrButT2YRu-4a?NE!rV=5 zD3uO&=eN74>hgV>k*kiEwD+C@b*yB9g|E_51KB|dA?WR0(=CkSH#;iLEIcAZo9cl= z8{p6_ZtQd&KhCoJ+wy}Bh!7r6Wr*5^E(|A zVJ<+TdM2D-MGv}RI=}_ES>0M)m=gJUqx2SVpz9H+v$LgiGKa)oro#`?lhwYJAM4=B zAV1Hn13vM%T~=PO&YVK=f)0pxxI)o znb^z&YZ(PiwRI=!6&gG-q9sP7Z@Rgrs7*~dMCiwS<}TLW0zBbJDrFp-q~Z2f)Yb{FC#K_4$=bD=jbQn#3d$n?ZsOb~_kTnvvB9BUPVR0WPb&=9ZZf7w$Md*M|`M$JDF@;IZpZ*JsqZ#7E3dwcKFoTttM~ z8@m?Vn^Kih*_D>wc%O=9XXD>hcHLtN>^6!m_h!wY6~WQd6+16ztkCi-?VgdX;=vNL z*d+O}Po5($wW;>dN8^zep&t~}KB4D%h%gyWl@Q9HgsV<{QWq9*@ZzRYclC_xPdV|5 z+)4%RuPGU}Dw@q@8QqQM{9LS}S z;Z-z`lw4EtfLyUZeXgA{{DP>jNVSjrl`G`Hrjb$*%q^KR@l~~G>oJk5t!R- zLlNS8kYCNK51$W}QSjV9|AM9C^3#E8`;eBL-0+M41)u97Kap1()+hnFq4@g=iwT216Tzq-z<_;cwH8f2XkzKGra&eEszNIsB&uA@6-iNJpxG3ONaTDp z_t1ks?Xi|5`CZQ$>sL=I9_AgkAHdkBGw65OWtQJOGZ5F-BSQlMaXhQ1m70-YzboQZ z4|$-lF?~}?rGg+-$OrN242j&#fEAB~3*E)w1--sWAL4Sxa+FVAaVa|f!hTCGR1~q} zcaqBuJXE)u^Mb@$wdpQan7eg;UocTqb1>do`MPTo)p@LRHa4udP?Z`;lxA{#7W#C8 z^!nC$Dr~U4qa=O*la4cO;HhzB-KAqys|A6&CR7cJD z#)*nZ#7lv5OKfgyt!O!12;+yd|E7PWIZ;zx#w)$%gPRY0(pyl*Juq~nYs>blU4$A4 zw+h~`Ox4~J+-NLeULD8bXa$Q!XnXO#1b0{+WrCiDIo#V`d}BW5g$p02KRx6+9;SA~ zXmWW##(b^WYjzV^8J0T1_`We?{9Mw3sw$@G=3VM^?S|J|LF9C;gC7rVVa{)MyZxD2WR10 zKepfBmp^`HE;M_ndiEwO(?Pfv3l|$a_3?S{(;kQK!c==3^`3OVN?2Htz*H<`cSAxxdQaQ-WG=0yh#?O;z=c3&pY zksO16d286a>1BpeRc$*Xv;9%1Yl5OGf+r-s_xsNH!PT&a&iZ|pYE?Tb`J>5%Rh`@9 zA_->15(nbahfz35Ghqi_kg;ouwR-jLN%G+Nx5$a)d+wYxa%d}d&nS9J0zt~v60I(f z_>aUI?ejdkGv2(~bH43DZ>iEP)n(T$@W_W{acUQ-%IIhPoK^b4&^CzXK*?M zcjt9M*KEN;wqg@iOgGm1SW6i4-gLe=$$u-7)d(Kjfma_XIILS8+{S1nGY7aCWB5uS zGmC7Nln8w@h$0_RLSkBD@4*>H;;l>^g+D@njD-S4XMM7#nYHdOd&6K9F#9-;Pma&A ze^{q~gO6*6;zI9aGqxm2ETB6={@|qe$y70xb}ax8@x=imjee%|hfdSh4DYGMEi4E< zyqV+sMv+}SKsX8-(SF630OyxvyH^@Kvzcg1QlE4}#HoRSI@E#Yn^gPz*GfKR)St~* zwI!UK@QX33KQR8DU^nTG-ElwC&GbL?X2x;6Ug6qIraS}0a_b!l%Xx2^DCTBvCXLA5 zOlZ_6bA-sT3`Og9}`x*OU4Li5OD2%NMwHA8CSxnMokU`Q45N^RHT#`H~%&LOl^LXn2FAM*)DJX9^a!a zVK)G)gntwT(-~DN&%`)7KILaGf1j1Q;{d;+lHtIjo9}vQaop%b-p9W0(J3D+Ebu2L zsu4uBeu)51c#aPA+_?W@8=>@EdSRx~mXTZ2EA?meA#d~^NnUpJ{U9Vzn6XvV0SE9; z@u~bgELa0);DS5iXHrK9D|JNAG8y#%&5s@lgQh!Gk8Dzxl>DNW3%P_OLK2@o(Y9sk z_N;13Ebkw+eo>ZkAF(k=l{;+;wgSDm2$8en^7=@LQH>Ijl|A2rThoqlPOy!uGc722 zyltkoyg?1#m>3RG75lM?NR=6T2y70 z04o!#N_V$_(c)!($DRD6_tG;N8{4d$`e56!R6MV?Ls(}68_HO!t0=X4cnq4$OvWYN zr@vDz39pTW!Sa*v&a&cI0BD&ChwHSOBkDm!5T|atCTj!J^T;)^5Ngnm(%|xeYw`Nr18M`x!DWqJ*~OC zC@*l3#J@Dsu<8nyWoMsGO~^sv(ueoQo>jDTdm}U&IPaP|sdR*QlkoPyg;@UPK)l76 zb-~1;e!Fz;RJVA^5?zgNRO2IBgOk&md$dg~oe%r-|JgRHz4)_`*n2* zw)q&6tLmRNoUF&M9IgUh3%56B@KT%g;vrw^-v3Z#`nz(aEjOM>27FX9giI>jP~dM@ zcbaM!=lI-efYhU@^!8*` zCM~#kZ1@AgR%lmpNz*0|fYouvk`zXCV}BO9jspXt=5=eSbPhUv&p(e zFz7~^)qnjkO~{_|>CQj z%I;ci13v9g{Io7Y5~IBhDp^ba$HSVwLVzb_%fleVZU3jlg≠Ihr&<=Jn?+B`-vrM1r|B=@%q> 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 literal 0 HcmV?d00001 diff --git a/slides/_images/gateway.jpg b/slides/_images/gateway.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7c81c1372c312d16f0dad089a0658dc415e79de3 GIT binary patch literal 475556 zcmb5V2Ut_j);_xFy;lh!C6v%ar6Wj(gdTdYQCjE$mEM~mT?A2j??Qke9i)lUTj(It z5v3?tZv36^JLmlGeeQFgJIUVr-D}pY^-kH7*)x+r3xC!DT9^h@1Hi+>1GI1-;LmS> zQrX+v1EK5S>rVb>lSmM%s%mEd*VlmRsN>WCfQZ!r7mv>c0DexMzHm(yE^`Y@E|O`0 z1i;1q4GvCz-pU3BI{#pt?mxo+<8(3iFWqU;zqbC5sQ>R93SXQ<0Kg-~sWLwN7iRy9 z9sh;J|KdP@Z-1PQ+F$JC;^2(K<~S_kYYbP#;biz9=77Xbdn_a6y^ssj??>%jH5S`2)>9=LiS{zvog<^LrX>4C!K_n$z6J5wS& zO^k3?FfO035Ps@^u?WtUjJ^XK-Antg4zB$0?>uoa#+4z!hLhv4svZtAouAVsCa6l7K0Ym|B zoWu)w0J!2l9=PNGDfhr>KL9RpdR+f)MZ8*kLwxVwmbk>{#gD{i#S6tt#19aU^mPNi zyV?CGHqzJ5)#>B2FMz>69RB+IYxiH?xNs~S{$a)ir~(@}p8vZ0UoP(d#r;2gJ^szr z;NN-p7uTQvcdme6!1sr8|MB;i2_jDK;@=h=ajg6RcU(GGAOMFwaCZotzW@L5{O{8H zUsnHN@>l;a^M9A{2Y-xlYw&;k%@Vd*Pg4#B|G(tk`5#}Zz~;Ye=)ZI1^&dNc2ClCB zafj1?eEqlI|I++#3kaOw|E=YJmAWae?zw<}`SswsfwSiQKXrikC&z!=h0Fi=0{jt= z{Bi9FQ1$YD?Cbi_#h>erxcFVJf4V^~RWGDB${*p&1@&|i6XA03@ZkDK$B)Yw;fL@I zKsby2P5TFn3Gn|0LIMJO0wO{pA|gUULLy=kVj?0EVnRYV#2=M3td^$V=I=nvvz)c)SBBHx+Er3UWkE2LPKuAhJNCbdzafC#405Lr`3Bzq=QXWGGGR8YT zyb)A;Ja|g-pMa4z8mDKk*BPD5=QAa_$8hEqB4q#o777Brv(J3q)eS3_y@dc z?i;{4;J^d$a0LE~0s$UAjs!qLN`{LzqWi}`J_!k~w1|oD0UA62M}Urqp8K}4Au$7w zgHJ>n$(_PRoKwaPCSDb|qi^~tDf8XPqA3=zs!LQxq$|WX4xD<2Tb=f0h7B z0-O;#0y^M6kmA+#BlQokrATvIbziaVm#PoyL-p614_NbOk&U;8$yY8DS`jxtMN6+6 zvR`{o_XtmYyCT`@dh+|Uj|8*J!e;H#6t~6}c4Iqj#$Dd&<)xn$V8-pBb0XM)XWt}2;SXSqFGFF|IZ37YVD9Icno1?4 z$haL&{)C|Bs7vHY~^y*t9S@?N!D`mfIHfS(PfeHsJhP{W+1UCoxRwM zTU_5h@8PVLN#J`oP-zisqts34Jg}&$^&^4f$v2v-&3oZ1%y%~2fn>|){QJM(a3LFZ z*wr6tB)UiaIJ5mRLfU=a&RODq|5J*+4}>D7Mx;^FATw+6j`PB+nEoitU3bPI-OOFO zD&afIWOtmSCSEz#{yb%z${6IxQn}{#*}r46Fq&R{xdURqqouV-4~gJkYhqunBm-Az zUmSgp`{hj{xw6}Sj*(7+hwzL%=c0~|WBT2e%uB<>53!`4)127N4E$I~%=ZzsFOv2g`;;T+Q5Ak)5 zl>R+&^3%I;n`5GsFj7lRO#Ze!*&TBI;%GbVc;<^ccmnpOwT*$=6txIl1tZ;S zDYe8Jz4qo8M7CpQ`t!`mWnkNVf-0&B61S<*^kN>R)uB_;_JR0HEjjukMW2xDyQbM> zzu)lc|NI;*Gri)UW!gZX{_un1W&*u42v;#QTak-B=9vtU( zq@VP&+bL z!%WJ)GDoY*sn3Hje4Q(0Luag{GK_A7|}@-!ejPsl3{X%c|^Z|Ufun2 zlP)~66ooO5wtT1nLMP zXQbUNZYbAlBc^mlAeX{_)rl>Y)=Q0M&8_(|gGcygGJl>W$JshI>WkvBWw|n0=`Atd zdmsyg!w)M-{s3jd!I~)Ub;Cu=kN(wpwOW=VKPn-*-IwKITd{Kay%?UR2O0J?Pg-tk z!w6pxDL{8_o)1aoEM4lP8~TKj3b#N5ETdb83aHr?nzudSZ28ATZ`1DVHyN8$=@kC~ zp8f&q_|Qy*I@2eFj3y67r?RwD;mV*IoS4)B5Rh``KsqxGfgx%?`>!w*B1e&u$LL)> z(XOa~_=5cYL8P3mx(4HVezRa*!9dweX_;F1tu`^voP1q#q+^r~Y!#1@ zWZ7`)FoCW6vovdiSm^qqsbtOKoH^W?gjA>eWO`o)@)B!faFxp89W7I7-7OM#eE*$p z3jWCWCEQN8Y^f-`9ol9bck~CCq!u`j-X{-ta_vGgo33RbOBHF1P%n9x4-Qc8-*`xT z=SGf%*@G4F&MemGRyo=QYn=2dW@BIw=pC@v^oJVNbkz{@1}8Q)3iZiR_;;nZFNkbB zm;(k#bdZHY?!0)dQukkx-fJE)i4Qddqj06!3;8_nFN^glA|3l?4mbIj`dqndjA!9F zZ=LicUSqhtsWz)ck%22D)HwZkpgO1id{AWJG5_JBrO{mSD@oP+UW)BHwe*Ovb9HNn z*tFiV-49jnDT&Gm@=hg*VdHio#ll%o7`wx%ORE(nn>%}{-03H12-(|8!aS=}lizJ) za@V3k9E&Y6sXG%_>RoP7Totp6zdaS~%g>$~Cfv!l)Gg5>}WuKXd6Gab6Xy2Zve4=r zXLTX7@ey)?>(4${TPE7D&mze-8mbOoRn{Ls4_q7gM+`w$IbJ`%$X2w26C0L#Z@HrO zZgGH*-x>J?b}KBG9{=B75o+ z^?8}$d?Y*LJC<0r8xsj_FSNtvd!JUPm~)Pj_`ELHxPJ zvF>-J-tGl<|30@nh+xj*ZVC_3NH#4?dGqOYM-{GEh{n|!tl+U_?RT5^B5dD&3acaD zDMA~C;EyIA_GtasLti|$!ac6y?~J+)oe=p(Bdj9?U_kj503_woS{e zEjhR23?3%|MFg~$e(_b zbXoJDQa_yZ2 z9fzESCFds5?oFXTz(>+yv6p+uD&7}44;U+gw~O@u01DDKhZr2AOxP^*@Y5vOI+dq3 zjT8;q+kdLx{5IGk56l{O4$fn=yM8GVMoFp6JmGY#|9Pq?>qkUT?M=S(ql(36k7OpR zy8a-d%kPa|NPzN$rxwZD+V#HsG(u`a@|Mhej}U}MmwnQ2 z%M>>Ugqx%Mm%)KpQc&%v4S5?lJT=W{`Ap{Epz5=12REsv_R?ybk~HK)SFed+Q*(Lk zadlvSqBfxNKJ#_i_Uo|oKE#%@W?O!XYM$FV5ywdvc2j=Db7UO(Yes>Lpi=7Q5FKgP z@R8SpZI61$T4;XQTA2(Ly}6ZP(T6M`0Lp)PfR<@qWRs`!7nh;)Hgbqxyj3OUH)0vr z!hgA7dwq1Zp0ArynFiB{AlGRjT)HGg^{nWTA70FeAfEIE-rS39$+rICe_~D$R{?s; zsv%mH0+w#cLRIyos)YFTiMM|mGI7)^W%3}YRPZi+If3g%<+Xh@bOp_K3BF% z+Do$!CHPQ6uW%^9v)k~Vl;;v7t=eI}@Z=<3EW8-)RF+LT{(`hCi=z?W(zmo%P{3It zwjZIa`L!R9YZ2<*wuVS{;2?uV$P=JBiL37AVm@!zYf}r-+|RyF!_vHGxN0R%0!1qj zHfO$C@eC1{$4~o8SBx@yq0O1=g{7iR5%iK~xo2uxk`FcD0$s>_ekW6j6q~?*<~Rap zWUgL5V~x4Tb;wxA&FQK%s74!2a1^Ga8ghF@mx*{z#U{HcRo~9e8t7wzU2^nwKF?I| zZB+Pmd&Q3M`)a@n`(P#q;*1pOY4=l|Tk!GM$4$`9Bw| zEl| zOtgUH#1QE}z&(k4NnLPM-E)f{DHLUc(t9418q#`x7~^gYs5 zC3j?mMP)HpX{ArSd*urRl8m0Em-S7u-S0Q#8M1(Twf=CR;(M1AqlfnG#3X<-Pyv@{ znMv-Zii|;gtG#*u81t(qPwWU0vIHiJFM?hP_u1xEZ3z6>0BQRn#;XVygfqlz)k>Ca zf9HIjiYOAV63`>{qo);v`Tu_ObeCO99ibb0L4J8wO97$?bs}&Pa_PE2k7OF^+-u!P7N$82n!-PGUOk6PpFyRI<8Dk1hrv{Df|0=YXsX^vq$)qeqP`)7|=+skA7s)xPgz+H|w-o7pQPdeaqf zPsX54id^Fz%sObrDYYaM3;k`@N5xPQkb9gYM%K`j?j1bGRxw!oknnX)<9md<@cr|F zQO$+@f|)+{m6_1@lP?`UWpTqW5#0tpt^Ll#V=VD~nlAf^1tZqZ-#8507sAQ}v^gEw z7>U_2(X9n@c|s7Q=L&IULc%U9$gCJqn@h<1a+3&{vJfx&`v>D`J48iUWm|i9q#P3; z6`wGhrstZ68HNgpxThVW!a8W*tVC_SdY#|3a3eZj0VHM4?H1Af%4>dvuq8luL?29t|5+<@jsv7BFN8#i(W9x#J)h?V!q)O!>y%Ya8n zWPRQp*D=-v~-49zLL#SiQDSMz(0#j5BrILUAte+eoOsCobTz zppLOoT7I&z@pj_XLCOe}?08RT+S|(uEg()|U2sn(FEZVaeMXD_VlRPm+Jsrz0i!c+ zc_>mhzxw@Nz;@wC5ZFe2UdsR~y}ZV->B6V__#PdePL_?*k^9YH?T$wkomL-RJZkWe z$uoN2Q4yrNgcMxx?b>E~>hD3Ux13qpBC7Q7i%yYQqPtHAz88T6ePJH)WgmQs0CfGA zV;?crn7Sfkm};}~LiX0qSliE(n_Pf3VHylNzaR75c!|Y+<7Vjh=y%DZ;?#}zO=7_< z-!wC$8av;Chb4}cQp{|Z;k7Sd+&mX;=X;5*Z)}*N^$!;^d2^MxVTK&P#O3XbRjz>< zs&>~O@dY(uZW*m!;=Q~sVoF(8ZY>7iOdp>%e5-ElQq1u=%JZ|O#3GpGYMyxcluv9F zxa8;fTBwGIrOQWPsYJ=BdfwN=$jBB>mOVA(wHLsyopo;t8z)M_6~v>9C2Y`51s-@| zJQ_pPQ|lF5x7pvC+Anpa1z8Skw5~HOg*8{P$^Rg#zuH)q)O8v6K?G!`isVs8;krY9 zYvR?_Y9Xrzmd+vF&W6(aG5|G&5L}9dE1>aWh&hSx{UlQC4dG#3w7+5w=+Y*uAdj0e zJb&;C3uMJ!6}7zEg%Z|%F2_>ZgCHXF@OpjKwssEW?_Xcu7yG|x`f3ISN|WlgrW<;p zZCZwh@pn}IK(0sBnvK4~mz?FI}QeJzB78JSp2jR&pc@+JOKV$4DB|G zUCJhF-wo)uVal-n>aTHMrd66SdaYnD{#`0wm4Myi>;s)-A+~tVyycfvUru35DK5c} z)gfRI1#TiNv*-#UQW;>yP{i0yK0%X1=QMTEgQe}vcz?-0q5s0Lwf!hTBcF1lc4GL1 zekYy!Ri5MRXWGS@5QWUpvG5Y>@^byldD_)J^4!I!0A>vP*a(G?W!an^eun9;N z7F_Z%T6Q=<49%t2f|aw=cjip#W){r%pYhD3ZY6Nrgj_pP>}kQdD!TIc2#i34%aM9K zIk3!;nm`qu*J1-+=poA6l^hSU)xF*_=OMeT?4P<2@83p^M{+&q)1@t*Kz3aW>~6Tu z4bwaZfm`$nrs7@zufjLqy~;df(p6Vx%Um;t-<(I-a9w#NQ{8k9H_<7VnH{;wPoHs? z9+bA1l;!vEulH zMz^3wr&j`gAWN}qT+H|DTbRB&Ibv*X(7jdY?bvYABP z&1#N0JvHMe?p+5m?JNZxL`Hr!swmng1Recu%LH@Th)Yn_Rhe^3lQ@KacS+@#Vnxl= zo1>v$tJh|n!rOI3$Ck{sI6SDyCqs;+rSS}?%htlKHm=IzvXi`x8-H_jY@l`Ie9WRV zuQ)D9rr96!BuVuh3<{vk{nw^Bx)SQp2R%!lvvD813N?;%NOH?b*_ z_SML#%8P0aC0}w=8rj*veG{zmvtPC9mTB@wr^dB9Fi_0gQr=QUxTi$8x($Rh@-@C9 zy`%V3BNA?Gxi140C@)JX%43pL15OV{f+MkW<|I7wd_n_63*U>Vk5^vy{d z^1Ca)Nvsj9q$Wz+=8)b9L&xj2=LQ62-;;NbB zn!75)ls^dfNLqMue)%ptb7%IUo3&Nx1O_zDH(04L)NuB*AuCx5;5Srwu6K{@vVod5 zD&$%4Lm{rML7PFim-}vJ{HtVu$f|wNubA6X-JCeWk%`Xlvph$`alLjK#+?yKT?dfO z+tXm_O3Kx__{LmsI~wbuY_q|IJa{^PqHlOPEel6Ud`I&Wlug)^618Wyejrt`zZSc z+_RKJV-jLGfL=?Kc5L!;tPdIgBHc%4q0p@1VM;v@@75ukh$!NHAUIOBfKf8Vzw*I& zXX4XUql_!S>Bw$t(tZSw?D1n8Ds|Wv%;bu*jqItX;S1jS!b!uCfl?(b!J z{iPOAvDvd+M5YB!*Zfx`HRw?t-s#0yOv$GLWXL$9-F`Ts$qG+5>Q?43GMm6!I zBOf1+N1WL-?_@8k$!a$bEWIAj_r|~7yIwDQ04pvVM9XP0`jjWoXsuLx{{a?2M0$?z{W*4mr%x|CV zNF?D8;1Y31E<&1Gz&mWH&=b@F}|^b5y~n!30F!dIQA zpu?uv5F(*FtUOaw*y2Wx-~VIl4TW3Qk&o|q(cGN$HLj80MfN?S zUXDr2tOPSO2($)EDKX^go~bZSLNI#YQx=KN;Ymqw}$R(870l4M{ey@c>vMJ*5G?`dm_iM zTzaC6`HG7_KtNx3^rnY$XV#t))&RhEvGn=}$JsBmdQ*uFqX;8fZNNVUKz|1&u9omGxUyqxo9Wdi_)1 zT@h318&$MRGyb@d1KE4_^c$ozh4*IZnzEIT_98H%9&7N8jqqBX*Kq`D`b!9N)TDXzDmCz#oZN= zfN#AIQokYOW{?_NG80eg`s{KjG{2CSeKXAejwJL` zbh%B9ho=vxrM;v^VnJJ)fAKSO9~%CB{q{kpJxi1+WsSEKM4!G17AM=su=J~u=q%2@ ze8{MGL~GolRZ2B-ZFA7C;;8E7QiCSKx_ol(axLT}djG>9Q^pFTF~?U3{`ylb`&oQV zYBCbZTW%yKJqN)yJyy>V+D4!{juE^7IY!3fN|N(l!e~Z-DCrraGGC`Kw>*W_QIZyi zk8dGNa*|%`hE+892k~`EF|&#Rer?EY4C^$TMjrkXx~cCJ+axA@Y1pQeVxx5WQo()R z(7ez`wb_O9ZE&Y(psAg#iC#0)s^I1rfpawDSEB1l)x)xFZiU+pppg|~^Iuytf$ z?+db>$j=c?6a`kkL|=kj5jQ??FJ(PbHc8kG+?%HE=Iikj?v-i;o$xQSN=z9 zzKmQ?(atPcr4TuF3|`E5m8X$AZT+X~1Li%?woN#|QD93j)q{8S(uYN^eES}3q*R(` z1B$*-P-wtc-A<5X(mzArma_jbM5wNU;+e?aI^s z8)b#glU1Vz>hFGu&&wo7ZYs0YI5`F~E9N|A(UBtlWT+a%zw%^_8i=TJP1#PWPEY1m zTM-sGlc7U>h~S9r8+@pdN+zw?dfv~8&1cA6pA6bJ_2)PVs<1lr7T}TG=5#xkGrkoX zRmQe3{q$|(094C@Tj|NhqLP$S@Yc$5!KW@n0_<7gKt$O{-HjH$$2yDlD9-OXmzuftb-fq`2IcKWsTv(#GUm_ryGT}93LA7ARL8FS&U9j z7`RlaL~4XLvXP_?QerP4Zc6vI8LyWng}hF8_@LV<{-h}l1eGfu4cgPPWbCv$YSmG$ zOu7m;W&D<$pql*^A4O5Y4ce&&i(B+zkCQ33gm7lQq`?(4!ktxfy z<6Ydg89v4M4NL(Shtls5k~O+~^6U{$f7PuIhH|jk9|1i{9!W24cUPE*_@q1I+Iylr z>6F{r7Af6IOO`>%12pS}x4L`JXMcsN#M#hnf|H1Bs>vLEq8uopr;^MK*Qt?>rTrS~ zWa)3Vt2y=#T?wcK8y3vImYLBSaibPT*=~`FSGQBx7?JCGwECoWO*yjf%0V>|6rui1 zldM}E^u#_HHLb0xab5KJg?v;AZUO=sLR=wAk}HzBAR{RJ5}V?ZXarDMC9PgNI>YJg z3-ueT};Xz0J)}!dE~LMbkS$+ZOwkHEo6Xi@;2!< zFy29{hm6Nd=g#`C7WkfI(j-)u{@UKmy37W;Sz)c#(h*Wx`apGY$l#Y9tn<)9lJHby zb@cL45Ib&F)rNN5d!imj&q!bU(SzR)$uOVlf^B@@fL3ct znDVsqXQ|Kd+E1>;L-mEdSS~>?PVz5NB~;B9@}ZByK!pT7jC@pCOIxPAvWvQX_so3T z1*hN=he64;(eI%cSGk31)3mBxbo%{!oYHx2a4pjL$YwNAX3%>4gSmDSNK-(|A0S&+ za!Ml7vkoSLuOxrgb<+{0GT|a^7M%`Uu1%A&C2;eh$qRXUmeb~gMeF=kpY9>D$Sw)3 zzV&5#W6g!r)9<6yP-~=m@%p@QW*cU?nS7U6^#+6fSLq& z`YrV9V9EEc+H*b>axCsY^s1kn_t-IIgwG9H#{e)`T(IP%t9Sde#zs|8Ft>niLaSbO zj~$DoAdCQsQkOGEJr3{oT;NI|no4mie3I49l{}7duY5OTb?UJzIBS3wo`s(T3DsY{1Z6lsDaz$!|cYf__zjeQ}hBk7P zZ6<~wWHwmcpDX&oa3Fzt+TB&vUS$|8Xkk5)IJ=B&mFoCuUd=sGlt|U(t{(oOLY1@0 z$Idq1HdJ|bG@qVe{*@!TD56%5NHMo9e{vL&#s6W?@O;oYbLUFHh{lr^kXX=(eVxhfr~BI~Y1t20$hp&k|g z#W}}qAuTPpID*`enGj~O;FxMh>V?YmYQd(~MEr05p##celLfzy5CHoe`{e~ai* zxItQ_G7X&J59)zh&CXGCeD+h?>=tJW7tM*9u#8%r!j43h3E9m@v?#flzZJPqLV@(L}w% zis-Z$S3RzdRTCJ)q}CdT6Goe$^un0e5A(Ne$yg4P}Qx8#z&(j@AS3G?y<+&2oST|5N>IGC2iyu#X8)!wxa zM0OU3T>iY?P_1Furbf*fPcSp_ek3O8x(`~!?p%au`LX(9_) zS`xakb!^0~`r{$97ywK`@p>Z;f$=h5Ij+jAI{nE;%nveqj3xuG@gM^ADuh zLp<6SAvI~09zu}Im)&E!H%fR6D0~SA46VNgny@T~a^L*OZb=_`%Ts9OP-Fech9!d> zHs9pPx~k{ovLC@_LsxPf_f=&|NpH0)C;DbxqLoHA9QX_4t5o*xTUB(T21WA=_Jz{jNlmZK8CSx{PT?LP`^6=lZa&hBv z1^)a3aXrU?C7r|!0xWcr$%Pub>#f$2W#fZPQ+D<>zLs;!Gb9B94snV0#Fft~g-L@@ zHfnZ+`~DMPdiN!j#Z+{_nxE$a#oikMw9!ot`gFzv^Fsi=P?`JEXT^HR(64NGhYv&)LEG8vJrqg+Zc9hG3`Oxa8-HhJRN z(jcCki9dB~f0zbMqM3<1D#1iDBLoT$X~nHBMJHE25-`TsRbu}5LRe~zB;~ag;gAVI zq1JwM_DmM4``h5)Jwgr><8wCV=v?D`@})V@@3vOPqNS=ArGEb87dv?Yvq9<9tXF!_ z*b zM40hcd}HFC%Xe;=2dm>kzhm*Y0xcjWlv3nKN4bc^&FgCErr|mx?Uo+tYZR;Cz0Ai% zZ9J{ayG@bFzc7wE9_F6|OfI@@+v;<;!TnJD=1r1gfXQvXyeYQ?znxFsA_2J zHI{~Ir;S4-LiWhr%FDw?*SmAlZ-hm<^Icy*%|osn>j1%)FQmB1zwThhyNOQ8Z9FZ7 zw&9`XVpat*m<#pvMMGv5{evjYLe;Et|C~HJvqsacVEtHSWTq@H%L(-PModMzcYAhngMwI4VQ6=sl>S!vU6_6?+{1nV}sz zq9@1%wozSUHV~&R)Y@E?;|a{4BQ-ooP_RK8Xh+pLCLUF3%Y~b5a#>%lF;pIT7wK8z zF=OJU=w-i#OMk=d4XINo(%4sjo;9GSOWwe3byMm)BGURp+YZxmhZXYU7uNOdCW>Tb z3w*pw-mkbB0&_6WwQwJqGMN<1uK1+;aybjV$ja;nCo-MrdgB=Nz2X|#{>=hD*Eh$r zRwp|M3JcQbv$f4=>HPydXXhA~9Vck6SJ9oKHx}KM>gTB2MWzxw*lj8#Fqbl9>H78M zF1n(Jh2z$4Z1aaw%h9ugcwa4ic?WPzzM&SmRu`7WniqktJT7Bd9ki|Z0A_IX6r*Zb zZ7ikj+rV_*K8u8DopXFC)6Qp5lT~hOYLMQUf|CDc=|2idwdzWe76GNA!d|gL)rqg` zA=OrmtwvE&x{^A#@jaORB}>x9n5OZ9+A3*>G7IrCLif(345nkP(yzZPk$KwxbK3VM>iHai>Fgz5ad(Zx&(xJbIw<{uoCuB;#7G zIx=wg2@1{FOa;@%XBw1WFn={f0B}qzGh5($M4WS*a-7c1vM9!wK$bytYYwrQX?aoQ zMZ@%XQsgA{zaME{mP;JiGwo`;+cVVvHslFkmT(hA85aObtwYm2|tl z>!2rvz1qkxj&@0w&(P{WIp24BFc*3|IWf(6TKJ37w(pcw9we6(4Jr56%IVY#3*C838*An&h~G6Z4k zI49b-tbQ6~Z;MJ#U*YOtS6LsS{ccOmzGwFs z9%DgqVw2R2h+D^g8#$VFXPa3#_b$g_L>TUk>rEF;{;MVMFA*=u+*j!j?|O?;lKHunD6EE8_z78D>(lpS6iaOwkYi0Q*gR zEy87a4yCmBR<{tEFSKA0T(=e+%)fb7`QXX{Ps`a|y{&2wynvq-uvSKQI~MC! z`)PsT8hsMSbB@HN>ct8i+aOUkTml819Vj&Y$l#VJ)~l*CIh>5w%Qi>b8zMFTZL^L5mSLZ+ zyesb%=VIYKHNV!&iatsY?znz}Tb?>J{&u&vV)8K=(mr1f9>9DQ&6Ug|gI=s@6zu>D z(sW+izYmm<$`^ZsZi!Bo?q0>sMbmaBdOwG>{Yp)3Qg2Rut-YzJ5mlrZ+^;*UBt=F% zvikeG0Rzw-$(S-i1h!lW7;u%J$w^?7NFs{qbNk>z3|<1yqndc1wFuC-UUTQZWCMMETIkrCPz^?XeXj==dzA`}#2 z(oBPnLb!izVd7tpn5G=DkN>f}7FEY3m&aaBD!F^NQKy1>I>aYG+MaSGcouU z*YX!_8P8HvJhdb*5BP^Zrfs-&fbLYH+_Oycuz5PpS;qHp zNsI%=)D{?D2dkw11umno9JyDeV+gl&(UuX`by{npvlV-TebI})te$84${hDM)~Km=az&)npMmV0 zsw<^?*|3FCooVjb%d4M%I4TJ^$NWshznY5jR!IC|zkq`1?|q~#;URV$BT6}G4w zm0zn8NX-;svUUU6C$~*_M1LXcoRqJ?gMIb%`mw&Dp4RHim#(6o7>SH}_W>pny*gYu zbe87S>J;`Vfd@EZ^!-8|kJcVGU;TU%rB3HLeCIuKoDWe0=yeF7e<_?Q@*mh2z>c~3 zY%)sHjRQ}T9&Hi|y;&!E z?6d!DcJMLw=FbL?M!qK9<}B2H*hkW>)l|xra;jjHD`0y0DlIlL&_?tPg>bu7xpVSm z{~MRA3m+D?n!=(&=hfAfFH^r=Z@k;kAnM`T`i;%1B z;)2rg9Ie;zrqxayKU+v-E>KY>=@Ke^8KcOmvCe(`4%vL1e-+Y5*7QKWlBkvttA+>l z+>WR|`JMA>A^;Qrb=^}^U92Q4qu8N!4a-7nPLX9JpI?a{-InU)A8G5_3Ua9DvOOrG zM%%~m+_x&jp2-lDY#SH6ORKPm;^u`Jg;8hG+LOoV_F;sl;<=&~Hdf zw&2-~K~{%;iNA=MLh!=tK4mW8L$A;Kj$iG#H2EHDF)Q{{v3bH9TGQWx@j~a%4r0?` zL4i^fJ@ojkyFm_vm_@Fj+CY&~@D;v-cto}oYz1Wk^Rg!;p$HXDlCMWSQbF(GCIB{7 zK%5%cwh*ahn&~pRJ$5mVI??25N2aOoTh8CgHk?UY;tVhQZN>#dVj^pkhvib{4%&yP zr1bp<%opuS1PU7N_j3eg@_eOg6DgGot-gu-u`pD<^P_r7v^9Ip-3kzy1t}z_rYnNC9ia;+!qg)1 zbZ!5_Z2W899f<;bk=jOL(~LoLX(YY`3=6>n<24+_tI(&g6YtOOaF^sUo*ztm(98J- zDpypE6_9rNO_ZdPM|6Fc7fku2i85$8an`6+n8~;;w3M&}-HyL$Fl&D+ zbYyUbr`Pl&M5?h({Uh)MKaT-h#;?(jiM_PbE{Flli3D)l4A_zWWFUl#*Mwb5Z44hE zwPB{IlAgEGZn`@Y{n)9adF@ zblA#+y%aAVL($Sv+{*lfRk@CEZ7vd!Ww0(K4ZmSMg^L|V= zBo&Pcr~UphDV^^IjUz=wZ!=>&1c21AF)IAsdO+&Kcad=Ol8B%q&;D;c zU%%GRB2AaO_aB*_-FZ@wF2%VY*xI?nne(KGz06rMQ~C<`GNZ~EI15TJL9 zxs@r4MXEFWOn%+-A>X7-{v6z>RLOr=_o5H=r2O-nK#L_QGIB1wpW-BU(?y)01(_s| zahO6ne^D>+;ydkt7hD=*$9v={{QJ?$yxQ$Hh4^#dP7Y$k1k?q8E}g z;?<>&}<_+^ex zc$VsIK9(rm*m8Zfu_&SDAPXhE4K-}n0_^I@jt`^U_qX|Cvp2(uG*+Z=Lr5Kbvt~Er z3ia{W%AR7wiAfqo4eY|p2g21akB2QSVN%qyQ?q-8sq`^V%r6G-+Q0WSnclC#N|Lx0 zb8Ekec2huN$-kSEAc)?`OMYZjXl2}tP#F!v(tdJrN5L&W%N(b?0K%0{d_ouMQdcbB z0VXJ}l|TY4npW0ttE*Q1Lo-w8=K|Kd*7$fNxuo%9Bte-}&kB0iWOzHN8r+hdBx;pP zXpoJRZ5B6@AIb5R$|*+22re954%+CP`Q{7e1*Niz0z2Hgh*-+En*+1Erh|Ou$)0Pgr$DCAfdBkZfl7mF+Jiz3TKq=<8^VO3cccCzWg`aI3;id_ztj zGLkq}t%;s(C#h9yIaS^pxV&V26Du}Bj%oZ<)KjK@5fQSU4(tdYO26C1d=Tarv&5Sr zaRL>y4 zmgRPq_)Nt6 z&1RX?l&xLyegpCd@ZqgsC3gzFDu+xNm(U8fT)n*X)arkNJ8YSX7R_{)c^d31P%OGWL9MfS=Suw9PzqsxO`Z9`=#MhtRq#(#xT#QzRS) zYd!M(o($eTE|JCTM-z+Tw-8|eFNV%Np6UOK<8!}7?#d9E+(H*NkwWhG+g#^PUzcs> zE=%tBh`Cgx+^@OD%rtjNBDrmB?)STjDbnw^zxUYw`t0*Q?{l87=h=_F`u^sd>*G#N zCGKSvV90|iBE2H(9|L5(ZpMH!L{@0K2`kn2tFrd)euJ0UE(1ylO%)9czm#bC&HO*g zO)Wv8HtN99O3A%~IB3WY71seqr*hh6P zdWj$7>(awckJp08t&nhn`1)r>C@LmVUVX1&{eTYm2Gup(K0$=C zn&&|n+Rbo}qP~CN@Me@h_La0y_x!-u;{O`)vXyqso9<6GaJvv?Gf_D9qu37mp+BCP zcz*3&moIp&2}5Z_H&KM%zX%OzVJwWVknInjRU@9}J<*9VU}r!U-Ae4aegaC&llf(z ze!fT-+@P4kOfmY{%1ms!qKC^H-p;sg!A$zSs_==&?pILur z8#SewVV1pHKgZU<1`K9c2OUgiLg+R4-5SQZ&!ta`W17^hI9*4(v7kXCqj&`$QnC3| z{`M5t{B2KB0R0!ny!FrGQ66i&>WBZ%JoK&j!={VUKD8gZgOS5NPi!T{1WBKtVIUCYAH zA6jJ3gsyh8DGs^ZgtsxU(<`gB{)riR_a3iWh+kVx7NysE8S64h!oU$p*`pdQz^J@l zQT9fE+Q7$XX(gg|OB}=0{`UxfeZ6U_k)OxC;{espbXTjxhBMAk7_f`>Osuc9xQi~A zOFH3ZmFyB0L8eg3Nr^7DOZ$Im`G_(?v49OWV7qGp=c^{&>aE5Ufh1~#@2I;gd55mo+@DsUa8zMbM)(L9?29JIMkB<$1X3)`7Dc3&&B&!S&qXMo|Ns5hbJ zyc}U6F5jb%E`AUty}yN?$PXg`mm$&SOM#y?A*uKdg$wm}{y=v&Y|SA$GuF#E>Wd~L zRpa8;9i$@P+%Ax}k?zq~#rpTRVoPr3a3dicVi?^Nh&1{wPP}c>anmOZ`u$?wKr~v( zp2q;{C84p{Ph`I2>;aHsSBkck=Fi2(?UX}^T7~}$ z0o~lW&0@)?!B^H!zd+>1sO*x5lZ?Zo`lI!|a=RECfQ5L#eypHxZ9bU?RjndGuN?hW zM3YY0Krhxyi#D#PyA&M77kfX%;UtSG^@LG`^%LKR*rCuhLNmm&i>mQsEV%=6!r~Tc zfBD%Lv6)`LEGx`^(Bt}mtexz+`}r1+Qef0{A>~B687tVg6}ixhHr%Ehcf$iW_zZyp z5k5ChKxc36YQ!lA#;tl}EZr_~_gKp4qIEnQD>T#zzhc(_?*x9*?JKlscqHxs zW?b}N{h+w>`O)efR^80CC94PIvQGzq3b;i=i8_fY8V$2CQA7&7hcg6acs9(zAsQDb z-YK7vh>A;gtvOE1&h`b`G7h$`YQ}+3c|RQm>P5zbBq7ODzTiQZE;xu$HK?7J2=Ik`a> zhytqz6$*}N$Hjgc{cHBDHXWpd#$~N^kSFx2t^e@q6EFH(q{zRAzby zqw!8^)qPw3?0`x1inp>YL{35Hua;plED&^K;9SJHxukEW_JDayPOwZi;~O>gUqn+? z0*t%FT-u8qLN?U=lghk3Bceh0Q4;;JdX+^6-*kNm#`q28bJ}KXinD{!#}EIkrbm=)2p&2x_(>Zua)ccwVR*{awxFMViX5%< zN$!Rw3ciH2&sWtK7GfgZ@1hL)^eSBP&tR&oyNQyqk9aT52-zhK&rwOPa0zjrS6)OJ z{1@)h;u3r$(7i!TT4y)n{b!uH^QY6UApn~0{#4fH+^HVt`>NXRWYg|UaYHk(wPZoB z3s)URX_8Q%u!Cc?R(&8t>u$&JXPLXF}cYheZ;uaR<5RKGU>RKQ@d0||6dkFHMjtcfmn(i^_Adu&a12MST!6v3CmiE_b z5C#tNZz=uInyx-&?HtvwQ$+TNZcRWn)ZWaN#YS%^W1E zkNV<{Zm(*DgajiJy3D@CIgLJZ4_ht;dNy^vbl^^3yvR;K5ot;IAn3BN0l4XyfjzHY z>}0xEJ?QkoOh1~aroJ<6F^7ewT>rG$pz7pBnGxMp)s(iF*KagEVu1nq?cZ>Hgf6$_ zpb!0B$y{7rpP&1R{rFv*>q0bOXue`AW{BAdb>S?e@L|Q0gy&7CL*mDMArGGhC*|w- z53BhIJn;-dmQnlSa$7!;>smSM(G>F2U?UzZ(MCq_`kIJ3!rEmzLQ~l6-@;=46)hS- z*A(c0DN1P~P!~v*G;3k@7rslr%A9K4rdd$@AaB_w-&w_p!n#NJsA zJ*G|S4$7UCHO3eLHC5SL@OZz|F&{GT1Pf{mp z_A=2m6JuIaKW=;hpBK6^dI>HiozRl)x1V8myYAIDO)Gpmu451I2OXf6OD&F6=p3z|b;d5T z^NHro$pz^ix+h=d8lDp*)e3$V^Dv6cLEPpE-+HpqtbZWG4vd@4{kKIyVekueWWjv?_?&6p)j$*>4 zn|ppVxyZKVRr?VLf&I?B+|1qhM#UM61=_`K%onDcRAN(%xsMg=XXr}h`~z=Te>cxa zo(k!Y6~6AbuU)MrG&kJt3cIe?y3xJaYo{M{Qz?N-R%3?Np)|03FteYzlvk__t84vt zGVy>E5QkD+*ug93raS1k3u~Et)+@2VvY=(&naBj$QT(`eCgRL?WZO64GGKL3=)N1& zh;E|jVhAhp>KraG$Ue71?H5jw1l##uGoK20R&%pZyavB4^Dp;2`%vBhNZ~bG5+$<4guytz}R;f0CtYvNv#4()o8zV|1grIGhTvE(slR&~@ zNEy_0=oM1U-o2i|!iw)dIXZM!VJP8fqdnFPHCha9lJ3eu#&Z(mkWgRk7~qY?5su2? z83~$=D9r#5r-9SumjK+{q@Ejdu@LHjV@8;6g{R)udQwPCX?-Wh@!m{uMMIqn$)QsgRrli4K}}H zTOK}dS+OumB&d7vm!ahiM5FpFbfA-NH}zegLd_OV)b1fO9raqvv&vEu%`=FIFIPtl zO#haj^rRzgGT_a*J2*>1Ctos&GtNJ?+ox{sXOTFky>(vJ|yq6_im8TU?MPUZ4opFBlKnjTd#C75XBb40jCwspgpr zw5^od7zCg!A5|N5j#NXIlZ(JX!uF$B2YSd>?tv1m zPtD>1Hp_zTG_KQ^A@;kmA|esxoL}J$M)!LV=#X|8SgRt(p6M7UKM`YqH`3Zh7A}k2 zRF+-xtxP+5F%JQRYcLBVN=y)+5+Ab(GC8xD-1-zDdo}hV->X7=hy3e*fM+BQl37X# zbxML&ip5crVdkP)^k`$e^!7o3&o!HS9PEtg2l`}z57yqZ_CppTH=$!y7A;14SNYx} zEmc~YvHKgc>>5f>1;gV)3`P>XCc}hW1~N%8zdTE`19M^XmTSiv;biu~Z_`YK(djzq zx!b;=u((=a%cY(B15Y?Fq5?flelFKC*<{Qzeh*?5diV^7_mQZL{f0QE$fy5@0H%Kcgbuo%K0R zVwxi76qLL`idfW1D0;CObgERbpPUh@%^*AN!d#EZL7txsd1EVN(3xLqOxsOApDuEW zSA|x&LANq>dw*SqF-^w6)7&S9yt6Hji(&hd3|>UAv*exGGH)GhR-Jux_j())(9cSh zV~%RK1ptwFBXbhQ48gid-+wy!7Lr$;-g1ix%0ZyUX+rtk4=Sqz;WJP7Hfl73@Q5ERzeT3AUa=G3Of=}%mC zM;vvunE>pat@9Q0Po! z(~|WqRZ8dtO3316P_St*{N_g>gFj!lIb69@_v@l}&Py~Ch&<&Ulk53RBBB^3Ko2E} zpt^ch$O~T*yOx}$u6122j58@4wgJU9bsS@_AO`vG{M%`h1#HVMBFiepmWSei3TOvA z)5Kf_IG8vq|Au)PDg)s0h;+TUJvLRT(gPt%aSN;#Mo}er46rEP0o$`y9?-@=D z$)?s$7u@o*J5*M>n#K#Vk4H2pj>p)l-}Gy-;-{r`84C11W(cgynNnGv6)$%*AX6SC z3p~!FlvCchyh34@m06gaT+yzG!=yl%B2!$$yXsogg%HayzN!VfY8}Bm~wws0VZsrC<+yNne$*G!#>MzW? z;Wnl`gdV#~+1Pzx3F`yr`e*-0DOA#|`Q5O9XsExB916qYyq_7|Y8vBAY*F#4{b!|o zf)g5W;7rUt+7HnWbddq5KiFUpQD|@ims(*##9jol} z8gN^)jVIAt)y9GKZlPwggAk6~B`iBkj>E_Ue&}NS5XHa{(Tm%6(0R5n|8vuLD>?2$9H>4Ti8f;Rp`a83+i(jTGMdrvh8sP; zqM9y~If!Us^lyM++Bn`3j$D^}Iex#M_qxDW*fa5wFR4CRd9!CmW%3rN*K&zEoTOLw zuC8zNorgl1*s_NtB#?dDomgk2nlNV?t9Nyt1<+)wPNhfq#sO~FoZs@_&Xw;YPTYdUc~jcD07FI^6{#IUREBv29i7sp0F8b^cgtM$ax08H8Ek$#_3>@Ao^L5@M-=Q z@qPwhe|)NxH`{bn45YhDgfqvu5NB7>na-_#DKHE#U05_@5eL_thXT(&z7( zFa2RgJlz5JkJ%)SwZ+;o0%>sG8Y*!xxE#Qg$61E1?62v0%Z?7Ejqh&sZ85YrT%j{! zz0u3z!*e2<{ByuBDa^E0&+`rY9c=)kd_FAopFq7?}t6R!9<1VAyF_ZD}=q)76)KIV$wTbyx5PANt}5JZvenqJNidd zEBLrW=WQUBOSuaRML&AmO>)yu<+knqb|a2Xl`Gq*q?-kbigZGtOSdWlS%RS2Q8qS8 zfw8!sW?upAOxdg!U_j<63lits&ihu(po!zUg$E7Sp#ek`=d zd3G41T6R7sj~Tx~wK&npy!X@Iuj4&Y%XQD+`0;Yh4QvyNV-7Fp7qMO$Ka;jRIOG>34TYHqq!Gp&i+?ph$Nk^zPhOtc` zqT6@>qT=r2-NN$Ov1G4B|K&%Q`Sm_u=7iFR6q4%PaaY_RlU|7(X`R|}c$bCb2HvF# zH;E_W^afJ~)cr)s0uz%5~gY86gZ^|^i~t!_GflYSHv8nTF0h3F8%@bG$80`>te@DYnsopBT^(<9>32g}M$ zMetfWn&%6>q(j$o8#BWM%gxw}MGg@~mflPtLXlZFix~H}C!o=jy<=72XRp==c>|qw{Slzu2ni zv}uvAv>Z?!Jfm(wFKyG#-X_4ey?8uWD65+nGVx1`V^`YBu9}a=TRZWY{h}0=U1H5K6DPF)xv zrI$ShTGUOUWaQLt`nwN{{qyTHv}6)C-%S`9ez3M<%T!}4G*ukw{)nCr9%BC@%Fyo5 zbGDxB(%gQ}+*(ZIJl-Z+enq|z0W1GtiE5UWyS_$xv7G5Sc%Y3uqmRoyE98wlReeSO zLOuqpo*3)v(9E!SL1q-@wE55J8LJIgNh&To2xe}1a9i}-hs3Gg%U(3b(8!1Faydmt z!S*5${^`x2jo}SFx1H5*qW1AdfG!D6dl~D{b>Kvk z=pDbAFdgmm zV;thhnI;mAg!t{AKOG1Ni*c|T?&`@w1F2+omz!_4M&8qz3vu9B29S!Kl4n=-+&`Nv z7J{89DNFwYggdZU5io4$o^+E+zQ6TY++C&Kg!${vZxJ9RF2jLv-y}yc^T5NJjh?sr z!#}@E1~+Jpil}`(xnEVdtz@~IEl}}kN*mK!xERWLTsYyBWMM!`R%FQSy1)C-mHolwroq#pNF07}z;KFUVh zXPl!wS`3nw%`>e+vBQDuSUKN))7F@6G}M3Qu`h#F z6K>WX+In%AdK*8e8|>&5*reI&RPmzn_pAP(Vw3TCO?$!lDVkmAFx>~-4E;H`Hfvve zQ!%p;_!d_r61G|zx2?rwX<#61@oZt0#hutew?^lQ@6N|qLH))0oBA*bfRQFUAM-+k z#hNRysx&)8_hLK_3k|AcpbbLTet!3_i({TKkR&%S|3GDNs|0M;e$J;FGJlbDLtXkb zR|3sm95i;dNl5s`HXJZKr>n4zFVVuc3vExb_$Py|0xN4{ zOIg*l4akgl((OxFGY+Qr*}J3RlHROE&Y87qfSWl{-z<~)qO^CF!{9Aa-Bl>XaN0P$ zu_C7c(K74-Xsdt9ROXcHVK8eUj%1y>Jx~Ra6_i`aqMKr4_|@kilTj9>{i!t%mQY?u z_MGIsqJV!Pj{9zBgwX^roKoETTX{R9puH6``v(EEDGbx-V|*PZ#wgapbnMe_|H5H; z(NS+>G)d+Rh=|D^yrOQ*1TFn%8HK0zwUQ_m*_AWCHtTyfbRGSNy?TrbyS-A{XGrq^ z6ZwL7GeEh7!rbaTGxb1JE;mG8!bm#+$4HA0^)xnAC*2BV9~GsI1)}rWK}!~wt`pVd ze8rLU;n;pAAEAwcy;(a<9$w@i{KaUoS3W4bq?S-i ziP_@Ey3q6GUX?@exRNi~(|wzG!PQl39SWwpe_@CPe_le~l`xpT2ik?+B^4&b#~z8dHF;ZnSHrh1Y{>m?-VP{Hp{2ddM0mV zw5Ndmt*Lv}CEf*4NwQ^&XR-V#AR^6dGY zE%!0Pr!Q~nr*4*NporY`7I#IJZF6hXd3i{eRO$RHe>BNmumj$y>?a{D3nrMR(+tH! zC(KP$ffAjzlsr=j@xpCsj{yH=#obfsTQTIgk5=pklYffp6OlDAvmR$V(}u_sRrhIe zWTES*lc!fgW|2a&=!waswh$)KHOj6V7AQ+quQM_b2e1O;6PI2&*QeDMUeo%;w@=(p zU`Sg5sMjV$If<(BK&;{;>b|HuUEG>kObfGWFocNb@iLQuuiZml5y{+O5xGxd*Lp|JG$@7_C3jr7pk%u z`Dd34xKrf>@r?__f$#~=zHE_E;kb`p7_L*n-2{ZfH_*SfHQtH1m$q8JxFJo)WZua9 zO!g~pay*&^ctW3O-uNx!W{N&gmvBNCoq|GDtpIGQB&8=Gu|KKgNf84nl}z!uGx_%G zYvq@*YQ3uJXINWq-jWUI;WL6pb04h(77%5J3IAEWxcKzeogE8I-_lM4XkoPhm_Mut zV+$&AOjD#gzT)pT9S(ygU^xF>C?w}gxBW?McrP7f^Kd)SKlG7Qyj7E{9a@eg>&wcx zXaTSD4w=&0on-Ucn>n!Kym1~&?COWB^z5W9EHbscV|#YFyCUSXh|x;L)t7hP3^MzM z5Mwt?7}N3PFm6_`>FL6fX!FnRwr~E{L#q8vHFpHxP9{Hiw9{2cHQvKQ`U3B3i!Wa& zNUmu8zJ7R>W?-cVWu0=XBE%lMEra6tZ42w?wDZn0>4Hc8?R-O|5`L6Y?e-&Vvy(j< z=%We_E+704AT(-DE!oq`j9Hl%br<(2T^go@n z2vhaX-r`;;zfdd6F7pviOeyUf1{I#Y#TlG-%+jLTJkMnAWL>WBq^vwO!zMD@E^6BH z&Sx&oox5J#`j1}-+Yc>}`PVE8vA92waTa>gqx2txSAA50Bd@Kt`Pa`l&@PmqR40T{ zehl8ISqV*?xfN5))V?1}ipOgjA7j(+I5quTm}%AsNEUJm+0-9?yk3N5vvb7?!}#-Wb4Jd;%YGTH3-VWJTA{bUvV&a3TMk(tM@0sN%+GuKPmgEYgbYMCnka2^|6 zGnVJiq>DYG(h*)iWE&|ZD+D^fq*qhxWpc-4X(nSB%rNNSj`P;F*)Okr-lgxupgVlT z5Zc-Wc&ZYN^oaQsx@r@j8+1nRdXbQL?QMR#%QpoG&tZG+e3%9w@!H*x(~IJzlmZwZ z_ChcC;04{#T36dv!1+CJUPk>kLz{3);r{^3om-30W|D*2yS(exK^N?aVukw8$?)FC z42B2=mGUA9p=Rl?MyYaEu^rM+pGIfc*-Vf5$-!Jsk#^s0ELv`)yc(a0xd{dYiR4`S z)J5mb1-62fPm7NUL>O9?PI-VYRdZN$vg=qPKBfA`#%P-;!tADNBpA@c4 zfyOB|oUcxLqE_r)eT>`9s#o9%1x9A?CrV*kG>JkmxPZ+(^??Ob;?dDKi^?~~yro&j zxi2`{iQTaFrvE<&^7}2btdgM1WVrV0gd+ax3dEi^cVXqG8+iYpea19wxArXvTgVh7 zunr;7Mk>d1TZLz%0XT<_SVIf5)k*qL3E_&&(z67S;xY#!>TO_)uSL9 zx5}L%51C%P+~_JI^pKf+n@pY{+o7xv{OxlN<6vU6w>4DLY-8rLs#to3p$Qr zE-rLM;Fp;WOGA?ee4u@+Q3ssIwEDiHblWK~$X1g#vV>uRbj_|ZHJCz5d=?kr6&qC_ zbu`b{6M7(E>{SkQxiGkb^jdEG_>s>W&i99Qy5culuZ2dG?}*-vhDkbAR%?yTo!UvY z@s?VzcL)DPWrB4*!xd+pib=>w4*SsFD-pBo1}TtZ=z2{!C`-+ebeoQ@{l=Kwf`cRq zfo4dCIR|>@?Z7ieJmwYkVc^r1wB6Wh7dAZm8w1lU2uXk=-NarH1z~4V<~@_B=FG;bd(XtW!zwvuT`xG;Wct z@U@XJSFfF+pfr?rW{Fz75#g#`nx8&?7nrp5+#V*NDOPzA^<(g3oUQt~@vy&9vawTl zgDQSi=aYS>?!Iseljdq0+ZqbrX>J|#fP~!cGi6?h|Ewd z$7}TIStBC{5&+pJb1mUMkx73ALiX_i&v3p!%p!;u4Qy)f=`1c#WSAfA(vw@u|35&) zjn$u5G((zTqH~>TrQ;Ylt60n>dG^h%aE?Ld9(hk>S(n=1oP(wNQ1e`l>cV3(L)%#D zs5^tzdl@o{K56kS+cUO?0I>&Y1@!M#xC3x~LJoo6#~g!ANIFYZt*FTqM#r6=bXbhu z`C)RWGxwFy4)UP2=~x*$yZZuFI%7cU*;n!r(y)n)O`7e!@4p~`50m@F_bi?rVg%Qn z?q!KeH9fy1p*D{K#6ga1IDz)`8Z3=8VpMw`4srR82G;%~xd}@XX3aWl`H#gpY4_Tt zLLx7mE4jnd*xUAJ;VHQPZA4|vc+d~KEKNpUW=5Xp$#I(Hs`@?jjG8*y4qF~^1 zxpT1A3IsY)ti}F|rmtknb>QrQAczfR(RG$vw<@rDLi4cl7_E-BrkUJLlHaN~0x!Cs zta`&`R_IKxKQeS>a_pST+x}tW_hT?E+-)}c}*0?p7Q+eJ4K$CFhB3z9!(e^|< z8y!GmNW?pdvO*aJ80y2s;yHs1=7XxWq&%n^H`SMW9PUbl?h&TaU1<0o@MVD}+o8?A zf1HxPXT06*K`Wxg!Gqri!qRv%Z|5kTaIxa(n_R=a8)rqdnsman9+5eZqNd;QV~%yS zrah*WzaxWPXYb#iW;e@mE6=2D4T>8I9mVX^ja*Y2nHg%rs;y8>m@*f2uHUyS|2P$~ z|M2>wbYmai^1S-N>X_ULao!4EI4>QjkS^w%{1uJ`IExtTk59$}CLm1M<`Q;f*|?`4 zK9*kidsjE>Kjm@_4h4KkMbphkIUx%>g!jWuW*EEbS;_T>zW?S5{!XbHx6Xds>>E9A ztc@x_U%9DJKlqBH-5=8ayYrl2yR_Z3otv1FpOQb8C&k)q6uzg>wCx{)ePELh|MuZT zey4gn0seKK1@!)o?+NQfN$1a&<&Sd(*<#xC3OYUB(BtxW6VpB1MALab_9BeGv| z0lC|ZS0Kyn+F$R=UHuSy!utAg>9%!kiIG*8<+SL&==_M?ULFj+x)6DJpIRGRUpYXY z8Bpf>*F;-a)Aq~7d2-SH_v8DU(1~}GQ$@%BoL)eb(d9oBCOdq;JvjQNel*c8skr&R z*?t77H|;^e+GM)@`)Lzq71gVH_N}bwR)4dP&M|LtCYTbD(f7Nv^4aKZI6eGTu2hCP zEgkz;Nk~j@s6*mjq>UC{e^JOPOJ&|m(r2`^G9yz@;CXc5=3(~P4 zmwc&nr+{d{nbuccxkM_DI;uZ3#dDSOW@(C_KEUOEa?s7|$q8)faiZ84bzU+;&dAVx zRmy*u&3tQUECM5^u}20i>=O`V%B-d37T-|_Taq);4JGnKz)Jc)w?9L z^yXl!Ds6PctSDBJEE?3&5!Mo@8qoiAcwq0Fki7S+{SE~m>%;q-d9UE&eu10NSvJ$* zLlQDDZ#&v(8|4SFoi3!?F&A&wVBXTTeF&4OK}&|K?tTAyaWAj?A)6RbHMsxEC8%s_ zs^!;o7V z_`XM4iUO5nMXR#s!b#B~zN6-j2|lvron~Psk3INFCCojbw`q&$(}!@k!)&~~+)HqH z*nu@dF30p)Fl$z2rM`i&DHCHgDADhiloL--_`)JwGh~o_q#MPdr6^9RT3#Ng!0|v5 z?1pNb`t-g3zVfmHXcfE*5w;R$SD~g?7o*VB^UY@#6_xnu%gQ@V19I?F{V(*l@+dD` z>yW=Kdh+$(GP&?t2UgQXjj8FysTlK&pbG_ptl#rBL)4cu1kLZ>>sfbU-9hJ2_M&eZ zH(63y?vy%$839omP1;B7nsmZ@jchE4!(i%=m~X|XPs>MeB%e0}xsqEek8NQfbUKBB`! zM&``5!v^}bh+(FPRwS#%jfGc2qPZA4A;NS;8|Nc8js1>+-zV(&$ISTU2vAWjn0fPZ ziwT9j*0O_1qj5i}qn+(*ApIJRnb}gjb%!j))j>>az-Y>`Eh2FyFTbO*n5l8p^gmYC z?T-=^Hi`DT1teBlOwwX1WxeZVfP{fs_XMX)O+?*1v|liqRq3qG|7B$iLiVc z8>@vO;V?Lpc@AX;%C4S{kfQB-n@$dU%02&zTd8GuWDlsltP!t zorLf5MK#d%*b_z?)F}&?hVe8*dluo44xZ6Tw7jxCrCP@RT9=5(J#kJI;o5D}aiwnO zF@e63f|b?A%S>T$nzl1LbY#|>Z_kU6_2XJljFLNCG2ehqx*OB|a-CGv>0VIEtBS04 zYF>07KkPp0Yb_7NCfem&Y1g;6dnS%XO;E@!A1&ZYiyW29oDJZX$~Zc~_Vs`ER$7!w zmBoC!pwV1jq#4;WbtAVB79|v~BPu=m$DQMMLdJjegfBusne^k6Ay@?ymd;LJ7Z7mT zr+j2|iY3wv7+UI1^`Gwb7i=wru^%`XHmipD@8PK$6+Qvc(VLmUIZonT9|eYy{UMaF z{{b$OISF4h&w*PXd75P@{{!4kY-ea$3Z1lSP{3dS5|1uU`U4QwtBPuJf(@85>>^y; zT&i>4`sK_D`GD>)nI#*KI4rhfwCC2k;uPPapDt=v8_QVuBt|2=KPcV5R_k@&Obbqm z{+|_i=k|bl=xhvFey|Pjv}PAeT)f1^SlW5}RFhVi4g5(V{~CHM)UrXC>9A#M2jBK>OxhypS@dfb+^d)kYAql)9lvn)mdtYXPTIqR zw(2Jg9(dMusjZNuC>WzQ0}V|&7hJG;sXj+UE!oWgdKmkoCCneZJ7<=IY{#yO0BiMC zRsEWOew(7#-1a~1KcJh|s9f2dVFVT)V!1OyOi_Yutu7OEj2Lr7^8o*+PUBi1QG+?M zX9gAKJWwlDuakFU@ter1*H%$ss8w!J;zV&cwVze}NDsuRT4w}@2<|^s{^04@R$ri-Rql#Wb>yg zc*Q3GSe-I&F`arqLX*iFORq(l1t9$$JoM!Iy^ffcYOS+eOwIvnbN1og_aFIiX93iH zD+*%J4pl1Px!r9dF6@)bt1LG!tCpU^yznYeBu#sXo|?r9Kt?C=uFJzX8&qs88PGDc z%@Q{%B#S5wAQ(I{^td1KwIcL*-r3uJvHIMJb-7xPkwmEz@SimT_s55|um#$d)0Qf9 zZ(>y`@Hai8hw>>85QdC2WQ$3ab1;vfx3Lzv9A*l(&6O$IQ@=PWuiy-B_4{EU8W$-d z9ci4j(|~yC;wX%0_fl(PEMYa2Llpu5qJ~>6PuU%WKfT0}I44PBr?GMq!V3V|MJ)b&($x`f2CA>ekeaD+OrEE3=0E6cj zG$?WB^0VO|e2zYoogI62lDQ=3j}A9%hkWk6O&7afGLS_Ql|4U^7Q1|VqGylr zGtK>#>kG!Vvgt`HL^%M4p@yCSJ@W_#&92}W7IjnYl7KJBC_=MHH&p5?WSYh5CL5u#+l1#iXsZl}J=J;xcbR*y z@MmS_hP_-(IU@xgpUY7-Uev63=9d6t?^2iCxS}@Lp9=2A^<@~yzg=R9yb)FMi^jR4 z9jUZe>W%xf>ndH?JoIKY6};Q-9*Zjla?Y3n517tl)Z77P3w2Wn% z*0z&-qA3^htcKkxEtP6s`9PFr*;dRNc1U@ak^Cp{MJlDSOC#R>w)-pV8xgHJB12n( zV@}`xSS2#EU#Xs~*`qL4ROB@DTvp89dYJV4&q?#`c-;fOl>>~^N6ZuP4>)qp+9&fb zwuJ>HsES*OH$jor38c`Iu8Z52G)Y#5fz@`c*r`LktaWa%F;r5P3IdZJ8OZ=;?z2NT z%yK5k_UUf?A0880Z3VdY9OmYofBBA2`bAUI$QIUKfHJh>IUgxI!K;BKv}-l-8*T;T(W(g??3uR z{ZD;JP`y`nw<&dKO8hOyM%Q|Z$~cILt4Mt*kz(Y-^0-mZ3i(bJM{y4>nuJfNxEO2N z$LNkW5qYg&=Z3{~$V@l=ZOjyp$ui)Ib^QV;j{)=}LN>*WVw*_<9AczLfu%m<>kf~M zC?uyp?hXjd$9Fx1617Hz{$V@-9=8%McVN%PE{R68TPJn{@>Zy!dBa|XbWso9CbLy; z-{rlzZZ%7B3h+$y#wiA3%bg>{v%r#A{<-a%Q1aJ5 zRbQlgh*M#ZgL1rw0#))UE4JS&!DYZt;Io#?8KN22FEYlOJ8__0CHK!w`$fg!Q!)9t zL<=Vrl+s)cFg)pg%DV|2_4(Sko=`iGK(4&nHSAQQzey*o70sL6HI-AOpt~ zO)rTErSZ9GGOv&0w{;|Ga9{61V0cNEd_~qiNxB6C% z<3-@@(<_fXtZv2EQqyzVa!&i`0lI|0LLKhf%W~?+eL{ugxYa9m{Boysn#Y9tOx#Lt zOAiyWFosq7@6krraFTckO&t^Ee9p1-nxeO5MpwBe-?|5u?k0<{fC|V6fm9S&>Ho0kbyu*UQE)lU^2o_C!BhJ@Fv|?4po+KnI|n^v8ZzIpfxB=`eNHP(+iC`HapXtppdtx{qP7Wah_m&DR20!kng;-K zI~=9v^YWhBtVJuU^o}ahgYSd#R=5l20V_@{0j?(uOB1ekqNlQ-Q2#a)rDQmlTZYPy zLH5xis@xXy5_a5$eE#7SYJbq|1KOr@(;LGeV00HLuEpP%+I)UGJE3m{`|8g`#86T#o_T71kOdPKM|hf5u# zDC$x^R_+-BV)qlIB-R9IJ8u?$u71?k);o0>um4+qc9_tHX(P%d%8Aq8ycOdg0@+f8 zDj;rLM0$S2;NGF*O3d991Bcf)y`66?&8?FEcs5pUJB~aj+ExfMAO@+sv|k02L!)T8 zngMu@qn5A) zZY$Njm2`d8mA|OrA2G!)a!15oUUkm#r`70n3ImcJemgKFN)E0v8zm_!Qc@D3b(LRh z+V&e`;x@twE(LvMC0xS5w{A;t94zAIS*~TuQ=hluOQ^|lxhP815cHPHdmtZf-qr@h z;GbnZKpVYbwAc z&CxBhHg}T63Sw#X6-HZahnAZMRQpS)HgL?u=1G(>k!y_Iu1L~PkQ20(qx4?`3>F|l1 zAXRy*h8|pUfLn1$0IXbse5Bs{e-B(EtW~5HmjI4E>KFLY%26|?2DAJ&*(;k(ZMy7h zrutUd0n2+9)T{ph$~`f!_FavfI~k*6u!2DV z-1N6ke13_s!NTEwV#!QlaR4j|NjBM6{cvE*=!Ybt;FJ+)AfBI=B}6jlqE7pQLJp*j zwGvOhCo{QJNWe9A>k6Cw?e0DBeilsx-$hmtc`?Psxrn#_01(62bqI3a#G=R0er7-< zr&EjQI&XKU8XenA7dw{Z`vAT#^a&b+v#yArjK^GA1*7+ zdU=G3tRiS+;?t*pcbez<#*~#5tr`_`r~&kz*`xbq%Ql4R2w#fu(x%9pfyQOw(Xst?8G;O5&5xySbWQ_y* zmHe<3+$Y%K7&OrcJZ7+00Fh(4zp3klBSie-_bUEf^#TarucjQ^jY8v;os|-R6aqo9 z>IuWm_@U=MOCdlc5;q5ay)b|uB>(;PT?xLzQb{bhVoBo7t}9kN-bbVuS`4=QWLF} z+5(2c=hR^fjqIJ-+lr_IaBc@~xI?~(PJM=@c%yp}U=H1IpmAK|!$p3AkeiDiwi+$L zKR-3?2`5&q`d_{r;y~_Aup;+fQay$G+X;K|Ov*vJ@JK2u=m&3HAqRqRk+;+<^!3yf z5zt@064qQ?4y9E;yKnr?658sX`9@m;yizPq_a_|Yo9MeZvAU>01lZhr;il=q&El>I z-qs{v(+#oRJ+gzcxTK4a1-t(M=Z*xCqHazu3e_UR_c#7Ha~pK7c^g{F;MgL=uWT{E zgveW_nk&?WC>tikjex?o*Rpf(y0<~Pyt+rGACPlQbKEo>7DAMb)o*MtGk{Mrk~0m0bx@r}4SwMMH>+gj(O40{%piPQLPkcNL5MC{+@NUA^w)^37**76P z6*LQyoq<2Y4lg#*Ff=QJSGXtx3^IXYm9gB}SCpiuPwVZ4E(cV-S!$s{D%cP^dyGYR zEwKt)97xM$PG8bR$oqA~mP!j$H${}_t}P24J@>=gEz`QOuvc>J-s8}oqY0k-q!6lv z17JnEVL`UZ^A z2(VX#j>f>8cLcyJdn$nnQMuAbUHjp{fShv`QrQ;zeZbod2a0P)D=G$+YmiR&7ykew zhc()zZ+iBd+d=#H!dU+RP))dY#Z#5n$@<~hyVBcB*<2DYZ9TBk-t?>oh+Zw5f=X@Q z)cvsB>Bm)GSphu>I9$mzBSmR!je!dn>)#!lTNT+&yDFun8yghi0RXP*iQKPf-)$;B zfcCv;ZNC2iz~h|I4ya_4va}-BQ9f?AH{TC)u56Kl`>S;QM1>td zSYx<&ByqX5{;KkU*bD831FCsow#v-__Ew&so)o&lH>(PYK_mo)D2rPh!^eV02W$ed zNIJ+TRrUmp@b-Y3{WVr8I)8HM#{dqOPHo1dFD*B)QdMGq-{p>OnX)q5md z{kq`^&8bS(8>Xtrmbpg;}dzWSxUa>0ZG0AR5wpNrI8+GgU!h(>u zny!L3vVQ&W(ni53ByOlsEHCMXjdWdMxeCw%NU%xu?}f7CEr1K$ph`ebPkw_5ZfSDd z=&7Wt;B~`|xh^E|-CR?Btz~!L{IJZnHw%a)YN4+l-l)5qo?XHJ8veeO>H2jlaX3^3ihb@5wY?8t8KKl*yErCBCwsondHJlonFA zG@uooiMbc{82QQ7qbGXy$5FgbXI|F}W%(wJp7?VEBq52JmSrN5DK0KJ2`xBE30A9a zt=39adw?{NU@=Afb1Say3s3&+7ewx;YIWb~vUM}h8#twz7^AyH>TaT! z6k8$kkPDHD0)oP~aG_dkPMhtz)YWy-=3qp^=}k1*COVEggZ3y^NXQ&Ysjfql{{U<= zLUn0Mm(S!EN-bv1fGR;Z{54%W?mOb9m6F_C*eyMKS!1z3FAY}1_*0o=P?&Qr)niCX zqXnt5br6Ox<+6^}7v9}1(-)A|Fm_&b3XSv<#_OKx)azD=!z}IyQO`r#F6^Us8{_y_*JQh>G7mM(Da4lZ-$fHoLS9g4Q>s9?YFK5=V+8@LEQ^! zlc;qES7Ckd$83xk4!5$}$A`ZGc_WJ)63ZM#%oUvH12I%pC1_$4mP0COE)=$OskJB) z5~6oKwix+G+Ap@uPY=ZUG8K-Hao7-M1?4E>s3c@Nds(QM@^DKilkFW!W1uQZr zgXkPPq)MVuo2tuN-EsYLc4;3J=xJDWke>u!OYr=P zEQu~rS4l9Qy$yGm| z;7!AAX+cj@aec3Y$AV=yB{lfFEEv&n5!8+t(&lMp_ZJ;V8!5AJeLSRF26hC~t?YyR zUAOmE6!5B*$U_39IwN6MJcOiQZ*gL8zT*;N!VZ8H5?n?zYmbV8J}TwI$xt)4Ux!wa z3PW_p&GgiE@FEZbGLj z#H8xItTz7uJaISGBec;_w30W!VlC4Pn1$0=v<=lmLdNJM{jlcmx_n~8WmL3mO}d-k z)3y@hWIV(TG*wGPtIhuamK||z7Xfpws{H^34J2>3d~n@yk0|6-LquIfZ}+*v-}+Mn z4YO{p2o@F?QVMwQ8>_iy;EjRna534mvS9!VZQ!oZk`=MHaB=aa z>2G6lujSu;fxh<`Mw7DX8ZWw_K>9_k>C*Ul1HmA5wpS&;L;?Q$;g2VpbaHF5s#_Ky ziy!BPkZzH>8xXG2k#WEI;n`0VnYe7K8ra-_YeFF)YSngw zai|e)rwf!2m`%0{-7By=BzMOK4VM==WC=TxEThmIaRE5pQ zHc|skt`~|z?|uD-91XMyue*Y|DNxh8ho|~s3x$_8gcae`Ch1Q90GPu(Q;q%ImHI7V zbALm&8eRsxlZ0nus_;duHaFXRc77?jNZ_x~LXT_Tt{hF%+S?sfOJtL^)H~Q)2y|Uy z3i4U=8;cA(J;G~RNjFz1ut+~oZPV8r*AOh8;MXq(zz6TYz8d3wQjJE+r55S19k9?s z>+)8X@3pt+aoMb%=3QPI++S<-`{AYc**THry~?wf`?mcsx6;KhG&txL<)dJJk=qPt z7f&RGXl$nT7YEbR9PmI)jkdk_UgeWx)APO%6!zZh+H9p*sE+r(7)k&&A(=f!y`H%Ri1#`sn~+7g{3Pdk;DmQ{U~Z$fQ}Md~<@iTSGAP$~59g|WTU zP56aCg$r08%wZk6R-Ki3XHXWut%f){`=^p`qR5u)cGLy?bikd=r!Z=)35Cb;4#yU9Fm^Tk~`(BVoQ3uF*IGPP?l@cCpcM+W2wNKQ)JIbzKTJu^{%s z+$I+0)UO7ImcZY>7){q%yRUNZeTfA6bi?$ulk%Qx8iwZGeSJs!IP2+hgzn0xlTp>T zOg8sRmgjvH;l02rN|Jp@!i|%S`CU;+w#RSJ4QO2F0o<)98vu8;@arBau7536x&lZ_ zih_^ljvHMon|%tQK?)}1ZTX-2VRW)b=xudxF4{l=L+y?axz%xD8>>*-fFP)U*9!Lo zvTJhyK~yP7HnBU~2yVE!ycKj0-6F%b5IaQRbpRi-w6;a)q<-1-669dWow;124V724;q?S_{N>bof# zg+(>Jg@OM7f36jd161d=#9HdjCfi$KYu?|MIoqM+KhmnC6?sU*LAIehxSa~ONmas) zkD%?2b%J38n>%&lfS#d1VW#Chzyhhu0^0=}@9&NdDGPPK6++P)lWZmIiLT{%w4>Es zyJ4Z%**hrO+p1|*m2J+}^uYpVz~$9=plo+h_s0NvCV~eY)vEG^6qBTz6KqbX zTS9KG2s_vTZsyo)t+_^FHnOy%atKj3?}fgX39M?Rw;rABFo4-OgKJvKns0sfxADhk zTpPryl-z<;lj(+w?vmG5lwV=_Twe>SR=8bUlmT(D-*Q00Uy9*%O*;*eq3z!Y<9(8r zSZ=+eU@kqd+{2cs`2lZbT9licSl`rj!a2!|W%UI_E;!O_Z*dNl29AX#btp|CDnfTi zN{Uy%{t@54K12TiXdE&}R>vy_jvKG3{fE~^C?3PRUGrO0_;LI{_)nbj-fZI5XR2ow z^PMuPX^lmv&0&b8r7+vXtqwBbDk@p?Ty(X)eqh9KQw~`Jjn4ahSJHhS#o1RhkWRs7 z+Q#G^yNcXud^%(qRMk_L9;S6Z(k`ScDUnjp~1t}?k4=*3T1e7eZ0)~5yKF~r zdSji2GS}DD5tysC?D@C%R--S=jVWdoE|m@$I-JqWQ>q|XBXUKrW4Jy2aT&O6oqJe! z6!+H>EYdIG`>Yw?CbOI}Mq$cw;kwNxr4@0csypSmD`vo(EkQvf=sS^XV$%+l^iwjX z4P4W4eMQGL7E&i;splgp1Rfe60-%}j55q-G)bz~Gnsvzm6)jFH%W?kzb8e@$J#nAy z1JYdCTqC#me|64jyq&J7lV0nu>ikpyXzQ?+0B77Ph6N z0HeO-0gte~p5xQvSX6bh*geBrXcx#H)p{{YgyRpQqX(-NBIfqLdTGjkbX?mTz)JGI zumV~ZBG@2+Nj-0C;q5)i8FDmOi+@Sg?e@dRfwoYKy%cg${(G&jwqu&P@3^dpO04woaaA^kT&A+ib z6JdMrkIm0$4ll;)b-!${)NYJ`+$NQ$OGe+4k!~y}SZY!cAPbU3&9AXG-1Np*BCs+v z?6E1prJy$^H}oT}ILUN^KJ}4EVcRKNdyDOY2MvnnHrlI; z4LFgnd-UG~4Y1Q>7g()vanmDGb9Wc&rlCzUsSmLli&8_kDOyBA>q*i5%SdqCe((o! zFNrku(o;Q>!ffW7td&L^9b=`6VRk%N`Yk%~ONTWc9A?U;4oW1wPfN=AIW8c9A)*44 zy?`pxp?i0}KR|t)bm|Oph&`lrtsSsFeg%9d)Bc0ag4Py16C1CTo;}_vv{Pf#N_{$S zk4FTrJ`Uk+6$4~i$J=p*&&?re0{33!k^SX%`(Z|_gRi2uls32D^23CPZ|*9kzRF1{ z_Er_HNOKad5+LZTL3k8>#VQ`Y8-+s94+%`dLM~d)3Hr(yhb-@OSp{3fYrLt|@UwfP* z?Zqy;U3)+#z?=U7EG_I4udan%YYS-uYh#A1u5Pd8fS%{_>4Xlsx^QV5YP=gH6Kx~E z+X->7OW-W4%eB3K-%N9ym94oKR~ClX>H6cE?g1o>*R&OMl6KT?Z;rjRNNnSxzd*Pm z_w>UvDF)V5&@~NPj<&uXoS_B_g;IhD@?ZS0n%LN_J(Y5Qbdp8;^}_@2c9dY=A!Ox{5=aE^&~(7$ zcp4%$JAhoMrtCl#ALoNMKmq}STdb*Wz=C><_re(l=*(q?p;%FSTEO42$2r@T*)Bzu zQi~}@$I|||gCzFROOBjc{F!=AN`A) z{xZgV9N?8vJRSIxl`)!s{2$EFB|6!0u`$@uwWJUUyN-^R8+G3lkM`5i_BQ_jsJQNH z&;I~|r!&}QKc6IwjfDRIYF1m|T$fS)AD$^5j@*%vXlQJWR&y}H1q0vlHtCG@NBco^ zd^>pv<|F%%v~d3bv&JwR*`5G@{G*S=F$jU+Gmi4>V=l;lhBT_?ok@o$GBwUv@{6Si zN{WTnfppw%H^H0!(D)x#T*gT2a%dLyaudJV>b=tl<*S8+?eClTS+_>Bz8)SV;f|WtbxIcsY?nU~BpZb$;P%DT-rxE-#^#OhfB0B_H?pFS{hu+X zIEmj3V1H^uuZC8ijgx}!!>h!qN8!@)B%}eTsTqZf5B@6?)6*1Z{iHAeZstlqxQho~DOD#OkWP(uQ)o_%8Tms~a0BlLH>OjQi z{{XZXN1bfuM&F5N*q@Sy{{Z%M#qyWMJOn0|wpjlF{3kU05;k{+ZxA%~ zsSN01KFZ{3P2| z@+NZ2&pyq6C}xTyt)Ik9x@*jq$N04*Tl2=Aho!h(SiLn%AAU{;_gP#=+15EjA!TJF z*hlwI(&OTi>PSk$O3|;d)Gz-4TxbB}Wsfc2FtxumS8`QgQ>y(9leQ3oH6b!Fao9Ih zEhuR=I(==vJ2F`!BGyzb^tds5+Kmv%7PwXf9nHx*{=a-UxF(X_ zuBxP2Bn1(K%sD3(lWsu=Qf_qsq1$|RWR8$p;44Zy5IS}P9Ck}fL*jTD^!2am}0DhR_bg~$C1EQvqEG=Vy zz7#J0@Kn;P^ic1AOdv=YI0f!nO7_@V`wVt#1Y)e^i*~)NMY>^0D0+da_KOR2#{iI9 zV6Ib1B--SQSmC9_B>}rD3PA^QMY?`?P)*ktG?Evz4xhscO6LG<7BYaF=_L2UH&d!< z*FZfL0!r)#-o$jmp2~0+I&Q2|Kneoa``Zc*x~4qtK~&}M<=gGo4bN>8G6HTFw0V8L z_-)P63%C_-goKrDJKqnv&7$t8SyPsJ_O{l?UhA@QE5#za9~^_Zqcf z1CxjWUCO=gZVvwdY!5di^4p6QZj

    dUwOO)e9|#QL?6s+>Jy0zdSfP$)%Un1??qP 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%0DbU|wX9Kco=a$4 z6!1F}KJe=%=dqsIq`OswnX8VfF?CIDr0LhqNLI)j*md^D=byCz#6Ua0n&U1#K7+Dt z=)XmMope?hFiK$OJ64Bi2OU$U{{X|@eXRqC*>%u13VxFNMI*P;rSI*JHZH!TEttU} z8V3>NKI#YjLAYf90D&J28TZ6xUo_>+&-*pEi&0S#)-^3Lo^=|WQ9e?pl8ajRa9h(4 zWizJijXyjVccc$x5RI_7x$kySa4Zi!*9p?TIbRTY97AU~MdD6bgO*!xEagAgFYwlf*t32vO0ild{H zkvy@*=H3HOLZ4Wl4&D_jk-V!KbAsBVRGnn?;!3e+s&@{!km zxb+WYy$8dwy0@~uq_hi*8!s~Ui_*&M8kjzmjKtefaG#zY_+sHd3o}$~@01zOu`@Gm zKODa!GD~$2vhsAe+suU}x0_H2@~tFYDOXg2KBvGvj^H?TLu#pFB1Y_U625oGeXQdZ z^sc3-dwREMKxp~hKfJMhz#jPZLQS<^VAeG17rA5rE-%xrI36K5X`xuu*|*f8ez<#V z5<5e6aBN>-H^S_iWNqxL%G|2J-1hXx2WeoDpgY}OD7n3_>xJN%BL(wb!Cj-F+<4gW0PQ8Vff;aOHyKRKIkIeswHDE)Q?E;BQ8U>^(jCk4x62^Rf*!%lyUX7k~TK; zaRc{0OGklpYY@cW)nV|uL&qq%9w%YuRN3MG0Dvwf)gd`u;+;+}3FvI6nBy+AX4F*O zu2dtmbf9d0wF9y8oOowSf7%NVg7M*znVtQk*=NLD`UURY9RC1kxvV6{C+hzIxgDPG zGwwJ3r6VYw9lRvv%ADMzPE}8e96^CGmgWB1lC;Gt4WZ>AGaR54l&ChPT}3N8Y);3) z@vm)NA)J!gghTr*0DMi)#d|gt?BAnw{{YLUr4MlasR?;D?j$sMH8q|Vd{|~&pW=?Y z;a@y4mvY8dGzb;iH_P&y)wAevR%s|prQ|Zhw$tQMQf^5ayz;WPO26mMNq-j;a*8&N#x|C9sx(&$l>F!1| z*K3aU9xF=t-p1UEyXDKxYjeOKi0tQG@hiu!9%t8OE}KuQIY@2d8*MS9lz0L@KE?j9 z?t-IsQZ51-Q(z+E`fN|{8&^poW3EoWMX-tiD?>(}99FD2r9!XpQ^$TntGPQcNy`r; ztqO6(sJ9XBY6>r8fZ9f+sYh@L+}mTtRj_W0Ia7z2D$Zke`2AMMGY)H^<$8WVa%D-W zl}9TE3o-(fImlXDON!D77qA6HZDgrK$_@{gCEVpATA(sy7qQ)G_v6cxOB^Hc<;CiH z8J9_-=h+lGjZICJE{4>mgUqP7gJ6VCr$i|`Uz`EmSS)3}?3x}L+sQ%4u3FhxHn==| zzNyUN7a0==!si6|+ajXKT>RY%w_cu*r%>{wHS+3gAzow!7YOKdmXa(7m?K}2$2hU? zQM&xFu!m?553cG;_}JiPQ1KbSOx43V&dJKu+`~t9B4<+>Zc1Uv{3);`n8~nx49IN@ zB?PNVFRRW@ANAuw?-eoy zXC<*Y3W-&sNu@CRB(|2=T6DCP3;h5kv=ROr_3C%P;5#K-Q_B?W>fSGYYgn~xt-{X> z{9WKR9$Y6W5_3IfJaFUE9GcZus6t6?VMnFC2Zw>z9!HX^_* z6X>gdQ2gybpC!YGh7Jp#4SyIOBk;0wZO|$CdyP4&jUASjT5tAcVjRO1D1x0VT6AUD zZDgmez?t$qusOG}8+;W`BHWXV=Up`;ZVRa20vVDoALu#%05rFkR~6^0b?muWj)p^P zhSHovav`V{+gcRCS}dy+hSzd$a7fU`hS-2rh7lQ%y~Kh+*I}XLn{4O74ib2G<1Z9= z-$2Rvb(+>=%Ti$G87ylntjJ}=G}MKm043F^`AdWXqODidP2p0)1@r#Mn7u|(nV@kS zYwCC{i1;q!V5 z0=h>#tA61^>Yo(po(_Ce&!JZtDazF;i-hEMhndJyUFJt|hU`@0)8#;J_9X-x=@`#p z?*ZkKZSqs`SIJL1T*3Q~B{2Le@y3UqxQE32pu=#(36%5H_dJMoK3RW;z^(Hd1OakIG31 z9YcXJ*mnI1PW?sUInD$*r%|tuG`Q4fKG)5snshjsHQjD3DXHPa$b1_kknI2$PG#14Oat=Iv!O2CfrC=$tOsaI)p&h2Id0*MZJBQD`~B z1!a8tjCx%{I@-IcQgyOkLJ0`x=u!}{N_Fza;DB&kDzTE--?Hv}3dZ8}bri?4J5BJ^ zF1Nft@#iV=qMt|3IaZ|AN}X4wN2s*6>_PsCd%$_u*CT(gELs}r(sy3nZWV* zt!Hsnif;-&AbE;;jTRdwZ5J}aZM&gv!=6%^DowiRl$i>#+Up?gjP(=5QkJ)C@b6aG z+ewkK9dGnoe~Su>SCdty)tPE+Suunu46k;}dPpH7q0|;hKDPeov6$T1n&PLjaLGfO z7d{^q+_}UK2l0BD#r_#mX|+1kEVBx+1&6|thh2pHhL`3^NxDI4L<71Chwo#k>zhp| zbG-gax1_jpssQTEiS)Xgz7KqJTtlTu-B1uA56y$&*w9n`qplC_~kUs`X5(zL!d^(S$m)Pv)73lOlFwxAsi zjqC{T7W^w}93QM^Y_*Xd%DK&madSmB6R_pNk5W?1l&P*_5zMuem20*4C~Zi%*w}SY zm&cska~D?ld}awcu;578{(M%er+h+uC1y@K=Ux$UXM(v-osg+f6EZenl^JZ!Z2<^N zvCN42R;OBZWxYpQR#3guU{$Q>ze=m=TY4I&w2n_U^9JDhEZ#peWRSMLosvd(4q$b> z4vrp0N}eV7Kj4h4t5nbYJIoMvhUItLAG!=zOZGGVf^p`-eJ*$4ct(D^&bMrY!?9z(Gtvg}z+sG-K(K}yhl6q8~P-yY3NR~*sx zu(&y=h&LYv;`o&W^pd)srG<|i90)#!$SG@k0lBrYAV_!Mpt*qP6`D30K-4;Kf?O0g zSPKPGg%UOv!(8ArPib+orjv8h_P1OpH$$<$tI9`UIuF+ibGlO79KSVaY#qQ!S9@XE zlLH%lwN{jicNadGOBCal*9w{dPxrr`5Zsj3*bNG^LGq5*!>l+aJ=WYSN^YV_xI1m% z-w2ha`xW4V2nTh4JU9!dlb7CBkazO!+k7U8mp9X8K-Iz6>b^L-$oV{C;2lK)Q8>V$`;A|DeyL)Z= z;Vy~8Rbfd6`a%ByJR?s4n|ln_R0!CFDBGzP>xbMO()FN&Wl)QfEpzTL$CG5njVyIk z(O_(l0QbiNb}4P8h*bzrrsJXOgf2?Z(k=q2N{#w{cuw?UP4`&JY;=-sx4sk`gaZE7 zrpkb7PTF_hV~!`1lILG_RHMyf)4u&MhWryW*sojnt)!1!H!57f?5^cpi;MnPK zI9QERc1}yl^CqsTD=6hDbtV0BU8P5H66?+>meN)d1@xpY-h`Zd z*X{oR1f+&2MKn!i@3TPpFMakUi`2{|6UgW4H*r5QhVbtUhMgwX zUoa@#dtD00%M@_l_s|9OJ$%MDHM~f=*tZS1Da4%TL4!Xka8%mK53bmg6;3O)jpJu2E2K$EtVX~B9Pjalz(5F9g=QseHzI& z`(dpkf1eKMxwG4Gaw;+!NLz2HHZ66srplB^Do|0j_ryF)4QwtF zw02#KlI0Bo<+ED^bI`gU?-K1u0XR^bT+C(vJ^#y#!2xDK$mT zANG4T#E8H2mEwNef&L$TwF*Y)ARB^vxK?Pmy~*^$ z$>f=S0IC!VTFLh7js)>caMMz$r>M5rQZAb7H0!dilY1Yhw`?wC?OUl=1b4Rf-yL+! zg!Z;q7RUnnzn&F`RA)BDQ%SmPE;+V?n7 zZPOzbC10T4;X7ll61QDI(NHII^=by)aQ9lsV*EAyw#Qe#T<*a_Ek$> zPzp%i`{BjhlUU9c-DJ>jxVZipZGtV{6}m~<;NSRTwcQE2XbQ>8=xuR^gT)-Qn_p$( zi-0ZV!>?m>($GztvhYA6=t;e?$4$}(0&d<4p(e)W^)3F>tY73d9}>O)0HWT*@N6}~_?!O#Qzt7H#yq!o zoriLgmAd^BgO#&ZQ{hfaPD71IsXb4X7KD~i^5jR*R5e@&mZftW^RKs=NVqup{u8f+TS8U?rj(PYQv-Xvy9uO72rM66b`6%R9po()kS z3R7Y-%PQujzye$+=37OF_GRRY?i5q?B(m&v`>pg;jEFX%vO#Bf=o4w1tCb386!`O- zGK47AT){)G8iRV%bVh*GRyC}oqwzI3!9Z{;p#YLp1}o=lTJTS&-CDyjEqkNWUHg;> z@xhxi&j9`)J|4V6(5hxKGYukDBDWRhmQ@XL<^(B4-2&<+G|Y(a6fT5&-&D6+2I)E$_CF83m)aS|Jj}j<3dUj-Tn)}q} zVn;%h*mpv@i4iAi6>-#NmRQyG8KP*g>!<_q- z7==2KS&LkZnCn^_Zl1$Dw!>PIhZLt2hZp#O+gTS_AYv@IoK69wO@9s5Jam;XxQR6* zU)U|1XPSQtykvMq;~rAU6>3gz%bBhp?DY^eCLK_r4mPqB32o-yM0MPOq@bRl;^tOp zE^gAfk~XFn2*r;T$wz^2h^1~f18QCrDw$FRIdsV~7dh&LaI`7+9t?=-P$KJL^lZJ9 zRD=)QP$#KmLBGsx&zj7=)3D@e%F)a0x}osn#ca9ahlE)_Inmrr0(~+=scIt*vf>|* z%O#~JS}stO*?)#ok~Z7v7!pB2@Gte8pK0khtWz=CMr2x9QT`>Hrf==zza98lni@Cua8peYH|cfnGg4GjR5s zKvr+!!`XSL)iU$3o`Ez!%n1)K{%NOL`PQ02ZNWzlO)Ew*{C zs23a7RML_PZjhi3nXa8Cvn%DErb>vnfv7U6A;7IGZps>xok|HKbl(q}yA3_K<#0dQApFLP zMMJR}qv|J(zv2WRf!6-1negrL56pfSb4^n?!r^SJ$jxF4FlJNClF?wLdd8QKh4dv| zQg3^0bAeD})XZ^X{nP95(MN6|E{7!r|ajS)9pU%J%qdrn3;m3}%_pTKsGe zq11(^x?hS<5}YNd%gmV#QXS6GoqBUMN_lodTzSQp99cp@4mPzo@8J<}RnuTaTd}ss zCtDww;C&ND2z4NY?|MR2gH+%9x$oA509QaKISZ`nesfDueDsGQs*enM7HAv zGs{?WMwLcVud7Md*xZ{&C{ws zh=lb|7jFv@WGSg;4lakX{zba|7UXIF02HqVzY%@`aW8@SyD?BWZN(~$5%*w4slGl~ z%xMaKBaO)*A-77On_HU{Gvi^#nVcBouZHd` ziH=fRs^zz6Z@kliHg&nKtG?b*A)+_yW3{oFiZbc<*56gE=>TzsuK`a_2pQ=1WMakXnyRiP>iT7VZ)6i`$M1GpE(+vtQ~OTemX9BtA&s(-xSkB2nj zd{MNa^Zn50sJzT)qM}D5GX;CYrqs};M z-k^uUGc05Z23%E2n@^^N!K>C_rbC>&vX`GpA)9nj@|7t0looo}V$@OGH!{rO)#0;)0aA zl2`Vh$vfV zjampLhKprtLk&E`vK_H1NGzo~)zoULrv@=A2W9>Ic!iV0+ToeEyV!NpUgM>|0@3fp z^TB3gq4B+}(Byo@H;38U10jT=^`<=~^3u}u2G@JGbtP}1zU{m^+Z1?pd5!L;dAAYv zSD3ySUlVFtE`O`XpPJr(!c&TMjx+c|RRcUbPOs)V6u0u#O2NX?3$< zU^Jyes3zALhpdP^3zDF8RpvLoHy?EReG~-YcZvQf_*?N?CxKb+iuFSxW-8>`M8{fn zw6_JsrAlE<1cB#RLs!zI>atP=`nRK%f=ItlCGWuUBlCi<={*^xs{KSnWjl^wu7GP9 zH-{X1%5p1NuO#K{)ZI>&aT~X14;Gz##m9Q^&YAl##qeI;Y+uVeJ)}8@{$aO)u}$)u zJDXWuakFc}^T#x+G*}Paxa@l2<=fc^Xf@Gzq}Zr>dhBt++)~}k9+FP2*MEFCE^y<9d0`eEx;>)CqS|C$^P zs5FurROo0V`jx&%@B<$#(?%N+J?rRPQN`6wVc^x+?}iF<&^$lzZX2lwMGb;A?_i}Z zf0xzM6*!BB>Q9o{bXGSC5q@XpqzpLgYNt=Uc9IM2A1{A6#ca-TalVUJ8$oE+>*FEu zFQ%rK@dNRb9WJ`^SHz6NCtCic^Jlu{&wtw33tdyZ7SlK6RdF~@PW{cCP;LWOGIMK|h@P~|15W^40R$QBZRH*V2pQY6xl75*?LL=koh`@)~&|f&Is$~Aqp!70(mb6wRwh+KG*!PEBc}n zfAm>{DbxjzOKdj6f^3tj8LmPQhWY}PTiXreqHv6j!V=qeHXwd|@W;t*LNge6>V~wy z=mmh>AM(U^$+_gD(=$AQfN>u+(_adyZ&UbX!-#9Tc{zHRjRbu^)mzwlb;st1N#-xa zCx16P=D$>^X|h2Z0NJ2?6OfjaKqMp%;@jekNzF=iIlhaU{{Z_}l4ZmAOID(>A6s(x zkCo%TvW=T-T$e5nYptfm{SCX~=Lc{vxmj#dHvY0AbR##)*82Vx^SJOq9Vf)M4PzmZ zA@^SiX)3Wk>H4 z)W)j36ynVt(4!t!Ow4RAPUp=}c{cmr#C`E&1A|CC>nG9}`pS2+n@G`f%J+tB`@u|; z!Mf&QrZnXqW?F{d&NfmxQlE(2l}2%}btP!?ps0;1&`M8Kk7oY>XWEeLTEmDd#QnZu z&Zon&zgw1%J8Ftl)yc51_uC(DHtXXu6**}Hll*&O*^R7_fOR`7LN1eYZ_BP8LAq$j zMb)Zq!~hd-wj2i((g6z6j>5?!p|%%ft``dJ7u;-b`s092JMt=_JJ<~)`TlrylU;G5 zyG6-8H^&!gWZ(fis&dZXyV#IA;Xzzmrq)#`xw#kovDdQg3ig3xdmpy=?Qf!EEIsYj zApKMesQ=qRS6$s*9l~S{qfImNXy%0?oIXs?te^ko_MAJ zIB2a(ZD10AJUoQp@(Rk9wkL3&hXXDN&AB;_fn?qBkHO zy|D7+24!(o2)Wx;y7c}S89YiczH0?g)s6Pl2kLN+b<@KD+jZqN=#WoCa4^=LQ%iNx zWlK7AljI-ghPm2mq(uXZfMxD>15$iB`6*Mwe+L|D;uStNWO{(sN6D*gQa@_f31KQ^ z3zfAT0`r31ERYYce0cu=NNey{%qH za|WaSViexXo*cY7@G~txo-?EL?C&lsYJAPFtqsOWZ9K&mVs4v&m0JAE4>E|y&OIvj z!;RvkvM2R19t=D?-M^*07rx*f0KhOd31g3}m-|w7kNmCoN2Z+9HN;zaFs_nJ}4kZKbgLcLgq^nwqQI+!`Yxu)Fsp7Ki6)pUkQ zE?n!l+e@7SG~+iCC1(B%Wm@$5qwGehzU4`$A}>eIMnrin!(qN+O0+oZ4Zfv>>_ce) zn`vvCq5RQGe9?&8p5*W1czF%e)!}eeD*1Klj%CcP=4wS&Q7VwOR@&vfpoWBn0s_Hx zwwO>sDj`lP>OG>Cz4{G)s{a5Fk&KKNUj69<#rCO`9})Q%iS0KsN6u5|t;h)rRJV|y zn274iZDm-o6nQ~az##Or=%UKb)3sD{*wtrqec%ngAC^$Ysm6!i%U&h&oerfwClD%z zqY|GD;FnhpohjF2w(EgDcaJh=zD@Lz$R8|9s8PTZ6->u4>PEq2u0b*kmEoIre%9a;y5 zt4%f>*FqTg5JxL=Q4=HhkIuXj&wd+n-fYY)W-9VBtO*qwdf53_QyIsX4fh|`R8sRU zsN9if5R@q-1%rzUN7=cbv01mwTR0KA_8foFZr6<*2H>}eyt|eap6TkTIYyZ4l(}&p zQ*N|fY_j7@DHqbBBdDWmEiI^6+f-`0H#iozMX`=}TtnUithCd|ZxE08eet82c!ibZ z%dNzq((?TtR9D_@waNl0Q|!2+fy+|T;#8xi_fSw9gNmUjieT28>95sNO+IJ7W{y1j zmeI$=FTx&U$@J>G9AKqWrme=Ga+NuketE4xrARHMCglfp8`{7s`{L*H4RFrc8*cIk z)g7HBiLJ|#*Bk&R>A`AC$9{Cl`KOAp_@l#2=|-&5>N#SX43?ezH%b*Dmk=8u6sU4j zbdmL3?|Yg&R}6Cqdt5EzEKom;GIe30h7;O;5wuCqi;Db>m1jkl~ z9_>%TB(s;rZ-beJ9TO*3xaFF7pBj%Da4GFVraw|KSS!|BOYO9^EhT3Asay20wkK53 z*UHOI;0JwyJ}8v*S$k1J@&};xBFUPn{6jcw!uj;R4{?_fo8~{| zch<@6rK)!2x_2M4Zl!!zGvcHzP_i8s3c~ejPGNIR?Y_aI*ZAPWqEUfz^XdDeyAG%$ zap-?!N}q~v6I>HtUO>w3ted4vsi{K!FT8S3@W(r%wAbx8`VYEz!s>|ZybmMySRMGK zao(cQjwrb*JRk?*u2h1Qeo1c*cSmWPrQPV%pTR0gxPH9<0178Z#E*-tzDg_HDuALc zQdd*De?CFMqUfXtX1o56x&)LnG-Y$XAG$fE{8#whN1p|$bsVEzfL3*(nw0jLO}8At zwn-^HERavz62ILDPPcIMP??6vHg&v5{{W1aKm3=TCYeidyobVxjcV8?sVFHR_SCkA z^1vO@NE&~rc?3_%NBF*GBGOo^aE~wis*Q@N`KRT|NB%S7*(^SALf7h*NZ0CjS6m z{Riw*1eGm2G=I!T%zaatP4T0{`owfQm^c^5`3<-K0DmVcii&U0lH);QrS z6AN@RFnHZn`0>_>=H)TtZ=HJiVE+!uLq|thpi|%L|L0DrVN{ zu?F_r5t~4BWsX+gxx?iBIL)q&2~lPj;r% zxDyytYDSl16ac*;YAIH&NjrnSB{!rvghMN}9pP4-BMW=O!)$wr37^S49pd)}vn3xh zWbPzHuOgi(GMjBNmf1qJ0(1ZuzRCQ?96CuOz2=P+nv4Po0WsVkRQLGn@tvN$W^l7E zaKAe6UCQ2SqpkJ8uTiQ-N}7;a0o1(^`PvFoO^`_;Bpdd{jXohv=LvOdhaL(iQCAr1 z%bMo*=zcq>GvF7*-Alr^hzd<=Wlp)0T#*_(uhXX}utVw89Bt6zbUYRGgsWv-ZZ;=N z4OAtj&JJ&gRW^I2O5H46i?Fxlk{>gFIhye+??g^E(d+K#@R zy@zoe7U;Zn@XD*j?+r&V<#?t?6LOQt%+$71b-O9HkXoA%+jVneq0$F+veDe_ivEx{ zBilD4@ILp!Y%r#Zif2>v9)xNSs?e{2dd*S?i;VNbs1ux}<=o#(jaH|rQ{9T6nU05o zTtgeRDOz4Yu>iIasA?LMi&_BT3!`ZyUgL=P{T2>T1w&mUdq+dP?mNfTbT7wF570Qt z;oC96asxFgsf#Y93F%Cwavga9xZ94XZOkgwVh>WQYzV~`H%SX^qo3j~#~W1w~H zeAbnIA1!7c7sK&IOM_3ZF~jPF=+#PrTZl<|TWe_YSVva@ZLkZ9(yzq{B!q#B2&=>C zTG#D<@0!Se4t#ZTIhtvx=kQ0L8BYt#&6J8i7V=`0e{CrfqX>YusFNcw60~z~=2F{I z7Mp-{f(`WF6*Fd~tJ6liQT19Xh#6N!){(Z396P?s4}39xEwyS@J|BXvHp`Pj%+aJf zLZH;;)j7zX*$peU$QwsDTHyW#^E(OgZ^I=*j;8E&2WS zQ4ft?I(Y5j55`xB&Nc9QGj&y06H9WvOPCUQtO$wbCOSZ}T`jg09NdCPvWPejM(WuV zZfS31p9L!&qkTlok~fygmqWe#xh}ChA^7Luf5bO~{6DT!DN!>6mF8qFZeOa>?ItUM zvY*9_;!;>H28*q@Yzk7XB#YX9A|--OzLnM^P({HWV^uGs`0SH2^wlEIzE=Zc4ZF1j z6&1L1;roYPC^BYk&O8~+(Q;mFqt>c)iiH+()a5N}iz((c#ga*Nw$;cg1Kc*xX^AM3I6wfV0x$32YTmDLi*5&bm4@E45#0L!@l0F>#;Ms6i= zhlv~{sG^s|469Ph?k?s#>H)~o(haWD$hsCgY;HX<^v6a0qhXlCFGVHZ1UnXPs2aD@U0up<8e%i8#q zBn}q}E8-)?SgjW-7d9QboESR#COS7aQZ!d9a8yRF;9;QIIlAj)89`f-YhL(AJnXr) z8ijCGz$&%+SdO@OaM=ycBYrCK)}LT+VlcVys^Y*8?5U>PCiq?TNJv(x2`M0eE$T16 zI1)~YUu>3gphz1HJvQ%bDJP0$fE}IJxpq;$kUH(x91X&78s5sPM@wuEY$IKL(RCXY zZzyWgLFwG#b7+H*TT!Z^K4Z{?10T>D#1LZMB+UA^$z+-jO_ zYX#$N)B!u=h#OrH6O~g*xCY8suczM$lafL#G}Nk;9-tr74Z2fnuLNAEj+jDpP8;aF z8@UAAt@?DwT{X?(Rly?3wXS;MFU=Gl2_IYmiO)*dIEbhrUVtgXY<#=z>EF+ccNO$s zu|{4gFa4mQzr#K1ZFe~Fjc!z;iH5fYhgwUCD@WnFt;OyXO3zoosdvUea+fne@;hbk4O8B3|A`sy~ zQlY{D+Z!FN<-Y!>A1zDm{{RzkBdLr7{w+Q$>sn7>cr+3=Q27aI2E>aS8|!BLmc}4R zk57db1ZXcQxa_wb8l4(+Aprmq5<4Vx?~kA70!O*;Cgk0F`>P&DU;sSOui7gbRq`>} zM|C*y1MCgD;6fIiu9$0OzP4KK_?vhF$=?&t4)HuR=guc*9uZ|!W;hv+Ozgh~Jh@WU z6%Pj3QY6_4Z&TrALh8F|7O^-i5_K=^Zd4g*1kyHnhK#=5;@j$d7LzzH{{Up)!j}ek zos{^SLh)bXZmU?M$xN15kwT(|BwMN%q-wGC79$pvxXjT=Bxo6dzQm0=>ZCdfSs3Wv z!did5Z=&jhE+#%!pi;7}CYrMz1U6#FTkb2&+7c2q6phuj$R52h0$GHzx>+t<<8=9I zWOw{98quehsyA-3;u=e{AVFe57AV%?NH?(GZNFRqF^5}e;+Zu|z{)IqzjT1j$wgw5 zJ`~t7K1p%kjOto(MNcy7bSxh!02H35xCY}4doQC!lvz%hq_w#KersHQE;EfEGw{~0 zm!i|=Q>s*o)FQO4yE6MkEwHv6P12-vHrS*Qbo3|Iy@olEYLrr~^9E!CW>et*jj&No60AZk^ivtl%zHs8|^E(lP`LZRH2QOfFKV9GDx_%9S#^?m60AAFC_xq2pxU!q?_F%TmaQnH*@9KcDMTBORPDrEd|yK!Ll!K zt6tbbc!c(}jZUi}X2nL|p~7b5xy&1da6lt)om>7`LQT@QT@M9N&D5fs+jEXCu(3`8 z{iW_%^Lar}e%8WRB`kNUuPWpday<`xIJ(I)i*K^8Ej_QKA51h~ietOg_B-_io|qXH z**i9i+?`k2;@_S)y*Md=^V5ar&@)=k6(#05E#Hd3D|E(WtrV%t{kzq@j8h zp#+jHZF02?EoNc>X!#(+ki1;z7U8%9SEFT`hE||GT6(okR0i3b8d7yIWIZ4)0RbfF z2};*+ER|{ra#EWh#s2_{IWHvmipvYgFtWaG&dSM%f?R_sD}IkCR2}EWeJLYKok&B8 zK{v6v+Smh2oQZ{vSeCD;tMv*axvUvFJgeZ@XGQ)+eW z;hwmwQp&UnrG3cLszu4lVi!G_G2*G#!|QRxrD7^pQnlGCT7WjN#9ErEs~vdbH$Hz9 zv3{PI2A6~L^b1`Xv*H`!&m+&Ovyx_1_=8A@8HXdM zVX`GV<~>NbHroD}xn>M(I+$7q_wRo|q>MTuE?VdKyDz|5M=bHj?6;VL)iS%rz9mQp z%5xQQ(9z#}wjFR=*d;i%gAb`17lx1Sw#q~pd~G*uO>g~2;uL;Y5$mz#y(W(fF6H#8 zT9TNQ$l*xzvx-8O`QH%V}=axxt=1BwhLAE%S4eXd@cQuTnYDSWYDGJ+gcf#gpa%N(@giJ{Y z1;k%%)nSe$r6`b%iptDck}g|XPWHKQb^UOTdq)M?&onVKdV`7yE=IW*^E@~HIA>nY zUj^M^JXe*M>WDTCGU?xBI+Ol*L0cLB079DAaaa{hsW5*Q8_GrOMXz)DVS4!8u}*9F zD^m`6)RyB)1tRuBNgs2LGc$5Rd2!&XBgk!6l^yY?e=}dtY<6&c!|_TTuW1|7vkhM_ zzGTs=b$TPZR~a+gk;dt2 zT}4vc9@-w(KZYSogHlWX02UUXAfmerhWBQk1do-InNRVj#w{p0n=kN}J*53gs^yr$ zYx}K$(y#A|nffD!xb|3Df4WFgV}_ieN6MmsSSzpGt3EGn#RK6*AhvBQh=_si% z#bPU7vj@Iw>tq@eYn6!(s~=pTj?h z_DCGK6-PxLq^5f$ z(H0s9hV_hNUEdks%Wr~zvTjS^rf6-c+$7@EdTrco{zNK*(vsp%q=htAY%VXQTLaJx zSjC7|KrRWgsHml+l;x;zYrI)VEc3^Ih@M{gS8{G<%X#{knD0iOg~@THRoGA<{L3pV zV5>`y1Iq{w1rA_Vl#yoMmJj__Tf^+4x1x+7hD<>lU*t&N(QH@1hsP&~oF#ENC&m8& z4mgWV$}FKVms?C=^Uw$>2rV`ANM!|AxU%%8P1UDPEe2&O0PrMy!WBI(A&0-M zh;@zR4!&2@$k|BlBlwB%pOidFwet(_$GJT@Z-;I8!uWmD^2=3b6J4l9a(xP}w|0#vElOeKI-lHAZWhU~ zIu=P!mcjiYrF-LRneVqz`QNfHL#ktRZe*YE-Ee$AZNlOQGWoj(?vgrmCycGGen4b(z+gFVkwl=o1M_ixWts+ z)^c_ocM10y_F`%e)4*T?z3%Tr9%0%p>JlhCTnbHyH{0!vS6)vQj})i+zKB~Y)-9wTx$B8>PIf9Bv4e5N3=Jbsm~U(x z>Ni5L92Gf6#>d{?*l^uB!^u>jg(lbiFrb?umiB_XN1+${VRKn=Xc}==a`w^_efnX- zz}+>#kz%}2-^x9$e0E`Eq#Nj|$|Cy#w|sGO;1_}t3UvA&_)GIjblFpucDUd9et3Rh zkT*-O7W9&&Ck&F+AM?}r0nszI)xD>R)#{$I}s zdy_yM)k}Z9wU4h%G(VDYZn}I`17#w>U0;^iS2-wdQ_Xmw=_0@m=l+;n+NCV8(O6s9 zgXXcrb6n`Vt0Ag^1e*|Vxb`^W@njZ@omY~J0dcVHjtIL2aBop0n~tA+4*G=t79~_C zVk|Zn^v4se%Hg2Vd1a=Mx1V*Unn=2oqhOzMdJF=lcE-Z@n*qeB5i!y@HG=LwsR3AV zs-*W+$u33YrIMurooCH^cek6a*!d&c=SitC3Z}A+*@H!i;pNSJKkUP!b#ye&eN%Fm z8-cm=u`jMW#f|^%(4?95&gyIdRkyN)ig}TvwQqtfIipX6mL3O`>lv$NxijLon=7iGMze2 zf{^NvZS7@jefr`Qg}~)%l^bINF$p@>M#zs&ktSYA$r5HdqE{i>BsIL@JxZJ{>QOt~ zlXKq!rh$R`4?v_J4ux5cmd&`M)&SHiB#DMCNB`TIyY`-h&vW4KO!5`fpS&DEfy%7l6& z5!DW$p)Xm|w5{b6W3ei_x_$ouOgD{**Tp7}=W}p%`(P&$Zw0P8BE^#iG1%yS0#d2$H zwt=N6KzUXG4ujhtp&rjF-!=w;rf=8hjLYFaVw#zhz$IZ(ZChn_m{6__l>QLEm1@=@!e@MN>`e1p5)2*TuhKU2p zt9tt2B=JXUG#V_(Xk3dGAAB&oMZw$#>E_@pBQuQrD`h@qD!mAOHy_(1^tk?G7@ue| zhG5kv`-OUsvB*rFBc&VJ*Z3}uQijmfeQmn&2uLAB8=jl`?`(d2wZkX}RrmDY@lH{? z5XO`c8%h+?MUphzN3FW;hG%Fxr5UYdnP~t5V}*7E4xgqLLI-$GU@IH%Jb;p$?mzgz-G0G`lMS*z2YDu>DP#tWb z2o~D?I~;Kq2!Q8zWRz1RRHV|Iiu89XvKPJoOg@ykB*+Qs= z*>bz)n3`oem0XuH9Efbsr%7&GQa)jnmfdWvNaeiW(njXVwx2H6wiY?dCl8G34*Wq; z8&1h-+}G;THRM*iIQ!w0;zw=QN)yUe&ZHqlDLS_R^)@*A z!`Xke*=pu)7l<^O4$tRq4jlW}${y4Gl|?~H>`sZ+ZS`j>o(Gq4*+W${2m^nAwmyz) z_0fFtTEc7<3KT9n0y^QtT~i!vY*jg8_p!P4!k1q}g`;(EC>z_asKc{!Lkt(P_JBy# zEx%lGDZP++uW7J4Zau#|F8UOY(`8*HDpFJxZh(wB!$i>HbX5(XAq7PL01PN~^hm*O zE8MUYk-6=T%y&+6f~ZBb*xv{pa+%eeYE?88+pst5g&MARWZV^T0{;L`{{UX7b>gq(r>6Hf;!Tn}Wl)7~Kp{hHaO779*w|`S$#2bJ>)Q%;x^`i= z6-^f*TZ6V5U40P4KqQVT@`R^IHnBM3Z?acyWpHSXL&^`|97*7vYjIT#sC5K=@x+aj z?_e*g_JPw$>)XCK6fyx<@`|@3d;XYcDeW7yr-y|+1>#Q`CM_8fLaH@5f7KzSI(+O#xd1j7V;&&ebV7{>EZ$L0?0QHeGteAgWz$gAuvplu$Q4hrj#4?wVq~!XmRCis2 zC<>f5WJ|K0E*UYI)v2%^NeGW6Do{v5v^RS%QS+KsMq|+TaNw=+8tI)VEp7C^z5f80 z)oZ`RSB_pMab~`+4*V0FUvi^c4O44Xh|vlClBKw%Ho{s^{3$9~UZ+ZlZ7h;OQc|SG z#A+D}bky(~{{X6sMMouUnFad3Cid}CGQIGn;g=tLCduI*c&}z$nI5A#ij1nQE-Pu6 z;|!_2AtdY2hYA}7B^OXli5u$6MCyWbG>i9wehbiFK}f*CGfq*hfg1Vfekj+$e}+#B z9t5*KOW>aa=~b$QN~)>VY4vQxvo3vhTS!vGU12CmX_SDn*gykIgp+f72Wz z%@sDB3Jp@CBs|4Ew2%u*dEp%e)El9Yy*Iupx;&Z}vYlJ!8g~qzBUo{F-@v99|+?3K~zagX^LYfNH5~V1VBrf`rrD_Er z;&eEBNYvPIRJGXqOLF_pzJPP`T%+)Njs7R%H&}rod=zrq&!-x07N{ox9=;6?mNPJw?DgzUZ!`!!CX3Aov|?nki1h`KiU zWVK9}cOlw8V62$xiwM}!8&3oO0BHJAnD9Dt=Jk1XwQB<-UVvL0)K|b#} zb>G|s{#e%0bZ(Xrwft13;O#auIJ@9I0)v&z&6x8<^;Gjca8wQYl%Ar^)#`UT2!h$VpT-3cB~%Jw5RbYMOQu z9Oi;KmEBv;!8_1=JaKZognvdjW5sIeQZALEn)*?1bEo-YyyKL>>h__;*&VpDaI)ut zj}&z&A<6s>&i?=)v1_=1(Y^Zx5&UpDx=TrJ%eC-Knc!#~E|u*3J3LN4O5NdtsqF;$ zM45>55POiL)L=)Y5P_x7fJ5urH*okPSNsBTsx>JMOUYE0>TdZ|6FIOL0R2Rj0Hf4w zdthJh2+eVu(L;4}8ta#gs@8l0aV<`O<5^w3I&~$rR zBbZ+goc{nVdJ`ihFtU2CP$$@F*Z2K9;D5(uCq|!_(IataUHxfqO!!}M8e?pQW^A&D z3G?ZUY?0XCUib{1BzV^;_5GBu;*i@-e8N5d0OU_`LG)^kTA`@*0Hmh=`!4tg`_~}; zoBnt%ZX(0}s08nYUms!=m`cl&PKzk~(~YDbQMvv%?}xXffP!4zK0hVRt!BpQy{-H| zyhCO7KBm^{Vdzl<4sn2M%R z%#c!kqNdWcpKgGj*pVJRPr8)JO}j~$spOo?L`%!5(wmOaPz6#LQ-7uVZPa4YpB08n z2D?;Fv<;Gb_E{|js*Jahy_Xr{NB;m1>xtr9?C(&J$^q1(r7=ucZ&Zo#6c3oV-k_8D zVByak0ZuPBR;mznz_w};B?0~8pr6R&gX}C@Wb+{=f;lV;OPZINfUx=QOQ8i1Bf98(nrq%hU5US{+m}QxP-XRF#wC*{rXLA}K zP^3m*@u^ps^D5$B3o<5kl7J8GI&fVUq!0Il@%)8fbPMA(H$v$f+NLgy_Z>Y7AY|ZW z&zy32&GFyjrnd{ca^=RIVXV8yEaAg>Bm|q1};5SKf zBbyQp`lq?JB*Myw+nSx%Z;ir@S3E`eYU8o*7CuK}iE3Fd#wQE&RTDmNXN$R+_bINW z_9SJ>nyK>{QdSkHGF8iQM@R=&tw5BJQb;zmy(gA0_?K^nqs%B%^jeB=a@zbap$E8) zl!)W^#lJoAQ-eHP;a49xRB60Z%vm9o`?dHRkA@#HXcE1B3WI(FrOvB->y_n-oE=qE>mbE$* zh8g7`NsLJ+YoI)k0I=7IMTSaq7VaM;JSPwo)pl{SU+{PCruW5T!wf$Y+z?$JiBpxA zvyB>}isd6Q!crAFgDx-y4>W}yTZt$-R@#V5iEhAyjC<)_6+q|`bp zig&{x4q+OL{6W|rNn^pj9_3#XTn*w6ht4?HsC-(>HEKLcZ9=n1f?#~ime7)9GRnrL zB(U)2BUSY2NZ4uy&lIN>P`Ef`b?ysz5wRWM{1p#H>rFJEG?z4KXAQ>?cxpKsMDS zbu@Y37?vknFd!d3W64H5^WaWBR)Dx|#!sSfmO&>-x2_WDSV*`b zR>syl5rpntn#zD!i(A(SLVHfP3etjl{r1A7%y%2Bw1d9n40X6CToSC%l67AG!@uW+ z;bfO2>9Y2Vo7(3IehJ05D$t#XKKSF{hIg{5NhL=5P7}Elo+^bM0pIo83w7B-v?9eK z)&tuOaj;FcwhO_sdf&aa!Uq5o#C%T5p`rolsC3&1PZaqhw#tE^0=%GKzor^p$fk`+ zvbI9d#Cb22YD;ac!?@ffC04&~m=yAsFu#zxkxveHh68Jm6E8uj)pJBx^@{mQOSW~G ztp5OI5ESeIKT?JFQR;m+$<-Y1z~TXa*Q^jK>Hq8X$kR~`Jh zc_lWKg?SP=LghPm#sJ0vu-$E>HUQssysw6Gmpg%(m590&>}=IAy|F4zxUp1`Z$bs} zSB^n^k37Dr_o1@?05WL%!T2qUhL^GvcMoB2;&1%%n=ZbCRp@1s>qo;e_m<0Dszyk?Qy-O)oX|mmVrqh8=zT@UkFYwl- z5!FdH9S3`x+SrpEfOZ|BQD?*4NplWi<$t=-9~}^-@q>xWcEx79G?BM=*V`YU{>{sO zg42fZYWOGH4LpsaG6( z#fcI)<|-ssEepv;;al77fw|TQhS#}S(%CivC)W%vwzo@hrs!L3Y9MJgze`|lc>_|9 z6mm#xE=l^Ww|GDBeHoPH{w(nZU2d6~BS~&`GLq3tVSomtE>@(HRI7p;8f*yFxv=>| z+P}4PE2P4xKrxYLIO~4q@B_VltL&56M0jj*;)Krp6~8XtaIO z)ORUJVfS4B0G$gul0UtqUv8V63X-OIeeeT(E%j5Uq=E*5Tua@;;QHymn#Z5>R$0q( zX>jUr*EJ8mmfmBYQd?w$snn+8zz_$f#BJ9SD=`@0V9a=`x@vP#KUUWHo(Y@Fxl*^5 zbEbc37DpGW~ot#CKLRD}cC(Qi7=zH#&PeS+@ zSo@yQH`Hm%$sqh))0lICS;f?_*0!98=}Nq+LWHLG=x_BK4@DjNW7PeX5&U`!om`V2fC zQajI)cwt-bh*b+ADj%i5p z2DVpn#>G87u!G=~J%>_jUh)fWYt4NXvFA=3zN-T?lH7g%6^xxZsO+y_96gswlZ2QN+e^1SQ zLC~LLn0*9|n!JjMhPM9z(+B4Jcj?@uKNd6PQ!G#&g-wS=q~#PPihNphK$gT79#RnV zoU{OxhQc|GugY~O?`7lW@775y#m>90xhGP7Yuxb=?W8=k;0JdP1rT`Oo2xH~`AU|R znALeMwE7h4(DEB>=~`BxqIqGzsk>is_r;w|g{%$*P?m>G7~320{67S|%w8Vye;MJy z$#tj`BxLzf{#sB|O6E5dHd3I66m_;#hfRPtN`;av1*$})jTug={kUUidCU$@ASNp> z_%7hzgb`b%aQ=swY7}S%nNtId@wOphuIHD{D)@nu9pZ-vc#FdBAXO?4Ih`qU za`iyPX>**2^4KXl5QN<*3n^GZ1I*v<+RBdC$(w6mno&<1q3X+tzV`k8OGo+Yj}O2Q z;hh&QQn-DaJV4V8X>umhiW-vpa)f0dO^#gV2&8iq-!UL1P1@R&Ni9>wJbir4Af3Da z0A)`39W zSa-&9OlGQcXh9#H$o~MsXyF5{?H>OC-{`ez#1DushF%cOkr#*b=Qy#QQsR`FgO7=8 zQ^%`{l=tDcdv!@s9)lJUbZ)M3o~6VN{eBA4mGb4wO&DP3x9)uuY#u1M;o^reB8cxD zvL^@In1y_eGLbXpr^)gaXk3yk(Xb@w2_naAPyGXFn|Prvw-;CsK%V+2o7$Y0o;Cyz zzr?7Q#OjX%_)#V2XjzVT9k{u2T&X=JPgCKp-CU4KTk9X)ZAl)abTjGcD(Zjxhh%3U ztf6(=mIh^KGAw+D)ToD>bN*z{5*mKLHB!>m#CXj%mZQZ4+=kjf2~Xd0dy|a?JsTkz zV-^ZjENe9yp8Zl`xRYfCIK(I1KG}){^sxZW%8eaZifk|Ak@P*54 zHlOKN73y;d7E)kRkd0&6Ygw`Px8;a(SIX@`9~1{;V%BI4L~0La@#2m|sb-wge2NjK{V@X`20$fd2hnU0y3f+MqJ?U4QTp6 z)5@c=r3-Z3K%e7?js?fHuZ_?hiA>?6xOgXC4n?6;P?Xc?bf^gc02qqfVLxDyHuk|f zvBW5?sgUcN)ekfl^bJTiAm6UvmN-Mhg6GSnfz=Yq%Z#l%Fp@jmf1VerHq%6z#lLjK z@k=epr)A2uRkt2O*l4IBq5)TKruOTC(`Lq&ruwa8=7mgpYMhf$sk|P9O19QFKjJ3_XIMt1HRYeuhQ)4_lGClF zF`Nx0VFj?Iyx>|#nL~7oa|j#u8(^j?YZ?h&X9IHE7H(LgH*6baH632ZgQ=<}kMExf3nFsDPrF!Lx5mqTi+;oQ(=_t8g|OsMVZ47``2| zGg21|DYrp&M6FASWRQN=-}S*;JdF2TeNl!ZAs+Sr06Wwx&OZi<0@WeRo5UKVRGnH_ zmX$3wH}^QW9Uz=&cko7zw)(gzXT%?bw;yuLj>w}yqvq;*Z(|X_+l4>!p7@s!N~GD% zQ=_SjgJ&o?oqREIZ-o)d5o}sV(r8_w`B_hix&6a*)VY^x zDK4_-CGFG{3Ovap?{WHXizZjG!t6tPvirz_Wimu`k|IfHj-?8?{W^?Hj-js5lt4|i zC;)BsBwcO0xUx#Ls{a6<3NnLnqEhp*M>%&lX1tYEMN=te3ieW}Cf0rgrz1JH_>e`% z>xFb}du;B|L6QbPM}SnCq4>+r?{XsXM=a%DDzM+tGD}7cQJZuqof}H;?x3t@>Utqa z@?Q<(cQ&7<$)Y(U>@oLmCw7O&UqYsb3Vt9jP#lh&wZz)ZF#%Tnho2iVeJdDiOZqz9eHxCMdF8qjxVbzR--6Mr?%w2Y;9eOQd%Wx8~*^0ujP)160D?mXkOk& z>{MCc!|Rw>;bYy;!*HdxW%#Ff=-~eV0XUh$zAte1Gv?&Yr=#{>XQe5bZ9tUTg3z^< zd6{hKu_**^^bVN6XGke3Z5;M%`^VK+M}gK--}JI)jEzP0^1sn+_u=#LNbvERvu0O; zm2-qR6>5XQGbt{`Tm*dCU;xWVkmyJYN8twvv3a(-CBj6?ns)*^n-;r<{))bf6fn4T z?Q>i>kO1@Gwt3^R89tX%;a?S|%*(E~AuFZHTBV_W>G#D9hUAb5C2qc%)J%_6DFSIV(9w4y{s zDb;S2UhR`@f|NQ9) z#CBe;Q7Kd;y-cN1--c4BB))>$>Lgg6Q)o)sZC+rtIN?pjuu2?3le13FZhBbq*XF2k zYz|6Uz;km3n}RK<;C{TqBlxp$Y0dz6x}tHHC&#WFvz=(KSJO>XArXY=>S+%k8v*!@ zt)&E!sVH%hQqbB|N=Q?TJp6SKs|%$AS72OLR>nlKX|26>Rs9`|%L}4uCr$@# z`F`tUehc{BOyg&U{G-H5Txl!_v+3)u#hQ@9+ib)EhoOBbuceaoQst4mgR`x+VX^og^#`UDG>?y~#3Jh{pSL#Oa>Khw z^zKpniyjsDnZm_Rs+w`lSv|9<6?%9sFs4YjabRwQ8~sOXf-kl{r|4g{Iy&+xt3Q!Z zv1#{7{_D8kzg6?EOudR!(nf0Vl4>dKdyjYyH*Xtr9*R1l2)Mq(pf<;~L~gtWskw9` zRhYMZ#{U3**pYsED26`kD?$Oj!v6q!;oy`O8@P*ISh7+sp?}YOH#pp*wT8m_D>d9| zQfxi?P3Ao^Pl;G9K`z*IfOwSIU)bWLNm)lejm zG=ew6+gl|!@LmY-ZLp+->*;WGRnVIz);AbT+|!GI8ZQ>gmE3`W7g;8Fz!i+V z&ew@wY|*#|07nHWxLe`>06y_*i&)HbNRG##HLf%{OKCQ#%LE{{$#F<*p|vO%9V*g` zX#s0GM0sZskk@Wh%1URUs(oL)qPeIr9+Xah=;GHyv;PLn&l?U2t zGX7yrrK{TR4O@}v()f)q2STJpAz{s`KvQJa3TDfg>d~#|3p#)&mJXDW=q+QU{r#}! zyyXDytE6dku5%A%D(1>D8fljFqCGfxrdOgL9_81fFuHWUivMM=Zxdvzo!uroi0kAdRimi&)}4 z?k-X}@9Qkh$0UHx8CQhdV4%y&`JS7Xa||~ULS)BjJlKmnb69mK7E(#*6hX1Q@qL8i z)p&fZsHBjw!;$zA#CH{6JkURAtA z+y4N{c{q3OHB5TiP}FPz9mY4J%g7^boLjQ+i1NkTWn>d=y>KVb8+36}+eY^e%WhV9 zw26*Pj+C&s3SB@y{6hdZgkRcHU4zW;>AjFi4gUaIlx}xg{{Z`AiU}UbXj6#Kazj!s|L)-rL*hb@ZRGZh@M)ABs#Y$jA*O zX?@89i34H7irijamsQKz!oQQMY^m7Jvef7@(t~Lrpa(*g-9dVft&aUJemI(2km48B zbdAkvaHHI{d^T3J4_YDGSx4U;O*}VmwCWEnqEREE<9qI((m< zk0Ea~x^XLrga~RyY z&X-9uh$1WA-!x?%4#=3}#HBV!vPtr^Kk< z;7mYaK(0}Ew$lxyCi=-XH#&`u`*p>3FNaAxGO*aIoFZu9kiGuzKK|f{vZ~dU8>>@{ zmtCW{wvv=QgeljSuPU@OR6uNt->uRH-i*R2oe3=(j{g9nlZsU~W`J}g><ZV;bW;BSXh~97r-^TdTP(KgYULMIAs2 z-FXMJ9*$LF*lXzNh|cYGI%s+PmXEVORIcRuxD6(@@kpnyrPeZs7epxg_G6y}(WX04}(=Z#7R~ zb+X1<@{4V^Oc)Y3OzP|}bxj80Hva%DI_=#fh#T=&X%-#*Hns7=*GgI~r^#EQ#_9*B ze&2jJq36nMN~mti^CXW`ggWe+00fc+z6ymJk6+{04{NNI-J#i61QC7BuWR80!Cf0% zH7m((@oI2Flm~ck~$H$vBafSCf91Hx@ncw>C~KHb3gU%D-iIxWW$P z+nzcsg|WCAt_~0qp6icsR3KaF2`8tf7W@L|IpkdKsvEFRMD4y8MZt#F*<}N6n|}d@ z8>cna(2Z3CXRyTKzRI{AFcSM}5g7}gX4>a#eU!%GFN7S`n;W86 z_=_y?>ncofA1a5y6Y5}sp~-1N&7`F&JjW~m7t%$q;k`5V*GEa33^aApjz7>3j}zQI zSI}J#_8T<0XU5&tFzmtapB@b!I`=J`WW24yZX4xRa=!|q)8an&E$L6R;WMPzkb>)~ z0ZS!8BqWfNblEmHA1UMgA;hr>%}ya9dyd0^?r7LAsBro!8Y*!`hQ=d}y4VB1GIuA% zMQqKPX_;vmqO~3Pvg+>C-;EWfo=UlotR=V56JWAX-m*a1B)5AKlZuLx8<@Lg7CBk~ zV?E+d-xSyJ0(Deyq6TcO$EwK8Z$A3yv04go=_vVSu$b+o03{`5K$%2Hmlr1c* zv=z=mRNj<0e7dewy_9Tg@ep532eIw7hW`Mbi(UT!4-bi-40E3j zvXpKx%7sVG0vuXXl^3A54xbE1Y^6$&?xLp4scjD+x=C?1DkxI4n%U`?Tmj#Q=lUx; zJXplQ*)+YbbT;$@>XrWh5KkN#YdbTLD83zY;m$dVl-dt$__3mIw<*F z*495Wyl?R;&MHY<(8jbx&O?7ep!k)i9w_m@iri$F^;f`NXqyXMgt$oUa4&JT8u(gTL-sh}pU;5;&WhXG=LIPB@q;&*?%SrssGvCLg z4*poznNVb}fuh^3kMM8diQ!*_$YEzD%Fk7BLd>e%g+J!$aM-d3PeX_`c!f;I`LENE z&?@KRj{@u#x}B6PiuL^rx) zr9FRiZ}-7iz=G$S-FY!SkP?L0eXKD2fdI|gyO6X(*(G5kro*-z*srou@LB-~*{FQJ zT8bPZ)*ZEB#x5yya3e*WMg=O;&Y(s8&;2k)K+~{7H)t#0BE2?IY$)4d{#bWarifN2 zb(8jW)2I@)Tfbq16t3i?J>jEt0orDvV3i&J0EQMwxFlf#GW=ztIOh+unwtbVigWId z{3$B6{>iorNk~h@_@LCgD@%gXt!^96S6_uU`o|?}6E}-7Q z5w9UyVIf5-`a7H>puUJ@!q+G&sg0;8lfAA1?SRP{-4&Zzyii9dtgHl<$xraW@|~A8 z_d0~0sbuP1MFpAk_>&NPr4F=}3w?+jlwAF$h{bfwG>3D!wG;BqO!r`lH;toikQXlI)zVm}=Bg zy`4;ViV*s3^tj*BwEHL#hRsbJjms-R9r~#9Lf0JJM;$ZVhQ3|7m8i)CTck<@zbJ$#gUss_!hfH?En-{uxRw_8r& z&&5wS#%et`J5i}zPlyv|9HbyYsp+@xQ{Pc-$qMkQi z7x_C+M-Qk9Tjb2=;H$-)sWm)@R)v!|lD5hurXoLQR7a{^jzA8icly)sjP+gxTSPO) z?$4eY&jGWJ-r{wL-6x#AXd%atl!a)Bc+CAQpVYbtCcNl+B1pwu#|vhy-$1*uQ2Y)4vY_g8;0ORq4kK$QR!Yjnb6mztEuclz*A`Y#Bk zsLa8k*Y2Sg!cT~b;hHKu9M90C!Jn8F7Lrm=l05j~#shjzz^P>@_0$rb`$?jyZEYq( zdsevdwyKr!yA8ySVc90$yL{7&@i*bcLXnxcFPq$EJO#~px-U7l%H4@2w4}GBT#uo# zr>F%UgjiU0SZz*FHy;qLx=V+-)O~LNetcBa@ZrbE8Qa6uI-6BlRhrypDke*FC8|^I zI?~)gWyejft!yPlIzUp!*B@G7Jt?EbDaAz$fz3Xn#BLYL-6iOLBZN=-d_p2Q9ok26*rah=VOvj+LQQPz*9LjXEwqib4_sL`ppmMnmJ6QASrZ{jHvn6> zz6d2Lzo!->WFfmPTCA&&Lx(a=bU=^>fLw%GM!*mC!N}rJL->VV8c6^Vx270e4(P4Q zO@`{yl21Yo90(Um0pPu$jqGo@z7V{7sg|*^3f(u{eLu?%7D;k93Y@zO>Dbr-ZkS+p z>DF*JD)lx6u53GdV0raQO}jv=LwyO@9qsG+VdhONl$|f4ytY8!ap{1UYo>|uvrClJ zaT_=>9yH9ALsV*}Zk#?u#7R=jWV)RssVM}PN>((twaS4u9emfP{Whhbr*$(IAxFxaBT~LJ{djbwHrYq5*VX?3qztDWW%Hjv7ScFXM9ES!1lo;KOhn0- z88o_J)V5(nrgMCZu^3$mEhQm3fU>P}Nm`1kWP9Iy=f_`?wvEsS45P9Jml~~@WvYWS z5Q=RzYh|~Ed^1HZa4v;WDH5Q}A2jPyDk>Th${PVN+a~*-m)gJqb91m8 z;L)8doihuan`D;bXA7uYXW`{*DAXgxa!_qfL6)Jc!;}HC(x5iE8dL$?eX)Ph-jGj) z)-tx3+bP$)aRn^cd=<3vVbzVy$pw#(1L6wj;ztfEF{@9~pJ=dJc}+Z2K9wZcfIV^d zRVPfMnw7J&`hX+Nd?${3J(iNa^o~C1BIP?Ytd9*b+hn$c=>Q9l;&GFy#op%^9xF*r zgfcb;fHX!($jJG~$V)AuJk)d@e8Tt~Sg8j3sdC|L8juuAkk|E@T2cV!uXFb}_SeaG z74w`UvH({$jX>B~`d}^`)Rskrl2GKi zHzCJW>2(EIe&_&W;69dgf_zT3^^@-HhatcP`V)cCQ_|7LNlHJK!C}w5p7K+|<7R53 zu0swkL}#wsx`&wrZVidCu{g)I*9C=Ln-U}&g@tb+h9o;BNJ}9}DoTE!i~j)E@BVHU z8leVU29tZF#ZW0Oz^ zajf5|QNF-+K9iTP!r*3$FgK>;Z`%9ZcZ-!-w zsg2W~nU~sBrzvovhqVB&Kv2Itt!_Mrw5H1@_a#BoZ(Z-yV3V7)YkTgaGGUp-=o_Ht zs*7GX_)Ql&aPaXu3oL(0a{33&DGiNMpzBIpNh04tQe7AA%mc1HkJztE-$RIsH=pH8 zr-Qf^;vU^PB^6Bv@g@t&9{kHs+i!?vTZ_3^QFC=GQo3$BVdBV6X&vf?vXTMzu{d~mJ1*+T-B2UVzfJw{;{7y3jxaSP zSC*?@!}1vH>2mQQU88Gk58n<2Esd-d17Hi0Y&72K3w7CeAg1G}JJ{jI$wk4o_gCmh zw!j-xJm&&_NwsLu~7Tr9PzM7(0HqZOS!sy*XS_bv8dTi_1!IUHxF}%5wiqb zx05JytF?zWEwrC2Nbci`K2#ugQivF!$NEV{hSQpg$A-6uGvGHrms+libT+#fpQxZ_ zYi>`v-uE4chU;uR2Jn-R_-`UEWzK4epL2T%=ckz0^$06Y;%~8_Irbgy19JUs+Jo;01DcXld8y1lv+8ul=g-S5B`9ra&{|I?NpWaWwG9NJwzQ(e5aMre zaS?zph?%c|3e}H$+G-pu4>M$e%=xz}WjCWTV!))OQ(R@gmuU^AbAsMaEhWJ-q zsfu)LvbsF!XpHP2hu1K^Ig438HDa}>Bm#h-ld%LQrmq-e5%ydOI`j2Wpu*&yPv#3W z0jh%4>MsNQKT)M;-ZJLcE=;lJ84r}EQ-a4r8U(H75&^fE>@EedoQPG{KGEC`<)9T& zL1^P{W8ri8;-Ci^J}9+XG@)&rx|Mvj-Q;8<s_6)MAOcirsu;}))ou5K-wYlL zWQ4+-n;|{K3bS@P>H^Wyq1;F4e?QX{GS*D~HdW8W!8UG|^;;y$85b{P_)OAh6q?n2?wIP-_&A5VoVRV!D0Djy}v*|GH~`ss$sYnx)6v;Dg@kv>;S<( zOi8-qP}Z9ghKSk%c2&nv1||NK6a!L8*$8cdRy?NO=lrmYg4!bfq>-W3QbV!f0{po# zA-0lrDa8bfTe&vD#SD&jx@@Alv6eZU5gKz|TXoeUC0aF6H)n3#nt+75|x_}vv!M7Nb zCZk$|6D3vUu-VemC#XA8vTQV=Nk~f0#>!Gb_34W_y_r>(n=~Ia7B6VDHWzUO{{VF~ zC&M?0>bnYCyds?ertDiudMtMehxba~)OYmjY*jPa-DuUZIavPyzSKuY%+c}r1gpy4 z3HaffB1Ndyn#;LWl(=}0SV!!>sjMw7 z4fQIt`$eS=1U1g`0?K7V%3MZ>`=!~mIqhG{dF8wJK3+&8({gc9H?oS0*cP7qt48}u zhQPk|M-9Wz5!C6Cm)MYiY?92DR8~DeDo)>f98yc{uD!P`Xg+GnA87O>e=)=q5>-~M z1pyU2qnMC|D%#NvYft8;%E0Z4I*x+k5qt5FuW5Q;MJu~956?teoXeM607`ys8E2wp zC2d^)0QAr_u7fYe8$*j1Y`h+ZxnJduogjUrmohAPn{_wwmK$dhbUOF-ru7ONIk zwZpJ(kJ)NDY^A3eC#90Be*=g{ox@<;O8B0!s?4(-%0Guo2|D;t6DiL{ulOdjdDR&nD&!qYbERh(Jy2jUZkZOl$+;jEn1O>C97Ri`Ia z(mhn&{{TWSjU6{iBQEV-r{IkoEqDAUTezq{KZaE_u38u-EasL_xKk|4$s@46g1*}v zX`#i~ZNzg6q1|B}rOT zQlM@K?0s-lgx_@ZWv(tWA47TDD?!b!p-5X5R$o*q#5E_Po0{J0xBmb<3qIo&wHS77 zVtHZi)PI!dqB;UJZLD_$Tz$up@>?zN^W$5MIaV98vW{Y#$84Dm1#>d>Wz@5n;4}yY zY`TD20sKSR|A=%KA-6dY&V>MOL+L~e3!fxJUP@L>h@&5oS zvAKK6(D)u6c1|w~Ge3zB0eP(Feihag#y%1VGhxrlQq^dZ4hMA{MM8>2% zo?tgnD+Oo(0-eRl0~x-I#`xMr_Bva89m3gku7VkyB?89QJgzn=%J`LVif0SLjEem2o* z`@ruM3($DElG~G)DjC9@m@Pn}EhvboUoy1@JfwaoQ_mKZtBoWJk`<_F=e)F}v}}J4 z>&h_cI*Qzqy2jjlkAdQ$ufz9@oJ8>b<7*+y&XnmCe1}@7y^~#Oxb3vcjF}1LFtP>I zu;T=?ty+_*V^)pxq-;Ae|J%>nJA8M)KJ>5%MEq4257T0THn>4uj7dna)ocja8aIu~!eJF8+#4R4Zd6k^ zzUvaH>l=+$^u81|C+Z0#1ELS|`czf8{y6Jc-96xeb7Vb&TpfJY>U-evlfguBw!9IK zDM+!?Z?+5^)1nph)G7weinrgPz7V|L!EUX9RBgufD-Ji^g8e*W*eVR%nYo0go5o8f%u*eaVPB6)GtAPu?mCjbsi4AR5s2C{v}idgHBaZ~48*$5Yo8)Cb(P4H@L2?e zHhFCYX(V3BPOEKu+Yq5Q8gW)tCeGJjpNyOT02^`-6g)j}{{SkpF15rw%^24u(yU}T z9**HtY@x)Igv4!a^Bw>wDJ`TeN=3#UBg>p(I*V)F=9JO8I0VtU&T;I4#B;YL(B?p- z!^@Od?R?}4m2tqA9z;X2gX4u-%N1x{Q9jZ~1bFKeUbQz_8jHA+RzfYT1ek(erK|8zo)AVV(L+OaP4wK7KqW> zOjg2~Y=R1HW!v0a`QhcG-As&+eIe_mH0Olhn5(q%>>VtlQ>*M7Z$LVG>LinGuAR;! zxB&YD`=y=0#hTk8RL15y5b$L!vZWQJ9a2f|t8P!PujPU;5vr?eobi}!l+ob?tqWN| zTJ3UHP*$OSmg{b|->x~)+}Lqb*!#Bb-D@wzw+vj$neugYs3jCin!aVHl8+}a{b{(^ z5O24ovF_f@@xdiG=-zv5*mE7r%sr^!Mn|_3h+VF*cXNk6uG`j2Of@YSC8BQ za8-{~5++7SQc|93JMMhL1%e_r`IWC3Kqy3L z?mY8Mw1Br%pp>TFPeF*YOc>Jlod%^&p@_{ZVvF8!0C=62=zKZ&Fv|QpdoJh9`B7gRr8cJMb5w;?)Q18SabO$(f(cNvR5m1w z-`B$Cs2U5c?0MpS~b?_Y^>{K42xl{{{VDqh@pbfOY2I~ zg(NEc#U;Mr8*lbLmcb%vwb2WKb=~J>V0khW>n$|zEiM-P=KRtJ)qVWFoyE7o8z{L6 z7~=3RpjXLh^7qTK6COHT0rym+cav+Bp+Mf(w@uFbj^lfKS7_IoGv&K%<7SQ=(Nu#W z2zAb3sV`(O(pk`iSd(%ttxDViukijw2ltMOBc*fN8o}B;PcIG&FYOp~Xl0pCIWnLu zg*L{eFI~QnE#(`5b79zE%oZ7(p3!n5h+p$ma=794xr%K~*jXr5!rR-SHzxl8d?Y$l<|N#t^aNS`e^&gU8xWEpd`OY&il!j2>J)Un z=TQyn1E!}IN4ekX$2LG-300LbJjU|f4afQ>+67`&d-`K12N4>D(^rplMDsu1F%rDy;<{qfAy~!fj@_wFsQ>4NHhA-w%%Y%Q!euGu* zKFY2Iha4TtOyz8=Oo>IMDQ%gu99UD87f1GL zkm=obAlW-6{RY_i3mNGRb|*Qgt8sgepd5hM1@+A>4Hg{(Xz3#n#NGpm=1%S>nOW;u zlATD)wYsF)?ZkkV(v5B%Awfh7gSMl$Pt4n{DB1>PE~;T1B)r<|Odcit9r3r0e0IqE zL(9^tQL^N@B5apeE;^d0Aps#Qw#v$r%?WLl+$BlWp1lqmEqQZn!G8gwr={rhhO4i0 ztR1cIuaH|>$+>-w8fDr|2ESQNN@LBfb84>yv|p0qkezBmMwHwoDbk%O2cX3b`meYzfl%WhZhTCkPHRU|5ZzKNf z9=dOXxqy({EX74>Y>to~d^vFNOveg-CYgG4T(iSW_d%#+$g)!4a<=;+6x2A`*7ITV zMz;V`K9C9nh*3z_vz<)MM0@^mP~pZUc3;%!&(0rJ1AZbu5lDH1Jy3W>;q{t!aiYSf zm!((fZlT1xEy7Z!T5`ZPlxRs)q??rxE!4KYc2h(KnU9^6XFc`vmoQo;>9w!>Ei`8p zLR2coaN_21i5{NXOR@`+c~P23>ZhGqy3bwqx$bd_GEGq@^1-?F{gvQkFf+BUm%t7` zHLJf69}^lq9u$m?;kua3K}c-IReDP$xa|S8qqJY#A3Hnf<@TS8Wx>mFf zt}$R0+*A=$3ovi_uQY&?+vq4$>@GN1)__xBN2tWu$lz{~&brQ95#q*uC_jc-x z8f;43uZLfRhG@(`v#We(maMlNX>;XAnZ>8L<%74~WLx{E7>cfu$oq%|o6SL~#9Gb2 zf3n^G00+D&@PC5zn3U{~l&R3%XbVYkq`Lk80KKS-1MUFDDUI(X(i@daE+He&cjuau z@aafw0)#0d+o@eo=hqGpb5R{Vn_+t;6L0`ZLQs--7qQ=`d?TS8(gAUBgd!r;ZU)D{ zOMZRutbmlSi%YiXLRxr{U_VP=2aXag#W1*7hZJta1^G3sf%n9yq8yWY(O?2FFxx;N ztSx;BBV&mSr6eKEK2xTNH&)EKYK-e~sug%~rJd5iR<~FG04r&_k6%n$QsA<@*{xL) z<4k90y6UXU%oPv~7bR8SY>TD(gNcIDf$!(Lhw@G~*nhK%`hjrU1J6a2t?Bh7CdBGL zI3w1w)^V2F(KfX~qF-=vN(se0jY(z_-@%f{O*#jm< zJl3+k4adQ_Tg-=*e^Ol3Z;drKL#Si-BOf(OH%aSc2Q-J)-z2MQGfbfbYx<%@O0M0VE8v*}^F%+xgL2G=BXBhv_4H%k+nYu{CPiY!P) zg|;5}j`#uHNMpg!6d^Ey@`0ygu{+xXY%LrSGh1aq&_E#r?{2t5NDl?ZLu(R)xY=5C zElN^IwUxO1`(iw}dmW>N(W9z!ebZ!}os;stNUc+HPK zLE;PohU8_~HMpYcQ;;R6m_Pbknh)_f##Z|mQ_IE6Jfsz9hG-bvY%v?)qaO^>(v;yH(fk@~>n zz0p$O7EY9E?eD%K%MrRZVYuA{Fv++n1lw-d0gmTnoo6HtMLm}g<1WT+Xgd`4BhuIl zp%>Lkjm{UciaciUf50v_MRmOA!^%OPtw2nO*UP>M>UAJlU-*H?HI9whqHzbgOQyvp zXtC5SO>vvx{{SumXU*XDWsO^frAkdYsFAMSbfrhidvqZCV$Po)sA28v;kvkvvIidC zi%cA7@Ylq?3)B|_I%LZJTz6XZDb`e`ok;G5TK@pR{rlr_hGVhLa)Yleijr6@m>m># zQx7ExaJ0Tz=&NjhJYR>4+lpn7x@B6YMV}Is(Cy@=PlwNm2N^g}V$k#3%i^9&8c9F3CK{zo?GLy^gvdm%~ z9-0Ctqjq+V4%~MGzKf}D6Z}N@FXA79RGjC-s?Y8El;q83JuxpO>WfdMDpQf9H>+A5 zwX`gYH~=;T*jXGQv7WL$LDu0*r|Dl=A5k}D<4Ya>JA=(luMhlBqH!*PSEJ5tl|+66 z4$OrtDYt%I*3`p*wsz7$a1(RA!M2Y?j!E4uq;~D4Q|JK9`6OtXNArb=6tR3 z2JsEUx_u^c>p5z#5;8frEy9e{<*F*yl&F7d(Md}8NwvF-R^Sp7O_c7_W8xHUl~Iw2 z-Z5bA(Bd`y(|_YClm7ssua3OCRHMHV4pf|)R}d(IqNTkSBQD5wGf*48kfc7;i!3B8 zCB*3>>IL{UVUD5H&pz(HN9=>r>OcIuD;PC!*Tj9)i1?6r#>?5ZshPY#F-@HHekDdN zN}E`K0;9=SJ(t@+c-Zq&g*e*9loFtuTonNNc=Jk2U1u<%*5ZyZfJSCKdTHJk)BFQ* zg0;p!43!#QW@^ysQoWrAHw*-}NDPOvp4E@%NH5CV!$!xDN!Ffj^-==S=q=tPCG z8e{IAywew*I3<;Msl)0I8h8T=Kz3YK->YS$v{dA0Ng>6@P030Uu%s!Ya)LcNd$+TH zZSuk+rp6z5U2LyAxBOhke+A^-J@!EkCM1^(Z&y~*ZozD?{{Rj4cfhE0{8uA5;}RNi zmyoL|3Ir4p*n^L(X{zIuf=HYTNVp?VSIPL69X%w*3D{ckp$9?`a@pttfIW7^ka(2< zUfL`GC+Jy9R!>hsg$@ARCWdfwyrl$frrigw5P+UYY1FJLiiKF|x$Z55AQi>Lm3wiL zfpC%))L}>iK$_BAG61eEovanM{cuKrZW4GZgj^3T_rF{tt$sHH;ZTszS zYzwQgA)#7=*AV_F+&JTL(v~Bor^wKSE9pnM0DJVp$O+JHjS;uMZ4x?N87|Is_o@tQ z7EdQ#$FWe_%JY95Ly@m*J3ln7bWW1)DMtm71~#>+DRhDmJ0sBV{25!49GK=<5_+j)#T)8eV(ugDks`lURcej1| zA8d4hv=Vnjh&9gFWn*P)Y(FJBkS5e%6a8BrQIoP zZW20xKj<(=oTE^L$7gkc(I;t@XC=7oxltUB`E_V-s)7Ryz^=u_ig66U32{95y3@JX1Iv zqfkYNI)Xd-tv~U@DM{fzcBy5@9p}Q?=x=s)g>IAg?0vz<(wz#%KZ()@yWeh(@#p5e z585sO%r>Mx5ol!9z1+u=kE_f}T3R^BbQKup}K{NN_!tqP5p5OCJW^%MN^vi^KkJ@Jr{{N8NAn6 z;gt%j4R!i^4VRirp=Gw#4=&3D>Hs3vzm~%jW`M>4;#D0jdulT=yEj6eT4R*RY&}+a zwi-id2uq0;x)aeix8Lqb#cLoAaPC(wtPn(Bus?w{@OZ5bx1E{Fkk->u6&X_y2_(vo zt3g{uCfWk53HKuwbuA2SxvIQ1?x=gO!}IVbt%svPilk%j~H{xN>t*UT9IORO~2T_3j>{f696O^IbHKeZEh_q9W)^7 z=zE{OCS*YC+ApnB2IJ1g{RKu7}J z@XOfUIJE3ngJ>tQ1Je#KAZU|umxAzb=>t$tLVxOTfbmQqlc`xkcGJ~X*x`iVR8n-Y zSA_KzH~V3vo!2#>_^hn3x0Ht3XPDtSQY~^%pdD~IC2U~1=D=~-DO8ltnc_IwT;res zUj7#1wqfDt!9xCC7JcJAKSV%|d`!OTNGle)S2EkBC#Yv)cGY3!KQenl_Ri@X>Kqv9 zv6GK@Z!aH3^|!O%Vz5v(wb;N9mvJ8LZ}_>pyJ6l`!>3M#NX^qZZN7*|NLwr*CzgcR zB_Wh1!3af%l^_AD^2g7$LGo%{a&=zI1wdome>|3~{CIJXj0>eD?jOODibXcDPpVIl zkXDuwi3ziBf-a;f1tRGHT!IKBUGYlRG>dApwXT`cHU9w83X{2Bi0_DMc0tV5XwoBO zFOo#{LwZNde8QBAI@wZ4uvtT8Lf%a(uu7CpC@P+19a~L;*-_9ltrZf0K-g{+`KH3B z2yyvP<2KB8v@im8Y*+w6KW}}#df=3?hK#M*UDQfnc^|rs(6fCzJy*D$Kw+iGPF|`t z4fVLtB`zyNqUf;b4^4utwk#!R&1IQ_Z1K87vrV>I`0<;>t{d=sDa+zcd{qI-vS-Ms zMTGW(^oNwKO%loTkaUiKohRQ`2HJa`vD!2$dfZGj21nX+ucn88Rmt9T{*!TcJ7x^a zP<8qRIl`quZ4vC_O=`MUlqlH;eTnw4>5S!eF?U)o!n+T{az~nD+WL5?tHzHRd=>D? z3aOQ{qSc?cj&2@>8b>uqa@}T0H%njgq!oH3b;IcJ8EQY7Ik5cLD=34eIcXbV&xhUL zF7>4jHF%2Rr-&+9!<3HZ{3#V4%w4`;w_varL;z&H3f%DsjTAmkB1@`wI*{3tO|YU=~yF;q~Dz zf#SbBW?F7-%oPewT%f~`Dc0h&l{+B1>e3LEF6lu0GD#^{u*QF+c#M?oXp47o@Ib1V zM$47d9|XKFaDRdD*^9%xkxisOrq0iBbEUj(`_C`TKFP55#u7m!uFmtA{%~2ju?Ig* zf|HPGNNk@fH1yc?!2?aSRrd|lB?MR@8cId%df$8>swYyrHxiE;V@NAj2dX2AuXhyfRTc-3+$NsjRm(=44ptL$bD~pzuCj%rFO}#sLbA0Sl*~pVYu8^ z9#pxivQr(DmtEid2)X>u*t(>^rX3E{V~P570qLBa)dEYzLmI;Ks(%EAd{d@jfCpsvb}7e zIH1_rcPFMeFxV$O+Udb#G6MG&9YFR`#x4TEjXtZ%nmFt+1l(Ixa(w7^oV5}N_vwgy6bWZPX)h>jA?x*O^1 z>xj=~)Yg!9-2-`m8(OVxwl?>`j01{sk;H0(BT^7_q}%O*x||VojHx3)fXsm!bY;ey z8H$8;kL+J;IFHOI5r{QdVo|mSTacE7)e*UPPS#v*A9!jBAC|Q;WHs#4|#gIk6zBM49 z$s=re{w?gO?gYT$=C@dHv}Owluk#;uk@|>;pqk_gg&E?0r`jc>{{Sngx({DmdA)Z+ zYN?H+jQFkHH%nqf|p_<)}BaK}A`16Me1^qp zr;i^AP7`NT)N0%$sU8|v))b)`^W-rvaJ zrrc2*AqeL#=6e29tU=5fX0cSu_1LTCN0$lZH0w(CQcb}19S#x91X$`2=7KqzStD*1 z;XFG0O=HZ17a(|2PSSw};N##-TL^W=Q?TTk%6@spXCIGdF7#}hI!g_~&fsTp%HQ9l_FbW|)5p8LWv8UBq;MCxW}u!UmH789($aig zaOPi%{IQ*=Q)roog#1FtREp$kv?k+)w!$59Axx)M=Q81C>m&fAuIN_f2MYxVj!7bL z(Ab0WR+8h*sE!(zI{Sj&Bgp(x58~h8lRNmat$1tB{4c1f5UJ{)m#fpl3He%Mjx{Bj zB?>9Jt{-d<@2Mif_r`vBi)%y9#1Y+bs4HJP#Q14zHOfH%>7m^Sf$-OUJCX}jBqQLro}j}lWn z_Fb^#d%V)$;jK6NJ5u6KPj*E?GD`@08+`pO79Uz!QA!8z1r`q5?|#JK%$KgGIZmIP zRV^(q>FccFsQK)Zo(?#>n6h7qH~2LQeMWv!MEcaf+5y7*PDOfTnHFu*q7;%BU{W;P z>_IofFpHW@vH{r^OvXk`L`xC(kNT;_#LfuQ`0VpF+Hj-f{M7WB4ZSKu1qxh%R6-@` zxw67gQ)K=gt?mtz=zh$-r&VB2>Ye<`bNx59j~uts{n`ad)9!-Oj!t#fV{ z;z!AAlRIQg&%?~aJ1l0}ThyAn3iF{u%Cz=c6gFB9Wetu#+UVCxsPSr1RYv^HJB}do zBY|HUbibiBxHVCxs}|%&&K%l!{K7-K2sl(qHuc7a>nPCWm8J`5up-v(Ft;~JnAohT zY@^C;qW=J6Q?k2tXDuXL-*flF?XHQgwe?jA>QX!Q$6H$z zye<_q5C|LZ=r+O|9g-c5f}l;sf!okwx7SpF0u_Y=uTA>l!0_EYjTYH>CvpwQ?Y0_I z2QpO(IveR0zB@8DQMgTxeb24srk6^jX_c9sZs@tQaFf%R>bo8MsT-cV40)eV`hQP_ z!eLQP?Aq7BS|2w z=MP5OKv5^TB_Ld=419Au?UnA9LvnQ|n)-g8oxnB-g{`0i>bEOH%)T7_GC`)$+?AFq znS(COara)9rqKNAscj)o+p3*IdYfpUD2RMV^pBJ%vG(DmP^`NQdXp>C9;52L9jL!3M5}_ zM144Hd9Qy(ri!aH#x(WN>Qbr-TeBE#q;_p8E+qqd+@$HS*dCr>eK8GM-U&0kxC=08m}p1t+r;@zxtzTQKgeI+fg=!a%*sw&*_F^uU=3&HzoRoH?5W zF_;a8Q0f+kR7R~~y9Zb6w&S25!uTwMt0s=Klc45}fA&s;+zW$_g}#HT1z! zr3*TtZdn&9Ct{wM5jlmFx-%hhB_*U)B{5NEJQ`H@+bJn=pT_>LG={%p_~wZfaO?6N+^_%L_5^<2tz98qGeTKAxQqlcP$x zffv+BDs5_7LapT+cel)y?y=0?E9iVWAvHK;q-Ji1%Yt_*Ii7Y$pw=NnZcJ!^1jB8m z>gI)jLQ$vh4)eeiBbRt)(Q&rvBZ`fs=E;#cAEO8Cx)CX965TUE-Nj+R+QqUzTzV!y6wmJ zP&~fi0xoV-b9{4&Co|Nj*db?A51NxFFhgQJHZ0d;BB1l2q*+SxbtzWX1lz9Hx4t?E z#-++(lovICT=7^d`GTL6>9q{P)9t#`NK)gnhnqlsNd%N3N6IhIU%CA7ZmT=3$w9BK z>Ka{rPkM=Tj~ID>JLbxUS8AI{N?^UpC}OD8i3?q|b6jB-TWHwWC~s}8xCuOrXvzoY zf`da)>W5}F?i%{3QI#E;n3Nuf(p-Qvsc$Jj9ryEFsqbNYK$cB%v|OzPE*|0Al-a7z zC-Diqr9^s@mn1}YHON0L5ib%NVbTws(vYG60IN-|YzEi9EveYZ+nz;5jMqsZFjDW& zfK9&yGah5koIR#LoT#gz=5$P#3D{5F3UO_?L2!~y(m@3(=u$;=&%wr)I8}nA?+|^FYw3j7JmZIv4 zT4ey;$K7(xwuGd8MN3*z6Y71jG8pcwaXRM4GJ;7wIHaczv&|H8#4EDomP z_|yk1?2Wm(R+Lzs$LrS)Lufm%6zomNI8aH^D_N!2v;YY@t?z}oLo8mAY#svF+N%Ah-Ay3Qds!+Y6YThw+s{`ls& z4N~7W%P4QlYbfn&;icC%TtM4oE({5CLNET3czR(p06bM!_ja-9+tSi1k%b z!x@rS0MV%>SYgyM)lS-Y8eHca05>IU{{VqLADQ6%supj~u_DaRt`xe6ib`HZAqwaK zu}PEkl`7+xa1wPAN68-1y{5kvE~KJ1ryO=J{kacS_D{2)XHnopO+B4ZMyG>2hkr7r zwQDfHU5cu8A%|q@D?`r|SZUtj3M0&;q}&Vbzgrx5yPg@R73!~RrR{9d#QhW@;&pUo zt|dsDI;l~r(`UnvOZiq3nK6oiB)OptIHsg6MM(zW5E2hubzMkn24i96^;LB3&ohKW zF?QSA;j(q|$A_8?dnMKBd_$$8LbD4BZl=#Tx|UM4UdTOAq^ zq$S4O*r{hjo?+1?JuiqDjxqXo+A;~|voTV>t)Q{ZvTwn^g}~XPiQD%=E$69Q zb>P3lI=s~~K6K++9HJwa&5f7Z0Jx2>{bgN`_&aw47|M)!?*v7l=f}&Es;$IY!Di}z zIIU&)n#-|r#~5>6E(-{a1-FZBAw3cjZDINhY%m!Msm0T<>H5g-w&Czbr>z;2jk5l< zu9-s_5I@<) zojx91Eo-X!ionr#6e2WQNPu*QF+&^Z{>?v zp&+OZnA<2>blo=42jy?m5^^a0X&M7!u@*@RSOZY${{WT<8P8-1B?nSgFxXeqsC#-~ z;xq!{<94d)04CcW{@5#E)S;POZA$i#cTV47*9syHT*tcC3ZXUt0&IVV5v;jLNdrZb zMyqT-_QSH+=$IYeyp(C%Ndu_2rXE?Q*C_yAHrRANzS!X%$hOG?itua{YS^2b-)s@g z;j--szUv^=gsD1I6jCpL^2chIIOMXn!fktwwisosoXvH*5KFFr!(l* zL3vgMR=FKE>5jK**Ik@jMT|FMY)Sq<^}$H77fiE{y1bUJV4crjz8G3SH(b|^nukY1 z0+awr9=MKMeL|5P!U~$D;U3TU8>wong0<9&gIFolb{P zf5d_TAErFQvju!lEOSUJeM^hSCuIm(MqsMBV|t3iuC6No8wx7!OtgV3cwf-u7s#m@wycLR2n$p^$gE#ZLhbwLAo|>Gh_!SvPTaB!s_NW1lN|o*`H!zL z+*a_oSK>>SqNSA!lWP_w>Xt-Da6Mq&7|YK^v+kjpPD>RXJcDJf7Z zE+t?Tg@8!yiP%?2nm~$S`>NbqqfL>e)aJ*3KdSBf!e_)QgFY}kG-rDLNQ+aYXAH4S zjZv@V_nZaR*Ps&Qb(N`3$0fCS?YBh$ad%xx#}Cv(Zp->0^nV(04xj+0Kv}=3Xl%CA zldZ&kLYO`e`0G#NPHy79OLBB&RO!_RBtlYZ4KLD-ca-wRoUh zjYI&IDIgPUWH8vB8=V7(WQ`Wr9-?HfWn?F}dpL9N3tst-fm-n0@dp)XRR^gVUMOk; z6qIUdn9rq7rR1Om73$`cb=Y6Hz9#f`vd?@k9p9cSC({f(G11J!bH17>$Hy-cnJb35 zr5Rz`^h#c1vw4B)cU4J=E-FEDRniFNqnE53g%q0*cNB1eE0{l|>O501dZW}fSKqWW zJ{ze$SIfBz#V-f4+qH4>wY9@-%6&-um3E2?pAR_}5^)C#%4#g=HJG z;y5^Q2k3Ye3{X2{tDZ!3IuD^JvJZxavFO?yiLN;*T7oZB;SU?%V3q-}he`boZbYm<>~)n(mJMmvAHR%p^f* z8v-^s*(?T2_l53RvFtrCr6G@7EM>a_kS(^u3z()kg;z*TyLRc&VFPZMKpHD~V*3&3 zFt@ge<3OpP8;yxLLRUGBBJ0H)4=-=wgu3Ciz*dxOuIW9khh|G*YlUe8VxP|(hjV=p zSrS=^7F4%Xo>MI?<=p=2Qcw9}6?IUC7s`L65~a{n_0l#L>PfPJGb@s(F0)#wx)~2l zS#e705}u?J>ZKpykIw9WAAMz9l@jjaSKJsr4j`swJYv~E^-nJgc%PawD{afll4Q{7 z@(K&>MOjD9=uuKs;*RzT-}5+v+(Fj^V66WDhXONyP)G{2=~b!q`s>mhn^Kd^b?FYO z>V4G`P1Jo!ClQGcX>zc0?m%{_hRy6q%ei+mOsCA2Drk;W3v04~xFt6oE>uUo?SM~C z=0I{CQq#Szm^I)L$w~hJ3LJ3Fd{Yl}E z5~(@AIb>|ZOsP$w=d86>rZCcK4zO0*l_k9iTvrqWZ-)?)f)-Mws158tP~zsv4UBIa zay`d_qGS?1ucxVT>!NV8fgPruK_g-a;x(Qe#D*K9;um zXhRE9R@qjwbfkpb6z{PB*js-1ku)XuzUs3Mn;-<9&v@J9nNJfr%RR))5wh0}Bgms> zi3@4hrpQxaxJ)6$^OoMSL(T-Kr7ihMBpcWgAhEVNZ?e9rkp7&KH9KCDOD;-i3zfd5X+^E6S}p)ly_2h^{c#!bI^p;6R&-SidyHp6!8aAG#hGAN zDfHOx(_D2*Q%@yMD1;>1!~kv;Vcy`|s5@a8!tFpyT=zp^f6nx~r_rmmFOjXVjT&Vc^>QEQ zNJ5kluPV@ys^K6kkTji@y|A&kYnT*SnIvvwqaZty(oIH|X&JtuPH`Gk#X(Gw?w4)b z?T@Q4db1@QPQKtTnYvd_`0*)&x4BGYmXFO!=tnhw%;Vpl{Yv?E7Pz-``gmY&tx)6c zNXwMyH2ILFvg)O&_VpGSKvI;n9)Un04emGfvB%2(-)djiM$Q0ySJ(dl?A1#f+cDrZ zK0}(^wNHmUKYF(}F{dq2m0p(ca%`ovl)oS&X4JP6Wh+Qd#N9wBi;xCBc9iB8a{3Xb zHa|N++>_#)oa0o>8QQf@qS2*Ca%?S5KBmGJsLhm=lsRG)0R;Jb?0XBsk)tj}4Ug;Q z>szqjl2zpRba<1h37YdvHl(4L>DEYEfz@PbvXV`@3maRuB-z%{97x=b1Zqx+MOH;2 z6H6I#*ZOL|G4boX! z`F?e(!9<}*3FVull!J(J_D)f&ir92|k+Lz>4;f=^GL@>A)kI6n3R1JzAewtHpgQExmafS(a{Ymr*r$PTIVN7B|c|0brvr<+fH2X?E&A-R7DdVi?OZOByVviVXzu=*2CbRT!)ir+zZMv zGR#E4r%~IJQ?0tpFrplAxVbMnH75FoyON{k&^I==D_qhZUU;j4D2@ilzCrie?TJT&px+|Jm=EQk#@mj0#n--FIvkt3F zah1xQM2RAxmev%M$V!}O8-ck~Z8T4PuiO*%7qCjnUxhk3HfywB8vAXgfwWdWpP0^N=iok2TX9$DR3NgR&w|0w@$clH%J-UvzN5k9gpjd zN!Dw!w5Maby*~IXtQFnnrKOFIN{H{{g>L_%{mE9gj0T_M@)Bpz76C%_@|#W zxa_>qC2MV`OABh@tx76wMMpun2`RTr-5^*U&faL!GTU!8wFSmf^RJQ#P_0R+a+x>n^b4`uAS^jXct zQCl}DTgoo2^^!?amajGLK?)@H^x7NXFLtWt7~`jBU}`h~C4?%Ysh1uzl=qaym&%c{ zf`CoHRgT8NKwj6kxHx;Vi-plh^V&NmH^sje>0B4#EmMe=kk^+is@@rKfX_gH6>3NpS%KLB6|st|+`val4AXEc4)-n6r&hIT{Q6(AO}ONpU>Q z7P&t_bf-|Y%0{c{7_Y^#=efO8R&Nc$L6h|pomRNG@#4>iz8zwmiIbTb(}}Mjt%_WC zQiMeo{?c2$8b^Kn#Ci?!0*3{B$E}-2{%jTAXU*AwXg4QYcym3&%&jAFhm6^uh`Etj zmp0~~>8@xSu=7bMrqMUuxJ;dvu7JFuy{@KSgQDbrP!cz)W_nR%XbN9D%*qB>6Rxohm7DsD9qjJ_+4wSz0W zPvy(R@bKKOmR3b)JlK3n=_A9RgH8_kZKUYQ)HT(!Q>X%dV5o$#3hZ(J#8%V1Sg&9~8V zA>(qM#11@W)J1V?X>#3Fm3={1P4+#v>)(8O4@a%kSS=nBZxY)-!5SAc{wYa9Mx{We zwpD*g6HTq#6kac@P0z3#I`)LPp1MlR=B9mAql>S#ejNTb9fXCD`IkMOtK{{RsmY;W*> zflVpRE`#E*xQ9(3j_iw4l=O_HNvAC`R?_Mf1n=`QJnQuGj*0&O!UjEO1?Z(cGkXoW z=2x3yy(OrqBstb^B&=ymDP(VW%lvpt_a;b{{S34qQhmzOYT>LWLRz#d-lgV z$pN|T6?jO}N0}t{!rNPfx)tpP#CPfjI5$*|Hr-c7*VW{|Y&Zm#Al<6sjld?~$YBFQ zaci9GDuks2a4+8d@T4Xf$kNKAp<>0agl9i;a4qz7F(+nc|fSfD<7gx4~r$|appF(a<5P@qFiqm7F z5{8ncDP$CaI(7#Qe#@G{n=#Q?FQnMrM`5-C=8b}p*4TDXCrD5!vd?3E@z0Nv8>BgH zWq}Du8z+}-x?A%e*b$FZ_~j>MYmNDV0F&2zC~72+HoLg13N>s(ZT9VkizLk8J0V-3 zblC0KU~Xz41dVrB6x(7pwXJMMnU~o;lH0Pda`sX|8ddh|>4@)OxwM9ed6rlu z9s6Q5@S7=+zblb7Zi7axAteuEjwsq&R} z$;MI#6q}bH&JTNa7=U5dRBo^k2OenwnHy1sGhUzqO^QeIz#j;4x|GMd-L1QqB)<~o zT1OhQM71&%G5Ha7x@~flvapf-RlYRc7(VlPU23q$U4W+l0O8@6DLJ#m1bPi&vit{W zGgRw)ejo`z1AjuR{#c#THeLdUj7a9N5zH;5ahKtt%=BK3vpVOj+#gzfe|?xWVD~h@2g*Os8i06qsoasVzuC31!iHTr0QO{{S3r zXfc@NvoB(_alMiZ(VM0vY`EHj7J?6Nf3_~efk?AMnJNUhvm(6oc}%#MTUr!Sq$wug zf(RgjI)i*If=9P7%0ZW@d@EZt3$6* zYdLm(3a3nUeAu-bY{tSIwu9wRA+@2z`9hl)A5b*(7^Jkhpr{vN(5UtFan?Dq#BD1t zW8=6fbMVITwNmi?<7X>X>Xq4$AXTKAMS7hnB@c!jP)Ks%fanX*yI%Wk-y4i3sgg&P zrtLa+tgbmlG!nL^)^kq{h&!(PRiEjZia!anH7(TCsFg!X zS5$Zv;~}GgwUUZw6F6I4;%0U5{{Y1au2D($s3 z#w%G~QBkH<;`x}Ek=twNaBZozZV#y6A98y>_LohK!63kUB$oMcO%PzOp=gDHyZ=JvFUeSQbX-+)w*r|zPM0Ovuoa}q;1~B;d3RF z8)~Q#ZLD`Eafap=y5@~8c32hzcO5tEH^SXE#G6@DNw-A}x*R5Cb~KT0D6vku9k59Q zvcJ2I%z@Qh>Z@fEN|d5WJv!U`u${>wxF*`Bw~O@`XgM|KV=GCMArWj(P(qY$eaZ*> zIP!07n8dW0Gy1b)>klHmGud_+%8X5=`!roc(BvA5L?OyrW4aKc4Z>DRbzc4MZI6dP zO>zm@eRB-qx3NzfaHPSYJytQ_Vw`UosS0fAao~&c(|wen2vGxY2)Nu}vvwG7YpD=3 zF$KDSkkE{jw@+ztlG9E)ryfernFz7Iq0;AVzr}{be60s$*`@`~=8#$067xNFibl%~zI%x?6pK>uERCTiTcI<@`Mi`?m9`WLnxz~s}_NSR@*&8I)TBGI4 zWCcT!Da1BV+m9Qqv}zXzP0Ey=)JVTUX>67C4lRs!Mu;Y!I&jxK+2>sr`2H1qOqrRu zVIzeRqR?tep*HM#vY&ZKaU8`cw%Bi$HTe=$Rjh=hr)!%Dwe0I-05)HCC$u2MHb?F$5EWg8yu(&%Z*xvT;KSb#GOQ~@4G(*iYW-W~EPt0$zK3ztmC>nH? z7S^2+Vtp~$ZB06m-R>>t7f~3~GK;g6?R$^)Sh^fS^L4sv06pErB)=axs|J(C%%73y z%{c+Tmu^DXrJ;nG5uBRO0mhB3Gmf`G%!^B!WS;uo(k0fhOfip_SjJabY$C z^60}N=9aSzN>x@ArzF$Xpml|%Xyx4MNZgRGE}QioeQ;rW>YzhV9^0_~cqe0sE<}w@ zi9M4Zp7ME%Qru0A&;SPJ`as-~u)X`@vaN(X2I>~Foy~nSvu>4iw@pVaN|^92KI#^i zh<4>_y~W2sJJ{TJ!K+4AXf#oQ zkco><+k?e9vSBwN3#i6x`onCJ*|o*N-)_6#x8HkVC2mkf)r?Y!GT(yJ_Z(<3a<3b6 zZ7HcjLk6TIHmecjcT0nBvcSjC9RjK|Vazu7bo5>!?J|%>h?xQR+7E(=k`g|0Pp36~ z`|3FQefPP#_}UiO3m-Kx{24h;rDx2+UFX0>bW+Sn+~P@Xl{l3=w2ORH=$pCCZh_an&hlj;7ih>r?8~Gz(ai zjY$d~Q(_O!bDeHDuWfwfHzT$i+}qV#!o<^Rxng!}%G9?^(U)n&8gpqpitk&-489v$nmrCs#Zx^JZ_ zDIkJVeZwImQ?h|UDV6$r$7JGX48}73cP~;}=BiAm(x=O53p$Dwr0G3~1Pza-{pZ5V zGUq~4%}_s5BODRG6Zpp`C*?{Ih#8S4VKJ22BDjP_PLer}Eh$#AYzBmsfC(xo2^V`Z zv=T~YBRicVTHQ(bef~-x@ZXAg_cU?JtrC4-J-rG%j(s(j8IKyD0uzZT5p*=YQrQb> zOD@W6tt(PepDvXc^))4}4Q|JP8u^pDhlRxF$m1o+98IhTD-K=yt%7j*ihgI#Gx&>9 zVl?XIHHY%$Hc~(-j@z84B?NzoN<%17>!mtJE<#z3TaKa&j}W3Pk_Z8IN!7F`u!dcOV{)sjL;nC$)?eNk zMY*0=?op?Wl*zIt&>aQ&zrbLcmTF7xDN{CjaBm-dEs7Sa)@$@(Q zI%4t}XQp|$I{g=f`+vh2$5YhC+h|+kZFT3Wis~0P0_XT+>kw_C`JJVpTyC+bC>=pb z)6=2f92{D9QgJ#e?+hCl|ul}#$J9$WgHE{TDF6PT|A>`4awY&~%7$Zi%Y zng;g?!sbtH?PIdJDEd@SeYVFFWzGWESwnl9+V~lhl0pUTZBhPN%N5MqT7j3c-8xNH zuO)gKWwCN>E>xm+NM=@zre5xyh@?8l&!m+=m#_0 zw(Y|H4CVg-58OMSR8)#}Pd!YJYL!u<3YcMA7Gf0(Bm--kU1xh(TOSzo+ozQn-Br(K z7M{y~r@!RB)#&#`DR2rO(^H$h!?x>c?%~`x4k^0fuN0ZcoH)!CI+PcIRZ?fmwo;%* zr`KTS*FXvj>NX?*2q5DLEMUlW(P$&9Fw!xcd2&$uioP+pgO)g%mhu)&rpRWgU5vsZ zNT^3~)yPtvT6KU>S*RqQ>zJuzV2TpFX*P8i(lOPpW$tI;@M?ML~(B5>1AHf`7y} z+T!=Mic2gpIEMmODcJ2p#hGE;w1?uy$F~=}Vx_k8p=%)UW}f+eB?dmmrs_wQOve-f zUXgHw0F;f*uB+m+5XW;c)6)wMCyDSwZ5zwQU2)7t!-IRzGP$eqckv8j8L4p3fK!-l zZR(FdFth@ijz-0}fNZso{pZr2*E@&dcotFCPBq{@>gt;hbwLh)WuFuF9~0cP=_0E# zpsDj`%YIpX!t3%MSzEH4CgpA{+^s~O`+H*kOP338^7}1qH9KQ%n_$q0->9j=Be8WY zLd4tsFlgz3?KwH~a0yS9vP}Bi_!RgQs*Pf&CFHRhJa$y;vRpk7+i1F!qv$upD$GvX z8zx5`%HD^B&xN#QibiOXb8e6^P8S$3BSk4C0Jq*CIvmSaVX%35YSU|1myqyUtUL5gt; zZK+wRiQe*D;z>TKNF$`3Jg`CT2H2S#U|Px{0_hK);;7N4grFrQB&40}f723rkVT4* zP~t2?oDM$e62Y;|98t7?7t`=?80GpI5!0ZKpJ9}crD8p5I=L8!C zdJ?0hLU4U+EBNXjxGtuVLMWL%ED zI$+LrUDG0nyJK*M$cU6Oo><&&uUrf}UeY^S1@fSbMsei;HCws2Oe>$20Ct^if*B$z z8fQuqax8Cc&N+@JQjG8but8a6YXuFa;``z6AZ~>iCvuKirm~W!6bqK@dJncDNi(lz zsjPsDyL3|iu5*Ic8i^gSR=2adjPmV>Rf0Q-;1kbh>Oa1VpYp0gqyTw|aBoGo(FSZ+dBrXSF zy>bcPRlE9NZg{rIG~BBc5ul4GDEGkIbE=b@vuANwbPH?+yJ3#pl7`lcfRS*4 z(*1GA#XPvTYgjB{HYVh6?}n0y$8m7oT1D0g7WDSRI3eb6a2M0bW3eky)Jkn&4Xkh{ zT}fcI^97ASi=L!(z?@p+bY?xkSSz$0ASjh5*Zi>+%@;OA&wU9&l-UZnNp{-Y&*Kl&S|`78Cum}5N&W5Ikri_kF6mX?gN zB!X)UNOkBEqsgUJ53yoBgB1IRk2_NGh}FSvNZ(sx%KO}OnK{KvAWI3 z_K|KWvf_6I@)s3o67ueI%g}1@ok2yEfvK}@saH^U!oCx@J0nt8x(8jmtqJ&>_-*Ds z7NV_~_-@S1-;n~8^N~??N~ezY19hZ&j-AFVV8`c;!>;xFt+fsz6#bWWUGQ41tz~(T zLfs9nLn%(BDI)7=Ufyxsd;YlDQDSV9L8170eU#_I?Z`=1UR-w)qp2zcDJllVBy=GE z0G=&e+w7RxI6GxNJR{p#-%?bxLTPZYNtyo*rDBtis3yZwhDVX+QHU} zTt^IK&9N8xj}Nk_#IV;n{d{}(eR=%(6}cyAJTCEFO8%Gd=29}B7HN7uY9pFkl?B2z z2HZ#`Ds5wQtt7VKAxK^@@1>fJ`PuHCD!fz)Tl#vI*q_Uf!QK|fye|A(xP#%lB4v*c zylBh$iTv+N&M|A$8ob(>O*Qr#X$>kG-qWp=sUgrpgM#G?u-!PRuh^o^Bt`5mK%<7DAM%3Lq;W8unvQk52xyrEu#sK{F_U3BS9 zOjjma2-yo}Luqgwugg&GMj~VQUU>A=Vh^H# zM{@Ze+7Gjej22$8r!)>EHQz(u^Gy+KZQVY&^nmr|g~#1g(2!2T=hWdd70hu4&MMwo zj{SZ6;X~57kF|oaNZ6gt$LWM6G0z|obK13ToE#m1esWF6H{2N%{1eOD;7Dm49axEoE+K zPQvO@xmQzQ3D{x`^}TEEP3){K zV{FmI5;{jZ?mQAYi&J78_UbBHd5dk;Cg)K}Q2-O}cl|K5)nT`jie*GCaSXMTy5LWR z`o|D*Y^=>Cs)TASNy{z9(1zWpHOh^@GWB{?0i+kxiPwQ7G=?%}o0qvgcRGNqEW z&S}^1AYxFulA(-v)1MLdPj|$_jaBJ>8>^L!x`&*qQL2y^A+`uo+-gD;08(_Dx1nQF zPixxu#&;EW^IGsWHe38QpuU<&Z@9SKYKP&C#a<$&v7BO3-jv%E^gUH-OZ@WP%61$0La~`mYfs@eeS{ zsZz|UwKgLNj_k#NXjFbIa ztX={**9sLf9#*GT9j(*@%a(|-n{$>ECD7tkcfS$G(xtCbw1jCl3lNWucHq zQ0HxPdo7pvkI#>A_aRZ`RVu2Y&1wmfi7qmQqnM&K1qCQv=_12({m@Cqe-x+;lv{%I zS|}W8E^lM5n}o9P<;BG3-W%2CJM!pq0bDn<>=r=TK`OBTr9l4xJ@&=DQyO3r4T{h7 zZn4Is#CLDSYpaI*Tyi&w$hmFFvYShjUW3ehxg^OdON$MmNcsQ?Q6)fvM{D7jM4|EJ z-$e_hBde>Y^l8CrOIMi>hdoaE8@z;;pEJ8x`1qK_d|+ zvt+*ouZiWl9nso3QzNJ=DWD^ynjSOv4U z;tLf3Nw|tPXg397WW>R9h`4ijeaF--qh&UJW|0}m4;Rql8%DkFe&?p%V}8A`3Ww@$ zw0Ky%TH&c$Jn;pbT&?ljJx`4BdMK+H?XRF%XokVq{{Vv@R(mtRvSBe7?(Kb7&0g5C z=KlZ~d~xj12f;K_kbZ7nz#eM<0Q+N)b9U?I<_8AqEQ=!NdX`7d6l#q%;)R&YZD}J= zS_;oZ*+aLX`(xyfZ9-f^02fw1NRTPS>#c%t-g>-Ivnz7*sAFsi_y_IiCIsaPcYnM-O-(pA|}`$xJFu z9r=-3gvnRSDTMP7S<*bK8WmyzAdjU(%4{gw*1F0sNoybaQtN6q{ge>T+3!A1;R_FB zx8+nbRbAGcfEYq~iAnPUkk}}4<83JVwO^*I4qCtgB~;bYO8%}Iahc9MKPkA@k5<6olUHxOKP7EJ2GTAm~iQKs|ayrX6EZrQm#R{ z>5CeiJ)m8KL*AoMO!w;YO@{yy#vXW+#p9Twxt!zF=dnIJvgydGJr(tYD^psKprj=i z>tyIzNWP(LSIXY3+3m1Tih??ZXKjhU#U-d*RnHt4jW;AK_RkQq>yjRgAUN=eDvKbz zN=v9s(ppZSond5bl@bS#zDaV6@bW^Zjn4uT!%c6$dfE?$nod@wRx+DnpG_6Xab&+9 zJV-7)Ao)UGQ<5wZsObj52s@BTH^pgqF3jVnkI`%J*m9Re3wUZkumiTW-{l+lzDYVTay^hYbqHaJ5z4U{EQ$$@ei*_3M1rDyEl$0>W@^ikx4kgY% zM7N(ZmGf=z-R#=!CHl>BK3HfYcirW%^r;|SNmnsUHlkK9pt*Z*Y$UQc4zzweOVu2@e}RxhwP zuXKfsEdu0^!lizgRZkp`&^6hQ{G(t3Zaiv7q{ZQuS%(-f+k(2&thOz16&3QkfAJ%4 zx3)ct*aUBGF5|-~y772KTjw_-H9Qj`dDaJDZ#I7PcRsf(}AA)m{=T2;0689%?|2 z+N;ulN!sVA80)4nq&meZGOkpwXFBCOE#<0YimhT&`E0U*)b}LxN(WM-upMzzjpH=f zeLJdZot1;~!@X$wH_@uRR;*FdGdqvKb0>gXBj9#GZ-p7!eny{1O64z06KXCs=aTzr zD{-Jj!eauabc@}>Nl@%QH|hTXPG`mD2Uf;596Wqi*rxAvicXSlkfdrUH@NGI2--9NYO|G9&W=Yop3fDk z{{Rx-7QP#B@sv<_a|~um^YNc*EN5<(qRHjm1;9{{P?wa8r+cL;++1MNOAKA78@i&Y0n5J2tpXSDpHlW2^Tvfpxdd&I%OJ+Bm!O;GPquFxrYz#j`4_l~vH(6TiKB*+XnkDsf_ zZB4?a4gR;RO4r;pi>X~~2KdcZ;;tH!Mfh?3yi&Q*#xp(3qHhcy3^-rm<_i<)krA3R z`;BttSLQOFaofy@=-fwZ{3$m-yrYcl(>_gKw=d1g%+=zLl$MPf@jfba!KbC5gJYyv zf(3>GTMO(@)rpV-O}9dkqShLuZgy*# zNt)YfS`ZSYDOUpG-lrBlSO9_*X(wX1-0|STo8$ImDscIpa9v$?P~85w)nH(Vbqi;J zI`ErwTio~%<(fR+A8|6RG9)>(p)QmoIH7-)Q;Mh+>Au>JEgowVVX+(E(|w)c(M?k{ zk~ZbJY`k;ZHX$T^TNrJ7-@j$h(=CEQ3b-e^?~hY_U=RZEro5YkV!}X3=&N z;0Bwai3dqo1vmWv04!L>+i0V@VgV~6Q)LiAO1IeJOLb8RJduNu)XQwGz%Jk>-k6aK z`&LYv0stq9%?2W*C~c(|+}rtLbDv9P zqEzOUFR&-34(D<}V{-6bnH|SVS`Y_taIwe*>`>%{xbB2Sh?ao>d5=?te3wLIVYafx zHX@u;dK5*E>4HZ!f*jP@oGey0Af*SKR2FZx-7x3PeG?;w+PM!?DlMy3ib(H-5)KJk z%Uxn>8d0)R0V8}k%x$VptbjFmt4|1Xz?Ag#Q{>~J5zo!3PKekctt2TbJCxhf-TPuYj+Y3{I@^K_^afV2;*gS0 zfAzzokbz*h#2i*p8389q09(@yFHaG*7E~jZB`N`GH?hHElEng8onfj7)j0i2Hc$6@ z;D)2Q1~?7#6QZ(fS{B-p2o|@d8pmHm`6C<(1eVmY0s%d?JB%APx}fD~AOs=!p|)FC zvekb#wg3&yhKb}HyXb)wTI&7ImbYK`(+bnUAij>^tYa>7~qd?&twp&8wpml zl6E4%?fPK=zQr=`a-m2BT_XO+90({cXePy48v!J42jnhrCn*s}YhUEBsW(}%7W-kO zq8nbtSW-T%K<)O!Z*={ah|*FC{ZCKJ5nMFc8a+me)hQ(*Au1S!GdPl^HQ(4Cs1kxK zO7z>Xz9P!tGzsyB-&9!t08gn&Be)khs*$6bvL(7%6H6;8T1u6uZ?@MTY*N(QV6EVm z&bmg|D74!2V;-j&F0?LENg>1^R4i_j`QnbYiITUr6`dt%jrpP}kj>O=!Iz*&b}@S} z(8><7p=mLPuHV`ubiT*i9)FB0aC z6}j}fgaoM+`HU!Yq9mvi%ZWQkilRKsFJXO1DI)l;sH4nDwePs#e#gB=s-TKy*y;JW z(JT0+14V;?D@gSu+eWZ^>5Tm`j6&T`<&dZ_P(F)knjd#8z2B%WmZdV?UI$6OJM> z1cshLan&Wn@w5O+>)8JQqLW@Ez8PFC z<0pxDz9%ZvOL3$<0;N8Zh-gw~)Ed&--BDe_5Vnw&9Vsdf0&W4mGZfVS0H>AqwTZu) z^qf`}*TES#%mt5lO1~SP80kEG@YzbA9)nMNia8oG6$(UX*Ih=I+XI;tTdkTxRukDx zE2g|c#UKrpwXx`btGpxN)UJ}5*mQ>N{+{E*?3v$(es#-PVw`wW3+E-~)~Hm;EIARm zA_L+v(zK=L8%lMhI&Oh`6sxEJ<4Gi~d>S3TOAA9z`g(xZ4emK=4$5rhJ}~eT#6mOQ z1?JUQ%2K1@EoJkh)hwDLSh(C(mb8n`E!cr}?^q}5aNl!xxReMzLARMx#k{*?}eCvbhN zPurf({i4B+Q}(+vv)*sia|iub$iCD4naP4r*1+QWSNpEz{nv6Mp2ae2Yys15*!0`- zURRI-p;*IYZ>0W53b@AQy>%OKc@J*=sGKuXA;{ zv)t(&0LSM~OlEWOX|o-3758sN*dxLsdj^4_IN1sK6xxk>rsYO@V{Nr|$+m{jbfj2p z1(Ga1h4GB3sTOuqs=uV9J%V(&OJ?g1Jes0fB}bGLk#pwMNZS-mtRxT?f$=l}nKisd zkx_`Oy-kZ_Qc32zwd|HtWi7>RzR5`*9S zCC@`ripn(r7C#Q>(!^s!4H%8Bi1FP}Pgk55o9UoiLCan&@;yDCA8?0AT5|yD=T9#F7l^-{zj;g*lJFAG^!BSHP!w7TRxxW7ZB@3lxEcZ$A zjai>eZm8{b+S{+Z)MNxd8P&U}0!Y$Q8+2HxX-(68Nf@f2h3z1>L8`Oq8}sEa7bezS z0#iIPWLcaas&KzLM0H}nC5oj%aV9u9lG|}7cZ!tel>}Iu*lYkuu*AtDjIcM6xK`L% zbXS$lxp1-jrk{oX01qx4cuB4Ci;Da$sMedJRPyAR55=g}oORaJ8+}S_tRW4A5WlFP zyQw4b5|UD;G45m%Ms)>G7(`Q5LpueWJbtTO-V-=g#VXEWptQpX%ji?BN&l_NqgtlWvav|TF9Z2O*3C^DlmLDX69*LAzqm> zvMAJ+TV{0D+*-qHXa$6$%1KD`r~zYgK)0rc2b;5f!t?xUoz9u9Xw`1F#x7yWS<5@} zC+8Z?AuiG)Ho_aGyj*>|sFf_Z;!qnm7PZy3_Sj+_MI&dC=HkoHWRS;A7I1buAwCuO zrIdIvl=EB~8go`=W<+72u@$2CH6Wxol%;Fd1;x^&-(YWRj9SSN{XbK2WuL=o!)na& z4S8HBnUr`3#EkReihgV1zF?x{tgj}m3Vf9|^O2pVYjGk%5gGfsqM%l80ZM^UxEln+ z=wB6y*m5^a=|lejQtR6*h}QQ9$G^lU{{YAT01>lpTjDlk%F^0RS*GYr!DY0zT`T6c zQl*QJDJiij+yi`3)Ym!2O*dLPssm397IpNxWIi991I)3gJXg=TFE3Fh)gu?BQ(`-2 z(Ne1=w1(8;)}YZT`bw5T`ceo3X_#S^kQZ9zW%`EI*8wB4i*NG(07bH71QyHJeuc381eSc%J6RELVRq$aSn=}Bv6~?hg)XyZ+ z8@a^lhDuH4%DKIrSLfz9ynXIU%)|(_(|eoar}m{9Kt`n{1gF%HulnQU?{8GOs$zLN zh4k;R_hzS(Ht;_+&=-cBjSD95yD!rsM3ouEFx-h;@)B11z$!Ysi<<$k=q-<*9KbeT zTsU=X4B4$q{Qm${jV_Z^Vj@>BOKU(ekd?mK0@rUrImRK^ zWxd?tYw`n?)P4AY=7?E$EoA)X8E(a^8jF;wbBakqmCbD}t!^k^QW6r95}-WV4wGSv zCOaz+8!Toknbl1@7vIzK&1$Bjk|bt!WJ#k;l~Ab1j+M3ZGL%rtii(zW8|&$&=dJtV zu-B6Q(9^kEiX4r+U<+|57Yul5ocJl7viA|`nL+I59m$KWI=Jwhb*foe1c#7<5|#;3 zPOE`sY1oi4pr*#yY+bFmB2m*xM<{%41amr#dHoar0K~rzbzUVooA{Z-EV)YIw-y*_ ziPVa8Ft%G|%cau8Ygsy&bQ>Wnx<$p0d`GRuAd%s&ZJ2laq8uuvjD17|b(g)YEp8+1 zig}+^hBnm z5+1eI4m>;j7T^3dL@cJI3Z`JanxV!@HMYtS(&Le(pp*++O`QZ>ZohCqY2MenxGUbT zBo8BgDhPOq;;n0kzA)IL=X#|LG&RJCx?1W`S`0*l@FDdOfaf*NV+Ad!l>JsJB?>~c zPk8FZ{;SNWC(BG{QOaR3|I=}HpHc_XcyqIfJn6K0jwKl^KmfujiE*S|RlA9!-H{Z~egDXio zEbQ54m_r|E@lJ9w22{-NLt?&oin)Hd-I2PAM|?+hGct;tOjEM*+qRjJl04gbcrzvqeuNDWolSMCi@3D$OKh}(scty4 zvQUw^C;5;uUyI`q(L!gP)@c0ET;Nzd_=Lg;MyGSI1BoSWH^ZL`GT#p}%!w3eaA(Y! z3N!1itSg-@4zaA*Tkx6$jVK;%uD#Ef;=Y=6%A**n&msO>c5eaY#P_ed`W?|Kd?J9; z(~CIUGry_YaXh&MOxui5_>o&f?KZ_p2z72L-AY4+z?Gnaqv%uZvi+@+n1|T7sgy1; zxy{(6+^TxNW6yp=K@P}u4(VtR6riLKi;@kl(v(zou(9iWMiLvB0<9lT0|N-Z!8sX6 zF45`PewP)9Ml)fQp`r)&Nhtu>?_<#W``|R}2X$#u2xeA}3Mz2(#4ReD#LE8w461Nu z{L=-0*IPj?2SU`6*-5sQTorC@Vy?pz>KX&B#b$7fNV%o18V)N*e-tkg@S%8x%-I7d zRa2Q^qc2mrsf95vrX22MrsPI=1E~uEnCsH5(v^TfzAG_DNd#>NiqAes>MEWa?u%>l zT>fzvS!t(vk*Oqrq{yGA%Ji!drJzb1?{j=>DCol@ zEr@uYC&RnFSz*|JYdJSO?eK5Z?x3Akpt(|Iy!@$BWxTStol&`3yOK{+{INO~5-vj0 zfYywyRHRd$s8pGRu6%gv1zOxi#fMTz!)m5$BQF-XU1AN2+y{iehxKoX@#vYuicL<- z95zS}#DEg0^Q&9j6?9W95z$A^pnRYYHZfIrktBxi&w_zpT*!UVcOQb^wnoS~Yb4O= znQto5Y19e?L}`x_D?zr}9moT!k5Wy^JCbos2p^lQ?9~o=%=cWUP9$cT**7Zde@u4j zJ-H*c*%|;VP*1SQx}^6t14;$9k+QTwO=mRvvnR+$qdcQd1RwoWyFNZr~|#iPVKZubpTa; zg}2A0VZ95H(RI@c51PYbT`Y}{>Y~*0T!?%{vWcg7ltnZc?23y*TRK50OHMD#e{rQi zk8D>qArNqH1?t@us3w%X%Xwb{I#aan4e>e08Pc`Lq=lZxNvZ9BYmfGE>7LB5*3N&z zymQ-h`J{!d-(RBN%e3hbnU3q}2@YlHE&eps7UK z_SruE*f@SsaGe}w=GRL}w4olA%V8zghLtGWujTpSvCZ1Mv`3y023DYS>N4)z(!okE zaF7lriNV=J5Eh=&P%anDB`7TtkZv&c%aq>fkA%4iVi87^p(V7An_&L{sBN`PWhuR_ zqB1a&v;n95_qGNqi%rpu8%Wh&+$1(qQZ)}-Z-sSPI$b1m?QW%BsEBbLeB1W^7+C6@ z!=}rPGh7v0irs-q4gJ⁡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

    AQ|ep)0AjXJ3NjOuBslw=bC(}V zLrHUpwJm4^r{W_)Aa)%$xB%e851b!=PYe9iNBc>HoBo^=;y!^G42{EB#jht7d4LNp zPJ7G}HY1{~EhLY>Odz6rz3E8*0F}RF$$g~8J<4X^{6%>=H-}NRwM&0D#@6DTKt^w` zqe_ob6lZRJ;}SoDMo0Wx{{YI-^g;gs#Ojc4%65-3Qh9t0;e3}>DpaiPB0|6_Cpgwz zD(~K3x#&CNnbBCBa~F&M0ENF~Ieo2G09s-mMZ@G(&F}++dijpUtvbDTPct&r!9RP+ z7yR&O`YR3n{{TQf$p^KX&@9#g-FJP^U-%=zs$7WjskuFvRTMeQZNx~P@K(erDh|G+ zEh-0esV4rTY!Y6M!UkOC-NN4_$9q|>16H>FXXaATtbxP%Y@r{}ejLteL=t7u+Hrn^ z`%9n89S=uaZ6?+Qs&??kPk}<%;lB)`6#oGEDB#4Eq^R9lVm_cxTPXk$f4(F) zqXTm*&zevCPN~gd69Mi7ADUpZ2ZN3d*DG}jbA~ot8ZQfx>+zmR2 z78dD=v2=1fYWIJbs4w=Vh_IW6cXluFNx1$MI8T(26-c1dD~o7{S{2w3>RhD&f3prX zr~~L!K|Mw)>pCwJF6f-#e1BzWhWk^kk-$#IoALyFkI_SJJJFb`@hXj%Vn(LXBgD$N zN(42)h=`3Bij>>#xReBhIN>iT#}Y-#mPxQk$A@%|SGHG2eJoekJqm1Qm6ae|mkl?* zpG6C}_G34aICm+jF%wET#-wA}r7WWKieXBTajXpq1K5MmlZ)Ij^8Ww`Ae}Bed(c=~ zak+>e)8WLWCQVH6*AQiupi@p;l!nyu#-Oj-5tgJB-*2t6tJO!-7M%&F4SS1p{{TgY z_NP92W-yIG3s}A*%D>_RBH$!IZ6IHNsdvBL_r~rXJ}8|K{{Zat=k{G=cu&o6mEnWK zv^M9{i_vl=6)y&uNl+<-+DK8jS4(g0jpi9x&(pP;t!`Vdi@l*!m*aI#4bZ&)Y@`J- z%5=c&s(ji!j&;Y;*(W4(^f>5N`n>FS`G^ z^01r#0C*!cq&Kwhf+}4$I?{xvB`KSLN=)S_xUW(|e~{l1&Jxfyi~gkZK5upZ00aUR zDoe$2CGhID>>gk#<<3DzUcPMy)cr#Zj)(*N%5odeI8P1)-#)$wW39-K&TUy@w9?7Y z97Oh$tsbA++xX&7>EdB7bYy?bKkf^&IGYz-aFgrsbL>4=l!q1t5^=c)Q=ippkd zxE_dNCcQuK-ljIE7tk~p9JW2la2tKEe%Rq%39)-gJ=Y&pnF%(JZ_earO`h9QUySRM z=_*%rMERa|x?GT=58vApsjJ4IHO=zB%}24gEg<=$I)x6bq{mlOqH>e$~~rv{Cf^DYog*AoXw zadO9&+>t4uqLjV!4izKK(P%d$l>3eM_QFSB zSs=;PM(;E7B_mwGPOby=y6dSa>)gq z{m@hw(~|49O*`y|e%+(Smg7Q$nkFqHS38)7&HXl2$F0V!OgQB$54i7_)eW@narc2K zB|C_;Xa4{OB|A0GV&|CKhgOAOp-NY(_x0ZtwH+~{)E2n>N6koP9WV5eujeJ6K6T6B zqAYjcr%SL?jXIZOhLml6MO|-zj+Rpn)I_xSAG$`+xE!w47%wqWq^i-K`I#DQ6B0U| zI*&`Z6K`Jj#jE;F8=H4XFWfcxeNc@d79d~GL|Eo+io%+MRDn>4osy^Ie6ky6;`bWf z3nSbEzAD?&hI^7;+{hnNjru2FFg}R1XRNlRt}-*VF;6DmL7~!Z)L*x_AIAWw=^Qbe zHfxSRU-k%))4j&-9;*~w%SD?{l!c1DVQDHd0|;%zBptMcl%nbH*!r9?y&|KPws>)O za285w=4tG>0D(7|^5P$6JlS>1LiCpO65FA$K9G4yxCC^*-M#S0vAP0sIF|X|-igw~ zC>enK@JgvwI#~{tTWQo#`iN4+yMtmC-_sYr#3=IJlY`^?p%|njG_`U2ZTXZsD6J^~pI<5dc$Y-*BR31edT8VNn-i&VM1K|lM+~?I z87bHOJX(MjxdNQ^{{YVrYuwT_b@-%lvfnYAhqNpGf^xf(7(3*=`@h zH9Pj7j9(WGE&~-v3ai#s`W;fWp$VxxL!(dBK}aWi9*3?lp3tCe2UZ!#JU)b}3M!DMrA`g= zFZB>ta-*drk=EF#slw|EwKggQJujtbCnfyTxgU!>SK=72>D?z`*K6!BKleDwf0<+A&{5s(5HJG9xLcFRMv*FY_u~gD8AB@sKHyWVu3bv) zs>4D?^X0p;#viRacIvQ#jNnuCwj^0ruI#iX_n ziIoI{YYkUh>N>WuBG(4i9dO_LF}t%$=8^vZ}+l{{X}%{{X>3sku`p zy6|?VktvcSw4hs4b0x6a({if@(BQC1J@pgT{jnlnW-XEb0Lm?B?{CLKp~daF>}l)U zA-^Yq^J+V(q#yRAD)?o>*5$&U=0>c)DWF3NYcSN1w$r5P1g26>$4LhLKs({B_FpI_ z;v&=k0OrsA$gTF@0Tw-QBmV%-5BpGx6%vg@tx1r&K6I!>Qp>2!#V4|uT-=R@EB^q1eGS(~?bYH;=2=a@y?>Zhj>cHa)Z{_R+&Y|sza*5@ zb6r8!z$B6o3f63IxKSh0*rJozyCfq#Q2G$GQGc{s7%pU=UiKAaX!%u#O-@%1Tm7sJ z?;kQvG4&3L4LGF)8w(vf9rhQ**!_*Qng&D%_)pZT`TqdgBQvyo$IZV)49)p!T*_51 zDbY+R1trwWohm|z9YR*83X*-n>4=j17GtfGt7-oL3I71ON~Zq+XxQ3sAeFOy>bj@>p!&nu z5;Ptef%w@qm7fg05Niy`g;4O#M39G#od+;fSIjrPj;SQ4sp)KLBItz7aC9zcBW*VH zR4?|%+c-En$DO{RW6E9|{4iuz>rgV^0iL8%rnShD!x@fg4mE$El{iTQpt&}{aUO-b zvc{~3k+sFG;bh7$Z6=Y|qz-NTKFY`(8SuZuNRL#qe}|~l$w>2SZ!^>i%9N{WP*a5p zwePs?h`5JCMB>vBLXku5W!-3db6of(G<=VcHPmV>^Aoo`TafWDFKshWk;ekmqxa{D;vLJCvzRsr0dv@*9opBPM+%6Zr#vf$p20 zgKR^eppcW<0DsH-qr>ekO{5NR{{RsmEfhrYLE$D}h?seOrsr_qCRORrxLK7KFY*-Q z3m$fy;nKOm!yy|qTV7{%Wr+JghNckCt@j&U_XER43uk;Q zGkJJhia8-xPQ&&@q5Pe`HSEO8cpp*rS%cDW<6zH^?5%I%VOV4*=QxRzp8#29H0g;^ zKmAybPS|ttd4HrIhuIJP;=auIkFrT-Pli5XhFe`TKjjdBl@|k$r6+Oy-#G-Gw%ZJD zIQEX+&!^cIE|3QsW%&NfU-iBi*D}$4#5D$6@t-MD`D+?ho9$&1k}f?lIy_;HwrhZV z74%XEoT<33CB?{QW2uORKG<-ES`DNtq4JG^xHq=gwx@U?fx!?9Xt#;*jm+trmGk~r zTZM9I)kdYaf8A9@~Y)#KgV$2XbA!;z#t^|Zy{1US?QlU?!xgJ|V$m!B_+$0hRHYf7K zC2nn1yQqtRvfOmF@-(af~)QzzoM*jdvDaO5xIfnh|Z;^7`WK(J? zZZqZS?44!S)y#b9uvx!SY&Rz76HIo9v<*~RIh^{DG>6S;*DYoI{{UC<8mcC0rq=81 zQs%B4hMsjPjRCYfbT$`YqSAGFK&w@<^#G`JMG zON!pA(@QLrDI_f}n^`0)qD{rSSd15}4i|3f#}21!U;N#N1m|SfM7>(6Iu_*jTuV!F zHc24^Z~+}P>QBC$XmEJ{0F-UbKB_|`<<8(N677iBogPZqXPTQND^b(|P$YeghThn- z>J9E!HQO~rY5Y&fh?$tF>#NY08JA=w!~04yP!OGEL;#{((k*a+N=Bk@V{D;ee`IKW zX~tj}OSb3B>b1w>%8=(2__M%h*&eM2Fh5d=!C0pp& zf=!6jZdo6A%w%Y&rNiQNP^ue`kBClvEvW3rW(y1^JSNbTG=|#&4WT1srpI6gzya7= z*pCB1&?}e8n^%;N;snSv)KMl#kkn+Eg&e}2I~JF+kEX+awj@h@q$+t{*38m4-87T) zT~0Wqe56m?FyAR{^#v&_jE(&2MXsPdHY3*zEdX7*p!KB5mE%G;*F@rFn)K?DWWk*Y zQJ87c!wxNJw8r$MNpK(%q@Oa-prAKER`;koIeUC$X;vBN}^eSZ_EoM{2G9D)> zF4XeH0;3Ly#d<^<%y|X^?nJaK7VNRU+LnvhbQkx*9P6~Sa#Xm4f6s}*x3Sq9jumC< zwok57b8R9d0a}RU8SV2DR~$H!k21kGxFCfas1Tca1JXX$xUx)R4sTNS-&1{WvG4n> z4Df?2=FTPXigrknx`uVAQ1cq0LXQ?ih>}~BH8Ux0ywj=C6>4otBT4f%q7Bpm14COQ zAH6tYxNK`;coY4^I-_YpXqo%j{wPlrb`&>P{tZK^HGY!)k#OJk6Vh>Y8Tw>Dc& zEv0CA-IM~AuofZ2gM@jUG#r$!iAW@?F~)9PxZ=8#&slb6S>eWG;&pE}z^BpTWh%NO ze86F0Go>_!+i~}XjcG%RCA6Z~E8Bgs4UQ54$SW*rneYh#09;sbH$POB@cWdinInXG zN|9V{3~4av(IKHNFd8;PDFsVN*(z7mQjh{kDH|kXp&OB^uyaFWYe=yGY2>*N__J|E zzAJe4&zV|41vz?`6DCtotJxG! z40f&~PX*ZJJDnxmEI`$6Pr;7}YS}L$W*INgB~#v;EtXkA*h^~VwuLAQUgLLf{+QNb z%_X^t@|kMqLFU<@6#5-Bg17(*8(-&3v(?xS_%13+O+Np ztZ~7myCri8MDAtR&=9uTY@6?84Y2r_2<@R5>_V%wIVeCXj?n0OfqW|fO7@$p8l^~O z)EAg$)*#(iu=lnkaNQ03j=pOwm{jB?&U>+xyGpqu@^u!#kw=}<>lq)dYZ7Zd-(^(-~5$k+hx#x>ME6*eZ z8(&pqXcYz>ODKyG3RTocKKJ{l*9C|IdrTMjsHDizp}(O=tkRrH)VWj^6omjqmQVq= zTY>y7iM>b$;i-+D-u9@$3@cM{WT9}P+z^K}$OQV50!n`S+itjPO`T%Un8$-~Ttd$y zFCp#GH6eq&+fdwK#4+4cCC_a)=7SmoOd%@y*WD*;ERBix!#e|G@k24Yj;Ow64$dhk zpACmV_f`J;+X*4L?AqzSrx&p)KUAUf5T!jPI#vilP)C;g*a6c0cD@GaoqpF270zw@$xo1=Q_+*FH(+N42_-j;I4US@g6II!t!@ptlt_x{Z%Z z;9>`~me~0ufxvd}>WvzrN?KctrL9FOwx?T2H|^yc{&e$i0c%G+ z(2|3=P3(i;d+sqUl%>P85FI%V7Aq6<#+X|TrdTa0Tdv0Gw)Y)K$2y&@(ZM=5l5W#v zBjlGYg_bHWtvv}#$MiS0_w9vl9v!1iz6r*u!KXH;5uNfqGoKPT|Ycgo3a~n47c4dr53?kb~Xy!blT@*`rzNhGc&dVB|S7@*_u|ExY4c5 z<6MtcZ3{%T&=B%IX(&q4#P`4!)KpE~3Kl}NhKV-RG4oGNtNr$Gu5ALK3`wfOJ@Ns+{!MkXqwa57E z#oR~KsT1Kf56t6p=u1q_P@_p{)I8mRN}p_yrpW2i#QNJ4x)}KzDYp83Rv+6oR^fLW zUxL?$TcyXUc;euVGNlGJQX2CN6nwL-g{9yhCqj~;V{>6*Esg8Rv$VOoqoa9eM`bNG zvk%F2OAjPdW~GIumo}PGG?bUt(h{EI%jNdyI%8=T85GuYqH}!D)BRV(lU7NX+57%+ zM<*iEUU^Nr^)ax3m9?SOw&IuH&a3LTt}GvgQ{~HX>P655&knureNmN4hVv~Y6zH`0 za%>P}6o(v8^|iMIdYnFJ3qWjb0P{MO4EOh(ev0@M`ivms$V6vcD7y5;PL*`?0Ft5= z+SukpD?4J|i@#99a+T=u&{7x@YVaPln{EDTQg^x2sjx5Cd*Be%7qoy&d~Q87QYsi* zY`Xd)$ysJ>{$zJuob+{W9eu#&qkV;xn~uGR^u!5p+J}P1IQWx)njoqGcDL>bL@bjE zJXE0(qse_lg7S)pD;>dFuA6PJwi!u>Iw5C(_jCLyj-NHR1M`wKl}M>6mByv5oh1oE zn|4yxm7h-`>Fs0wc(i+EaLF4$@p1Yfb%Cb$zko^UnQC+goib>20yKo7QNos_?bAwI zHs7zND=YA-h8)jhZRStO7AmF_sVEG*lT4Tv%4q3rP90x_N=wGwN!V@gh;iYukS@|s z=Yl)xjk`M~4L2;xfXr<#ROy8&(3GiaSkr51x#`&LY)z)a<%|F`4?o>HN~XMAk$=wQ zK5aSqY>4$3sH!Yl!PP0UeJ!ydV#4!C10;;NdMM0vY}7i(^TB0txlD5w7*#n6MwKLT z$RpC~Z~dG)VJv3iKP!*2c%7~mbH0Cc6}eL*YB3cfw>A)4($naBi^=;vzoP*^Dg>@W7kRP|CG+)``bZ>o?7 z0xjy3XEo*WG=Bpb& zDVMo*9Pv+Fg5Xa!O&PGsAKprk6K>$&?}o+F`Pxot$D0&sY1rY~ZoS1gE#`LWag)o> z6zR>6t4h#>YV1J-jlB)VCpVtgbiphn~K>Vh*4{=&>i}JrWRMm*J~%B0D2^DVW?p~B@$F>j>Bw9 zT->PiyY=(FDWu2nWuX&@d%hQ_YDsVXd=m z?&4IDb$gO6W54Hwsi}@9Xai3q_~UcOWD<%~E_=MUzCv0f9YwWj2n36Z5LK&w-coT+ z{CZcrD{tZgJ7`6-X>R=x;`l0L%6TlTfRu+Xxc54G-@Ys(#3X&2D}eDA`XD|w+cQSr zoYn_LDRQj3o7%250O7u4O0x$W&BoCFQ=plhdn6<49%$s#-Bsb0o?dLn` zKc*_%1Y@upoBm(1QySoI?8F}**=KVuv>HTdF({JrC^Qw>@m7s^tBR`{ED#y%UYZX8q+Mt0z+7 z>HDmz$}(Abq{NWAa{)jtwxK7ON1|3ulAm8GC$+la(qJ>_*uVq1J+(|HPl)}|1e}KY zjEALFD2F2i!dZ+8G- z+~2t;*P$JK2*BdOdpSwBs()VHz`7oIbwh5;W)pGVNx%lKS`GOvU$c-4rz1|t{{ZBx`nAA+<6!sXCHMZ?)_XZNAu)X z;%PMk$o=hz9@pqP;S69KT_g{79QGVmLuY3N7a9hkIS5RzACA+|u* zk#m}v5)(|GlmJeyT5Lt_e)rsdxD}nfz(%~M?>Cho9BEOUDx6cNmWnG$t7O$kPz zk`&@DPUm5(+xTI0CoR*YG6Se96pkNew%SX|q@XfQ^_PMC)nm5fxWmf_JyHPoZqsiB zTC9hdwlBnWqDHMDX;DxH$FBGoipzwrz3utxv#TN3)Z$uhnx`Dpl#8h#pRn(REgT9) zz2x?rYkqS{ek1VizRpO@&#sc+ zl6)s~OB9|rXI!|KR1s03rSye#D`n*W0F$c2aZpSIm6+*7c63rVU`X{JvfP)83M9!n zKAB#o)E%Z)B1mQUu86-ffZ}=r)xjd*bl&#HH2c7W3U@THhi&4z2lylKr#JxjFSlob{8yg0an1_jF@(Q}L zsMWZ|7TijjoMWtvuaHw(F-*ioksWJnI2$E8h&ESZLEGO6T5`NQy=ri%a??40a9YGg zM?G=7I)2BCQd4X#ZWwXo08tUJKeT&5xfZs>{Z<36BF9YWoJIECXK^a>%@{Y>b5BQ! zJewznydI!Mr6kj#!l^O+X%bc>Im|%^Q5GidAgaU*Uc+ID6>hWJmrE&hbY--!CsK7k zvb(~^4I<`hQ`yfkzfhL*@9J?+x=C?qHUJVVq0;IHuurZg!p4RP2-K|H40Q9km(VSZ zQfVyH?DK50k))&$p1+yHn(|ypTBxa-&@!lz#P5`)aUJFU$TJ#nA=Rmdzzft;k{veP zK!Q@O`wg}@fMm1FLD@eWi!f`**595<*``dO!{pbdzL-gK&+_i9rEV=E!o#^p7r*9j zgNF#O#_A+Z6E&x6b4!AHv8+SoC~ zTSpgLAsak!K8uZNl@3$Rx)`nUF12Y)M$mS->XbGIUgzJ}9{E{A zoBkY@@c#fs`Kb+jo4Avw8~xVUeitur?}hdJ?Z>Vu=62a;3LDF`mfjzWB15SwbfvWr zO2PtCk+!XFSdyD#2h!Qv%&`{}ZEjc8zQZ5-dU>m5H!@kEUi)fR{_>}aju~+q=iy|E zoa&?Ps3AddRL+$D0PifT9Vf9Pw@c$Q6u`NAZ|V%qByG&_M|JGQnAs7hQQd;L8q!_6 zWyF+~4>GJ$M^j)F2dE>VfCatkE9QK15A2lZ<;tJUFw>Gyl&?rC8vv2&cj@*R8yjsE z(QviGXuLv9lLCX6UWDB}ZmzV$M84o{wCZiqaSyn9^OSR#HqG z7;}z>$GIzVm3lsN{i!`GLoi#Mn6VP2f~7WqgRI;F0@g?XfwBi%-vgDvI>AY#X_bOr zXHH_tahm1Ng$Zs!LsDHrbr4lz>xZq0=uXMCyY;pt#=~LFL9d%q0Ju;)!uJOQx&IL2WrnwrBqx5c#vC=uLIyJ}8 z>u)6-elMxBi46?I!L!!t&Br*(nm7JWodJz3c64Q@Uk4=^s4mJlzTNb!lftyJ) z9hw=v)5nqfEU!$dC8m*>tslQ1ya)9+j-0^Nyu8#1@Rj1qsp2QVJvWD$>SEWM={ch< zW$EaWo=WFPMD|_?X*xCOTTJr^z0x%SZ3?zCs+I{K1GXGi#=8-R5ssR!Ekm3R{Iy%q zh}?41DCH$>?5iI8-xjfZpm9q(iIBN*3Gps!B@f5n8>-ZbL{F50sMF=4F;>KRZz-*A z6f6RQyD7C4rAJ9v)B#rhd(#$49aCIdGP~)&6|eSoVv>qx7it}Aa=#?)_!-FT#o%>k zI8SLbm&8XDt`u|8Q^FLi0tO4d`t@ykUi_#ZvF{2s{H=;BZ`9 zt-U+%g>$vKVPFZA;f#F5oXf;o)CSs!%hMT-kzh*Fgq0FN2fF(8#QG_u54>mKyzizD zJ(liDe-cGlJO9^PU>>4}Z3b;hE|Y^IFd z3*8V;dIM%eKa+WDO0=m>Eh-1^Vn_swTGzo@JZ^SU+n#DAOfF#E8q!qC;33r0mZTu1 zOHxu*VflfFNa)%xmqd`b5pq@X-=`szIU1ahi}}^dA%CY+fwoo=c1Q3|du~1L5d}g- z=`oUFK&;GKmI^{$BfnjN1MP;Fk=n{nosvk+fY}AFOJ+3^BVm~l-R2UdI<>u_L>u1V zSd2P6MUB11y-MneYqhybK{n*KfN~{D6UYt|z4ixtUvE#pTyUss_K+aPU0~Z4WVsde zCFTs+Ws(3=7SRYBZMi?s9U!T-*hP~}tho*dt^+m4H6gZPt~!)bRF^E1VeC!?3uh#o zk5swZY_Q3PEVibEmqX=x+$Ci|k89i8d=>G$4gC$%42>hRzoH1m9zxzr-!RKbN_?cK z`TN@B{{WsNNlkNdQnInbus(?D1s0_6bUfub-l0fRl0##z;he2}wY2Q{mPe zEZ*f?CzhZHwUnC@Nx}Ly$C)x-+b=fuxmBAFIZmU^YlkPnQ22pxDj*L99L*0&Z0S)v z_5CNYxY+vJ9)e;zw{vl}>b8zz-i=EBISg*Z z*hhvrr?$r*7yT~2Dw+CSt{y=u*n?JWveOhPeB_G-$dCeU>OduD_+r*Lp3&Hg%$+`W zP^1@i^Ja%;l6j~=prbR*} zB2=)X?3bKump$&3gNkNjZ*IWbzTagnv4RHI{O>_z)VVreL)Dc7aJE90Y&+XdZ$Sv znPF@CBet_W9xMLs;ihi}v(Yz42o=OdQt#04TI~-sy~>W@{sgO>%7DsSH%|rB*lu z0N>VCWE9katpFp-S9(}o;I5nk?~5XNJFiyha*akNGefb?O&J*7gjVB zas#a31Ki?JWY_)~I&%ve;h-qD8mlx100k=xz4{H6x9NvESeszikb+5f3)^%x0<|qa zE+iQ%7XUolX(_k-!r$e9JM~fLQMHbf*;|8w&r3;c+F$-sog1aTU2Wh|DW^mQ z#-hB+78B=9z#v$8ibnRa8}#24(?vrkWv^xVTwOjmrfuvEygy_DURpBHmfUHFQ+thV zg>UO}I^qP~7KTpNh~KDq76U|Bt{YL-hSvQm0+4o5KT7=pP3`{r;;w#&F{16c^h+Gz zp4Gij5yJeh%qwbx9G;}5wGgA~NhJQ8W1#3uNxkeml1W-E&($iRWXP>WTL_55ah6Cb zK_x`@8i~Jdg2QZBL(s}`pgeimBP-r^)8da;0G;qW&OLkIekFQBp+HJrH_6fJ=z9mxw5!WWa*##(IBTM;|DH5Ae5eSi? z2?v{{dQ*OY0t&z1d`dXvcM-TB8-3S)lHmQ;1k+1E7E-BAmoB6ATl3o6U^3HYyn)5T zko*ceUK`lAnz*s7xC3(=aQRArPL!Wg3E%Cu84e~I4rts|iD`2SgJp#@*&j5@-+3-D zfO&yPLVjb=jV9?o&(jfxDD3)1NaJumg>z_z`Nx(1s*g}<5}XgY20~sNkQ^!dTI2lj zU?io>Y?eM@4$@xb!~@(G13`w$-Ep{5%St|BruX}Kg^$}6Q`XVNa9DNx=B3lb=NpG@ z>GEDp8L2Iy*ou-IKsyV!`Krdij>i>`mH=}^=MNG>I~$*NgKq2ks-fo?TM<@@)YYfR zrKJmaqQm!!M^AH$7UJ!RpgR5}pVm+aKxZ4I8tWU87 zxc6=GO6Xs0mKWitT0@IdttACvdhexw-P5t@?}*>TWWVy`*TpMo8MED|f+%1`-BV)C zU@qmMqUZA#y{tWO_F|c?CTSk2;)H+cojii)f8&mr&SoDEk3~t+Y4s#2MI>*|PjlMX zp{SLPpECxQUrzf51V>QQ%q^055{RgL4a*93ZaDIzFjS@eMCrEU{q2Nf`vS{3(q@BN z=UqpiirU;xOz`e`LDBs%sQFd0N&S|tr}M;0_g$oMx7BLBn}h!Vm5r_D<-3{{Xxw*f{CsV7G_xf2h(w;5KQeAzXiJ<4rMtUMXP2kyAnIh)ZnyUX&n&ceL*2()ZC;J zHW%%U6;36PTytJ~hv3bY%>>@b&8hH;WM|aO=4uQ}(o*3|R`QDwI&agc-1j()++$4? z>AE!B-J@%Hrf)N4nRMj|GMSR$Kw26KVOKW#bzLCZ+XKC4M%8CSyBowwqjmPgK5^NQ?zgumD{x)xXqRF%LWv^*ralbtia`b7iV8{%H*0iUV z0Ya{;C+Z{~=KBkKTf3i*amp27=&2fYg&}8VDuh`MI^%Hw4U6*y)S^bjj-9XmxEbjY z7qdcpIw0NL@_;KiI;gESgrT$ro@08gp!ZdhP5b`<3=HF!w`CY~QH=x#k>rz7^Sg|| zQ;fmn!eP_q=9HHl>1~b37P$NS;m*gMlvpN3(FnmddGrZB?-tw=rlL%C(BnzgR=Ey3 z97*e^&9U;3LGDjsf;XgkUCc#)L?Si;Lmf>zO5$P@3xx@^xoF%hqI(s9_H#aod_4dSaj|| zBXRy)4kMpPjUB}-6qHG^u_t46YQs-ZNW{Jm;<3mr}*;B zp{aBoHUJOnHy5{kw!?bublr1d+&HB5PmPEuDrO5TD4X4Gk^r}0Kb{^WwuN_7n{5+e zn|P;EOc&jS3MOU*8TAi|?XF#^QfJ^uoQz~4ADNU_GAr1fm z`}Do=*&Cn@)GZzy_cg(*Uz}2H4OD7up$I||H&O~kf|8^I{#emqrr=wb)o5F`sp{|( znpKs2QE=&cl!m7&O)+F2{o^Xr{{Yt|7`CmCG(;*ck;i&s@9dC%E2jQ6I_tbC6&4jJ zI@c}DY@{h^8h|=M1RaU%u@@M^#`4F4d8$aF>lo&ZE;%l=ejC0bIB&%64AAJAZO9b* z%qYz{GLG7k7Sa}kUDlE|EoxCnKdv;@mXv2`(L(67?Wg`zxB0DyuDaWjg+7R*F;6?o zZ3scowWNV_*;e!it|{YVi+~GtEkgy$R%ZHcXpfUC38g|!R<-i(avA0Xb5=&e^A#7(RrCH%j%<${|8tpZ7YV8^n$}3EzO~+Fy zEs%>4bdA7C17WuPErQJJyuHI!c*&=-Vp9qeiCF*rdd6n*p}c(@i#zhTBEH zl%#BtZoqrs{i1Ucp;E^i8P&5yJBax{Hh9VPjI}C4V)C<+N}2m;Nt0k}#|T4c7Ot2}^0f^`L4d4~4(I26qv z)v~#3PrBX8D9JFO(lXUL97xfrwDuWF8D$$KruqN}<~P3g{P2>yHlbC})3z(Mqf4b4 z^F(wb4|E%Q$rE<(602 zsFDVdQ_%O?$F3`tig5%l_xGCU=4=P{%um8iR` z_H+6RdVJi?VZAmwwFKLI3mTF$Lm-rkSnjso&S@MmN@oH6ZNG)Z@8rHrb#EHJE^^d~ z8F}t9aRv*>IuzWrBj%buoW~mGgZbYWNPU!aZmQJ|rDLzeUdPBAd>7JK)kQQ_k_KhA zW96?U)FLUhnDV6-;ATxITDDw^?SEwH{W0}RO+;=aM(;EGFT)62!qM6RNiGY)lKdxK zoE>sc&4QG!#X{XIKm?u0zrC^MohmgCs~vktxY2!2?2W8ARioTEt>E}`@V&-}G?86X z`CBKuR!Rz$Eh=_RHYM+^DM%%v)TGHmBChgfC@s~iN!;6Rw(@~%V$K$pk#xA!&2(e|YbFzfTx+A|%3P_?TMa3u zSyGxoDzem@5D!)El67~#wg4U+{I^R4;KC#vQEwYpn0TYZ%C1tQQ=5@km&sEAC^nFk zI)b92b^}hWk9&IHf}{{fHB*YyI#4o;kU?1dIb?1rHA{h0&5_fUvg}5TIJEi6*D3bW zH0w%I6Uj=5)>P?Q)zLarVn+)de1n3$U_D=3Cgg3gAD*eR&;A^vaaWENHmkC0G;E~P zP^B%%h*AvjkW!{l<*bwCPNFVAJ8o_y)iX7@m6^gY;QEOi^VtMx%}5S0@Y;%=89kKf zaT}(?L?aotA_C^0DYl{ez@>(`b-Ui8fJt!5^VXx4*2M-at z*z#M8DTOoh0d6Ta1-soR*o%vU{{WYKGqUF9z0|6TJKc`mYkP`b6u1MzOy^tTW=G+z z9*LWC&SIlAQ!vth8ccWBFuvLqbhG`E?v{d5wJfNDZ+P{r4|$_#eWf=AzE^Ii(Hoc+H++l>4riWh}k6dETxhM_mz(r$FUy1xz^ZT%i8)a zhBk`{h&XnnAd z>Xmr{6*2`7d5DGO1_5NaaUAvL%3HHUxfqqEuW zF4Jd4bK*Yh1y8_tiE4UVem4y&Zc5Sz^;t32K<)`khS&7N8tO*-j~^eh>3SE7w059A zp!}0}H^E1V78dhkf!sk2twlv`MrCAo+ssJ&i(*7ih#Ti`s8w$0b|Ti1)Ia>CQZIzh z6R`BLPT)@w8%n|x=A^Vq2{*QnFs0)ETh4=QiC_ul^T(mJ#7+j*dq8)bLY^%8aF1Popi& zz5982VMhM8wmYt+56T`1@lppyu_D0!rNhYlkrdwwykT)_bZ}FQMPkKi8D^je7W#nY zANPC~LrirJ9;5D|y8y&Nw^HkWg#C~v{5Wxyo4Sq*@k|X?(wwI}sNbpn$NY{M$?1l- z7V#f--@vgGqhfgf0F~clS($i6n({?I#u3FEg=N-`n&D7Ohs$NhqB@70)*@) zcAFTTr*SJgNu$MOR?U!DT9t94sM5&y0Tl*-3 z*md<7l{*Vsa-0a_9YoKdjtCC`P5c&i_&t%hrN9iyn0SSqYMDbWQ*#qDosmq4 zhw5^Kh!I_8wFt?5O&zuYUp1R zWodzyJV;)3)5^xrg}XSh;&u5gTjc3n{{V=8hy4v{TUoLqQ)Sy#r7KPSF`|~C)^ppq zN5kUF(Yc#@_7BN*e=0<`4yRzpea-q6oA1yP|Kf_zWie0*uLi#M9|Hk(@1 z_w3~`y8uE9g#Md?aIoUUT=jPExlx}?Z|`5pXL3zUGVz2dlVlCUPb8qAb_U)508BXI z^*WeX9p!J`4b)8*zKCoQRg}|iNv9$$_E2bQN&6nZ&jo^_wf(2XYw`rAz8HzQH}NX@ zl!@yaqq5RS+RKfsFVGXQ0|lC&5V!Jx1H5XQ(@$e_<$tOsay3pOi%-R!C9(l22ujkQ zVR8+UVllI5p>XtE(~H}s8sP)6wtwXN3a(xN3pO2QVNoq8l+_~2s#FVsdr z@gFND3BVQvEQzASeU>j2&PWzXdAq4Ua;p>hoIThi0lObCeyQR2xFBEilDqaDIeevl z#%VGVtEFjSy-7Zxo7)`hKAdjD=sxKh*XjGKX1gjo%!TE}&yJI1x`_zpqwIj2{)Z8t zGb1`cNau0%Ps{zHhQUJ;)>iZhY@no)Qf#Cf_XKQ6uftmoRxI^$lpd>{3E*Q*x%O&wDY-kfG*3 zGQ0Kl3nJfqR#f4yo!`yQe8=4&ds@ql5q!QBW#_Krw9az$pEH|~uX~gF`(nPMqcPu6 zly{v_+fv(Ge$JwPS}V13W7U6XN?roRXy&< zA5y6|DrCvLu({9}nX8zWLy2u@2dLRPzW4=B7eMaQW(^)1{1aODk!LiM+>PjQGWuq& zpBFGcQ=FSAEx94ml`7V_O|&0-b;P<4(Z?oHReN}@XpsK^N3D{u%|us4(@s$X${a(9 zSR>IX7Z&?tK?h2h!)uEUB%hU&B%m(P1gQ#4h8U9xfiS3D2@?R=^*3;X`CA$~Y*H!N zc#dasxwrjRQJ)Ke?dj-)qAaDUD@(1xLJic}ZKrH~)GvHSo}ug_=d1C{^F)cPBW%|3 z`YcYwk##0DW0tjmo%AZ_&>)Sv^usD2Qd`zCqQkn$7#JUJty}UFBqDH}iR*-p!SLQl<+ZGW~uxlfn5BRR5m%JM` z-j-gL%r{v>E)`65Bq#u_BUSp5dlTQLBv;Xgvm*nXJZQ0^i0J;NUZ@Nf9 zp{1A9w-Xwu!T{K7Avg3s_#G`wL~09s?1*44Cy4MyArB?Bw8T~&SN9Zzs^iyEufM)5 z4MUpG<;VHrha3^!#H#3)q@@L^MI`>?Aw#dIAIB9frR&Y4VZY~kmmgr41G=IW4c5we zp(9m`WT__I4U^D~v1H6Hn077df*kU56X=TNy$!V~4k6asNj554TS>9#0*Jl>`f7HZ zz=rsg`#2B+z~PS`;7-ucNg~NANe8uuUC(SM>Dt4etOR&wOWXy#3JB{kmeQSKTLJOr zSWhsU{$OwI(+&}ntVACGLSCRdR}0PluNTKL_TOMH;o zO>vos-7_J@aiZ(+~*O zrp+a8|3BQ&3Yy;P!HWU35uqzbzq zXk&G)*>A~V{khYa@rT{l)ot^@_I7Hi;;S-cnKEDb(@Ur{q@^k-PM%YVNYpwIomLx* z+qNt#8D=~Mmgw}^H^*@Dbcc%x0Bp#F+f{$y7XZg+@wx+$(eI7L|j_4 z4ajgGB8KHZVh`}XBE8uicJ7u+b~(0sjp(8Tj?0b^;t;Jqb=&yu*Qaxa zlYK%IP8?K!uhyeRnaD(k66%{mia_QNcHLIkA5USuu#7i46ia|C;be@i)!LI8^&(Vs z5)|T42JZkszfQf#KA3gJxdf-7P{KLF*>9qIK@PpO2|m2IZ+^bGi*RmAC=NOgq8$bt(aULaB(0Lx zgcUeKlnSguQZ4zW`{9HDJJP%#>d|2SwITK!X|`iJ;8TGLunVvt0l60P+-@+8w*+pn zpjZUL=DeFyT}pJum_w1x+)~e&1E%{BKk~yx+o@7|!fY?9XXP-pwBv3z)%xiP`n?T? z7{=W@J8!ZkdA1Ns&9diWHFd#WI44H(d6br_DQj(I0c#?}TH7Dxj@H{Jw@oagClTT) zFRMZpq5{+>a@_1o|HM(93et2I>wm5Pd9-?klg%-A+ws zgn5Dzys1=2Z*jJp9sdB%*z@_x4j}VcY%Wk5(hlKCPlvY@b8io_PD-m}nGQKwVMY{J z5(?aRo>G9?g6^L+k#wudG=tj~kExKgtdDb|r-lYLcREk$)ph;h=Pl+a)CzTPJ5*OY zGfYQ4^a~}p>N}kQHXGP)>G!rD96ed;?{md#u;!i`V0+kgP!)>VCfRx=pb-*ST zH{iAO=Is|iY0KtnQ-}l0s`_njU-oeLU)jGU723D}H%TnVDihG9t!?u{5>gg=ASO!& zuqr;WtuhdvITe{gmX~F;)JFqpD*?k~+P07Bj zK8*HLB$Ksd2R78u+!^XBLRu-Zlt{SR-)*c-@fxYu8A`N>*pB5N2N7eYn(J;mPjSQr zHp&Im9#OE;m1^GPb-vf{(-IAv9-FF2=66~_767CkR;TeJJkj4=DU8tTEwW2)mP*@8 znsr#IKn+A#1(0;yY;9~uad>B0ds#uImo&XyuX455#%z}(F=i@tGPffwH=JcpX^L$< zD7=|`wVg=?yQBbo#pNU+Co@ zl{Sq}4{3eGMgeWEQi0~F3O3ZAqzk7|17byhE5mP)ZV+(#2MbF5j_X?=9$y*s&jJoRa>Z~= zkm3}FY~qz<#7l}Bo1VJAkETCQBc-Tu&zO2I$m<5Q3vJ)~DIMXSmm@K83oK=~66A>! zD-l=)#?;C*6^%!7Yye7$`(p#s7D(wB_v@!CFQ>hMJ%=MYgdH3cLR;;*5`$x6}=;YV%1*9~;!8;z6) z(sj)(Aw$j^_<7IVDa~~jDf1~+?1c1QPL>%dlBEUR0Zpu%BnzaeDp5Omdf6OvJ3Dt! zu-GMrGfybHbg>_rDRq{z^EB2LhuLkZDp1s$eIwG|m}ze?t)XCRY}DekfEWn`D3f47 z>G#B_Tn5O~GUCYy{1}aA1k@9usYVz>s!;lyO7(T?-CJMN3sW((LV<_G*2^J0wMBeL zg%2=g+J!adq`!SUw%dFqV1g_{w$p1|Z`;2^E(dT5qZom*w^7Avi-G?D4ZNX{IIEnv zlbDwWJ~HIzl|yEu8BRA1mlUTQc0+avT%R{B3rHyeDpB250k3N=AIIveFbqA=u(oYM zK34GNo!=WdK9j?SxCNYYwJw=TVisgnIX@{KEsw;AR*TpGp?J33b<>E?VRTL-ebQCR zDRC%X-*nu3FZ5EYgqgl472#2HTXgERI-a)EWJ*S$>cxhxgI7(Bh}hWUqMgPpwpyUT z=?tyd?c$(^#wUVvbI*rrR}(1}DwbEwxlUS2AC9}Y(=R&RmaXmhPq!U+Nj_H`+Q$>9 zS|1y!-Zxl2lezTOP~r?WEg&C1-AG>nUL>M%%flB9c!yJ+5mo3gzh%^tWF>A#kk^rA z+wZw-{#NU8jLi(BHSm+GSE*uiGD96}c93}verXHE&Nfr{sp8LvTo21Js!M+*Kz}vY zpOH^=M{(JV81Wm9zHqP;|_rjJ*9E~1jtsgfFbP0W`bE6p-(a^l&L@@$>-l^v`|ky!G`-0RqY zb>y2QLC=l0xO1C-3+lM8e}_@%oFj)KTFTWvzXCGZxCui_eJDsmZ_>d#Td?ns3pB;8 zbk26J(#z;0i#7AIo;KO71o^Goe#olj?gVh}E6%UB;jUC!LqbZ>8;IFfu-epY0yPk= zWY}ppwXw74`&=3bK1;-UT_Yr^5dZA=QQ#)6#LS7GYROA)NkbKQ%7~XO z(K=Oipme!5IMuWhqNNm3H1>{bcrAwIdAuv8B_@Yc$Z(QU6L`|%qT}C6uZb;%r^QTb z8a>43#mqTapeYsF7LYoLjNA3qgMcoI0VG@{94h?|OQ>o!W{CMGNK12CQCG0Cjts)v zSu#k?^ha$wbL2=;4^1NH25CVIx)he>Ug?J+L$~3p{V-7W-pGAhfz%*!CqDtyu1Q=t z#bG5+ei{?`s=#zOadx^Uha01i`|Cq)Mr~3qZZxbLjl16t4;#4%~2VNc6#m^N^uckYFO-6}S? z_vz_;6{hzo8*neGHAL9bii=B+D2}1ErFuuHw@h(73UFohvbiZp1Qv;3sq2nwM>W|^ zwmyp2U5pZ1>&*WEny}LVDLYoUx-FBM z@~A?I&3Ro1bAQ^=!3X~Us$g!T{Ic$~!&IEB=KdGfDHG`VhdA)kWj0$1VpK`hs48Mp zY8Fx)Lfo>FLEIbuSaT_|oWP(|F|#nn@o;!9KD>SKpDJ)mkJ+Oq;%wB+b)Gf4^Mc3I%IF`%Zt?pqcgTDe*UczN zB-=tl6i^3Cj{SdJ3_+Jrif1RmNuLOL#xoR5-wInunQ3T}*eF(@3RaaX$_+oD+qL*RE_XcHcotu-7OGdMsOwfLXei-Q%PRK%%v2S5!h|( zi`R7MOaA~0GxA<&+#$@4+FQH#T=Ma<7wwKb=QU1xH7*K1O(jC1%XrE&mhOQb!9~7L zIc42lQj`IE_PP{pkrWfWC3?+%iU62fKjPV@cuL$ z#UgtdSZ2uW)Spb)8+0hS>Obw)Cx})INiOnSW#$kTvX+P|x=pR+9SU!~!euUy2WmK5>b#Su z)S2+dJ-yfUT5-s+T}Q-o!_paBEWEtsPSg~QX&={BsA(h({MNbdF{ch8uI^U!1UsYB zhYd2HlI%8JC3?!D!imV#ZjzCEey924bv*7Z1{lHgUl%?g9B%6mG%hq3*L1s0YAQh& zS1=(=_bJ-ZSR}^~AR)sF_MwK8E001c~{Vi-=$A`l4*>MF! zdq_HsP)9OlMYl@Bl}0+;h4R7vHaG|HLLHdM?LWQyCYKNFppz)oXoyl>bvHZeb!aNL z+@yazEc3o0W4DO=C2cmSHzCr6{M${U!rHlwBoXQ^ueK{&jJDmNFa9Q}AEh9GFK+^i zq(o9y+C;XZysIS$bx2B-qILqn;xyRIVY!QgeE!ISiSB+@i>wHvO>IkCv+0ss-Bx~3 zxHsxX+g}y2*UtB5Yue$+k@iM3q#F=?zts$j34*ex8l=2{N=n$Mqp0dPxEQd8x-b1e z&nF-{n1jb&2y1jobb^-`9;VADa8jV{$Er$35=PRO zy*{TTq=1mNFXi-lIO-h(9>|X76R84WNU!Unu_o zJQjLqTS*+z$Xn={9B2AKM6+qpE)=M*NF#Kspuf1kt~0f<#7QNua+M1R+<|3OMR5t# z>{Yf@ZK+9Bzg_WP1O$sZGEadY6laHS9bx&+R$fY`&W^5SCMZ!Fmgre+VESAn5!crb zm!iSvF*$s`sgIl;18?7SoQ=bpV+GYBflqN7RkH5={e{Wv{_Toy_ic=Q@)r*46xP2> z+TJ%p;N<9FfW;xWi9x=B7&d?SlmYz?EhumrV&L|)>C9W^kTk3*}x>G^^}E=pT5(2{rSd*AfLsysTln?1p! zkZ3}XM{;aQM#hg+)Z!G>MY1}O(*FRCn~(R?7Q&KY*_gH7MKdr0?YO$kyr%JMT4Td_ zD{@eU>OY@BWta0kSFQ(W*58~H3P&?hzsLk_8w?rgDt%wKQM4Q(r0F3=Cp;)QqS zwzgQGEjEHaU4T(*-FH8jxBgh8#POCyY}jr`6Z)I z#T^Pu0kN-~fO>h<0Q>AlEG5eu1Z_4Re@m`0=IuNze<9VTmWP&;ad)@3r$LD%lEBux z)RY{I2G;p3ZnL1N3V`ZYt5TF+H$MLW>|!-Uu4wlK#}ZLGpme>02IW0#BI?x82S6(% zf$3r2{c)cCZfDuoJ_i2)RVY&yi;WR-ggBaT0@cX3Xtdyrvre_8xHb#J7Whz-7=GG+J zwj)2IvH|?VbpHUQzjY+JMeEu1MT4`JMyny(`(!wH)3f>a-D(*i@|Hm1Cq`PE?|xer}|H zo-IQ4T7zia;8yIsGAW2&A$)aHCOA_zMqsGNiU(wxtkgTIO9BVlkJB{ z0Np>K4QugQHy!|dg5LMS?i!+adCiqkIT9RQZlN8=+|m;3shKZukKIq4D(9+!SKOY? zLH!#WYhA75dujQi%6om6{{X7F&EQYTPk#x{Q(*YVgn?9$)aR%Zr6ZT;)n-r>q6(5N zxW4zlV~s{Hb~(ejd51$~>oV(Oa<`!Nb4yW5kftQdLqvrX=nGf)y*hQqGODHE62YqV z*jNbx^l#_nglKy%ODq=g2sik%)vTfX8k-+dpfl+3wh>WgqTFT-jPbxPC zV)C|dkyopS1876gmdaF9eMeflC|q>wV~L^8y_yz!NZ2k*hjNTEAU`%&&&H0K@`8{- zLd#(s!Y^y}2~v9Yw)iEq(MAQX(ZwgfqxAs+#*#xa!j{sB2T4w#O10a2=?2|DTys0q z1FU;0*>p72Sb-EY;-7f)Qk5*FWS=Ni`rAoYPx8af!A)$AI_s*#K9sa5Mp`O!SY@Rx zrKoCd$=rpLd-t#&gA6aZx{%-i0GoFrSy@@Y%afc;X2gffg)TIAxdef3qS|*O*SI)l zaCIpj4&h$Bp3H|CO9@Vf?BhJdt5QKWBH)|vZl|Z`hXQv<(k+zkfxnlMDiKQI+0`Vy z$|xvKp}9}+ARhZ+j&=Aa2Z9CC%^7^hnj<`tk}P?etdOF5dlEZ-UGW{HjrR0L4$|XJ z{)MYTE{S6M?Ti26ZrSvLVLpl&Wt zPW>%#d-mciiWoJ^x=B@X@>??Fw-qe6%Tsq-fQ0SPU%n8@eG$5{2rb;G(@>$lORV#w z{{YKtpUB&6J2r^Ny*4%K0?_gZ4~3F`k+B#ihW6b&J55S&>J<46HsS*X4ffS;xDjaL zofMZPM~)=Y+-c}fp{3Zg>Oli#n*sqpmIPz~qFXN3LM`R}9X*53Sj zD^gr)MKwEv)GeTYOB`Tp$MYNt^ZY5ts$mObUj&{6WQ^rk;#+y5p(5xFi!V8U>(Q=i`%ul9}sa2JlbFMO{ z6xy5$QyYCZPt>7)qi*1V_U=uSzlIM`(iW-6p2$4!)htJrh|cI|;; zPC0W0b%eurWIR*|$b3&$M#4Ps$BMD`w(~-?>Z-)|s<0)(qG^Ng(jqH^5>*NyaDq}nTDv5hkE^EGkr{KDnfokj+C@o?t-0bpt7V9ZO39QJIMSD) zq$o6!twh{j=ljRho0EadJ%=@~!)OC_cMVi|%e*tnBRki)kNY+%>$Qgvw2+&$hEf|&uR79_Y&^pR zxC1k{M2-RO-$AXGwEiug9yo8}2f-WkZ2gz0`Hn3IHdCwA@1AHn7?G*w6rhvTls=$A zxFB>kz$)6(*vUH|n!f1eZ1FOsusDvfjt5@@^jx%Nie5$GN-~`;7IwD4ij=>=Fu`=mqu{+;kYvVz~7^3@??}Enp;o2{s#*j>0-ARbO|<8E_k&hnZ4Y zEK7>DvlW*qOD?X=CL_)j3!bVeP{-18Pb5vs(QfM!z7LC0+@;@wSRou?IiE2&^AuW5 zHdLt!Tp-g;D^7$hN2#$_VSCu@0meI|b3M@xuv=g3+v2^u*rR%?iDxeCwY>PP-%-3m z(0Gpx5Hd3oE0uI;j@)MwrqKGV2qaqSO}zK|ZEg1e;)K>YSJ2=(tcjccibZ7HuO}}@ zW=&R1x%Js)3!3spno;Nw5xGiIHXfZ$7~JIMD(#sg9aB!6N#at;*U(I6TS66K*MBdd z7aNn;Y+1$t7EoOL#^C{KQdcfhEh)8&C;JfQMj zT1AK|y^o>8;TBJ*lKUo0GGpH_ISx_lSO~%Q%*l%v5ruXfRm;&Gmr)1=3 zCvb^!rgUR7iK$X*QG;upXxDGDJ5>D*iZHWs~yQTN1IJ6bCUS+kNGkK8Va#%zIA$Q3EA(4Layd9bD>u(d*v z!=c110->w{sR~H3(&68HNq}Y4>~vY&YYgk$2sU#_aPr`o2wYBw!0OgO$yK#Bwly%& zl$3&p3fog*dK(r9N}EU)vEP1&5o(#$$8oZ)3s(OooFD=z~Na$gxW2q$Fz}sFtE#A2+ z;2((YA^0%Oxr>I`a&vFw+T7{^~KBQw1M=H9I)K4^=>1TMKtsxwo} z@R@|B3RITZh0Iw(bbtXatv3ed$OpduUTQ>Q>C>8Q6o(QEXzm4dXg*9dN@n~ROs zDy?%l)e@#<<_fIzpE{E%<-9d|`HB1CjF4YInqMvZM5O4gW=PYSq>9_Al(v@eWGsSP zNl4Uvu5E989{VS@s#{wzu<|9F1cJ#Ge0mq z#pKI%#?lgxs|e73Wz>=q3eA8U^v7F*M$Ym5N8|TJ z^5xfIHeXDzB@L1XPuBQnRyDeN>R)XM^+oLFJnXGWi(0F(r~($;w-OHBtgXKhnUb|a9L2YuK-2Q68nPI3%`k6r0$q6Nj-Xka0BjX0IZ8!dvrKxmE%FGLd{7! zB>iI|A&NalYO7^Vu^s18%C^BNBx=8Z^un26V|0bEx}1t{3>*WVXys;6^DVphZy_s? zv^^|_)SDHhA$nKk>YZu0$A|ksEo{tt-FXG{wwLC=MSX~uoENJN0fxsm=RvZNoHXJ$ z4>)~5s5_oGgID4G3Xz|UO#%8Nv(YX~S$)L3$PNB4H8Ga6poFBS_lkf>(Nf{lItCVv z22f9VSR6)1&r;@TbC}rN3lnSXeyPOZMquD}d+|w0&HNnV3_SSM+EnGqQKU(xOl5-G zX^zwEy32aYXlb_j%285>EcCfL+#a!=c!=CvpV0DNaqSZisDli6b*-k_kIyBg+`8Hz z{7Za0I<%oo4E;_DRmGKhi3a||d}-yKjBDS(BjCipqtZ0#**)ABX69p0FZ#U>45oEk zQWgfAoyhe);nSxSj}*8Xl3ui_D_TF$ z?8ge-AucOl-&ar2;RvXi){;Fu({i<-8~*DRs>I;$YFbRGxiqF>TnjWt4%M^XZteF3(#gSrL4^z_6jDvPuaBo6QOQd>^p zp%x#U&{;I>z!uwddh}?_6MHz#)PM1X5J$DJDX~08F=(U~@Jae6xz}nkX<3msX>uu# zr2#sRFHj@U3laQr9i1V?!?k_KhwQoZ4L7i{9q426UY^35FDg8Xc}#Ya0)4Ec+x57` zp~SHnSUSlv`hBj3+BR_A7e{8d4M{DzDfKGjQeR7E-u6g8ki%&)Du^y*kog;a>86|$ zqesv7Ml2?vkdw+1SABnpbtc}II5a&mnWrpZpAt%U@Ya)eSqnpsKDNx7LJ*L4^J&xh z0seTpho+Bl0$9F3MHJ!f7s^n#SdLPaw-Lt`dtD;-{Xdz-^f<$2AMlO-3NfU&^{j2O zLP}k2wm>9)7&lktz7~40Mc>)7Q5&2A-C~R#mK0-7aV`(tbpa|*u)ZNvR=#e`QxJSV zVx9U>-ExA3KMJj>T(IkaUs6zz<%j3f6XJrjANZM%kxi4UE!CtT?aisSrMBXqNC`ey z8NK^or(e$xHPvwH_Y>WeBy4fXa0RTeIa7FQ1V(n}pkxbu$=@7tnwwm-dTN>}m<~`? z%<@XeTvrlRak9<7jqw?{h24IuUk5JzJ9crmq8uVd4e3e_l=g8UWP6Q3|>9NGQdP3mQo-29&lSS|%v>TBi;fO^{{Sp>9U!O8 zmQ27NCAxa1KM($v?l~Z4jg?sDxN8kXDLNbu$gx7KJfsn^+y_4$*iK8 zqQG0nLaF^0rAR=L9%FI=?g2UnuTg`+htSB}&^!^`E|_AGrtSzljJ)6|5GFHZory|R zKZz$24J(6yhEfNB`lKWgsMnp!wVEAuBofPR**~~%e`_7^X(F2c0Nb~CN+htc(5oD# zR|hPLbBRzp>SXWfV|-RQn1#s<1IqsZWPjvXFp{wT$*6N2D~jv=Jc?}~AltQt@4v1h zkzCj2kl(uB>Yf<|tkGlQxv=>B#SwESh0t0t(&Z++qLm9Bon#Zg-xXD+Q#mpVXg+J` zpJGgFVV%w9)v(V3ksNPLiRe_BX7$Qn}6nClYXnwJ)TNkNj1jKYUkf7)mxxuT)&tfW9FEH zIyAMi7o|>y+)Bzp?R_L)-xnpz)+J_Umh)Sh@KK#8yhP%siasdCr>>LzAgar%#*E^^ z-G;;RrOD7%kOk5nN=k=bmfvq6_O~OQL|M%6@K&DB>9S(5vE+6dH9kRacj1ny^}ZeP zXDns|tBIN8@dLCU;jpihfbs^v=iF?kQ7dv4RDMj>ZYWUoc_HsI)@4xRc8Y-gOx zbKc|Cc;*j>Nl3!Si#Qc4Q{pOfJcgk0f{=)%U^bzcV~vO=*XCQd@WpJcX*RdPYa^?l zE`s}LEkqT0mNv1{cDU*7g8reT-9s@st+C_H2Ah|p$c`UsLSI7ftdOD&yvEu=_Vu|K zMoiQR9s#?Y5gKweNXu}B8kH0+O(jhg4JsBPM&r34?_=B71~O*vOcO)}i5{q~qme3c z+e5!EAT5%oM<9m_t=QOH3zNOAZSHSuJ{$TY8#-WjFPsoWZK$XwskfkXlAu7L3`gPy$ zgZ}^zs^Y?<{{S1NIyymr6fMk()EN-g-!V?06atVep0_(}cK%pnsAu59irik9*cXp7 z5>`GyX-X=R)kHQKQ)w*`%}@%~EDC~6?nhDfz)ck3YQyMLzl+kf))J3YE-pd44Xzw1 zl(pF@QdFBLlXI~fX$RlF25Ba6_fMi|#Ocreptp)L84dpc>dnh(Wz~&KA(d%Ok6YM| z_O`<()?gpNhz5yg}0NfQNl@YjQ zYk~7cu4H;^p)a}e?gXb^q&$@(~b48HW{{T{tOJRn{{av(C<1ysOtxQvq z5|?8rUX;wk3&ZXwbMQU3r51b+dDu5k_ot2#*rV{o-i;vt@F zXi@+NLx@Q#8`{KM8jg)W`G(6$3oHkMiRRjsZkyw1jJqcAjaE)#;Fk_(I<&aCS#k=> zf_jp|Z;VDE5EHq1&K|-^Z}wbA#ZGU9j~ZIxZ;M>dLT#xnMa(ZbOqCtB!>d_r=wyHf zw4|*mHy0a@$vB^d&6)!kC9qN0pTF`I`Es&lJ#8lLTHw_xD6qb^7^EV@yMeVl31%{qD zh1>6QS*fW108vraNP8gYIC=9;FNzqo3I=JJSz=UbeFjoumz0+rORIG#wxoplwOOz= z3;nTFPDhj9qQAxByiIdB1AgK8=$$?Q@cM0P9BloYgNc~vA1x8LmRbP{R)|sV4ppqXP@q%e;oMpRN|KdP|NV6~u^> zWxA_aC$dxORosJzexb5x(V*O_h-;l2i;26Pqetf?!TfAE;acGjh8_{*OqCLz{&3Iy zN2O(0%9Pn!A;fK$rAv{Z5vfRJkP~xlN=Y}iGJQ41e@jN`+HGLt=sx5xX!d2%aZ?>r zrzEy0$u``QKm)?((R}{=W>Iq{K=Fq&Gu5h9inv8am6)kd$$f7sJV4`aa+@TbA+@yf zbc+vd@#Vb;=_9dxA3WakgWB%%t&f-?eNEB)E)Vy4u*AUL$piswk;lz-PspnY?w4do zklI~V{I>Nce#+D>`V)`P2&-idweA<-WKgiTQL0)}YZGXaVE)IJ`!o6KkX&t6-%fy= zqp#Gvj`zo%^zRT4ds@?{iua#nbUj=Tb+snkR_OdH%$1oSvzVdfTBMl_MrtI9sc0pJ z!TZjFs`?_Gy;Dot2nXZ-igqq?*otH&#+s0etq6I-5*9~J zy*9mvz9u*uu994=%)@iui89+#b2UOuN!e;<3RGE3i7Exv4xuS3Adga0-q+g()EgaA zQpI@s!^KDLCFXq1lQ^vH8Hj*TYATN*hZ%7t>#3xrR!Y_`olLA>x35eJpt~q4qLz0G zhrsOx?mWVEC^?a-Zb>p+2`TD6q^oU*a!wAxpe0Uht#e(KYjcd;OQ<`abEZ>_k~qSzKr$&+%v zRfy!e#Q8GRfQ6-p(uA~5r^}sYT9TDP`Hk>@38XzY)qPJL#nhfXprOUd8${s2^ zi}MtMK}i+_Yz@Za6G#mfRj@tMJQ1i-BgZaLb0NgxhZ>=_x2aHSt|ilc+&S8apao686OLLi=L{I z_>+)xL)ijzNEHg59wj?VGi2LS&c$^m?KBgrpf-yt}=$O z2T`Uwg8OyFUrPZrB;WdgQu-s>#$yfKHQyD_uZCQX{8`xo1jk~`WtzaKHVFw3kC8+K z>;XEP-_bt!^64JgHraYzbj7c^79nh-#5QPjxk-agr#D}!L8m3hm@kxqlB<-BH_{T6 zUq~H$V_!j4H`Iho>-AF!FF(97Z{I|Zx5}S%T-s*)W z9Mh>feAE8`!(Jy-b0g7d6}U2T+{Y3F0ma=9TEprgHaF-u2iFqmaRU2h(E@xt08D1- z{SYIyq&lFhZOpMJ@*kEi+S9ewGr%s?YP{V|h)k&rHS>-EbSX&*7e3qEW0_3i?a`fL zG)XtJ5}2sYeH`gYaX|8}0uf*@ro#3oeeq(qM&D8zC z!5ct8_mMM>S|udx=(rGGc`#$V;7#^+#2-;{V~GC%q#)QkME6P#r8wCRir#mi(6eNx z>JX->$4Uz*YRYXZQ(zNea6rGU@4h9$hljTAaldd`yicSOK{iIP9~9$%L1C$tA}Bn8sOhmb^aNr9u)Lzqb&-!v2{~IA#H{rG9yIcfs=^%_ zE&YhuUZUpM2*MiSq{Gonho)9K!+$lFqr+8CX{hn@15lKkYk3s(DQfofD^Kvh+Y#MD zW6;U)DDCNPZ*m<+dL>r~>yevDP4J$*4IEHJocGJF(yx>`lZ zgdacIAwS_3WNpNW{70E2Bnv7%9fpbZxzv4qx(|Frk_SXUdyTuAfZmxo_YH`DnEjE2 zP7c%rLgbw1Qke}+f*f2Xn=OHRkf7)u=HP*BS5Ee|#n*SB`>QzmRVlD+LdqfW1B$U2 z&G7Pn4XLTm?Z;_Jn^Kh^u^Gp2{{VDQ6{^}#n&1+Aw;SU>FGz@ZWFWh}Zm_&MNn`73 zTa%C)l!;dwYc$-IS` zu4ym`-5aINU_2A`!?!r6SD`9T5VB<#DCSb2O);4cxR~vcsRc_>)u^FJB_sS-@MCTk2Z*w&(_5{A%_E=srAAOcC~03_QNv$6000M@YdSZ2}X zxpOYLz{(9%^M{H)D$5o4YRl20{Od2a!ek;_N}A#rkQ9-1A!>QFC$*fvn)gqJbiRri zrwx>5vE6;M?B2ermj@kCww5|t+HvwxE5&5lh~Qpot|yq&$m3IO=vlF|*;#HV8xvqd zgl+nqZLsQQj5+o?Tzo96aFAb$waz=R{{Zq*PvLya5`0GGXt6nsJiMtbPd4f-Lx@aq z>i>Ym!FY&H(x7`iS#b{&v9S>4qG^V%z?4L>Lr=@>nCLkcpvarj)yD1@gw}_EwY9=K!PW zB@?C08I+})2bU$UbY{3MJfx{l6z^c8W4Et-U9%8my0raNLxvWSaH{PuQb-Rv<9E|? zS7Z4E;qGo`=ydbf$RWCyDIvq<^+7*nF5t4#!bseqJ6qoN{{TEhG?xdf`F+!y8*T%F z2;_Lo1fo!kgs6a>MIl`NWVPM8$Ye00s_gIgW(?5Z{+=hHY6BjSGwWujKRsR6I04LaK#M%c#QtP$n%HVns zfj$&t_uKOOtnTH4=>WFcPh)G_^tL5cV61q%o*TrX_QrOm z7PH-){{WWibU0Iuzn5<{YBKprQDJYY+oelKUtkW`_r)}|V7o4I@A+-@QrUq&E%Y9D z`Y#-{EhDHK-uE89m%>LIGZGq4ensEHrVX(=j{gAJ2Q(Lzxo{JGHye%p#x0?SoQoT` z{#6P1T}xUH{%Y};WfOIxz?%;>@d|jTnm{rU;L@EQ8&Gx0e>5eGugf=iqzpq%_k+$shr+(FU(R&(y^siHuM(#e=K8bdQ*VkGo*31EZ?%5A4h7( z0dwGkF;9ZI+|S!aI6w#uxe&HTP0N~r`}6|>r0I7@&E2SXf%%K659sw>z$AL1uvR4haVnOTn|Vcm9^h|p^TkY^Hltw{CfwBK zU=JYXutMABHiDPdS}N#Pj-dNs5_>{|_KA*h@(D*pUQOQXAX4K-kOOWs!^r9VnKwU~ z#DUUA&e5C(p8Fv`0u9g`qSeuuB}bQ`9fAPc{DwOtWd5P#0tuxfaiY1Z4126Jl~|pW zw#sz>01<>37$-aAHt(?buDAlsXup~(c9ThE)}p&or8QAI1h;=Ok6R0q>(>COiwlL> zWRb1qsK3=CVyJQKf`PY`XGMAGGqY@`P?c&^Y{YFOpzeXIO~@AO)Y``df~yQ?Xw9F) zUyxEiOHdoEb{-^sQ0JRNpea&WQZHh+7*a3y1a17b!q1FRyxu7q(0Pk|)OON3_bs_t z+@?yBl@tb4(700251-oDt)8NrE^e|n5#4W!Gil^`_gp?GIw^lIX$g-d#V5*=T(U>z zkQLw87Bo2BK40ZExx1XB)X~V-Y7M*)pO%{Tw^tgJPz8!o$x_qzB}zB^v89f+?`EwE z7>2_{3{vW9afh@9nHSPg9owWH*CT9Hy9}p%h5c9uz>lhuCy+MR`F)mlsdEr{k4RzU z+^XqDn~uZIzTT$amL|(jBWxpZw}t{_P< zjmGXbJ_+WM?FQd9%g_Cy2Hs;acv5Z1>267;SM@C_Cz_soVS8NLz9?TapHSlQZ3d)+ zeMlc20S4h$2lscvbiuHeWt(GlSjNonM%|AYm~n`t=X? zO)$fg5$2s^l-q&E6?Ez-0_OGvdY<Wx zk$^8paDq}VV5DgPDIIs%f-Fa_;|CB{wDxR9>&mg54tfGD+66do(J4v=rKodPyNhur zadT^Jwl05##NT)T7Jbs4fj2xAVr9rIG=w!F#+z9xuo{D%y6@B2;z)*LcFJC$qH(z4Wm>+ZI-5LJ8J zdmf#!VGTS_v&lB`OF5WmEKsyk`$KrFvXoTGn2AGt9Cs;+$5X6cmzDk$$4xPp%`n zFGVUeTQ8K-mZwtc&=q^BB;57feqQ*F=*I;6jrgXQH=s$Xt3niup(Qs+9l9IhE0_`7 zMp2h^-9Jo5wdqQMHw2Ttzt;dUwCJ4Y`lQ^-GfGN>iAi0zB_sLbBjdKo7~%%1F?fc` zG1bHRq{f>FQ&J<6w6ZlPQo;{G{wzd(fM1%q!<%;!c@?2Q5Y#hErc_Y+xvmErP~WYH z?fL%z6OA87q#bRRwlYX#_z*G=!vVlRG#C?by1%z{F{j*LeR0X zB#WEagVOiJI(Eq5TMmdg-d0B0B-nhHcANmqb$VV{rOC|dk0UrL6AjCCAtWVQ0*X*< zZVm2twfk*}&xx#VPA7GFf;sXAz54RM0HhsSolb5nd2`!nEd?rVN=Vy%h`smqKW(s1^^RuFyFN^MoS9KSk4YEjU#phCCodRzHnB=19xz*)N@jJKPa&WzNgGfAyc z;l-CG8)8~emCWU=wx`mRlV;RXblieKxdP)2icskK+gNhqoh!hUz{7p6cz6V|h~iOa zK~qQ@cUQM;J|~iMJBn8TG~}DS`;hX!ZKzY{W=dmKMp#-MOHLD^N=P7UNZCVvhT{#D z&19Fg*HuRO;p*>Z@wXJVW@@QawwtEJj{Av9Q5}aK<)vu~0O=%L=}9Km{m?xy9PV+t z>R8zeaOvS3G#(s9%2X`Fj!>HGT&86iX4Z;=%3nsIf_jos4Rt~1S!Ch zN#4YZetk|KQZ%sOreTp~7jfNa_r;Hbem?Q9#9S=zOZgg}N_&=BW;I2)>_K=PF0NZo zSb%O87RIaZa18ExAfb^0bj~l<#0kHzeXz@h~$Z1%j`^u*n+XJm&8lxOWB0r~Ria*Tl~d zylCKOg^mg2%*~vg$aDvDj$}kMp&^+SRfeJfrL8*u00tV*ke}^6jy%t$T_B;MkQ&(p zZP;ewPN#<@_Ls4V>G13tYTBt<$J97Ax4*j0PsD}D=Mgvs$LW3g_wxr6Yg=%jY)0UmeMJ09R^6`v4g@d3gN8aX zT3ADd;Dd4F#3!G^FAXDckBsyjt5&C?W?YWi=Ts1_ZR%mGl_g|pAu3UAH%YlFx4tqM ztm0Wk_wOH?W3&adp$QuS z>^}SBqlDkGy;icQ0jh)bpA(!m%zSjK_;jacDbH~tEH)}LA;xE%)OhM6QdaYNf*nay zcS7`$%tf_%fQV)pvTl36s=A4yq30vCVH$n8ss8{#iimXRk&u+K$`BHp^!&Slzkaxp z8>|+FZM0Fh#Agej=gC=WckMjMN1A|Py8Rw`hb?St4g@yvLc&e;o0J>h+XXDUHd#98 zEmqgGk#S>daNBT4!8y4jCPSvuK%mg*1%<;&+dowwAokV!r7eectzIyk@?Lb?n# zE^)c?NLRQWlBwK4%p6f-lqcruoQ6=RUjaymaFi^tkOq}6PNgez*jQW_&fwv4HdR!3 zdtsEhzt(l`@JU_gZhWdsBB!QBfs#-deEh{1#8xdBT|EFK?f@g*dh6+RsfLfL8)}^HCFK0Coia6dDd$=|Y{8YL##1w* zzMG}=eOB0{f(QgC5J9m7b;Rl-T0sh@q*PH&364Rh*XXr*!6tIo2y?8i7}4JSh=w0- zd|GQ$U1~Iz6q1ls0lUQ{0q5BzB$aG28oH5!?rwmp{06bkV2VOXXMVO*8$0nYhEZwM zdc|WlQRoy!OH-33NT{~VHqc1tIVsnUlq4eMD^Ws1lh=KqfcHi~8+R%79a)*J&7r>M z^Il1U@VA|^_Z2e76SL-0&iQ+ZIZj??n9Ux$OsFDb6&Oq`$7R$$k1L0k!V*-Sj)QD6 znos694j(jXSY#AUe2ue-K4XE`xpQg%0B9#NnvWB>C6W^Bk&6w@nzqR#I?|&x=l3AY zQ2SdMZk|*K@aDGHE_bD_w7$#W>v4&7wpNb)*0sDW(^FE<`Eruzl;iQ1$`Ew!o@4Rv zU^@_nT%LhDTOMPElHlDnKUL`cBmu5`jXGcC7Rz|CNRH1ICb=BSaHf?NC`nM*=qWmV z2biDN9+J$!2H!xwb&_t|&RtIw-Mf-wNTyZQ0y7TIQWCuaz^tdKPWB2n`y3KVBkv8< z1xN$8x5*8>NO#&GP6*K3&YR zDr;VZw-#Hf)zhs&i#Xb~|zwx8!S3x<##GeX*#Cz}Tt@ z7)F35?sUQ?Eszl54lAz2Z@w&B9ma)0G91=Q23}A~!>Lu%zS~$~a(M*%SR;ywvnu8> z8MGuMsHp`*V|~s2u~zqi2m-s(GWKvI>f3AprCW8~*@1;@&!!TQ$k^S$ER38#P}ca4eEhHKTGo z_8_11#jQ3a2^nP$^Rk6K32v=H1JvL^)JL1TPA4|E4{)}>5TOWXCg{>wO5~CxAwbyJ zC;`*8#qlya$PZ}ZJ^ z%9%oktDF9qbGonT-506MY;;ABtTfV)%A0Z0oq`zEzuy(})J(%>5D~hF%WQQ>TFpTe z$Wmw4UyVqJ!$oeo`AP$6^-(gHdNr8bKD@D``@pHoNDRCB7T&!e%Ae^ZhnB!}W zOyrJS$)VIQn)8KdDYJT#0(U!Jz?@NI?Q2LcZO09G^ILw7)H$zq+V7_iB%I@oYceX8 z!zpJrWV$6e@&5p?Wy?rinL^lmLKZ&_C4WE*Cgoz=fDVfZo=IVDbGGV&wkYGMen#oQ zDU;#GOgH#s{MO_mpGj(^A>}DbN)a8f(`54%(IFu_lWSY9BjOl~qmv^E)p^HAp=o#| zBm}kQPZ#pnN}?{OmHZ~dsHvH?Mna>`;v=!%NHO6OptdQfd8Zq7OK$Ik5S@*ZpT!*o zi;dsQmyi0W@Y1%OqDKzj4&l$d^5nFsS42J+_`2fWRHwm<4vgyP;u07NVGTxUZ#LV-HciqimNpmPVU5%33uxtgxC8Q8evGp=4Drk#lI~`bsTInH$hR4|>rqma zTv5>2xZLSUJ;!dg-+W=IdUH)P!zGNgc>NcV{{RAW^l8_=;S8zL7fe%PMNTY z+l_LxuSnDsI+3^sa5{l;iyGW}4{Li3aXyKk!sLvLxO_?iro@KSH8$mzK}ibwM}EUe z^!CC~V$^SK`m=uRe{=~bX5iuRSb`lbm9o;WU_xvzeY)EJ0G>6}EM%Z%ZM>|jY8vR> z+Bz((M4WuiMOqi=NL9a0v1s}kn%>Ct)kkSzcWdLK%3@7g78Zpq1P}pUl6{6NONQz!yiT+zv`D2=6v8?}SXgfX^XWCWqL zA5*H^ewbKrunBf&JN!h1SI9uiU_A=V++?cDbxpJm*V3h)pQax7)w4!K(fQs|wkVu+ zdHnEIm<(9TR9O-EgpDOmX+ZTR+uPW0e@tbnF$`C%A(A+E4F|zkHx8xTv=FdH=K$D# zVmZEJvAAESTOGfSAx%+;+!-W!KjJD(bd>vsw0sfA%f@)L(2{_%FXm9W_8+J7!-Z}m zYqm#Qy*Knw9ojQ1B-6tRLYvVjTzv#zuG@QJx_RpyZ0Fy}NNo&F(#sKu$VwF{YH4=g zmURLCc;?GiO|v)->!Ha@5!BgIOw=Jtb%))a>#7a8q@_1W*;=jW1*|v3n4+k8v6bFr zrE?h5e4uy$fJk;f($sXN%U!^=yqd#*kx?PJKy z1&5E(3vMkXNg9zfi;zMcBez|_#e*!x zqwYnqw!@i7`!Vlp&wEHJma3iOVCMO(LYYo@sQklCrq(VXD1rHE-xt*w3mh*SSbay; zSI0HaXp!hvWfogcB)HIG-~|S(n-5WAZ`T!2baoQ&=C}T$r#e?Py_;LWe3gwDY^7X} zkU-w*K5PECxPApn=GnXWpSpy~r?m6(RBXSgYg*zw$m#fDAC||{+ZnmAcC_|G9zVo> z>drZd18{s5f!2b^5t)wFta&eyzfVg6*AwEyqdUR??jZdXH%dXiV}Aq%C~XcYQCA~b zzV}MV9+%&20(uHoy3Sy2`}FxCG|BG+e=DoXxw?S{L!)I~z&*Fv`+t@O`bucU;%;Ny ze`IE|S02`$OA|4qAqrEG6YSll2u?++1z8GxQxS#la%M-PvrU)!~o^fY#goVx0xnW}az~>oa6&)Tdel zmes9bO0GrjZMS2M))|Udy}6`l9(MRD3Wy?a^=s;Z49-}VmgG}E1xWgmgs$X^+*;i| z2*oZX(#J(NY&ctx2L7QsDprBE{BC}Wn1B04vjn{7;U#D!M>I^rLQ7#FtL9^kTXns_ z^xFo*@nKgZ-*cdEb+_ccf%Z#E*y-lW&A(N!&jV8noF9nvj%rp~j%-tVjUK;YgUKa; zSgcwT){&~#U&h6t=M?-ZvcjK^6_)cULcp?V*n?n)GlkB!?n1(-T~%Hq4z{0By4=TwNKUuHcd9UCxkh|uInp4w z7%OSl5cHseMbe^mqynIzY(cp19|@>&qKVnJ0Ib(cXag}RBmT~pQ|B$_Dy#IF$gR_z zrqrED-9VNdunDt7+!57Xbq#^{u-si_@)n)KUB{z0OZn6yi4qJak{)CUKo*W3hku55Mm|2%KRTz9b5~9pjp4-ezJj9JEJrYvs@|}qQoCT~6 zB-?aX$VeC9msQRjWnBF#mz3(zgvwvc^Z8E7akV_AM=%tvz0j+m5JirW_roWrFL(`Y z&?+mP1v85ds1-+tQnFL-29)~fjw!UV>2N3xpdm-Ht+uVTTK2v15?X0u9kHTz4URIT zWG2rank4w8)iU(d*D}PB4xqzJOUx|_S{)j}TSV{I>eM|3*lZHM7j=;v6+023j;cPQ zRUxun-OrZXw-Ko9Z)-!h)0ykS!Jl{QpS>(NnQ8q zY%Wc`@g`d8qHaS-@BP1V@~XwwC%@R*|TqQc8V+C;YJJt7dm)uglyJn;QP}Y2EVc_d%y^yn&6ioM3&Agaz0YbkHcqMsf6;vN>)@zMfUwaJX_6L z*G5NKuY&A0ASP)I=I|(HhiO zbgN25$6!JK0DEFN)jg~nQchfl-BYZF)c6NlKNMLP=xhbf-M#P!vBy)gEN^Ha6h~5q zm(rJCL^qyoyMPF~I-4us{c##VJ>aCY4GGyb?l@Zjmei#c5KNOlT)dK^I{L*6mDpV~U#Un>=M#u>jayqFzqpT~@PKr%|a@B~gj;)J;W@76Cs}TTZ1C zK_Dkk1nD;HWOcc;J1ncJoZTC%uizBcq~=;wSP@!=wMS4&LFcIIaCGx1fC=~Yzot4? zT&9tNdollj^lh zzfN=Z)TSFs+~qg|P?D<~xNeZ7?npkH9+(8=zfg|)hQdQ$bvzJiZfbtNS#K}H0wqa6 zxHm(}&}<6SQhc@pYkfyf{XjG<1lVv@brnT`7Y}=DqaH5I&DlRHn!aCc`Ne|bISWFR zrv;T^WLPOywS|rC`QS5>)1X$78$?`qYsofV9_hLAtmR)c@g_WoDVk9#pAr2@Tv6A$7kC-cY1f9)+B+dNhzw2S$T7pZhh5q$V0Y}u@PkNJQm)T#Lq?HggDYd!)BwW~Ee0VprjCwpX7G*_4tilUi zc?S*j(FAFSpMeyN<)JZ^GNFYBk z7Cc3bv^M9bf|k!_mFHSqnygCX5X(*e0eR3@&fEf~^=^_uARe~t4e=HOeb%E9ibpfD zdq;2dOgDxv2wAg&QK~iU^PN?g>JQF-w)=>7@@w@cTw9J!oTLDOa_aOll_@PGr3uoM zSh6Zs<}Wtaxju$DX<`hJcAKTVcPG59fX1pKol0rD#YE*L|*d z14+8Eo_8=>_qq&)F_>gTP~^H>a4k)!pSZn-$EMvdcgd%U3{YlxanuC0VU}2Ar71&g z{{VK|3^0?yPRIj$k~Xg{GY&>BsPc-7#O#oufw$%ghfFeOX=PXlVFd8iHc<0W&9#SI zrE-NCo?|XL;#Q{}Rl;o8HUw(esO{xY8-rpyLEfW4^5S0abf}K619bZ5h&h;?r_-m-HKj^Ou-(E==>UoJ?0bXHysPLi$H3>g-Jng{JXFxj zHTdu~F;s;YFD-{mR-3UXAu1?Ngrt&``G0$$>)!*FgdH{t`j)k&q31_(Mwz0q6EU|c zl$j`x0ic&%CO~aUU+yOR?sqo7ZNbHzJN8xBhi?3W)>n$mzRp$5Spz)L^HS-#ibIB# z5;SFmy*+CoVIe8sO8G=7d!-fz+nchs&W^`|%w6zR2Q&JH$|HD%@q5A^9L~txE#q^U zo*ibVH4`XwLzmMkuT^-VT$c<;>RZV|96ZqSLJ-+NDsUYMHIFi}ra%pkf6HX|NZI7- zt^sd#t;*+Jd=%aIb7XiKJHqBqj|O!5#7R$1lqSqVgo(PQzNI|&pcGtMij;MEuA_a) z#Clt}x#BAei**`oq?pQh zgr~KVUI18foBWn)RCO@o+BQ-ZbR?ChYm55(V%9Jns8#O|BVW&o8CamTCJbqf zD(|>1tttdK2T*O$kMCf0RAJ*YbSd%7`0O3BZ7TG%RGC{6Lkl{ILW)(W4@=u){4q^4 z@7Z>RODzLlYZWn5*oq>#B)*o$k`zf*`i>xNRx3K;SzP_6`Xe9Hi*Hl}`Nxrh6 zr3)L6_um_6WdX7W42S0 z6ylG2boH=3u<=wH4ZcV0qB<lqrHv5Qu>GK%%fy6J@AylG72nr4XGgheLa6nP8f_<>^%A*evVfk zbz%LDSk#bSQQrRmjHH{7KyC=_zibv-=N9|d@=lKqlXnd~SEosnMuxf7D*Re&N%DYS z)yy{Nk-g8hDrS|o&12)DxTT?}kcLKW@lj(xqOHUUs*PEx7icJ2OHr9#lsj+Ub784N z^c}H5P}3)7{gvprMi(6~Y2ByuNtv=H!z^UXza84cr9lib(_;6w+P!Vo=VAF@0L_$S zV7cI}qvLSIg>EN~HU$uDF7QJjKeGNgJiGq!D}Dd+*b6wh&YJ4cNiG{8qOG5=0#HZM+t^d}P+D zxpOPQtHhAR>a0N0B*1x2xY`(7&8wQ^b`Yg4Nn0)HQ5MzS*S3zIEKq>eRRc`57IuK~ z7WtI-cx&N)YvcArq0=+1LZ43HFU_W@RiMRn#Y@c94L30*x<-*tN`75sDYDkEdv21? zP{Q!=J9g0WSlnV!Pbq5!-N4^(PAh0_(@iC)aH(|Wqf=w0sO-m#kkc{SO@dI`6J&&r zfB~@E6u+Yd`HIT8yTx-M#(HEd&*Hm?j#pzvG{z9a64?NTRECSew7H~}5VVJa?boM# z2ON?%WOMJPg5BrnzMSY3lD`cRMgRnAdz5(bc$q)?GH0r^mspi5M;&SEactN&Rx-?; zS^)BdbRZ3Ywl`P{+WKd-?lkq)SK(|7#996W{{YEJUxY6-c!tPsEhpt=Wyyz5tKUM< zjY{icKaKH{!o$UDiw_^q6(ic@Y&cmC*b(ssLYHE#uZlN^VhOsqw-pFCu?ZE?VYf?O z-)wqWi#0rq=00J0_eLDigg)B_pOWrM8*W5()wZV@DkTcg=}(lZ_BQRX*zK_N7_M#- z#xOC_wcZBH$JtavuE&;yI;Bx^YTH!GjLGhc09|;jp+9r>z|Ij)<7ZPF4mSwKX&i6X zf`O>TVMz`fToQISAa}QXNP=1#Mi2$Ouk}KbDdcsog(5^W@=9Bj`WIzuZ7I@#dS6n3 z{Q<!rY*;8@nNdRg} zL%h9SoBDn5St_7t%tNi>KBYOZ$aL)6!|bgSloGydX^@q22bnJ4ZS?j3057%})>6D( z&Nu%675@NaM?OaA)`R6_0q0WEK#t1|p|xwe&XarkX;;4cf1V&zvOU`<9wYWffzoW~ z@8+8=u1h-+xKd-K#3l6}A_x8-~em#ddaBx&%|=!-COHDgE|j=xlF#OJ~pM0q!C z^!iFj_BJ2K2C3-mSIk@SLT!8bTgu2+%sizj$pxhVeNq%Z_(jemMSw=r*(7=t^N3tr zw^esFwWWHJf`Tn#qDlOL7?9i=Ghkil0!LLH!1=3|mdaCj=yZ;qMgIVf2PP6V$$NPw zih+AN*Yj5);7LMQZL!xwO=$r8lk4BUD&)YPf8n20abC~s7X0y7t!+4UyuzAVPQf4n z{-2S)E1l7q`;U^5{7ND&vn^>-QWBMKZ`|rVH}&cI;PBwp%o&D*^OAF_;FC@$wo|EX zO*GtOD60Dv^|w>M@*bG7rJkj|mo&QF$_$jTX_rqspkFNG!p*kZd)xbA{Px9@4smkA zJe7OtoYE}di(F;q-?2Jfzhzv0y|9g;iQ_YyuYLZZCFE(bR+iNFF;9@bq=l%gD34L! z2__RyBXXOM0F|@K(|?-C>#yi6DdN~95Tq50eo41qL;2#3-5jS5(dOOFx}W;lK(aaH{w-&27!qAhs=4-h1 z+k1QdxD=SRG)_HRb?+o4j|-W?&p!ZuS6EYDrkc<@qe_zf*a%8>zO`Y@G;3r5~`q-sf$% zz~ZZ+VY{CH0M9kfq^Nd{Yf1wwHyD=W$_sU8v!h?$$siB07|_zzK{cBjpKtK}P1RJG zbg`0bJ${-X(WAp{#mI>qy!kiOg5I)yO~~JTXn%sW-t(PrAgkLmnn`FMACmOh^+g89 z<1jB_b)_JmKvF=zwfdX`_&9`<1@Ham6hl(!00!Pb1&q{Rbq~0?4y1)y#i>ZMXSSkM zx!Cr_TaG85`I~PLrI;!0s5kIGG@AaGQYAR3RJ_qbeqvI7w-EB1B!q*cFS)S$+t(25 zYBF}GlP`cjWN4_~MVP{WJW!a@Ateb-N~)>vwV^6gYy{m`xH>>P?bw`jHSjctL~c3l z^9nQQZr5vx?Bxg~_fsp=P5D?_T&y{&ayVtN7j3{ICAb4V<)w=@2wLl{sk zvC{p^0_xBgEpgtb)LUMFw5?HyZNqz61n#rm$p>S-yXEU~`5fZn8hnbdr|ACxV@us~ z{{a60Xr(DuZSacddr$tV%!n!E1x?qnO%~mg1zO?{w(({Xa}jd;1|^F#&1G16@|NzB930cZ}W?Vh3Ce zuP$a(ppDCVob7*0kM=Ph5^X0P8}(j|(6|2pw+f$OoMzs4e^>WlT zO_sqX^C~AH083FQr9iu zT59AavOf37TKMI@vlyXw0-#XgbR>RO&R9 zD`eOk08i#Ua9SBebBDa?s)vp1NOn&Y$+YzZD+G z;|D3`y&nh08!!>eY~$jaR54b|)rPY!SA7wl*t&p{rsX%(p+I#9^&PNkNgWZ-AEL6v zDPpN_S0}G81tT)vY^Ub9N`91}%*K=w>`68bN58KAV0$aL^fwsL#fiFJ)MDj%eRdA& zXXJj|`K2Gr%1}=-BWcoZY@~~Rcj@hkV-t{j(derkPkkD8SzUnBjU~0XvNtD|wItu~ zY&vSJ-s_8e?2*tC+Z|9>D1R`8ek`ZaZNC!5KXbLd{qYg4km~!qe~EJihF0i;rY%k= z`EBW`<=x*2RNlG&|jIafC+Y&bxtzDRK(YWy{H z>~H@7Tp86A4r$47cqtT&pRE_!L)vvtEm9O&4q#Bi1gn0 zXpGyKN?&8Butc>c!XUWgv7BWA3I|aF#Erc#weUIE>nDc;qG;Y0DoU18ovpR>;yjUU z#Td__7ts_;(xQCYh4v@?aUH-~$pwhH)TY~saQ=UX*}5_{g)W^X0Bmk~XZUx-YKTr# z$xp-F((pUiJluSwrQEdhs!ut<%g9>qxEe{^cHY=NAEiJexoc>gGTQqUt)R$pdQ!3t zufKe6jFuNF>@XbxT`K%0)Rb^8D?nKyu{|oazxRXvahS&6+G@h$0j;fjk0J6~XYj4W zDt`%nB6&A7)Ym!4F4ET1iD@?})I(!PBFE|q-))Dk0fy8TXAa`3G1waDqLTjWuDcb? zdEGV26&i_`mnwZmpoBisBDSFNkU%L}P&!aMoj|0Gk8B1|=e#kYZzwAm%2O@QMlLwLlkAE?jT%fKI)hBZ+y0~ z$_}TWhcsWBxP?lg$eLWNC7CSEaiv|PIP!r%ONmlD5n@O;(|g}?k<|d)#Hp1u&dfj_ z9m+uPVg#)I<2k8FP|8KSM^2SCxkW^4a^#Ij3e{o;;`ozJ(r+WSI}fQ)qmanq6nr;7 zK%>8kNL37(#o8iikY&eibQtC2v(tc z9`-gpeXxYu=NdExl zwkB#usUF7?vg|h)r$1ASx}PaPMN-0)-q$6-4am3U?`%bx?FUViX1&(T^J}E70w4Ti z&vC1NJernDqCciO5Wq`r$qBNws9#>4L=|>c!=c4&uXcX3(LSzb%HPqmLA$<#_C%gF zcrTautd1V4sESHg4T(&o$ZgA%sYq3lP_)~7p8aw2m-|XYO&k(&1g}QuaBooffYRY; zf5p9T!WV@}RM;F<qQ%VUVe9V7yxrNTCyi;b^u?2X;z3Qth8B}XLYqnh$_>Mfz<`h|n+ar#LfH6t5l#bf7hh+hhHccwLzF6_LPav@0!$Hq<~_?oY9 zz7A=D3ay%BM_mpgprL4XqF#L~Ky{S@P`yK-DovGfiQmLsQE0#+dX^tu7A;UJBhl8e z9((sK;_$12lx`K|+EosrAz7K$7MTle_R<*nf&1wP%tB4Vbsd4|FN?ZX1`8Fbs!)_s0v(`t-^<3#gPFc-KVIMh95_zbK`iWM6q!oE=Q)H4>lz* z@JRsB4HWuD0NkU3Uet9)k7hyVAZl%5nq=YiZ%~PjWJ~FEFXe zQ=qag6w;k`J8l+%JKI`LfP0a9jknn2rkI<6Q-4Df#%?F`ehIj*_-)}G7EWf(3}q@> zv!z+oy1Ie_SgB5RErd2)oo;vtN09)ip|pXeDFWD!Jgy{XIx3p1IgDX8yY<(Ps!RA} zpf#0v5yPrnX4!`ss7@^`CGKJ)g~@$-d53iYuG)^~*FA6sw?pEz)WC>i4mYzx*b}ccF*AhZ!Ot0;=IJw#%2d))RO$gi({d~U3G3=cH`Ed4zHQfz z)=FDugjE|fGy6TsVxH2Jmu?E2+#S6KaB+16PC6>{D06NV9nKRSW%MEgDp0?eD3U?x zZr#6*C&x|-i1%A?k<&9gBKjs{nNpQA z<-tUT^cPxNX$nX^2pjd>V>n_lzRnt}Vly{04xc1-I)yFd{QDLX3dmAco`=|v&ll8_ zkaG={MN0GIZ{cr=`lcK?x6}}f+iZ|rP-L&vCfC5?tdc>i zK`8Elp$kfsq?9;aCr!2`M32t+lLSXnW54HmjUl+Xa>^KJEea@`r8^{rkVk%)wt&Dj zd?Y3~ynr+4iE}<+r_p0;c{ZAU6pEe~1TV%Dlg!)`IdEb$w_}^s9 zy3E?F@7lGpojqBNtm#3&UH85+wKW0nxd0C3>G*CQDcO~}o@FLkZnc;yPf&8pLR6%v zbKgoeTh zZj)<(2hxv3kIwyZqr+$+hzAjK%$4T&)-g3qoSVpfd8MGIO;Qu`?8;g_N{J`$-xe+` z4*prcnxkY7%Xf`D6%$RXg_R|z!oa#pQ_%MBh!qe>{aAfbW6a0gi+CpMF-V+im2}Tb zC~-?sPNbzq;R)Ku^FG(cZlWhLLLaGKtAf;Kr58*Nf1cG(G&Iv{mj%{BM3%Fw3J>+Uq# z2q{8B+g5~g5>!x0NGY;S@u8@5c5?P}>9Y z+hxnnYLg5907`x*)D;?fRK(=VYC}u27isy0DJW1p!fu6F5pqcB(u<^GGcy|CGVV9> zUqbsmY>dLQHQl47wAiTA<5lRZ@THkbMAxQCC!*AeXqLc z{9seaa@gpg;V)>!8DnA^fB7e4;Qs(LE5rv5UU+IPhw#}-(9zzx-x|7$S7USuJJ%8>_<#Yr-q!8!t?9PoBywj0|LY2>4G^0Y*4{osCxa<*oJeD^)d^;X+U%0o2hYXf~K zaYsn@vOpsju*%JV0Cy-(f%mz;nz_pJeq^`%QVoa%h^qlxbV`orr(w1mEl?vMyGMdX z01jiR@j<_Btx8%%sggGHbCA8a^s%-m>qRITWt5Ba)8wq85}jj=6=QYT4QdE=fP^gT zE|m=e{jM#1K9i|ybH^wx9L|Unz2w>Ku}9EzLlPUho`T9X6a|OUE})%TC+Z;fRjf_L z?l8yn-wl9e0I5J$zjN+K_HKTNkl=I7a{vJEHdxur%tbpG~h84YuQ$>Q#A5ZRGgYqA!!Rb?6%I3Nb_35?_dG%gnzUNTu2PC?mGOF+tJ32 z9B<+Rq$%&d?KzmwnJ{07i7Iuc8F_3K>gtl>ZUv8=ToMhp7AsBC`?#5$@ZRDt;HAre zMjLwz_k>AYO>PXol!E(}Ixi;blK4s%rwZ&FaibF}98#NZ8LU}>Nr4l23K?kVNEJ+tSK-$~&7%YC#OPktg^8}#|jWXIk z-Wq*Sm7;oi>xmJiB`F0eLkdbz z9>AMwR@>N*Z+s*L^F80p0C@d{(4Pw;0OdFE`=rz8t+3L}ra{{Y5yyMR|wNa8MH8vg)ztH0s{$Ys|ISj#A1nEbG9ww2S$R#H3l2iM;OZYhR0 zM>+031L{;mMKp%Nt#6q}Oy=67!7FYAAb?6qONjc1TiHsm``GV`Dr%VA4^qQ#`EG?Z z16lt77enG!NSU>isn=?hnnXz{0EZrMYAGW2)pKs**Tt1S9_gFgxbXw%p+6|my7`~7 z=F9%jC0?6S%sv#|fWtAbP0VX@-e9$=L@zNt$pfzaF&11q^zSX_ZtiQ?{g=Bm6KipC z@+)V)30^`tI|0U&(}`OVRpnK|9KOW$1b;kMJa$2H!_|N)T(zC?rb^%AFNG#!d0uxc zW<()gguA!#z~OF^3;zIRdN)Gdnwk8w51P;?0KcT8j(i&ahCNGTH~#=i=>Gt+oScO! zIwpMUJd*NLxoj^+pf|PgeCFH`y$-C7soA!%`7OVAFQZnoO=rb(bw{a; zhW=nko2@M%kfkK8(glIF#mK(?P3<~}OH3N!a1YU1bS}Nn;*H8}+0y1SFyg32;T?j_ESL^ZiE0lEV2I3q%XwZB%0mF z&1{}tSBA)w8X;3H#!Crp4e3Zo(3>jYBwMc57QaobE(>|AHb4%EKxry*s4b`EIZZUJ zD_U$+KBK4&`&!4P@MrCNrDR}ebw(8GTh6wPE?bqUUSnVuJwY4y+WY%qj)}{oHx>zH zLx|iu-3>C5R+Yn;EIL@|7bNebdB?T;;ARNRtuEG4aThqjVZGCn7GyS35grnrEvM*9 zMa?$a!9;E8Y)GbpiJM(yofL)FBjSZBxglyOVvRM{Rkhp}4sFl?KA*k=SyLIfjfc-g z&4Iw`Q!QAaOQ%bfJ_L83p_LORD|(b8Bf6U>a*=Xv+ot0gmc7}@0>jtlw>Wkt9MK$` z^Zx)umo!dsc>plq#0BSAz7r%bI^Dd|#Z_n4 zl2GhqDBO)hsUMKr5^JfNMs~-qim8dj3l|{lR-a0b&c7A4>bLfn2inJ{+ZFItNHpp| zQUq7`oNS9znpt_(p}8=gX4eZ24>9lGZkGJ9($3pm%>ei4k@1$gz}zB7tJ0sp%fzS1 zUBNeX!*Sbjx9f`Pj76~mA!A8GEqjQ$^(w~mbVeCVbtn(8y+r^=QdE*pb8cxN_0}|bFyM3q_E=kB&|VK7XJWD1;E=teU*G_{@e7$WG#QV%}G_bp&dwbzyKB6kB1zFGCo40F1Ddj%}%!0&PsTt4*7sm zo3Pm^N{Y0g3k%!V7PGKKz{dHWYUcxl$lkhNA;@GT>k(oUlE+_ zqWqS|nY=h45h79~s#Re&dB~FHzM!2Tq>Z-q#gltY%&X{PWG={cD8oKe z^3=9z^$PrIJCdO|rz!HJq!mM2zzR|o)g+C*d-lU5kN^nXTS-pYSVQ%0`t70%9q8@y zq!mVSC>oOSMx`Jd1zBA{I!E5a42;;^sGV4I0NrHFGg_+AWyy9bepPL)4W-}^psQHv zzpwEG^}{M}mp2lpQp=d-Zo_pBDlyd$B-SaiCChG^GDFQgB;B<(fNn!Uum~4Tw*zGn z=x{e1#?VzHGC8uy@uva6B>sD)*K=16b1YoAXGf5>FA7X|IZAQlp(x#_Swq!f;5&oRGu-Dl;go_83c1b=wwZQQppmp)%F(V)|iX_2G00}Un%JfxK* zTm&H|!(dIe7!0HnbGp@Gw7pAmi&<)8;|JpUrQw&u6<>&XPM0rl!BB zu24eFh-nQhfNnME8;pGS?Nbjp-Ze>r>eimqk0y;z+r+O@=!}q3(bQrS>e#inGq4_K zb-k4Cl9T`BLR-A*LEYQr6;u0V82@0rpC& zygvZLdm*vG5H5QwzRad750gGOOEZQN`V$=g$1k4?Q^Sk$t|=9HIH-M zuMQ~3!^T|A`N^2I$?>7(%%a`fON}w1br)6rqS?|CklwG}0@t|nZlJXH-CI*rhc~n= zI3Qd^c{GkIS8_gApC*}9FxqxIH*(UD^C>GPz^j@H7DB+-D#^XKWm8i{Bi|%U z{+nsc5T4E(a7s2yOpMo7pE|LcUSpTab<0Pmw5wexNh4Cth1^jGYXCPTkPU9)u1z_D zG8%7v3L>Xbs&tI`SZ-8yqR||1$Z2-E%8EsXl1Q=h*e9ii_qfHAiN0W}CnvKdNf#Iix(sQi-CRDP8HgOHw3W7pE<=Ld`hYGD-@xLfhUWay>tt+T<=>Kv z*<(FV;+A!%v%Y9g&}SPlHy8k6m792Sl_+zG&d^>yc;k(lHn`j)F;*cC%jgK z+moB;W;xMHks-vPrkRe=)uAU!^%SIezLIV%apavpm4ay)Kqakht~R>f`zWWEE2L|( zwbDs(eGRlv2ZC&)Ew~&oue~AJ64u+%+*^o9x{DVlLAlwqwg+2Z-vH>vJ)Cm$*Sonu z_K8w6i1~n2jGawH+RqbNa6v;KFow{e(n78mZHNNfq@De-yP&vvUN>83M{~_JCWH{w z*3~r$XP6X2Z67z3;{G>VWm9X5-33HwpD6N-nJaNx5|W0(YzO*-*Av;Pxe7dt2G=OP z${aW2^U~yldt7Nw-(!NdVX@r_(GV^W7>x=v)lZ81rNS(r>uDgS_X6YG5-=K?X3pC? zaGwO-Q?0%CPhLb?D@{F4sY_|6)Ztur)W`uzH$1l!efQf?KX48+Zfoh^XKEGDfwHpg zI;BQq;gud+D@)9{+<{@M%euM?ZDZ~HacxIhTcxyB6*Qm$ZPa_rJUM2aAu*(?M=f{K zy#OU=ulpFbx!hQ&C7_(QPbY=?E?=kcZ!AVsr8=jkROIVXP1aXFK?dHI0Nmpth)UA( z?3Z=-x~9Y^%cKs?rIX_s=*xN5+Jh#1K4y@AvIQq=r%zFPn}N`Nk)wRBIb>)csDGni zIg5x(cH5_br6vSqM?tmHrCgj_#fLQNS^|jj(V#|2Vut#4HyuuGauQYM?k&INi>M=} zk4*tl-v?RS*G@>SnK^Ji(@`nTxca=H6sRixo18Lf_YpjL1kn=-xoJMAE@R9>iy7p` z%fZPg7h0TJLKp|Sy5H^mu^u|AhC8(DD|%c8IYw-{CW@t)VN)1xt5%N+MPf><+6oJ+ zck<{G0KcHbTAG&~UT#*xih?+sk~Z4NmYF9pXP4Cy8|_gj$ySMV2HQv|9ouVd)_Qs; zd-fQCPaCIxM(xDeKNPKwm6v!0+y@l-y1HtIm%YAQr5ZCt#HCE5meNyTm8e?(0GDh`mF#YtsO+kF8-RH$ zT+FpVRm^xS0k($Iar`k-=gt2Bq%`tUTTx&{g#rDuQCKcG`c?{VFKlrWGgq(^`N=4F zcFrl2t~oNHT&=CgmKYM0qO_}UohbT!$;B;8i{4yCk0t0BD78Cv(KGdwE^cvgwW;Sr zY=k^4K`Bu?1MC3b-xv^ zKdlc0sJ2UynNOO@Ug#<7C{&P-+D_BU0hG;!w31 z?uWFS5aO?-C9``H3F<9#(aoohG6=E%0F?bzYnn*4_3>Q$X58Txo8rGVQ)SL&s&jK` zvcj5D+iRGaucQ?uU1?6OCdvAWQV&c~^r~hx(9H3nxV5(X`Ru-f_IF7vxMRe7w^Df9 zhy_M}7VsW>!?ts()9V%J^d|V?A|jM_X-+DQF~q!EBT`&SEPyZ3O7D&C7b}Q+Nz%hk z`>GrTfL4s#Sp3wX_&`yFelFxm&bF>f>2*Z7rEIkS0Af&-gJMD4++M^0eezAHZ|dLL zwa?#MtAA;Lx`NiY7T}^E64I9bB%BUIscF^~#guAnixq=hN=QF`nB3O5eu{e^=sNio z=RFZ0{Wayn+8?Ux@X=b084!?(w76uAe3>diXcZDtm0syeb{8E6-S+S)AZsnIznm63 zIlh4!La0-tH8L=$G^H^hF!_-o1z~4Sl&L5hiMrB}s9c|3xLmCo>Jx3mkAhOgtVd#e zsIEqkl(w6x^`s@S{{V>W4*OdY8zYW@lj@XZwboejW7S(z^!XE_r9$a_En85%u9BcZ z9`?k@VUe!T8>DN2+f<;8myo2iWY2p-N8>GNPP6^n055UeSPNR)?R^DSAO~c)TamH@ z>ER=^0vf}pLxCxR4wYR;T6C+S`<=-hj@Y+?x@gX7nX>qt-wjk=t(!HM`FgAqDwMeH za@QfGJijs{mlBR;j{0x89^b=kPlKiSY(1={?mTUm>W3v1r`>i?IB)bww=*RHnZGKE z0jWrmTUuo$lm?XQ$CL4t0!qmO!uKSD>xznueujJ62YEa0rN;!>Y)C#OjEn}B- zN4k@H5)Yuh_B&!+l2BgUJINm;p^rQ0ie)!WrAkW@-K51!u4*pGo`#g9*qfmtCg$J` zCcumCZEQh%shWS58}TYcaX!|+$q118WF;tpHVslK1SmJ=4hs>a5oF(1+x7|vd@-1u zk(}3R+xfgMCRMTY7Z1AmNm~oB8+5gt3(A`g>c3^b~BdtSbYWZ~}NRskEE!?TLNEW(LV6NcqK)wX(2(O?w zMgX03S));zk)?@ua_c6~v=Wj}bf)U`>Ph^tFVZ&lXe*0v-||HglR?UkIU)og+TA4% zE)!`6$x*nl+snUOZV!Al^zOa4N>~9OWGi0rJS5>n&mZ7D%J1F-~?y~j%vfWDedKwL8ZeU>*J zn$1<1(cw7lAhe^Y9(6XbZV7W%*XgHw5D#;1j*3F-kGgA|Hh1onG2(Jo;BxX1rKQGD zgdruQ*aaP3R1~d5-`3VRvk=TQB%$?f;D@SH&baE+8dFJ1%Uwc3g@Fp&vAGtpJ7EBq znFTxsUf~i~E3U<-Hnmb~6&r#NCNh=|$F7~nOY}b8-81GQ%mkm#^xTZ&r;;I9sT77O z^Q6X<9BtO)lBKreck`iIlXPv+?_=8gVr4EnibUM8NZ>twYBacIJcluD(Udn@klT&O zg;HDLDneA|gefZQrK|#yEpue)>NghN>JFFUV@VtwJHY#0MRp5Kdo&T?O3uufYl_;J zJ`S_9dJs8)j@D4WZl`a)Eou5&1Hco+5BNzR0;4|)cot**KtB{#u?|$1P@3G8%tC-t z660zpzV|4$!>0DO{q2iC<2ZD!vqoPXej!HwA5a~by8a(zA!agNZcFlNQ=_CEDNCf4 zpIsn?`t~OQnvw^$@yyZr%}Eoyd(9}OwL{A_X4-yK3glOlyGv*-ve6>izq+D&8;+j1 zteXgP#rL-mQJFk<<>Z?ho=c?a=Zd{(A+Sz^p-Nu=0KQRSe*SL9d_y=hvkQ`kG{b=h z$zM;&sBPe=tVnres@`<0Ip*Au2V#9sU$y}gso*wrjy@Xx%Y<^+00QQt{?J7U6r91~ zVo+S&FH-XeNOS;^qC_#|NZbRc_1xo6gI6+lKdUYvW#7QBM(7ncR~(|-k@Z_i@K)PP z;O<-;q8j-)YVwYW73e(@h<=s%Mwy4fXn(@%A2s4%!_;niqjNLG0UX5M?cSik)GfZxGrEk!J#Y z69-raX2_vaR)_g8o}SwqsYnRWMeWz9{SF}r*cxoonoFAhW-BlLXwp#6lu$iRHMGQ@`vLz^IMk5+skod z>0&y1;bXJ4YM(R>BFAJVE^eCX6zS!3`ny3scGqM+0XrvE#r;Q7_TLwDGc@0=kcE@4 zpfMcHXmCd{^8|URakQeP8FmU=tt-r}zN_vn+tUT9mJr*q?)d#xPg3igz${A7nQjD= z7IgGPc&n6!x)7HyVosno*c;z(d{VMT$m;{=WPYTUjS-LZ$1l0bY3#+!=WNg0^ zJfptkUf#GJO%?kY?t&WY+~^Q0mS~7Mkr(o-r#1pqbdsu8AW5awW4AHL&wR7CQZ5Naht=6BxdO+1@gA9uY`|)rO9Qh4G)$Alk+u<^1lJ%ow%7~6x;4&#*ebTLROENm`W*pI1obxqap`M+JOS}?Mh@1+Ho4NC z!%Q^$CeN+gI6}ASu{aC6IxfsgY~51Uplzg^gJIBMWP!3UAoiMy=b$c~Bo^+aA!xPt z-6sQ=P*GqVutw{iJ~*(=KP=Ybr(%a>xB`hfY?bYNK&1z+ZT|o@TUtVO%r_xw^ngP} zY2~CNt@bAytDSAlXms@4wXAo#yH}RXnoWoz2Plrrp)R&bY4J_R0ON!X}0+f<_=?b@CQw$(H zs@!51b!>gK2jII5qE{&^$@JO9^n93PJsE8)%HnNcwAlHPvA*P3n;w`XtPUY<_{-imf@CVYvv_Ked%{w=_qDIfa8s&Nxgz@Ko<(JNC5TgbBWMAWm&h# z;VCC=JQAOZ*@;woG+8aaTOvwQ;tEy+iB`k{5^Q(A{{W%sfKElna?my3%5WQ|V=i%q zmr{qxr?g*?k>^TWNhwfOwj*=X0Cd2N)>SN+0$RPtJ|)hiaI(89lNG|!;01H!F?Q_X z2@7p$R+DhDKRe;otvPHzF03%x)-Y$a_wdm+9vt|6nJT$G6ZnSgqT=KbK*Xr1#BC0fQZ`viYN;zEaAu5l=krw}_=!elW=hQuOr%r)0Afa`e8Vj< zA;doPfUQbG&=L?4r3eW+jrFK0BEXcIL6o@jS{gcFZ4_g&LAmnao6N7Bsm!#fGnOGn zV_A;3uGv&{l5P#GvYV+SBoV13ZMGRzP|!0ts_Z@4PgVjz<_{->?;-o4(dJ8)hVm*!=Rn+BBHlvE3E z)T#uyt6JAB)0CUu_9xdE5B8VDB!>rzoM3SYCqC_1Mb^*@4da0q`YG9yNSh zD;Y|Z{!`%wSjwCn$jv(8YM)C9NLsEyTdN*tTs=ybN{@4or{5%OZbl0Qmx`tB0g(XF z$R+22&Mfgek2#_aZ{iFI?$u{bTqrEonfy26DYV_f%D}n_QmmVKh!(!rtDaXE_bnzD zOB|yugNeQPu8(+i!nPo{4eH2cDP?7BvccuFReRk{grz3LTnlLj)QjR%UK+1yaOSjK z+&k~0T~|0|l4~_d5+`No6+UvczGO0oikGA$g%Sw>g!EB1?O|bwF|nnWvafy`!7;ee zE|^RxEyRY}SdSbx%Vh$|PL!vj6R@&C?XVp%=2#s!R&KEb5}6Fy!wj)f;(ZH?Z@*A# zs}>LJ#j@H0Sd@UL6oooTzNCj;O@~mSf23jZ$#z)q*;7+e2+Cn%@3scQ6_o6El8zit%~0~KTAL=JE9GcU7a4wI%Lqaw090F8S5&DW zok{LG;%lBVU1nb>Z1yKZw<38SOG&(I@oAVde-`HCOpTu6(y28W%{MY+WR)f3%R^zd zxrIY!(Xc?VQN6FK^m9n!{>ie1M>LZ-wc8VQw!aOTDAFj;wwjZ*mRSt8&|Cc1P)crG zbyo*c!8?(?&Md@$Y*v<*2Zq_hTid}+qU>5+Hzm9@w9{o;g@>201J?RS+~JYFO+FHI<#HlJn3cAV_s3)Ql;;vE9DB`v`E;LY# zQdK;Q*{6-ZN#@QuEj}9jI_D~eLak1AX{RM`smgegCQ@ohTT6{r`5)Cda7Y_db5I1DZ_=I?=%u-T>!Kddu%-c^XU}{QaD%t@zT6DA6 zd2BD#W5KGk^MLAD#Frc{w)RO8&L zdjN(T9%mdg)Gm|dAaiq5u~A&zqr+YYi& z;+uFCps5xGDzO7_F|eUyvl4i(EUs}7+mY2K7GFeJ{LMkdno1@RiZ=sv zn`urd2}_T(l-z10Za*&gm7AJS%lWI!6}cTup-i7CT0mF=z+VSoI^77yNw`E(>Czg| z+S*Fgq+BTm{k!4gOC);^=|@QuY0;3=i{+sNt+JHeLjL~%t~ywn=GnsN(7DVZ!0exV zp`Bcr$)r}+Ty-P{WP@!((L&pw=l8_~)UJb8>eXx>C)a0u(vLOeaZrX)A|F00geW){ zdnlf_>Mg$gx?*)LNCQPdQ$|6z9%&oG{Fy-E_C?FtTC-N9)DZwU$$Dm%gT-#GcG5{7 z_m;Nco$NbJj7HE%HouyntYrCtb8em#*Ycw)Loi#DeTwf)sY$_ab!A`6Cve1 z6qFxCfOl7Z_Qd$>pHR~0f!&}>hhXk&^Bdddjq8+J>rcjn)h?eZn4pkdGZK>1g-QHX zro<=!6a~)L)J_sxGy)CmwNQdiM-Q?}&dN0W(Jkkq)F3$#OXa^YrIJ>GVaZ`YZkybx ze)bpbO^H`^jmZ`KcqFKh(~FOIrS&$Ln6X-c4HS6r8XTl0r4(obt&?kBCl384*QX}<%@Z-CcUGo2VO)dv0>)+ zko?wk!HpHg>5vhug(~B7_P_hz0ivUjyEkb0q@EUrfuan$g*77XJg@@oc9a)y^!)L9 z_Qb$lGqRE1eo6_6&g{lMA5_NiQ^XEM;Vc?`V>9Kv{{U2{Oqwb5;R%??cC9l)+!5m? z_ff6VhMXX539>;dQc|d2#pxb0_J|x*>U=6!9l-KFsP87TTdQT*)qK|)p93*UQsl{v z4N6;afptnlTF4rdhSbUyYynyvBVsX{l6Fes_{kvpuSCO`*y-BF3+calI->A?vzevl z4CN8}e2Q8U2vJcQIeM?R=hN?sIL}#HTYZMhMJRhI1Ffeu2K+~5XXG2z>E?0kGsiSo~`cWO8bCPr7(&ua{;bt1_d+RDkQq zVk2!C3MST7lVS$I3wrei*y^s1#U8R>Pambir;8NKG+f4bfn0hQh+6G-D{_R^r4$(r zfTcPal=_C7ivkZz4=+=Fv4`m!9OsBydmvxIeLL*;s%9D<E7q*9Enkp2NVTqZJ7Z^tKGaTgwLiF7x(9#t2DO9wUH<^dNWX*;koOX@ za%QyK$wDNwl@)~+0Yb?GZsjREe{^rt7;30T>KyQN{NShiL8~sJ$$no240x=U8u*~_ zeXvI?aeWOVUrnpR-xa1?mt!90w{HD1%nPJFgl=I1d=XK z)I0imet7ccVGb>@Ex(P{AeCAL|*lB2q>Z={`$_9qN{jf{2&(KN(& zcN8(lV8n4ELoPN6uu{}cwGnU!a(`QG?Sn;*Wf^jOQw=!cbVjR*r6^M|$!k^BWd!Kk zzT5s@xD?o%-?EU%13(D5g+AnumN6en0k<T=XMbrZU!h{)$FV`0oz(|BTdzsxyG(7l0BCJ)C@s}` zf~#C7b76h=*mpBwbA`dO=H&|_qg0_xOn0b3Y$C-pA0L>~NAr6US;&yCY7)2%nYI*=Q>v2V0n^M&Z-&%)2`K?2f=;qXQ9GmyfG@clby<>X3rg3^aa*W1Y(OC(1NOIEM=Y`Coc&GRx>7RCG)78UizNV|Do8CB>t)9 zp;qN;ZpA1GLXt1jxZmytz3^d#c5@*%p_zyptgKYnWUX$-jIpW#e@}cC z94*9Mrrs(40H|&C+@e~Je_{&O%WPCvE0=VnEh+O7cD;{bhm0-G1m+%BThGtNsx4MbO&|b<+gep{E?m|Hy@Em7!NVb+r=40irR}yfmnk~AxcuYDi;eNq#GOd zDj#!uVj-lLHJm*WSv|nYLQ|q;RtlrCDTL!r?icp89(PRmj1kr{zh`55KGr8>6cxYFad*tWD- zg${)K^xp;j6WwNp-2o4U_!y6@BOaj$j?!*>I^#D5cT0f%*a z)wfVYX%5e95I+SWI}U^Zp@01G9N{kmumMtrCd>AT9*C(`lsU_4Id!EKCg@02&ixho z8{iJ6m7e$?1;U~iT(H{f&84X>s6Ln4^W2_cJ9~mUVnBm1up`hY;@R(WZy(tb)M3P= zBtJ)Vy<>I7<)1zKwtu`YaxcGa@tCc`=NFNK$7QFX#N%lZ$n6qRq}4LJ5n!pP?fL`{L4? zrLr83S^DY>myx3BNgkON7;{2jallKw$J+kUMB7!5bAF%cjYK#LoZQw6EiNF- z*H8l8E-&qhQ$oj_qh%@58-hR%NUX<}=@h8bX42`*#AlMUmt&wfm3dCfJwWTe{Z1fD zhh^5!5Y&DYQKM9@O2huY?Hf};RJmPY9&+aJhV7DNIpv<>5ZQJZq3Hn!PQQ0xNA~kG2LB zGi!TWj-^B^N_yWB9yL-!jjgyu)up1tI|x}yNo3mRZ_67(Y~n{X zuZRNM71O`Mc`d!cWH?aSP<0FZGA+9dix4~Av)6yu6&R~*OS{*XRT3*CYLGr7X|Q7P zUXhv%hS;47jm>FA@X#d4LQ;)ZHd2-nkVv*E<9=Mk6*_3T=$PIY`YqOcKj{2!@f}gi zG%UNs?B$m-3|e}kW_M7goM8;Du#`n8bSwJGM!gAWpjmp{3J6FtS%*5M#q)o|9I@GG7q#^EstCJ;`*(P{v|p6pCULjV4Ic zP>`f;`@_@`h^Fs=hZ_!QwACF|ZeY;kuADs4e;K7_ypzIgs_iE>roAeh^Gv_{RnoaN zw|Pz}y;A8oX)_up(63ZYzL*2C}5;{1b9Q&XPdYZ#LqfozkD>jXU^wtnMXK6jG5X zB#o`|3TpU-snqhX4x%cs%QaOz5gllZ;AIRrR21HTuk8>tkZuk8+W2-MAP&kkT3QhQ z0MeOWE#1DJDXids2dWw6ax;B>m#DdFQ9(;gJE7W(i90M1H6^>;5J(E>JiD0?(}CKT zbFlmUmQ{~@&msX}G%orNx|=zQi%OwV)IM304O&_VQf%0{wd_TQYlG>D9bqo-D@7Fx z85Wv=7Aka@p@7O-VG2kjBVnWtyAIoQ!zFp#lnO}L(V$7p`85t@3hh1^c2kI8xS+#n zT9&)tPM+s(_PDkqR7hPGn=5Ju20#17XcIeU9x-vZI7i{X1JsyQ#{;rz)#uuAF2{>) zD_Cz?L7dFs>pte?*xDgOYqT~X@j z;=b9>$bA(zvw?g`-ORtK{gMlYo)K!9aoF{gWiy*|GF?@wl@+z2t6yl$sYydarIliT z#oHfQK4{`3vQ{|yuNtbv=bU9@9LAqh;#SVQA@J)uQh2Y!YCdG6L#8!4s+SO4lFWmo z1uep~v`SN8l@M>ey^bI|5OlH^J=wJ2x1P^f)=Aa4TGu-Aw~FZcg_&vDq63fR`R!EV zMUd<{FEr{@7=0Tlm63f59l^2RVT%U4OD$bfjLvL;c2273*}|6XLE0i*adVQ|oh_tX zSa-RwH}(9nG2hEzz>tyH zCj@99f`Zw@?_>GN4RTBgCM;)PZq6)_H4Vs47j;dEoHa2ldEaA>EwCbZ*iZ2dL_>SS@96kP?=58EF6=+p8RB3VAedRXN zm(5@{=ah#~wI=5FAquh6V>2^DOI|Jt&SH2;se24>%ant)?l_M$kKz9SgD(#J1In$_ z^4AIS)q1k1hAgU`aW2$q)ikVvrzJ{p!ayWlK>;Z?2^wq@fxycELA8-;Xrf@q=4y1@ zrvoIl6DHN(q|%cL6+HpOa`XTaH3FM}L9pCkt$^PV>xgcnMK27OAS`jvB07f{^6q8M zRNT7Fb%$u|N#;Bobx8TA0VzXaI~5IA>2a{w;ww&<32CJ3B@T9=B=?Sv8|LmO@Di;X zB+@FCjKdP62Bge5&W4?N2rEkTa|%*y9leRQfj8LR;s-VHmOF@49VUWeTP#;LaJ`g% z@D;#{kB1%>W{O^6%=Jp9dYMrZYm($?S|PurDKTOTX;TfMO@IZps5o^1ZfK*5&N-Fb zH9b{3SkrvGZMou?b&fSo;x`R^LMEk{<5b(D8kD90VYZuz3s_50TTrr{(9?Hu)dIe2 zjwL%K2@$_gT`6VsQEJ{NqZ5&+Hu(7R;-)rCfZTkGln@F-W|tYky?{!XY}>ZN{@ApI znPSms>ezbQcPTQPgxsJc@TnK16{*0|fw;I9wg%1h**u->hAwJL zVFE}{*la?3Z)`{;4O)Z)h_ORTp@j1UhP973_JAAx@Xf+w7+GfnWb5$jh_O)r0PKqW zRfm{z?WImA5J$hi^Tu|jn8b6(vcHHjp}A!DlZRi+FxyLW<0*-Bl1AY=lABt}K9)bG zB~w+4X|YrlRH3IM_wQLE!F0(YJgGrRuq?KefJacHur};0NVjhIm~iOc&{$pSv(<4q zj?@Hi6@|d(e9P*T$v=h`1<-vj-xSq&L2jbmlx(m{N#A7mzibWI?MOFk$R0ZSpv#AgYSE%*IGx3) z`97mU$vJuh`P+(>as@js#RYEibn0?khYpl9!%c;{O5AL$0F-W^M4Eg;rQd#|``6e5 z=uY^qqM!c&sup(zr>Uhs!g}8ot8Dd_Sg6w~GN(3&bg)vuAQd%nx`90vxf>nE*wx70 z2q9uX76rN#!uV|CeqG93Vn+unvJ}l9GG^+nIvr9=p)J#=w+aKvVNLgK_hqS|=Vyuq zjAbq|oZSUlV(3X=PbVA25H&OD1 zZ`Qx-x?yiYEU&?fuN)Ae2%{?3hrutBg zD+B>>EKzT{>%KEDgo)23GpAzod4N#gk4Qv+iZ2S|DJV-w<3I$HabuX!Y=0xT?Tzel z+KOxc0A&1%$8=X(2M+JL?b2k1K6z4-Txcof^3-qkY4FmUmnin*3)eDbJ z45+L+h-n}sr3xokvG>CxY)t z)=1xbQQ(Kw5^f5uHJLRg%F8lg+*}7q7ah7159QO}4mH8UL9f9nW|vt-E*_M*Q6Vyr zRGS5C0q92kdw=JEInvDBgj>Nmv5Q>;LGJsh9xN2_&UNT-*RkdRQD-({z2!Bs}O+8LTW)p*2<+DQz_J z%SQGIDk=Uq0}|PU4|Rg&A*cjgp+>0dh~=UvJXhxus0S_J-^-YFjEUz6vLOi2;K!J0OLQ+l_Z&6X(?Hc*A~!e4Nm!Ci?MELHLY zqX_ar{WbmLbU`|n)LwhemY9!g2bSVekU;f23?ar`!)JUGg(hcgn#$&6Qk{uT%ar<_ zVX8Vw2#0i`l9Yv>Yl;9QX(QLTHntr6YA1poHtqnWKw7{3(_KRLoiFo9n7NBP)M~Mz zJ(T3fTY#5Vv<0;V8q_p8=upXOV=o7|1NBN-CdI!`T@unHZ0_W# zFp)x}Qfuj$?b_WSk>Q^;lt4U1(OXGwPQjwVw0O2keKtR z^vYzV1F0xOuB3~bC@oq+zo8zu*)qDF%^BW4N~zTHwc0gR{v6k}y;hM5u=-Y;>S?5< zAX{(%O@Kc4Jvv~Kx)Y$WC^JOhb2tz_2pe!_M_?5~mX)aK`8Hzwq8cLi%+xhC*u$EdGT4s^aD6)d#3b z%4~BROoCq0R-jfDU=Mp9pQqadWlX^6(uVk>;(jQ-ij=or z1DdIy`pq{?Y)&8W_U}X1yva4UVIpH_S~Y7RDLO~_?0SRxVk4_*Ty$wh0)7Nta>4%q zXtIw`r)JLx?$v6p&y@8mFcOs6C}|0o3<8vZEDrZQ$orfgh3s?Pk+$27`L9RlS&+vk zSV7c%R@6Kdp$%|(r);+x4aZiiTmJ6<0PJF>yC}`>rJA91z1;#yU~zWOXJxjjL!K27a1 zDBTodPbGQLAtP}PvLSLA^;@a4SB~q>1W0JiZO0bcRO7)RvQo2usX9~uwZ9OX z_BI$Bhv{Q$c`OG^o?VH^OKfhox%)l9U2zTx2q7f4QV2Hnzt{{~n26Jg&FjFcnU7`= zk*uhu4?_8#MW6fkAcAZ@iqFqG>qG+cL(ja!X3I(zMG4<{Z8&2^9oaO51qr(07c z#l{Ot5(1PE7h-L2KsyWy1~)m*qGGpm8W^pThGQZmNvc>{j+EW7JjVN5`CAs$=3D;& zDcX3f`g? z0*$mJooN7c1E=e3T}Bw@-oT#y6?BfXj#FSf&}K6PsbWJaWm>@it!Gk@oApv}>VJ+o z^F+^h4yoJ_#-wT8>+X|I9wZP+>#m6bS5(9WRmqIq?JQ)MZ`3u*+f`w z2)FXz6!n4-EH9gyu%LX7k*6+-BvUh5DdfjRmW8-c=1$2vZa&=(2O;2AqW0Fv)-1@< ziE+a8g@eAE5|s8<_PD;*!ZC+qx_N&UiBGndwert4_X=0iQdNJZ$9}jYhMH=)<-Pc- zN0`uB7tfHV{K{EX`d;_B>_NBXh_BGKUgqp9)TQqrVZD&|PAPtT28elAs2fcgU zXy?RZExDJgjRMds4lESj$I7#ROjgsI%+j|QX#kxTr(foX(G-M~-aYm^orX4Xk(l3_ z)-d)g7f7E5I&9XsDVnM-OOo_SRb>Xyw@SGxY-vzPKT1f@ZR>nR#sC(uUSo-i;tsIj z6!y>j4Uyt6jSO(oJxx?dvLQfnZ1&PrsI7@$3m_0ybrjhb0FZ7#2Nk$Snp{h$wM@#BsuCrb@lcf)Qb+;BXg;F*8xdkLM_l_b z5?82Dw43GRqrV9=gdQr>WzwTVoGC7n%=Eh*Aqr?%6t2rqy1IdGfRJ_v4yKc=Zg*_6 za!%Gr=$Y>wHcHPIH5oK74q5edOuFu1sV%5cqN3c*4z1&%VIt})y^(Iej0$^$4;z{0 zKFe-PfLeSC2x7i-qgdl^b{YhT@WI3Ep~DQvUCVU5j&jv*r%#8N-IpM(>9d<%qp#;A zCA7!qrD!QFv~Gc5pn8icGi>pJW`nTr=6IEdr-iP3brN09c--3J+<@3}zN%biyt$Wi zEj`*^W2IB-&_$QZlENHLq0?moJ-dDIhQQ`L7PZlb$JL#Rttk;$M0TS#hT@=U09iUf z0?Dx3+w{jaQ1@Jw4mwuEGB8@nKg7w+{{Tm4AWmwX=4lCiNaiIADjO8{1a0}@&S`1U zShc_~i(gGtb^ic}Mx4wT^!K6ECQW(98hIfhEINe%ZVB&m=m1GQ#s>EpACPfW0pbQ3 z9xr7eX_}409sz{YcWeohtP>`n7hY+5MS_mpms|}5a?Q8g zH{jEYyb7u3Ly+m2%AEZnRoYW1o?B1&Q`L7=c)@b9lS-%N+Yb2Mx`Y~uJ^F-z3eTIWi)a+z+HK- z>75g-H3b$^E4jyn)k-#QtIYX%O}w^HmXh1(ZRIeulE6>|1dHr{ynS&xf)_C7km=l~ zVUKfV%HAM^N5MMXH-l8onFfM%P&=KZY z77w2KR+5!l=)T&qqLy2FK1%l`2f6rR5hNNpaOE z1LxDxR|H#YTEhm4pjZN~WRA!ATX!KX$De`B zFr`<}(ps@t0ZBGC1a-tZxx0A^scbHlxtK0*!+jIc;r{@`B`YNcbFUF;$*gfMTKSBy z>bcBNnb-!9o9I)vu~O`8Y?PlVQGGl?x|O1*rE3VbuHvN@aeX42DS+bPEj<^^u{QTV zyVB>-;%FLKM#P_Sp<15tYvLN8!u+3Ihn8zFU}kpZvZg~SCy?sSldZH1okL1cgdIgh z3lV%!VijUNPPbXP+~)w+ZGSCy(L%2dykp9_Uo67l?qtt7qc~^!(UT^%5+pS^@r>zO z+;I`($L2E~n}2TNQrcB;Tqn(n%3$*IAin+f`YW1uGpcMF293$E_}lEd13Kd<2*Ep6~G7!pZZ?*w9 zzMZdsxW}N-#%xH{c?86DU~j5TRcdQyBWZhEiBQ&%E;iNF_qHsU!@wwgYiupJP1nyl z>a?erl=K4j{{TL?l^l2NaY1{4Hdx)LB0EZH$BAT{EjocC({K0F5}Gx!Ly_l#NjFkZ zdD}?VG!68dqke+~03kYCp7ovDlZjgmDMft^h_$x%{{VYo9@N;S*R+nFl%&GuhnP}H zxZkcFlHdy>xM)a8l)CzhS9yzSQ6pF1)20CU+IuB1NdEwM4V0+x;X64a!~Xyavu$nK zhH7SY1&LGKzcJS}6$0W@)QejFgMOFBP{Lz*G4Lwg_=uDFQ=RrUMf`ZH@iQuAnk`R+ znTvb=s$yKl?m-v>;wMOjl^<3^vl5c|ijg_Re5`3S`A)v1+^M~77Ra)JHuGNl z0oSeo>^@ydz0-@u#jKC%bjG7cLux}RkOi!i5H{!t8v*Tre+rnJxTzuS%5v&e=%hyG zJsdihQjucIRzPf>?Wff09X)XIhc%w|r46Cmos=}<*BP@Txx!Zf_zMDoocQ6&NvO+o z88n=S9m1rEbypG!dB7n`Oc7^SbYIG?$|%?Ync~g)_QN`^xE@;$-4Cxpf&P`GXx~&`t58!tTFR6rs%}M}A|wVP z=0DppHMA6zyyBGT2`U20QE|=2;^x?mD_T1*(Q2@F0}#o$1#BCEl0IvI`R-#cu^t*x zTF~+=3!o;&DkKmeN#FU5biD(xmNi z_Qvh38~Er6s4qLr9Mte3K<%M#UsM4OchYLP+{? z=iMn`HH5|q&}py9drv_l&4#ueu1WE_=?B8^5!~@FlxZ(irG;h&(vRAVrB*MEKnbka z`Px{}Zk~!=`Vetpg48m0<$LVmz^^#zS4HNel)1O+&l_#rS2F%8B+{v#D096jVHFmd zsXo$Bl#~6O$6FR7aCIkgKf7#2=?hC|1-u29sPqyyKM8bi(#HP)1z!~DQ22lGrO6AA zDNwvkNsUk_Yy|3bsH1xks3d74YYVRwA-QS^aOJO-%3n^vG*)k#js7L0{>u2O@U?_Q zVXjXa(s^r0DN=@DZs9=oHocEyjl9kxigHi%ACXvIhK9P4!rFhT?XG;Nu`^WHsTppU zmh$`4UWVmTbl0G>C|g<_j@r@@^{vDND&*-=^4U7Psnu_Dy99yXqN{Bjce6*5%`v)c z#K-vxwKB0;Dp9}7^SMYn=|ZlJL|rS>zSbUu+tA4w(e3lmL8+uR?C5y}rgJPg5|bK5 zPOBYHp`f)E*-{dvfpeuGlh}}(llR2Qr=kYHet9UOl2(h{B&9lCHl^-1qmz z$5RP!VEol~NdfHy9W<)CUsG*Dbr1A5Zp8i05=uxNOMIj85S#4bO~4i%fh6@J`*i7T@fhHhjX8pl>WXqV{Pjn1 zBFCKjO;f6Y_KH*-DM>0ywzrr60E+iMm^_eFHK(j*iP6U!z1Jn&4jze`(CtQ2f$rO5 zVQz}QLyF(kIgZq5rGF13Zn3|^MM7|aR&6T@^0%wZHuM&_>%X=L+)69zkm2%;K|-VC zN`l9dLPywct^3=4*pO=ABF9w0Ng?h-23V0wWp31@&RQ&PP*9W+>0#(QlZTp0cZ~o@ zde(39LR&K~+<~ItSP*UL_P!w0Va#aD7XCkUcFA$uD1x_I zfeIAJxqVN~lo-^+jz>3L?ew8TO4Oa~6jBeN-xY17tr|s{NDY7v(Fwa;EY~WqTzahQ z@YIr)*-L;S$5L*UrI3__6TQvP?toKcj&v2|i<4o_!{~+9Mh2XJHcNU=NPR|2U$cZK zTwT^vWi3~+B}(6NZcg^W%*CMRXelG7vAEGK>De}c9LbKRr$&;UwTB9|`r6}d{qYRf zjhrkyf|(TD7-& z%C&NeJO2Q)ny9wXbx2V`aVSwK)DdIlP}ZGakl&;ck4gzA1(KEQrm+v+M^WZT$@p0iB$Md9BoJo{4^vN zZUIRuu_I+)^T8tNRbx%#kd(>#GfM5*ssS%3d-q5zzvOuwk+Ax zX>WJ5ThRsm7>tVqh-W3WJUrS|^fZN7qh6gu)Ps9{ulL00dRqg>ZMIdXqtXM}HwcEW z!KF-X#M78!E5A}!P?fIY``tVD>wI5Fi$LHGZ2a%_;-BJneAGZ<15~{*=pKX&O>lef4w~+!A`5bm~Cg7Exo&BJ61% zN(8txwza_n^K_Dz!@05+qN%jzp(RSw=SsPsa<0C~#Q3pxIk#_X!B@Wxc5I{oiQnP; z(Yv6(@Wohi}vck!;VJ(=FC8dQS8kB(P z(wl8>Fb4jf*pDNiBJF4Asy0d6U{BR@tN#FLHJ2IB-Vvd!IH!@9tFLQN>J36Twyxl4 zC-cM@%za_W-Su9Z&|?0sO#9q@R?U1F^Bds3J(TKN)fOtrHvo=bzkTsZR}ePQdE=jX zoH#8?d}=1Jd_j0_j`icT&PJ^jDJtH|kmwu!U2r;38x)r27o+rK{{ZEUzqCG!NnQ%l z7vm$sV`M0WaWg9<+pqrsHDh$frQl^C?6tU`{{U?#_)p1g@8Ry0uPJ!DtgfDkk`bJx zyA7ulq=h_EvCGxk`qRH%x9yKB_L#;xD8u+GZjDbYb-~g90API9?0ylMK6Pf2;*__X zb(Sg*5ZNk19Z+N+DL35;UiRuYw%3(`v8|+O8~|A^naLyZH?`c>-zphBn!Q&sWkuBD zRBADpZMu{sET!0tzLj$ITXcma8(Vx>!&MX9SU4=))Uq@OJ3xI=q+T1<;#1+NidYew zKy3*@B$NvQYx@8(JV?zhp$MD?n=Ep&eQ63qVgt!pwS#8l+QfgJ1VK9;6U0W^gvjxi zF=wtF&ZK4vMoE{N@|0FfS(TWowMry+9Y|tabSQ*6%W4mo&`4N9g3)~nN{>fMB$VIX zQ877~$l4k#;&~KblXE2xiWz2;o^lRpftqsk)*6u0jX8HBm5YYnX8M?UHX%(o611r* z1t6s2+1N7&xU&*gOMc#{O+uR@D{>xGX;P8}i->h4Nx8j%+qy~G_&hj#-_aoTDm=9j z?)IcSiJ&3mwua%T6J@;ONgeuZM%!U3BAK0;TuAN)=uieb{usZQKxy({sYQBR$WWRC z@YdsNApl=sY^xK}{=V4eRz}b>U*Yu#raS1%dXzP~EZGv-Lu3VWblZCY{wp4Xr%Rko zix{N_#i!6HGU4?Wup{D(;8G+r$y3qf#Yi4>C9)N3?{JaVy|K^5sV{QUd{Y@kRyDY9 zf;i3G5|v(na}H6fHjK=ag&5B%NJQWO0kxC#uhDk3?R~cyEMuyaXN9?4^IH5N^2gYF zvo!n`y}U+cXq-ynCVj{9GU?H@CghWab(l@=5lmHXd>;S~7it3mD0K~qF9}N^N7h^?}XT{1Cif%y9 zQso$iGT|sEP03oewxDb;u(h#RT_$m2tZAbG`UR~69!lP2I+BEu%p_k)Km}buK5d5B z(!4ZU<5WQ64Vn_^hmmHSX$4QIA=M;;oi`UDJ8W%#YZGiet|Ir@DRK)QdZQ@CcjldK z1S~j^5UX!-ea*$TBM-K1lGwECy2#|_*UMT0qpTF(-%;vp2SN|OsKjT25lgfdMlCvo zSg@oi=N!;f6><;wZPZwS`Cun9Lf-49k2Ea^%yZC^LUmt3=r;cVd*UnIZB(le0!Y1qrm~Hj)KX~=&jeDNfxaT(2Y$CXA+80e<2daHe9|4Cwx_T(mWy+Gu z(xnH3rPU>ASUy{M6JkB@h&Yshn-%7`tDM^RowgqZu)Y*#==pcW;%RSJ7@;mjF}Uo$ z`-7GgsUA?PgKg7m?d(SPg+O(6)EsC#EN087J__-SQEGfYhfr@Z)+E+te4RR79)~)8 zHbV((TAY4cDRB{i79npGB}CW|P84hWwt_P&ih7{dhdslyZYNbZc!@5Vn6jJMT4|Fe zRQAX*W4I9N+8MIPe-G-}1itk`YN$1O zJZg(m7=a{*nUd-oVdRve;qGdhP)Px4ASplqPCB)qvn7Zce0K9zm{g3+B+L%{M-BXt z9uTzc2PV)cPv%!LKN$fLY7=VQ+ioD??@YQmTqf>`;k2_1{j^J`xSn68mvNl)~w!8WQ zm6^JqSEp1YrI(~W6#9|^TtY}1jn#5M+pVwpVkA{G&RN;wsBVrbD{dtnWsKv%7BdsFCo1|CgDSJI+6%U-0z15 z5YX2s_4Qzq_|2{JLAY(jFX~Yy*C5wv^H&{^^#1_a?LOnJ3v$!U2H_y6*}l7yuE5m7 z3wPVaT(+f|i=1pu`fjDpS&YVPgyZsKy4@kbP_R~@w~s;zy_3JEPMuEHEq5g&^kPQb zn*y1-R|i?3_<^l)0$lgxMtzj31XTi}g%l+(ty_eR+fI(VDMZ_B3a%!&wo53T9b@5^ zQ1g53^-@1G*XfifW~n*Wc_}~%D^-Gt`cf}zl1LpeLh+PYNvWHwc_UR9c(28(=3B|x zi!;ZgRV%K=ZE{xvBVlTFB`VTMDo6+fYEf2^q$rEp_HEzN6NZ_6#c<#=tt%2{R_d5BYV_^4N! zR42C6 zPZc(p#zuq-k#Kbf2_1pP-=fZlHbWKiopsa3%g%kPnIw`P&71%Pcc&LAqDs-6TzzR% z&Q+gv&{J>}qjUG`k3qv^xYc-_Z(*Qpi)-=T4Yj7q`heQ~hfG~C1KJ9<;m@$!!8TGQ zEedokr6qjLfc@T<2Ho)~jnd;($I30)MK3<5*7Ax_7H*YZ#@E|#d`OL#7bj4oIl#L> zh-0K9n4N1HmGmpOTsRBqWyIT6j$+i6FzG8uNb-wX`*gMn=l~jNWHBMx3wXTrW{RFD zKpve&1AR3pvJ;>vBzKY|!_-uN5Lq|1zW5o^*DHu_QnnT0V>o3Dh2VF9JV4Kt*tALu zSwabM(#oH4#gedwT4AtO^UEVjT1C{O+Q5-tRRugT8K=>xlT*(%Pg4tSO@JOs7V#e@ zRXkJY>NR7Gv`WnbgcSLWRx;NM;m2b`t7M*CLbkLGE6%s@_gaRp) zq&@gDV*z`6Q>Me8%kZ@AOiKgLGP54zA->jLi0AuO)4@ z5&FuTyeCNg@`R)pmTq;C+ySS&oGw^uBkL*MayK7UUx|s?*pp-Arh631G)9!UjsTRK zTbL4`()Pu>T`>LC7gWn$=?`1|gBnUdXTJ@#ERm$$NgHfHNZY4-C({osc^c@Wxq-R_ zmwmB0(=Ex1kO$#}Hy-Ft{dV5{I$}KZppGQ?r!nN*Uds6J79A1YW=fWzw4q33r(Wu? z1e<}RB;MA&{@4R!me#h316yv^pPbYVukkyHULi9MVc~Ct`7F>fWMa5kyNd`)AB_RR z>YH*64J!%~=OiLVr-(`;sI;MdK$(og+S@u)ejt7OzG%@gtN^{c>^b=IA3o(O_*LP* zCGe*xF_CgEQF@7&LxMw#a(j|w%zu`K%$YB!>wZB)O{BQJ$VeLjY(|!hO6>A$e@`Hr zJg;|Y_rK@CNLYCmmZmj4+8hepqyQ6t*9B!e8KKcJl;yz{)v`=xP?g4oDs!ZO5W@vT zZ?^jYKRi6Oq-pd_>Yb?8%Ur%Hd^yd}neLsKCuV*l@cyq7kjoVLG#cyF_u{0!@|1L? zT&Hy?q?EXYSfp6?#V#WqtN;WaU?1IRa0-bbFEO}}OCJza@bGDsb1e_S?tjX8uRm6} zi&2VXUkN{4z+~G0IUGPx6gRa4P z7eFc9HAhtAcC-(#1-~x_`J%s&GA2#TIewzHYNh7nM|FJ^g(adIDLW;-DAR71EB43B z^>qe0n)r>J4e#c@gLE0`Wo*sN(g?TPy=vFR{3ibZ^ux|B%!vd9<|#3qeZ3_TP-nhS zl@$4Pgsmk)_XL~ok4MBRUzxpWxZPxW8Al)J9wN|@imgr zR^oRmPExClUf1;Y$E@HE4U7x_073bM=TVdT=G<%A`Gj}yHDaeP#QiifVkrni?OR=) zNeL<%5#1ImC(xxnxPe(4KT_MBH2k_ROx*9$*l%>tc+o?Qd|0v+m8hlh#rVa-Q>5$t zw92pTu^*;2u>tydK-($#6^Q6TEvI)de(SS}w+QoXe>>(1)@;m_{Pd@$IH<8ELqky` zwaoIZQGr)6)cI^~6L1I#B;U;8!>5jJ4fUZU zUr_{J$8ZMNvV#GBTgjpELUm_vK&}xOVX-N71{U%Uoy8SuS-r2NHnBIgfVIvG78@*H z?3!{YFL1rfP_~_`IDZ0LB}eFMlCEO9j;6q$VT(xH7#*jNB7p0XLtAtvJw`-C>8REz zP^RigSVM^lxxI&5ormx^klOZxk~b2R)BgZdfCyumf|$dhxixBwu9Yb^WtSG4j>LqK zbJ$;g*TNiHX1H9W{Um%)%5`&;+=rZ($x0M%g`uZO^d4QqhW`Lb=uNP8x&|OH471oM?Cih*6LB7Q|zt|Cm$x{=>+V>BNYhY+Srnl?z zLT6DjjM9WTN^Om2Wvbf2-=IBDdtas|Qr0=5-DYnc6iSRbC!2W|sW)J95P<)`J*x`}?0XrR!>4=in z%F$;w{#R2ONZt;zQPVh8SEw|J>6;QLBIyz(tD!q?K(}6o*n=h`5%<~$l9tRSrP{aV zj4K>E;teu2>GejL(h2fNYyv;T6ou{iVbC^`OX#Y)UzR0n`fxAI}lp zMDwuGO^wYO6R+oTI%W+y&-=L!yzl`@DY}Rqi1Zif?})#{vv5;Hjo?zgpFnXDM0j!K zL5fq+4QVO+dLMi?Og7u8EO5#L0xhj&>XUJnnB2EeuRDr$o?!rf>QYowto^O+d{@-M z=GZXkxWY*{7r%;c8-{6bzN&2oKyvzvQQ1lXC$8H7d+vK2M#~}8Ht0=kZ79Z0W2nau zHyuufKvR-kbd`w0zyOr=7x&n8vDJbx(`Xx_CTkl6J~Jt)vle8Ul}WU;N|()WHig_; z%SuI*E^am!JNn}CiYJ5G1bL{F!sl4DeLjejFhvfvEtX@@DKzpgKv zLosL}$JJESM!-$jJrsA%bXv7iLv>nBF_g(|09p9qDVL<&Axahr{o$`=CsE&XiE!Za zXU^hv;tHmyowm3EC*;Md(j%%wsEk66t1Z@pp-4gMS9Jrc(|ZlCbBo4d`9O4r-TQo1 zbE=$f&@|<`MNZ-cJ{+@8n(TQ^l#41fa-AwCZ^XG4w_6Z7#pH2cDw2IUW?FowA0Aujz2}U-v$)+WN>B^ zY9$BdV}z*Q$^0Q=PvlNBl~=aB&9c_n2uMIkNh(-TP_~e(osQPGOnEo7;?WCl$zOCt zyZD1G{gHLiufcvZU((upscfm46xx7TNWldv`1p`Vt>$hMkYf zZ%Mj{*;XWNZ{z8=>lhAx;~B2h@3;Z+lwZ@H%Rt8;Cbm7}YLv*7qn!#9s~dM)R#l zi+l{s3E__yB!#Y~+?6fL9%(_cl$xYa+sWps#@S!Zw1FWy6g3`UBI=(NZ}hv>XWd0( zl($X?kCFOq#UgT77~RbIiM|wZ6DZ2zXB`-b)VVo+YntNJyvst|qs-gq+0@dO0swU_ zt)(pq)r*E#0!gsZR!v4TW(3&!{8ElZArDJ^iGdACE~EfOl99f_M&z50`{Kp8gY9+; z_!U_-6A2)jB^-Q-0((Uce1hW_ETq0av>u|{b_aggua_Q_Ya~}ij|A-6C)pqW06{5i z6ojp~#E=pieL$6L0o)PR*n)BRZ)d`#w+oa281w~-D}~7kr@K&ew6c<RIRzE=lQu z;uUyoOfPN?m%Cp%f+VZgPJWBTZdRAfd1@1QkbIkGsmyYQEm%;fN z(wCR%)vhBP`Neoq-;Y<8%)skx&S-}d%6T?YREwt9^9392s@Sc>*yqY+rZyw!nMYXm zHze(|UBcWCFt+32kB>F%#&YKjxV*Tk&YoCQx~s>QD=V-FY0?NnW%dW7#M@=;t@lN- z>1r4mJAioZ8u_m@=}rd~JM+Lh9JzhepyTFQ%(;JrTtur&%TuDnZU|}RzLMAhZnoF& zbvIZR9rm_0(^SOfkX^5mq@t#gvWGRKk2R{cR2nF0FUW0>f>xI90U%f&x3$&R2;%JO zTODomx)~iy)i@|9hTGJnsGB;ATo8NycwtJs+ii$%YB?l2*GMep(ps!3@X{LQvl~$oxMMF$t+GwMyJ50fEh#N{%(RQf__AcvYEM=W7zySC-o<4K1Pgi_ z_r+se8!)ict=<|;Rs))QB4T{%Lyk^yO{qTj95bjpMpFwV9!0`Y#K!6dbKYj+x@G zIoQ838HN(m9Fy|takTS8!DvPG0rlIb+XFsVlEVg6p>@MOK*tNH1(NT!CeUP^? ze~~Cvip*B2)j4aJu=1X8v^1fxN0lk`1HZWGiSa_*qWl$0XONQ6EKd&P=jR>}WNh(8 zH0<|58HxfHhq-P^ag>#f{K;)d)Cuc*>f9cKJG#4UEHT|7>Gb#z3=s8^y5t+$$A~%~9vUqs zDKqM6TUOF8z#4CThq`<%rIel(Y^6yi;Xvc&`cG+CkgR)PkE{Kt*U)#W+&>Sbri4j30mEb8+&5iV z&&!p^Crf?W+UKX{7tte1e8+nm41I4F9ZWPJEIXf3x%n*lKO?hT&Utz~w7*+KNojpe zw(^==F4*XJl;bpoq1*fR}K=yga@W4iREw;nnbq%FmA(xN(mKhFS?OB8r=aZp-EX(2%Id;;Ut_QUdu`Br?C`{W>{%^lqk`|=%m1GNV!+Ck-MNo7hcCr#9K z9g3CePS?H_(pZ7IuX8i7wCHc4Pu&6$i?dXU@gyyHreF|XQ+vD7CTQQY<4)ovRMVMC8?QWtBsM{Az#Ce_ zd}=V}xCMi%b4waGxhRIa9+4r$fXsB2B&x>Xiw*I5#}!&ewmK$ibUI?*Skezsa&4&l z?}-g3WCI&X)fA?mOmsh~go_ZLuGSs9?TJh-8zulZZ|s0O3Xs-?D6rr?QrfSlrpMC@ z)*JVxi1gJHRAE!(DTdf!j^rJz2V4;5u>}Z6atKx!kd)d&Q?FxltnG;ALv0j}uIE%D zo0S}_y78vQlJ6}SDoS+(m2987ly(4aPAhRtRw_tLvseJ7QQ^+0kVh8lU|c8ghnaF` z1o%UfGc9&ZHz@QE+0Z0RLuF7dyZ=BUMs7B+N{Hn@MR&<~EQ1d2#$P>o|ohwGjtVyS6tL8u%|Pbw5)s zO2L#J0Xun~9%);a_+v_PW9zBq$aM;F0mddJ(WXL9_9;f>4XnLe-=^0%XJQp`?kuk3 z!QnR#x(S@JR}Avy8l_##m3a9cfd!E4%8a*Ci1CtC5)|UrN!?0HQUE1NP)G_=fWcs| zsV3)JroRe?+8Zb+t_J518*vzUsX4QQ{tVP~d(^$ysAB82yLKjf!}+QZcWX}7_KLF6lY+~(1!(OV}})(Yg*}Rr%8#X$~rCOKB)=V z;>IkFZszI)v~P^;o7$9GMGe+eqs83!AP;`)EpS$rJRxqpiS(fmmO-2RC7#aJrM^*EvD2p-=mI^bJxFYXK{E) zEehU&?RE6k6>%SmnTvrx4Q@SgJBQSW^=$N}DiA46I00o6TyV079t4lWXgcD^*s94* z#qOU!t;A!Zl+P(G1hialWBJ~_KMBGGY;2|+Z=%*m4|6_c&73dEdCQ3udRuwX+B{iR z0}(0Yrde!j44*Q&WRq?B9BeR*L6tFettHLiO|NB(=?)tmB}?OoSPmDz$4jjzc&&ai zCUE8F*(4d&!i5cvo^vMG>)kgS3ytq=8>B?KAUG{Yv%z^}B-q#~i{WdI3v!DWDpcPh znzqAnopD-AP9%bo3G2SzmN@Y2cMi(_urGbW>cg4Tylc%f9w)O)*|Ur^%4=C$Dlapd z{Hpu)h^zxqs47}wxFS8il}BXL-&0BYlBuunx>7wBuMjg)MFC(p7r!3`g}^CWO(fE^ zkXmhP=x%o*Bs@hzs8oCi_>8PQBrzI4h^(OsLkn<~J1N|?RzGd*+WCa!d<&yN{{Yf+D@kP&Tb7E$@YLXF2Dgf`M!Vl#^zCbD z1AFX2DR7;k;`g`JOX)np@b+E7FdjXk1pHZY<82ot6!Dq1LKH2o)uuqO{H=Uz>7=|8 zW&X+ftT#geF};rG_g_Z{c^@g$>N6nz$7V}WraD?}w$!6=r6g+!HYVP;9X|N;sU1*V zX6O~jpr>iqbbC*s#d>7KNu$!DN4i%Tl(eRopa3;ERI3}PDA_3j*6Y_1TU{d^eB=~% zVQ{=yMvW!pDo4wyKP63q((bK6EsGPmwy|P+-xC>&xN7M=P~^ZG?#PWK8{tI)QsuoA zR;50&7SqX+l(vNd&;*`@_1JpiOEIUv+zmb;s6Xz@8smJx`B@~Y+!m@#Vbr*|CDN3( zo_@05xdbGTNjB@NruZy%F=o5t1HnX>2a{%KclhYC3MELhRD;TO`JQLYYt)i(LmbyY3Q65(xjim$L z$^f6f!=?r+9T?EtxlLpd$SfOwByh%DrPiHEdR!Onx|13*N^j^~BE#~r!5z{EwYClO z)ivE7jqbh2k~17EqH=n}eZRYQ>>FI~h(l&7X`Jj%Cf$xwOR`R}Eg&oOAj|pInh+0$I*ZB0qVCgmN z&~l=G0ATG}>lByi&>2(86)7=+E$L=5-3U-NI)Xgg9=mPnf=gd3z0e9PDWhiYutZU- zRQF=cewP-ZRVZ_p$YG+jB}Z~j@I{kou_(;C`;wtN?TV7pw%`6#3!dKifANPq zMr-7`*kBv{?24iYm1Hhc2+Rm=HYAuUXGz;{#NYk(+W3_nZ1&skgZe1k?H%Zq@fda_ zU+S$oxwa%FZVRv7K_gYZ*p_O`{pOEEXlUBaTH}8twxP$7A%@LElG}s=w6gheDchjb z5=YqI0(4M1_xmZaGE3|8x>mLFthkopt)l8i#AFF#!(8UQZrA6gb z0$1f6sRRH$M#K5wGGP%rXV~|t0=8E0(GtHyXPA|w%5|_b^4xn+C)VoT{jdXpTWb=z z)$Tk^k#m%qTAbxL@=~*KhR{?^?d*5J--OC_AS8~Vt=Yv9)wpMs>(4`Wxdts|xN8qG z#PA$!x&Z-YDjG_LrEYyrBvWCbhWZ2HbdyM4Ev>m;*GH{WkosC`I^*(5wUCc5eUf@x zZ%){m`e4JE#^@Q1vb0z%?&Y%K4?vXT4yM;ju)?}_xZ4Z-MVf-$d{E5;uXd5>Qh8Z+ zWX4{4rxJ-Sq6j6hO4I=#NKgSPK9>Wo0C6~3+0`;!CP$070-JotLUrhp6*7+nF#~>h zt7}<5b!-o%tVh4C%{C<)MTz@-RW()|4ajfjl85=mlRd}8s!mX&rI4as*C4X{fN!V( zkQSf@+uGLLb;Z1N(YR*oa+AyUS;@n;5$62w38t@R+{s3!KTl3wiIpWO#40qo?!6*A z$Rrh&Eumn$YPHW>Y;kQzhq&0bVnF0S3ahJ}4ILJ};@58YH&mZ0hlA;2C;@(jv{WhycIM>?xEoLAOQ2TN}B{+N(%Z*UsHyEKV zJoP(J&GS_HlMI&2A(qq!JdGN!tZ2Q!R-!s%%6+4d8y;<}RkufOD#laV0DRX^9|LG_ z%x@-D;;rdOYL`_K6yi`7%5o$y+SGofrvxu-B1qBv&LGK7;Wuw%iw>Fv^(ol06YMU~9wkT`KfsAe3&$)?lcG^IS_kCLrj zkkWs7YC8m^T;LVBgP~!O_6lVVAJ@nuX6sqpO3j(O#T|MzeybW)2Zwa`zx5>{gU6g_WE$SxF=iai5@V&b#tg75Qz{#2R`tvL{53PJvr_z=?6$ z`Ic0EX-53;lr+6A035hLQCHQC6fj2jf=!BnPgv-hKpBOKi>jo)i0!#8ri7$`lAz_v z!Rv5)d*fFmfVe6a$A0BwG|7bB^sQD-$qF7pw&StB-)uZM3xH58>u3-e(V2c%;gq(9 z6dFQGw{aba_rCVq2qZoTu3;7z*-{lbx0xiMttwG1=}}6;&ekKXi3jw;NhQ2f8q>rh zcrnCv%0gE1W~3GhkSsM`BV8MM__j6?)6k3wo68?w1d*Ps{bh z5a(v@N6ltiifw99o0U&-g{2ylf|~=l+Q$Kv`d;X??iT^eNnCV@<54RFt)rz6xw@}# zkiD(xdkf;Ko#U(*Tgp;Fx02N*Si2-s6c`PwmQpwLJu$tcvomYOXiRQ)mR&V`8Rg78 z7+o>+DZ~lWok1!mLN%lW*z5($kJ#d$84PjE-NN(CS%tOk7S_Y$rhgXWu&y*w;>(FD zd}YUu*CsMGJf~EmP!cygn;kZ~wiu_RYniAPQtz)spINh6BcR;yL6 zBBaz>h=C?N#5(JnCSp`nl_U{llq$p8EDN;j*<3Uxx2KNN*x8DS)%xuQ$P$_0>TIrr_KAp+e;GRG^ej|07 zvST@3lrN#8lGHZrEZcf~yMPLcc2PSETNZ7MM%;r_#Hxx~b2OcE#hbu#?>*?-iJUcF zZLiXEB`&otiC2W#YzEs(ktww+bT0dWYxMsBt|K-M)^VcH;yI*%MBNC~CDv4kztPI_BhRqwLhDyoun1=MaojNpmj$JEg-3uusT}$ecvMzq$4S_f@Ia!ga1tT3S zy=fi_KT`8t+6Hya8CF|$I=mQj)M7dlt+Y3ALXfZq+DQcpI)NR=A;T#x0FAh#;xV=w zk`BZJWWQe&DHF3bA1Wo+6IYVpZY)5`lDR3kO5R1y!)d*VBd8!>YzVUM=DM<^HXEG> z%<>91{B8JunDeK@2gIdEA?9YXe-N^rEu7g!sIB%|X_unD*m({q^r;#gWp5+QI_TVD zvlXDFtc{|sJnRk^8tN}&Yiq@9`YTJF=9R+zV_Z4wVp@EN3yVL755;da@S`vB4~?8- z$n<>qLd((23d@ibDYD*-5QzwVg{doSJ_>X#76@1=`c1Lq{UzviH%IZvp~Dzn+O0B^ zt4;K^_;bDf3kgOaQ#)al+aSI7<_+!PpONDwzf5{l z@p&6yNb(53pp5F!NbgFH3$sdB7BjM6Ttg;3CY+eemF|QoPnQ-G>3t&pwjP+Uq^xwT z%;jx`#MoOQZ!zek25*N)th++}uEM26rpgsK%?E6f@=&BD$CJ>d1;U_{`@ts0*qu)e z&A23+}Qg5vqMzv@cD(Ia;+Ku*WGhXc)D9o3vyB)YXebeQX zphSRV|cA zY>4vW+`CVFrpbAtt9gd4(oK{ulh)vkbBWY;RVFutiQ=$zo(_a?J{)`$NbuX?YMJ4> zt6O$eeca)mDkUt-syxb?A}dEy8cI~P=-*LQ$+_uZk%3JNQHwKVYz6YL5haP^%j2q@ z%guC-M0BR6%24o9(2#Ca6V||PdLDw-2Yfa+6QZ_~U=O@COy?4~Ta~!?maCahHOs9v zmL-I;^RQMUNJ$F|7Fv>_s1)3JNa_ywlq50k6%9@l%Flh)*N5(x{6FFDL*TARr10a1 z)M!+SJVunHM{Ttg%W&8&_guG`)!OP>jn6;;77t*!y0Mw9jh$OvJcSY1u935fD@1znEl6L|mvhSGd!9tpHGQ`b% z59N~!!)))Id{A)XGI2_aBB#RMA3@8~Uy~|q7m+fw3nZ#6Xzv!CX@Z9uXv}pZm>fcz zO48-TYFOM|XSCf;kQO_v4jDy(@7KF;HM%GZN9;;hEo6ZmpgVuvjj=lYn=Lg_E|8VX zXN`U+WUP&xd~3S?YRma{YjNulj7pQqXwHz~c{XJWBb-ZzVw>BghA{Z-4*nq5xR5gW zD(o`u!enefJGMs)jZ}B=&6u32=lthQb?=vEn@XofDr}`8141?ggJmTxr*m=B-w&l@ zi;d2fQE@`dqbSzsOe!-`YCKI!!1`~ECK@y)VQR)!i=9C! zr_7Oya+`g!*-e+_QpS^U(1H14?UD;B&ji)Tkx+*6Qkc-X+-yCuBwF?b4>-4IA_m>Z^8Q^+C{e*ltD5{kma#v6|ONWd~q`&8y1!y$#3G zqBh);e*56kx4y}-xVuX!o8hy;=Nr63e4S>Um)y(zI@FNmdUHjlULDgJD&6z`B!ZFa z+Z8y4ba1x&p5oQ6>cL})s(nxPhzJbS3#HAqyu82zKKZa zTs8xs1mi_LTO)0oxLIchNK2eFM_E6G(K6&X(!XcPn_6|WnNnl+oX75`(&SxH0SN zA)3T!M#WiBGJ0p`ZpU%J{``~w0O9wLwc*={JbBD?ZYg-VqS5HNW(4s+D)5#(l}@KpN)og)I=JTWJPW^}fgYg2c! zmf{jFn_J7h@3KbX*82=Yb$qwE9|dM8;sVGb*rK_2W1&sBN0^1${<{sZL0dWBB2J8YE}q?befPy4D)`IV zV?C8W4`hQoUMxblFf~Z3d_6dl)YK|mVIH$&Ac18m{UYbkY_DUF73tt?u)U4pW$XPG ze^S;-#I0IV7^fp3W!hSuN*F|ThLpQtln#SeZkXM4DiARC2ObL#(%GKs=ez}{FB){( zOL+@`b>ff zg~mgdamC0w(t~0zrNW{K0>N6gBO1z@F1CU&-J7cOoHrHfYi7@`Ywn-=%$%oR@U`MM zg^uv|iCjg@HGVfzvn)9IcAS^u$E88bl_-)_>-^Lur&8qB6oPlqRG@FRHaJ|Z>WoaV zAPr92{%~1(>DwEdBc!vgbg|c4-#~pmRv&_WN={Poi<9_GSj*Y%y0nUvs;AG+rYbWe zvcj8jy?n)_ldvQbHEq;i5pgUz-I>}(UgNLHPOQWuniFRMrr+u`QOn{mnNYqfl(_1e zvn`%2r~1K2Q41A@y!uC9?_0U)jSd(80NcEdUv-=4kGmk_b@aB#cWSPdi3ev7`I}Vc3UkM=q&4!K<+}sMv}CqJZGOLZJcQ6?{j_okJMmt)J1!| zH93^;zhtXMo&gAxn;)W($iH0rftoSyaY;akiJtJEcLhV`V1Y4*kbMa2C-p{{UC2 zbd_X#<8DgErbC6Pz-kVu!cE?JPFSB!MCl&e3^}-9Y3!ex59?SpI;P7#)?my?WK|>= z8d_EwKqP7e6p|7~;QEn?^!O=p)cUHdLlbLuHu;kQE zxhDPZx#^2$&=|W>y2qH=W~Qucq_yJwxu)`dT&`w^S5StWpH@Ro^3bN+H*DI<3SXFQ z{lUMkE-2=ccgdT`1xZ&-Gib|srwc1(Ax=n3?7G=bkU31~N%y$F@wOJGrf2(%7VjYa zl0gJ*zH8ima!(`(@KQe#46=4nTGm!i+WorYJ5xnc{Y8N8(P-e70ClUAy9*Y(7wR)m+oh7#*78J?832s$)**EXvFz zJ8z$erUB5f;uKaCQ{~WlUgTe|TWorWVUuRF0V&c{GS_hyN!e(mPvs=O%8C{oNLv8e zLu=TLwkL6mHek~2BMDW{s)^c%1XlHFFp^PCOEMc>)o7t3m`UtO2`8yPo-U~HIYzcV zf9jx3h(cek>xldJQ8-^+Z zF-WtCDi^@rM;o*Z-7o57*~dgpD=y4=8ri5VDa%JnAx-SAOC5gQ`5qT5{`@~QGmoY=4&P&T^KFK@UQbaVuJrpU56hgS=t`84`6 zQ>mAuwn9oqgR8FQHyBw!MvhF!NkW1(3|1xdAr zn~}GCGxSHq_Yb<`A?0s0XkQMH=^-AJh?Rc~(j--oxK+*pO-u z5IroL3LaM!-EVb~ZPa3^3JD8O)1^x5{$u#zzo%>VD2tUKKB+N2wGnY0`Iw0LV|_zg$O-Av z*T3JddVTO{=8VU zY0Yu>{{U$>AkwlgiJuHGX-qWVJBQCsanRBmRE2)pl-N?rK)U|`4##f7*wbM+yQ-Sv z;!TJe_$?Pl=vz+<+R!yTJQn8s55f;{Fs(~SNoFtvj)#+cR^kt_3(jdHbDVEwq3?`i zY(?>9m6FA--w0>9U~CQMOaPzC*jgvv7k`L-7olKG%TCe#^`Z_JXH3t-4C9n|rNipn zjJw2~xmbr=p-*TwwLqC2)H=)QLy1xpq^${13I!(HgN;EFZ36P_ceRSUmEH4QAG*>UVGBY) zSOG+7+z>bZU&j+#^sZ>wAkG9SA@rmZ^#N_~-u~O+-DbKZ>cK%XEVVG^*#g9=F4rPU3YssLzd{+=SS?+s0GT<|0D1ET>l}YS3;h zYzlOcN=?DNx9hxyP=Ym3rJ2C~$}`kFJ7%s9Nvr3N3NA#Ty(!aBtZ?$CTTWlhu8=i2 z%KWOPO;|z_A8lNLzP7hFF{cd{Kwu+OXO(ANYoD}ro{{RUx z=0c#gL7>xFjKC%5-+JnHTgv*~bnH~MdiK}=00SCBhY$lB?y5+gcbOzNapIQdn7HBP zA@n?}5o;uA9)kY>=YSkF+YOYVRNfk>i^q=)N#bQuocoj1iXRi0X{KB&P)vICWPK5( zj)6(J<-OGxDK|l|fmMS%JFSo2efyXM9YK~mYbXoaBGr?Mz zl@3Y^aw52!jS2^Ga4rtvK->}tIE4hk*ACnxRKi*XlUD4>lqpWds*vh0_zs0^l#PJW zdX32TKb9}4r?r}OP$!6R(4*EWPqrRYdX~2VD0Ew|eZb#t$JAon4K!7`oHZJvS7$c3 zDrpTkneCFdHc1N|hWmkkOPnri0dR+A+@31;Do%yA=7`E;Kv2}-)NC)L+o$h)bi*85 zn{;6*EwKoDbCz0sLR-#F1ZWy`mXE0I>OF6Wk~H5HeEV=79zd>00yfvox82MG^Lj;4S>F+lYdidA47_)WC5Tn&2bkKh&-MEEwAJV z)b#l0;Ip+E3{&En5SAQYETQN1tq5(vvIU4L8;}Xp>59BI`Q2n3ZpNK~&EmS$$a&s@ zLZ(t0p8VJ`om!egBCrtBAJ!6<)Ucwa%7@Yqm&&x<9f{|gv)LCbQHQh!_Krc|oT-Qp zL!F%^M_11{+4)PQMQ9}HNJ4FNl0rp?TZ8wESm@bd?-ijgj-lY6ai5n=Zb{)rTY+2u z0E(PagHOrxs?{{JOQuLcQ*os)QA^Sgp=7v7Bn51MMeIlk91UayXCpg~o!`2wl9|=7 zbbt{HH{qMS_i|4R9FU4eey`T1suY;cMq)DwDf7m3Yx#gvZ7D+3P;5JuY&(^*7Ur?t z9;%2r%+OiCn?}kS6$8{-<4bUrGs5Im13U#F=Lg1ATDEHiA zNswi+PkV1-5I@^+(<9D<@w{H7uSME-I^WG1s}NY#bso!9MVxCDrY)9#OYj;$(33P0N1K-|VsQJ=OB{(tpAm3tIjD9F(QZm6#cS zFS${k<8a~tH7#W+N(t;rh!^|yz-IxWY_RBap32dv@sW@YXw6mFZ%&C?W^9^prlr(6 z)kKmTNKn~9z!H@r*RqbA8{!Y@00E8M@Kl(lM%6j*HfwnE3V(1%Bj-wfBLSLRgtvDc%8L_SS(ZWrV{f`Rp7Y|6-xuB} z@b8Bo41XD!gNYI0)H1A`l>Hdf-jG-|H)OigC}At=m8h#_4aJGTaSpUo^0DLgRBQk+7b5$b&Oza1;oQ*zo= zqM{S2N>L`=?}~gcp%0H3{x68t8Rc%kv`3L_pIKC{EpcwJDA`tzQKDq0 zloYDtjjgEi8@}$BNCnI818wTRas|#T9_b&THXPKr;B=0&nm`;sK1xl%;axu?<oSvd))Qk=E7#19N+lJKPPiE}6C#1roi5jk|@%D=Tsuo6I6qYCR=%=xI76 zNeDAJYjxHV zwwZCqIf*16C~sf_h)^DGm$@d`Sx%rPQbyv(IB(^uF3U8T&s1usH&^4=)?^11mXHwG z2IaWu?ptUJ73@}^rC199X0R|^E~jaA`oJy|nI#3|<722n}DtLRB4*h5`LX+mrCJ z)4@*AbF$&bTif%?isU)(GzT>EHK}(GxETfgwFIiTF zkdex5CvPq!Im~QjtlXujsFl@mwoR@t!1r)l7o{|oGW9L8rySD4E~OHsD1_LOPkafZ zvbEJ`wpS^i5@$GfMB|4WsTpG=Q!_6UB)w6nOLAL~+Dvt=*MeS4iwRYdQf^eSqsy|c zFN*0kT%W0IQ8+c$*5dkiD!z?ju?Xay(YfpnJ85Izs%tzYLZ`QxGwjq^NRc%GNhu(v z;i3{r7d9){pHqg?X_!cUiY_f+7#cbGBWZ7>R5+nfGLo)kYyb)U@=8YiN{*k;8eAEr z%qIFQW+Di&J6$wco0b-ZxZnzAx=ys+`~xOF8JyOL4?Hl&ivdM(~*Da8;MoYN)K3IfvHDlZKPc~jv`gei zzb>4eHZ}+&Z%wX$EJ_$8XKR!LR&8@@>QUDb9 z-%^2MVjd+4jVsgIUCzEoYBK@A9f=&T zbuDx5N2yI@Rx*0yiA6lg5Y{eKo&3#jV6Bgrp|!=g#*R!r3WJ>J?(RM+ilEH~j2CYa z#CUy^ER4CBWVB1HuT`w1xDb+0>wDsb@>9m**BcOs$mV#?1;JRF$yK)!wY@Lo$-RJ1 zui`IZfE-RC?&^v#*@(F|@j+9=l&ZnWjiopK&4Z%n*4F#svSKYGZ4gEd^T*Lzju_IK zZ2a^SQ6j|(lceb*p|}A4cfKMVVcRrVDQv-;Zr-S_xk{pCi1I3vAxsegM>H|#x=91d zl_(4E)BgZGBy|!$TPI0L9766k9;yZSqTn85;=N{map1oZ@*9r+&1Ng~8q-oKj$NQ^ z<5JWX!nJBUD7FFp>`(nPG5{ncq<3h26-{M4%yE*OHSHr{>o|E30rg1igO+L|;mx0@ znc;}^n*3%nJbIW5OP?;ZR9`}Zib+WzHjoIoHUwW7ylV_>hDgZRZnUx1mQqD4Z>_h{ zb9v%p#A-Mf!yLOmEoG-OQsch~nStik&{R_D+i~;&E*1+(Au1MDzJ}H|eG-N#Dcc?F zN9MegTG*X6VQiWM^H6`pbyBULaxV&L)QWr4o}fROBuxN=^Cog?#-v$!9F}5OBMP*8uE=ooXpBu%`9`*^1<7sU)+oQ6AUgl%CFlr zjctRE&1H)=R1k)h%^|b^9gy%+)%QD->%IoeJ^`p6iNC~U8lQ?OlU;eq@t=BhhnhiA zOF$t_l0~m@kV1vcx9@}h011KJs}u+0551a4g^}WOTZI~$4{9CkH^a^w3Gq&DF(&A; zMs$+cN|}mQ_fQm#$@V(|j&>N`iLmfMIN96_q~zSeRjAmwms9l>Sq9_KZP)lpGAmRZ)~cKV4RZGEnN4}GwPfrs5T9yUPhj-=aEHiuD{RFvcf^8RgY(n#kz+YL5$ z?PpeOHr$T*8=V6Mi-)bsbY@4pC~5St^-dcZefl(aWURcHs3TGmj%h(8bU-$~;}9mP zrI6?~Rxr^|8*c5rQLu{YmX|(Z>ykpb=u#AtKf{EEouRjlwmzuuE+@8h9!PRpcSZTG z5p9+~>-WQ7NJ$sBqH|^BRf=s2NJFkkP`%33?wb$G2--)q+=~wcLn(HI{8l*b(`=Uz z>nLcQ$O|N&UYFnPhhA3h5@m|lX;-PJPmv-7_83cs-0dREJuP)^d;PI8Dz@6f_d}A6 z-tZw6)M;{>S3TnOO@yZWrc@H8D*Zx_x47?#QPewT3;3v}kb`#{cp+41kWi5Oiu1Y2zmER=K@rDiFqc;w&6eleXI`Nm~*OH8)LGD=!=cUsAW2ssgctoS{_S@)E4WC zC0lGrJNkaTaR|>1{nK?OI!P^r(WvqeHp!4dUy0QL&}yBlEbmJ4rWCq*DO z03}>(zEHqPlQFe`3X!sf{{TUSHBkQmOOabiAQ$=|j#Jf7cF$;F5p79W{6XqcQcvlL z(agd{on#)V&DO}edt9V6%Z52%l0rcUEtA^f#E*WMbDT-Ib<-aZ0?rG}qCi4JC_3+O zlCnv+-uD=3X(r=z@n*L~Ve*pYHcYj|WePUZq@_h)dy8R&i}sGGau*AMq6a2|+L%*C ziLW(la?-sBKc{?i9xbi3T<9DITa+f1lT5!&AcU@*$7cC_)o*%`*6RSqh&=ur*eS+VGPkH?|E+MNZ`uF}A8}WgCN@H*mcW=!VPT@5! zVmZGrP(sJjq%uJtmF;i78th;+U+S6u?gD>efm1kV5(_cHW6DcPU6vL2VMEjei(kFA z!W?n71cHelM}Q=K65<|FqsB;6O|U(+F8BT)%LD#0)h(C{M$3ht`&V${v*RPei;S>^ zG`|zu9m25y&5tiNSbOcr6W_z0VU;F0<9xqaxY=9zT0BWj%gj8lNueHwYnS1 zLc-bsN_7e%-4ARy>9Sj!l|{Ch6xmQ#+8+*CDJxMLJj12B_ZB^g#A>}`As(6bb+=7c zRm)BcxkyV5veHytH!B`(PdIEZ{IMo1L5z$CZ*FS5;qp1;v~eibPFtLibuielH!5BV z+(Cz1pqw@B;i@1Rb@>V{yokeld54t#eQ;4(9^nDld&$%wPH^H_D-E|sj@pgE3Ivhs zUb zI@ZDjZ5@%{zj}!l4)@+!9ojz*aaUQ zl(d8LvK~$Btt21;>u^ZE3M!elWH~5E)Hmpin91+1J7hqb=qCRFhb6sWdfQ@t-q;kC zboUvaK59ih43^Lp6ntLzU7=^56lTsNI}%hrAmyrC)9LflPN!OH%woUSQ$%Ycx)oxR zxdxuS^zsbNb(}UT&XW$C`o-F`Gd^Q;(5h8lp6X|?K~nj8l-U=ut`E{~H}AFw6t2EW zG*y$9u=WkYEP*jpVCbBOrbI%DlD$JqVMJ~~-@Uv401Q|`ROa?c(LphXYTeL;Mvo>@ zmXI4^)TrHdy^qvW`CAsD+FP26{atiAEObRJw8(RkjX+3Bw;TFyI&~K!*RjM>@=mCM zmKrNrLvGEO>20Yf)Sts`R!WKJb~m@M{{Sor;TZO;Nb=!r zYv5VzZlnNhYbfQP!>P-vQ(-7*FH)2V^7;?4zoyu0+%_rH&KI{5wb91L6;jEWl>{X- zlO4d7{{Zg%wl@QOX2h9g1Z{PzqBeNs7Mkj5mZ+5I?ENZ5h)%&>E!Q4}N?0D}J9V@! zd5+CpO#B?5LbxtqCKIsPZ7i=+&{7>))|IFp`=oTmHY)q^xVc_kR&8AHr&kx{xs!~$#-E=l_H(fCJDdO!{i*HVTw?ww$c}^yM*dd7EvPBJuVHv#93z-Ae$SaI+(DqTHpko$-GWhea%fqr%!<87&NdW zrG+K*x)cVYprr!cyV}=1ZGzB9Byr@bF$v6MHN4e0<(XsTCYyZ~7r-gLz$Mj_^&z!y zVgb1)wmPPxA-4~jvTZwrLHE@B6Ai*l@0d7)P*n)9;6ty4t!pPpV^>qqt$SMF+uLkR zrE!p3hZUErtPOcBz0QN~r&eO3Iq7euq}P`k$$!y;6cTr=|R}PTk)u{ZtVIb=l*~bc$o%Gvdg4{$hv}@0b z%2eSWtdp#n=G+^@&zjkMc{B{Am!=w=_%P`4*gWT7SV2Q}>P^8t4Zg>Hu>xSy3*Wld z&{4^88wJ5!uY7DG<`0Pf01R>$0kV#7&%7()(^K2b@~1B^t<+|AfLl>Z2yw>$0IH=$ z<%e!k;UJBWFzhrn!%XGCmT})w=41(KNCc%F^y0VG zDes^@zi^H*9W2PsD!IgLU~ELlc)j*Lf1MmW|Maw1Lmj6 zJfyzED@PNzf;*^YR92Z&4a{mQ1SmL`9tBq&Y^xD#b-3H^F(RCd+64lou6sL11vVQ9*K{efs>!{ysCO6N?smdWQsVm~!dVAZ7j2bG;?k>6FmJ82Rs!ct0V3_VzOFYy^lBJ;NCfb&Td61Lu zYuFx`l4b?BDU!dd?Kf4eUNCX4tC;KN+qrCKg>*XI7bwvankKrsl2~izTyefZDgwnM6LgDS_dD;l zG!T=L#aKPf2R_4(BBM7Od_`sH^@#a1D@&hK%bzxgRSD1&&S@swr4Ok=w#l(gl&w|@ zu-kISDIJ!Jm7l1qWUm3n%uBqhPL-YV42cc$j0(#_hJ2_!Sp&2gAdKyj9~1o-Mpk@T-TJtB#+B z)Kom7P^Z%xWg)okwuO#T-a-Pb>OgELtfc^*N{=Bo%gI5b!r60B@n<`6eLp@5dGP`4 zr;@1^Ow~}UDv>TaTzQ#JIdWYf*n;NEc%dZ#{_0#&1AB#YfH~ZyOW79&$MfQ&4r1dE z2%5-TKFRcYpr%8r=0?ROrAbq=Y9&&+t~lzPS<%c%`7ZNzDih5xr zu*5D%@4kyzorg{rb>NJGc7Kv%36xpZOiZVZlVXU_Ql{15uQ6NCLr+Q*77JN28hI( z9}(*E-fBZhue8O|fTX2nGM&~hxVT-0{V$D&M;h*^lCZetfduVzz~zQVAg2s`u@;+Y+M&+JxVD*%i4V=ZZp><%+L;BIAGe`r=za z*$U@1mg_ta{5f2zHB93F0Ep^q(5T8vBvJBwq!8r9k#xUOPQ|u}vXd8OtXR3FCqk;` zm86!nXs9srZ1Q@2*2*~T;tMG7yDv$KBt?dp=t^5@hQUKYBFIP`E-U~@8dG6lEr>Hp z);Co$rmEUEg3t#X{8DB-^HY%UnIS1siiC0JC^zcsoz>G}U_XW^4K%e+vovZ^T*#Yu z>Pm-IY{y!!wLH~o4y~j%;(|uO2G=AF_xCu_;nWPL)NXjH8tTI_(?AyeJOX9O3-DRt zfl=a9l*jZs5JIFb!AUMTy@vO({YES1dzubYs?a){K2k=O8>#;QNz2rB3VvhuTGeZd zs2|qD8TzRzhq_Oqw1SEOtAO|=tZGhGOHcD0qqM>jr(IIpKtpL8scTw@N>VzN8vr_y zipeLc2IlI>VbrC(6c?GF^CybAsms0+E3D+M2{$K|T;nj05%#J{O41#Nl%uJ_WIdp` z4N=5~7;qpVE~qGr7S+_k+|rx7fcxq2QC)?@BeKLSIGcQwnBhMFxHG_Ps=TAaEW0k2 z#F+}6Rh<0ANS$4tqDzx!$RQ>94k=1fm1Lw99VtLI#81}L%5yoPO>P%W6Kxqfq#qbK z5g$IYT&YkgR0rzy2u7b*rB++jNzKqU{-;u9BId*;O-W6iWnn5w*jS8~Kyw`(!0+UH zm32iHghn$k?%lN~1R>rXINMpt5|zX3%E#&)Ep8mVJHAR!>KiLYa!J@Z+mp%Mo#H!7VYO-OlB zWOq|et~fVP7ecH%fpAYx^7O`ndN?Xuc?P@)Q63)-u^S#BsOeC0rvhZCa~%0;EgdBn z+;_g#xb((;Y$7lBSWA&r21K0BLe%1J`VCr0SvTqCRlhOqjLmghB6P2L7T1ck>fa?KQMZ4F z>xl0iIqI)c;~qxg^hZ?>htE@qX{Ot^KA@QZwuL#?=}`*OZVExz_HRRkFQk0YZVrQx zH@dofC9iRic83&4p4_fT$+eiY_-;8=Q_Qv!)rO^)0Z?ruf_DT2jsE~lUsbpm`+sFo z(d?$Nt_Pn54rmWlX}O8S)fkx;V`oFCeF{p@yY3VfV{ma;`fyujFHGz1HB)eI1S)onBiT;lp%32jUWOD>=@Z!t>ULbcow5}|J~B9gwJt$PKvBftF-a7;_6h3q#i z&9@ITxbnJsygpUv(4lyYr&eS~*UoNdC2Cq5buF!c=P?OTB_S^o3QhF^Yud-rF!r^v zWp@B9yo(#De_q!%)+F!4UTOfOKwH0Bd_GvwKjX1svoox@e6r>`- zWh+;eD*6KTchmzW?6IeYiNqH<%tA0Oo?H)!R0SzdxR$fKn(u1@DlIC*@;Bet z8VU(51Kr3Us*llTl4WV;zKgC<xDN445qKHWo?qmTF3n^g~sGwW7p0 zu#^QTbpV2Q?_+CW@!}DJbR)e+lMI~gYx*IG$kj+G;xY0tC+_&7*wyh(}`iu@qTYColQ6ZyoX(iY4x-&*!khFvIOLNmu zPfuF`h;mNRp}(q>%r(}y1JM9}j@tuVsP3o}eLSWUZqE{Ze^_!>z5z@uHUFrNV~|wd>oe zReJ%rH^5@XCgZnyLqie0w@X+Q7_{aZY1w7)Zgjd<0sVHq_>(<*o$ilCA{;z4c8$?n zk%W0jjG({^B}pu_v$f9Zupk}!_v_ac{{YQ#vz>n=M@Ggv*0uc7<|8!JwaI;8$s2W5 zhp{%tNarwFqTyJ<10AD|z9_+(O%iGfgAGY=3k3x$Q2U?t#75#Wu>Q($!C;hJ-_;UI z$uL)EY0~O6<*R)OQdZKBsQ`5A=sIG2SkeBlp-a)>{SG6-Ja|vXZ+G&07!G0c)dRyL1WpYyffip-w3YNl7VL z>{OrRMkF$4J4W3#(KHL_f$33NN|Oyt_i$=G`doLx++`l?zdck}F}y%n9#k}QIgTw& z_X6VHxF9m_Q(VY^wd@jYabe9Uei)I-*r(2(S6!5SPoeFObi-*hQ3PZE08dbdvCW8u zw!nzmuW}IJPOo!s=5XQ|{{X_A*qW2Xg5}YqcT!OCYB$N&M*nme)#|4Tw+pW-M zl0rqoCw7+>dY);up~&QUkfIU~b9);M8G( z!ZM(Q6av^*VxBEz?Q0FMzBGLuYi#m4kNzq|%y5VY3vcyXOYl7r=Xeth7HtfzF?8zc zEYfa2fWYxrdaoP8;l0A={{Z7SnG5lmP=+~;6mTdxWCAw*p)8(*aCF=M04zHVVCr*! ze0%_2iG_AyW&Z%R^jc-`o4~B!;-AD92Rt_L_Mw(38Sgq~7};`>CbavlLTY4_p|!|c zNO5Uw9;!-77wL^%OF#w3V6SQhnXPp@d>TtlKZE}O(dTJjJh$pooN>m|RHQfyVH!`Z z(0-8zhziElt_`J-#)2EFKT~2ny+Eye&!~>ye{<=By1wfdX) z7>P4RLZrgeoD__prPx%OYba20u-Q8TblpVQfxY*{7qzC%AsLTzc_kvHFP61B+v<*y z=22+ad!IppiWg6DkKL<;1QI zRgJoy)O9#-{{XZo5H{H8K^^rS`W})gW_8`5`F`rR6|HPd>f+R&4S#Q%Wht2=er>Hr z;qMM2MO{b`84h);)>-|I9r&j4#%U;I!()2Z+%;FUYG#K#tQQ2q_9e zhLu=fsIehm<$+B~@9J`u4O0e9^k4bF#M0Ji;V%5=a_oS2EeMn5v6%RM<>8+K5BQ z8{5%V>Yle4-%m;;Xy!IvVk*lXT6RqlsHit86-GPjn9#PBq}YM`!_;g%!_yFBeo>X% zu92fqCFCg+r7XJ&SujSV zs1%DKKyT38A78#CW^21jJ)90u6;kwoWFhBUP;8{66p}(pZY%-V-}n-HU~&+NeU0Va8R#5!E%Nf=<35Ok4vWDQ_!D@DGJ6m+* zYAZi32`8x7f4#AIL7tU6d<{PACi zy6(8|UR_kv`q=^Ir^gvMe@)_!Var@Qms5V3RIEQ9nNCwhI+r2GZjhVW-F0FhHcs9wN5%_l-EYmA>T=8C(LZsGap+VU$Au7^@Hlleg zBn1SZk^v^>>c)mb$l2Ax+Yg_LCr2=;9PiZCKQTLRVcZALnwqsbtZHhT3v?mXCsR@M zd7ULB=>(Bw17p4Wk9<=}Fu4PD=<&y;&W%5tCh`2<@pabL8rBj3BI`?TSyxFTuo_Q6 z)cvr=UBg7mnOGfQEEE~yFA2E6$1Wo@x_(xNl<18V2PzU@O4@Zgi7R9sN?M3fu+lBC zRj|fkq0i4Nt@Biv&Lrs=A*GDC^E)Yt!#*6+cx_RKmZ{QLCNPA#PsnkdQY5={dF3ov zHU9w4+X)G>SJd2+!UJAf!Dfwz-1AEY9Of~OklpUw{Tc?qdhO2P+M00VnD6pdb3B-f7;FcbJ_yf*+$y7R(w!Qe2@0Q5 zSRXSaj;pspZi(~<+>^c~L1Eco&@A;n6_E9l8@T)umx@_}6+bLEE^Wn&j->Dd#PLXOF8o4c@YgEl7qaILa~lY5C(Xd0SLC*tiWbt8 z#7floxzYhzQWfcl^|d)Qc^Bom`z;P0X+iAW;PJ5ld7EF!M~@9v4nBNDxQ{1~`JRs} zhg=RKgf4(xjzsD07N-B!EtmFi0t!*7fq~n_2MTn9k{I@-0u5VWO8 zD7CdJ-El?I>UidaODMT+o%UNUic&fV4J$2cTwiPc>s3*BYn$@Jbjo&T&Kx?8QE^FV zOS?=qe8R;nx}-a6bV&{y`s2oAiky;Tar6C^^&K?XZuWVANMAk}90_Il1*sJ{+R`;C z#?~&8ezxpRKCBpynl*V7s~xi1x5HknzYSIXAv>0)W(nEzFiN3PXw>MnCfb2BnI*>E zRKT>YDN0bZ*;^e-NGC}n7=D=Esf^9AzPv)#^lK21G{=8<>Megx{{ThakA*%LR(N|3 zM-X7f;yz__G{A?V3$%2{PF`;1$0NHSxFg9@RitxUK5af!9a})a=o=cO6O>bReBtTl)4-TW&VFBG|O+NZ)l1 zwr58T;{*ZSVewk7&74w^nQBmL*@C4aw<(6gKOQrBTWpQ=l<7^$u`3{x{6%RJO6wI6 z)-&I>{{Wr}R`5f^j(g&iNZG!-3H~4Dg{3aSb#cI#JNv6`l@yTQaN_nqx|Masoi-E! z?G-O0%X1A61u$s-81jt-mCTizGX%wIJn51_N>+dG3PO+xxE%pIceW>fkOQ`eFQhJM z1={#%qNJ`BLf{7!Gfx(C9RhA;M2Rl0mh5KKw&}@o5y8Wy$rImM>*E2~~!Z z`@taq>rofPM%KwA@~~MNsl8#zxH|#$Qp3WJggVCz1G&?Rbviw3Hn@ee4woIYy&o^d zSxUKSe&3AoBI|GsB%LWGDFoe9!dNT~%8^4vSlh?}^4U!~?Oj2s4#sWwQiQE;IFK%E zHabsU+SetYp}kg~*@zEsK5QJgbOS5U-(6g0T;NJ%9c^?8n~ zl2Vd7o0|+(RN@VcQMs}Q%^L;%_=({*GZAW%7PK=Uuy0V?Dh&AKhY47>>ErV01 zB3%ZXF&5I}0br+aZaR-q*B1GRXK-3s^?kwJa?|lNfhM8jPbtlT$&ln$>VZN^Nn{Z+ zNg(_5vG0Dv9x?3!-DW2QIjzNOdJN$nA6F}d&fheH;KPztAilN($aMK%;Ku8xP+XrE`q@-hRY!^gc3%(z@UxcWn@n4Pf_&JA(EfmS8QXC0f zIs=_ToJU9HBV(;!hSI)}r2w%ON`mbhve3}s&0r6H;YmLbejpW;Y1J6HeNH(sO)cji zQuLvu^(!hS;Ci2^oI;jB28s0*nQqpuZ+t`ekjKsPRZyyX>-%8}$j)3Awee z+wMukT6#y$>$^t$)qIr#J#DIt(A}xY1x~o?-accfT(8uUaie4mV6#Swq{$49l|5;?@QgSzOy;dM>S2>5z=-Ha73sFwgKOHh8Ep>i#05)G}WHRz6~% z!cd5At1&X-bu#v8f0nlj!)xY+SL`NJ(scqt9Q5-39b5Cp4NgZTH{d zqMJ-m;j22}lV8U;xE?B$=l79;$m_hyj#o z+!d0kD5r$F{6rDiM5oFRV14l+(z|@))ilO0V$1<_Yf<}_k z2r9}s7~z?w;RQle^Jr;uk1p1`WNJTRI%2%iIl9~8rFD%uBu^0AgjzR zV_{6(heb_Ml(bzzOr@EZnEVuH%+AFrflQi=+_qzslJiSOowp<_(%%RmAs0BGYU@4I9(-6 z1nsDKZlQB){jsj-tuqA!rO%buBg)!s%}!*^drgL_N!POT8N!ubH7K*b9;^s>|T=b#*zjSZm0rpP2H`4`}ZE{RfD(9Kp|8 zR;co+YKG|-~w%m*i58k$VHc+nupjq#2fJ+ZVBk)6*DnMlb9$f zYNZmM=39W4%$X_)l^N)0d8DOE7P6D(0VQ5g2_xwdYNL3TIRUdkQgAxxKTPJzGe0rl z7Rr1t@ghb-@Im8xrIG8@xZGB2i@9R6PK_m$smhHt8GdYOX=IQJoJm_s)2qv=wUPVS zxt_A|vH^X8zT2Mfz_HcPG1hpo8I8u84R!EKpN8iZ_?5=qG~^m}Z!=dJ$}scvWm8ra z8$zSS^dPw}>BfV!x4L zEI0c(4>+Jxubu%(`=|^4qY&kaZdVFJOd`Wut0aaL;u=o1MIyj9@@}uS)DP#1x3$|@ zN_0Z^zMq}w#Vj!3ZFfLMo88wzP(GH@NAbaOkSs{ioq1Vw4VAGy+oDlhWDzRD)oBJNPGaVr|9~3~yuimVd`>i2KLRO~7 z_mT$R^LpTh3!KEJx@%|=NP1SCESAa?Y*HKm{)cP*utL_I$WZ#pEv3q_y>Y_TDM>C~ z;A$HW$bYUF=uZQCu8HJaxLIITS(OsoL9o7-C;prMxDQa^h$m^(50VVS)t6sd%giMw z$^i!B-uM1^C+VHIDT1Kh!{&_5GNSScnEZ4f+*%x3P5tk2Z()X54eWdZJED2te)5VX zQl}^(rm74$;JUeiu&>U<>9@U)+XZG*pc*KyV}caLA@nEaAAO{?aFCsXKOm~xKQt&Cgl%!p1 z2kmPNReqi$x7k{{Xa4|K=c2^4l9A0fO|5-K=j;=2=YqunKJCgI+%0m8U(^(hEvW*; z+}QsB0&j~tXrAAAXsc&?4YHq_5>|rP2xSgAWA%&Q_~V@$udc{}?91QggRR~|3W;zX zu9O>uk3cPR{BTA%H~M_d(A^m#_qUKh0}L(pyl076>*r^8MG( z@BY?nOM&CN!#fIElvTnAmr8(2fH{h%x3D(b^TxBIZ!$znzqRyHC#UM!miOQ4w)@~v zA-)9D(WNHHX+b)T{{XRW{{ZERoLe=(3(Gn_(Pu7n{x($sNb$2=mGdplbC`vKFPCw(OJN8v5IHF1fI=RefS!W4=FPp38i0K-;g#eEK=N)ow| zT}nt;P}~JwB_`nmp&>wcg=vBgt*2FwG`)3vk{jDq(v=jv?Ku)8HwhBLk1;XPc92De zl#{sv!}Ygq@2KQ1j5w(B#s-N@W3r?zNlRS9LDT>Qp4aYiJ?#m(ZWUaQsf8}!EBCG6 z+YxGk47x2l33jL+UWCeWCO&_O)BY9l(d~-`-6Yi70!jE_J!4~auK%c6(&7C8eBtpj->Q~aG%C5C=bYh zN472KnGQ_agWRG>Cl0Z8o#_k2&JA$ejmo0Q%!{q%&LL4%%%J9qB&VtMiUXR0h+<1F z1*w(k3357=TXh9VAYS6$npkDfw&%fC)lrgeU1PxAHIjJkoP0knCRy=^3ZGHR5?Au{ z&MD>U3eiK7LVSp>v>b7CX-f!Ni=cdwBHYB40B1`DIB5mCo(e2;OwA_S`&K`IsTADm zW9+jfiBXjm#*+I5DnqTf+P6x=!LpJ;xKOxPW8WC57}Dc*Ed+W2l%`w6@+nVvW#i<# z)Iu4`(40QVBNiYkv%FL~bk0T_ZubNEsh3Dlf<_l?O`4FG6gllutyC;O%kHi{do2 zImNHwQnGM03AvQq$kG~y`~qYEzwCwii0n`{^7@XW5JUm4%Kgzyq0P(|2=ft_-*#Gl zZdD<64kbxGa0p3KZ~p+1({D@|SR3xT;Oy%Zxi11ApGgY=$5L*SaDiBsl;1IJxKap8R0iAn5!5VQ4LEO?orz(!o6<~kH=3v~%COKdGc&zcT5qT|YR zwCK3r_U(w2l}=`74hT5qD_s;|>PcN9a0kXFbIzF&y3Fn#u}q^C=!;R2F)0hw0ZV1S ztdo0c0E>bJ?TZPjoz(}t+W!C_MSFnP$E<8=a2|uqr>dJ1i(E*o3cLxB-KME!wJo)j z$A||0XKq5zeIY76M%b>Vqn+ohbF2^MoJzi~#zcTa6Ez$M)a(?3qhuI#h)aoBkj;9c zLXe_bT~9{$J2dBh1L{*4-x;WRLbIQaf0XuFqEp?3 zVMBBz$&<|HBrT?sV(Ti<917HQC=jhBI!z<-Ca@Pvz4Qvzv^l2{MP|kZr06|<$+F0N ze&RNNg&`p9ys~a8T;ng(`na+6Z+hy3r zbt6k4qX3)g^YOO24<$Ka%MUW$lHv;PqrX5cf9H$IWUv74qDDbC2Sjk0u#()t&4?dB z0cq}w^wn;c_qGiTxtc>!T?lJ~oHQycc$VS*Y~nsxi9yNk#a&sMO}@C#IvYf`$RSB9 zAe5+VpiaaK9rWX-hcke^tfN#_7C_+9tF}fQ4e;}qxNk)Hio6<4Uo|+e{HY;&LuT=3*MDtL#>8UFw{w9{wcU=ro+aPne4gqT`BK#_|hGNXIE4*;d*=7z{ zLQt3J)Hj`d>B&h4L(-gW2m{>-DjmBVJ}O9BbH499wjXk_v(sV~4eHrw+r-}P@&iHY zw*^R}n5aRr;IvCR)G)B@kO@)9!?yb)E+}z;v)VPvP>q&v&Fw;gD z(PoZZPk%e}E1jQ@PsAFd!fy$*ju~*~y_u-|M9-CNF)LJ+y1=Hzr!6LDE>P0FMaP+J zX|VvGLyBq4Qn|4a+239(TR~U)SmvsJT93%`0Zqx%PWtGKLCNc_HvAe+>KbL zxRI#XwxnMBfSvrLTd6qKh}g01nmgFFZ%^Ql!AebUim*IXc!H)>YWz6L(_2jrj>5xF z)vE0)Qe+`2QUcJz!ysyLC@vG-7RDo_*yI$_ww(Br^jpr2(0?h_BKeMux6OBN!Hz7u z#A;n)vy$l<+E>fGQipRK$8@ehv2lSprxcwnf}8dlg^RXP1*NKjpk`sv_kQR#6VFcH z=8$dQV{h_+ZQ`96UMaW>A&o|(Dz6z$B)cv(E$5hW;Dsb9dR%cMrl67(6f9M_3^jC3 ze^z7}yj14U$xy?Qw`07n3XNHh!2rsWWbspkdEPxniw%WWX|yV>JifOyBb@a`%3RE4E$dADSct<)|^y?_Hr zHX8xb!1d}*EMn9ZpQ)6w;9o=LfK=)6s_}VJBe3%#_6uMuP5WQ>aUMpS+#=M|$18h4 z6%Vq10l0U=-Yn*v;g@2~8ID7IrfJ}yw@Z$pcM};QDJ=(x^C*=KDdncZ_iNZ3LyD)t zDgOXZ)&>*5pyUrP6zJACjHxmtQ>gN3(#l;i-)*S@E;6(#+wZEzz-b^`d*1fMlO?nW zbJi294Z%se%~wCysnh8>GLjywIs#jFLJVm3HzCrs3+fjKNjCKsz{{LPg088SM+}S? zKM&bzTDkD=@f7zT9ge~qnN8MwJxOM+Hj#R#ZxLnWV#RbJhhZq615~= z@M>_<@EqrS6;>5VQpsHyXvxm}{DHXh9qVmeE#R*Q{4Zr}(O#v+g&MU`LlSd7YpNv) znO$+PmYGziz_J=fq_)gv?9+OzgxyL~ra=IWx-BDOiXmo=PsILg6RB9Kvr?heg*oLv zt{i{~3juyb3jx=1JN4VKxi!VYbnGRCh-E%IRGhm)rVk@*#c7}b>7@W$0iQs$EwLbX z1YV_i59sXj5vz;1ayCnz1;cG|^1POVB$_;C%Z>n|_1Q{ESNy{Mw!chz90xpljaQH2 zQDuH!Xy+%>M68DF5cTO^v3U_hTz$G-Y^I0f#l^0sZ;N4)>j^3fiI$sEcS~KDBG*cv=mpZ>b*Khh+8vgHl7K=pzux&JCmj4$ zP_ndIgh*4N!-jwYq$xoqeMt#VeXV5vXVVeiFksaVdZJEH7LYtc_`Ry}QYAwv<@s(> za?%}1mOv_YLalIIaCJTGHXC=t>7aC{v^y%gu0TL7-9U<*n7=ZDz@F+!Ad*K*Z_@ql zci$J$fIB0CsxL0ool(?TtuPvL>RQvJ*+#(Mxx-EPE*5dHDM;03K8GGk`J9%VJ#A|s zk-uT@h|b*WbmMmDx6$CI#7%mm;Sa-)4LA>xrSV&g<1HvjZd^$*s2MUimni}2?NKQW zwxG0x{G4?;ElP6SpqAF5l9r4*LihGtXvHaqvmk2yLe?&8s zzA*6@Gf(439%MB9WoCJ?6Ba!VBf0{h(V>7vJ|ROap+O|A;)1oEPA>D|rMqn(x~pP2 zE@U@x^iqcJp$cuN%@uVgUBCL{iW<6b*PPC`=OvrSJr15@shurA{R%12KTF^EU=l_BO%_LB9_b|aD-}y% zNNj$|akrdoBc6ndX&tv!{dx>B;!6TW$26^`hWSOo@B6IFqMlQ$V8%ji`}gaCYyDaw z$x3adi1AEs6u2~;@Wn2zO_0q$Hd54A22eodI)zxRhipmENYp>NM?-a9>Y7Heq?cSQ z)ol~p@gzdd9y*WBkd7AdwxvL?#NmG#U`U}=kgasN>vRyH1(K%T9#$r=4kX0e*a5n%sC9*wz2sAKoioDLU6qj|(5g8JS!*@9T8}Nnrc1J& zs!WoFGO%=m^KLxalAu6Jfi_Y%!s3vLYFzSrR=1+K6;Ev&8Kp--p#M zA@Lu?)AaUYzcPiADwVLq?3KooddwK=Y2>EL9w~TX7ba&Z)f}-;l}4q=am2YxkffLCuW2PsmlAY1o}nv2Ac4^*Y(~Rs zy2$c8>(5oJrjRw+Nx1ynCx41F*(gi37!Xxkk(1~xB1DIPax^qRX|)!vm0Yb!a1;Uv z7TgRaWQ`Gsnr)%;OGOxT{b9dl+iB#MSuKgvxCP>Jj+(Vv7b>A9yAiflkVD9&Ed@#= z%tDi~2V{h&*AV28nc|Atn}4b~h~+ciW5jb(zu^xlRIKsACh1?Z-bF_?)0}qh+!ea} zZIvguJhiDubM&L9OjuN~fqpkoYhDY;aMIc+i}A;#)Q^emqgAPL1xjXQsv*#%XbW&Z z5FK4Qn{D^#F}B0NFuA8|eb!H+j{bDU+`g;mWx)!SZ!z#=gf(p4A#Y}R`C^wkdyO#L zNH4n?4p=2O)1@m&y}NZJ0Qgxt>7hn-)W}3;B*{eN)W z{>!z;>uf8IZqCV~Jq7N45zKfJ<4W>Eb=Jy!%hoJ{4`JT>oA$8ld;!gHc2cAT z;Jl2z5=xwK$(|Gr!47F3uczoST{TmVfM3l^7&!x1Tge5RlpmDX5vx<6tP5)>LW)P< zd-S*dSTkzJ^@2VqQsHmC*x-DT3p84lK1+y=E*#esq0AiT3er6XKnJG(0DIt%h2HaB zq61p*bhhWX{>fh5DYsDLW;+4Gn<*-G3_Z;Nj;oEcD`z8!^vSeeM&28l;a}J zwCMn8@;XRJ->5zR06y3>buT&{R7X-cYhn>p=PC${($dvYtw%~*SV|Sv+oY)5*X{aZ zd~!xkt+7#Lj!-XsJQt(JOZ=rtio(=@Zns(lkG1!~nl5hB@osCjS8Pk1e`jVp&>E(Txml)M?;;h)il@e6KQ4g!Kt2AFb{!gml;U?wraMm-b3f zd8tz0BI4i@1^q}i+X57Cl-?_%x;97u020VLVj+@Ns-uxv2~ko>2}!-TB;0~6u>^HD z_9HOKvt@YrrhcWMU9J}MS0Y?QDMD3EQjlyC5`v-+uAn#n0DIy80K&r!$tUy43AJIy z*8|aHZhUP`E;?UXK2+*t4PRvfcf_Fs96)8k^7e=K!Nvph5~Te|-Mbg=*% zm`F+T`zq6KrYa{)o-gLT{w5SvDt5he7`U;41zj z0-Fh^k@=#2hr|6*+g&Ve%JE`3-}hN0w+Trst{VU>T}!z|`)zOz{=koXUb2ELxgJ0s zDy{WT)xZ*d2{}5E7efnTt|=^~VM`hi60kpZ>rYPiO^(CCA4?!lK7_Pw-i%@gN|4)B*$P$lD$%Y8JKO{V{7x=T4;%YWx%B;& zYh$%#*n=hnGlrJgzN%YsO*OI2aHZ5zKHIH3V#fo@=tal%{Q}+559Koa)JgarRcX0@;;Z1- zG*(<&G=b zDRmdzaP7-rI2PuWZbDKL6r*c*H?g;ybf%j%Mw|lbJVZxO?QBUOFGbfU!Y?X0RNzw& zB46zJfAIPpHXOAfE*0eMQmZzMyx$eI;(Y{fnrje&t~()4UG<@96V}MN`jXg4{Om~l@Ypc9Wf_PU?4inrU?et5N|qw0ovEq{`%nsYJ8%iF(lntb7z=S{Ce$@y8P zXV%{#8q_SsJ-&t2s11;t_3EQw0ViTd8|ow>zGs4sTKMVMGYxnSXx@>-`fm^7t~wU% z%7m8#)fwthy+!VaQg7uS-9gy{VSA{T)YF)33qfiWF<-Xl5c9v-BeJMUUoDw|52%6= zTRO+y*93ckfx0-~VHwwzzN$lR-A}45lLD@izHGMHXsnjpj)XXsru$qkzuWS|#t%6j z=spEDO4f@4ehT)fZK*ntlnaCA39?DPC9S zk}stS0FXP{`;XTGBBC>(Afksg+mJ#os^v;$b~NVeROqW_Q)WBNR2WOFN^M&yw;NC? zT2Dfi0-tTMA{d^^9FQEJ{t=u$((KZxv+Tkx;P zeeM<77AwE)*YZKRR*8r26 zp8*BH1+Q)>E@RntY9qL{yzegIBH^?JjqUz^*c0vwmjM^mAT#rAe?#RVEy!|Wq7}8> zDJe)6zw3(DTx+Op|~ z;L%iEo(@#vtwlwel$OoKwEZLv`t`WPDuLNpEMx(Qyjxus%5%{-y#}6axF&J_}onov?t_)_0)QJ7c$VpnZPnS}S+zl@Nbi&7g`||KW!sBb3`g&{S zzNd$P;!iTRQ9$BWMXOG$<*b`NJo(g@OeuyORs6IkQW8}hND1Wg5)^`_kfKr)2?F?y z{6np~*|0Vz^XR=AJTfXW*xmpnTn;{9ZGQ9{G}iuBkXwM1yaIV?3RnqP>1*z7f=uAy z+=?G-oyv)M=Q>enqLm?8HJYQbqplMYUSXvO$lC0s)dK2Je4yzD`(L&zC$4CAU^P%* zO35R%pL=~4P9D^Arg^VJ%r$r@qGhInd2OVtOSS}l9-vg92E?7MusB+2PHwhc6bZ7+ zXepX3H$T5L>Tzd|IctPecvWez>p6+lxycb}O(ECXZsaLsY6?qWjmW)<)Kl@Tt(uj?wI{e8{Dk;=%+eoqr z0{7AfTD&JaC3D_%`KrE<^nsH-k;T7;!EH{7I&{P}Tb%*wbI$?FX~2-AqW9bap}zkB ze{5+4y4#9^>Xy5=ZphocI+13fFhbOBE#@k>Px@j@-Py8zEct=9>7K0Th}22$z*^Zu zj)LQ5#{x<25|DnYAtu7$-}A&N06U$Pi=CFn+n{-Oij-QDrXtf>dFJB@h4-U`$6eN> z=xut9)->uV?1d!v!ZqW9gCyX*0`2wCY?E1ud5<@{CsL^JBf7(lz+yvs&_a`BmFV*+ zB~~^BD5mxx*x++TlpM!Wk2PDK&?04;4}mL)5Bp5{SBkkm#8&~b)pD6CwZS$rH|<&k zifk9#hfbRO$3;P_=CaDJwFQv0m0XfcJUS89yx&_3UfXvo3`VCe6&o92cO1YS zZZ;>o>bZn!N~B8;Qff$bHvvqoVnR{Bs!pWsi%gaTJbe~amXX@kBfsK}QEt4IWrst6 z+&GYK%5U8|ZGU`dx{Wtbg%fRj*794z_+;_Q4tQaj9&fEv=nUmZiZn&lDo~;_nJSUZ zLryACSRuk)@+Ab5dw>;uc^^&a9~Av?7YANz(mFkJPD?%ErMZRG_X1ku_lW)r=gi;0 z4lv5fP16~3F9|f3>G9y^Wud~SptRkR5QavDJd~DPC1tR%m5`{oIjfd3L$Zr<3a_NE zd=Y1fp}_9T-1qUn=E@%Be3RnyDQ3EaDyI{s<+w>oiY3B`+p+1-r1_akatF+yt5F?Q zV3X!I1kq1~7C)Q3cTU54U<_Ala*i5b%HrF1g}dJg-YBcQI?3(jZxWS9WK&vHS0U#h zQ2YVUct&nB>E@Txr8rx+Erlf^!dy}Y_}<{|ae~qjr+vz_sKg+xA)sZD=s^SrUy-%1 z&gCjVvwNrAzc1{b@$m|4@N>n+SB?X9EbbqOu9q@5&% zY@VvbSzB;0<_?Sqxfj_OX(=E3Kp4$-E(4g;?DpRBZrsP`I-)+4%usE1r63ZQl zYekbY#jZ1C4-eTRHt|1+lj*dqxkilKhZdrcsR~lkhFL}84Zcg!`ZG9ZMax)hZtshVcKkka zYE(Aq>3QhtG-^^oY$Ozv{6~0^jX|YUmfP$|k7WXu-MU*)=!L9oR6F(^uh#@Jf!b<;Suq`gv`@!e z*`G6#=oR|3&?q&CYne@r9F+tz9(ALvSZO+%QMTs96V}3I6%%AVWWI`;rlrxps~5em ze&rIW&B#QmnikZ7&6BTH>5HNOQ47HqB^rpbR{ETEO|rAT$S1dNYl~kE zHYG2DzH@S;M_N?C=M)<#o}>=9zhCsgsw4neD=u_U--o%2i`+@hx!Z@8Dx4Y)M}mnm zUY8y_rd)&zp{U7OAsn|9R#c(q328uVtKtP14jHaZ)!lwhs5;%Q9K6?P{{RIsNvZrX z{4G?VQz(=*yAG<<_F+eEF_SVqVr+8!m7zMFkfz&fQ>!}EI;)_@HxR6jDu;FNB!i&k z@?M_G7fTZiObuxO=(ePao6+Mu%vxvdXGyYeDQzV?_qF_^t+yoNBwZ?;XvTs&(!U3a z-Minogl8$(H3-OBnWxjVpD|^n0<-=l8U< zE9Jn7gYGWYC6RKU{7MBQ^B9FqO$5%fTu;N|i!qiluKqVz#Aes?2!lAkU=R>rN`p%K z+jG|Y{{W^BJv=e%%e>hQhG&akUjT=EoRl}BQXx)q;>rvqAzyzs{{VYpp05#kIYIaU ztf{DlyG_^4Sn{Q?l`EFjt=~nzE&6{fR+(PosraeSV_Mq=d=hG={PZM9atn)%s@l*J z0od#TH|$SCiGhss6B=tp z%}OWtitb4Iu7lR&Nj9{#&1kSX4}wZ+mpt`z3p{*BF{+jM&WQrG1zDP!*<0vuT%;qb zi0T#q*pM%BI*)OQc%=}ki#&e#_=FD-FG@@ti!t=fOOb@iYIhd89G22I zJuPPexVLO$=!=^-X-mXf1Y6xjY`<3ht2I%O-A*$|s46G`t3Xu05(1D=w5TMw-HGy@ zic~u6ZH+}7*@^C1dY0LizoORf67&6ggMSL{BJoa>3T9xROUm`ylz2=0BsLXYn1rO1 z?xY|TD1+uFUtO`5#HmcRxfpGl!smt7nwiXfG)g%3Mu$Sp zkt^?0)fFxUB70%KHNgc*ZAl~)fvDKnj<|GqS*NHp;rX-%_9JyC6plEpD;hu`@AO-m z_$JU})jUP`t5nv-LY%ys)F)7%q#^3s2@1WzBs8JD{{TE`E8%lnU~Cps4}VzPy4v4W z5PWj@P2vXyv$q+tRJvNYla=H&n#Cq6+CnC<(ojQB#Cq3y;1sDUI>#+Y0Ygo)%zI;y zF{Z@#=zbb46%@i)ttjm`jkWXc?+aXfdV~7}(8Q-qU~;uGJ1CS5nRv3^t-uFX$5Ivi z?~4kU4nRh#*Q51KGC8E~bXHPo%KnaVH!U?IEtBqo9d(|!Pd1+pU3VAQ=6zP$fj1P?=?>iX>nn1v>dv&3$oo=H#bNK zPo^#F4{qJ+zN$0tosZ_ov;NSn8PUYdrCx2h4XJs@G%^&RHEKzYp?h^U0@nNY7~5dJ z;U|*B^jO-aP&fU``X6wX3M(8g;f(juK0Md*-5uvd=)8po7X_6aAgC0Zk_t+Ewzc-T zrl7&*F_VykZO-0HObNC{eZ8>Em9*SH{5%Z67L7P zbY<7;Zhtsg9W_Q{f;sUV)jY5-zwP5>imFzS2H$wjBf8!5B9BfC|B zP+X5?I)W}cp()?}F`Ai^$D_rru3~gfIhb$ctx{b>VQxo7!MM7O)Aj&=3|EE+I>pLK zoVQRBA}M9}o0{a>%g)@8u4>RX?W7cs)MCx8U>R&Y)p-&)=FEJSRJ9ScsIvQOba_?H zMaVzmQNR1?hPkf3)*Z>6Q#I{e_oCKe$$y&USn<-?Q8#QIH|}p?i5*J-yY%nbM9lJR z%O36iC}N``Dg%XWJtw+R9E*LG{{WUB87{bG?c};LorjfFE(iqB2c~n1ubT5_kOjV2(3d?ZdwP#tjmur*OM9yX-~SL{hI|2l0M15 z>TrjnG6Qfl9qGp#XPMz)`=IKg)Ywa6WhPSftH^}MX~M3j=|Yrm*R~-~gF9iA_&9yh z8(qdmkUQ9ZYXk9;(iVk5auX`)t|@G4{{Y2noLN(06|HE>4~B#&lGag@MZon6>UAb; zrx1t1ebS#Qkk$2i055a?Sii&Q-rXc+kA0O~@6WTZ;dClh5!OEdyzFPvNI++GYPU;v z^zVVz;DP7)U>_vts~o|pw~ETfUadc&x8q56z{65ur%X)A#UY$M|Lb( z4dzA4`jrvL$z`>AejqotFrchNl12_ z+6neiLz;p7jw{UzZT!=7-<3;jkG5tsG=IzxDA{7BV=WRQ(j^rrT}_3OQ|Z+pdfWm} zd^NOL4cJ;dwfX3g@)r)+5GkiGZ>Whljhvv>@*yp3#N>DCMfUtCr z@m%z_F&!k5)ixWb^vn*HM)!}B>!0A|UwO_NWemIfNxFHdXNKm_!Di^M`nNHIiCqz7I+&|vsyx==&Ze+XR@*Y0ExLs2SJaY87q#q9 zLNIJ5ta4waXouPsw2zht=NHk3Kx2}tt(={u-@v5C%}DBG^~;(m%n zH523+hTb1kQx7gv7+W*tKxz`vaseO%-rbCOP$bPNbY-z&l4}yl2VB91CA@R zOG3}NHt0KIR8-Z+Mi57JlymwToZYUlVl5=;m=9tv(0>>2vH- z%+<+Z2En&fr6dnS*8Y`YskW`eQU%2aQ zdt&Y?mlN1!`}S1wF{4QxVzs65TH(%C&AuKe6-u2c=sC$*rk4tfTa1>IHlBo~_nm1k zAd*>97$=glrpl6)1cCyvH@mjeYZ7^cI+|t}q?b(wo9emqZ!u;hE=?yiME#>KERhIQ zpu|vONzt>bNk4{lc~k|(#@?8ka_Dk^CmmCbS|E_x)Gsb+_FcIpYWZn(40ew?!LRJa<;TWlLN>U_;=NV-PA>AASSLH9U)L(7|}7eb>JmiPIsedf3Razk-e`+^uM zLxd{!Dn`j4n8YW$T>`rUP1Zch{D<Ngc=m|-rHvz=QeYnY2%PkG)X>AQ*1*BM#f=N)noB%M) zLZQSLUvs+KU~$6(8xR7`8*&}V=gDqKuVtLSQGSU;jZ&FQh^oA*WN^bZ2^^Gj97+!1 zvY<*qxd|X#+j*>up2&3749nKWKbUtZL7DR9Uop`|A1=xLlQ5_R%T}Ec&FnQ2EJ4_5 z8=K)KjLF%(yVR)U>R3Q-XC5C^mZ$h{q&VaXpAd6ZPcp7LON)+$C76L-?oHNF>MjBA z>4KqR_k+LB0N^g<;#@f zjr6vFE=fCVJuhrl!7Q>ns)!PKebpUw;>K#HfZk;M02{59@RP%}OD|F5XT13mG%B2E z<=9z$X$ve^>MMO?tAf|%r(~Plk~Yz@ov<@I&S^bB@a9!r1q1f#+^2 zM392#$GyGK4T0{}BWS)OGLB-()mn~S%`{BY8E?pn!|8QxuwXVyl7186DPXZUFogQODG1 z#grGhDcf!E0V9DVZ{DU?m$(5VtlN97`jpc*#Qe>g^9)FIx~Zf##I)HZu&AyOm03mA zej(MT$Uxhn7?0LD&&)V}XsX>dMwtHqJyhb!d=%oQbduG6erc1F8C#7>Q|&yZ^HQ7Y zLu`TrcN>*lg?bE44FFx=o;;Tcs%IHt9oON1s?}e`13uQOJY=9`2Aq{UF3@Qxb~Nb{ z6h3&%LLXA~0b-JpfStDh9r~PxF7~=o9&C68v8kneR8ho8d3L1fzROSXwRtSum4d{?p6ENL-FKpo{!%M?u+Ts2&rQ1XpU z=15~Fw^xoFAo8Sya{&J9VOLjAYL^`xLscki_^McF#rv2LD2Z`=C--TKMhVP`sOaR-Oyf*)9xXbx z-dsFFhqa#y9DB-6$ebutjOvCCw&lJ&nCxZ2W{ zYtn6C2{*Pasf^*-XKlW|id}o@@hW#QgSEIK?Xl)TTJqz^gg+Y@DiumLN6EQ!I8tLJ zW;?X`?8}oV+*!25F0&yjBT=$Y;YlOv7<9NKPjB+yZsKfyA!Waa*TJmNxZ8_+L;jP0 zf>U@@&we(jkQ}FHh#6CcIa)KRhVpYQMW&Sn_cYlCB9*JSxVks7+hL0e3VEQ@KA#_g zoN?DxFb=Bs(0*uE+wzq@HE$x&>UBBLr`J%Fyor>xX-m$PE1ag%QZ47#cCX*qoL$8& z{pVaHnv}NBV@q5(Uiy4KDVFg=nmD1s?i-r0oabA@q$`FI`C9jg>a^suaTkAk^{IAeJ{yLyrY_-W*ogn%rGi3rcvj{ zM3`lTB|+BI0n`(<`haeBxE*%DW2g>jJXQ5|BcqV9!o%pJZyj=dTZkM$$u#EZXv}#r zY%S`7T#VDKH!YX$$_s0{R`246K(YE2Yu?ypOip`SWuJ5))R6IUYxC7SnLC7!sXwq~ zL2jQ*VF_(6gfK(Ie(G37^jHyOt4RQjtT0HaEHzW1r!oVZOMY`tQ&FhY?nM$a%}tWS zLCZX}mzx&}3e&QJK^7ZY`(FfbYYl?1h-P*7vNW2T^1b6=-w#iP>9@g zAn~^zN>TV!p{>Yt23~EX^QiRJ9t|&AK@AIlNV(jTy@~IO3R?qUt1$)+Jk&n%3*x7W z9uca1Sjk)+ry*QQ&95#sCZPMj{J|_O3o_8!Q>DjBUP>(C<$!KM!dFP<#uzjQjmY#- zx-#ZJIFQ>ZzYmcJ7l%(3HRa^~AW6s8-Kke5DZ?-ao+xeg{t`)e zr6^&R(hySLo#{9R9%*Y=+hndq=ug-BH z4f30X5#^>0IXhjp5I_g9E)l7I!owbgLrHPgKi*z;`ES{eM0uEZE37 zDQ-64L}C~RXaj?Qb5l#<=8*H3sVnPGhF^kKkoUN zhJAqp*$KC`v5m!`f%R{5u6Fqa>R4>E{*Dj z{fA-G)P8uAT_ibfMaPIysVQcR+=4toC_-t~xz1>2k5dU*Cfudm`wuVhADPB%Q#Itc z6>=(`4Xjn4(b?_my)vyJ+}$c^#c$Xq>9T(;0?ltAot4h!ek&VPDPS#5QY#-eNf!~7 z%1veWQ0!WLNv6g1I2dp!eqev549OhBaBb$I)Iis1 z!6CC}4j^W#D(H21b%@czi>$gM*~S-dsRcsd_9M8sI~+Z=1UoR+>b|QD61OgE7VW3i zA~<=){LRBW%Et`zf+L67Y#1|KD$yyS^c4F3=py$?xb2M{HX+pj>-K(1vMJ22Fvvfc zK0WJS+(Pt_Ne+u;rimh@>Lr1@Wo z(Y8rHRR+XrKA57h$RhD_xqc!@}r zP?JoA^G&y*vQQNzvZSrltLjd~q;$Bs^u=xui@s^We*D&hq|LoEODwtu_zbZTo*?+? z%`t+a-~o>lP-3T1%y4*(OsCS}eC0YsdW5>63bA3PmC9_WkEIH6^rNQd$~)r5I%d6s zM|;A+a@YM7r_Rw6*?kF9Q{e`vv~LpJ7OT4obFF^WM9D2iU=ZSCtuLuMwQd4Zt0T*} z1ns^Ot_d7;0H~GK3~9|Hv>%%(Yw^9|{EjDqdvG6;NLRC5G1qH!V&C zl>l`V+yZ(VV(OZ-Lf+RB7DEK9YbSe&xOU#Fub+m0#0Mw*LVPP_jy7xTn!v6qs`C=|5 zh_;`!LCxN#P|%qP0JM%k{nhSPl9C*0rleo{ubU72HvVT7lVfJt;b3=-$H7fz8bHe< zh_`~w=4XH!Ln@0U=Qg&6gNncSKq ziRrgtxVKy+czrY7l);p9{M9kllG`(8%$3k7kzP{&00n?joh2(umR0u$YaeVyb{`ub zW}A-f)q`rB_G&#=DxE3#e6_zE7FDuPZ@2uZ#76XPM#vrra6Hlf0E|Rgkb=|P5o~%Z z%TkuL7-4oP3v|4%vOpFeVsT+61|DqZ0674DY7}^#ua%^q?|qgRDMiJAx`kAz*(pPN z->?SD+rMl=s_5$?Ihw*pak@NMv!DGycUsE$G(mTgh>@f`mFZiO86_$0ZOIz8^uOBz zrlOZA*Cn`-@=TUk+;thdfhb|1QPLL6r&P6D%EJLd-)n#eeaZU_5=w|-IT+&i@wKh; zLliD}%kx6535p* zDVHR*5txu`5rNVW<7}WO{#1ZfZoNgZK9at*+O@>DypNFCElwXy01sfla6dAHKL_Mc zl5%Y-ODnJe478G;V4>9hg!*F9mDMcR0z0ktP-LT}Iyt0zkE+cUy-kSIaT7>1vJU7( zWT;=#D1t1C8VtFgL(h{Sl;@R4M373}t$YDQMiT8|sWyuD@TGQ1!j>Z7)k6S{)=;Z+?MB z{{VMj8b=`x?$r72fKHW2PzZLDFh~Q;pV}9&{{WaG{{Y7j9n;2JA%kBZ*-ifdbX{!1 zV`JO`rdy{-O?5Rm;Vd^Dw-O>DE-4RdN`X_0UgV356zK`E*p*)fq{eDx%;rOu-PRu+ z)M+rt<9kD-&E^UCY?cbIG}~^uEx6KLZL6#}*62vwgsCT1)+WS#u@VlJIi!bg;rLaf zuok|~BK~&$kU10FC~5e#`Re8;Rn@6Fl12KYT#Fw60BjbfvZ3t{iI)exM2;9^HgmNf zo(N%fE3GG3OAeo?r1TwkvEOok-SA3$Otb+o)g$P0jM1B_H(8;z_)z3Ul=5BWDMUCF z+U?O+R>`+>wkF4pQ@^sqYxf~L3z8vs>*sIT7&%;NDQyO0P!geU?E=!Tup5#0#i4X| z?H^01ePf1zdf6rF6sn}8Yo%9{$WpZy-eJVHrF8PRHXmX=H|>nBBZ0>)#4mGuh|~5~ zkYY2(YqhTMI{lC`s=Gl^-7iCs4wL259Y1cLWm^@{;Z=+|MaS3CNH~o%hM;(Vstp}3 zJy2;VrY=OlpyJD_D&`QYo2zcN>TpVW8i^&y)*kXki6*IsCSvRI0^ddQ9r&QRnc;j^ zJZNRC;hXCj#!WAcxr&_{Ovz5VS%{kJi*1I3i&<@?2M9_MY%FXBH6Z#wXuci6g_1{w%u0K%-H3X@*D87>nGtS!>QH0rNYXS2@qt& z%FR?0B<^9nC-ZJ40CQd%ZOE+cB<>ZrI=1B5bU~G&<_did3pLuJ zD>X|fzVcfQrApLKl^}HJFiHW{#v0?QwW%(9%d*&aC96QKt2jbWvFrB4-npOxo7FpF ztdS_iTs5tx*3eS<#G5Iw5piMOUV9EVZz2Au7ILgq>l0a_QF$tu z@eCy^@*yiD>T!R%gn&uwu;@tu^Q8`cM>^ckCDP^%v|{I%6nB+qbWDj&dLwy)iBzk| zS2ARupGz*wSF#jA2v6>&)&q07H@=3dlP6bB;NjoJ0-pt}Ys}NJ*F1&nIUz4*oWBJ8 z-9t7}>1^+3AF9S}Hva$$%E0O^h|I((f2zRvs}qJ-J4Q9ce}tm?uNAmj+7j^N7Yzg9 zrLDv}njsA-y@HC%g+O|fdtzkxl{-jlNUzL<)9q9{4X8 z%%qi^*9}Ey+$DRFw*4^nVzBJTU%(QPm^D@NIhOG)2(qW*=fga&!dHmS3b?!Ps=CXe zL(=+%jr-W!-w`Tn+nceQ(5XMd4(7$m6F7c3Ew<(>V?m{{Z4- z6%mOM*2+g_{)gXAdB{HLFrSErgXc=)ql+{fw7pJ|NvM}>4_lT2ApQGdLuQm4SlB2< z)LC_rm;V3~$iIlsgSf0Aak#HkcVl*8&?*W|$M_6#Eq>i_u9jr;(^PVPvclH~NM89k8Gs!MbCd4&f}BZ83t9 zV!Z8=O2Ar4H`rRr+~Elq+vbxvwaHjtQqsYMn3IW0LW#A~rFGM>`mML~!c8zH)=Lw? z()*@UHDx-sW^KpQMybVoX)ypuS#_k6N?qTm{n9UM;5mh^QH;k?e}@!9R>^hfwCde8 zwkHT{i2Q_zqmt}C9`Uh3#PWgsG&!m1S-Em_7`M3gWPg{=-<#I}~~tx3OKuWq=gseV_2bXGJc zLckWT^YWrf%vn}NTAl#hiOiI2&7X8qDm*!=)Md^@Cs=jRU588waSS2! zS@kL~Qk_DSN=lesCQvz&44n7S{L%3_rVs0yY{uv>U^U~+pIa`CvKtk;Z9b2eSxeI> z4W&&pGApT2X&|deDRA9wkI%>ll9T381SpLss3PEw;{O1A zHm0SAvK6H@Guqtl(IcOWP0TRerpt*e|L zKQ4fHq7EPMhlRW^kv5}}GB#hz^$7|*`As28d1?OWamB4cJ8XoIow{N0mob?yr+4P6 z12BqXFI|@I;d`5SUvDLE5HkemnQJr7ry;dH5)12Sy66c|<*Uq1j*^ltFVk+=NqxsV zlDUp{i32Tlr-bp7ixugQ)3WtiBbjk%(rQ|g>233}ni1{hP`DaNJ$egoN@||-kZto= z>_V-v$Xr`@-1hR1S4ISA-QrS&uF0yuE|hSVWWHPpsbL4Sd3^X zppk$9pzqyh>GMqEE?mU<1m1X^@Y`K+6Z6(wOb9uT=6TgPP?|&hs5upRfxw_L7vVA>dvYeFPY5^Httq1pyaGri?Q6lS7O-Es}iqW=K0*(Pkw86zympyaICnyL9>c4t$RDl2Pu zlI-~_KuBqYeIe3Tohc-0Q3)3&*pTKm!>Ycn3ulMHEI>}d*kSqT7e3z*{DYeE_F~92 z_?e28#2l4ar#QtjOMr7*OjU+?cR{s+OKH$AVv}y*V6iMI(aY9K;&jmWcdZp&ahjX? zY_Mt9#PJFSWo)H3wO6InO-2q%khjv6%a0*Ul!8V70C&swBYv2!GnU^eK4V3n%3G*y z&x+(8eHS{Y7A00FD|Y;qa~ejMH@QuclzB$Oac!~ehOwlqn`0Nft>#wkcw_MA@crUD zgLxY|*K?m3IB&(LXh~GG(P~SQ(pK3mBp7Or>KkP(rL`f3%5iS1DHACa- z+VoQb4$Mi25IjR8W2q98k-0sLt^3#8(fvsY`WQpLrCw;nl+- z%M`WBQ>a^@0-yV_sU+Il2#&`o=aWdwN#Hv}=uxs(z(b^KNE}+?J{J0}!}t?Q&Uq7q zSqgPqJ5S3nS&0^u{SJ0fs7aShc@dGRqMP$nl!V+qv}jsJp=<4_pu^l+GZS&b--RB( zAD1}0nC3fTNfz!l&>s~m=^R0s8!I(ks~UD@%1$NKL9EjlG8}y$~fDp2Tofbj*2CAAke^S8Z@tPcjlqriT(>h;%5)$w-&1=rw!U_^h|AX3$WsXk{&~8S24iKl-s^eXH=Ah5Jm?@ zJ8nhpJQj1L)Di}D!0oPJPm$)dap9-py;JZv#tFOu@e^8|nKDcVV=*40{KZIq8Wyfw z(VZmgA1+6cdTykpddfwP4J=O%yn1&n7ew*ct0NIsXzjCoS5uUZC~$wou1n6D8i$(U zXIezc18S(niyhV$U`=h*p=n#lN>`~VTGFJF00~jksU*#(l#3mdE|lQnXk=iq151t^ zmpQxz@j=J$34B@2J{WVIDy3hBUSb|t%rOE}8OEcy8(Zo_&RHQXsYPw2Lv1PrML^=Z zri?`)m4`x9E{)^Ps-$f-NBmZ4vD6M-#dNd7nyjqdl<8IK9LgLw*Bv?|b5k&&wh16O z+JM$lm2R7+`yQ4v>E+F%jmojBh0N`-x($3h(zd-MXRNUnHdd|*4N`bpYzegGDm>DX z3Zlq1Nk~3hlqm|f=_=e}ONGG?zmkP8BP;34O~veV4jiwgkA|w;omZJ$vhySe*+V;^ zsWJj%YHp^}Z&##rpGI&dn=pCrG|fNT9tH@Nv+aRoWG zcF!#XqKa%lz-t&rs?Dw%g~~Q|%d+a+M&puOj;Cq0E+}WcDo)lzd767?p}w1?L+#rc z{BgFL<7*F+&*4(u5DuT}q%VhwPvuOrmGd~2LvA#9@KE#8oaHnXq?Kx4O`A%G zOMYxG*<`Dj`>rFYPKWHbyxvo<@fd959`L{pMrCvlVHK>Q8a&p?-u4d z-#3Xg6{g!HL6FjS>JzCX4yR%;@mkAW$%3Ax_sG$I5`?wzSKPU58l9EDgxx_PC?Z?$W z_5sBPP?sI4Fxo2YhmV5g$%{k4L*bJ zu~a@6yi1JKhN3-0o|QHb+J$|QZSQ?0w2ivk_+U(_bGI$Gct2%2I-Eif8wru4xz_nP zHuAn2o+)Ai-4%*6%ma4ZReh8y_rI97wEe6H`QXu(4a0TrA5f9l&L&OEq$m7G{^GDP z@b2-1r0IU0MnqMEt!d50*9Q9~BbcLZzMT)Y9z-K-zJu(Vaco5Ec|3CzWhcOgjMfmu zczI%*Q;ONrgu9rK5YV;1?^Ff1Kb{^WW%Uj8QN|}(x$7^_G5ex)_&o7T>(79z*Pm%xbu7`F=lj>eq#D7}dsJhgiy7Uzn7jf&T!@8!w?Z zNEQkC-3PzwaTU~*=TOG{KFUjaONbo|vV4B&k(b~X#*C1rgMKAq(~_?u7?&Mru_V|w ziN{KJ*Z>8)cfkJuOHF$S*nK|9!=+fB#%V4806*@qMfiF6;H$X_nRSm65!!7dlDUn` zLR$e|RRy&!z>5QOw*9cCngZMPP5%I;KmF~+8~*?fcZ1#5f7+My?+G6e8Y*R)Cl4plk&vy7=gk#w!Mlz@|Mh&DF{_Q1^)2SWh2i+<~y()?8KP~+krer+nW8gIpC zgIUse64WriW#a(YP7bcQ>5id+?6)lDvnm_lE^92 z%gfa2%1Xiz6nvuCq%l##ESWvKG)tEKTxjng`5+*zr*p4yWPEYI%gb8VMDwf-M*G9_BB z+-@J|^23q}ONh&pLR=)Bin(0{u5Nqc1`&kM9QQG}c%x!?9Xb1UzoIN&=!;_3eWA zUtN#Df}HH%;^U5a;)7A8X73XGPn#TA$%9v^Rg5s>WGyPtr7e;{NKo`5>9#1@Kv~)` zIC<~!S5xCtR1B__q;fXD{{Rv5K>R>uSLzWi;$3siKz`ZMZ~mc_CCG-E3r4v*6jLE8B>>xEl0h~dZ_w;*gU5wI40+x&ThGualU2(j zva_;ze)dIiGUYN;Zx^0+tuDzVNMtq0P}r8zl?1DP{Z1(#TS-t0VHpp23eWTv5rFBA zaokVE5ZAbUL#;8&i6W%YKsRxq0*cS7x{t`*U=d43>o8fvk2|RKG!ucDq_m_^;nrtu znoA|>MMV(Rt%s(;D|ud0086(dBwP(QC%D{_ZQnaUXa?5XWB!Vm&`jfU(BsEf1LviZ zsX2c(b+uLn5nqLpx}>9=i1f{8>k+n5Jk_fCQ{T_f&h>o5Sb-C7}T_b+)w%?n*rzJ zhtTvS1rMg{2l6CiLfS61x0%*H8YRR1W!zk~$CvUZ} zA+!!)>>Cbtx*U~)QZwp&LK8LGOaA~Z73XRXHWlV@B`vqNL0}0s+rBEQab^hva=F8a z{erTO4|Yq3HK)VsQR?64X-s-lxe=3ObJU=eAd%HK2Y^#P@;lDL*L@ z>4C;gLTcPl{6|`R9lwxI+kac*7mNsDCOe&Z9emb@4s6fu*m;c*B-9r9X*BpqX^=&g zq>_Eqt8e+7L59S%#U56UKf0SJwffgw{%}fUy(!4A zFA2YXxA-TQ%`1y!9$H)Cu$Sr%E1IX!Tepw}IjYC*k#ExwWSXW!eEN7g{{S74gJEE{ zUon^Hs~)2vxiMoS=Q*k#RVhbE1E4DapIxzGLLT5O;(NhSCv-u?kUYha^HUNOqU2Oe zcJ|k8I*++mPWZDGva?40lyd|w_q6pR=!@mP(t?~#C6KdyX&SXJ*b%k;_r*<2E_lz? z3;a)}ihM7Ly^!*fGG{RfZMzDPsOxZ$RN~aVO8)?pVfot`O1GHEFh&}D&% zvKNl~e9%cBx2H6&bId9^vbktNQ)B1_#jrCKT&D8AZfgGQ?+4x82fH{{V7) z{{Z+@M_f;@#U%_Zdx^g-{wP$G(3b}>qfThP0FLB!yE(ZkK~Mz}Y*yg^01bz}#~p^! zL?X>ANhgDi%4J=ELP(;WwA&A+)= z;mcu?<7ubIi)0bZKuTOkuuAn0(BBa#Izs609FdE9AF`2Afid=b9B=AA=u1@?$SOlp z>d=7mUgaoO*S*0b^aj|rgBYhIwV}=VC~{$w0e2R=$pe{Oc?~%&%7R>Fw3RxrtzJ+G zH%RlS*b~s6xE)?49fORUd7{Hk@pg#*pDhqt)a=Nre4#_D(bHK2OGuf`d4|$WirhTDgu4XK;Nlt2ijJdv}5lFp? z4OQeR30k)bNo6ZZKi*b79ybu!!=1PutIqmF91dm@8^i_BSHsJV!n=}=LCi}+YjHGr zg7lS?wrr&PEjG8l*rUcNbn6G2#nC)5`3>xLS{nG&)fF?wo^F`dh2MviXv3B+*>|0MXwsKS_{d%S4%JjF9D&(v;gO>1!V;>UIb3 zk2S_Y&Mo<>uBU6d$LANZ@?Cy>BRFrFmEpf3@eSh*G&xy%okMN1rKR0bqeN1ixB(W_ zN_Ho{!xHOZIY@64%Yv(?{{Zfs`)DpV8{KYH(IrV`A&HGJ<;eu0M#Ix?zsnWUFp*$v zR)LIm{{U2f9*a;@C`yA)EE}B+tONEN;aUh5bCcTLuD&AARBA!EJhX@CbXAcF@ ztjjVK`7+!~sFur;7Pci7+RDOn{vMwJbP&Ccd*Zpm;h=oL*xG_E1WM`^<|kJTdO zd_1@hEdV|%iby>^WwUX6_X;3i(BBfg#cuJ1sY=NDfakcA9ik&p+H|u-a_-pYAucJrjnsa(H3%{+$ z^T8g+_<8VowR01~OvNQ?RmpY9s|VKlmyQ+HBSUY3Iq1ZH-#$m^5rRG+{1rl6Xz)r3 zT0d9JDbNj#`mNF5*8_EY<982-*+_3hqj2oT^W@|uj{&?0hE`hO?+&9aM(QhaF)BXc zZ{HpKLSvzLw}?k?LWbf8{{YqZS&xFg4Mx16c49aaAT=YAy@{l=2_{Wt@~zjQKJ2DoDyIC5N` z6{0SJprx=>ogmu#N9l;}pIv1?6=M%U-gbe$txe`&@ZI6kygq8BP~kgkBIVYbl7$h{ z_d^2xaPe4Jf8y!jnEwE0vp9dk1O8x|D&K^U2+g;ucN6kO8%XNhm+n9Kn-=ZqhyMT@ zjlb3pm+pc80EP8VHVpuOi~j({`le$$csTG)m?(LM1V0fJDpghJj>l$7k2R*xV`;*;H+VLt{6%0O@jxShWW#MH(JHxVrUf%#~N;3 zTMgyZYLd8(zL$PhBZL&+PTtnsjjxR+7*11|Ys1Hq(NluP<-hK>74W^!&|&c}Fl0(@ zV12YnY6WU5%K;@WFtl?JKpU$_&_|)`hbb6kN|IEH#b$ji_^n1^r^+3TYnKD6S}nR$WE7|p6fvHzuj_2X z*>BIgb$$BC=&m4me8)frpm&pNdR;#pF{{%Xq?%?~&DA>lT6xh^F=~0(t$?E9&a0?3 zw!voVAgF}gfckffWgmf4HhGvYBZIHQnNB49{{WY=Mqz%NnsYR29$!$23LQ#dTXCgL zacWAEr^VXKtMd zDvaVMEhP&{mf9U{w5do{in;)AbGGrTWGw_YPnws9%}pD6$*e%gY#Q>pbyZ0U_ZK-JNxN27?E!NYTb2Sq#D!WPxsnlcBbxU24l)UO&xmAsapZRT% zTy!oGlF)B%3WpA*>nCGC+>YhmX9~U^ReF7EEIY(><&Wq$%EwrTM$BiJ>`>7NKuQ4S z+;VqqK>1Wo%CYh&aANrj|uZ%x$X;*T9T1L0RcH- z;ghp$9y8=7D|CGI{UWD0>yty#5*RKZT(rW_k2)Mqq87UiLv1PpdyB_yclfDTjRf`t zTHMB<`TXv%=c@ik@b|&#Gor;^HVZ7R_9H-XrXGGnpGp|ifY>E_1nCzx=t;$ONNux( zD%tv|#11~_u+SfY`Yu5{X!wWmL6W>d(Y#mW>TKG55wr?rX}95`oizmtPbK-yFtxB0 zR3tKqC_*`dNOcK1Y_%n_vd4!lev2W5<0gWs&$XET;?aKabOiTkRJ7n<#{#^(qU3Hj za3#FO#0cwZr%97esRX8K%8O2=$5o}c>M@*nc~ZSfKThC>Q&wdFW&|yTZA~=I4r?68 zgU?GH?XS@~IS0ptO7{>yYq=VuMv)ORO=c@q0alNho?C@YMvob!smgF^E;cnjlpp|9 zP+Z#&yB*pG>FO0MHI9j;q}{f*S8?xaukc#H@ms=5cM&{ISF5>0!>FY3KRh>1sAXLC zYi*&Kd4inKXwjYd?p!Ddek?W4RZY^~r{lQVg4=YYS(mzKz{~*}Yv0EI0Je)MOGY!8 z;JA=GFln)Co5XmH><^Mo@IS{7h#w3*ZWcMuN zaFLPo)9%jE%b4l)@J%-ZekHyvyfD_PRE&=%t)BQgUvy={Po$B#&GsVz2#7W<2GQpT_dXlk-N$w)~e-aJObdA>p*mH923n*y*>Do>`i!5)4x<=Mc&g3W`C!fcE_{9=@rK7bjI_ zVIZ3>QE1*Ha+@4a&v^zDGV7VSo;qys=%R%e?305UTTA#O->RE9uE0U!n4 zUQiBO9h!H_(HnFjr^>_Xs_>&r4Kqx~TOV7VA7w0j5qO;A7Yu0iN(D>9oo^^s9#<-* z{UK#cIVmVo$`Z(QwaXSMQo#yIQmwX}Mr5@x5^`U@{{UrghGSS{u(l@*+{S{(!NXDH zJXHOe;>i!oM43DZ;oWvvZ$NiNJgoxXM=?a7Yg~Sqvl#T*YNkCis{x%=Uc=>zR_yBT6>~K*Oovj-O+Kk8E-3Gz0LxX^ zV5Mmvx{^s4C;P)D;iL1-EPWNiUNv-s%>7!7A#qQ`rCK_qv*DkK$cU8$p>3{Wbzgn| z02t^`U{%*^df?|CH?x@EKlMx<6vH=cvV4E+LQZ<{?g)4P07kwx6p?h?%^@S%TmJw& zF!Y2U=x&|gx>3=LIlIj#o^P_uGk1qo^A`62xaP)@tIF*}6X|QWWB&g5Pvh+0s~-=# zap>M3u%1svL!NvyYj2yujy^^toh5Hd2?P7XTO?_@8}!2)(pbp9Rz68T-FgezwGwOn z-?~x5&0ZZPhq*a7jIkDhw?1>aN9h#b>@IzQn(Kjj4pmX8l{lO9Cr9A-jQ<_Z0t?%gfc9fkXP z;D-~4>KXAUF6i|zHvLim03bo1sCZLllPX1PiSZIt5)0JFE>EDeU~h*r5{T*5pH%+< z_huujYMMXgA8>&?R`7Qj)y9>?T*FR~6U`}+1OgM&qm8HS>x6zM1AXYo^Zk>@L@s+Z zO((#A+=0nogD!d-e~J#pbz1}}hLF3Hu=Xdg?|@5VC;bLjcqDAbxnH?=!)h zrE6o0HI*bRqjM0XD*N8fgK_WtFh=7P$4;z|&jb_EQMc`^Ti3h5UFvqDw=$XMWU170&1Us{{Twdzby?RF2AO) z1wpiuLR7soiAX15()efbtTo5ocl|$gEc-jf19X^M!N|#&Uk#XX^gZHZAjKg?OLcYV zNOJrAMN>_N$Ed#8AjK#Sz}v}j_IqA*>xKMWk12F7hrVE2OlAK76j=tc;_h2zIf4{` zPf`L9`iZwvFLB=kIL;j1^g}+&@jaUG?+c%hR_Bide-Dl`!Ai4sbEns2Av#){3PEm6 zeZTJAWNNpdB#&%QgQOIV)u!X~y;fCwB(8D0y9byAe8#?OT|OZ`1AYmrIWIZN%YG_2 zjguu9FS`}mlh<1a%+NdYlrY}x2 zex900#{!-uWBmYzIdaJ!92$hk|8+%U@-nxnvlQsd>8($pyvAy*zkT8ScckjYY0 z5!j1Sm{gXz5>P=lP{n+#>p_w+cV7H99(x~KrU_pQx|)XDFutQ>-0vM0w`!C$Q~X4D zaNv~MdlgC!aLZHbkGA73bIU4m^tCY9{t{hb3UMh`$vR2vyB$xSll4u|hXLXWJtP6) z{brW?T~1B~aN0i&xa;9r*6H#fRNJjhYEy&)Ls~|FRDPhnKTWUX2eH7LQT(^Hrx*H<5Q5P#NzwwGwd@VI2FChH zx3(WErD^_SfNz4dio|vrZ^v zk{Or5FB<-@U06%-;su?Na{$q3_zeQyK0Mtlw4UZwJ zGhHQzm_)|mxb&6o8<6U*O|~fjTK<68<4!~09(FaiJjdX=qAnrDj*-L;R{sE0O)i** zmfDo#%{-u^%Sb9+{rv}F)4y9{vTQMr0nT9#?y{W*Au9=Ja4qjx(FVH>@0l!AUTn9d z>WZ^tf89_>H|w!B{Kg2{8JOSY#!39}L6*I)b)3V76jY@W z2_zCn_;FKFFm0Kd?r+bEv1K!e%v)xk&lE0n)x64dI)%ETfKruun_Q56t?P!(S3K5h zP08S&9XxT}*05Nje$j+oEFns6=gJ0=ZkOM2{&>8@u$t&tT+O*Ey1YV>@3Z&yLcVgZ zDaEBQ(1dB!rH07+T#F0+h9*SX>0Ch;w=@YIM;PqxRU}A>6=-fsmfNb_C`llzZS0*S zpZC5CJj{rJF$2tm*x2a-$WNeFtu)q{Q}4UVQkBat2?fVcY)B_TwU581_={CvP8oMN zc^jWpSZL=iu(|I#4@5;eR5kKb5lzc*Ehw~y6us0)Ptta|N$PtZo%7Pn$B^haa~D>O zW1`YtJgh#KL+NkGai<&zr=_%#-j*29Qm_TarIK&B-uA_{6?CQ6aUK=};;X75iq~UJ z`P`L`WaCa{nv8`s1;Wy~4}_w_`+)sQzrOemC5V_>Bx6PSl24}u`YJ&yvN^}V3wo?* ztvujLg*r5coU+0S06IzfwBNAQZF`$yvX`Z`EO%#8d=%Q83KBI2!^I9=L8+{vmS#J3 zx6BD`%?-P@;_100dS9k3-_i)`EYrVp;DIWMEVAK-!d{r9X+le-NJuAp5EN0h&f>)EcHaUtV2d|H-E;nl zU0U#N>$rL#6Y{ghZ3)=(BGVj-mlE0>E+8l?MeYFt=RorkZF6muMj_N;Pm$o4hTEOO zJQcx>?6jNjsJip?Inm@F!)f*a<*C*}Rm>;NtdyIiZg#dKONC3Hvtl`mDNMv8wavx( zggPV*RVq|hQu5z&V;sWL$O=etJxCyfx37NKD8sDa4*ki7ycU-?Z_g$1&G8eQAE0>E z@rzrd@=-DVCT5;O9U6jLU0O*aQN4)(Cs$q0J-N*eriksJ`7bi9i#zP?MyhjgCy%e> z49k}DWfn}gDe@`pyCFB}9YsMdB=uH>rAa=TR4{US)>yAL#Ays}BZxXE!|^@hR8A&% zjhC9>I2=UGjY8I>jkTo&F5bkGz5|9*hBGPt(fKX5115TQy89BL_l15sFT-~p_>TeKt20QD=;^nzX8bNW#U? zFTzd??l1UttT95$kkZ`)H7cJ`l`d0lw2>v2*AWR?wJTPJR*gj=Af-1un|bd^>AI;J zNw_~ds5KdS@&MF;ewvlgx5MY+{gb>Yctyz^A**o5idovXLv5JTX|$ZbCPhMtH;|M| zk5ggC8RP`N9YMVz%}81lbcGC4VtB)|-!=&2*N+Pq}Rlf%=}+Ab z9{34?)OPIB=s!ErOs^5%CEE@+CYhD#lF&#{YL?@mZ?(M1zo`81qQ0X3`S^X(I;Na^ zwC(f%0QpfIt}pn?t<+kk(CSop)W;(@IEtF3M(RKimX-kz9=V;~oiRXNZ+j6onNJk#R|EZ(wgPW7}`j1QQSHarOPw zR$>!_{{RV|OjaW?_{p12jUrbRYZSr)UP)X;Ah?w%TIyVdB#RUI1Adr$vbXw(^Zk)x z#;S-pSU<{(n4jX#WYs*+9x5`U0$Wm$DXt`M=%pT;i}l#xj3C~`pFi0$Tz0!n0RI4& z_e8Hy{8Luvw!{2s%`;j*ROOWH(O;1N3DZ#1^RUze~u1loOKN&)d|@3SOLg>P|hb`zgh5T`81;zdDJwFFX6F`8qhEK%@kKwUgl?M-hPch>R%5iRWKf%FFaJ=R-H`;zVtfZUY;g9?L?>5hP)41BQ#zP^Mtdw2K44Mcan&%qdBGXDT% zd6IspLi`i5+maT>V4zdf;xvw39g(1W1hxn9?}3`;v{;vZd7}&#Vs0AWKlEBY_@4Y0 z{7`Y{Gd09c0_Q#(XH+JP#X4;YYwM=eoOQCRIT=m_#&snmc~t9bxZ2|mrLCtACD*@t z79oe%M-y^H9dGQLA3_EFS20{v_(=G;;N+~sKZ=|>I+0_N5rIfC~q?~8jhe;gHkhcBAebUV5ib&&=LLGB= zSb6gu%dv`Qi4G3tt{YPG)dMxLOvwggwOT7^jGBA-ek+ZIt}37NHe`h@z!Elb2Tqf1 zqc%{@4wl=7oR*pwMK~f5(lqZk9CgymQ{FD=ymavc#@-b-!Kz0Nc&P#sks++}Uauma z{WL78CM<_<{e6XnDX`FO!EvQLum%9iXGrq*I5ZC8N%^Rlt|l25RU2I+&-O?Fc;@}cPg66qw0WJBY)>AdrHr-D7aM`O`1}^$cqhV6CdH;i zukmJ0IjZE?tu5+9Qd^emBq>EIZc4NyIDq0D2m`SfH%+Efv#GmebRLe>JxRnUVn zI+EM9rB40}Q1=N4vj*JCe<&P4qEE}&LIi5H12as0EY?(tO;JfgX?nuUl&lh^gatOT zoB4-O0Vfk=%hm^JrsV>j2^#~8!5NK(wI|Q)qECtc02DrR^Y9-9X+=PE3=6752v z1p&4xqR0BXt5Qdp1*P3VTO?SHhXQo2aoe-aPMV@Rcw2XNj?EkRm8#Db{wgwNtU@%n2O?%(wdDaF6nE?pb@9a+Lj8ugp3)j z0k?L?ipPweo+&Nl06cHE_@ z!j{dHrCC+nH5FA~ zs!EK2T|$~bNp%elN^~I!Mx+uBo7|j261G8-T`l>#uyijrloIU*n(5{HtQilAGAhc7 zc+~hoanr*7dddmP66#z{$<@k< zVv$j&)5>I0<_DF^k0B^oQ2_`GM5F-Pf*c^HLC2(0;|%J_lS6M`53U1jnwaZtGSa8xG_GO;tStdt#VJTo zHXl**SgG1(%YE0U;<$sQZ|WPs?m*kV$@1fdQsLi;T%${Nbw-_*GwnW_p(e3Yg7XYG zRJNAucX@)e$4-?3t0hYEf#oL`(85{oo2-s8O3Ih@^zLXNY6;WVxj_g%6|3AlWvs`- zJ~+Xy<+aB@v|FOpCq|DcO*oaPI3GhJmQ9kRp-3x8HnqXSog2NSQ%Db&edg?Oy!F#{U2W^ll%*@qi|NbVz3@LJibPX|PZA)g{NAQAoH$YUXuJj13mMPko3z z`vd4z9X=f9N1hfimh4*RwcZ3=w*Fp8g5g((uNa24B3BCXk&l;(@W{oZB z309WW)VMQKGNQYwT%@Wichpo}HU&bI!eiel9rqs~M}oMejnWYyr|X#QPF9%SJbPJ5 z9l%{oFBq9XR5&E1@V|vv%D z8B$ZXLx>g)95Zs~@d#M981_iVI9`?3)U+21o%=xE$A`oyr{QOTnF^%-ai&Z0ub8|^ za6+{SM=r_YB|2>CjOt?vR4Lq0O^hZh8xj@J*D_tb8}9S??`mHgc9>%ay@Iafz|st(!Wv zA+=R(-ub8HQItL%y`@Ephrnn6wIlJW^mL7xy^Cl zKsp0{AlxN=U&32_W8&htk2ipsvxM!`>5e;@DUb1TjRLDot(OuMW5jFcS^b_b6%=F5u6-iN{yyZ18-$bOkd9>h% z3eZx8=qq-?NeTfW%>u~6=-YR^pB{cmm>iv4?Ry#kZuZy25I`WUuSKiz?~HYcEmLv< z;RgvCn)^b#nw&yvm6*EQD0U4k1gRR39RbM-N>Zf-a^2D~0=AY}+u3j*6|07^vJf1? z8?L*2^-f=hFA1C%@X1Kc5x5b<7`Zihf~_vUU8<$WpQ+d9$zHdl%%34jkn)tR^y&?d z-9m7WqpOzJX|Mo!4V2n;(m>GGow@2%h~#d>h9uFKjkEh5BOZ{7s^xS znwn2~-edMiDvnvml|(wlV<_c`s97mmWl|VebJXtHxZkP3oh!zfii+$SmBUEeZr}&m zBxG=Zgfe5e+IVl2+F^fCflUk&JwRto&Hn(0Tsy6j+uz82mkb`5c3Lv{IFFG;OYqCV zFm;|9GIez#bku|Y0N(@nVGE161OEUh`y~Dq3s1c9{{TDw>l3~h_#IG?muGOEl=I0z zZ6$K$TSyic34e3$K{z8^@ui3PLL2aS9eX|f{kQ)B+=bKpG4Mi?+9Sc?9#)G57AZ;` zlvD`mv043Z`D3!ba0j6KCN~GC0>r!g?>{n>4e&dKiZ@O{fYrghoqogga>Mer6lS%o zKgvGHt;1p)7k`=GbWFbwoC0s>IlM99>ZM3!Y&!gyY{`(MD0!^o`qyK%#q4?=w!#U^ zPKMrrJ=g_1+H(R=GD-QBMeqm1^q5eg)^Z;YYi_X8Q_gZEbhw3sw=6c4rL+(U<$JEBy+qz7IGux_i(A8P%BD!-+%HxlSdW#llccg}}C> zsQ2xHvX&cLs{_~WP^H7pPsGIt% zpMCICLj#43L&&&&Y@>=vntKx;1CaeM@mO5&Pe3HN-xN5CTp)yr48|yJN1~H>`~8R* z8N+FZ^n6d*NocIMW1;H7hfw%V>I>GZ@Cf%$?_YuNr z4uyny{>dCM0B&Um{z3l$ak@>r;KMV7DX9E!sK{dbGcJ&~5`C1WBsNI<0f7t#mxf{H z56~rjMj@AW9}q$KT_q-X9pV%1G$L_lBScesBKdMzw*LU*l1TNpPrqC|;IL)OnZw9^ z)JHb3ocS1S-tV%kF9+OhW%mj=zr*MVQPAlbX-noOs96G6TkZ#JIACx$R>>J_r1is3 zMj&;sGrd3jWfoeR*Za{k)Q|rF0HR#G@bTi7SD`&fq2|sLP+ing62?ny))bJkLj3c} z%7`T0U*6mfn42CA5Ee4K%HJgbMLn~14Dcbx;+t+N{5SkraT1i>BAuALFvg=k(or>U z(WJ2`0IQG?+fFg7wbHOG6R^3*KLTm(8ix=0e!0Gg4vunc+Bo&(;18j1$f#MEz62Sn ze3lb0hrSp%gGp^jFVZTI*<@8@CAB3ExTw+8c?nyKS!4iJVW~o zf-w5lxV`l5Yk#^+Ppf!&qy~8Z0JGhi>JX7HEO0Brd$N?!Y33Qrv8kwGBX7Z4EZ{#^ z*5%X+MU#g9iRHS~U&I1FMG>`FjBdLlka$Za{w_=oiJ472omk8z$Dpq?B!L86!_I$HR)BhScXTdwBhp!Z=aFP7_f6AUrtD zSz{%$LE;@(FuyjfRaEJ3xhg~K7ab~XOHvsMab;F*Aaoma6qPme8gm)dfDMMaeA3g? zxzglwjkd8O-c}zqyB~{p6V*x1Ss#b=7GhM6QlmXJ_>VheDtyJV+bDG=<7T;P0QKi6 zbU4GAvq%fAeO2`Fmfe;%0?JeT0W%FS0q0;h78;rhSJ6+|J17scToW-%q`nej}AC;{p;@?~7d@g&In-8X>gpmw+oO|^h z_ObZcD(R;+L75gLs-h=pQ-MZHWe$e*T_Hp7*PyGP%TO_2uLHD|x0i z8JTiWR-~w?3oRr8)Q>~Z*k1U(!a6`4a!+&Ls6K^5 zt-^yFo&o^!Bi7`lS~DVIrbji%%UDLPVPRmjoAo7I3tV*;-x_E-M&>kt?R*tH_+wpS z;qgF!;v=t@Szrrkxt#qW2Qk2}QarE~aj9tmo33|IUcKO*?3<5CXPr5i> z{{S?apPI9*_G!pL%h_&2i3*b2&3x00xCmD)Boqab2n3Y?o0}81DC+uIiOA5>@YBY^ z{#-t4(i{$u9Lqygx2hfA_Kz0QYb>j!XoB9!Nh#qLw8KP)QvKH%1rIKCN64(F$O~^so!+RVO zK9$rx-KXi#Poi_MIEVC~ilepo5~=BWDEav-Mz-FL3L1Bz1gQB(U58zdp~I!eT3gr` zJjTdl3vhO(-O07iv^X45%Ca)$e=}xC&`~M3Tz4+kuC?gOwF)f2G9b^!2hGCUs5wprP1qCA;f&)f;}E zQPBM%Hu6iDo_rBMheq?+X#jX6OH8U&LNv;UF(na|9i1k~LJEQAUc{-wK)%Oe zVQul6uC9GUfRNt*0GC#jw1Pcj(#YPCCB}=bIMYlmf~MbS0HRHXo06UG6q9T1e{4RR zH9ecApC5u*n%Vn6{(7OttV8d#gff(^K61iBHK-d9P5Sihd`)H|1H*t8?$YQEqXnd2 zUsO6o<+|imOH_wcf#uRdN(ZP&*bl#^ENii{_cXkH!iP^mk*6UZnk+euO;jkTityJ8 zVMKSEAg`Php{C^`_PTnVfdKZvu^RVF6GJoyhd&gQl#OfLU+c@kVWPsOsci(b{08&{ zqyT>#NH+?#_uOB7`uc-aNXQAxAj{ws+1)4uE3

    lHgO!Bi;|pi<^i+Cz)g^AVKV z)_}DoP9*>mlw4c_K`9{Hs1l>ZBaSj-8Av>cBy-Sd=5Bx>>s&KCGj-#~&r*au*qba# zc`(Y`a4n@av8viaZX6qsQhIDV?r|DQhfHkZ4YeQZx;IuBI{@GFhQS1PEFtQPQ;hVv zPD5#Qvn`g?v^jEhq1C8q8w+f2r>-S`1c;F%U17vHgXp6>5}aN)Yu+#POLx~A4L!6X zD{@h5rEj2Ip#DPR-2L&Qt*v!EIBP&7zRDdHAd*7&J6`LAg?4OqS0!dGIk2>Zv=bzu z#a!In5oC>9cO+lXV=>oe)#PizTsi;=wrxEAXky^jOiFx36sO!8uU>~2)Mg{a-c^-pu! zLYE-NOJhZ@Rt@hbOTv{u&x<7*F74n@kkB@KhL~J)EzkBtx{?0s;tcoSKg4|#flToA;m)A^coee|xb$t* z(|Nt=Z!2N|SrQ7Zz3*%6H`{l_AbYzFjN6sI>GI$e3}DV>9p^Cm1ioj0JT8X%08+`(Z{4||gBafN;tg!e2!g_3m-i?$DSqU1O zQJo=b9^kFTSbetraIIrOzE+O_5S@kJUa|iG=079`t&_N2lp?)VkHe~kW>+s{z^BTX zUP%7{8UoMcG?Ul3I#d2;4I{?!O=h&G+~u24&*hYJ9U! zsBjM_QY8y1O;y(F7L;xQ4VHlkHtpp$-uQ_=DI_k*APqhV@loN@i?Omec!BfP1f_U~ z$yA7{Vxz(Akm~i2gwuIRX#fxIsiJS!dylpn-jEVI{MR=LqG_|(T0D=`Ae9a~I^i+Z+_)j4iowzxck1MJ+Q=@uo7~! z{GVbLSY9Kzw3if>R5Lh^Qk1Pw=+yYml>xf!q2^I1dz){t9Wc?0GWIV%zp^ZK5rf%< zm*`7cM}9(-!2ViOLlLV{XRBEWN+k`$X8d5S+Q9r&C9wrO?zK?w27 zAtly~cXe+E>Iy`E=^@7kL(R@%ZhX@H?{eQ2_zB-xjwj@$m$$!*w3HuWfA=&fOcM4 z<(Pb~J_+QYc#Pv@#!>r2fmIoaaQ+;F8OVsY_>;_Chxm<#B|{AE(vse71Ll^I{7&WSV*XQzaPq!Jsi4``1$C(^NB;mzNYsu^^t{RfJVJ#lsv2 z_p*S*pfR>3M{r><9=yvHzuWdwP2tb?)Bae){g{glCv(zUk+{ulbB(|-_UN|B~6U5hyC0dd)V z4LX8NtODCnKWlnpx|?W4{ZM4bptfK>zfg^3{6ezXY&72wrAKuqLe(x{Sz5h=X;1PP z1d+1#ut$d%rE_n06XXZgG1<4`EyVg~?FRC`M92&kx&&tosbq%t3JXG97bI=l^TVR2 zgZhrX2vr#K1;B`w_qcqlqfCw?_-W!zazf$L$Jls%by(V}N(p4^3Ho9ZD&%3V*%H*kI!pd1zq({&#GjSJC*V zXpR|;xeyPQs!ve7A>{rUaT<|P;wEg*8J{Usq%f$|>dd6iisQ*a=9@>5#CtB|Lx~Cr zQf+4~Y(?x3b)dV)?t?xRQ((y+TNu-8U&+69Io&)HpOwa4q(|YFRmm+!RAUa67M&#$ z&;pVi=MrQz`a$X!VPkMb@mE(>P~q9s^5yXQtt}1{OAB(gFh9I*N&f(<-Wnxe3h6ml zAVzkX!`$yn{eeBn4mT0n`XxURO9N)lJ;&6Lq@d_`Qb^Pjq#QA|RRNZJbnXQbo{5Z< zzBdH9hFdN=ecmXr5~Ht5SkZtVy-5a41?H zJ=1=7)6q+wnr!!dfaDrU^FOlk;pNT}E{26h%8oGG%Xuq@1yP$y)(CZ9EG~7e;tIqz}8kx5%{xix(XZAwXbpO#9~+<>NtQY>$=+T*pb z!3##ET(Y7ppf=tXOvZK1o*pywK`T9QZ-?ATjFN}il=KGXxD=J@O3>;>(n5#s5!2TO zWT0BY$^~sbB#zBB{eH;-l=5eV-Wo-vO5x9j9v)!+T&q>|x}|GLA;tYh z=TQe^Y)G3Bkm%=pm0dm+hTk(9UE*E$LT2$#h1AJ41=M(TliHCrK`%J{8SZQ9LPAhE zfg~L%uml?f>5O!yQ%TkM~`Ok)q)1x#001CKA4iZMT6E`oklX5Sq z8h}x_CggPo-w$;|$+0L5prFgxgb~kFi+_r=EU!-#`deHa%9MmDPPG+^WOm~rWNzSO zjT-*|#0B>D#|fRAwCz_mng%y4Ff;?df1mD}m%K!;CBl~rCT7|mU1DCPyw+07(V-bC zSJb7hIvG}_bt>0$)ZeZS>hg4RuWv-!c;bMWBaMxBJ6!!#BF(hwK6-vj62y$b9IP!d zYArI;TUgm`pr{m|-UqJt>TwL%xDY<7HC1ce2yr$%t`l*UJQMJxRp>dHt_oxp(ur+6 zj$G-Cp=#A)rve6*6Mmw=TcO04zE?KI-vve^X?43+{{R==Z)-hpXD8-~Q)5@bslsV* zASEv)pYJ63l!p^-D^R&Yt+7s(07V1=toO~M$d>=?+WQ1YZo)DY_45S*&Xmcdw7m8nsZ=Pdbw1g#`rZ)`@E7f9k>HSkA= z2W(M>o0g5PbVnJxFZgz;CN^8nRK5zyOB#^HKCANRVX-EYCB!ZD_Mg1(9v)^AN-{7>xxmwaV+&JIJ zr1oC$>5{1MQxkyq%@2OWRDOXg3hxIOy+4^{Wli;Fka%XRA#C>;CR-CGQCKB3OnJLk_i<${n zxEBc@@6#F@7E(mpYJ5>EI{9@Zc_Uxian*9ZXirjXKi8%$MkfIZ59nmQ(o(;fptT*y zP$am`K~4tA`EjYOujN9@O3jDvT-x}LQ#3AZnBSscWSkr{^YyU=BxO4=(U7RLn#;2z zR9q@7sc;N%K)Jn?wUmvI)oz%heH#JQhRV`62^b4x0o<-d{dY=vl=*K$l*EV>dGWb` zrMYQJ+i^FzDg`zc`x~2E1!W|6?C7KZqE?H&m$!YAVcg$IfaC4L{f4Th$>q1sWtFdO zmiT0)76kS?n{~p=M)vB)-1roFd`c-FmCm*J7X$Mkd{WvqQj;~srX@xk)4hTur9@j} zWc3z3Z`|TOOB;}<^=8)y!1C5^f`Walf0i8PgR&cJtSkj-O3)m?K%{~{h_(PJxD=($ z*HnsTtQZV;(z5)!9)jpB(rV) ziqf~#Keu%I6`%FT7HPJqgDBvGxVJ)dl!3qZx}VPwo-MdUV+Hh9rBPaV$$At)F68rz zDJ#8(`t7UtQ{VSTpv0J}Ko)u!q;2lgWMJFPx#n#;g~f=!U%nq+uIWY1MRN%(xC*8c#b)qXH!NL6%@l{Tq_pdU_PNk#s|;6|c5+W!DF zcF<1ifo}}W2hfmHJDdD|cx1`)*A?8=T+9|)n-0?9CFWdEHX$opsQw^-5rs21aj&9_ zc-y41HK&oxPyH=FH5_aI02O?YWf-|5gxQLw&YPxXVy47q$sKZF$8BRAC{$8?mT%1maWAtZuq3u)A=ZNH`>I=RGL zIG=~g$)^|~*^Fa*?VJAqkt#oCuN3@D&5gD*2N83fN(_rSB2?-Ucepmt+K3Ce1Ow9d z^u#Aj^3!3je!n}W$&J(&*v(+@-{RCPz#FyFf(0r=&^Gv{0N!Yncf@XZShMw&lsy&axChI;udIxo1mgg zj)vNFl0XH`T6b_1jjTvEB#UB0V-^MN1JL~xU-yc+&Mjp_kD2No zc&nLf^gocDB6KJ@fINm+W+SUfbLJfkHLXD?ORp#-6R40adkiqcB)M8``RJqKxV9i+ zw9h0T1M)vr%b$s?#UC*IMtmw}th%`nvh(72j@pHUVvNC7jPhFw8mtuAu~*bApcTuSR=ik)ufock3T>~hZa)o{)x1B_X3p`$!#bSe%PyxkJjv!>$c)~l5`|vcR)T*F zgxIvJldEinbbrbgHo86;BSiOiigLVPXXu&tFjx4UOA_-wUCx=7HD*0f##V*4%+)RJ#1tYO zFE?jz+10A^i+D3Ynz-#W+O%5VF1}xx)!3y-RmPEYkLFjaC zjxW*7PH71&u@=80%eu>_;gYjKvz6m8s2$(Ic@T$BI-{_<_|r zR#deqK$R6KXI`Zfd_t#yM=w=Q;Lta)DtW0dW#}|)F%_x~_xjQU77NA&< zH4)q@Fj8I`)3_}Xl-LqfG@Z@Gh!(M9>&yl+bhiPol35(g;qB0#XYIO1M9ekgndIb! zuLNZxC&7R9Tx$Djh1gq|`G0T+OaVS}D^iQV}NF5`>{zh;3RNL1neFr3Br^ z^@0h)NtPCtIEJ|FZ*$$q_YvxdNq237HMnRzbQcG?BOT(ldUqgEDiAUjaHMe@(wAJD zm+CU(QrK~^t6CqH;8)AANl9&K8OkdSqkg7}SLonc zcx5HSz#9wqof5Bxw3yjFboWtEtVYW(CPaAA=1mnR9g>2^mmZXxtswxol%t>v0R0KP zsu>4nci&z|FuyW)(}HM^Bb@_nZtxmN@EUwIPxObRDNH&;uC`QC;L=v%I!^oA{kAsQ zKG?etE+NBTiA*eGG(ThtmgPotrxL`7OJ%JpTAK=OT+JaxAgad0RkjDGz9+)Ne!=n5 z-#?;-RV z12nTeic9ljM3hTH8j4n!>IwqwkS;m}X*WnWwSmMTO&E3JxW5n2^is1)lr~eC56#Kf z=9JN%lHyb)2(36)6v|D?jnEWJmbw7CfCBbb#Ci##&toq0;its#K^Y$J<^2AertvbQ z%xKi<>?bsl2sWG@?U95B(5`-4>nh^NH!^1u?n^$O(}B@q+esk%N_v~`y{(H#DP@p>8*UEUT||~x z*a>mBJ^l+6T&Ta=(<(BfwM&sH4JJZdS#X533Q&b53L|lAC;)nDzQkAz8cg@7vpzp1 zTl_(Rq|=h@-Q*97Rz#;!*5aFkQ&-F*LKN%PB`H*k&m}| z-^=pq3#zIPt{JVseR-oNzEN-*5+=x-8*+mk7C}fCCgSB+u-IGgiOr{{XbqLw{$IL_ zB+^)z+8TTHKVXKrPNy~!w;XvS?$eE>KZW;5?d*5=!7C`K__XV><>Z-7Q7IZcY4J(7 zsEciBZK&&9AVY}KR1lR~-$D8g$@bV|D_4d}#}2K8fw%fAnCn{R+2jvTn#&3mYE??D zK6NPmnBC07LZ1QEF0V9?>!Zj(IB)6FC6U~77~kIPgo6ePrQWH@q~ zG7a5AoM|XZlY6Sjxv@Rf+T#{y3Cdg;?QNz105nj)TwP-3>D-FtQ>z7s98^iNn?V8H+r>-mIqykKlG}!DeZRcaElMJLYJDui0zr-6OcBs;p)|I*%lfION zUg{>~0(a}$*eh_iZL^X#xuoW3yMH-otas*OA;({R4K}V*V5vZpy05jYJ6`v_@h%D( zzo^@9&6G)MBQDT>d7;g=mC1%DxT&!mcS_cxQsaJ5LA8a(oBM-dzAj+G+GHJnX}n3e zDg@Yzg9waR@V22Fu}-F$gBM^pJ;*p2)?Cp$PkqwpyLsqAJ#H1R*56dg!< z8?oZYA*l`(E0m`1%mUh!l9AhQ%7->FT%XHMB}dt+(3(lLVH+n4^)eaDet#K@i!`dYnCi|O zDpM~vEl!<+ZiK5?1X|ufwYJ7)rwFRKb+aDhbN5pv#|*Y}&Q^h8VP=mDBy3I`W;Lm9 zMatQM_5yWtorJc~pbfSp0oLQMQEt0pG1mqxhsNck?$+KU73!kD?!O9tq6NyQs zQ)$i@LrZb$gKg;l01~t*O8|d_en$>&4^rb`;5_g0PBoDg-J>c@6@OcyW+~901fxw=+dG|i80QbCo60lP83Y(1jX|>$W z`C68sXCf4G-|m1?RN=TiLdWHcXt3&Lft8m%#i0oLYg%x$$Qc$RjQFbc9=$`tFJ(n4xPop>9*qmYlh7zGE<9QL2ojOGhGy=m)AQh zPN73h+*GHa$!!e*Z#}_Uk}YpFt$@4`Ztu@T=E~B{v6Je4sWU$zA^35hra4)Z^3sW5(p_#LrlWEam zX66ur9DQv!5tbLESvPPk9)Bpdi{EX}TtJ$(w%Pc9i5axfm-TGl{6B-@gfqfEC(#x& z9V&qiMKV)}ZAh$g6=i?`A;p^ntM{y;J$J;)JVv3T`G<5laNN!=ji%#`kKgK^+GO0z z4OG@3@RUl@Q0u`m8+9!>LawACr&VyBDg@XObnU%`iLD0Y8+sua9>4>`i99v?r=E#f zqsI9GI*B5gDPV-Su%_8yikDXFi7qWSB}D6RHbV4^^cE*!ih5|;_iC(aF-F8YM}9Z5P30dFoJ`Kq zCOwt7U&U7`!k!qffWZRh()Uw{Uzeejp~_ zh}=TrbVj8({$Hxm;Aui73ZsxBX-d)nvX=ItU=?ti8`xU=W1^*zy}SN?cc`=C?0;pT zk>GFh3N<&H(GIaPzg_VI!2FpVaNU6&NS8jc@|#`m*DfLg5_%|t?w~-@4#yMXY@EpQ z``Hb(GUg)f2Han5Jg$kI@u%VEgY%w?nfQz1hdarf*ky6(d1Z9JnMk_S0Gfi~O0G(I zm+O5bSmDmjMpNY7-W&L(G4_IP?qjN% zQe?S({{RVwl7^cjsR#!D0KILn(?$8O)pV8A?K#Yaz;m#_p+(t0{?IFYHiovc*8wus z7QCkl-b9*86BP>6V5E@9c)7Pyy~j&nq6ux=+v2Tg`aw#@*bDf${49Q9VSoP62NQFy zYMYo|&FhM5QwMN{+`;+*m>MAPZdj;7k(U;QdnuB_nJBw}ovd= z&ntd91p8&*i%n}WlNPt1vjmoq57kg%pp$*>OGjb9(gpTfg9Kk!}7wqTMW51^HLj(ha0)X_Zxk_s#0aY z9W>hgJvCKvi^JstT7|?~gTN&Nt+l1)i~e`^$1$Ml?L4lfI<8XE=;IC_;vp^amx}7< zW@eox%6Qkm0WX00a|>NY>s+OMAf%`~4P5w~XwQ zlA?2XiJl|ncwmI8MO>wT;lJ)Euz;d>umadqVebokeu%MREqS%az#mN3RzvuZ_*ix5 zG{|}KE^4a2=7wQHaLkgme}RNI?XbQ70Gk1j97w&2f)%9L?g<2rqkK24ZsSm+2hvDvWdXx$hYb;~U-8l5J2N=L z6iz7QSaYO*+|F^BD_ViuQneJ{xC$WJ{Vp*fgg9Qu^T9XtEC=~S6Wn$5Dfe%U87<0W zYK1Y_6)1^7Dwi36^JIkF{wO*U02jGc$s*lxDX<%8Qz~lm9Im<@PvdSvtU^UPqT|iT zeIzZHv^EX~-DmsYrhYNZU`Q3DTPt3VphFqoP48cr? zTPaeJ9;{Y%Sl;Dn)U6gIg(B(P9{4$_4t1mi9^@EkT@y1?y{`j>z(0S2K-4qu8D&RG zsBp4GX?*7p+f&e6M3&QgIF}aktd$!J+rLZ7h!{d|$LTVl< zD$&?@z~Pu`XqUkGY?h9!RyUnft08md3NrlE0 zOA|B3WXYzSL08B`jvjS83lEqHLVDiz2Vwv_VE+Ka-tAd`O+M;OSc}{(ENy8201+qC zWa7O>GcJcJRaVkTAU8Kb0QLn51P}Lo9hhwQ_eYsQlCH-6Ve$j(bUr*KGaaUc$0X^v z*CoX|;cpR^U@VQb6@eaahMQ=ssF3j#J^RDNA*oU*0GK_}>M8MnU)7E#QXS zXx{B_#U%4?ZsFe!sNd2I_nor#OrZ0T8|Nxg+m6znP$eh|QL#}8Q2<=oB=iRrl{jT2 zHzrHlkX8^+Q#*qi%}&=LG|TZ%;e4owe0bqw=_1N4)zVK}eM#y098=3xOw-su1NK(~ z2(7kPw%_v)x+QbPABJv2v608Dq@p~f<|?nL!hJ%}+O>7q?mtWsxP$=f@^{cE=L@Q} zgRFdG_<~Y5H28<`(V6HqswG>*9!IVM%7j5C5@(p?B;2JAwWZe;w#1-b-)u{V8j3TR zUdQ}a_=|d~s_u_XBXh_j%r-Y|$N67>MFi{cydXT}S0C{uEx8&SOX4*#PM6jN?xgdU zhLz?6N(w+JJ+K$n(!5+pe^2{BP=zKV7|Z(G4q2V`c`3Hd!@>e#DTHxQ zHc@s#DE-@A=F(I>jlDfc4D_Jr(hrx}GGRP48;y)kW zaVZ5cMqG@_pF8;*3Xq_LZ~Nfw>xjapoE)W&Bc5PBNZpAj=7sT$Z!Mrkc*NxD>mON5J^Li-c4w&{X4vIc5dr+bxSFxHn^N$ueg`=mWz zBY1b4Im(ot9dV|s6s;<>{NT)Y6u<{lYZ0R;0&lTGyr6X4;D5xTKI~)6llDr?If31| zo;~Wiz6bi(@Qs7W zpP5c=6$?Nm^0?poVWZ&G;K$B9JEXMPqU$37yZ->f4oS@0pEz;EMAYWjxGyg% z=U0}u(JwCM7to$!$vo9HAueiJ7X(};CIC!uzZ2|l@_+4)Q78_8y-55-FpP-P<|f|L*fo-&HO;(4E%vqtYt_!ZK$&H&&Y>Z zWAv`=ny!(|>hqf+MTFu_lQ<1NsWy*<7!fB${{Yg06sRlbCKF>V&E!+{ zsiUd8Ixerm`iZgBZEQv};o-S+pFoc$9gFF9GQ<1M`xL38d?o6z_+2xF_3snZjL%P~ zHm2(`5tCeD`GBou3T*t^`A#7#ErlE1B!UI;Qw;?KZtEkF-eJELefr!{!L58u%np_= zxbV?#!z$+`WiA?I&L34I*0US5ss%cN{Xr87Bu`X$jmI(yi)WUlmcqydM^W6Xt|_Z( zDYa{*Zd0YU{{T-VvW|HiGZ@{UazN7jclxIWm&Fp4#d%R_$anzSni5}9RoE30i;I2F zrrkt}Dp+1Wl_)+J_@UHdKpxy~7ykec*%wrEokizoOQz6r{Q0X&lG_2r*c<99B%l=b z*c%IAuITWPmuCd`g%!OciZBOK>v)U&0wS55Gg=Vrs@7P6m7~0$#pl%>v%sf8OKUeN zxZkI~B2;vFkqq+41^Hj@Y^6ieO#PUmdGWCH&|M6R#OaUBNks;TmP04xMUz3M z(_ylf7>zEcCQ6Eul!TsWX2bxLk1-_mQ8+u}q+?qga@Y>yQkt3Ha_Ec6=2{Pj8=w$) zpDm|enp(+GSyrUD%M)KhUAZUwLfN^w9gos4ez+5*q9?OB9!}TAbafLnWE95T&S|%R z&?9y6WebkD?M2HG9@C|w%}v);9cO-ON}4BFRfxU7wXrsqrj3BJtZCDey+JpzO`b{J zsEy;qx6?zaA^!l1G9kih8?I0%6|5NYS3T9pLQ=3$2}(4mfC6qum|o+1j**m(7HqnA z+@Dl7)y~s*MCS?4(cUnJr3fzzsHodMpVbaS?@ovAf+}okHu10ph zNMk~`7 z8RT7Qcyp9e(MU!))aV)NFdN&zzH96@7hhx7(j-uu5VwUW!ueq@YuS?$#ekDaC%*I!X?lk#Wrv9q6 zpfR+umj3{W{{TGTrka@wqQ4|!Nfk7P9br#qVO}(v-ZABJr z&6&r<53+OddZxC|qGyxk9}wi0rF>9)R8e13^^D8FOyx|9vdWl)l4Zw`@=&CLSSgr> zbdWZ&J&lh{Jk-;PGxhF0*;{X-SK}@%%IX%hcTDr@3kmq36<>?*iAl0#Ga9GB?2^LJ zqS~iqxzb%{x^)vVX(w&$JM3{bOjVK#30-6T#-EMP$piK67JF$LZO&&4`35y4^5@0N z#FADfRk(wZo{#_}x5HE+wfF1ufmR~|ix6Z^xRLkfLw{uVVy}_E{hVNTNiWY;lDYB5 z;{0^A7+1JZ97>JLIT`lcAb#mflL-9}Tuy#9B%PxpzskU(GQKvOHkpI}0MfktG6cwG zzmE?cDT|~k6;p%pepzlg&T}a9dE~TP8t*WkirfR#3`1>9jv$A-PwunBk~6U=Kp@k% zH~#>XljWE0m`b($082 z#iIUJLYt&)4YO%s^D{f+oDYIv>VF?k7p>KbUGa$RF{Z*@OG@F*8BI8#n-Sz-`F8q8 z->AbS!8+r4B$WRE%-{P^W9f|1_E}3$ZwYVf)}+>B{{XZV<7MYk^*hBKMFGLgPsn6i zBt&-Vg)pLeZb962!%s&VUSHNrbN%LzlTqa9w3f4JDaE^{cg50_fOG!PKg52YSDiYQ z;v$Rdmg%V$s)3QBY*MfSd%18v3k#OhoM7|p?XKjH`Ig)dCzcmwpX5x@~J z_=!RFx>~{i0JI(PKCQ)bPak+e8PuC0wq7m;TjT zCr!*I&Y^_))PMf)o7~s&xcHss;#gOVZXjieEhux5mU7)50|&7QP>tr?^*C{&V>ffp z{N#MBqYj~M#Pj2dVeZHzlWPglzj+)Gd;?#UW@eIVef?Sa)rU_Dj zRqV<~ziZ#u0Co(?G|WK%01^5quj%beMT~LW@`;1y56wzEx$$x1^%HmFY&W?!* zZd_Ho>em>gfL!LNr3xg2uqrkN_S+S8*coZNZhZdbPNwP1&eH5@?qfm!0HvyS@L$J1 zdd~7=wVA1z>NLqEX=SC%a$05-CtCR|BK;CIb-k}`RwESBQx+fie_z>Hv!xO|{{Y86 zfP96@lGL9S5pz8zs~#i_)P`1-rSJV~1u zLa@hb_?my^K;~ty4-7Q9wJ!|(6m+Z=INP~)jF1TyD$p5T`*a{-pYN4T?$Ym6G3@gS zaI@k7e}>;wRP_D@Q(I*ej}P1m z!ji2)ODF^%sGLcC1TH<7WOpscsJb3XyJl_WZ#`P?M_T?!0&1DVCXmK+$GrOw!|EC@YmVg-8t6;1$lR{))9yYgUmH3~aS2-$sInw9 z2rm?ck}veBUsvdD_r*hlnn)z8VQXpuM-^(M897MRqrsb;Gd8uMRQU71XRy+4bhsZ% zOOD)W1+Y-0s{a5|cg2-6;0*+eyZhUGH}y<>F4UJ;a$p&cnb3Iz)V;+V&ePGL(<9_e zk5P`M&a|OlKdCl4zGg=;VBBBHVSbjyi}5xA*#LL|K02R@gwcH&9nUv7xcX?{f>ub) zS)R1zGND%DOsDG1B_brFQFTtRZEcm_zzy~`9dQAem}|-0{&7~udczoIVj4IL0q880 zv@a6;O33nLyH~GetmzFaEr(xq#K|C=+&qF74^OBpSOL&m7Zlj`QN7h;;d`E4D?zu1 z%ETw0h2mQw=cUrv! zE14#N_5*;?9!sIP%HGVGIv!AFoaj@*FkTf1WF_dC7+YDAeq!OKtZAbyCMDtqK5_8(ForZMaWw&l94i4YQclo=a*ifzay%%x(Fb;y~)%x?@Z9Yjr*0ET7_nj=k^P1c9fwn6W)(r@_;1eSkI$LETj`WcVCVtEhTA+b0wN`4-Sv-I@7lcf$v zC`m}aQgm4N!7{UZ5{AkNdxxP|zu=z_5zK7YGc$5YR)U^TN=Nrd3G)wokIMuFglNrt zQvQj+>o36xYlN8^BWj0JnP0C#2_?2ubSbri)GFrbwZ)DGGJ$-W_@|084c#S&a72{e z8qw)-Ds=i*O=hUr)Yvr)tm#=>t-_JcOR77l`Tqb71HY9%zPqDZ8Z7G|K85-73*Wq7;rA%t zG*B|snj_hIubP^v({z<7huUsZwQuy<2?M$FY%hj7Mvrt}-<(vo(h$>}fqr%$Eq*D! zhnJW_S~MxI)}u1rn$-w6lq3)W07^z|4{zP{a^1xkaoJg;XryzbtrpUWH5> zSuCLrD{;9krsDR%Tuu8#l;)Vgv{8%mzxt}2s}r0f)SHb`pXMPU3QKAh=&O@|&+@|y z+%`^aI~;p@cv&^MvxfOW*wSr8p@;TbSMy3wB=p#6!v)E|(K1R#UvG#}Qg;QbS%R&Y zD$B0K8FrWuTaMcac1=n3B#|AER02lE?kH_zU`Vz(%nb#=-?<}Tl0((TEI5eMQ9+f0 zHZ*IwH~oT*@6|IW5GoR<%YDziyt`rE$gL(GpNk7X1PHrVvV(C%p>(x)H(NMrK$8;y!87%97~pOm9X|G9GNJ@#D-( z(f3I=@~g|Ry_6I72MPR9x`J$^e+GHB=g&kwy_{fI5ofq_RjH!(`K1{E5;pR!AoZ{t z-vo}PG1|@$Wv7!?mOB04=#a5Ek(4P;^B};?R4K||C?A-0XiJ?eP_{<*+Q(N>i9f4n z_JL48O#6^;r{^SQ_lP=mDNMtzROtonTBEfl35x6ezM-d3-p0v0;xv-R?FY?EYh-5o z6mLc2q*?Wd?8KdxBY$S6n@dtAxfqq$0E<{}adHOZrU7{DPGu-{pV;+3K$v{#m9sq} zwBwa86nt;s?puoE(LecF$kaMBZn_i+OMfdNYp~x@TWbhA5`$oD@{Rxz$dz3gdro01 z8UFz2i1?C1irM2NX8iS<-)ARy$Kz}HacT}ZSk3P}EVX2+#ya6jLJ|~wiDfM%USa0P zb)V7z9v`|%C#}EyP~qMzeit4=Yafr?Jj`^Oy?O?8<33}}Fk`uR)ry8tnDd%alV*~q zDjFL4h3utX{RzGg5oo?&L6rSf1l999NuJibyu4q_Dr%5&?+>!Gl}TB~v72iTHpA5E zP9mCVl=W#EzW}^ssqv_3L#{Rf*rj8m;;jVQ$JG6iB`4j?GY;TKkq-H$YdB|EoLy*9 zv)>r_($y#x6vC&%rG}jZl1f`dfS^56w*~rKVbZt*?jK+O02L#k4}NC2f0tie$(wVA z`A&sK5pt&#bNm+);n5auUkK3IP`OLdsxF;(Dmyh}a4+8rY{zei{gd4JtSt7E;NkQ? zHL-pb{5^6X5VGuAu+T^P$GWOtnp$q;5Q1R39l5Go7Kd^*Zi=ACIsVVRXlQPmw5JN&$+k`CLaQ3P9V zm_JxS?4N=RleFEgVYuQ5{{U4N2L|&+K1@+g;e@7X=w&E(9$}s%^j}6@ba_2Lav>!$jdn;4JEthMb{Nc*~ZXESFG+s77)SK-?E2IFhu3eZc8! zi{K8OgxcWv5T*emK>_=74j)S-%&r;dI895oVyG6-w4+MqQ|nmt$SdM z%1wvoqKzd>$rrb;)Y%7-kgGJrM)!u?;n8 z@+%phmmRHtFzm#-mJ`&J-SrZ7=mq_-)0cqP$qrmXYua4Lyay5TS+c(mvqbv4bZQuv z9;o>Rw%AhLebS>~mckTutz9fP>*+IT!bLUW!t3bj<>n03Ei{Z8eDHhi)>Ze-ke3md5k zM)3K;Y^1tdRP4jXEax>2lzf#^JU5Wiht#CTY1WAV+v-uhy+#?=0ibP3o+|TCgxudFCD(YPn-Ng29{N& z%b~D97P-2J4U#Zg905O{oDisSN|rs;?{H~vJG0 zk56fs$ONbhHzca|AP`imf$NA)Yc{p7-}@`rF*##?X(VYM;6J)|b1%jBBIf8)#b1Ve zTW)%kk|f7^B|cna0d7-kLxIARa%`n^!vkEyZT#=_PL{F>U73$9JlYST8jpflaO2{O z!1@t^DHIMeLaDH#^k!x@xzU+*UDSk08in;L$GyIzfz0qt6*0Jr0L%J^8*n*? z$SFxh_{ii}b3sl`y5%n9g(~cn=CFnkMn)Pmf2I{C6jYC z6`I8+YgNR5-!}oY$mIGJ{UxBQY!_?T+W2cR>79EtY2uGKr;Lope?N#RE5{FuHw^qf z)7V~a$oxa8RwYFF*wN$0ZHAq1R)D3*QE@E|K#N!?^|yQ@@!Gq8DW6oaONQnwmTM8i zZ<+e7Yv;d@hJ4I#laly*lDKLmkjiii4k0x$6&WTtP#w+3rd{!)`VuR21=QWBKMLJE6Y>i!1Uj_4ju-}6UgA-#}q z%HuM(*cpKZjK4@)4AHl<8K5m7JkW+CN{)c z#L2QwqLqgdKy5eP{fGHsuXqix`KL0G_sZ@36~l-eJ`U+_x`l+_QCrAfgd}g*ZiBZ? zhg?T}&dBV9TXd$UaT|xPu-s(UM07m6YXK(v>2^@H zEGugOr0jM(;m(Rc0l4tv=z`|76MK&GbVTq49z^)ew+}Uni3MmXXr)gmk>%0__WXxi z;5T+_J4CUT5pe7JB`r5A)GAYDJr6BbB*<%bIqs#fK{nKcDC=0bvC=!=puP%PZQ3K% zBN|7$bL5oJG7fK*5#O1lNJ3IVl(iIc(WyWUDL!(25&lrg9iX2!Bvn{Al>DA{{V=0!C}l<$1U*YE0Qx+7cy}1hQbP!TA|B=(scu1r(S6-+hfso z#7dk45R88^HxbNshpTQ1BpA*d=LWUl9!>?P(cz^6gT@{dPiyDi;vGH6>2Kx~h|*a~ zLw8S};EyljHZOa5)BWLiO~I;dn8NQurb&%buz~u95BZz-De23Z(}tOnJ94u2X{6R# zUG$dZq1zBjN>rdo1Q2cs+ZA)+vqz~8Xzv7k)vPaTyG(Ok;78Fol?NzMwZ4knsc1+R zC}Bt-pHfe4`|oYBHx1}{te6%O<_p{vSq40cMF=5vd@HVXB~X@VF{S%gjt0427Pw$MPnl?z{c z_P=kwBGqG5&^s%&J=&wehg3-1%oZK!CS=SNe6q`KX9;Z%GLBxrZ>v$<`r6j- zi)vc2G+>dT@Ksd+#_~Sr>Y5rZX{pPu&;7enrn^gW-zccmlGiK0;wdgIE7;oL18;m# z;~f%?XLXV2?%)-+9nzU29bB7pyS}McQE})_yB&v_lmdwSH?B772LAxV9(epNRy?;U zxb7=(%tSe%#OdUd5-Tq;q5lAwR7X%jO3+Bt->+N$04zK7@_~G((59N^leqOr+J_Nh zG_^Rq(GBN?!os8gqxV(s*V7T57{0rry0O4s!pSc080d&f5MK|vh3O$rg@+aEaBXj5 zKU^iBz#&Om!>K5mZx|_whSjIkN}VcGsBHs60Pk?E$NS#}ww8XELp6Z5?Kko%CspEH zD3uuzny*Bw27ad*O3Db*4y{@N9-E|F^uoy$ZTDOc=XwdLlP_p%`N=2ZadHfoBs~&! z6~r-c@}<9a0<3(hN|0^nFMa(mNMYA7a2DtOg$eZ!{-zUu&F&IsGN+0 zz(UZuIu~QO3J2G2qQ`6i(h@ETFsd$ZVW-Ier1+1s6CV;0(fB91gqIqfHZE`&JK7mFL z6?NVjaAm4?f6MM>D&|;{<1I$3&X*a~CQ8~$mSr-P7uzdRG^I~|8nlv^0Xh>pdL|Lp z(vAD>eK%R-EV0NUtdNnx*+>V^Wv{%$<0B&lIWbPEJ8h{%h|PyNr$yE|i@ExelY5e@ zoxLj^gi9+)m85$8RJK;b5z5DcM~Bd+nxo^(DuweX^oA=X4XJ2w!d8@TajwMgZlix} z0Q62%?h|BVjzZ03x2j|FPmbK!;F8{5%J7y;n<=60d2NSR(P^VMc7 z(^Qb`c}gh>TNf!N{{TveRnm7m@Aky#Ixz!XWg1LsM-4Phb#KH5d63)Ty7Jjc3Q~}b zN(xEXgTGr_6XU=kZlqm9ZZ#37N|ZxMQBfB6JM3+?4$5E+@}N3*+V{VjDvK%Th(m#u z$r`MsC=#J=q$Kn>d5j&jL20aQS;|7&6z#~FK#@v?Nx`Ud5)|XATHUh;q@9l+s*e`pi=ADmi zt*6CEhUpE|+F|Ianzp33t!ZK>G$kjdml8l%PzKi|fr+hyIJg&7Q%WOst_8W@_f|;D z)CTGgQ(wwC=1oz?i7TA4c>Wj2~8%G| z#+{&XUo=F7l<7LOIMYZ93+16DHVD)K>HxQFLz0<}xpt?;S;tygqgdTLl-%HliS9XO z*BHuqgjA#SvrZc0jtNLV{< zYO350njkaA=C_zuR9K~arzBG`&i=_iuqr{&S>Z)Va@xxNCtIyLr)*_TU`l2(5AT40 z93#E=*dF+%eLWL&Yur9R1#oHcJLZrv#PHkWbm>sILl&ti$yHuBaPnOgggBY7X|kMk z(x6V0&QbzZ)AzT%$3uvY!)Z@x(vmza^Cc!sLgBqr0sjCIKL7$;Gm^Lw8Mt4xc!auw zk>^@osW!@`r*HsD0RqH*S3OO^!5K+HH3t4_L*T9hQ*QBKmvkq*EjqRLu^)TC3EvV`!Lu}SGJG)<+gDwvJjE^I{*nAW3l;iNFh>~YzOqoW7 z1OQ6nQ(JRZuHdCAQ3T)V?|fK(sx!8Oy1@z9V9j@eX~=k3>G|ZC+V_XE8d{=ctn-?X>y2td z6~+;zkPk59snDif#~eDCnxBO6f7Ss-_HtbKI}y=NhDBAnxqYq@9k z+!l(tj?&U*rGx-3rw|aOqz_V%F&X$YfL(&)^MZ@~KxWHOE#?ozAF{(9pOzUR5mQK- zwd}a=(z%WmT=`O4M_+3K3B*6r%HxrZB=~;HPI`9gT-$it>a(-M=!<+we}{RU@=k^n ziZ+(qB#$nqbSNLs6QjZ_0MJ{+f%QOjT^S@^{sG71Wa38QCT3!wm#L8}G)BW}amK0@ z2GYV1I)x=mQh+|9`(aKCDgOY7=8pTKva-Yon&W+iztIh(WcaOC8H-b>#EceotixN2 zagr1^L%K?BVhzFQFtFjaH!r=pDM9lMGUdNAqy-MCk*SoGQ>u`2E_;HlZank!w^s9t z)nF9oF!KUHAT22i(_yi(#-fr}hJe=Jzx@r=8j3h9O+=srz+dfTtf17}%o8gNQfT>v zDk_3dCs09XHbAp%%~?z8a^Y4h=3Hq2Z$Oa01w*bS=8%iMq00jcoT_*nIFG<+oB4RZM;8mHRxv^>W2y>Z&nKmg?8Jj4w-S=_2iz38t zVnT@f++l`x1FMk@6uO2)v$)hnwa=9*kTxEEa6lf42Vvi0aB(9ox`HVlH{?oFYf zlp?(e9&2j(ppv84>IZ#?@WDfxc&5n%+BMx>^OV<=w3_8AQ3B*9PO^|aNBQHrwpj_r zOZK$$K_te@)0uUroy(7EP*RE?32=YPb=(cFwh*z77ID!MI9^S_^SSz@e0-;ssqVh> zIi5w=x={T=hfvM?C1=hPze|yZ{+ck`H*XaNT2~j`pDPcVA%jJzkv^R|Lt9 z<0~k+7rSF~an#%2wjxap$7RUzQ{>k#!%v!MC1#{D$W3oGQRc~7lme4GmguX;T-3)_9k2JB$2`)Cbh_WPyHlY1UGttDVbed`spzJD>$w5%-sNa^Gf!k3V_rk*n z7c!ktTbOUu=&!3Yv(I_XV1hT4H4`L7_UC_%9)Z6vLG zf$N7h3xZ3m-hV;Obgm3=kEH0)1}3-g{+X>w=1}{&vKjh#ulPE%Wl@2p5mw1RYBHuMdHJ}e05H( z5_b-R(UEr6>H^7ar6ZgaI;5lFST8G4wfVJ&d7x22K?G+M{JYx2=Ll=`M!W;3$V zSZ&=X1af@pN$5{-e}*dGMl|@ZBwwjbdow#s`u#){KNco0RqFj!? zZjpbfK|9~B#}|~-y4O1@s=6=-V|3Ky%#%`jy2J{oM%ebh@5rl4Y%%vFHo>Dy+w$r>!LDbD!|P#ONX|0eY1@>hq@}jAZT7GL z8}zo=yW`4ymcVjjh})lL)8gNOGD?`PCK2Pn4;Zt5%b-1xf`#pI!IEW5kI)qM=MBCsD7e zH-!9{m3c~)nRA$?yuz7sIv+}0(05o4EwU|feYE;v{{XJc?FuJY`wP2nVI0!q#iYwc zVu@AE@Fj;3S#np($>%5?%2cFX3hiNYj;McP<<|W0M5dMb?ltiry3_Vx_=kASrVQ6r z98PkJDpN{`%gtq4Yay^!pEz0=O7CrfR-xu6N!s4U9Yi^8mi}wcUx^o7b!`6tF8=_Y z2%98)Rk+I%uKhZx!>$@;`h>C?Q?zzor%#fl*(3#oyw0;@^)NxX@*S{a)r|$m$Lv=} zEiq{ZJh$XUy&MQzXy9&Ydy5<${{V=Yb1m^Fg_U-uKg)hqUYk~pQc^sQsf8h~Swl)n zn^uO~300Cc8{x7rwB^%YI}{qKXk%k#gp=I%3wVwe?*(T4pOSc?1yGo%=bXu!BQUhM zii(&K=CYDXxoxc|Z$R8>L9jhr%V4S`WwP*fBW6gR<|3DvGqD5W-K3{-0fI7>%e{p9;G^8coPL zET+R@Jqaa5Y(4SA50f@$F*(vymIk(OJA#8u&%7vhibQV~bZ?b>>Eu1cXsS?YDp5#U z9#Bev?gG!K?}dFaZLHfL0)aa#p3>Kh!RBzB8_<4g%Wj>#DhAPkMxBmddA9SdR!OYQAqO)G7X1){V z7;Y7Q94S?nodAD*w%fiWoAw9ivclVqiCmGYL9=_)DERFQl3!NXb(TaV8|qP{wd7iE7v zK>9UCeAVHO6&|0&3GY{QR;cvp6GF~th=8{mwwU1#BrWAED%WW~Q@3IPnj-`>kDuKm zYAOUp;2RC?YkdlhRNgVnpgdQR@_tv!4)WQBEpY2HB+8VqETz35r(d#mbe5yjMDJ)?01>#^#60m1t3%2eRXI_Y<3(KB zwISN;wB)3w&leXaI7@fA)ua$jlh9*?P_?&i;Bfu!ffY#-gCM=mN1j=Z6c7KUZpg(xOpkk3PKZQtw-Mw!*YR??wuuDpCJ<- z(@FigEf@H}@fSOeyk^ZAh3vrFSt=6@z@f%{O%l{*Mue$cuoKK$k1@uiRWa@vzR$__FHB|3Tw(Fq2VAYX(Mucr+XYiF^t-ef}PimuVrjHT%uJharNsV2q3R)BSF(KU;%0Y9QpCg$SUQp-bV16Qb4JeJN9Q9M@B4l%kzlP`{U0QpmrVWl69W zP3~|rNdv#6e17P|7?j@f5w2~k-Qn`taIP=19UCS@>c0jvd(oe-NucFel?YERGAb2``ky?tG#mo$-veyX z#y^??^17c(gg$dEFv6K;ndd5Yt2j^a5@xDY<#{;P9M zcl*&deUC2dY3XE|%GtN&Y9BdU%Q-tXx>g(j#`$MoSvOHq(4?))-AVyl1uEv_P&CxN zA}tq`Hbed32gCq=DpRm{oa=z*e}T^V5=X&2aJbJ$QdWsvI^o=91nO;u)lg|K0IQS& z(zNQa0_p)hPTkmgMNcU%nidcFNxzsXb1+5#16=d>Ta#ehi`3{oQRN`s{fAgisi1hyV*s82pWKBYK_qSrY|gOe1;?I%gxU-so06)3x}}SNsp4N?JQZa)I^lE9RMcDZKWHbBG)41Tw8syZB^|7lDN17e&cUI zqEqxXiY5jd05-V4$BHvPCUTW(AIP~vtwAX%3`n0wi6Nve`gN^j7YG-=$Wa3OZ){7V z>Hh#&Omax}v~xEfUy=?X(5gELVumNb{1!g8_}w?PZZIuX>V$e*wFwbcNe?j*XoyL< zvuMzRx2ZrLZLf)s>BTU8nJIUDkL~hV`1&a+9k_#guk`?-O5-f~4W^c;8G?-R3Q`}W z!3mP%ntJnA_mw2>t;NO0!yPYAqJQ$_4n6=6ic!%54rsEs#JS%K+u)5)4>K%;w^}ut z)?IQ+&W4zW7)W&n$`2?uw@{|fO;@>4P_>2ee+Z*{1g?v;d5}+zm-wnV#e7dOi2!f- zTnD4A>J^!bgMsK1vlkNhr<&6m7)*8(D)JptineK{d5HlhRs6TL#rGo?)b-Fp&f9YG z)O}TTMjKgBa~TJlNFM}4OQ&RJ8ktO=nyQr8ky|TnOqxq*)P$_3aFrFQT7t%%$pZK2 zFe$o63pFR=K0uV%x;HePmbtg^aQKiCoxGEj-I7qc<5dVQrp>&Ca|4J8N{I<=V@0)% zi8k8yu>f*(k)++ETgd%WhehPouO~N{9$FMWFAZTygyf1&V9Rwz18Q1Xh%9-zyse}_`lttFMZw-{|nMy)2mGNg;7TEOgX zcf@Gw+|J2o#THshcbkVFAU;H(dAEgmHnzkd_YHEZ^`?TFOSKtld2$n_AtUhPw1N_p z1dHwhQ|WwlMPzPmtlRiq5;`caa2$LHZ^)?ORq*qYWy_GKI2XdEB-y}zUYy&-(yLi& zFKX9dEpIBe2K!t+_Y83^Cb*bs&yKtss09XJIj&SjP|W$tzF)03?*7cv0ca z70RTFX9f5Wkbzu=ekm};lqiUt=g=o;nV5Wu^W*yn(J-HTrjJYEw<8>hK8%y4&64z?H(f6c3rgPD%=8;k#75K>5D3UmV$dBMVADb zgK(LtzYk2(+s-Z>d6wO2TaT+%z&B9!+#cV<7m)O>BHK79&%^2%ZW@`K(cu#{<>_rs zlU%2~madhg8wUZnC)W4>04!V6<1o3mZt5)2%*_i^7nnG1%@dmJx}y&*Dp5hQbsg;glMse`sVTV?s zub4)VP5RrZ{V#@^dkb9=p|(X;Nl~Pf`nL?o+9a>t*TyZrn6$PK(O7C>u!@c^CY)f$$)TLJFaUOZ*>PVQ|B2OV@4>cXVHzep@5d+(y-?r9UsIskUyUSxxy;FL8@gMH$h$l|b6* z7&}8K9oD*YhY)zWU7x_b?^UbuUnsa)s78qF#jwQ+NLWCV8A!U3Aqi4}NJ`M8DBTJh z0Gb$0!?m|NsgA^@$_}mW0AJ5V4XZp<ollbET{YZMi@PcA%_ zMnj7sB|*2FQE6h*Gj?>T|h+AaI9ypuNaSL^R0@w2G zU9cNW%5hVOaA^9LhNFb9V56@3t+~C8>FOvadu|zjRQBQ&EH*Nhp8UU`1ueKYpIy!> zdBtQb*)Bk6gvJ!4>9#p8Lk}h zHP}?gU~oe{LwvQ$lKYg`*e)zv&X5{NN=i+R>IU~Gwj@6dtroOITfBYJLy1t_xv#zX z18vDVA*A~S1sVYga4YxCI-8fgr z8-JIc=YY-fQ*uT{sM2_IL8a#0;N5>PqB@?ah;vpWMDyG<7E(*#B&i{Gu^U?#Qo1HI zHHR@Ab>Fys&?ADS&CfW?n}D^z?LFKd#ONd(e2t&&SO!{w&GB^&A-S>j$|tV^%e^9-!J1(cLSg92OW zY6A%#R+D7`vU;!gjmhhblx$m`txb3|o(!3=<9Xyc~7IxFFEYl!VBmnr$vQCXEX`=t06cB*B|AAU#qLDS)u{9tNf~;3 ziAYR2&9m0P+=O1g_*2P~8h!@WXBx)$pA@7@i*c1`s^#77wr&1I)k z!A>5%O_9oVxlcHSplLU<8!B@50BO)Idz)e;wbHa4&jZTpMLVN&zmrXSaV`Vmo5?;X z_^Vc1j!mgWj~f10DbN^fm2@Xs^^ytv1uX`a#5Di_~p$id@MxA-&oJBA=fhOYCaSZ93mnHbaX| z$7Jp=ex&RV<%w}kIqer4es`#k3>$%e&g2rMSeP|@l~|;L9ZG_B1aweJwGp@i;GURc z>SVvZp27w6`+X3KKOFORU#7bPzTI0g(2Dh}%SSx5+}M$=w#e!)q*xnzmMXbHv$Y6j zSeyvHy~5ul_hjt-l5@i^N6Sk^KCBn4u$8p6Tw25hrrJSJB_`J-S$NPy_DC+%VxYb- z-A=v8?=)8PWeS}=xOAA6Wk+!H9FByC3l_SH*-|yP)Ez?Ux9@Fi2B_3Ay_XZ_olNL6 zUPcd3!|_Snx5Y{COG8rfWSWZ&YH`LQ(j%@?8%X~E-UJYCNV(In+k5REn-i!6hd7@w zoh>yn{*W)+N%TXhTy5dpIkF#N4M*xrD!M@y*&qROb{E0p#tTJ= zb^K8shrsih&H!*3N7)s-#(p2fenf`2VLqhth;+Rb)F7>Q7j;D_7PkITuqSd(7|dDk z7A(`mrILn`hqW)DAAOOQTdnZcwJxzzs!+473Pz4|=#yKLfnY*3HlX3Vgez8*gsC8P z(l3J3)wd}QZ^Zr7chRz021lPk_WPzUi&+l6QbRxR_OqYo&F3_T&CP(*{{SoIQu(Yp z;V;|B5L{lQEE^RO<-{rGm=V=ze24Cg_~S9Vwj4YO_&4TQ2nSzIaSxWAd$!UUlfZo7_q>YV&cf~BR zRTG-$*XXPzWi)Iqh%}x3&~N8u3bSVsGv;uMDU9bv$lOAwu=hRYs#NH%x*Qt?sJzn3 zmYq9aac|27Wn}EoyKV($s_J2u<{lE3LR6-N{3FYe6rYmYC@SQaJsj7S_*=jEuAESl^w<>K8BbO(9mzr;Cu?LiV0o( z!dx}ox|?~6C2*s$E?r43Wvu6ylFudIlxH%>adH-=9Zj}};;1}R`_|G4ww+hD5aCor zTmkCuxl@d?wZV-q*L$^xlT%O#rI2854;5p?j|5*m(&@8vEjAqqC@ zZi@$Qn4*#^A9RGqy~L7tOE}c}YKrB)z?iKX)n@~UXKRt58z=O^1gvg@m)ZBAQ<^l;wN_PJMOcXFbQTIw(8f-<7i8QueNM*D**hsodFBBB_+TBODOfl5p z=s@&N&VQtzR9tCwXi^w4?E&syXHj5BR_oa}{u=x;SG-PUHDxXvRx@QH zOKSPL-9h*y)2K`&9S=&7)0(`;%7i5)Yf;+35-;4)HM$dHc{!Rzy#D}oyYz8)fZq+y z8${u?CpKn^mU645hpH1`e7#Pl;($MnU_QQFSjOuJNdZbKzv3&*2i2KRXzDrWrMkWL z5f@l+Hq1U7CXv4${3@qrHP5Km_@$pK5+OJklDczIOh(*Q(vZ0h1*!CdYcx=u&AQ-` zQ)X`g`P`cun%zkk;#+g`vVwjw)5ESOX4>BuGCMp$;7=YRFqWrK>#!a}nUHe9YI_f| zrvnlaiw#bYm8VU~JCoDWy^XexXE1*Hsu{;p_f1OhK|Q9BK?j()w!D_AB*NlH60=yT zXE=Oz&GjGzRmy!VzoD_vCB>{I2=C~7V3G#J+czln`zt7F81ZuPuXouz(>yT7ok>h8 zH1ty>ElFE}ZaFE}2m|W@dPd^=TYZMui5?)}Z0(X4N)Bt>cj%f)+%e6W31yna5~-T0 zF3AZ?vFUHDmDpy5?r43rCQ6qFsuuJ{0} zb*>6n-~rlS&;;PnG9^DINM%%y+0g0$q%vH2$8J5r2FBi|*lXTi33ct@j?3Q8H$Can zb2R41(DQYC>ra5w8zHA&)6Vul7Z>ev2j_rCOCKb6%OKPbB-vNEy;G+>{{XAn%QI)C zNYLw=yr)&}m1;-_(Eei+83Q;H0$`dzGY0GCm)R4KInE^ZUuKUL)_lCw$dZ;@DhUZ1 z9%u!jHXQ=D-v#Oc&~WCS%I7z5e>~H}JB@7Cvi#al5MfKK(;R3v8KGAa>&Z|aYjao{ zN|ms(i5rdjf<*uaO+8dfsTkl|@oxPO$b^}TD}hj8{?^O+BR$hc%NLZ2tYjdz?d)6B z6K5RitAlF`+?}xZ(Y&2bs1dd+c4WBlx74F-uTkJsR7;mOh__nuzSTi)I^&~NwFIMN zjmZG_BKvf}B%zhuQCTEE+B$dWowz)7;a**$N`;d0_H&CF3l2V}68@)(yOi9Um1*cV zHn(h5$%a&uX1FV;YN=QS+->3Yve@QQ;x#XiISMXupw_AilF(^2Dn4S2>|-6!%5EDk za}pAz0<^fKTwkEDzXK#r$tbZLwq0ETm>03aNY4w9LX9&rK5dm$sD9m74YK5Sb*ZOf zRQZWY^r$B3F~funTC{|OsY7xGCYpdX1o&#G;h=6?2#20i`=TkiYbE8%WlE_&p+#~- zOqmIj@~Du+0FiYmT-MtwCv_6FC?tYK?}Bx%cV)NrP5lg6b7cVja#0Su#@-8Mw$oON zn=%G$VMtnBOjaNypxq!iLVpoyByN`XvD}WhAZv#oQl4<^+CDMln5@m>E5rQ`QOyj; z$kjrYwHk9!q9r9};N1&K+)+Ml$ORzwz9n^K_8{2#{L&0Cw(Tv`#Qnl+2a7)ql`0J; zMO%g@eR*-#m)ea)WhiAjjgTHzkg`VVAv#GugL0Uke7mDR2WTLNTg?9eqE6SoB3X(< zaH;fsjXDh>g`rW~cQLsa@R70`EwI@dKmx;Ex@~Q+pQLTc`d{p(7mWklPp8)Dxvu#B zsZK9CFaT{;|Z*T#<#>VHNwjN-Njwj75a>mn{trq2LtWZ2y_?cSJ)4A%OGnTDO zOo}`egxKt&Lu1$5u<4F4unU4mn(UB)n8e>h_g=1evEw|*(W6zWbXvs5WCv8VK}uAl z-*g3j>P@#O0YkEe7pcGXAA;yiZ6VBMya`o-;?Iro#HOg#eA!J?yv=Vzu2o41Ke`g^ zm9~%pAP|su>Tt)?GS+Yx@c#fsAk=6s`jK{``vfNwbZ<3cd8LfRNWX@zm&iY?z$ht|jGa zp^cfOe6tS_W6f@!*^M+L>|?rH^Puc>>~X65)&ZdP&3H3>*e z+}d8{>Ih1k1cB6804@4rF?R-y)X3u?UBMhVn5)v7Q;k=vP=&>VT!2tO{`QSSx$EBu z900Mg39-Gw*KULJy)P(SMB*z@;=^x<`JNPD?=cOThU5#_5zq~ zg+Q^)eku8d;{(M0UyO=-UL$zS^aFJvq}Lup0CWimNwuxDjw>C7)16wub!`_)E7~%; zT|B;frynf*L3~5dWg4A(KjsYGOl<+S(ORiG<81`o`9M(h9d41NZR+3Qz#B)uBsp=3 zX8!<=;^2Hf%2V*m;>nrw+={+m%b7~Q0ZNXT^_smpQe?tuPW}?Lt8vLgEd@HjJfqZ2*1ngWaj2ih-Et{DWBNwSF+Y+VaCIe*isbJP5^Z& zLiPnl#>gX0hfT&j)1-YFj!KO2j@NdJZPDy}vMW2??-&07M7_x$66x{;7b@<2uv@yM zB`g8VxZ2k?Nc^viC09ls*BwdlTRMDt5;OpK-2Ifq%DzA76=v4U)yi{9aHVawv3m;w zQb+EQ)BMIWb$D$1HK@-XARDZbX0(ilDad{A41qNBD{@uDG3Tu z^(3CXw!wc3j%cGJ+byZ{50U z=;H%4iRjDu7DaV%rSSr(UHKBGon0Yb(uYg-6sV-DR#7wA`qc(uqT7rs-wQRfC z*a9p;Hn|ww;y8$-y9LYlJ>Dx16+h}t?lSjZ;mJpQ*6v*Sw7!-PJz#U!rsztn29%@# z0(`0OzURI%*p4CB9QW7rxGS1^POM}mu%lgGM^Htk4W5G$4if@49tzj&udSJ2jg$59^V=Gj+&vEx||tO5LKnM(^)By zeN=>{9M1l>IGpTyu)gkgW8ZJGjv;_BwUM+ALgV3eMe*k`!+K*i3RY8=+mXrxZo%e_ zebk$%k<*|c0&Y5Dba?ecO|gOH>q$o1sRoniZ z#10|NK8Hk+&2{QM95|S7_OVX_(>^RP1y1AA4L?# z_BXc~9wcAR#HjTvic#9B%|V9S4Fm_ve3T2QB#WsaX(q&zdybfg)JvHC&|6a;UA_o~ zJb%b*s6<+mB9eeq(}CD>oj_H_r6eIG7wLbd`)}6-Z8N{Arv3?EQ2@1^4~b4IJb20! zXxUdWB1^T}vnY3#qee@yqb0$mEv&jUxO9z1=H6{0!8_g3M(CIvz;kmp)73{3MIruS zX&i?i5}VxB#%!URa{YdlT!lis#2F%C2of30AbBk;^1(LXvu&x*oQ~ z$T}>*KqKOoTy(j=%OlZ4-1*|-yDDtAsa1T;hGaBDZKY{#OFP(~H=4rUmbNt%T^nE- zZKsN*n-qP^vwCQwE@SZvnyX>>a_cp{RtY1V6RTl#gME(M;{Kliji)dd^;NFKA0~wS z6E!x+~5AV4Z+luSIEYTzeIRdHJNX?gs(3y;5{A05`+?Mp(V}DwgjEd{VunN7 zTH&Us!Ro7X(D`-E5}H-Dgk1pKbw~rY;0y%V5DFt$Z>JUHCoaaCg#6U!sV*rc#TcB2 zulvYBSx_eXf_6J?j(oYfqyX<>e?Qq}pIM6;wDM-x8$c@!=vqK6o~cp*0Fo?8N%h+d z4F`hg*h#g=qE0nBN@{;IN>4T#oCPg|U`_W(JBxaQf>>$5sRR(*r&Ro9oZCR2_v}i2 zQl|XIh+DDdHLPg_YC=w{fG_l<@3FAN<~rw4v$YhGGqrGv__>-6U(Rnt%60t3K#MjD z6*a|=QCrCQ!d4WvxyM^zgn&_C5>jjkAd$M+i1}&ir%?ww5a)nx%megIg>#A-@>MRM z`*Vuf_M&A7z9BttkZVt(Cr^wf5Tx4c%*eN+_pk7i$aNWI^2Ks4BGX6IGOAlQ&Wxr2C?s*0FrjGH*v{#%JkJ|ksX3CMD@ z6giYE`eRmOH6n)M%2%PKAp{^5>NiLv2BJZi@3IXu9oBy|mg!-x zz6veTIP#2{oflllxfd>Q!dXy^vKCzqi|$-~WL%!3SJPrOcf@D0?q-L`EA~;u2nO%B z_Kp4lFA+xz8M`xLGS8 z1sw!gT`yopqt^_R6?O8tfLoFiKTZY2uh)qHrz?kibZd#(hMyXvL4aWg(uJ*3OL8Hi z;VD{2ECPO#bt`@PoLJISwfelMGr5Pc7(Q0{DGgCX%1o+sCsfTD64ZHh1`<;DFes%d zONwnt)>1-%B`=oJh<-M-|0J4DGVxd-PdEUEDeqB;zM*wlBYUm1j zQb^fBNKs0Yd)ZrT1?)w!L03rD%1Jiy)i$cF?zV2#ysh99O996qhTM$n=#+k@7NU?1 z_RvYNJ6~cj831Uqu50rPzhpL>RHVU_B(E>34N13Bw;nI8y!z0TN3 z-db}3vUgP(xM{Kc^-@Zs;y*4km!easl$wTBsk6(sB@vwxkdOdrOIu**BINf`026DB zPoEYp_pUq%2=P%;#@m1kzr4^>E1vUL4Kv~?QZs!nt5t21P?FYPg29N6wn=H=f-kVR z2l-)#5MXugMT1T%mjLN)O&fFHv=zoV9qcBOx>In*^SEmOST_bg} z@<~W0)(BCsB-+=(hAz-`X&z}~%?ZlaXC3Xg-AQ_H7Pv9uHTPp?%1&d-d`(keOfF94 z%NjvIETpAKeJKDPDc866drOKqrERVa{ZyGIj&9g-4&`71V>6!(v&RbET~IP}K3DRV z=0uDGfueR>@orV8u_y{o+uHbrQH8ob(=`e=T-K9&c>ZjgX}ndZ<_l7pjAP1e1YNWQ z>2m!-ZfrYP05MlBoa@^vl-h>1o83|z+OC%6wwcjhL!m`20t$V=PWJEizuN|kkzv6> zeMQfIf^sOCiem|B4$+L(gNE*;5Wb^yF7{pb+Q9z+EC{yeO%$fo4W0@0P9&=Q8C1t4 zMTt|L9nqw%ErltNdk_uN)cbYY0_vU)P^NyOATNJ{XsX#_M2giir$}otQfiUZl^2^F zl{Nk`pxlGgZI46gi%M6zE%a4&56^C_oA@W9gW?l8Wu{}&^9#@B8h0;2dA5=tO7|MB zv2De{002e79dT&N%;L@(6z|jq9@U9Yj!39*n>?*GXs~IGRJCddZWwLIzzdQZK2dEy zQbDlW%hbK4ztYf8fJJMX=UhJCXXKulQ8Ker*bFxf^)%2D2?%LRXz2+Itw1GLvD6Yt z7U(cS8cy48r2dxHv#w6uY>0CmZjTv)Hl_0h8jlZBsWhK@m(ugKbT4LA2ac?Uq_)e%672puO?h{m8lQDs(KtK zxk8kM02T3eyZp zr?pv$G?#y@O^k*dZPu(!+)BVUxEe|>ZP4#(`EZJ;yHUt3l9(0fReZj6rNt^MElmt+xJ}ZKrMQxJByX|lxg->o4R9Nd?fno>Qd&uAZ}^AI zpqY;+S2FE*JCn0MT+EcTI2NCsTQMKzSQ3{Sbc7@YY6923+XJ=-`pZd{_C4WAmWjeJ z?a%j5`Xs($t8o%p6LSn_S%xgwG~mivj7hUwnG-BwU+rruFx8I!EHy1H4KZuEQH4ad>8Qt!Qin_ z%yR0k)M}Dst+0j8U&^%eX?UjNochYf!K5Q%2+YszJQP}(W{t)u7z2CU0r;&t#qfCk zc;XB7$sQu;oI$V7mZECW>6I4*u%`oM(=upem6fa|MM?k_r_a+942=TB8-94IoU>lm zZTxTYPo*ouF9jKK+EMWjnDbmdN~20;jENO1jP9#A6DFl0YXsXz(g+DQQMo6LYa#$; z*TpaO)0)p}mo`_P*(htno%9aQiga z)G5*&xI!kj>&LC^0v4W@y^h}4lTQn+vMiZHbSb};A2!zmGh(q^sI(1(VW(raq$Jp+ zX&{Zd4&-m?D7M?$>NDij0B(oD$Qi1oE+_3M^lE)UXO`SYlH`dGY8Dz=3JN=rG=N3N zd@xQelxyIVvRj*PJ11$c30bC%N@lIZ3T1AEO_2GH$L;y?>4s9$F0``5g4?RF+=RBH zZTG{PTIN#E#ir4`9FYE6^Pj}$eFh=poBK^sE9-~^xZDWeWyF_zE`*h z9NXWvQ_dXsY)7g3Xo*)&%5+T5nRQuIs^o>KVFH&vGFd}1^RYW znCOOFt`LwPLi^m@*xLeZ?*~m1zK#~0r{iSi zw@JxuGRtk$5guVtbC(_?i%U94Bbm%VMecg8-)`6hk~zmQ-8vd^e60Zb6>{oa0AI>G z#0}KD~=fxh_NyFZRl_F315@A zTj9GqWffO4?I$);Y00aWgu1l}i3ptHP^BrSWJXSskPU{FrFXhc%D7{taW->pZbc;6 ze^Ldc&3<6F>u*F8C}!>zM77t|PRH5~tJKr!eJPPOS@e`nIxGfxW@l?}<^rGi()enE3B; zw|a{imV-vm%(+a>*-ma^5?fmj#&#(U7VWwgy;_o$YzP+ni{e;wn0q=d1(KcqYAWX+ zho=d1gldyqJUN$!8Ii?@*^3$DKAIg+9JbwU#Vy9$HYDg+JDs{=!w_igN&)cD{gMMz z-CE-7aB%vIA5c_B&p!^HHRS4Bv!K%Q*AZUlrK?1#qAZPDg(NWXxmE38l^w6|gR-H7 zTsqz>orp`AHSstP?)JV~{1j-a@S}-YU5M^x4j$%ww+&7ymR^|^XlYKS`j8ezl@Km= zBwKNDfc1s0)mXN&83u>e6^L2xJ6%sWQeXIZj(-GZTMu1%oNSt>mYV`|;CFw}2PN!4A zN>ODkK-*z;twgHVJ*)-#?}mP^LAS{(AbHRq&qR}|R5*7`j)vgo2=iD9(i(#mM_C`< zaeu%I;Tb#0y^%je{hkM^MM-*WwC4 z*wQ(1QB#G=HYrZMC?2*?ujPR(`JVAwnA-oW6@#EBm12@Ea+V1~q1cOttp`ZrpD zT6I7>8RpBaJOSG6b|ZTz5Ud@O2XDF)p=*Vn0Uw-rCp{VOE9M${VPFk4Lxbta8IQ2JGyw?8!EI<%czh>Q7#YzsL!5C6=mjh-zUZ0yoPlag=HsM;9qIR%I zI=?JA(ANgptVDGY8kZ%tD!Y|4%df@Z{T1xbDYf$5TGZ=Nq6_tTN>0bA2uLb6*khST zQ*b2g_o$T*iXC3>A;-Zi>3Ihs#;qbnXEW7!j_~Em5ZI=s4K@P+nLuX0sRW>ftx8*^ zJE)Z}M%O7NAY#d*s%Kz$lA%6lKeMnqWw}2Yk$4+ZoB5C9DV@O87OoxZCrBa3E(|6ga4DiZWerYF3Rz1RmD*8)CKaJd<*!wWIK? ztY_%aRJ1iiZYk4rFIC7lzMGDNe{+Qxd48m#iGvM**TpU9{A_lXv`l87H4oT@a@GF9S>vVWlj$$$6zCU4n;nl@zA>m1A>3 z(cDHS7cxCZ5?X$xQ%#Ox?-qQSf#GM5T>>K+V~7%Il?wYAA2iV@QJhj`N~y&8DDe~% zt;Ia2!VuG8Di=}G0NVXA75yE=p5k8>t;~V);J9P-IYVKPIPkD1%l%RV_Evc^qccdS zyEC3!b%)_Q7_{IZs4JLU0Hd#(_UYF4#5k}Tg8t2ieqf}{i#4sv=8*1L3HlJ1l^z>$ zLS;g2Hgk1ary(kSN|{Mmd@9E5l?0cRJhw<6U~F-FJ_9)+gy!@5s@CHyYj10F)9jL8 z@E?nl8hy#M?9Ckta5_WnBTCV#+V!@jC9}A?6riMox<`2Dqcvx7Vb0)>hRFst%h>Dx z04WE{Lv(~^fm}h%Gn=JTAgRet$Z|Af8Aw9Zv^HHNAxgf2o`%*^ys0{f7>^%D>I|7l zXdWph#Kv6A4?bV$u{+^oKeYj7O*(x&)Uv5olKXA-K`A6^)TJzqAt?$eDg{6$>cy;G z8IUyQb8q4mbFnu(-Hmsl`y^a14LSEP6-A{&rB#*`4D>lrWU8LC*pRXpbX<=$kFmm2 z;B&~^HSO=$Z$#-Ta=SC*aphos$q`fFR%3>$bXgfvsEIRNSY=PZaR_`iRHYQSZjcfY zsY2->6x&!NflGnT({^^fE%Pa{Vo|$S0^UPg{DO6I7Ypfh=b+}i$Ha; z9hP1~l3Xmdv<0C6B0d(V-s zKi#+k)ZF?77_%pcNHXTVC-#jl6cCb@%W=6%T1Ec=e#Dc#ud3ZPzAGi^C2RfNJU8`9 za9VG80DRLATk#o?%3f63y<&0-xz7CLg(;M%3u_4^f<};?hwh9;FRhaK@2`18G_bc~ zEIYqs)YZIVWQq)?)fzhFvmWJ6xU`hGPU=Z2)o!;v4^O@)QbAb9)ke_L)RtV10#>_NTTf$ueg6PlXsKt!^tcxARh1MNe%Xn)BBPHG zJ|t8Mlm}wF!xkl70d6hDIF^t=+e2%<;{E-0#;TFEM_Y@kDvUmf*8~yhel}27Iry02 zMs%JWo5CidAt6aFwuB+Vr2~CyPMu@FO|SOGia6&MF952ehQbA-c^;{_Z!+)_Yvp0e zl{sz^%#Nb9Ft9fPeO0FCs37}{NM@V1$}HG?`-g`P3k*&g@P{#nXHunAU-N%$2&v{{ zl2mkr6s&`NAZk1H*n^2}cp}OS&Ym(l#{v1=i)!2trNni?22OP>p$AfoCY}YuzLKkp zD#Lw-AJ#DHK4Crej{~)9cps*TBURw8aElrXjf%twucMqCmrGwQ;(ZD(ECC%4ew$(0 z25XaVFq+Iz4#?N@yevrImlWTf78+`qb_Ax>T46{EX{Vdhs_IIH_qC1ha(^sztY;S^ zM~I7Av67qzyghN^V%BMV@V5Y~vY^|l`dnBlB_&qss}bJV>ql#`z$s@D+cO*q z{^~0nKjIxNnL;-Yq}13Ahum=qVqrj6?*fGqI$qWVJDsq{2a{(0dZ!#hn!`Ca@3>8@ zs#bfV%VBk_tyibA`Bx=tgtFPT-a;-2@3FYTx)MiZYvPXDx_9Ug&+3XG{@9wgqr#?QE2p>qf`(GUR90kgf>d4!sVQ(d4u`2E%N--rxb$XR@+L|r_-6ZL_ z9s1#|k1pxrX5Q^7Ps0}G%+E1HbeXc>Q&KsvvlVM?rjpT7Q_hf5fpC=EpWYamOB2q# z0{3zrTRrc;EI+WF==#8da(hqNu{2+WAtT$`?{V0^U>onz|5DLBOPnDLXGynJa)2 z0iu(jBffSTdon{{V?)u~YU$B?~BUcit^u?N?#*vi%6&cAQqtf}h3&>P$Hf}FVnixjBtMnyuP z?GjN^w1kxnDz~V(u+{DN+Z9z*L~W|FhP0A3uv-G*&k*v}O^7Vb%u#2yy($kT+M7MK zs^vjfzxx=gkVqT_h_ahcatn^-ZI6MOzzTQl{{ZO&d57qw~D+bph$~Da(#ZQKAPYTM|~5?Z5B`qEr(F9 zTb^X=Ksr_E8HJ~lWu)*$ixy3f@?Bf$?Qn!{^%1pZhX zl^ps-@$^Q9XI|N?pDND^xMRdxRbw%`EJvQCg-5K%k<4|M4*vj*57v?aJDp<1MMQ0h zZ)7vGFtz!O{L>9F4!An}K8h{o?1h~8Qp=JnZ!UIPQ>$EBoM{F`SwTB1lI~!Z)?q4u|37c1fxhZjc>9wjgVWgP$hP6dA3E=oZs?s*A>@mG=ST>T5>d{rM*_Y#r6c^OJpZx z*yas6T1t9y?}!-?o{1K@SCLet>qj}+JfS0dYC1|n9X-J|SNM-yO^&lGuJm@!a^)Wt zAaW*prsqnF(Wyn+gmtB5#m9BPSU|B#on>OkzQV{=u0@Xa#N#M)Z}Ua#hJl|CwXT;H z7b$TfEY+o^i_I3&lA_~)18qrc>pk}%``}G1Cr4cOYKZ70ExB%;`h3%S`v-$rg1EU& z%HiAvr6r}e7Ha9zN)>S8TsKFQgJ2i2^ACI+RDf<>@KGOw-o=cu<{hc>*&e^c{uv>+ z4GV~lQe0)_%jCnI9p=l&aH1VftDEkmtL%GWt;ESXYCRDo==_(lBoo{meNu5%+=#;3 zYlvJ>iC%;d3$WTL4W%JTHd_9*e((uM8x8xUsl*!7*|pa@2c6?2ga+-x{c!P%oDw7(dxlBfUI? zmi$r7%rywvXENo=jT0%zbhiAeWb-NJ(R(lD*n9(Wt0-Ld`ff0yXvMn0r*aGHvi|_X zz0VV3KIEr^HdRxaI7r1eDe)Q-pfe~lBz(Jxd&t@kA?MNnN{2Bj&^*ZsP1Cp~YN*7~ zhmE_o^-?KnoWkt6ORc%z$ZQlMTz)Qa^0gYHOQ}0iZJ;@IN@|qqTWsA$E(>bZ2|KI< zYuNO~M^xsUvD+X^Bbq~{Z`3C)ClffYR9aqtFjFc#)}2b3pGu1%B|CXkha0_t1l(_k zGSojc-Fx__{-LiP<4EOiva5CK?7x|*yOA>E&+>{sW|H){1vVp5N?Lb9Z)<5ODL28O zueOiXHbyk+8e8Cg;G*|h$vKfO#FInM^aqyZf)PEr2w`C*NhQLBI8(K>l#{);!6dAJ zf<+@|z{Iq! z*5DrmkOBQSNl zv_d5CZlOy;Dl}K&CAO5UZYkY@hixbX?|aw+P8l8|{M!+9bBBhvd-^3LI_D5+)b<@) zE|L!|E;<5`K>q3t$`VGNmc^56+zwFx09{Iq(k-KQ<+2`*Bv&D=rds(u4>nS^b-0qH zT#x`#g^3$%FR(k`7W9=acW3CM%TsMmo@vbC&T($1U5bp;N_H?@gchEB2)fP1)R#3_ zr>9;0Y;j>DgGHP^N-Q&(B!({f_#NO4GlW$B5^$p_P_iyqq|{uUNPNUprfTvO zOK%wttSM4U!DE>52SGweARqvFni(i`qLtsm1t5MO~}wMsGi!i+kU445;%V`&bU=H)a-KyR_h)kl5FYKOp}u;u@z0M zPlr!xK@o2cnxM7Z9(gxP^&v$hX&{9v+DI5Mu3>G#M}mp%cn`5Y8;(hp&)K$@Tg{c) zFzwhz+r$>iAA-I^uYMzBRnsVha z$bt;EsqBdn>J2AdoSzNE24$&5T2!?JxTKG+;2ceR*=sw8k@ZAvRl$rAl_pOtxBeOv|gydThj! zpyYOv`7AbjhYNa!+W~wD(Xu|%v_GBbk-d-97asyXR!(eQG0?JPI#kS=!f3RdkmPWQ z)Y^2Gq0V*7?#$^7G?yeKk_kdWg0z50xfmmA7U>H|uE?dzT}pHq+MHydm)NIs!sQD)6DONKC>I8OkKM#0cm|`%}qd}7~*HYv|y@*Os+MXbiKy_;9E>0U!HMC*V z^SwMt6T41f2bdsz0!&EDbvB>*6;zQ@i29K0tO|Q+MbWq_B)Ap5g{oEW>Wg|9E>j7wiYV2$QH!LNt(?lAFeT7 z&2EQ=|tH|`R8{&;^=8P|$m*G5KG zv=1_gvj>UJElZA%=*Cs1DJ!y8@|a4B)os6ckP*1w@4g(!T28KAC0rKmH{w%YT;lJD zdi*uQZc4JHKbArHNlR(1b{EncSOA^wPUms$gJg&ha=AqrZogbz zGM_2AKB=+tGD_s_D(?A`{RFz@fqILCHW_X*+Sz3(> zrI~3wMz2!bnHnQyxoCDn<;Ox2r#Y(ng4Ua9(Xbu*p{6f6TfcfVbG5`bF&c+IA3fAP&0KWiMrd5>O-nSrnVO8XL_EeDQE5p!OF?=(s!8ZUJ9IX-I5q6HVn>Ry zFOB~I%yU4$EBy*uWF9y18!JqSSEj(qKQzo{;j=DWGtFtVs^DvDMbr;PD&$|T_#3eY zwAsZZ(MI#Az5B@c8-$~%W~wg`U#QFC2M;nc*`7p&zWsWb)6wThDo{U)P^5=90F7FO z`x0;`V$64C!srddn;6Xn+ueOVH3>Hhg;{$trULkL#;nUit;MK^Wy7hkp`l0( z=~^9ZYBnT=o|~JC2%QONIcU9Ur@wqeU* zd1drzONg4wj5@~sG%NxS@;i3GdY9anf>nsh;rzD(JZ_EQ)YkjyX_+t7QcaQ?0ZIP= zm?>5OVVQYohn2%eeNmGRRoq&_84MQ1l%%X#U9ZyT(+Od1bxm=$-y|+QHdE?sy1i>E z2FOs-kZ-wB>UOoQhM7jdBnM7OM;j=z;CbqV!3GkxDI^`hzm(eNw@fK_ssrACq+Jxc z-3FG4VaZYD6=_RFBE_&e+T__?ul{(EsUs@l*E>_9O4aG?jcSIdQkZc;#A`}{)nHWF z)wr?P{%3pQOJum>oZH_}iRU|6q0yhJK!Eb0wytuyam0x1twzO4Y^6Xb^8Tw|Zli1@ zO>>{w-_Z~~m+Iv5Pelug(^bLTtys*_GUJ(!u=9br%tQ`|QBvyC-lkLZ5F6WK2`M%> zb|ZM0LmX~}9u*9g8AB}5-?{jv!P@mblBqH2&LU`EH=G(mNmuvEw)1Wet}^A*J4d{q zHKlD0IN6|ExF)`#owGJ+t$#)`on`8D7hM9QH4T?pWjFI3AcU>LNb>b0?nhi+(a|<0 z8R|*50e#S2W}7vl{51P)o#L8HaH&u!6l6q9IN~}VQBaXFK{i|R4x*B^^|C+-*bbL9 zb$E-Vak;a3er}CThdF~gu1WOrSGtMxJ#kq2hK&`QAbWQSOt6I& zspoVf%WWdbPg@HUh%T6u*-iZ}w>AhuOKv)sRQj7zk@YO^{{Ww+Be}aFUezlj*h*vuj|1FgE>_udPovbRe@82Xv`N&Z18C>A%|vm;-VVBfehb z1v3jQsYyss?yWkmuWR-j;Er)8T@n$cn`A{)&9s^e6Q@+3irN?nTaQ}6CjGrh^c`=4 zLqz$GNcAU&6r|-Bb%Js@F_W`hb-K?VbM{=PP`EhMDX=L`PShTqBUnnE4J%=~7RXJ) z^(*Nqxf>?n@X^zQDa`Zu0?J}|xt>8!PEMzBu=7Ka#QOfG9Lh9Yxx)$(arDNgP~wJ@ z9iqFXvi|_~j(|4Y*jmEF8Ei(e)4NhY?$KP*;n73`gL6BZuJ4|SR|kq&@`ny=X!*Z0 zMyJR^`LNrlIF=kLP*Q@L1SMLuq>*jxFVh+KVUWmd=K8DHu_>Z%M!QZx3nvnr9B$0;iv2Vp7S|8DX%L_IvH{ zCtIzj_EL5ozQ>~@*V<}n~TA5P6tUBsdWu$U~ zlYpLwK}#jiY>ohF_VZF3(n_hdj0o6&tdei_^4U36zm7g?%q_~wnQ6SKlJaA#3ngrq z>N0Mmm2=II!U+f)HiM)MAnu|?G*#9jD=-a!7xgFXrN>`O{{XDg@_(x}y&4VvK1s=s z@r};)ClgMa#c64zyBm_Y;wvhPC6$silsJ+U3OuJ+R-tig9A;%Wo%0tKk;=hbj7F5k zV{mC{;6?svV@>#}R-sZ}rPA|r=%%)$p|&H$j==)zK2ny2_SmPO9W;cHKx(ld(mKL? z{>nQYM9?h8SaHfOJGDYH55(s*SLseie~8(^v=)-*mP#5eqy;0$ru3Uxcd|49N44-U zD;zs+C!W6~^N7L^^20}iLM5&IM{^!-nw2@4^DO9%yp=Z&MNBr^K{3$SN{}p-9Z4&< zODOlc@hYj4zqPN0%8txM%_X`08VAKTGQ4!==`yK^Mt-TWNkrvMb*5#kyyL0`wJ2^= zuSTSW?_g|6w$R-~^KI>Ylg23Kl0~y~(PW`<;aRp$R?F0GBFl?Wkqb=L)h*b}r7geA zSmrHCOOhW;X#olHyX9{B?|V4#M#+`2x5sr~KS*j>c^>lNNtLs$ zahq;F>n^})T?MQhPE&ag!x`Y6wv@{Veb=x%iuzX5(iw`E0BdK$SPZU&QJY%B*%7A6?Y zo(ep5jBxC@Bvcx5>Cz@NBG9I?wOyBLP|+#GpzaV($-RL6-(Hu*pVwKpXt$@;GFotT zea*Yb9|DSMlOnR~a#_l}K88Yt)W%(o3!V2$l2UiE>9=f4ju!$(5L4{7GRatgx zDqGJ$j^>26ucRFybt$#=8}!5$)kyPl2yc2X=-LK*4=vT-HCeAmj}eG1K$ev))jJWS zw(^v#UsBRFsBf@Qu;1SYVdicJf*b73cJ)6Cp;ZnX*ITAVZhcyCaY`DKE>J3MH@HiF zWf6TuSPtU-Fxcg0Z9uxt`Ult8; zIubk-XzBqsxhSrWmLldD(;BH}c{v%xDK8~vfhK8^Epeg7Tu5zO+Qbpw;?~5rb#3i9 zU&7xTkdjJ?fAomIdx-d0rm~|*sXkLJq{oWvW3p2HpHjvA%G1>DH$RpR$3_Ll{s~O4 z@A@MeeRqhBKFgA8RWFxmu25;mRv6K3tTwk(xa)rR!~X!5({htiEZw`23%SNTSz#}= zQfe|?=Btq`pz5~eDOSMyVpMiI*e1&Z&u2ECseMk(8E&$M8%n^Cr6mZ8q=w#FzU}O- zz3^Jz2-5t)zlHHEt5n zMr#dxP^d7SVGZ-q)tTW=t~<<^xAHd>0VyKQTYz_9Ir=Z^QXmgc>qmxuZ!Ms3UU zAE(o%z=s;CArH9Tgvbd{Z>oSxmc7+w3m;rET)YY`G|nK0-rm0?n{5>;cx+TM-FiBn zP)ZbtN_Sa3hK)ep$EG6WaW)#MZeIB@~SY;RBg3=UrT; zW2sE2UgAjsvU*uKRvu|&j@zd%!<>BHVmZ7ms`-%zP!yNXmJR6eu+{Bt0GFuR>gGBqr#!wdeqA zJ$e!@aliq4BhuD6@#Z&C(wi!?OXSE>x`{)>Ed;zkK(mhODbf!hHDYSD7WsmxZ4d@vU)OE6&xmT^7F3tq|DT1(TYS^kc?r102etf9b| z>9(Mz(pC}_1&AZ9{^J&5_a&Ki{Ml2~QilK}b%5Ay>!O3aSm3&HZAq$~8RXRR>eH>4 z2By@|Jy5QNBwx88`{JIq2Qb~EMP6xu(Cgk4B>YsV2w{3^7dAs_1xhCV-_I3>S2*a@ zSs@vFM%P&8QtNR(S>M@Js8Cd+Ve%_*DEg$1xJ>T7i+(5$5jSTKG>DZg1?MA9T{>AC zDGniVlnpxZDS2tx0c`rL84t+sd(Ir`%h({O}1SWwiH^8rSC6Zy(th z)AI&k$W2n@R zamJZhp+|+A4M#6jRJ1B3Mx90GMr3WP=2@{@dxCk45_kF(2KV&X%X8XW_}u};j%l_~ zd03zHRLmR<$Q(+8Gd1NZn^`it>XFN<(ALb#bydr(Ema5zSV;;YBrUE>oy%mT;=*bw zX@+L*c_@vFMqgVG4G-J%MH(}{LE=9MrpblG3JTrJl@3DS)oIIA%6yQ4sXVz_Zr#F% z;k=YNYl05=&(=^r0&S>8Gc~|w(Cxaltk8sfq&VwAY_^rShDZL(eSo^Uf-ShjQ6W52 z}EL^TAmucIl>{ zhUm(lS*X(;g;A!|sx)^K=VD7oN*<)gn~qGE}zn zJou_r;mV4r54w@P*;&@hiMMTFU#F%kDscA@T+Kf_k@FbHYlt@Gd;C;?%vp^TnUZLk zmWsMHNlQG$JshPVfxVSron5x>F-Yj%J>XGaEN4wG@%f~~>!mvCCN~ZPvNhe8kn&Rd zN*xq}lY9M+_Q1(J&`d$38xiJ)u@NsOqw_QBkC%GuEjS&u_fb{-x?Asu^>5rJ=ge;7 zr-BO~DK}bjTB?L6TGIS=r%R}HBV?&IxeDII4u<%9p6*vDO=Dba-3LFyo!%YA&6!E` zOrhtR=2}Ssau9@u!^J*Pt+$f25C+y#cOKa9*2@?Lo2fL=+~v3hzNKT+Rrl;As<$iT_{fdNd$~Zro|(BtsockDs0f?W@ycacAtNOZ>t$* zlf_CtVW(x9#H!|OrNI596Oq=h*WG6`{R07)rme|VIDaXwmTIW8EDF0^$kK_h7In0hr6gZ)lAD8bafm;|VtF<;L~G?} z1dHk3K4^n7=6u1!xzzZaL8Z_s@Z}KO6B%s|M{(P3kg@*$*nv@nk=~BVkkNOx#Vjc~ zqas#VX}X<3mYWE&TuUlTM1jz1HYmSa8{)QV7h6H9l}|Ke<$JB*joPPV88r1Nb%+n8 zNk98Mf|QY~x_W=J>xjmM&28FtX$sEV9ietm~{LBq2+4Qf=vRwZE1E z8upycxJ`6THeuBcjg+f&v_x^-#ad}it5OuwlBBBJf^?1l06a)#Y}#Dhcc!|Ofo;4# zO4^&*k+ip>t5A7Y3R+xoBUtW|n_o%v7$~o6Tss2k-CMHz)*eYZ*pM1T8jU(j>m_A2 zbt1&v+$;@gHn7=Uwz1zAl)WS^7JPOClBt^sYmRLH00H|AYLx1e;vqsC zMZ-nJYq@RYjcIh)kQ{JoHc2NFPe~zl?k(bk>>Q99AIFF9zrjKLgX6XMS+=cP&N*i> z(y9^^%9TBpyat_MhLFHgl2z^kK{qE+$EALRbGccFx@~ zBRV(^99F(ZjIJcis5IVWlFeYQ?d$w790PHzgn(>%0#AHNZWkMMXh$_pc(MHNL2F(z zIF(gYSr5aPDTb7;YjIEjLP7HK$hE)(4JV+tTVd?O*>huJge1!B&(Nobb6ZlE6~$WR3kwF|Y&9f-e{4jb3jxHmYNd6|b&K~M_D|!!J#rk@zDB(C zh&85Cmw5_r$oHm|bl*wX6K?pab`K@)e{gM$&993V8Cbipm~+%QGu5a`jeoan`u)H4>Ej%9x}LO67)| zQgoyMO59s%9;Xk32A_P^@hEfFMHP#8@lztV#oUyPos*?W$r-)>0NV68)AKH8%$0|! z3{xeokhL=z45scKWetQ`#W+#*0HqvTLqn7SCA8zYQ7WrqbI6JAw+m=5-*kr0lpLL$ z;Ep3uU{2xOi43&VBvO}8lEr#@#nhk{0vfPLDoJsb1cfLhkaaqCw70cu4)gI<<~bQ9 z;=SFdX&1jTHTfuWoHE9ErPGg{D6-;GSd$_FZHL!lY=_i&N;kg1k~X*)tz|zJ z*n!{nT_tu|G7TNbf<6Yx5k{@lX{|D;m8q>fwV%Y&bh~rb`igx{2H?@43Q&E>8hQTd z<7L+XMgzFjs1SNGSBTX;J>GnvO z)iG8}%a0M-h;3oSj)AkcL*-gW=6VbybAzB3OfdC+@dWpN$t>9~g+Z*tNNvYI1yL3` z;WrxgRjvToZ`Ad{9he;oVG+A=W6yNj=N6#0scWS}uD0<~k_3p&r0Bmw<8B@72E(a1 zl)^W1ir#G_)9@yOZhV(Q)oMjT8)->L;IiAg)&}}iG%S;2Ha}#Pu2(Xe z>omtQ`r}Ngq2}IAFY+${H%d0C1z z9)np{g-6zewM0WV81=SsxzlHaNdzp zsaD>ZmvbbU2bD3&Y)O4m&{R}VtqVcW4#b6AsEt~#aPeFQ{{Wt<$}A#Xt*4E?Nr2B8 z!-iS6KC3q0GSXOmEj0Wpd_^|G63a<#u)kMp(?*kLjrt|+zSi%-4IdKZs|1c zzt-u_$-XQmWC&6tWnL6zm~_=LmK$zVg5NE})<&d-FPxEmD&I+2BKViqx81(I!ABT8 zZUnfJdGSc8oO{+fO!#s$Vj6B9`1)NeE@VP79l>V{$+S!+YT&m4jpItER%_4I~SmWzKt9e>p{C3x3FyW*AP{NmIP59Se17N>T?xl$(9OJRA@Zx`zuS zl&&e|$deHnsSU_=4syXj=7!3Rt_RWp{cr1uEv1>l;9KCN3PZ&G6K!A3F>?h*90OBX z%jkGWbS_wFa#R#75CA$!8imcsz3sLo!5NGf+ULO?k(Q0MPsU9-A3swnS!$t>qRGqj znMr<=$e8T3L5}DNd8ei<1?dVvS`EMobz4{r70-XZE-${8RaIG|HxgOLz+aYu0*%3% z^<7Gb6F06-TGFQZ4mjFhe2qt!&K_1l(u9=|PnzS}1LCHP^?-J`4hmawd99JdUVodT z&-iP_7!#n;sC+bo9*~yX4VbbSTYC-CTuaIUTkog>4ap}JZ>D_U$t0I?@cAjx;}nse zH}41RhnimzV8&$2;pS+H^QbPh%3&+{fK_iMr33xqO}lIkAh)BEzqAOqij)5G(2I8U z@4wjrlb9-Wu(sXEnb55+29$|0l!fb2Bj~WOu)nCpcXWEBo&(iO808t%NDrsg424-; zLR*yDRTDGFsWRbY#Y7b?Xeqezbk>t)*pEy`ehX5=+6c!Kr6T=c^&b^!s!e$-ko;<` zEO`*pB*t_t-L4a4q>WpXb8eq(2+&J>rKI>Ge!2}ZydN->tuva#kcu+ya+4}x(;Jse zb!(Bez(N8_t^o$XVkhwT=gJ1D?XIT)lJ@DosDYf(5!9g)op~dZnJL(m%;0=1rcppC;|*hMJM}=qGZeZnHj|h0Elqj~ zr95LTh;h=T03Lo*$qlrQpMTv7!Ktw6UhBMMXyWgu5`{f|F#e!VA*sKBMO4~b73xEi z>zV$6mlqv^uakooO-6IB1>2MzTWF5jlsDIP1djJM#PZ5$-P*g4AS@4>i7iD*AIW8h z_nbaLU`k%5`XmgPHPGjibPCh48oD`T8R-z&uJ(bHUDQULaDdeP)s`^Q```qu>5gkzJ zMZ>;ISZhJ;@%+^v79WltmdlaQ-Sq{yg$2 zp*r;kN;)3>#@k!{aQv;*5$mdNXdC81(U_|6xzh5W}I~$?cu?%Dl%Ab4YQPqtuF0+LT^c zH}a50&#wLb&J4^pAS@6cSs)uKjwB?zXw8pt*X?DTuf$v?5zDAL*tF%pjrI7a5;ur`F=h&+Xjzj!W;(;?<^M%dp|;+ZBRA!!;k9zh}V9%rnxP!%}Pt1wqF1fp6L zy-v0lZ6#iSgRt0t3{o6D?Kcgu_@(_@94zNw#6yhRS0rV|NltOw5y1WvJ;(a$}`?ge|>FRk!+fKKJi@IL6xzE{4g;*sM~Rtuz^E zQ7WX9s3FGP9H4KwPTFtRwXcUd2in9Xjzz!t~j_#H&FMAD= zEx5m1;7z0hX8aU`UdH>b9;n?pvp&Lt`Ih%|MnaUs>qyw?ARBBg(Ax%*jJS4~50Yec zF*tS{N5|%~)~8W3HeaZUUkx~~m#U>Lh|*IbGbyc&KrE1^8*r&Y*0RV2Ha&1Q;qDH( zZM@0&5S5kCu-HrqRw3wNTrrZQ|?ZQxU-NyxMZ7b(QkDK!TQ zk`m;}WClq#w=U;OM{|hA3V?3g0r5)t8z8fbh)z4c8+ezQsf!f46&{a8C~T?KIyOt2 zAfy3%F8Wi@lVQ~1;yk^lyn2KoD~Dx~yG}Vz&dC=>@G)4aR9tSaUZv$?(pKZYGYQz^ z%58f%Qne9#+i$sQqk`9>Z>YQl7ivABL3ty0q1}w&JP`r7u(2i zE*H=)NESW1o7@Zno}iLRzmA_&Qv}w(V0f2b;1qkzei`^nHj7J*BQ02_pfi^5#JM4YA2BS@Pr zGpbWgt;?l{LPo11z=QQ!N-DL;=y7VvBWcfVeAQgDO!1M&enaQ@6IGt`26oGo8j@kH zkCo=32qqdF4Hc@_LV`i*tIT>Hop+Gu2aAHGQbiVfJSH8S>75#Mgj6A^eF}_r)1^L# zVZQxO+qM|cHYBTOQp82FtS@mAwk13&a&pAAq!l6O>1bJLN6?R?p11!1%MKT|mr434 zi$+%e0Mtjx2ZO~rlRDXH+GF)LRm^3^n=Pmj=vrDyJ6_|zYvI|B_8}yc4I1$L=XEnU zBHH-3lWUohznvX!R7w8;BRVT@hKO;-&OxM1qh?xkrvhbsTHqb406oY3 z6m-oMt`Oy%!BxwZC~|4@V^kb!K!ZU15>c(SXd%YdkQRYt+ezzymy@Xk`UP`O4DQr8 zf0+GKV=ac3;J+oTZ{s1{Xpfb3_IuOiA&FL7W+`W=qK8?f{v?htA) z`Cp-PUH&3R!o@A=Ja6#ZSIsoh#PnA4hF5HWnQUccH!+lV03(!EqCS#VLOP4|z$S6v z)9OCzIKbuGI~(9lz5z*my^uZ^*{)oAj#T2`AL(v5=ympL86qR=U=4y)9DD`aWREBt zeeq2EPFVGHPX7QiRjax^InlLokb9r@337Zt_*0-eDn>!h{7nNLgx)#@vFWzD!nXG|F_L6H!4aZCt`m=p%arax4Zjc#I|FW^UY_`z>}IPfr7T z6Ni6^k01UL*^Lj!w*a1s+^Q{Ci?qibUoJwJr$>2ZI=snkD0K*AcGQqn+WTJ>k(ikL z!ZWXW(YeL!x9S_G_f3bEr{bJCUyJD6T+NwpBk-OayqUzQl1nW)UTqQ>sYd{%D0@Qg z%fmrXb4s>VkEykzE|uDhqq$XL6|lt~cDt=7OAtqxQr|MKi4_`kK9QI*-2>%0+?g|C zRGWP(K=PHAl$4zcB&4NiBEIBYkh=BoX&xMm+Q}FYgV`dMY$P~Pt z7Bb6?%3?)Xw7B3mAfoz;6R@*-h)s=&1OXPRk~s!Y@I6#942?HzPI2BtoiD zlOEw|gaA`c0Fk;>MT+ff?r&^Gp9yo0kJT7dJ-b7ve*XX@)k^Tm#L2;Q>W)jx@;|FM z_LR(EbF4RSK_y92fa}`(j0gA>*Z%;BJy8DuQa|=x;s8v{o(AUl^*0%$(Ug{xu!-}H zEl4RyB|dF7BI9f|xFtiy#fkjxK$4|^*n&L2b&T-KHC>jf8CI;r%RzN6mbocXPeG|h z*W7J;`(Z@|TL-y+G~T|M+rG!m60wmpOqo(q2ANllF|`z_Ewl}kKA^4beZQU|Iyts< zWfjIT{b}al&P9orGeE26i5a~KeWe7`;;jv)X$ne*%rsO=+W_BS3P}VhH@+|Mny#qj zEI0An$v~19Nk;z|wIzf$N&F_jN`r}60cvGn zop!dAo8wI!xwV*SZddX~G4+G1r)hb=FyB2?7UK7YI(0^t^=_9@rSR&r9x7xu)6>wJ zeL)(6NkJe8*VU^^ijtcWN;+b?Y&tg*=(O(q*$tv-hF3IzJU#@FN{boOh8$AiWl4&D zYot`^fH2bAkW?1bhTKKcwp~dmaU^tF6r_=B6N(zRp8>Plk54lm0lvNB-|C21tvg6u zccvMvAfyE;C&;3E5w(wAqY5zuj z^WiHxGgru^$wf zNL!-~iUaBya9*|r!v6pgRodK0^!_D(NGpM|kcXKG8X6|&P}wd4WSfmAYb&y`X$B#% zaMzkQ>H!}31CX#!#&6CD&a_@tS1jeeBV{nk9YgWiRA*t4a5<_{jfew#Ui)ceB+qxHP|SL8KJm1<^g%Fnw;%~^h{NvX2+l60oYC$ov%5^Q=KdK_1EQZ)9GxUgJp z<+3XNoTN?pdXo}kI?xUvhBShb1(XO~@Agg>M!f1cCji``t@@{LE#^q`CA634(`Pu= zgs11uQWjeao60Ym)(`ymdUWq;$Lr%v%l+%r<6#ho|Wj#~l zH;&+<%TIHgCI)<)?edWz>ec$qLehLvCFRu^hi2Ny+1s3F}g$9 z*Ud*VI2~Gb@JA?>#LS^MuCI`1#f%9;%Pl&jHc~eumK*@>)1ko*8zZk_bn{Ty?V)dt z!Z(G+s@$lELv-4~jVAbpHVGtN7wGU~tt) zbwf_$(NP(XE614>R2@h_T7MA$`3|Afk59H6EH5qWwIiJ0>T=TOiC!IXS21wV#qjT+ zcwv>O)rOoEY{O78Sg972S7>n=LR7XAK~QnPr8sv9vTuKP>w3ee*?7%NZl!o@nV56T zEPZuaIj(p{H?nvq#9XycTNR33CNpgSlP)c0Gl+!pl0a?JrxRxlkKydA zZY~b|a|8EC+)g)uS`GPH_X)dehFn07@vBlPw3^FO5`;RK6WVWn%OMfiw7CQ@guIWirue=<2PAKni<&)OQNVY9o zP(9acb97m zm04gFI;}}a(h0+Q+dAzQP%5frkmPG}0lllu!UTTp2SqoP$p0yU>Hll9a zR>@X_x!4n^2>rrR#350jaF1Yd}Jr`FGH? z2ebe=pap@jAZ>Z7Hfg6ov8A5?Ow`xrk;p3 zX|&nd(R2nB8%&A|%++G8=LzNh0+g9StKBLIMx<%nVmt8mxLl2S?0pnx)V+TFYS-q?-A^9v zJyL1k7E`KI8;mDVAk-6OXmM*pt>4o2SG}#a2yoH{p*q3GGe(@j`ykbi5?PT*AtSL?JeU>azE(RFNGjy@si@SeBlXJxFUDo4##da%htz{}Io1`bM$}1n2Y&g+a z>GDQ&S-4-pTTtVTIwN9aiP=q3kf5^a7Nx9T_mWd#du@C_^n~fEjnt3n2iD0xt~b!D zDUj_+6CZ79B_))lZ6#OeyOFsY_vwd<7ibc_kKmQOEzG$|nyh@x@q#%?Swdt>(z!sA zRGTAFY*|*;E}>yzW4qr@;5GRuvq)Kd+n-O0k<`vT&?QfYN7Cz&AvMo(TH8~`96?~? zswEnT2g;kkO19At49QzT%(pMQJjkwBkv&&1p*r`+@$ZdkJy|6(AeA~o9+_gomzTI8bnHr zD9TTDfOTJQFxz3b`C_JcEOi8_5x@G2Zh0kpFTUf7)g~7yNGV#pq?KC0AojPd@eH&P zekigylV*gLa<58*D8p@s->GRLLYxIi(gndz$8UdJN)Slleh4M)8>?vRk0DBV4M>vP zyK5;sd3x`-7)p}iq2QJx4uu`RL@#rg4K6rJN|NYR(`$LIJuG$~d`6CJrs>ia`>14S z4Z&f`b=pjY1Ry=6BUab%aen^82XmZzSJ6i#kzhYO)(7cMg41Y9Ty0;6ZPEZYy?{0w zo9~4cd)TB9o7jt>k5-+evSUp7O7>TZ;@*CnRBX$pxTT{;wKO#TAh^=Bkf1_$AYyG4 zePGV%t>2hqU(P zG*W<@_A0Qjy|)7eW8TeL0PsWpAyWN%zz1;s%2ul`@OC_>8_D!|w4A<|SZ#*qw3#y8 zKtT&qu2xA}l(XeXu&}-G0{0DM-^B|o#NE!#->~{66(W~Sg$ed@_E^jC+YjqYvnkD? zDNq&)(6p5i)PQYlLzb^yFZtlON1Ioi-<n5k1ofdAzgZR>-pehaVjgbSP{CqER_vZNCqV||f8sF4k`HG@$s*Uaua2or zPU5y>q`vdP{(N4Sxw`J#z(Y4jiKbS@GT20M-#m1b2%Xi7rYGfEmD{Yh;gSws!)PpGyS zZE@KMX0h(~oo_7=dd^wPb=T#$Qu&z>oCtLce4-Yfb*xskD6021-rBYs;G&^}Ot$c{ z=Fcd$SMB0}y^``m>dUM-lq59cYiE@jB}qkvmhGWIFA`FA)NG&$_S+FUifiV}uZ6x_ zs|Mp04UaEaZQcR&+v=WJ^>69B(K3}6Dbvk)Wh+045tE@e^J)vxd+Hr8*YAtyYX?`5 zSOBQqP8>{{oA3ar{h#X+AZAbK>>AY%_B>>{pt2iTXcq!pA;cuA>MfO9U;!T3$72=J zK1;^qm$wy_xzXaw*b7EF^1BePiamUC~hLWq?Tdz%xur>pJAu_B0FtUOZ1)Wm zmeN!>42`|`r1oL)AjVLO8b1l^RcRIXn_8yKb)bl?IdNdx3htqM-AhiLk^)F45hcWr zyAZJEexG$Z3>*5YNF$fuMGWg%i#1m2a_UpFU3#N9EV|;}oaf?SxB&Fn`VNBFixe#b zv@d@$uR6nE)`4z9$R$R#T}!Df)T&O%zO=ZvSIsK_020aVxEPcAc+b2(Nn0`Fp(rDn zlQ^bI6z*cKJyU#XSP~ubi-W%YZpVJ0_rm^`BXAm;CULns`2;S(R;37 z`2Eq}?2azfBeY+6nC_)z(P(TTU>)>=l#8eJwknP@VXN+?GKQSHD;O=}N6e&EayJp9 z{Nf#|*AT!#Y$>;FLP)jHNH(_iwjCBLpJyoomNuOLO%+O47U@ySPJOMs$XG4>!)S3x z9gWEIbn9#4(kl4Pg}y6|J6)-0`6FhtK6_%B9hupR491Ai@*H6U=0Q)QKq(!~tbH)^ zSPSkhfZ7%tfZKP1Qrerv{u)$rrAH&za&CRgwFls)16h)bmHw)>rvtfbl9l7G8@l5;9?cJ9*Q{n;)5085DZrt*)(UNK}!o3#pN zcb^UDPN|kvO_(J|cng8c2Ix{r9#9f5Y%B1noI4;NfliYZaXDRkaSqq+orb(#@ld_X zs%944lAv{_p-p9{2Cu8@M&qF!ZGEkQO@_EPOOJ|fc%DgXLGat=vqIw)BQVZ=*H=e1 zL#UO;Wi9C@#HYvr8}DJ<;wfyc*7re@kO6Wn-E_RB@h+85i!qwT6*JpYd%U@hvbMmt znL#&6HyuiFtg3y*g~~}NT6b|C7W#yo<0lrft!szuQ*!SMXnA&P(pp23lO{u}bqECc zZ?Z`s5>;|^i(2@f{K5fow~~)XM*w-TaU+@2(LzVqsmpUxV9ZYY=_&%pwaRfVva@@s zr!DkE^CCw&5hgWOJL*-!6qM>9e|M(XAe`@^TpZ28Kw9cc6agJZ9~1NGuda#l#LMQ~`H$G8kB7{`DS5^wP+^wKm1zw%5sN2O zi5rBX{YsP$l>3`oafvUv778vX0FSKPj~$lVcqHc*Au63s%4(`HCAZS-h^dCFG_iD) zEvIbRBwSrr+yDr$IEyn&PcI#oVf9V5^dR~D^iY$EJUFe?_^+S8ZWyh}O-cP`C`#H= zgM~zrg(wC2yw*FYpL|iWvAWpZYa+i^-p*eUWRi1&%ohW?qlLM1WLyn93tSGz^TUoL zS}a#tz~1^KPGrf|47%c(lTUGJ*ri==E!f)NTG%Z-;o~xRaB#M%85FXIoN*DJV#CVf zO|N0n-_H^r4Yy9PX|UA@g0QEo)f+ z0KesmDJk5+aEUB}OM-qHCw011I)g1D6cXH2v1SE)M4+sry7`u_l*SaZ_4+N&6<+S?4*Q{Tb061AMT zy_P4@YcQx4+H{tx4GA&abxs!7by>ubYmG_V?g-f8eGL%5J?o(C z-B+$5aUkWF^6aMLL_(g5H(Z%(R;?k?=3zxTN=XGO)zAxKYg*DtJT@E^?r8%B#mU^? z09LU96rPkZ>>b18w7XXc}4iciBvM{up1g)wu*tb$P z(MAfsd*THixV*Db%t@ayk*K&GAu<~z=~4+D?Qz$xG80j-H5!9`qv+0OZ)I-&30_VW7$kvX3=Qe;M) ztlOJfklM=7w9He5Dk&){=3iGrK|c8BVub2V%IuE4?k(UoN%swx(J`)Kxf2Qb9VLa>q`@+#RlW>x)*@R}pr%;LxMCs+f$fK6i2XXq>FCH#@?T z(qOqlrqkw?JnU7t<1QCZlby@dzb&qnCqV|=i;LoIElp51lw0$;InH5k^2TAdzq&BZ z)T+gPc%|lfbjGL-HpEvHhSbyt*-{ELtB}#tr|~rGlz^g@1Jssi*!#KeKR>EhMKhWs zV_M!rLG&Rulur(s7N;s>S+-_fmez;U6~x43(SXE^h}_qPxbI4+IE5?xY6w<~_OJr`U#1n5@f``%)pM{pH*s-3Hcj-boscPR zCCC-76rqM&bC9N)2{A|;FI$b3yXMqJkVw^K1pqN3IHDK1_yqz?G4~yT{%fB#pNEuJ zX;C4|rA~{QtL?Vy=2(|bdP>2u(xAc`MY|;-w3{0p@MhCQM`Z2as#a4uq?bo?eKZ#G z*Wy#Q?MH{1j-LTCBB|+aN=vb2xThHicTgG>g1guo4FFiHrMJOjr+ZD9G){XUdr5iM z#@|4dS^oev z!rRsLfQGbjwf_KQ&r!JFz*N(t$A)uVGcm0zYDB3Jm|S*~q@_H~AP^KnZrCGoNH#XY z3{kFS?Qb<6I#`2=GG;ujZ;jGfQJ2K$qdz(&61PufrulDEC7~^}tK0C93OOpcz0NeQ?w~6STHLwQ_Mg~(oVM4umS8;5<2;= zFb6`yZx)A=uAT`m+SCm%sQISir%cV+c2kIbitIEc#zi zhE(w7-XbCCE>d5s(~}p7M95M= zZ(7$HP*PT)Y<#u^A5cLan2I6Gt(4~Wn_@ml-W@6xJ|iLxUYw_G%v(P?l&EdcC%E?0 zh;vJ0V2w`;?Q^K|NCTQ9^Jb-r^&qLG9&;SFQnEVOk0Co)-rM3sSV-+^nKZUGZNEIx zHAjc}$BWE3##zg`MZF;gH0qlQh0M6UlH#tNT}o`d?bzbtj|g*!ete3eqP>LWiY)K$ zxL6*^*^49P*W1q=MUeeEDiq_-$_j8aP;3;;fU@Bi7Dy+pv3)#^jlBERygr(-+Dp0M zZ>OD`#;uNE?H5jP*@hra3k4MVQ4C zOJi$X?kDq-ROL=AoX3_T)ZtX7*QGk*5F*U{Wh?=ttp-KTkU<(xLG6l?`Qdejo@xUn zidK^)oo?WL5X!}Fk{yjElfx{5HmNOFZI@X?Ds?F&Jn{<~ZD0n%_a~+#$B9dFBtHwT z$xb_MXU5w2T~Rd5fYhkpF~hpUwKo3%tVa~On~f+HF5}9gZ~p)x{YDPlQKTERet0IB zVjve1+xOq*p*Mw$!&z4vDVas-s+X2!Hv2Eakc7I@k)-qs2T9wgvG>OEg~uv`OG_O@ z4-+&x!;jr5JXt}Fl6Z@eX_-wfP-&A$kuEHE6qa9cutF53@22Sl+ikI`86nU<;_$_9d1jFJo?>3uJbkPT2@F=)H<8(w@tAo5v9~<>}Tr87Vruj z!>mlq{72*G?ZngO#><&vu~?%;5ZOd%Q&^0pH298$hSs!{q}^#%>@Ry@*CrrJZDl(n zyI3p--D)bL^r_!3CHd7PNRUIXEtxJdrxmv3po~q4#F7sMDxe5MM0#kDxw1t?G2cpS znUx7xAwe}c0^l0~_4}L%yo5?>$qwZ=ax=DZr9+z39MhN@X_l%6OXVW(xM2osI_KMdO<*`NZY+^EB~TLh2bBhJEPA*@{`F5nrl{$+~lB7pl=_+VkICO$<-*3|ZWRAM6 zl6e`cTzyl7oUNA4UXvJ5>1mAP^4MERVIc}aK9Euct}b`$?~akg3-L_M;0=l4#HGya zkCWnMBu!&2(bFvwTwyLLgs7#k6J+mwu@uPS`&|Ic{KHhX%P``+meT7DtqN@brruwr zN9pOO&)IVk88;%C+j``aHUP zy479y5?wD!V98%DTD7DOa&Kn<8w9H0b^{Y6g`t-Nf~={qV6Yy6Dlltp8hgThX)yf2`NdY_i z3|7>3L9)VW5`Z=U6JS2rjXduS02Ol-&b98R zuMIpna89pGa;;LxP$kqtg`HG~^(N@v)?VE^VUK&dp{mPOVwDYX0p{0Hql>&a$&?DN zTZu=cE(B*;b!%-Bp3`xASQYL0TMniGw34RKVsnsg?Yt9B11V5bHiF;E$XXv}TAd4& z>a`T?o~qizu)!Qary%C^bqHYcFPv`{ceS_X)K-r%M03+glAW(Y07n=T7a)SY3}GU072Yz>k^ zY%Dtc_v^kErJ~^Ruu-NLW0-XuxG6`)s1fNI*)%$7l@go#J%>tC`t=p44Mez3vwyxD zoZ9OZ9E3LGy)0<78Z=eJZHjbM0MN11b${_4{{W6Frjgmmx-&aXxkH~%Dg6zt)Sx8T z1)FsH8k>*y3lB^HK)LXjJea27O2ZBMj?Ybh%UBU$Nj?}$a_#Hl66 zsxIP`nUrX)XsF^WXQj!LyLl zWd>oD)(J&6n+7`#hGQYHG}_ngh>nrRa+(H+s$!PR!WwbJ1u0juj{UIb9th0?J-8uE zT#^dhAg1E}QruFMezkQwUu$AjP_rD- zwU981m%h(&*Iw_EjgeVu19cW5r{&saLXyx)`an_J9(_BDr0pB8Pp8%vxb9JPIS6v4 z0WKj6)qO;b&gZG?i4G;LIaEiDQ<%gUyZ#!wk@cVMk9=0XM-VQI{T*P8Bg2f$LgQ@> zWi}*|ZZGeF$s@BVk;VuBq0KVg+1UL`?t9=w@j(Y$D9d109;66)Tq@a*Rm*D z*40VqNK(F9;1rW`c2Vkg?TPLe0P#(B%II?CeBxRXUqT8AI#g5CCgS68&Y5bTS&FI9p3KyUuC!fRQnp;0+E#;NJgP|`j^L5s6KI}uT~=b1 z4`{PZv_B%J-B&B+{HIgRw7j=TiAJYItITFQEGJ4DM>zRF^xWaqGdRm@to;tH*IhWI z&1Ltg3T)EWU??Rlg*D|m6yKRQ>tln$ZU{UPCUF)aL2SmgBRb}&&Dogz(_}UR5w@|dKyQRAn0OE#|VbaGPBdxOLIOqAx|BW7Tvb#K)s?V~x|=8aBGBn|2?%av zQ1VjqYaVq2a+Ke2Z;G0k-q%{;pSc%S3RDRNp1M86mT%ukf6^LDKzMEkrpgeFvl+CDI{EyZ+u+Q zO5$!xt2|UL&2gCxzV4M58;`97sGTavI@+367Tzo1RKHw@Zs} zjQ%-OBLFQaC@5i()_Xy?D|g@UhlVxEURRM&$r*Ua6viIb%K?QcYkdJqQEy36Ad$W7 zI$~BGRV0rA=Ho?#$DwUJS)sTmyq}swaYKaMI;TGlof9fk+k_|0JhE1xNJAuCsFG|+ zwfbE8;txpVb8?21?vG060^`1lG*&oqk)%gU&gGhFogk}FNdz1AvD*}oRmq^b*Eypl z)K}sTU!&6L&N%`SBd*C!!jyK??tRWKsiY;vM`VP7bq8~ND6ySaC7_QcuB7jNyW>wz zQM%V1$|cE)TN$e@t%qJ=-=B=2v@E4)S1=HysBV%71QB8_wk60lNjr{0R@3Mi-#Iy% z>q>JqW*2ler6ew6iWk*w!8SbyTr#F6nC?Q(K~V7E2AA+!{bxC5Wo9b*{i^8IIl!P0 zkUY;4b_2dCL@h133veN6U?=lMFX*+JqoONInCU@jDzLEJX#nls*rbu7#Hg`G)3`!j zCZd9gq{snHk*MwoHaqp{g=>pk19TQZ$U3rksQaBGF$Xd~3L`DYidHU?zPZBfH4wA?3WG=#M= z2vXAGJgN%R1@`;lnT~59&d?u}Y@7}k<_hE0sIlCuR0|-LX%3OTt9JIl>tb&%NPT04 ztX9nUVN$6{a!YSi>P56N)|810NFHE11HLj7oo(J!*UaDm3SQ8sO%F2SWk^Dhpi`w} z4X!~Tb+O-kR59eb#Hr3}M1TN26!Gw*#m*v2&iPj@$;_`kMU_@uSD8}{9ZhU>g=y50 za(WSmME3{fxwZMN3n<~pWXLmfuv`6JU8G5WC?WXnxy@o`qtA0t4HPA?m1??D0*{q8 z1nxmQ<3e{G;ZemaotzW0I;-&eCb?K*TeKLi%ylPQ>r#~I{4zFKI)=(4W8V>*QvCUE zqMF(`+}^Rm?i^Hi;~q-O5^{wSd$hsxj873-aW6QPC8F9EQ*fbieZ~5A#Cph@_=#}2 z3Kl4OoTfc4qGbWcTYbPEkWz&<+ES+!p`@s7Vr+hq_QqPKCbZqCl=C^(1gD-v2yQsp zRCa+&$w(<0NEbesgGbwO%&w)0p`yt8H6EVS8l|#+r2^S z92iJa1BaYG%2|@M7=mgzBNDr!((ZvnY>T76WWI(l|s zRLJTc>$IH`5M{bOK@|T0oR0hC6(|!Sz(F^@;aC+lT!iXXeN9xoS?wQEtag_Mn=zO$ z*yY3_B(_vkFK)hKeQVR zNm@Yx%{uIEZ*#fdt}iI7CChxpT(=FUmno5e@4-7)5;st+YgK~U5!++N40rYmaW z4AGh>H0=*?F4aO@?Mh6w$^WT49sBGez7D9e4;+IdM?Kye(zixj59)+BWAiL^jwvWtjFda|a> z$K-#sr%wMk;DymT`UY2 qu-O()r$VQ~D}=&hxYV?%3Iys&Bwv1{dvwH>uojD>(6l%kum9QHkCZL| literal 0 HcmV?d00001 diff --git a/slides/_images/granny_mashup.png b/slides/_images/granny_mashup.png new file mode 100644 index 0000000000000000000000000000000000000000..7ded8365d15b7625555a798e8bfd7fabc14eb79e GIT binary patch literal 216410 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 z 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 z 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

    ~D!^9GwR3<7{z%?}+5JUxR=5=@GIQATQjWhaM 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 KiLN$ri}@dUAk1_C literal 0 HcmV?d00001 diff --git a/slides/_images/mod_wsgi_flow.png b/slides/_images/mod_wsgi_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c2e84d4f4ddce50fa1823e128e8d563ee5c3e2 GIT binary patch literal 23498 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 literal 0 HcmV?d00001 diff --git a/slides/_images/proxy_wsgi.png b/slides/_images/proxy_wsgi.png new file mode 100644 index 0000000000000000000000000000000000000000..a95aec03a0b6f0b564a7f110c91582fce9169993 GIT binary patch literal 24188 zcmd?RRa{nU^fmed(%s#Ngh+#cph%Y@-QC?Og3=92ib$h0NK3b*fRX}|A_5X3peUZX z_V;}^=YMX_&AB=I$CkbEWyQ0eIp>&TjJaYp?23;&bDDV{+$R-9Gk z{DbQTPad$-shv=hlZQ_kkco1h(pZ0-(=X!myZ&JE5N{A?9#cM?l(LXQfwcbyW7GQs z;+Im{v{-7rV(od`3(?C9w%ZeX{u2^sOWp^{G*Om!3N*PW@FJrVTj~G%&$z31895^F z!cW;Wu~m@2jKldTtA%`q4c#{dzTGW|x%23P?$pfHA9Q_ftIW>a!9%&Yx(0rVIbs{S zXQpkc>r&q$7PnY=EQY_j`%cR>V}Y?aOL+5gX2(ZaS-E>4p89CD2ZKSv>&n@|XL0}f z@q3AMqLb}`-T?st7W1{1Gy)c=G}Wv3eU`Q}I3%@M32F(jFz%a2Mn>NB{YK%o(jF`2 z|D8odghDcRVysGxpDgxDb#=9ezrRv65#!`z?t0w}yLyfUS~=5wrR@Q)%ucYvSu)#$7BF~LM8kvVTVKcNocO|{`=nu`#&d&Ld_qR!@ zsiVKmR9OE$*~t>L#@gH8w{&(ko_Jv7MAt_nK+t!J^D{{LeSm43A7O=FRqyb#YXvh- zYu~>U+1uMUxPNAn4n7s}9vzQ2t5LGE-GM9*;Z*{dNe7?bvyxP2r2pbz)&lm%nNWMrhacucvy_S~Nlamvl zrS?Gbsi`S0Ztk8>?p=wtqZvKR%ZyD;O*Cz zRhN}TdzP2?zS6Khs?4lIQv20CM!SVKw(4G9ZzP^OirU!Q3y)^-Su-#)X2Z$|4<#{L zAOHA~U0BG59Kosa`IJ**!o644CqW&pInFxBIX>(dxTa@h2n`Gj{CD{D^nnCg;V86j zpPlK*g+^!UADhGE-r@^|tv)+s@EzOK;6-iyGW~y2D!|}Me)1( zcXM=&j7AnK>+RnQnVFd-BqkF6xV$(Je(>Nyf?|=Ne?4Eu^t2Wy2S@~%XTw>6 zKfVYC1_r7>ctEPHrDY{3Ho8gllvkwDXk6GLnMvAeFq!$iG6$Jm&l60zz{h1d_A{HC zn*s;zKZw{fN3-)D{f-?TAGgKB!^?X5lnl8~y2Qb~C&HX2+sXt6a8zW){`}g`Q-_C~ z_50_pFzierf9g$*>0(@RX6E-;79}MmaFJ!x_p}`9b$BS9>%F|avt2(m z396Pn-TBna@4Ycd=q)~1KDpyF2J1`PYBE7UD-I zkaW)T$=#omPK{YYws;dSB*Me7iLJg)7L+>ar9ZKxdH8E9)1cmt&~JY+vib8PdaW`F zt+F%?%ak-4|69Y0Ye^V8K9Vn+-qhC%T6CjYT3T4x*wAm>xbelUTKD*5N4x#Ugp{&| z#y~9jwaH=?@^>~udfM{lx*GbM{3xLPA7zH1;k>i553+L-{60?9ue@&s(mPR8&^yhijS@GcB-V z%5^L3zLy$_!uC2mIzmG+Ncj=myLa!Fsjld?;YP!L?r%SXV1sjTa<1q4uk;KthbH{o zoy%z}(|bQtp+8lmM4Z4RO?UgxA%=|*?R%By?6uY_r?)>gsA(N(#xlEidH~Em#*b9jxweiL~Nh*PYa=^sL99i_X9G<*hbp zeez{I2hOGY1d>>O$i?aTVIQ$z=;cE_{r(4W=_khQCOHZ(ih3-yM-YLB}c_uoL7jK6A7U}$Z`boT0XG!N|caC`Zt#98; z>0kqFmBHX)cXWd@4%_b^Sqhp?4?Yu1NlA@87ad(1uk;#wAwllv=QrQ%&iv6y^nFa~ zj_52yn5Qe%jx?F8qX^yJd>sa?OT?>JuUd1AwhY?*_#o4fFftM*D)wQS_XduYb{9*K ze4j5;EP4!2$;O7mX|^&}HXJMa4YxZ1yJA9jBtCV%R++&yZi?rkQp#cOV?L6M^jmqi z0?GQKiK9C@AY~bB)iyT|9j^6}GBS=!5?j4ft{GkQ#SEi%E3-ZdG<{11BGHSR4Y`NQZmyK zTS)bMrNkmNonT=_W#x5LSafuBwy}XP>-OnNM{s3R%LmpdUqlwq4M zZg%M>jyf>`U`bz1>OycE&EjT zpC*Qf(NH&~q;e`^b(y@}R0@)6vw9g6DF0CvjIZC@XCXR1+8EN&S1g4(gbIV){$nt- z_1+uR6PDHu6Psf(|Jt^O1`3GVLAOErc#|90noUG(0NQwsszj%^oz%Xv;N#$nY45#6KfK|^Cf5C%mymaQHs_H(kv3c9@n#aCvGXBj*c|;AyUxmA&+Eh@ zv}4q(xQkvHL}IM;IwV-pDaR?h)PADVuIe==z{TMI#-b5z5Hw@NSY$A%pmn~);}Pe$ zY8Tbg6(+!@qvo#Gr2@yIRmh>I3=#^Z9YuN3@b zHI5UUu*B5KokACk-7CT*&L*r7*9hzP@7Md#$u@uYshqW!65d!xM@Q$7M^n?%A~uGS zyACg)Y(IdC4hZ8cGH-XORTztaCXD&fdBKvWq=dv;Rr89_&Uj$!)!p8P=0>wadE+H| zc5n83)?`dfN%Z1wtMUAuVLHFhY}1}TeNtO1aI*6OTRP}u_3wMga;%Vb)}oowxp-eJ zwg(E|Fz-wNG$rCVeFbnyxyMvOM8p+H=NpTS&aX||#NPVuVwszpH#p72owbf;^0P}y z(tRk^kb~68`|I6kU#|LlQw61(IXRwmqukDZ7pf^r!^m&Gf#-*;e&3gHA!oIptpukp zZ)SS^_@eRW_ijy#*A||ts_JB+0>1il5!_r!-}1DB&n=$px1^<~x#i|vWrd3d-~{ALLX z@l=0zL;jq6xDQxbzC=pdtGYGPJZwkA?hTJ#U5~q(TDZoGo1}(@hI`hF4UVXh1lEPq z?YvOH0}*Gfiivauq5m%1U18yEyZry0A1U9zuLRdDBqXG1VuBo<6)-;nq=xG}6Eh7+ zBeUk+mRcSQ+fQT_hfqGy(TRvAX4X6J)YLEadivPrO*O zC0gIuuoR#%zhN4-WyPG{Xv7|GWHqGw6itqN}H;$DqlD7B+G; zWG8kwx2LD)yYX=aK!^giBNQB0uhRYuFu&qImMV2>K7IsvD~^9Wd83dIs2Acz0uN2#?@sNqyq{BgO4|H z#a!l5?(Xgljvuf{Nl7^!%@vTY0s0~uAsd_|28mut#sWX}Dn9rOtVYf@3$x6_80Wca z%c(*IuItw~ZE4?a15m|AAqeW>!-tcVhQcdnfFQ}C4#1PZMo|FBy8QF&>*uc9P|b~3 zo+d!#CIgjETuxA6zJ^ zN&xKy{lA<1`8j947fiXcllPV9#tkBX2}u2ZF6tZwspxoR&Ozkn!*c;9xJZb*KY)?W z--lj?kBzCH3e(ckR$dkr71aeCS)FoT;kR084|JH!NAug8@7ZnSNmqql1?%Ux898NT zoP*Gbm(uYiYMEAmr`%AG{LsQI)A{xBu$)wMSC`1*QbD{E^~ zTH4_YvuoF`+1S`vobD|^RGb$nB_BeJ#y1r~ZPYB&0mQCh%e>C3Jry{&`}5|bKR3}a zFdj6!nLhlz^Q!VYA6k?pOSLKX3txXEqDW!suUGc5% z?n43u74A>7TOR$Dl==6^Tf}{ZLAzAFr`3CVgfH%&WLjDpLUNFEs)xz5^}w<~mvl7B z-<5W;2e8#+cb4x3;8e(_$OXv!+9dbO<4MN@!1QixtRD_S0#rnCF-N6Yhmp@`4tyXP zE>&HnJ=d>XLIPUvevE;1Sn$XZhT(;zFCM*^3kt<>`w>HqxclJg{-@NetQd$l*z{?p zi=tm|P!eilC6=LfHwTM7@sU1br;Ly!eo%A4C6s!Qvk; zKClZ!jn~kf#o+x#QRpSHe|#D51DXTyakn?eU{tZ%#`^kXgQK>*lF|kM5ftkD;=&pr zL%^SNK`2kr&>Wkg$w4jjyf}4bxaom{jM{zB^)G34)dIS-1R6nfXu=|jirAe4S}-k$ znQq;Qr{W86Edw<2QYOS{Pp&$pz5N!_KLUCl015`eY{5)PfpS2~Z|@HD6T4hj$#5?O z26p@V<)>CyJ)?$_nTH^v9<=$nwnNKv`15DTehGeGZ?7hV8kBByRC{~-WT^)I-f|nY z_m{D?5I=wmE`oVlW&N<_1R?dCmH*6f@3hSG|Mn60^78Wh@7d=%03Kc!H~9E4yXPk2 zVJl!e&6G!`vMas$grw>^YbB^RNcNcT43UEEI=@i|Jqv^$f(K4Rn_NF(mFdI*>rtm> z`uqGmKltoBl3k4l{__0!v~tn4mFStmu9QSkH49jV$$hVf27yxTg^ZAwL>wl&UtdtL zv$JE|{(C}RlfR*$?Fwzu-Me?yr$;ZZkyw{bIRHXQIz03MxX&&iFv)S@zVPO%iK!{D zVc5jP#L&S|z@4B_0PmnRMjqEfy?t$Cqe7lcNWeey3O&9nn3$|wTsSC?qjd$BPfdjI zT;u`x9Ra0Ql+o8U7yAa%{++Vk^K5Jk$W zs&_v%xi0MY?nrV3a1v>;rRKwmZOH&n!~fR(IAmdAfwGBTTAC3!fWy;MMSvy%>vXH_ zKR3A=`~5a{a^iUy5@I-nomO?W1mwu6FZ=}PuD3ory%#TGWBib@Cu|oantt)|^@Adl zes`j!<>jLf_iwKO3wYCSkA{d@1_8+Pi;Hn|c-iVv_iz8D09<)ppVg^+uB@z#GN}tK z^b8MD92DwkGz_eKC=Z+!V?TcUkaKal4(q+Px0e9a4p1Hp43qWt_vIB7WJ|OPtcQ}| zj992z%4tB2+ZxixM@Ns7lZh|SH;9{pvX->I0SG)iK1N4DRJ?r2bo-IZQ|k~?;36Y{ zegFhbLQ5M9u?_(mpIJac1|$R#qhwY~NvJRo29@SrW;u~oi!rs*RPv7`{<`LWqG%ytX zKEP|EA(@TK?MuMvQSD?g|8Fwm^TQv6R#sNE?w@6lWnoKA^G+ioBC2^&D2QdF8_L=r z<_qP>dN9Fq=nM}ZKhXN=;2_*d@adkcg98^95yQJ+ceq%CW;aHt?*f6xHh#fCWI+9n zg#r^hF%IeB1^@+AKA;4A-6DJ=q{jE3ms^mNZ=HstI(Wcz^_=nw!Pr;^P6{o-FD%!{t1#s^UZV zJ2?LFiW>CC{9S*Z0MM%YL`F`IK>5?3P#+*uO#y^^0Zkw9!zwB&2qw7521?IM`u+{( zhlgmhHRj2Xw%UKr8n>SjG2M!Rs)wBOj$yJeuztWz_|6ja)y{On4}N}~Dne)@{^R4V z(RSyF4)pF|VR{t`5RRRHj@4dB`6p?Rk8XLn zthCcY(7=UbCo$hng5O-7$dy9yY7`;8-L&Ui97%=H-eM!KnEOfsq<7YvH?u?&iUkIj z7Ok@0H0lDy2oELb?0X_qi>0nm<{UBCClE9>i8V#MQI;eC=z&Q}_fA3yz$L>6^2FZ< z^hFUO9Hm~x02JUuNHhqvYJa%}u-pS`&}$u@N|RPH{c4jQ=#+U~hTO8{CA z;0NxVzp#Mqd8i0c)dUR+#QC?QY9&&q0k5@cyFiXZ*P{#B;qL z7xKL2yA;;F(^8EbD`-7{pe^$Vl+->doDPP6)S*8FO0R#p&7Tw&I9JO5`LZm!?al;1 zXp7zm-2a;HGY4(Sdo<}%)Uc`G(s*#3?6@*Trk3Fq1C*UdX$ z{AGOWw;u5bud`M3O)d*hXoc-8_7@v1Xt1CO-TYY%9Y6v+ zKuW;GPateT6?*`+?GHR9np**fwo^@eLfZ9lqeRy?$ZGHU-u(yYJ zED^vTut8~m`SPV5_X!zWs#CvM*-q2gd2sd`C8K+j*LL!y}iB3x4zCGzk1~jkB-V| zX_3K42J}|&9#qUgv3{ajau=Spc^kR`TdKuurQzY(nGzHLLsux&vSm7;;NIa$@132U zb?Bkmm(}9wUs+kHoFL`ey_%{zQLYS{EhTKUGz9vyoxaug^f>N`e$cP zOCr^vhFvHPXf!&{Ju0E+xG5>w>GPr%QvKJNiaGq-ARh9#3i^0kKK+w@wOEVGR;TfE zVL4-RBipHz!4G%qan~BBENx>&@02Cn*3HIw^SB+7OQzZ1#yB5Tb&NAG3^yNNEE>I5 zRvMg5fA)<0uAJNyoC)u?F!W9Fxydd({g1E<^2%Hs;?jGqGzJr_3^n)vcyD_BQgar7 zLaOIx860;c=pM@!iAdE{c>hP4w(x_L%QODSyrrDLP*JTVL05NZVuA?8(@sgU^;xdk zxJ1kGOGXw|iB>G^Ja6$L)gSQ4P_`TOU(`S6EXjK5f6P?ocx_nEd7#IgHWGOq%@!zw z6Es(E_K%dPaz6IEZsQ82YC5_hxUPDzhGs3On{ZsJ4S!Eh(hlDEGJ)*y%CAkrjZQOn zRaN84o*xa$-mvkqwsWpFtHN=c;b=9bGBn9{8VyMCR?E;Luei}*ml(UiTUa$VHb%XI z8-08LB5{~j8M87G^Z)Sz*wk1b8)pUC^4Ci!A2<8%&YlCUWft&>cI5Up?6%jSO9J{C zH9hRzo{h_D0s#oi-`^iFaaO&f?(>)!91-VP0(hR*806lH7wH-bVige9T%c=J6{(h) zK(iCwyb`3QqhH!!sOX!*|JIV*aJCX))84d2+Q_x**9jm#+A#|UuGqOoskf|(`d>0m zWk7`Y0;gc`5zsUM_$#YJ|H5KzKaSCLmO= z7;!JPf*%DNkQyKZ^q2M%c6uuC9XnkW6R`E^3-3^j?zg$chdrhT9|i}pfJzyJC_{Q= z;pV1qf{;^M-o7n_d*2J(Hv44q$<{@^>Enw@iN(dmyFBUeg~({hpx-?&lyJWS z`ec@(@ApQhxoQM3)H$BfJ>!j$sJXS6qCBIrNVp^rZtU2dOlI zg~FB(B1L!9Zl1pL{Ufh!(grZo-SXt?)XjiH7HC=>Y6isHFgy2wzs{iXCFW`)K%Y2 z4wuYjEFkNA9 z6ewbvxbAp*3WAmyb$%WIO*$q>C#=1FeQW#si9iDs0Xp*V@UU=C*jrsim1qsqiIK&4 zGM0+U?&&Is#aHl#_k=;ClMfwkOW+Sq1d#*!VF7^wuB$SYdPU&3hJ4Lj5p<}CLJLW+ zHt46*Lm;7ALN3Jq{QWxxG$U~Hwc?7L#F2N=;0&ict=k{x{nUDCer4>+8vypFOT>bO zfH>yj<5PgEjf;y*0bJ1Adlwkp!s6nH4&jG@9lkHMhQq#)B)LR?@#4kg>j&%&uAhMB zYOo-rZtau$#oNvD*h%wCe>y*q?Y+fESGUbaVu3t&0UDNP!-!o%lgnV}^@p7RHn!AjJ6j~OUWtqrOm)z>CzzrSQ{YsHwm!yE zAtbXN5VbO~=2Q>SjciTX1d|2^TnBjH_&H0o4DT5){Uc3!K(XR> zeTVjlw`^0A;^*t7y2HU7hvl!I&n&Js8FN0Xd&{;RUcvoz!HOnIpQTi<0`R1k8%`{} zPY1V{n!yY1RAqyG60k9FOi`bOR5z)c4m&+%Dh6JUCTfjR2RssD=Nmb*WX#6SMIu#RB(j0}Lq)nPuBCQ*l_1s2v1W^LomM)Jj_QeU9Ze^K1 zTgZxWjNfHZDShmm6Z5iV;%R~e9)^H6)=yA%$x=!C`UMDfPr$LZd-!g9cpI_^vdiGn z$PN0YgzbEw(62EY0O_M(%3)sNxdx{H42>mmPQnGw2MT!yj_J(NtwQp)DpI$RYzA^c zqa`2dsW^c<&xURG&aXB*jF~K|YG`1hz&G)}_+pDLV4b6NJI3Z(jNnF+wRdnz?@Cc4 zTRHa5x_W09b8)((xOOq$PvMJ`JdWY3KR2%3O#ExuvNnE`6w=Sm$kT(<}JA zQau|>G`Z%v@{9{`@_QXV8-Vt<0kjt?3_vJA61tGQC6wIF%(Mz#GK*9nX>noMl?sQr z=*HegL)3f$Ye993EanvDj`Y(yr9wVbyCp}r$f9KE6*^UV*@DWe2Qdk|9E4aHHI-&Jn-uR630iITFw%(o%G~DTOYBIshqSj6d?5Wy zUby#HF)G0JWJ%{rphs?rrbDkur)Zxvzlke1^dAS$ycKV#yB(xDsJ`aY{>cVyuK(#T zXsp+^wrrpN#T)XDczi|W^Rq6F^5**b4GE>SG*;)ij7huH-?)Xmcb4o@nK-AYaKEWxK0(CZGDvyG}-+1i$KzA zDmQoJKgKY_tmDtI8q0d3kk(8=rH0|DrHup*5xIf|ca1Tx=iaFbyVCyppD zrkm7SS<5dCH_Z}>-`(o( zwX`7Ca@{Frm!frJ@rx1OSQd^eRaw%PZ*lY2wTQbL4Q)(vjCY*Ab@K`elK%SjYi}1W zq6iv2#n0{vm=-43!_xLk-RTwLYa`~Rv+0Hm9I+?3HYVytQ-^roEz(ME9D}(GL|LVa znk8Cm>jUvn`tN#q2>~xoLQjtmFt%u)oTSDA^L)dxS67AtPeEeHapEUIB4P7$U7D~| z@1A{Gui(U`$}4jc&!<%e`}+}574SJ~B+eHxhnjT+(fW4vR$l35j;1K>Z;4m)_&KOi zqbF*L_J>Wb`q`$Ln#~gQkZ+`w3whm)(u)r@X5zs#xV2CTtg;ob=ny!HpI%Mckw(lF zc<2_!HC(+uCRoy`{)Odn*9R&N!olTx_c#TOz&WSiI>H!Cp=eF{AbUMNHWpk)Jt?em z5F!bn>LM~EkdjdI(wp+A|DN|Mn_uT)r{+CtyoxhE@A01Stfgf;{;O&w&+`ht0#foK zp+?_tAGr}#4BBthh}-Ey_+QXp8m3Q=giO&wrIhOGl-+8cUKr8%7zR7(#$=7N?F71g zGXpQK_p?}xtt4qL-UE%23aIVb(}ySC!` z0+^h>DX0;J-*=1d-=m^k;v6LC#{W<;nA8uPz}oI^JQg7x3Kd1noCH1B+Mi!PICGAB zr0wNznxJ_q4CHdM`;_aBOOVAhp$;eF!Q+X6`TdV5uoF&dSy&kA-Ya0 z5)CE=G!(SYk(l^YcYu@z(5U#SxmH=tfLrPMwIst9X)NwM{YJ5UwxcMe_ z=v;Zfgs8xb5DwJ?xsY^T{X!sbKv+?*u_+#Q$q*PAnZbhs5u9li|13uh@e`tM+sew{ zy_W@7bf3aAX{oLt4v#B=yJ>IF1<~*3L2VSFBShsx!AD2~dHE|c=c^b+`^H>&mOV)x z>QCus;%IBio%(SAxSFC_6g{+>Z27Sm@j+I-tO|OOKEUs2XlOTsPp_j`SXfZ7|CK-m zF1?rQl=fGzm^X~s#KZTh$>UgpXF9gq%FtyjwKmA>_ev!9Vxp@X_Rx`%qJ@TreylNP zzO&%b2YSxYloB(mxcHny`ZRyNp$Q-Eex`v~?~6sD`0y*|*HTS9SB9kFvTEh?Z^u~En;Uy@cKRNGTjO)#GHv3H$ia`A9*y;(5;cIw|TwwIoav!a!JaC z>q4f9Hx-4_3GcM#o5j@mq`!Qb1m>4@=oRhs?Z6(7_zaMX0?OJ7Yy*l5XQM6|kd5z{ zy_WNK8g(HeJHJ?sJwor!G4B^Ou=)`lu`ZM`4~!ZK7<{WIh|?0~5N{wj7H;}{CCQ-K zDdp-t5?M31R46yNKefarjBVoT8T@SNh~tfE3rS~LgD;3L#l^)Iz`42<&}o)dfxKn~ z+5+%?Sc`y*cP<{KR)=*ZQfqcbpO;D~-hi8U`eaK|&U>*EDn`%1048`5tUqz5t6I9d zCxb61A|k>9YyxoU74z2xjcsGaMk|S)c2hE*^?N8NPfJiH;?t@*WM^jsb1(>Ya;Whj z>%FT!L7_l%8iIll_@ju2yv{+r#k4Zofg4>|9Ilx?xIh@y-)K7~G7n?`qWv`){RI6h zMR{blY!7;Q=&j)|+-MrFn~#Oze%{by(=tsz0_VEO51}00siqMYQBg`n28I>|)!oyB z1`HXDC1l+S6apCrF})P3JmXYc_&16!;9O^@*tI;*fF)%gg3A)*C9#5OMl5B4uM+LB7Y zizA7@HHN0I+{;u|_JX~{t4`k4bI2~@;6WvZ+7zXx+3jKy#Xae`o3pLY1^(ls6r&`S zkwFPf`Fx_M2th?b`Z~NAzTqic`NqPH3{j9i{{QtyQl1Az6ZExDi>VD*2pnD-;giK~ zrZ*Y#-X%1AR*F+RK3iQ?Ud)^C z3OGrVRMJ;>n>xn24Ta<_jH+hG_yQ$rtXf)#qb#p4=HvQW3()Wow7ueu zS1kj5^+?B12&y)~lr*AA<(%Y#A<&iZ>(8M0IjY0vPM&G1z#FHJY^^DyIlAe0O0 z5z0>GEgL|bGxy!us_YA+%h%P{6CkxLwfPexAJO5l6&*+% z;8QT}72%o6`j5?cwfIH=7zt2mz_^T2)-V>LoA$JdfM-V5E0WVEi9>Xu%2*sM>2HPL zeANHTVlO~|QKmCOC*+3Lw}c~1Ca;YZ{#b(+ZjDMZH>nY=KLwOxPCi`0A!QLPO;S| zg^O?0TWD3t!bn|p{VdEKiQW`4bl!Uv4kmcjlJZJ87%5qzCw4p9X!#^L)qRg#Ye&bj z)*K~L*@~IFMN@a!Qfmj*4MbgWJs8>jZz>l}Y3A4#z{V2`NLA*5JAhkBQRaX@T}qs7 zHOq*e{<(VfY?BR;U<0;eL5f4Ryd`j($bAmmP^A;GcPLGVa~R?}^?&fvL?$Hw^R+zuB?O$8pk?os zm48A6;V?*6WZdkAxXC~)N&!H!^WjzB=qNsXelrA!W+re?AU@edkIfpaxhaqB8uTx7 z6x4ztsZH8Bw%H!SSx!!B_74mI+@l7obT>k0r={6EDSG6qOd@xQmzmjcB}BL34yyS~ zt?rgGioF4Qa5C+|cWmzKqsGe_mu){?*)DS@%> z2nfdG>1Y3UTj#$k-{phrD6+1yjsQ)+~mx6aNFV zv0N!?pv;ku?f?#(rvxr3cVn1kgTAV-G)?aA-IR=sDA3z2fl{^`myeNckar226w@gk zgoKAjeQo>8Y1O`rjXU1bJHxLGd^1^|yoTep{g7A@Pvy&SaGge(+!%soLwwy}<)}Lt z7#!>cN5aI!1PTRnbp3;a8Nzyq5$@f)Zn#jiG>K_AA%bkFU6o*1tw5`+7S>@zrav@N zQ-5hcBVsb&Yd`%e9|Z{P0*=!h5Ku==p|D3012(9ji1h%}Y)inkaLha42a)vo8V0R< zZQegm@>=mno<2m_U7%P|t6=LH0GAG!?vg;oVdLk2e~x`lm$D*F>n2#5TYkb+ zJo(IfD3L1zTM%cn^(vc*hEmpuI5oJI-whAK3n0!>-qxtMDl@F>>cTnYg9xjQou;iwS?R@qk{*8aBvv4n+TuBo^(f~GhB z}8YN zavYdU5U&y_5j7vJe>LNT@>*m4R8*-WiwOTgF$x}}_hg~`YbWGxZR40KnS%oZk1c7y z>{UgxS~l05;nQ&3aaZzSKz?r8%S`_Z2xC1mok>))jmbWjMzi-_TXaZzF5 zNI~5J+y4B&5V$#`28W(tpYKZxI?;bsWB$ryyyksUo9XQ48jGZa7dJi8fsH_gf!qgK zKY?DH2x=3ABaNgF7c$s+`TkYjBfLhV#IIk!&MjsFi7RulC#(aTRV%qb==D1)gK-)T zO*4;-wCemni6xT#)Rx>tV7kcg@by(NF<}6+#r^;3WMc>OGI*E1et1QE@Xr~j-~4mm#PB=)fxl8RPT__^0eIVdfZX``;_k z)bKj{5sjw7h>wkp4TV5=Md)azT0E^mrw8UH<3mX2q!4pz|it}Yv*PxMN3uf$J$rxOP2>77lnA>XvAD- zq_)D5JOMxMhExiEOf(eC<)TnEt4ciS$3e+(V`2jZonrjI|BhAh*VQT2b!EuI0MryH zm9VF1U_uitF#Y|pN`bhRsY3!x-~jpPyh$##7*O3sh|7EqRYR3=~$~bQGtm_xk?FU_nl#((M(lHnWS3#V_L?J^cswHF~ zvaW|*LIMW|2e<=JBRqML3gR$$A*`{%ORGJPK1xJ>$x6&D(+~0B2_j#8ll9JYNlbFG zxHCQ1V2OFxBlu0oul64*u0ThBE9e9VT%@asx50(3o+rZyu`>Y07cLwPMn90k2LqTl z{l7B+-a|uyh6v6FMX(75oqT-^!LiX3j@{zDO@ss+m}-vj0=RVPz05~|GC_C-m`=pj z^t;~=Wsd#UErwV3^RW70Ab1rGrY{KY-@gxRH4SRAKn@$);#C;&Rk(ML2n^Xt(CudL z2VBqP*Hf@Ij9JzT0tdULr*W`LFe2@a7JRl)hd{oF}2yS zS`I(Gii3j_mgmK9J%U0pQ6cXI$YX|?B``V?q^m}Lesqzjk=^<4@&ds=otM9zflFq) zd6Nc$T4<=i08@8b7K(2X7@v@q{om!;ZEx{cs>mSNpYx4m#Kj4|q{KJLU`s53?FJ6= zq=71eA8f!Q;&zxNgW)7Sm>*2ah}6ZC-oB3)iS9gG*#n7^1T3fUZ5=koyNQXxO!G&E z--Caj9VEj{0Wx_3563Pz6$~$k?+(nwBacq&-^*b132afZ*6P5Nhycudf?w7eR#kC9 z35jyB@gl=BRN^%UzK$Rb0rnakRRwFt3Z!f~KR+=;|Yv3xY*Z3K3@@V8s79UBG$MIuz#VlVMf^8NEi_FW|lF zt?uFSQ7yjqi--6--+QxD67TNKV5oA4F&Eje5T=1^?Kk3VA@@E8;8Fmlmw>Znf3U6g z+@Q3p#?va?ff!wf+110YY;2e~ZL3KnMOF zpw|7|QlK#bV`n({L*9_r;KI!+bOilGrRh?F#grN(e0c!8OG`_&-rM)UKOd%%DFc$M zJ{u#Lg`uWf0Wt4VUIdA5z9U$i9}_T805Z6R(yTF)hKrA6G>1Jx4^$jLS;0#cVKjnQMs_?=dq|?*y%kgksg#Z%a9RP6; z7G-~(A+tqLqPM8Vs=4q%H%6SPh$B*5;m1hhc1_o1FSr&lL5RJ5`!)cliQ@eL+G4VF zE6MV-a7bq20D;{tx557a@6lid!41~Zwi(}DXm@7^7gZTv2}6)boq_pxM6#z#j1q5B z4iZ>8xDp1rsI|4i{?Q1UdyCO9%j5oZ!)6GnJCi2JLm zY9C)a8!TkKV9hcQWUdL?m^V88g|Xd5fqoHmnLM8*BNFBJ*5o$;% zyVAsc8hm;%l>Yj}4~)2VFN7QG>d^WGkm+;q{Rlif_h@igAOm;>{>j?kasB1@pmYej zE{Y&T0Mbl@hY;QmfCYwxSovQ3D7b)Iw{Fe1K1v@3C2GW#{oWK%-mndji7sRi9;Ud! zd8&=AQYJ~{1!FugkTC!$ab8y$2ZHr{E7LsSN67z!ryQ=16doxuNi$I@3T6WEd@Yo8 zAr`SHOAnY%PhgNByR*<@165cc*>h}l$$H?sqqRP<2N?A00>6MbA>UX zZ9^PpRM!o{AemZ2LB8p+iUJAU(%M@4`>8@YpDEuU zUWK}54Lu#We8ATg377?$EUU;ivLr%AV_w~7c3Em61&7motM@hV{~IXT#x>qo=`PXX zA%)}xj`Jc&P{474JEjrGwSx!p1=50HGe1P3koFH8;D3#Dr)v6uN+hA9ivxV`_xMTq zy>zZ=OByVszYuZIl-R~W!RSB_V9bS|d}xR!@jrdwP_Cfq4u|ngNb+F%@I3o&+78$S zo~K3dbJ&Q;)$7%mB|=7p*Nq^aR>ZOb{xY+&Wq6eXH#mSvDJUYq63;FrMQ`FEt@ob-FBZv!Z z$;e9pTt0U)LjDWdVnwNKyh~-DhY{LhON89&|Ez4fKF2fB+;L<}TQUkpvE%LYG$C|M6v0-!KUS*Cx_5 zBM<^+kDFej1;Q&QkZuvG!5~C>Eliab?G3@`2Mo(23KMVMN(*ZQH3g8MM z&cIZj`t&I}Gc&XL%Ujv^6aopKi#R?(ocJIR0WfQy`f?S9M(2Vp+*4VG0QV&v_KYR>#l@FO1s7=&JP|^RAjQwG1Far25c$HOJ&O^00&lZn^?}TYp zbAfOQn3F`tfuNA?of)%%(xzBZO?hL+E*5z`60A00MzjiC6!^`1A!8uEeJC7&`v%Gs9*kJ|Cx}45e{mb$=~5KZOcVO|C-uD-H_^Zr0Y18Qc;kT8E)y&mF}RSB zh8f`npk89YiB_u0&9;Q^A}`=hpbkDq30G{s2v@RIQ6ZTT8e3!p>`RkSelczp=#y)nmV4pVtb22)a&5Hn#n1a5tLM^@4-W}2Y z8JJeif1{R@v$IjK1&{$*2RFAt$QKW^wZkF5mFunj{*vQf3+F<{ZL6xPkXJI5S5)X` zzErizSwX6fq?FVY%mEG#0uk@S0#vbk`w({UE zxVr9#RgTS=N9D?vmX;P)R}%rMW!#gqjN;cU6~ZlJcIdNgZ2Qyuukf% zudZF{$13;l50z=Z5`f+Y^^e~b`=nA&VF}dd@}28Yh|p0pLTRxsMM@lGvKktMBO@d5 z$T0Km1=ApZ$8YfP^AAB@?MJ^5QI(!@)J|3Y&x8zb>)gVI@J3yN@VD+Gi_(f)BG%z_w=kSiPA>gNu;KfM@qDORyu$R+}Dd*_qi+_cN zhjxFmQN^#7WSSu@^CYB-xvLoc{5tD?ZHQg~wvC)c#bh`(xQ|;D)L}a#`8402WgU8` zew^P)NkmX9uKtnuw75uu7rFjhzW&V{$V52lzo5XWifS2rXBU;~n_!_Wy$y40_z(p1 zZT>X|14CP01&|q$HUt^Z`TdP|$_W9!bx=QA{=UQTJt?Kt(a}Lb%HhRdqy>R4d0;Ds z%+$i_^*wW%k%p!wtK-e#fG^qhhv3>~1wV3J;p+);)G}rMpGRHgq8abRf+inM(~t8m zL#Y>YTZ%#aL5*`}eZaNBE+?NmTc%!AkgqoDhy$~nzHO6SU}J@)zLjm(B}x1MGK0DN z%MRZ8P-|3$jPH$Z-36)&c1jquVy6pHI*B$$g*yjq)w-}g2SA0kRCMFB zf!%e4Q7xt6j{FOR>xDoO@Yh`lCoe(O#a&}BFmsG{R6Gw5)a;pY>P-oLTEXqU_EH<$+-)v&cvT zuuI3@1FPix{1lb@5u5;hyWoxvL(pBnH@TN8{Ra6DkR-!1Y@(0uglUZ$pB^!eRmwY9 zklM>*hY$iOP!`&ut&s)aB7J1464wV>n7JgAE>0IMc(7qcO|b{X%H<*pwSM2 zsLYJR-%UTc*;$?_r*ujGb5f2Kk z2$4bKXay@;2VbrTP5N-w^}R@b3?K&NxA4n!pff-hD`K^xjHLOJe(P71;jhgRuS_6mR+^#WQAlaH!e>vymq|E!CxDpVXBKIlJLLSx*DeK?3aU32cExG1k+*f?*<`6dq=p!?}r z_OHc%hx^I`Gn|b(#OKl0&#=y z!!vRj^YNs5(>m9u#XSCXlZZ`~%u-hPP)TMJ*#3lQL)`*v$<~iy$3MJI$gT?1oz5Q2 zZCoTA^A5@v!P_NNEu;6G`p|0|pHqhq%DqCLM)VI6AxLnvaPafSBgbu1{-loNQzgkv zFEhWpJarg8#e#m`q>f$BS*WrR0leKD>Dc_&C`d2jpbVMf`5*Q}^1yRw%Ku)Oek_zaR_L;4j{?yJ7!wiKsWrO4KB1WoW-Y*1ilVvSm z>xj4zCA!flJ|q*o@tMH~{f^V&;d;?VMOwWf`cK5r*FJRrYQbW&x)jrgK7}E|cF=`f zi!eM?n_ug3){P8azWDaL5Pc|{B|)X96})+6#m~)&q2e)nF6LP6DEvnsjrwn( zZj-x46Dt_r!FxU`Eycj>n?{}`R%@f*O5NhSbA6XTeflDOnp{+*>6JUMWELJyC%jVi zgI~#X;Wh45Rk>hOCLT@$0>&8i?(R|TDypFM{V%&H;SYhTZ{cP4Ti3C;s zp$ykdxTEF%71BR6^}2^oNkdoFQZbwjy^Hot+;i5OyP90&JE4q4!g{JJ*{1BAPSfUg zCy_GFXMs^{BOkUGEfHA?(TBY=FCE~WJXy~r+-+XZYjHB_vcMo?I4nve%(!HWJ{brW zLYtEmyq!?hKCczC(_7ub$tYY^!cF|4!G(xQ;+hX}o9JaxxeZGdEyhuwZRyB2dXiFdoT=gy98H`luw^cHAdz{_7 zH5K7Y5}4JBuXlZ#Y>uJ*?jq_4CUwLTb!dY2n@alsv2j#Z-V(p6_55f(7mB_Ags-m; zC1>Rh|Kcse5uPL3KST6!+7Si;D%T$Echr(j=v@?Z6qw3AI`(J%!tN-w21;qU#HpoD zt7gv8qOM@NqF74uY}&|*Lw-r25V6aurtwFX`%P?+ojs-t$0$5I-7UwTDf^4RRh51ISU?lrtVeN`=|Ng*b>E$R=t+N%5ZIxBAsJeAJ z(e%J8ufrO#GUl1(=R3mNa%T5@ueim5E2Ev+a^X zi)zrV>^&F#1UzG!w|R{3Mvxmhl1;?hJVk@)$E&uP>ICoXy68{NTtScHIHesA_xWTd zJkc!ZSALfrtt9;8mu(R?K+Rw|L$y?p+dsA0Q37u#OdEE3nclu8<%5$tcRlyD@{0jn9)>uJ`OnzUuN9FKhS z)ctqygpYN;iJL?GFjvFuT9N9gU{)etHgUPR;(NVT@Dcz(}Dd?Z7i6vs=u4CG+K|O!Y zmdmy&`x{1GwXAX`mW2_!tf?~!yUNW=B=csh2c%s{^h_u0)NpR&_L(i$tM@Wm>J_u% z#y`k;S${2(^S9J&)4n#WG%`zNPOYB2$y8@l+XbZd3_IBiQ3g{p?~k-}3ZbWB#iFwM z)1CC5?FkLIy0&b2e&dD9&Y zYs2x^k4C(G)66M0k~`zwDec1&DsAL_r6A5UPYRvZa^T9bt0|>)giJ`b{Wyd28_KH? zf`FfRu`e#N>kkAJ^eMFS_JHKI*0CBBZ3HBs0<+;ms06`~aDKV<|MK-VUtUdy{Kv9) RVjw5aVS%?XuQK(F`yXsWP?Z1x literal 0 HcmV?d00001 diff --git a/slides/_images/scream.jpg b/slides/_images/scream.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bccec1786d1dadedc7b15a5f54da737fda9b10e2 GIT binary patch literal 629018 zcmeFaWmFtX+wVPtySuwXaCdi?Ab}tQ8QeXP;O_1g+=CM&xCZwS90I{z!


    1DeE}To2U07Inb@`iP=R=m$@8qUeet6&a_b2yS`^lotzeibF`IT%^OiUoaVBy(k zo`3&zQ|;V&exEqeC>WMGks+M$!iTI&*-m4hpN@OoxP4pF>+hc{nn`k;$F09yyq9+= z`||4CyZLj5hT-imb&4X-rt1a-1({ENO~=KO=b2O)&w3`wd4{5>4sOg>sp;zKMs$z% z6j~5rdV8)v1jUTSNFbu4<8Ax$=|hRLudAirS5nH7%AAI_k&=9paAxN7joI_S+ACg_fcBgJHs%+WmxGFmjsvkQ817J+n~wkYccZqy|Gj?eKCD0T zSD;!XSK&@2fb?U>jtx#v?;5=N6@d2F?-u!@>^%%PwD(cG)36LApI5IA_Vo3cqoHD- z)qCr5h&8BfTGwmSr}}R~Qc@&V_d|0tZH4=v8pQW`W zDiTS?eTnM%^XIF`4geB?IKnAl0(vSvPi@3+ZhG8xb2D3Cn(TSw$W2Mh9)QozuE+-j zExS1)>aps?A#;}=-=*?WJCUB5d0C_T!MS~V6?2y-8N_2w*grzgRruG=5J`7vZZ5CA z}+KQ}oy2>ZnwGJp0>V+>XIL-7H?KpJk5IuEZ&T(GvKi^r> zbTdt@tSAB3o;~9r?nAHiI$IF!z98H746}v74NL|M*3;8tx;WZ|S`(0+Z7<c<7Kd-8mXVLt`3p)) zRBqf5_OU*56TM8~%@I|P-_24apV854GvD4s&Z_-e{3KF%;PPcX#rad+*Hk zlaV6G)5HtW77)93CEwU`V+_?jC{k`c`1?-lwZ)%zR~Po@8NH(fCxi2EhJCi1|BZ%` z=kQ_b@h^$BK4j!15|aN(tIu)1=p8B^YTHlobxBI^bT?dLSdEu-$hvvSCFR`sOM~2E zQ*-le0G0s(0UhpVH8L*_V|R$|%fsV+-$8Ay-Zzy7?j8|NoE-pcZOIDc6qJ3`QTub2d)~YK?l^YKGwS*C2dk@h z>+0%~u|=S4W~zDR&{wgsv0Y!_duP@?=J`)u^Ong`<`JZ>M%2yLJfl;@ipt5!(Nj_6 z=j38(({Q{ezNYW;vChrz%)VlQ@`YxmysxnTvH>WWq51hpbSsh*<>lp>w9oVreqFf+ z_wl_E3iiA%KxhlXFJ|Onf89`--ce5m+S*BS!y*kH6pBieSMv7 z-=-v$m6Z*C5~->K+1A^A{aYz57=Y{5KYnU$CEydFAUZ8RNRx|lK0yDn$ISAomH7Px=(xh z+W2r^nfJ!BLqu&|lLgKkQU4dJw*J!1etV;K`ZURXc_y>Oep$xD(~}6P7wPHy_wOg; zly)(FnXMi-lkja#;#qvI#r)_NvMY{&3%7I zlo#T_0t;nDeDq|9(> zxA|5ow79q^?uA$Op+Do2b-y_B>OZhBz-^&MRt_K}?OIMrOQ#~v|1Zh6|H&sYWUUg5 zvQG40hev<@Oi4{m)!+N6u8v}DZH;~QRY;$PX~eOKNk;5ivEvWpA6BNglZlQ@#s?fH z{cyqwL>LOH1o}%=nMuj?qBNr%(4Lb>sAos)8KNjZmHb{!WTr+{Op-jen{^ z{CM6#MMHNQ92QoK99n4A%)VS+ac{*O^g?iOu;~$6W@cuhaYidhedo@dXVR|JC@3lj z+M8pa*@)wglD%W$y2vTr5`vZhy^;IOQ40)`IVwloaqHc~!^2J!t@|Ix#3=C4cd)La z+y#NJxpKsybL{V#M*^}^WK2{P=Q1xYEG=Cd@2&_f{kQpB2aNy@@fTmeH<}=u&6SLZwLUmNNGyZH z^N}_V4cO>tnZQ2>$?nqz&g*a-owFhs~dowgx;C zarS{~iduTVeM>_o)O&M-6Kuh^q#ZKOmG^gZ)}VLpkvlUtt*NEe>lJzDhbK$b=Hf2N z8~wq^ES2%Jz^)x_y%o}+AXbONL>B&ZoA8N=F@SI)I{OCQ)Td9`uo+o`XSYgx>DD+A z3|tp7G>NM*b8w(VxkB(=p>}_FXTBk7ztRGd>?>Jgkjtz zV8lMDpuoWG+Rsj;Fy|nXf{A{6XMQ&leB9HgLjbRFr|t;f`;2a(cT4E#(ZSKt08~ne zW|qBshk)+ucW`?weC^JcY|{|b*2=xVE@NIKY-Vd4a%aG82a#*RkS>5ReEn#loXyf` zs{Oc_nA!1Rf($`lf{wBVHB)@qwu7>=vQk|~=YDy)Tglfbz!WqW+dv*mYz(+h3w33x zs;Q-wm9YZms-HQd0KzsWC#Q$O)pLF6Lw~t*q1$h(&k0g=;NR|Uu8MtaZ!dHjQoR17 zlJmiX2PN)bJXXnRfbUhqS$%_psYb`f%t5H-STKhulcu^(GpDYg0+o3`;0~M!d}~-1aBk(@`e@edqECYV-2DoJ@PNIZZSt4Jpme1(xEQ^ z9EKtfz3EU*U@$TuvFy=rOuYX}NFzTn@TpdR{!FurMOax=lV*5iBt#sB(8-_yK)7_jnB(@zqY@mLnFoCtAs-yYtl) z6v%dS%Z2;+kV-pJ=LuD)Xa6W#?)tIjgkOUn$dy%9iK5&2`cGfi-lzFePJ`8UY5r%* zodJ&Qv8;qnZfXYrZyR?t@rxcPNLJo{h5AwcCw(bFf)einus6&Ig~JBeUO3! zkfv&DYez~vyO7<@EG;jM)Q~X>YAb^~d>8B+60(z$j*CW0N{YZsXlQ$0TZZZL{zU7C z4j>I_%E`&;G(?f*x$oJfdzg}NJ_d2*4vL60qF@pn1yautA_}XoYhRdaSiT1<7?ht+ zbVIFKmyVz_0U#*w8ccAk^sTCrM@W&O5$F+Rq#Y$Q~3BK(UEZDo&b;La1uS ziIO4R_$4NCUUzUXv$x-cBdmAz>IcLD_=3)LCN!P&?ChaC83iUv4*dFl=f@C&CQj0U z9T8Kvybpf|_OLTHB7!z2Hy0;+Cn#s6hC=cbDiF-b+B5G}JV6ps%FD~&c2f*m zyCbzdH5b+I;>C-DfXfGu98tP@l}$i1E?Lrb(6txHpODgGGy>5efkCYSDKi^S%XW+c z?TZRnid(mC=~cWxN>j@tD7XWt2&g7ck~i)Xx_u|W4KR2gnwrj7WXs^F1qKE#Am`(^ zh7~s)d;*)IH$}jXq&sZ?*V%<;%goyPK6;Dlh6YMWNlBbS{P_0I&CUCnsCz#+=KKG< zAR0QbpY3hs+UO&lB?muk+i#__&YbitfF!qzU+%ZKaU*ZVXGgMjanzc)P3vG_TIALz z#Xl%$xH7LyU;f>@cO$Cq&WWL&6`^^n6))}^8QGE@mnlVKo$2|XcZTp%=DF})b22BW z>!VsV&PK{BKS}itpS+j6yL9ec`yI33A9QyX-5mfO7VP{LRz1+_+8z1RA!zqCRDq>o zeF*|*pswSql4P~9DI5Kr0jZpiHPQ#h`zFa#&QWDv%yK*)&i+*MvcqJ~y3c8zbKksz zQ#~P#*|`e8)RuXXvB-8+e&G_!{`B`U=7o9=i&=%SVr%1_z~M4?7f$PRbon3p zd)wFbv}bXKuuFPL@|E_3!i!ZE6|(W-wti5sY^V7S$q+PLQ_EXsZHL-BIsIFwTqb;K zY7{}gC~;?W?n2TW8Xh*k7{5(Ca?j|$`Qc%|)zww~H`$dSG@Yh84!PhsG%ytRb;W=A zFM;1+n0=tc{tCE=iDABJSp+=vCuN|f-svy2O#NSdQ)*-dZ?M(X*KeoYCs_x|>(BL+ zo42OBg!(Hz_n}e*o#uI!A!0!lAYq%0Mu4C;(d94UhxTxC(uOGeReEl`e!GW?LOPe% zrXpR9qSm$GT5~bNc7)*2P$NqI6h7Xv20Vw%FtdE1pH{z|HQr)a`eLR3f!%uids2W- zK#v`%GcS~Dme9DIZybTtUGz@ShI)5Uuz*8!pO2>&3G?!tDFOjwi4I? zqVENRUeKLDA+PnI=^Qz?_chLwI??JB_&NfN=_JV!+8aFzB$VQKFgvwCVZd^z0M_|p zQiH!9(JRqrTSFT7L~eo_mFuN~>8MO+|s`+Y`lU3`<0lKNc7N>^7cT^v## z$wAv5krs?r4-htbYdX_YNH8n_HLCY1wss(+ieCFj4?Ijz2q1d=^+`PPhI0dM%IZNB zRe>5VDjE)>9xA*HP%TBl`w(E1Fc|=AZVypT)%i{Pu&nF^vMM?Hry8(AZ3SjZ5f9E> zIPf8AaAneV@hXrr*lHHs`uSgszT3+!wRGLWec}(BEt{+&p#6Pk>VS~r&{zE7>2d1?6t)yF*Uj+~ zO2AjNi#smvLvKM~3Hz>`54a>ywY~%l2O(eZ`n9=KSPAi~G5-gjq?CQU*Y4Y=9zvBX zH_R&y5vvt-a&--aMPPZR*FW*p9Yq`?s8a<+MeQqxIQwf@3EfGG$Y1j~+; zMrm(vfB6cM7mA3f6#p2dqEaVwZ%$mcP^#dZCvMASriWo=?t3jd_?yTjx2>J=qGyt7 z;sJ0o1d}o`U9ZmORy@gpLVi z08+Z*QRbp|Mo*qR$(}vu@oQMcu+oE#fOt5*gL88ah~oC&e^~=NPQ#9ZRX|-ux+8}_ zf#{js|4ao+4cztr{vm!wvLERi1mbJIVM_TMz3u0Cc8A!6Wy2J4xWuUA)2C0p8vxh` zj~-Rl(4f9C@O~$*;>wjPC#0oozI=HgeMrWjG!L18_-^pm5XOisF*z9m9IQ8ht5Bv*`6x&Fv|XGEO3OI+exe^{+)hv?D%o8!a*S6p;^1k4{#FAM{ce|g<)Pq z#OMC+<+`lQPkPvRgVMPrFWD)z^QmxIb4~%TiEj_8yt|$~#Czm#@62IlYbl$`!C%Ha{u} zTnGyHs!>JGqb%I*#lsR4C4v&oXGV5YqDFPP)OR!Qbnb3DQakTo@y{Y4h>os~Tzi|Z%)boyuSy+1?hm+Supi=AUWQPr$c?H(VUO6${?Bpx zScA?pMrx${J$?FAKjK-i@8-FWXX2keRX7}joL7|F5P!^BiOvI3ZkfyE9zreI%_(ie zQSgB~R!3QZ<57D00RubU17tT$c6m?vr9k+qk!DXlbW67EOVC8%MlIi??q_}i`6esOPJ>8keg>EJR?VSb*)vrmJbpR=XD z8}Gp^6+LWnDpe@Ydu07+^4n75SkONR5JEESlX1vRK4Z{-Xoq3d7p<=H5xQUzK85@Y zFByk*5t!os6`14&+fkd>MMuw?sb@!h>*JHUQQqD<*_q8kT*T(;%@;3U)i>G18=$i~sU zQuS)SzTr1Z|Lpy|kf{vOI`B`AAmlI4NP%N&*(XyD&&bG$jlSgmn+JYhjqG z^A*maH%qHe8P}3b2E>EhE>fflp(c{-;(5K-cCy@@P`=XtIdS?KRV253Lo}b76A;vL zAs}NKA+mT?_WAwjuF=t4Q;57bB5;8}h0y$?_Z`CytxzWSN$_=R2|pq14U?hr0%Uh3 zlJ+t(`d4lJ+gDvwzdoJyZ*?!l;*;Wl^1iR5Me2cBlAf_${#;EB+qe1ZU;Yxfkv2jp zquV#C?RYn)l0}Jd=}^(p?I6L%$BuKc3hJf}y5{>oT?UX)F79&YU%2^c`wRYh?%6t{ z@6}NTZWI?TTtGFF@QgmjnH>vDOVe*B;xvPb35OBxdV4ak@gFlFh6eR%Hqo6DF>`)BmS3DBoyu-aohzt}EKR z{cB>%q74@ZC`cwICWN5EdFpl@x(5Qq5MIQgp&`8rcL_p%L4RC0ZF|f6`U??Xst^Ol zaVyQYM;Rx`hvURQxN2-_J~Qwdej;^2S9byQdMa#5=)42;juJc8vvvi%Z~o7s4%*E{ zf$ozxcVs&GbFYZV53-%z?t8j8-Im3%vSs*k#%j9OA`7+%4v7N$Zs8X%UR0yZL(C&p zYZqmHa&oN}+FH!M*sm-2X1n^>o-k!z3C}6sr(e&s@;zm&x^|j}MFsgBCju!#%IgT7 zkN)8CjIQTskYNcp4}z?>$eM5rt;#sfQhCyy?)0rTGbIWRk_BlBk zzI>70rn9bi!9H@Aw=yr=_d}1GVDjpXP5_=GMI|OiKu*~&E6WLL3h+|^1u+EcM({*b zyLQ#WFJ?5(`6X=7&L=_E+0nzu_A9H@E~(;^ZX$m9x$#*S3Ufctgz=K6v+D;=&YUv_n;V;L@qf-3)LGxm-qD}M z^d@JGH);Fk^c%3|gkT8K$z$v93SpN6i6VM;!IUsBK)aKcUwJZQS!s`K^tE|Kr+=fr zu`Itcy|h^Rq!D9(`28ch=ag?B`xR%xHK=pxZesK~*S(+(&=XmJP}6&VS1eZ8C=?l) zP|X48axaJSnh)oBe>AdqbmCaGXm_8-)iO_k{-)_s?_(0a`A2SCy}%n?ApaQvN%PqW z1~lplPEMj-`6iLb=WNXxjqzi;zsR|}6>i=iwU2*pdcBE>rLuI@D{S9{_<;-k%mZQi zZU~JekHwwnG6{h;4YpBMNFor{5jo&_{2@W5p3MIZ-qS`FKZJ6SexaZ{Mc8#N( zE616EX$a#4p+=#rS28o(55ojGu$Z!%T5VTXX}qX-2({>3SE9h`@07BpJ>C1sUd3uM z(0Zajfa<=(&);9{dXMO{Q+IYl%~IFawi?%FKNi1Ktrfc3=l=Zov1Ok|xZ!TTTgYO$&%7cX3H=8Cv^5f7U>01WDU~ z|I_=GM2fh2-t%L%gu<7n6G2OjPCE`b`SX~l!JAVpQnl%aj6q0Kq~{K~gi9IP+8L9V z>8`5>4$h6lZ!^_;v#yMEA3`P-;@vhSC$V-E0_gIViPze8oG&6rftWh4tLq0UxEju8 zHS1OPg+B{24i%qsO9?7xkUFSe(Ah#fqE)=XOGb-m55Y@6+Fl$v{e3NJ4`+E2G>z@Mm`y+UZI2VPpxiJ&V|TsUU3|&@XEV#MRFd^) z#I?ym5?b0YF^dLM$i#Z(w=8k7ZgLWnQ?ODJz4x=kL^wsRI2?Oj_>1?ujmE2kE#sCC z7oQ}Wm)w~*CcL;(H~LS*1xg~Jp;P!j%4oi9nyXKWZT1%mS&inI{&GfGbGV2oaURq3 zOt4r$LIl1T0!|125i7<3uQcV;ZW>_{7P1O7p_528j&KuhNe( zR(_Nc;#Kg+VW^gq-#Fmh92g+<_UqSkDz!3MT9d6$!>kE*Vi2ST1O>A@7Rm29z=|}& z5Af^54(>rzj?OnHnW&LO+N!+0pUK{1#%HWczBE4V|J?VyvGHz4M@QTn?4yKl3>V6C zcWHvbePxao+8r*Ez4L7}Q>`Tejc6qx{wz8CZ%BoF6rJTncRn|8ywlRed4Kk=Idte1 zf@s)~p|%lrBJuOd9Xnxtc>tz;|KY=-iF_Juvf|$*P6Im9!^*R?6eQ@3YM ztE*G>fB*i+VRzuR!QQX_fElZszgwp3`b*X+Xx%A4!<5Uw!SO#K9&-;xc&jtNpr8fR zec}NBLN=Sm>IPc2XJ~<5P38;!LrQ#UJ^23jms4eT=D9EcK?4yL^p5HefzF*=GIxDY z^gjIf!3|qL2eG_ok$?~^1Sf9WpPra%Fmalh@BekG5mt+(>294LV-tH(^C0;V^f>fY zo7QCCO0Cp$dW546+yF0HcgVrmodJb*8onVQp9WCTqIMkzak*(Qw5&^>aU{ei_ySg8 zBeJbd>o|mdx76WV5J8{$ycD!adL9ic`9ime_Xkjge5&Cv@}cei-+3^E!1d016;BK+@HuU>_I-Tvm#AFjTy$8UM9PYM#i=HBwm2WUn3=B_okxfbeKOnBtvxIoeo zhbUAPJ_CY);FFOt{E^Xd59jvdRU}d{2`Gb_#n*fHV7t2BoY5bF!b51W1+c@gFC27@ zg+@$JDO(#qww4^Iw-={h5iw<@d?cs?3yKU*Rk%6re_(A=Q4`^1s(vneZwb+?%ZF71 z19Tcbl}fD?AIb`Me>j$4lZXangaU{BqVYrEuQlc@sFB{|5)wwR11=9m(!V^6k0)Lt z`PO7(Y#IksFDXI;RJ7+zhQ2G87r|~5Lbx2rvK(fuH&PFkJ;J4Q-X9y zsm^k|aBz!mwmn;ELVAl}-C)EU0ufVa(a0+)$&B{wWm2XC5gHQ{Hn6>OKn9hrvU2(M zr2A#%Sm)N}Z#ozg=-Jq=j^`f!9@vKazF=n2P&kG|`I0lH6-QC?2+toa~#2qFl>4VHV zyq3_H#izC2zcA62yAO>kVUYx*#9r5R3MYn8stD2)dOCXCsrucFjF0TJKVYnhrk1s$ zh?F&bIbHYCz4vlEq!p3BiM$IrG^Rq;b#LVjz+XMBM;i?*I)_B zwe&BzMsrYIr03h^y-4CNHm&W)JjPG^J=e{wLtYZKXrO`hY3iG1C^M1xP_G~rLcQwT z_FQbcoL0OQD<$YsyS|TucKT=ux64|ziO;sTAB)#_L+_!H{&4nw-y6rI=eaLz{Qs|{ zh}Wx&WNF!g%(mFyIu9y}=c4baQtl>o78h1`ir0$LQzr#dd2uK0SMq<(Jal{RQ5R=< z)6ZL7Cw0Sjl^cHfCqhq!`6R-@6{BIv^iBHa+4z1RH3^6J3lhzLf3z}6vo96XywTU( z2Gg8HB1Qcw&x53dos5m96TAIR9e%`ri@)c*); znW#&?W@rke?XFRW-(zNlxVYHLLYF7MH!?!9;->Yuh-kPGI z^J(GK#?MPr8=H=pM5ffAyaV#*nivO{Lun;5lYUbyYp*+UKYm3ht7uE)p6 z!&{woz&R*zL!cqwbhsqnL9Y1dVeTr}Op_EOmhWDGZ zRZ&dty?ZwTgfwHH zp_7!y%uhB*R93t|MgkJ7Ms*`R^7w5BFldR>?LL(Yoi%#mTK?GWQ#<}~2!{Up&>R$z zDMI(EQi^Lurd(lwp5W;LcaYk88sT(9ITUl9x`={l4x*n(;V|Ic9IPh0cI_HLIsnys z{cH&f2~oi81M+>b8+*yNs!NVX$>@?5bOaZ!q>k^pZ*FMQXWYm-bVW2ck2Vmvk}&iU zrtl3tjJaY|>OQ8T_6rN|rsI}VK6j4(-Bd8NayTJ^Pzsp#?ydMb?uk*ig_RYlk9#%C zcAn~f!bUDWG09r#bg<#RSn0y^9dGKbZN_DAr5vYj)1VKa5346Ej4U&gqoDsxl--n+FKY#l1)IycD#o9o`kPOTpG#H8? z^1qx1>){w`a5dMG1o?8y(S4Ih=;L)qHU_G^tNQ+k1%>oWn0?e29dK09v0?wLXyDcm zk@4ZkW~Hc7z&H0c@u&~zEnAPy-yVM~E&Reqm7>f7EAQ85s^FcgS(uNJPp-kydqa z5uY2V2m`H<0w&+&rIMQp#>fVXeUO>KABuBSgD0o$(htrL~Bs zsGK#(7PRc*)vwN{^)x~Z+s!2tjKNu=U4TA7-218d_x|Ye9?IT8!or*q#xB_)H- zxx7nvO3vkjtwt_kQos<`LdlPD42KaAt#WN_pOD_AcbKjub{NFuDTHX$NY+|$!DB9+D_r#1OXOPSYSY5Z^iY#~KII6cTn#Mm|_a*+ZlX;?`xb(gF(V?Y8x2u7>H@$vgGknqaObHma?A`$j`LT5wQ z1OE`xN+^1vp{dSnV&reEC5evo@#Dw;4bd@&!Q2^vnAQT=gE$Q!zy!E6!59Java=dD=Yv+r~Sj@H!V!4q8MmB zs$U!|YxUpbLo+W1<1gnBb33qs1;K_**olZ(LFR(=fLXX-fJ;gOj|fu{EXH{;(|=43 z9XV2qnEZtSJzOy-hHtFK-8$=i)ObqwV%`w~CxMmTzkg59!SQ*j_8ehtK?#q~EElfFSRMRE2ce0H$O;D(4RghCP(9qpTI z@WvcGGJY0{RyBb5;QV|`tOo(DaE#v<)YTdl4g*o^6_}D?9NZ7R0zt_To-NGhFzngm zXVo0P|G`Du5YTQKUNHUGub(}Gwy}kVxZ1JgZ z@?+3yKODc)E`xbHiJ6o2$(O|B%)4u>>Hie`jb$+z!2!AzPXIXTV@>v@y`2$|>4fVP z6KN3hm#~&9qYLe=-iwRCpdhIl_Cp^`0iEXGLzs&RbsAAF-rPUz{7_rqtcC($BfbvrJ%zRD)JDJbxuyWmeXdvndrcyJy>SjqRyKdvy^-if&V zFyuerC0O){1!;J|8HT>W$WSBE%*rb0{|>0FO9rN@*(4duUaJdcAllsC*d`!o1ftWz zpaQAIkBcp$3no*KmG5_m;SwCwFqGLEbgRUY!BB$neq5hkb2Op7!;9~h$BC>(2r4eN7D+V_G%>NqFuIeT(~9pWw}7WWek<^{)0G@iF);-gC<>5W z>>2@eE51y2QNu7b(OV>l8LME&s=v&rqV?#gqMkjY!F@Z#(2?Nrwn=2GaKoiUL^6KE zBp^Ytn8B}b?r;pUE#;3!wag^K<@5p{Jkei%+-vif8n~ACI7k!iFX_N87ua&#o7i!@`4p5g5XuHzdR$1c3^ubplX9)!C{a0^bS5&3;{D18~_!P_w(Ba~Vk?FR!HjK$o;xGoH09HPfh4WYr*}A~= z!#0>qV~pGaDa@48u~w^7+4)gVp4=zArf~baN;?t8Zv2TjXJBoKNpOs1ss6B<3`Ytp z@PA8a9q56wg~XQM!q~%nR6L;n~z=VpKR+DbG zMq)$}s0H=b2bMGdWT;x^V9#cfUp_e*qyq~v{MhvL^wrCJ)>c--xF0z43C}4~SC7|q z(!s-rYrw8z_}&*TvYJny!i?M|Ktp`|^a+H73eY>8NC7!HNAb`NamRsYo{?~FV_;@K ze3fuS5xg#@2&(0_0K99EX{(C@`N3I)?pF%BxNk|t?WE1w$VJ`%OP~ZrMn>vae`;#- z#jSx=Bb=bVr+x6W1|YSf?DF^2*xCsUCg64!G=x+_;l&?PBBo1WbRo!3LYSJG3dKww z+1=PxVwMLpqrkP;#%(x1_ff`+oV85GSmjuR4Nsez@*v-l$?VeS;^HE_OvIST$Ot(e zwgF!$>F(vM>yW#NA$-H~TiXd*82n{VAUE8k1Pg;s!wmTYLujigJPW(jHU>; zy{LH|6%oq+M-|MdY))h4fvumYr8uO71_T0x`z6c~$fy<=s?V(v*ra2r@GtWBk9F$EI#_Q$3 zu@vxjyG?#S43`xVB^2AY7bckj?ZO1UUqT|rsB|}pz-!no^1HD%?)UByW=OZpmXudY z6?;^U5Q~Ttxi0B%PJzJY0OBxLTV!Tpvgt4BZ*JC_^}^%3%s(p?!H8qnVK9xDDXT4a{K%0o&Y97{!Q|WFxw*Oe z@+UFKBZOx{>AoZeDR8PNkh3xPyI)@3WW-Kv^JL_n5DHRjs!G@uX;nt_TBvm`Miw2& z=SWC#^4@Y-`lcHyONR}PMgRO>Ms#34`pHrOYl%VIXx*8p)3pgI9JfD2P)m`Kbn#M- z4*&}j74em}CVbL~MZRbXP7hsY9q?u>7FO zeZOSvj*~v4>tl$Yff3r8{?j}gFM|5uV`&1YIsILC#S=EtKz$QQ77>Am5p~?oUj5a` zjahIy6dpiALa?aEfOV(7iimT#00v1y0A9?|0}K^EQr`o1sw%Pl%{CA-?lV9>qep9nn zb?PG}uc??1Q3xrwHW=&bpDAFz&cEerI<&(tFn7yOUHN*QwmAcXmiW63l+3|kBZ zn>H$M^z^=Kp^N2DXnOc`W5(^v$(4cL?)+bP%G6O2k)pS!cx>DQqVx-2zxG4Bjwv3q zTetS06RO48i5fqNWHxh?7*BykEy|J&0st{+f#*|IE$MHK#T~8@twXuMICNld?^O`D zrkL3wyepfVGK5JJkwwh7eEiKp%)mgA#k2&ujQ79(8)u1jtkQey0cdvlxh3=P4`D1K z3$x#(G<9_NTAYsx3lHOX!ehi%9m9XgY5%VMFD?`A9Bz59Is}9${8S(yw)I@~NWG#8 z=a9Lp>s~xbg&5}t&-1I%e)i61j9~ozhqy_%yME)wZV>dVOOuQb`9DD0nREoWy^jYi z4F26%(bLmA{g9t@J6wA?PFP522uFN%{m&5rK|#3N(!Saw*$e^!W1`YOk@4}RY{gE$ zn9k15?;zh74a@=mf_ zXxuT)T;IZZ{av*szxc!S-XnU&k3FZ``2xb3P-lr5K%zgt(irtCU{*`Xc< zg3N*shKkC|M`D#NJUuy8&L@AHO+84BkKZtjdPR5RYii@MP+nFG;u#wnMZeQKuex&e zZE7dUMWAmTM6?|Yt(kiJZC1BkqOQ}0o+3E)<5V9jQEYm~uRZhh%aA(VpL3>C^?U#i zl@r`$1b)Xba8v>@Nk#&zsL18dz)8Vj1&N0lD(6B-|q z79t12}Jzm&`ifcuWpNwx7Sd?i*Z=!MYY~yk6EZO)0vU4$7A+2Ag~nXf^^r;MA6s&HcPoL>GZv;qchL&zPMKI z4S$}~*`10^DjhCbtz$9#JBLrGGO6G_!6QBF$#sW0t2{(c`4a1(q4TCD^`PQIewz|~ z^@nv{>X!5r6E4!k-`YF8T&T(GoT6{i)V5Ok@}G&yID{p@Wj*9i9~`oe>d8GI&~*CU z_fqcC!;K~SLaY|o{TekKSA)4C#Heap1#X>r*drVim-N8kt^bgJo~=81O(H9EO7O1( zXZ%tRB3Z2et^AuP*1(?f`Tml7#r`DPHeX{+oqZ@=K_t0;@8rv(@86+s=z&)0QkFQH?VZ6Y|_lU&PICZ_(s6#O* z()c~EgQnQqqo1NIpE~TA%+cExAky&iPyh7)v#(xjeKRw66)!My*WI;z+3UvL6{>xY zFU{FHV}4!S>zPyKR=T7I?~UU>Cb4^tbOZ0Aw`J0|0`-p#vhwl^cH#J8<~w}NL0u%xJ(_QWr|b@94X zV6Z1NDQtM_o!R@+d{18Xvdpfq)vY?Gb4*{nyQ_TIarU%(s}?-}q2jTFJF4dPdUeN5 z_ungbl{vLtTam}yeRF5D_>=q-A67&a3$QRwQrWocn&+I|3yw~I$LgEk@S<*e2iJ|6 z7T1oqBxXDZo;)#o_wr80q>7MSx9g(w?_FNP+{Pjp`?7b}$DOnK7OmLwanGu$@3+0W zd-hd|MaW$P=kldr!q{y6&$jBMgiG}vlYcAs*ZOYQh2q*>r;@Wb$Gun(w{_aH=bYOuS*}$uP#2DR1cck zamwuiX31$ODHSiww^>hIZ=U{o!Ghbf_DRfBm?e6+IRAh`+lpSlde#*$6Calu-0AXH zFWJRZBL1S+%49FIQ`5XN%`aFPjqIHcuQm_O^( zxH{+HO0NeiUREtGjVeuMHNW}U^*YeHLuU)_n)UB{bEe~Ucl6Vc)Kd(5xOsLzR4e&q z8GiUmiEW|jn)&78dOMH*X7GLAu(Im$(v`pC8xXc|W nmb2icpc99rG$m4P^$ZF(O#64ONd62wJ(R)I)z4*}Q$iB}ryEm} literal 0 HcmV?d00001 diff --git a/slides/_sources/presentations/session06.txt b/slides/_sources/presentations/session06.txt new file mode 100644 index 00000000..f5e64cff --- /dev/null +++ b/slides/_sources/presentations/session06.txt @@ -0,0 +1,1326 @@ +********** +Session 06 +********** + +.. figure:: /_static/gateway.jpg + :align: center + :width: 50% + + The Wandering Angel http://www.flickr.com/photos/wandering_angel/1467802750/ - CC-BY + +CGI, WSGI and Living Online +=========================== + +Wherein we discover the gateways to dynamic processes on a server. + + +But First +--------- + +.. rst-class:: large centered + +Homework Review and Questions + + +Previously +---------- + +.. rst-class:: build + +* You've learned about passing messages back and forth with sockets +* You've created a simple HTTP server using sockets +* You may even have made your server *dynamic* by returning the output of a + python script. + +.. rst-class:: build +.. container:: + + What if you want to pass information to that script? + + How can you give the script access to information about the HTTP request + itself? + + +Stepping Away: The Environment +------------------------------ + +A computer has an *environment*: + +.. rst-class:: build +.. container:: + + in \*nix, you can see this in a shell: + + .. code-block:: bash + + $ printenv + TERM_PROGRAM=iTerm.app + ... + + or in Windows at the command prompt: + + .. code-block:: posh + + C:\> set + ALLUSERSPROFILE=C:\ProgramData + ... + + +.. nextslide:: Setting The Environment + +This can be manipulated: + +.. rst-class:: build +.. container:: + + In a ``bash`` shell we can do this: + + .. code-block:: bash + + $ export VARIABLE='some value' + $ echo $VARIABLE + some value + + or at a Windows command prompt: + + .. code-block:: posh + + C:\Users\Administrator\> set VARIABLE='some value' + C:\Users\Administrator\> echo %VARIABLE% + 'some value' + + +.. nextslide:: Viewing the Results + +These new values are now part of the *environment* + +.. rst-class:: build +.. container:: + + \*nix: + + .. code-block:: bash + + $ printenv + TERM_PROGRAM=iTerm.app + ... + VARIABLE=some value + + Windows: + + .. code-block:: posh + + C:\> set + ALLUSERSPROFILE=C:\ProgramData + ... + VARIABLE='some value' + +.. nextslide:: Environment in Python + +We can see this *environment* in Python, too:: + + $ python + +.. code-block:: pycon + + >>> import os + >>> print os.environ['VARIABLE'] + some_value + >>> print os.environ.keys() + ['VERSIONER_PYTHON_PREFER_32_BIT', 'VARIABLE', + 'LOGNAME', 'USER', 'PATH', ...] + + +.. nextslide:: Altering the Environment + +You can alter os environment values while in Python: + +.. code-block:: pycon + + >>> os.environ['VARIABLE'] = 'new_value' + >>> print os.environ['VARIABLE'] + new_value + +.. rst-class:: build +.. container:: + + But that doesn't change the original value, *outside* Python: + + .. code-block:: bash + + >>> ^D + + $ echo this is the value: $VARIABLE + this is the value: some_value + + C:\> \Users\Administrator\> echo %VARIABLE% + 'some value' + +.. nextslide:: Lessons Learned + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * Subprocesses inherit their environment from their Parent + * Parents do not see changes to environment in subprocesses + * In Python, you can actually set the environment for a subprocess explicitly + + .. code-block:: python + + subprocess.Popen(args, bufsize=0, executable=None, + stdin=None, stdout=None, stderr=None, + preexec_fn=None, close_fds=False, + shell=False, cwd=None, env=None, # <------- + universal_newlines=False, startupinfo=None, + creationflags=0) + + +CGI - The Web Environment +========================= + +.. rst-class:: large centered + +CGI is little more than a set of standard environmental variables + + +What is CGI +----------- + +First discussed in 1993, formalized in 1997, the current version (1.1) has +been in place since 2004. + +From the preamble: + + This memo provides information for the Internet community. It does not + specify an Internet standard of any kind. + + -- RFC 3875 - CGI Version 1.1: http://tools.ietf.org/html/rfc3875 + + +.. nextslide:: Meta-Variables + +:: + + 4. The CGI Request . . . . . . . . . . . . . . . . . . . . . . . 10 + 4.1. Request Meta-Variables . . . . . . . . . . . . . . . . . 10 + 4.1.1. AUTH_TYPE. . . . . . . . . . . . . . . . . . . . 11 + 4.1.2. CONTENT_LENGTH . . . . . . . . . . . . . . . . . 12 + 4.1.3. CONTENT_TYPE . . . . . . . . . . . . . . . . . . 12 + 4.1.4. GATEWAY_INTERFACE. . . . . . . . . . . . . . . . 13 + 4.1.5. PATH_INFO. . . . . . . . . . . . . . . . . . . . 13 + 4.1.6. PATH_TRANSLATED. . . . . . . . . . . . . . . . . 14 + 4.1.7. QUERY_STRING . . . . . . . . . . . . . . . . . . 15 + 4.1.8. REMOTE_ADDR. . . . . . . . . . . . . . . . . . . 15 + 4.1.9. REMOTE_HOST. . . . . . . . . . . . . . . . . . . 16 + 4.1.10. REMOTE_IDENT . . . . . . . . . . . . . . . . . . 16 + 4.1.11. REMOTE_USER. . . . . . . . . . . . . . . . . . . 16 + 4.1.12. REQUEST_METHOD . . . . . . . . . . . . . . . . . 17 + 4.1.13. SCRIPT_NAME. . . . . . . . . . . . . . . . . . . 17 + 4.1.14. SERVER_NAME. . . . . . . . . . . . . . . . . . . 17 + 4.1.15. SERVER_PORT. . . . . . . . . . . . . . . . . . . 18 + 4.1.16. SERVER_PROTOCOL. . . . . . . . . . . . . . . . . 18 + 4.1.17. SERVER_SOFTWARE. . . . . . . . . . . . . . . . . 19 + + +Running CGI +----------- + +You have a couple of options: + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * Python Standard Library CGIHTTPServer + * Apache + * IIS (on Windows) + * Some other HTTP server that implements CGI (lighttpd, ...?) + + Let's keep it simple by using the Python module + + +.. nextslide:: Preparations + +In the class resources for this session, you'll find a directory named ``cgi``. + +.. rst-class:: build +.. container:: + + Make a copy of that folder in your class working directory. + + Windows Users, you may have to edit the first line of + ``cgi/cgi-bin/cgi_1.py`` to point to your python executable. + + .. rst-class:: build + + * Open *two* terminal windows in this ``cgi`` directory + * In the first terminal, run ``python -m CGIHTTPServer`` + * Open a web browser and load ``http://localhost:8000/`` + * Click on *CGI Test 1* + + +.. nextslide:: Did that work? + +.. rst-class:: build + +* If nothing at all happens, check your terminal window +* Look for this: ``OSError: [Errno 13] Permission denied`` +* If you see something like that, check permissions for ``cgi-bin`` *and* + ``cgi_1.py`` +* The file must be executable, the ``cgi-bin`` directory needs to be readable + *and* executable. + + +.. rst-class:: build +.. container:: + + Remember that you can use the bash ``chmod`` command to change permissions + in \*nix: ``chmod a+x cgi-bin/cgi_1.py`` + + Windows users, use the 'properties' context menu to get to permissions, + just grant 'full' + + +.. nextslide:: Break It + +Problems with permissions can lead to failure. So can scripting errors + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * Open ``cgi/cgi-bin/cgi_1.py`` in an editor + * Before where it says ``cgi.test()``, add a single line: + + .. code-block:: python + + 1 / 0 + + Reload your browser, what happens now? + + +.. nextslide:: Errors in CGI + +CGI is famously difficult to debug. There are reasons for this: + +.. rst-class:: build + +* CGI is designed to provide access to runnable processes to *the internet* +* The internet is a wretched hive of scum and villainy +* Revealing error conditions can expose data that could be exploited + + +.. nextslide:: Viewing Errors in Python CGI + +Back in your editor, add the following lines, just below ``import cgi``: + +.. rst-class:: build +.. container:: + + .. code-block:: python + + import cgitb + cgitb.enable() + + Now, reload again. + +.. nextslide:: cgitb Output + +.. figure:: /_static/cgitb_output.png + :align: center + :width: 100% + + +.. nextslide:: Repair the Error + +Let's fix the error from our traceback. Edit your ``cgi_1.py`` file to match: + +.. code-block:: python + + #!/usr/bin/env python + import cgi + import cgitb + + cgitb.enable() + + cgi.test() + +.. rst-class:: build +.. container:: + + Notice the first line of that script: ``#!/usr/bin/python``. + + This is called a *shebang* (short for hash-bang) + + It tells the system what executable program to use when running the script. + + +CGI Process Execution +--------------------- + +Servers like ``CGIHTTPServer`` run CGI scripts as a system user called +``nobody``. + +.. rst-class:: build +.. container:: + + This is just like you calling:: + + $ ./cgi_bin/cgi_1.py + + In fact try that now in your second terminal (use the real path), what do + you get? + + Windows folks, you may need ``C:\>python cgi-bin/cgi_1.py`` + + Notice what is missing? + + +.. nextslide:: + +There are a couple of important facts about CGI that derive from this: + +.. rst-class:: build + +* The script **must** include a *shebang* so that the system knows how to run + it. +* The script **must** be executable. +* The *executable* named in the *shebang* will be called as the *nobody* user. +* This is a security feature to prevent CGI scripts from running as a user + with any privileges. +* This means that the *executable* from the script *shebang* must be one that + *anyone* can run. + + +.. nextslide:: The CGI Environment + +CGI is largely a set of agreed-upon environmental variables. + +.. rst-class:: build +.. container:: + + We've seen how environmental variables are found in python in + ``os.environ`` + + We've also seen that at least some of the variables in CGI are **not** part + of the system environment. + + Where do they come from? + + +.. nextslide:: CGI Servers + +Let's find 'em. In a terminal fire up python: + +.. rst-class:: build +.. container:: + + .. code-block:: pycon + + >>> import CGIHTTPServer + >>> CGIHTTPServer.__file__ + '/big/giant/path/to/lib/python2.6/CGIHTTPServer.py' + + Copy this path and open the file it points to in your text editor + + +.. nextslide:: Environmental Set Up + +From CGIHTTPServer.py, in the CGIHTTPServer.run_cgi method: + +.. code-block:: python + + # Reference: http://hoohoo.ncsa.uiuc.edu/cgi/env.html + # XXX Much of the following could be prepared ahead of time! + env = {} + env['SERVER_SOFTWARE'] = self.version_string() + env['SERVER_NAME'] = self.server.server_name + env['GATEWAY_INTERFACE'] = 'CGI/1.1' + env['SERVER_PROTOCOL'] = self.protocol_version + env['SERVER_PORT'] = str(self.server.server_port) + env['REQUEST_METHOD'] = self.command + ... + ua = self.headers.getheader('user-agent') + if ua: + env['HTTP_USER_AGENT'] = ua + ... + os.environ.update(env) + ... + + +.. nextslide:: CGI Scripts + +And that's it, the big secret. The server takes care of setting up the +environment so it has what is needed. + +.. rst-class:: build +.. container:: + + Now, in reverse. How does the information that a script creates end up in + your browser? + + A CGI Script must print its results to stdout. + + Use the same method as above to import and open the source file for the + ``cgi`` module. Note what ``test`` does for an example of this. + + +.. nextslide:: Recap + +What the Server Does: + +.. rst-class:: build + +* parses the request +* sets up the environment, including HTTP and SERVER variables +* figures out if the URI points to a CGI script and runs it +* builds an appropriate HTTP Response first line ('HTTP/1.1 200 OK\\r\\n') +* appends what comes from the script on stdout and sends that back + +What the Script Does: + +.. rst-class:: build + +* names appropriate *executable* in it's *shebang* line +* uses os.environ to read information from the HTTP request +* builds *any and all* appropriate **HTTP Headers** (Content-type:, + Content-length:, ...) +* prints headers, empty line and script output (body) to stdout + + +In-Class Exercise I +------------------- + +You've seen the output from the ``cgi.test()`` method from the ``cgi`` module. +Let's make our own version of this. + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * In the directory ``cgi-bin`` you will find the file ``cgi_2.py``. + * Open that file in your editor. + * The script contains some html with text naming elements of the CGI + environment. + * You should use the values in os.environ to fill in the blanks. + * You should be able to view the results of your work by loading + ``http://localhost:8000/`` and clicking on *Exercise One* + + **GO** + + +Getting Data from Users +----------------------- + +All this is well and good, but where's the *dynamic* stuff? + +.. rst-class:: build +.. container:: + + It'd be nice if a user could pass form data to our script for it to use. + + In HTTP, these types of inputs show up in the URL *query* (the part after + the ``?``):: + + http://myhost.com/script.py?a=23&b=37 + + You've seen this before, right? In your Pyramid learning journal? + + It's how we got the ``id`` of an entry to the edit form. + + +.. nextslide:: Form Data in CGI + +In the ``cgi`` module, we get access to this with the ``FieldStorage`` class: + +.. code-block:: python + + import cgi + + form = cgi.FieldStorage() + stringval = form.getvalue('a', None) + listval = form.getlist('b') + +.. rst-class:: build + +* The values in the ``FieldStorage`` are *always* strings +* ``getvalue`` allows you to return a default, in case the field isn't present +* ``getlist`` always returns a list: empty, one-valued, or as many values as + are present + + +In-Class Exercise II +-------------------- + +Let's create a dynamic adding machine. + +.. rst-class:: build + +* In the ``cgi-bin`` directory you'll find ``cgi_sums.py``. +* In the ``index.html`` file in the ``cgi`` directory, the third link leads to + this file. +* You will use the structure of that link, and what you learned just now about + ``cgi.FieldStorage``. +* Complete the cgi script in ``cgi_sums.py`` so that the result of adding all + operands sent via the url query is returned. +* Return the results as plain text, with the appropriate ``Content-Type`` + header. + + +.. nextslide:: My Solution + +.. rst-class:: build + +.. code-block:: python + + form = cgi.FieldStorage() + operands = form.getlist('operand') + total = 0 + for operand in operands: + try: + value = int(operand) + except ValueError: + value = 0 + total += value + + output = str(total) + + print "Content-Type: text/plain" + print "Content-Length: %s" % len(output) + print + print output + + +.. nextslide:: Break Time + +.. rst-class:: centered + +Let's take a break here, before continuing + + +WSGI +==== + + +CGI Problems +------------ + +CGI is great, but there are problems: + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * Code is executed *in a new process* + * **Every** call to a CGI script starts a new process on the server + * Starting a new process is expensive in terms of server resources + * *Especially for interpreted languages like Python* + + How do we overcome this problem? + +.. nextslide:: Alternatives to CGI + +The most popular approach is to have a long-running process *inside* the +server that handles CGI scripts. + +.. rst-class:: build +.. container:: + + FastCGI and SCGI are existing implementations of CGI in this fashion. + + The PHP scripting language works in much the same way. + + The Apache module **mod_python** offers a similar capability for Python + code. + + .. rst-class:: build + + * Each of these options has a specific API + * None are compatible with each-other + * Code written for one is **not portable** to another + + This makes it much more difficult to *share resources* + + +A Solution +---------- + +Enter WSGI, the Web Server Gateway Interface. + +.. rst-class:: build +.. container:: + + Other alternatives are specific implementations of the CGI standard. + + WSGI is itself a new standard, not an implementation. + + WSGI is generalized to describe a set of interactions. + + Developers can write WSGI-capable apps and deploy them on any WSGI server. + + Read the WSGI spec: http://www.python.org/dev/peps/pep-0333 + + +Apps and Servers +---------------- + +WSGI consists of two parts, a *server* and an *application*. + +.. rst-class:: build +.. container:: + + .. container:: + + A WSGI Server must: + + .. rst-class:: build + + * set up an environment, much like the one in CGI + * provide a method ``start_response(status, headers, exc_info=None)`` + * build a response body by calling an *application*, passing + ``environment`` and ``start_response`` as args + * return a response with the status, headers and body + + .. container:: + + A WSGI Appliction must: + + .. rst-class:: build + + * Be a callable (function, method, class) + * Take an environment and a ``start_response`` callable as arguments + * Call the ``start_response`` method. + * Return an *iterable* of 0 or more strings, which are treated as the + body of the response. + + +.. nextslide:: Simplified WSGI Server + +.. code-block:: python + + from some_application import simple_app + + def build_env(request): + # put together some environment info from the reqeuest + return env + + def handle_request(request, app): + environ = build_env(request) + iterable = app(environ, start_response) + for data in iterable: + # send data to client here + + def start_response(status, headers): + # start an HTTP response, sending status and headers + + # listen for HTTP requests and pass on to handle_request() + serve(simple_app) + + +.. nextslide:: Simple WSGI Application + +Where the simplified server above is **not** functional, this *is* a complete +app: + +.. code-block:: python + + def application(environ, start_response) + status = "200 OK" + body = "Hello World\n" + response_headers = [('Content-type', 'text/plain'), + ('Content-length', len(body))] + start_response(status, response_headers) + return [body] + + +.. nextslide:: WSGI Middleware + +A third part of the puzzle is something called WSGI *middleware* + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * Middleware implements both the *server* and *application* interfaces + * Middleware acts as a server when viewed from an application + * Middleware acts as an application when viewed from a server + + .. figure:: /_static/wsgi_middleware_onion.png + :align: center + :width: 38% + + +.. nextslide:: WSGI Data Flow + +.. rst-class:: build +.. container:: + + .. container:: + + WSGI Servers: + + .. rst-class:: large centered + + **HTTP <---> WSGI** + + .. container:: + + WSGI Applications: + + .. rst-class:: large centered + + **WSGI <---> app code** + + +.. nextslide:: The WSGI Stack + +The WSGI *Stack* can thus be expressed like so: + +.. rst-class:: build large centered + +**HTTP <---> WSGI <---> app code** + + +.. nextslide:: Using wsgiref + +The Python standard lib provides a reference implementation of WSGI: + +.. figure:: /_static/wsgiref_flow.png + :align: center + :width: 80% + + +.. nextslide:: Apache mod_wsgi + +You can also deploy with Apache as your HTTP server, using **mod_wsgi**: + +.. figure:: /_static/mod_wsgi_flow.png + :align: center + :width: 80% + + +.. nextslide:: Proxied WSGI Servers + +Finally, it is also common to see WSGI apps deployed via a proxied WSGI +server: + +.. figure:: /_static/proxy_wsgi.png + :align: center + :width: 80% + + +The WSGI Environment +-------------------- + +REQUEST_METHOD: + The HTTP request method, such as "GET" or "POST". This cannot ever be an + empty string, and so is always required. +SCRIPT_NAME: + The initial portion of the request URL's "path" that corresponds to the + application object, so that the application knows its virtual "location". + This may be an empty string, if the application corresponds to the "root" of + the server. +PATH_INFO: + The remainder of the request URL's "path", designating the virtual + "location" of the request's target within the application. This may be an + empty string, if the request URL targets the application root and does not + have a trailing slash. +QUERY_STRING: + The portion of the request URL that follows the "?", if any. May be empty or + absent. +CONTENT_TYPE: + The contents of any Content-Type fields in the HTTP request. May be empty or + absent. + + +.. nextslide:: The WSGI Environment + +CONTENT_LENGTH: + The contents of any Content-Length fields in the HTTP request. May be empty + or absent. +SERVER_NAME, SERVER_PORT: + When combined with SCRIPT_NAME and PATH_INFO, these variables can be used to + complete the URL. Note, however, that HTTP_HOST, if present, should be used + in preference to SERVER_NAME for reconstructing the request URL. See the URL + Reconstruction section below for more detail. SERVER_NAME and SERVER_PORT + can never be empty strings, and so are always required. +SERVER_PROTOCOL: + The version of the protocol the client used to send the request. Typically + this will be something like "HTTP/1.0" or "HTTP/1.1" and may be used by the + application to determine how to treat any HTTP request headers. (This + variable should probably be called REQUEST_PROTOCOL, since it denotes the + protocol used in the request, and is not necessarily the protocol that will + be used in the server's response. However, for compatibility with CGI we + have to keep the existing name.) + + +.. nextslide:: The WSGI Environment + +HTTP\_ Variables: + Variables corresponding to the client-supplied HTTP request headers (i.e., + variables whose names begin with "HTTP\_"). The presence or absence of these + variables should correspond with the presence or absence of the appropriate + HTTP header in the request. + +.. rst-class:: build large centered + +**Seem Familiar?** + + +In-Class Exercise III +--------------------- + +Let's start simply. We'll begin by repeating our first CGI exercise in WSGI + +.. rst-class:: build + +* Find the ``wsgi`` directory in the class resources. Copy it to your working + directory. +* Open the file ``wsgi_1.py`` in your text editor. +* We will fill in the missing values using the wsgi ``environ``, just as we + use ``os.environ`` in cgi + +.. rst-class:: build centered + +**But First** + + +.. nextslide:: Orientation + +.. code-block:: python + + if __name__ == '__main__': + from wsgiref.simple_server import make_server + srv = make_server('localhost', 8080, application) + srv.serve_forever() + +.. rst-class:: build +.. container:: + + Note that we pass our ``application`` function to the server factory + + We don't have to write a server, ``wsgiref`` does that for us. + + In fact, you should *never* have to write a WSGI server. + + +.. nextslide:: Orientation + +.. code-block:: python + + def application(environ, start_response): + response_body = body % ( + environ.get('SERVER_NAME', 'Unset'), # server name + ... + ) + status = '200 OK' + response_headers = [('Content-Type', 'text/html'), + ('Content-Length', str(len(response_body)))] + start_response(status, response_headers) + return [response_body] + +.. rst-class:: build +.. container:: + + We do not define ``start_response``, the application does that. + + We *are* responsible for determining the HTTP status. + +.. nextslide:: Running a WSGI Script + +You can run this script with python:: + + $ python wsgi_1.py + +.. rst-class:: build +.. container:: + + This will start a wsgi server. What host and port will it use? + + Point your browser at ``http://localhost:8080/``. Did it work? + + Go ahead and fill in the missing bits. Use the ``environ`` passed into + ``application`` + + +.. nextslide:: Some Tips + +WSGI is a long-running process. + +.. rst-class:: build +.. container:: + + The file you are editing is *not* reloaded after you edit it. + + You'll need to quit and re-run the script between edits. + + Notice the use of ``pprint.pprint``, check your terminal for useful output. + + +A WSGI Application +------------------ + +So now we've learned a bit about the WSGI specification and how a WSGI +application can get data that comes in via an HTTP request. + +.. rst-class:: build +.. container:: + + Let's create a multi-page wsgi application. + + It will serve a small database of python books. + + The database (with a very simple api) can be found in ``wsgi/bookdb.py`` + + .. rst-class:: build + + * We'll need a listing page that shows the titles of all the books + * Each title will link to a details page for that book + * The details page for each book will display all the information and have + a link back to the list + + +.. nextslide:: Some Questions to Ponder + +When viewing our first wsgi app, do we see the name of the wsgi application +script anywhere in the URL? + +.. rst-class:: build +.. container:: + + In our wsgi application script, how many applications did we actually have? + + How are we going to serve different types of information out of a single + application? + + +.. nextslide:: Dispatch + +We have to write an app that will map our incoming request path to some code +that can handle that request. + +.. rst-class:: build +.. container:: + + This process is called ``dispatch``. There are many possible approaches. + + You've seen one approach in the Learning Journal you built with Pyramid. + + Let's begin by designing this piece of our app. + + Open ``bookapp.py`` from the ``wsgi`` folder. We'll do our work here. + + +.. nextslide:: PATH + +The wsgi environment gives us access to *PATH_INFO*. + +.. rst-class:: build +.. container:: + + This value is the URI from the client's HTTP request. + + We can design the URLs that our app will use to assist us in routing. + + Let's declare that any request for ``/`` will map to the list page. + + .. container:: + + We can also say that the URL for a book will look like this:: + + http://localhost:8080/book/ + +Writing ``resolve_path`` +------------------------ + +Let's write a function, called ``resolve_path`` in our application file. + +.. rst-class:: build + +* It should take the *PATH_INFO* value from environ as an argument. +* It should return the function that will be called. +* It should also return any arguments needed to call that function. +* This implies of course that the arguments should be part of the PATH + + +.. nextslide:: My Solution + +.. rst-class:: build + +.. code-block:: python + + def resolve_path(path): + urls = [(r'^$', books), + (r'^book/(id[\d]+)$', book)] + matchpath = path.lstrip('/') + for regexp, func in urls: + match = re.match(regexp, matchpath) + if match is None: + continue + args = match.groups([]) + return func, args + # we get here if no url matches + raise NameError + + +.. nextslide:: Application Updates + +We need to hook our new dispatch function into the application. + +.. rst-class:: build + +* The path should be extracted from ``environ``. +* The dispatch function should be used to get a function and arguments +* The body to return should come from calling that function with those + arguments +* If an error is raised by calling the function, an appropriate response + should be returned +* If the router raises a NameError, the application should return a 404 + response + + +.. nextslide:: My Solution + +.. rst-class:: build + +.. code-block:: python + + def application(environ, start_response): + headers = [("Content-type", "text/html")] + try: + path = environ.get('PATH_INFO', None) + if path is None: + raise NameError + func, args = resolve_path(path) + body = func(*args) + status = "200 OK" + except NameError: + status = "404 Not Found" + body = "

    Not Found

    " + except Exception: + status = "500 Internal Server Error" + body = "

    Internal Server Error

    " + finally: + headers.append(('Content-length', str(len(body)))) + start_response(status, headers) + return [body] + + +Test Your Work +-------------- + +Once you've got your script settled, run it:: + + $ python bookapp.py + +.. rst-class:: build +.. container:: + + Then point your browser at ``http://localhost:8080/`` + + .. rst-class:: build + + * ``http://localhost/book/id3`` + * ``http://localhost/book/id73/`` + * ``http://localhost/sponge/damp`` + + Did that all work as you would have expected? + + +Building the Book List +---------------------- + +The function ``books`` should return an html list of book titles where each +title is a link to the detail page for that book + +.. rst-class:: build + +* You'll need all the ids and titles from the book database. +* You'll need to build a list in HTML using this information +* Each list item should have the book title as a link +* The href for the link should be of the form ``/book/`` + + +.. nextslide:: My Solution + +.. rst-class:: build + +.. code-block:: python + + def books(): + all_books = DB.titles() + body = ['

    My Bookshelf

    ', '
    ') + return '\n'.join(body) + + +Test Your Work +-------------- + +Quit and then restart your application script:: + + $ python bookapp.py + +.. rst-class:: build +.. container:: + + .. container:: + + Then reload the root of your application:: + + http://localhost:8080/ + + You should see a nice list of the books in the database. Do you? + + Click on a link to view the detail page. Does it load without error? + + +Showing Details +--------------- + +The next step of course is to polish up those detail pages. + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * You'll need to retrieve a single book from the database + * You'll need to format the details about that book and return them as HTML + * You'll need to guard against ids that do not map to books + + In this last case, what's the right HTTP response code to send? + + +.. nextslide:: My Solution + +.. rst-class:: build + +.. code-block:: python + + def book(book_id): + page = """ +

    {title}

    + + + + +
    Author{author}
    Publisher{publisher}
    ISBN{isbn}
    + Back to the list + """ + book = DB.title_info(book_id) + if book is None: + raise NameError + return page.format(**book) + + +.. nextslide:: Revel in Your Success + +Quit and restart your script one more time + +.. rst-class:: build +.. container:: + + Then poke around at your application and see the good you've made + + And your application is portable and sharable + + It should run equally well under any `wsgi server `_ + + +.. nextslide:: A Few Steps Further + +Next steps for an app like this might be: + +* Create a shared full page template and incorporate it into your app +* Improve the error handling by emitting error codes other than 404 and 500 +* Swap out the basic backend here with a different one, maybe a Web Service? +* Think about ways to make the application less tightly coupled to the pages + it serves + + +Homework +======== + +.. rst-class:: left +.. container:: + + For your homework this week, you'll be creating a wsgi application of your + own. + + .. rst-class:: build + .. container:: + + You'll create an online calculator that can perform several operations + + You'll need to support: + + .. rst-class:: build + + * Addition + * Subtraction + * Multiplication + * Division + + .. container:: + + Your users should be able to send appropriate requests and get back + proper responses:: + + http://localhost:8080/multiply/3/5 => 15 + http://localhost:8080/add/23/42 => 65 + http://localhost:8080/divide/6/0 => HTTP "400 Bad Request" + + +.. nextslide:: Submitting Your Homework + +.. rst-class:: left +.. container:: + + To submit your homework: + + .. rst-class:: build + + * Create a new github repository. Call it ``wsgi-calc``. + * Add a python script to it called ``calculator.py``. + * Your script should be runnable using ``$ python calculator.py`` + * When the script is running, I should be able to view your application in + my browser. + * I should be able to see a home page that explains how to perform + calculations. + + .. rst-class:: build + .. container:: + + Your repository should include a README.md file. + + Include all instructions I need to successfully run and view your + script. + + When you are done, send Maria and I an email with a link to your + repository. + +Wrap-Up +------- + +For educational purposes, you might wish to take a look at the source code for +the ``wsgiref`` module. It's the canonical example of a simple wsgi server + + >>> import wsgiref + >>> wsgiref.__file__ + '/full/path/to/your/copy/of/wsgiref.py' + ... + +.. rst-class:: build centered + +**See you Next Time** diff --git a/slides/_sources/presentations/session07.txt b/slides/_sources/presentations/session07.txt new file mode 100644 index 00000000..6fe08bd7 --- /dev/null +++ b/slides/_sources/presentations/session07.txt @@ -0,0 +1,1635 @@ +********** +Session 07 +********** + +.. figure:: /_static/granny_mashup.png + :align: center + :width: 50% + + Paul Downey http://www.flickr.com/photos/psd/492139935/ - CC-BY + +Scraping, APIs and Mashups +========================== + +Wherein we learn how to make order from the chaos of the wild internet. + + +A Dilemma +--------- + +The internet makes a vast quantity of data available. + +.. rst-class:: build +.. container:: + + But not always in the form or combination you want. + + It would be nice to be able to combine data from different sources to + create *meaning*. + + +The Big Question +---------------- + +.. rst-class:: large centered + +But How? + + +The Big Answer +-------------- + +.. rst-class:: large centered + +Mashups + + +Mashups +------- + +A mashup is:: + + a web page, or web application, that uses and combines data, presentation + or functionality from two or more sources to create new services. + + -- `wikipedia `_ + + +Data Sources +------------ + +The key to mashups is the idea of data sources. + +.. rst-class:: build +.. container:: + + These come in many flavors: + + .. rst-class:: build + + * Simple websites with data in HTML + * Web services providing structured data + * Web services providing tranformative service (geocoding) + * Web services providing presentation (mapping) + +Web Scraping +============ + +.. rst-class:: left +.. container:: + + It would be nice if all online data were available in well-structured formats. + + .. rst-class:: build + .. container:: + + The reality is that much data is available only in HTML. + + Still we can get at it, with some effort. + + By scraping the data from the web pages. + + +HTML, Ideally +------------- + +.. code-block:: html + + + + + + +

    A nice clean paragraph

    +

    And another nice clean paragraph

    + + + + +HTML... IRL +----------- + +.. code-block:: html + + +
    + + ``). - >>> row1 = locatable[0] - >>> row1.attrs - {u'data-pid': u'3949023084', u'data-latitude': u'35.8625743108992', - u'class': [u'row'], u'data-longitude': u'-78.6232739959049'} - >>> lat = row1.attrs.get('data-latitude', None) - >>> lon = row1.attrs.get('data-longitude', None) - >>> print lat, lon - 46.9989830869194 -122.847250593816 +.. rst-class:: build +.. container:: + The rows we want at this time all have two *cells* inside them. -Extracting Description and Link -------------------------------- + The first contains the *label* of the data, the second contains the *value* -Where ``find_all`` will find many elements, ``find`` will only find the first -that matches the filters you provide. + We'll need a function in ``mashup.py`` that: + + .. rst-class:: build -.. container:: incremental + * takes an HTML element as an argument + * verifies that it is a ```` element + * verifies that it has two immediate children that are ```` tag. + We only want the ones at the top of that tag (ones nested more deeply + contain other data) -Extracting Price and Size -------------------------- + .. code-block:: pycon -Both price and size are held in the ``l2`` span: + >>> data_rows = rec.find('tbody').find_all(has_two_tds, recursive=False) + >>> len(data_rows) + 7 + >>> data_rows[0] + + + + -.. code-block:: python +.. nextslide:: Extracting Labels and Values + +Now we have a list of the rows that contain our data. + +.. rst-class:: build +.. container:: + + Next we have to collect the data they contain - >>> l2 = row1.find('span', class_='l2') + The *label/value* structure of this data should suggest the right container + to store the information. -.. container:: incremental + Let's start by trying to get at the first label - Price, conveniently, is in it's own container: + .. code-block:: pycon + >>> row1 = data_rows[0] + >>> cells = row1.find_all('td') + >>> cell1 = cells[0] + >>> cell1.text + u'\n - Business Name\n ' + + That works well enough, but all that extra stuff is nasty + + We need a method to clean up the text we get from these cells + + It should strip extra whitespace, and characters like ``-`` and ``:`` we + don't want. + +.. nextslide:: My Solution + +Try writing such a function for yourself now in ``mashup.py`` + +.. rst-class:: build +.. container:: + .. code-block:: python + + def clean_data(td): + return unicode(td.text).strip(" \n:-") + + Add it to your interpreter and test it out: + + .. code-block:: pycon - >>> price_span = l2.find('span', class_='price') - >>> price = price_span.string.strip() + >>> def clean_data(td): + ... return unicode(td.text).strip(" \n:-") + ... + >>> clean_data(cell1) + u'Business Name' + >>> -.. rst-class:: build + Ahhh, much better -But the size element is not. It is a standalone *text node*. +.. nextslide:: The Complete Function + +So we can get a list of the rows that contain label/value pairs. .. rst-class:: build +.. container:: -Try finding it by reading the ``string`` property of our ``l2`` tag. + And we can extract clean values from the cells in these rows + Now we need a function in ``mashup.py`` that will iterate through the rows + we find and build a dictionary of the pairs. -Simple Navigation and Text --------------------------- + We have to be cautious because some rows don't have a label. -We can get to a simple text node by navigating there. + The values in these rows should go with the label from the previous row. -.. rst-class:: build +.. nextslide:: My Solution -You can navigate up, down and across document nodes. +Here's the version I came up with: -.. container:: incremental +.. code-block:: python - We already have the ``price`` span, the size text node is next at the same - level: + def extract_restaurant_metadata(elem): + restaurant_data_rows = elem.find('tbody').find_all( + has_two_tds, recursive=False + ) + rdata = {} + current_label = '' + for data_row in restaurant_data_rows: + key_cell, val_cell = data_row.find_all('td', recursive=False) + new_label = clean_data(key_cell) + current_label = new_label if new_label else current_label + rdata.setdefault(current_label, []).append(clean_data(val_cell)) + return rdata - .. code-block:: python - >>> size = price_span.next_sibling.strip(' \n-/') - >>> size - u'2br - 912ft\xb2' +.. nextslide:: Testing It Out + +Add it to our script: .. rst-class:: build +.. container:: -You may have noticed that we keep using ``strip``. There are two reasons for -this. + .. code-block:: python + + # ... + data_list = restaurant_data_generator(content_col) + for data_div in data_list: + metadata = extract_restaurant_metadata(data_div) + print metadata + And then try it out: -The NavigableString Element ---------------------------- + .. code-block:: bash + + (soupenv)$ python mashup.py + ... + {u'Business Category': [u'Seating 0-12 - Risk Category III'], + u'Longitude': [u'122.3401786000'], u'Phone': [u'(206) 501-9554'], + u'Business Name': [u"ZACCAGNI'S"], u'Address': [u'97B PIKE ST', u'SEATTLE, WA 98101'], + u'Latitude': [u'47.6086651300']} -The most obvious reason is that we don't want extra whitespace. + This script is available as ``resources/session07/mashup_3.py`` + + +Extracting Inspection Data +-------------------------- + +The final step is to extract the inspection data for each restaurant. .. rst-class:: build +.. container:: -The second reason is more subtle. The values returned by ``string`` are -**not** simple unicode strings + We want to capture only the score from each inspection, details we can + leave behind. -.. container:: incremental + We'd like to calculate the average score for all known inspections. - They are actually instances of a class called ``NavigableString``: + We'd also like to know how many inspections there were in total. - .. code-block:: python + Finally, we'd like to preserve the highest score of all inspections for a + restaurant. + + We'll add this information to our metadata about the restaurant. - >>> price_span.next_sibling.__class__ - + +.. nextslide:: Finding the Data + +Let's start by getting our bearings. Return to viewing the +``inspection_page.html`` you saved in a browser. .. rst-class:: build +.. container:: -Calling ``strip`` or casting them to ``unicode`` converts them, saving memory + Find a restaurant that has had an inspection or two. + What can you say about the HTML that contains the scores for these + inspections? -Put It All Together -------------------- + I notice four characteristics that let us isolate the information we want: -Okay, a challenge. Combine everything we've done into a function that: + .. rst-class:: build -.. rst-class:: build + * Inspection data is containd in ```` elements + * Rows with inspection data in them have four ````). - >>> row1 = locatable[0] - >>> row1.attrs - {u'data-pid': u'3949023084', u'data-latitude': u'35.8625743108992', - u'class': [u'row'], u'data-longitude': u'-78.6232739959049'} - >>> lat = row1.attrs.get('data-latitude', None) - >>> lon = row1.attrs.get('data-longitude', None) - >>> print lat, lon - 46.9989830869194 -122.847250593816 +.. rst-class:: build +.. container:: + The rows we want at this time all have two *cells* inside them. -Extracting Description and Link -------------------------------- + The first contains the *label* of the data, the second contains the *value* -Where ``find_all`` will find many elements, ``find`` will only find the first -that matches the filters you provide. + We'll need a function in ``mashup.py`` that: + + .. rst-class:: build -.. container:: incremental + * takes an HTML element as an argument + * verifies that it is a ```` element + * verifies that it has two immediate children that are ```` tag. + We only want the ones at the top of that tag (ones nested more deeply + contain other data) -Extracting Price and Size -------------------------- + .. code-block:: pycon -Both price and size are held in the ``l2`` span: + >>> data_rows = rec.find('tbody').find_all(has_two_tds, recursive=False) + >>> len(data_rows) + 7 + >>> data_rows[0] + + + + -.. code-block:: python +.. nextslide:: Extracting Labels and Values + +Now we have a list of the rows that contain our data. + +.. rst-class:: build +.. container:: + + Next we have to collect the data they contain - >>> l2 = row1.find('span', class_='l2') + The *label/value* structure of this data should suggest the right container + to store the information. -.. container:: incremental + Let's start by trying to get at the first label - Price, conveniently, is in it's own container: + .. code-block:: pycon + >>> row1 = data_rows[0] + >>> cells = row1.find_all('td') + >>> cell1 = cells[0] + >>> cell1.text + u'\n - Business Name\n ' + + That works well enough, but all that extra stuff is nasty + + We need a method to clean up the text we get from these cells + + It should strip extra whitespace, and characters like ``-`` and ``:`` we + don't want. + +.. nextslide:: My Solution + +Try writing such a function for yourself now in ``mashup.py`` + +.. rst-class:: build +.. container:: + .. code-block:: python + + def clean_data(td): + return unicode(td.text).strip(" \n:-") + + Add it to your interpreter and test it out: + + .. code-block:: pycon - >>> price_span = l2.find('span', class_='price') - >>> price = price_span.string.strip() + >>> def clean_data(td): + ... return unicode(td.text).strip(" \n:-") + ... + >>> clean_data(cell1) + u'Business Name' + >>> -.. rst-class:: build + Ahhh, much better -But the size element is not. It is a standalone *text node*. +.. nextslide:: The Complete Function + +So we can get a list of the rows that contain label/value pairs. .. rst-class:: build +.. container:: -Try finding it by reading the ``string`` property of our ``l2`` tag. + And we can extract clean values from the cells in these rows + Now we need a function in ``mashup.py`` that will iterate through the rows + we find and build a dictionary of the pairs. -Simple Navigation and Text --------------------------- + We have to be cautious because some rows don't have a label. -We can get to a simple text node by navigating there. + The values in these rows should go with the label from the previous row. -.. rst-class:: build +.. nextslide:: My Solution -You can navigate up, down and across document nodes. +Here's the version I came up with: -.. container:: incremental +.. code-block:: python - We already have the ``price`` span, the size text node is next at the same - level: + def extract_restaurant_metadata(elem): + restaurant_data_rows = elem.find('tbody').find_all( + has_two_tds, recursive=False + ) + rdata = {} + current_label = '' + for data_row in restaurant_data_rows: + key_cell, val_cell = data_row.find_all('td', recursive=False) + new_label = clean_data(key_cell) + current_label = new_label if new_label else current_label + rdata.setdefault(current_label, []).append(clean_data(val_cell)) + return rdata - .. code-block:: python - >>> size = price_span.next_sibling.strip(' \n-/') - >>> size - u'2br - 912ft\xb2' +.. nextslide:: Testing It Out + +Add it to our script: .. rst-class:: build +.. container:: -You may have noticed that we keep using ``strip``. There are two reasons for -this. + .. code-block:: python + + # ... + data_list = restaurant_data_generator(content_col) + for data_div in data_list: + metadata = extract_restaurant_metadata(data_div) + print metadata + And then try it out: -The NavigableString Element ---------------------------- + .. code-block:: bash + + (soupenv)$ python mashup.py + ... + {u'Business Category': [u'Seating 0-12 - Risk Category III'], + u'Longitude': [u'122.3401786000'], u'Phone': [u'(206) 501-9554'], + u'Business Name': [u"ZACCAGNI'S"], u'Address': [u'97B PIKE ST', u'SEATTLE, WA 98101'], + u'Latitude': [u'47.6086651300']} -The most obvious reason is that we don't want extra whitespace. + This script is available as ``resources/session07/mashup_3.py`` + + +Extracting Inspection Data +-------------------------- + +The final step is to extract the inspection data for each restaurant. .. rst-class:: build +.. container:: -The second reason is more subtle. The values returned by ``string`` are -**not** simple unicode strings + We want to capture only the score from each inspection, details we can + leave behind. -.. container:: incremental + We'd like to calculate the average score for all known inspections. - They are actually instances of a class called ``NavigableString``: + We'd also like to know how many inspections there were in total. - .. code-block:: python + Finally, we'd like to preserve the highest score of all inspections for a + restaurant. + + We'll add this information to our metadata about the restaurant. - >>> price_span.next_sibling.__class__ - + +.. nextslide:: Finding the Data + +Let's start by getting our bearings. Return to viewing the +``inspection_page.html`` you saved in a browser. .. rst-class:: build +.. container:: -Calling ``strip`` or casting them to ``unicode`` converts them, saving memory + Find a restaurant that has had an inspection or two. + What can you say about the HTML that contains the scores for these + inspections? -Put It All Together -------------------- + I notice four characteristics that let us isolate the information we want: -Okay, a challenge. Combine everything we've done into a function that: + .. rst-class:: build -.. rst-class:: build + * Inspection data is containd in ```` elements + * Rows with inspection data in them have four ````). -Customizing Sockets -------------------- +.. rst-class:: build +.. container:: + + The rows we want at this time all have two *cells* inside them. -These three properties of a socket correspond to the three positional -arguments you may pass to the socket constructor. + The first contains the *label* of the data, the second contains the *value* + + We'll need a function in ``mashup.py`` that: + + .. rst-class:: build + + * takes an HTML element as an argument + * verifies that it is a ```` element + * verifies that it has two immediate children that are ```` tag. - .. code-block:: pycon + We only want the ones at the top of that tag (ones nested more deeply + contain other data) - >>> bar = socket.socket(socket.AF_INET, - ... socket.SOCK_DGRAM, - ... socket.IPPROTO_UDP) - ... - >>> bar - + .. code-block:: ipython + In [13]: data_rows = rec.find('tbody').find_all(has_two_tds, recursive=False) + In [14]: len(data_rows) + Out[14]: 7 + In [15]: print(data_rows[0].prettify()) + + + + -Break Time ----------- +.. nextslide:: Extracting Labels and Values -So far we have: +Now we have a list of the rows that contain our data. .. rst-class:: build .. container:: - .. rst-class:: build + Next we have to collect the data they contain - * learned about the "layers" of the TCP/IP Stack - * discussed *families*, *types* and *protocols* in sockets - * learned how to create sockets with a specific communications profile. + The *label/value* structure of this data should suggest the right container + to store the information. - When we return we'll learn how to find the communcations profiles of remote - sockets, how to connect to them, and how to send and receive messages. + Let's start by trying to get at the first label - Take a few minutes now to clear your head (do not quit your python - interpreter). + .. code-block:: ipython + + In [18]: row1 = data_rows[0] + In [19]: cells = row1.find_all('td') + In [20]: cell1 = cells[0] + In [21]: cell1.text + Out[21]: '\n - Business Name\n ' + That works well enough, but all that extra stuff is nasty -Address Information -------------------- + We need a method to clean up the text we get from these cells + + It should strip extra whitespace, and characters like ``-`` and ``:`` we + don't want. + +.. nextslide:: My Solution -When you are creating a socket to communicate with a remote service, the -remote socket will have a specific communications profile. +Try writing such a function for yourself now in ``mashup.py`` .. rst-class:: build .. container:: - The local socket you create must match that communications profile. + .. code-block:: python - How can you determine the *correct* values to use? + def clean_data(td): + return td.text.strip(" \n:-") - .. rst-class:: centered + Add it to your interpreter and test it out: - **You ask.** + .. code-block:: ipython + + In [25]: def clean_data(td): + ....: return td.text.strip(" \n:-") + ....: + In [26]: clean_data(cell1) + Out[26]: 'Business Name' + In [27]: -.. nextslide:: + Ahhh, much better + +.. nextslide:: The Complete Function -The function ``socket.getaddrinfo`` provides information about available -connections on a given host. +So we can get a list of the rows that contain label/value pairs. + +.. rst-class:: build +.. container:: + + And we can extract clean values from the cells in these rows + + Now we need a function in ``mashup.py`` that will iterate through the rows + we find and build a dictionary of the pairs. + + We have to be cautious because some rows don't have a label. + + The values in these rows should go with the label from the previous row. + +.. nextslide:: My Solution + +Here's the version I came up with: .. code-block:: python - socket.getaddrinfo('127.0.0.1', 80) + def extract_restaurant_metadata(elem): + restaurant_data_rows = elem.find('tbody').find_all( + has_two_tds, recursive=False + ) + rdata = {} + current_label = '' + for data_row in restaurant_data_rows: + key_cell, val_cell = data_row.find_all('td', recursive=False) + new_label = clean_data(key_cell) + current_label = new_label if new_label else current_label + rdata.setdefault(current_label, []).append(clean_data(val_cell)) + return rdata + + +.. nextslide:: Testing It Out + +Add it to our script: .. rst-class:: build .. container:: - This provides all you need to make a proper connection to a socket on a - remote host. The value returned is a tuple of: + .. code-block:: python + + # ... + data_list = restaurant_data_generator(content_col) + for data_div in data_list: + metadata = extract_restaurant_metadata(data_div) + print metadata - .. rst-class:: build + And then try it out: - * socket family - * socket type - * socket protocol - * canonical name (usually empty, unless requested by flag) - * socket address (tuple of IP and Port) + .. code-block:: bash + + (soupenv)$ python mashup.py + ... + {u'Business Category': [u'Seating 0-12 - Risk Category III'], + u'Longitude': [u'122.3401786000'], u'Phone': [u'(206) 501-9554'], + u'Business Name': [u"ZACCAGNI'S"], u'Address': [u'97B PIKE ST', u'SEATTLE, WA 98101'], + u'Latitude': [u'47.6086651300']} + This script is available as ``resources/session04/mashup_3.py`` -.. nextslide:: A quick utility method -Again, let's create a utility method in-place so we can see this in action: +Extracting Inspection Data +-------------------------- -.. code-block:: pycon +The final step is to extract the inspection data for each restaurant. - >>> def get_address_info(host, port): - ... for response in socket.getaddrinfo(host, port): - ... fam, typ, pro, nam, add = response - ... print 'family: ', families[fam] - ... print 'type: ', types[typ] - ... print 'protocol: ', protocols[pro] - ... print 'canonical name: ', nam - ... print 'socket address: ', add - ... print - ... - >>> +.. rst-class:: build +.. container:: + + We want to capture only the score from each inspection, details we can + leave behind. + + We'd like to calculate the average score for all known inspections. -(you can also find this in ``resources/session01/session1.py``) + We'd also like to know how many inspections there were in total. + Finally, we'd like to preserve the highest score of all inspections for a + restaurant. -.. nextslide:: On Your Own Machine + We'll add this information to our metadata about the restaurant. -Now, ask your own machine what possible connections are available for 'http': + +.. nextslide:: Finding the Data + +Let's start by getting our bearings. Return to viewing the +``inspection_page.html`` you saved in a browser. .. rst-class:: build .. container:: - .. code-block:: pycon + Find a restaurant that has had an inspection or two. - >>> get_address_info(socket.gethostname(), 'http') - family: AF_INET - type: SOCK_DGRAM - protocol: IPPROTO_UDP - canonical name: - socket address: ('10.211.55.2', 80) + What can you say about the HTML that contains the scores for these + inspections? - family: AF_INET - ... - >>> + I notice four characteristics that let us isolate the information we want: - What answers do you get? + .. rst-class:: build + * Inspection data is containd in ```` elements + * Rows with inspection data in them have four ````). +In order for Heroku to deploy your application, it has to have a command it can +run from a standard shell. .. rst-class:: build .. container:: - The rows we want at this time all have two *cells* inside them. - - The first contains the *label* of the data, the second contains the *value* - - We'll need a function in ``mashup.py`` that: + We could use the ``pserve`` command we've been using locally, but the + server it uses is designed for development. - .. rst-class:: build - - * takes an HTML element as an argument - * verifies that it is a ```` element - * verifies that it has two immediate children that are ```` tag. - - We only want the ones at the top of that tag (ones nested more deeply - contain other data) + Once this exists, you can try running your app with it: - .. code-block:: pycon + .. code-block:: bash - >>> data_rows = rec.find('tbody').find_all(has_two_tds, recursive=False) - >>> len(data_rows) - 7 - >>> data_rows[0] - - - - + (ljenv)$ python runapp.py + serving on http://0.0.0.0:5000 -.. nextslide:: Extracting Labels and Values +.. nextslide:: Running Via Shell -Now we have a list of the rows that contain our data. +This would be enough, but we also want to *install* our application as a Python +package. .. rst-class:: build .. container:: - Next we have to collect the data they contain + This will ensure that the dependencies for the application are installed. - The *label/value* structure of this data should suggest the right container - to store the information. + Add a new file called simply ``run`` in the same folder: - Let's start by trying to get at the first label - - .. code-block:: pycon - - >>> row1 = data_rows[0] - >>> cells = row1.find_all('td') - >>> cell1 = cells[0] - >>> cell1.text - u'\n - Business Name\n ' + .. code-block:: bash - That works well enough, but all that extra stuff is nasty + #!/bin/bash + python setup.py develop + python runapp.py - We need a method to clean up the text we get from these cells + The first line of this file will install our application and its + dependencies. - It should strip extra whitespace, and characters like ``-`` and ``:`` we - don't want. + The second line will execute the server script. -.. nextslide:: My Solution +.. nextslide:: Build the Database -Try writing such a function for yourself now in ``mashup.py`` +We'll need to do the same thing for initializing the database. .. rst-class:: build .. container:: - .. code-block:: python - - def clean_data(td): - return unicode(td.text).strip(" \n:-") + Create another new file called ``build_db`` in the same folder: - Add it to your interpreter and test it out: + .. code-block:: bash - .. code-block:: pycon - - >>> def clean_data(td): - ... return unicode(td.text).strip(" \n:-") - ... - >>> clean_data(cell1) - u'Business Name' - >>> + #!/bin/bash + python setup.py develop + initialize_learning_journal_db production.ini - Ahhh, much better + Now, add ``run``, ``build_db`` and ``runapp.py`` to your repository and + commit the changes. -.. nextslide:: The Complete Function +.. nextslide:: Make it Executable -So we can get a list of the rows that contain label/value pairs. +For Heroku to use them, ``run`` and ``build_db`` must be *executable* .. rst-class:: build .. container:: - And we can extract clean values from the cells in these rows + For OSX and Linux users this is easy (do the same for ``run`` and + ``build_db``): - Now we need a function in ``mashup.py`` that will iterate through the rows - we find and build a dictionary of the pairs. + .. code-block:: bash - We have to be cautious because some rows don't have a label. + (ljenv)$ chmod 755 run - The values in these rows should go with the label from the previous row. + Windows users, if you have ``git-bash``, you can do the same -.. nextslide:: My Solution + For the rest of you, try this (for both ``run`` and ``build_db``): -Here's the version I came up with: + .. code-block:: posh -.. code-block:: python + C:\views\myproject>git ls-tree HEAD + ... + 100644 blob 55c0287d4ef21f15b97eb1f107451b88b479bffe run + C:\views\myproject>git update-index --chmod=+x run + C:\views\myproject>git ls-tree HEAD + 100755 blob 3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4 run - def extract_restaurant_metadata(elem): - restaurant_data_rows = elem.find('tbody').find_all( - has_two_tds, recursive=False - ) - rdata = {} - current_label = '' - for data_row in restaurant_data_rows: - key_cell, val_cell = data_row.find_all('td', recursive=False) - new_label = clean_data(key_cell) - current_label = new_label if new_label else current_label - rdata.setdefault(current_label, []).append(clean_data(val_cell)) - return rdata + Commit your changes to git to make them permanent. -.. nextslide:: Testing It Out +.. nextslide:: Procfile -Add it to our script: +Next, we have to inform Heroku that we will be using this script to run our +application online .. rst-class:: build .. container:: - .. code-block:: python - - # ... - data_list = restaurant_data_generator(content_col) - for data_div in data_list: - metadata = extract_restaurant_metadata(data_div) - print metadata + Heroku uses a special file called ``Procfile`` to do this. - And then try it out: + Add that file now, in the same directory. .. code-block:: bash - - (soupenv)$ python mashup.py - ... - {u'Business Category': [u'Seating 0-12 - Risk Category III'], - u'Longitude': [u'122.3401786000'], u'Phone': [u'(206) 501-9554'], - u'Business Name': [u"ZACCAGNI'S"], u'Address': [u'97B PIKE ST', u'SEATTLE, WA 98101'], - u'Latitude': [u'47.6086651300']} - This script is available as ``resources/session07/mashup_3.py`` + web: ./run + This file tells Heroku that we have one ``web`` process to run, and that it + is the ``run`` script located right here. -Extracting Inspection Data --------------------------- + Providing the ``./`` at the start of the file name allows the shell to + execute scripts that are not on the system PATH. -The final step is to extract the inspection data for each restaurant. + Add this new file to your repository and commit it. -.. rst-class:: build -.. container:: - We want to capture only the score from each inspection, details we can - leave behind. +.. nextslide:: Select a Python Version - We'd like to calculate the average score for all known inspections. - - We'd also like to know how many inspections there were in total. - - Finally, we'd like to preserve the highest score of all inspections for a - restaurant. - - We'll add this information to our metadata about the restaurant. - - -.. nextslide:: Finding the Data - -Let's start by getting our bearings. Return to viewing the -``inspection_page.html`` you saved in a browser. +By default, Heroku uses the latest update of Python version 2.7 for any Python +app. .. rst-class:: build .. container:: - Find a restaurant that has had an inspection or two. + You can override this and specify any runtime version of Python + `available in Heroku`_. + + Just add a file called ``runtime.txt`` to your repository, with one line + only: - What can you say about the HTML that contains the scores for these - inspections? + .. code-block:: ini + + python-3.5.0 - I notice four characteristics that let us isolate the information we want: + Create that file, add it to your repository, and commit the changes. - .. rst-class:: build +.. _available in Heroku: https://devcenter.heroku.com/articles/python-runtimes#supported-python-runtimes - * Inspection data is containd in ```` elements - * Rows with inspection data in them have four ``\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
    ", "
    " ], + area: [ 1, "", "" ], + param: [ 1, "", "" ], + thead: [ 1, "
    Row 1 cell 1 +
    Row 2 cell 1 + + Row 2 cell 2
    This
    sure is a long cell + + + + +FFFFFFFFFUUUUUUUUUUUUU +---------------------- + +.. figure:: /_static/scream.jpg + :align: center + :width: 32% + + Photo by Matthew via Flickr (http://www.flickr.com/photos/purplemattfish/3918004964/) - CC-BY-NC-ND + + +The Law of The Internet +----------------------- + +.. rst-class:: large centered + +"Be strict in what you send and tolerant in what you receive" + + +Taming the Mess +--------------- + +Luckily, there are tools to help with this. + +.. rst-class:: build +.. container:: + + In python there are several candidates, but I like ``BeautifulSoup``. + + BeautifulSoup is a great tool, but it's not in the Standard Library. + + We'll need to install it. + + Create a virtualenv to do so: + + .. code-block:: bash + + $ virtualenv soupenv + ... + $ source soupenv/bin/activate + + (remember, for Windows users that should be ``soupenv/Scripts/activate``) + + +Install BeautifulSoup +--------------------- + +Once the virtualenv is activated, you can simply use pip or easy_install to +install the libraries you want: + +.. code-block:: bash + + source + + (soupenv)$ pip install beautifulsoup4 + + +Choose a Parsing Engine +----------------------- + +BeautifulSoup is built to use the Python HTMLParser. + +.. rst-class:: build + +* Batteries Included. It's already there +* It's not great, especially before Python 2.7.3 + +.. rst-class:: build +.. container:: + + BeautifulSoup also supports using other parsers. + + There are two good choices: ``lxml`` and ``html5lib``. + + ``lxml`` is better, but much harder to install. Let's use ``html5lib``. + + +Install a Parsing Engine +------------------------ + +Again, this is pretty simple:: + + (soupenv)$ pip install html5lib + +.. rst-class:: build +.. container:: + + Once installed, BeautifulSoup will choose it automatically. + + BeautifulSoup will choose the "best" available. + + You can specify the parser if you need to for some reason. + +Install Requests +---------------- + +Python provides tools for opening urls and communicating with servers. It's +spread across the ``urllib`` and ``urllib2`` packages. + +.. rst-class:: build +.. container:: + + These packages have pretty unintuitive APIs. + + The ``requests`` library is becoming the de-facto standard for this type of + work. Let's install it too. + + .. code-block:: bash + + (soupenv)$ pip install requests + + +Our Class Mashup +---------------- + +We're going to explore some tools for making a mashup today + +.. rst-class:: build +.. container:: + + We'll be starting by scraping ZIP codes for Seattle + + Then we'll choose one of them and look up restaurant health code data for + that ZIP code + + Then, we'll look up the geographic location of those zipcodes using Google + + Open a new file in your editor: ``mashup.py``. + + +Examine the Source +------------------ + +Craigslist doesn't have an api, just a website, so we'll need to dig a bit + +.. rst-class:: build + +By going to the website and playing with the form there, we can derive a +formula for a search URL + +.. rst-class:: build + +* Base URL: ``http://seattle.craigslist.org/search/apa`` +* keywords: ``query=keyword+values+here`` +* price: ``minAsk=NNN maxAsk=NNN`` +* bedrooms: ``bedrooms=N`` (N in range 1-8) + +.. rst-class:: build + +We'll make an HTTP request with these parameters + + +Opening URLs with Requests +-------------------------- + +In ``requests``, each HTTP method has a module-level function: + +.. rst-class:: build + +* ``GET`` == ``requests.get(url, **kwargs)`` +* ``POST`` == ``requests.post(url, **kwargs)`` +* ... + +.. rst-class:: build + +``kwargs`` represent other parts of an HTTP request: + +.. rst-class:: build + +* ``params``: a dict of url parameters (?foo=bar&baz=bim) +* ``headers``: a dict of headers to send with the request +* ``data``: the body of the request, if any (form data for POST goes here) +* ... + + +Getting Responses with Requests +------------------------------- + +The return value from one of these functions is a ``response`` which provides: + +.. rst-class:: build + +* ``response.status_code``: see the HTTP Status Code returned +* ``response.ok``: True if ``response.status_code`` is not an error +* ``response.raise_for_status()``: call to raise a python error if it is +* ``response.headers``: The headers sent from the server +* ``response.text``: Body of the response, decoded to unicode +* ``response.encoding``: The encoding used to decode +* ``response.content``: The original encoded response body as bytes + +.. rst-class:: build small + +``requests documentation``: http://docs.python-requests.org/en/latest/ + +Fetch Search Results +-------------------- + +We'll start by writing a function ``fetch_search_results`` + +.. rst-class:: build + +* It will accept one keyword argument for each of the possible query values +* It will build a dictionary of request query parameters from incoming keywords +* It will make a request to the craigslist server using this query +* It will return the body of the response if there is no error +* It will raise an error if there is a problem with the response + +.. rst-class:: build + +Try writing this function. Put it in ``mashup.py`` + + +My Solution +----------- + +Here's the one I created: + +.. code-block:: python + + import requests + + def fetch_search_results( + query=None, minAsk=None, maxAsk=None, bedrooms=None + ): + incoming = locals().copy() + base = 'http://seattle.craigslist.org/search/apa' + search_params = dict( + [(key, val) for key, val in incoming.items() + if val is not None]) + if not search_params: + raise ValueError("No valid keywords") + + resp = requests.get(base, params=search_params, timeout=3) + resp.raise_for_status() #<- no-op if status==200 + return resp.content, resp.encoding + + +Parse the Results +----------------- + +Next, we need a function ``parse_source`` to set up HTML for scraping. It will +need to: + +.. rst-class:: build + +* Take the response body from the previous method (or some other source) +* Parse it using BeautifulSoup +* Return the parsed object for further processing + +.. rst-class:: build + +Before you start, a word about parsing HTML with BeautifulSoup + + +Parsing HTML with BeautifulSoup +------------------------------- + +The BeautifulSoup object can be instantiated with a string or a file-like +object as the sole argument: + +.. code-block:: python + + from bs4 import BeautifulSoup + parsed = BeautifulSoup('

    Some HTML

    ') + + fh = open('a_page.html', 'r') + parsed = BeautifulSoup(fh) + + page = urllib2.urlopen('http://site.com/page.html') + parsed = BeautifulSoup(page) + + +.. rst-class:: build + +You might want to open the documentation as reference +(http://www.crummy.com/software/BeautifulSoup/bs4/doc) + + +My Solution +----------- + +Take a shot at writing this new function in ``mashup.py`` + +.. code-block:: python + + # add this import at the top + from bs4 import BeautifulSoup + + # then add this function lower down + def parse_source(html, encoding='utf-8'): + parsed = BeautifulSoup(html, from_encoding=encoding) + return parsed + + +Put It Together +--------------- + +We'll need to make our script do something when run. + +.. code-block:: python + + if __name__ == '__main__': + # do something + +.. rst-class:: build + +* Fetch a search results page +* Parse the resulting HTML +* For now, print out the results so we can see what we get + +.. container:: incremental small + + Use the ``prettify`` method on a BeautifulSoup object:: + + print parsed.prettify() + + +My Solution +----------- + +Try to come up with the proper code on your own. Add it to ``mashup.py`` + +.. code-block:: python + + if __name__ == '__main__': + html, encoding = fetch_search_results( + minAsk=500, maxAsk=1000, bedrooms=2 + ) + doc = parse_source(html, encoding) + print doc.prettify(encoding=encoding) + + +Test Your Work +-------------- + +Assuming your virtualenv is still active, you should be able to execute the +script. + +.. rst-class:: build + +:: + + (soupenv)$ python mashup.py + + + + + seattle apts/housing for rent classifieds - craigslist + + ... + + +Preserve the Results +-------------------- + +Try it again, this time redirect the output to a local file, so we can use +it without needing to hit the craiglist servers each time:: + + (soupenv)$ python mashup.py > craigslist_results.html + + +Finding The Needle +------------------ + +Next we find the bits of this pile of HTML that matter to us. + +.. rst-class:: build + +Open your html file in a browser and take a look (w/ dev tools). + +.. rst-class:: build + +We'll want to find: + +.. rst-class:: build + +* The HTML element that contains a single listing +* The source of location data, listings without location should be abandoned +* The description of a listing +* The link to a full listing page on craigslist +* Relevant price or size data. + + +Pulling it Out +-------------- + +We can extract this information now. In BeautifulSoup: + +.. rst-class:: build + +* All HTML elements (including the parsed document itself) are ``tags`` +* A ``tag`` can be searched using its ``find_all`` method +* This searches the descendents of the tag on which it is called. +* It takes arguments which act as *filters* on the search results + +.. container:: incremental + + like so: + + .. class:: small + + :: + + tag.find_all(name, attrs, recursive, text, limit, **kwargs) + + +Searching by CSS Class +---------------------- + +The items we are looking for are ``p`` tags which have the CSS class +``row``: + +.. rst-class:: build + +``find_all`` supports keyword arguments. If the keyword you use isn't one of +the listed arguments, it is treated as an ``attribute`` + +.. rst-class:: build + +In Python, ``class`` is a reserved word, so we can't use it as a keyword, but +you can use ``class_``! + +.. rst-class:: build small + +:: + + parsed.find_all('p', class_='row') + + +Try It Out +---------- + +Let's fire up a python interpreter and get our hands dirty here:: + + (soupenv)$ python + +.. code-block:: python + + >>> html = open('craigslist_results.html', 'r').read() + >>> from bs4 import BeautifulSoup + >>> parsed = BeautifulSoup(html) + >>> listings = parsed.find_all('p', class_='row') + >>> len(listings) + 100 + + +.. rst-class:: build + +That sounds about right. Let's see if we can get only those with location +data. + + +Filtering Tricks +---------------- + +Attribute filters given a ``True`` value match tags with that attribute + +.. rst-class:: build + +Location data was in the ``data-latitude`` and ``data-longitude`` attributes. + +.. code-block:: python + + >>> location_attrs = { + ... 'data-longitude': True, + ... 'data-latitude': True} + >>> locatable = parsed.find_all( + ... 'p', class_='row', attrs=location_attrs) + >>> len(locatable) + 43 + +.. rst-class:: build + +Great. That worked nicely + + +Parsing a Row +------------- + +Now that we have the rows we want, we need to parse them. We want to preserve: + +.. rst-class:: build + +* Location data (latitude and longitude) +* Source link (to craiglist detailed listing) +* Description text +* Price and size data + +.. rst-class:: build + +Which parts of a single row contain each of these elements? + + +Extracting Location +------------------- + +Location data is in the ``data-`` attributes we used to filter rows. + +.. container:: incremental + + We can read the HTML attributes of a 'tag' easily, using ``attrs``: + + .. code-block:: python + + >>> row1 = locatable[0] + >>> row1.attrs + {u'data-pid': u'3949023084', u'data-latitude': u'35.8625743108992', + u'class': [u'row'], u'data-longitude': u'-78.6232739959049'} + >>> lat = row1.attrs.get('data-latitude', None) + >>> lon = row1.attrs.get('data-longitude', None) + >>> print lat, lon + 46.9989830869194 -122.847250593816 + + +Extracting Description and Link +------------------------------- + +Where ``find_all`` will find many elements, ``find`` will only find the first +that matches the filters you provide. + +.. container:: incremental + + Our targets are in the first ``a`` tag in the ``pl`` span inside our row: + + .. code-block:: python + + >>> link = row1.find('span', class_='pl').find('a') + +.. container:: incremental + + The link path will be in the attrs: + + .. code-block:: python + + >>> path = link.attrs['href'] + +.. container:: incremental + + Text contained *inside* tags is in the ``string`` property: + + .. code-block:: python + + >>> description = link.string.strip() + + +Extracting Price and Size +------------------------- + +Both price and size are held in the ``l2`` span: + +.. code-block:: python + + >>> l2 = row1.find('span', class_='l2') + +.. container:: incremental + + Price, conveniently, is in it's own container: + + .. code-block:: python + + >>> price_span = l2.find('span', class_='price') + >>> price = price_span.string.strip() + +.. rst-class:: build + +But the size element is not. It is a standalone *text node*. + +.. rst-class:: build + +Try finding it by reading the ``string`` property of our ``l2`` tag. + + +Simple Navigation and Text +-------------------------- + +We can get to a simple text node by navigating there. + +.. rst-class:: build + +You can navigate up, down and across document nodes. + +.. container:: incremental + + We already have the ``price`` span, the size text node is next at the same + level: + + .. code-block:: python + + >>> size = price_span.next_sibling.strip(' \n-/') + >>> size + u'2br - 912ft\xb2' + +.. rst-class:: build + +You may have noticed that we keep using ``strip``. There are two reasons for +this. + + +The NavigableString Element +--------------------------- + +The most obvious reason is that we don't want extra whitespace. + +.. rst-class:: build + +The second reason is more subtle. The values returned by ``string`` are +**not** simple unicode strings + +.. container:: incremental + + They are actually instances of a class called ``NavigableString``: + + .. code-block:: python + + >>> price_span.next_sibling.__class__ + + +.. rst-class:: build + +Calling ``strip`` or casting them to ``unicode`` converts them, saving memory + + +Put It All Together +------------------- + +Okay, a challenge. Combine everything we've done into a function that: + +.. rst-class:: build + +* Extracts all the locatable listings from our html page +* Iterates over each of them, and builds a dictionary of data + + * include ``location``, ``href``, ``description``, ``price`` and ``size`` + +* Returns a list of these dictionaries + +.. rst-class:: build + +Call it ``extract_listings`` + +.. rst-class:: build + +Put this new function into ``mashup.py`` and call it from ``__main__``, +printing the result + + +Break Time +---------- + +Once you have this working, take a break. + +.. rst-class:: build + +When we return, we'll try a saner approach to getting data from online + +.. container:: incremental + + While you have a moment, sign up for an API key from this service: + + http://www.walkscore.com/professional/api.php + + +My Solution +----------- + +.. code-block:: python + + def extract_listings(doc): + location_attrs = {'data-latitude': True, + 'data-longitude': True} + for row in doc.find_all('p', class_='row', + attrs=location_attrs): + location = dict( + [(key, row.attrs.get(key)) for key in location_attrs]) + link = row.find('span', class_='pl').find('a') + price_span = row.find('span', class_='price') + listing = { + 'location': location, + 'href': link.attrs['href'], + 'description': link.string.strip(), + 'price': price_span.string.strip(), + 'size': price_span.next_sibling.strip(' \n-/') + } + yield listing + + +My Solution +----------- + +.. code-block:: python + + if __name__ == '__main__': + html, encoding = fetch_search_results( + minAsk=500, maxAsk=1000, bedrooms=2 + ) + doc = parse_source(html, encoding) + for listing in extract_listings(doc): + print listing + + +Another Approach +---------------- + +Scraping web pages is tedious and inherently brittle + +.. rst-class:: build + +The owner of the website updates their layout, your code breaks + +.. rst-class:: build + +But there is another way to get information from the web in a more normalized +fashion + +.. rst-class:: build center + +**Web Services** + + +Web Services +------------ + +"a software system designed to support interoperable machine-to-machine +interaction over a network" - W3C + +.. rst-class:: build + +* provides a defined set of calls +* returns structured data + + +Early Web Services +------------------ + +RSS is one of the earliest forms of Web Services + +* First known as ``RDF Site Summary`` +* Became ``Really Simple Syndication`` +* More at http://www.rss-specification.com/rss-specifications.htm + +.. rst-class:: build + +A single web-based *endpoint* provides a dynamically updated listing of +content + +.. rst-class:: build + +Implemented in pure HTTP. Returns XML + +.. rst-class:: build + +**Atom** is a competing, but similar standard + + +RSS Document +------------ + +.. class:: tiny + +:: + + + + + RSS Title + This is an example of an RSS feed + http://www.someexamplerssdomain.com/main.html + Mon, 06 Sep 2010 00:01:00 +0000 + Mon, 06 Sep 2009 16:45:00 +0000 + 1800 + + + Example entry + Here is some text containing an interesting description. + http://www.wikipedia.org/ + unique string per item + Mon, 06 Sep 2009 16:45:00 +0000 + + ... + + + + +XML-RPC +------- + +RSS provides a pre-defined data set, can we also allow *calling procedures* to +get more dynamic data? + +.. rst-class:: build + +We can! Enter XML-RPC (Remote Procedure Call) + +.. rst-class:: build + +* Provides a set of defined procedures which can take arguments +* Calls are made via HTTP GET, by passing an XML document +* Returns from a call are sent to the client in XML + +.. rst-class:: build + +There is an interactive example of this at the end of this session. We will +not go through it here, though. + + +Beyond XML-RPC +-------------- + +.. rst-class:: build + +* XML-RPC allows introspection +* XML-RPC forces you to introspect to get information +* **Wouldn't it be nice to get that automatically?** +* XML-RPC provides data types +* XML-RPC provides only *certain* data types +* **Wouldn't it be nice to have an extensible system for types?** +* XML-RPC allows calling methods with parameters +* XML-RPC only allows calling methods, nothing else +* **wouldn't it be nice to have contextual data as well?** + +.. rst-class:: build center + +**Enter SOAP: Simple Object Access Protocol** + + +SOAP +---- + +SOAP extends XML-RPC in a couple of useful ways: + +.. rst-class:: build + +* It uses Web Services Description Language (WSDL) to provide meta-data about + an entire service in a machine-readable format (Automatic introspection) + +* It establishes a method for extending available data types using XML + namespaces + +* It provides a wrapper around method calls called the **envelope**, which + allows the inclusion of a **header** with system meta-data that can be used + by the application + + +SOAP in Python +-------------- + +There is no standard library module that supports SOAP directly. + +.. rst-class:: build + +* The best-known and best-supported module available is **Suds** +* The homepage is https://fedorahosted.org/suds/ +* It can be installed using ``easy_install`` or ``pip install`` + +.. rst-class:: build + +Again, there is a good example of using SOAP via the ``suds`` library at the +end of this session. + +.. rst-class:: build + +But we're going to move on + + +Afterword +--------- + +SOAP (and XML-RPC) have some problems: + +.. rst-class:: build + +* XML is pretty damned inefficient as a data transfer medium +* Why should I need to know method names? +* If I can discover method names at all, I have to read a WSDL to do it? + +.. rst-class:: build + +Suds is the best we have, and it hasn't been updated since Sept. 2010. + +If Not XML, Then What? +---------------------- + +.. rst-class:: large centered incremental + +**JSON** + + +JSON +---- + +JavaScript Object Notation: + +.. rst-class:: build + +* a lightweight data-interchange format +* easy for humans to read and write +* easy for machines to parse and generate + +.. rst-class:: build + +Based on Two Structures: + +.. rst-class:: build + +* object: ``{ string: value, ...}`` +* array: ``[value, value, ]`` + +.. class:: center incremental + +pythonic, no? + + +JSON Data Types +--------------- + +JSON provides a few basic data types (see http://json.org/): + +.. rst-class:: build + +* string: unicode, anything but ", \\ and control characters +* number: any number, but json does not use octal or hexadecimal +* object, array (we've seen these above) +* true +* false +* null + +.. rst-class:: build center + +**No date type? OMGWTF??!!1!1** + + +Dates in JSON +------------- + +.. rst-class:: build + +Option 1 - Unix Epoch Time (number): + +.. code-block:: python + + >>> import time + >>> time.time() + 1358212616.7691269 + +.. rst-class:: build + +Option 2 - ISO 8661 (string): + +.. code-block:: python + + >>> import datetime + >>> datetime.datetime.now().isoformat() + '2013-01-14T17:18:10.727240' + + +JSON in Python +-------------- + +You can encode python to json, and decode json back to python: + +.. code-block:: python + + >>> import json + >>> array = [1,2,3] + >>> json.dumps(array) + >>> '[1, 2, 3]' + >>> orig = {'foo': [1,2,3], 'bar': u'my resumé', 'baz': True} + >>> encoded = json.dumps(orig) + >>> encoded + '{"baz": true, "foo": [1, 2, 3], "bar": "my resum\\u00e9"}' + >>> decoded = json.loads(encoded) + >>> decoded == orig + True + +.. rst-class:: build + +Customizing the encoder or decoder class allows for specialized serializations + + +JSON in Python +-------------- + +the json module also supports reading and writing to *file-like objects* via +``json.dump(fp)`` and ``json.load(fp)`` (note the missing 's') + +.. rst-class:: build + +Remember duck-typing. Anything with a ``.write`` and a ``.read`` method is +*file-like* + +.. rst-class:: build + +This usage can be much more memory-friendly with large files/sources + + +What about WSDL? +---------------- + +SOAP was invented in part to provide completely machine-readable +interoperability. + +.. rst-class:: build + +Does that really work in real life? + +.. rst-class:: build center + +Hardly ever + + +What about WSDL? +---------------- + +Another reason was to provide extensibility via custom types + +.. rst-class:: build + +Does that really work in real life? + +.. rst-class:: build center + +Hardly ever + + +Why Do All The Work? +-------------------- + +So, if neither of these goals is really achieved by using SOAP, why pay all +the overhead required to use the protocol? + +.. rst-class:: build + +Enter REST + + +REST +---- + +.. class:: center + +Representational State Transfer + +.. rst-class:: build + +* Originally described by Roy T. Fielding (worth reading) +* Use HTTP for what it can do +* Read more in `this book + `_\* + +.. class:: image-credit incremental + +\* Seriously. Buy it and read +( HTTP/1.1 +* GET /comment HTTP/1.1 +* POST /comment HTTP/1.1 +* PUT /comment/ HTTP/1.1 +* DELETE /comment/ HTTP/1.1 + + +ROA +--- + +This is **Resource Oriented Architecture** + +.. rst-class:: build + +The URL represents the *resource* we are working with + +.. rst-class:: build + +The HTTP Method represents the ``action`` to be taken + +.. rst-class:: build + +The HTTP Code returned tells us the ``result`` (whether success or failure) + + +HTTP Codes Revisited +-------------------- + +.. class:: small + +POST /comment HTTP/1.1 (creating a new comment): + +.. rst-class:: build small + +* Success: ``HTTP/1.1 201 Created`` +* Failure (unauthorized): ``HTTP/1.1 401 Unauthorized`` +* Failure (NotImplemented): ``HTTP/1.1 405 Not Allowed`` +* Failure (ValueError): ``HTTP/1.1 406 Not Acceptable`` + +.. class:: small incremental + +PUT /comment/ HTTP/1.1 (edit comment): + +.. rst-class:: build small + +* Success: ``HTTP/1.1 200 OK`` +* Failure: ``HTTP/1.1 409 Conflict`` + +.. class:: small incremental + +DELETE /comment/ HTTP/1.1 (delete comment): + +.. rst-class:: build small + +* Success: ``HTTP/1.1 204 No Content`` + + +HTTP Is Stateless +----------------- + +No individual request may be assumed to know anything about any other request. + +.. rst-class:: build + +All the required information representing the possible actions to take *should +be present in every response*. + +.. rst-class:: build big-centered + +Thus: HATEOAS + + +HATEOAS +------- + +.. rst-class:: large centered + +Hypermedia As The Engine Of Application State + + +Applications are State Engines +------------------------------ + +A State Engine is a machine that provides *states* for a resource to be in and +*transitions* to move resources between states. A Restful api should: + +.. rst-class:: build + +* provide information about the current state of a resource +* provide information about available transitions for that resource (URIs) +* provide all this in *each* HTTP response + + +Playing With REST +----------------- + +Let's take a moment to play with REST. + +.. rst-class:: build + +We'll use a common, public API provided by Google. + +.. rst-class:: build center + +**Geocoding** + + +Geocoding with Google APIs +-------------------------- + +https://developers.google.com/maps/documentation/geocoding + +.. container:: incremental + + Open a python interpreter using our virtualenv: + + .. class:: small + + :: + + (soupenv)$ python + +.. code-block:: python + + >>> import requests + >>> import json + >>> from pprint import pprint + >>> url = 'http://maps.googleapis.com/maps/api/geocode/json' + >>> addr = '1325 4th Ave, Seattle, 98101' + >>> parameters = {'address': addr, 'sensor': 'false' } + >>> resp = requests.get(url, params=parameters) + >>> data = json.loads(resp.text) + >>> if data['status'] == 'OK': + ... pprint(data) + + + +Reverse Geocoding +----------------- + +You can do the same thing in reverse, supply latitude and longitude and get +back address information: + +.. code-block:: python + + >>> location = data['results'][0]['geometry']['location'] + >>> latlng="{lat},{lng}".format(**location) + >>> parameters = {'latlng': latlng, 'sensor': 'false'} + >>> resp = requests.get(url, params=paramters) + >>> data = json.loads(resp.text) + >>> if data['status'] == 'OK': + ... pprint(data) + +.. rst-class:: build + +Notice that there are a number of results returned, ordered from most specific +to least. + + +Mash It Up +---------- + +Let's add a new function to ``mashup.py``. It will: + +.. rst-class:: build + +* take a single listing from our craiglist work +* format the location data provided in that listing properly +* make a reverse geocoding lookup using the google api above +* add the best available address to the listing +* return the updated listing + +.. rst-class:: build + +Call it ``add_address`` + + +My Solution +----------- + +.. code-block:: python + + # add an import + import json + + # and a function + def add_address(listing): + api_url = 'http://maps.googleapis.com/maps/api/geocode/json' + loc = listing['location'] + latlng_tmpl = "{data-latitude},{data-longitude}" + parameters = { + 'sensor': 'false', + 'latlng': latlng_tmpl.format(**loc), + } + resp = requests.get(api_url, params=parameters) + data = json.loads(resp.text) + if data['status'] == 'OK': + best = data['results'][0] + listing['address'] = best['formatted_address'] + else: + listing['address'] = 'unavailable' + return listing + + +Add Address to Output +--------------------- + +Go ahead and bolt the new function into our ``__main__`` block: + +.. code-block:: python + + import pprint + if __name__ == '__main__': + params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2} + html, encoding = fetch_search_results(**params) + doc = parse_source(html, encoding) + for listing in extract_listings(doc): + listing = add_address(listing) + pprint.pprint(listing) + +.. container:: incremental + + And give the result a whirl: + + .. class:: small + + :: + + (soupenv)$ python mashup.py + {'address': u'123 Some Street, Chapel Hill, NC ...', + 'description': u'3 bedroom 2 bathroom unit is move in ready!' + ... + } + + +One More Step +------------- + +I'm a big fan of walking places. + +.. rst-class:: build + +So I'd like to find an apartment that is located somewhere 'walkable' + +.. rst-class:: build + +There's an API for that! + +.. rst-class:: build + +http://www.walkscore.com/professional/api.php + +.. rst-class:: build + +If you haven't already, sign up for an API key now. + + +Getting a Walk Score +-------------------- + +The API documentation tells us we have to provide lat, lon and address to get +a walk score, along with our API key. + +.. rst-class:: build + +It also tells us we have a choice of XML or JSON output. Let's use JSON + +.. rst-class:: build + +Let's poke at it and see what we get back + +.. rst-class:: build + +Fire up your virtualenv Python interpreter again + + +Making an API Call +------------------ + +:: + + (soupenv)$ python + +.. code-block:: python + + >>> import requests + >>> import json + >>> from pprint import pprint + >>> api_url = 'http://api.walkscore.com/score' + >>> lat, lon = 35.9108986, -79.053783 + >>> addr = '120 E. Cameron Avenue Chapel Hill, NC 27599' + >>> params = {'lat': lat, 'lon', lon, 'address': addr} + >>> params['wsapikey'] = '' + >>> params['format'] = 'json' + >>> resp = requests.get(api_url, params=params) + >>> data = json.loads(resp.text) + >>> if data['status'] == 1: + ... pprint(data) + + +Mash It Up +---------- + +Add a function to ``mashup.py`` that: + +.. rst-class:: build + +* takes a single listing from our craigslist search +* uses the location and address to make a walkscore api call +* adds the description, walkscore and ws_link parameters to the listing +* returns the updated listing + +.. rst-class:: build + +Call the function ``add_walkscore`` + +.. rst-class:: build + +Bolt it into our script's ``__main__`` block where it fits best + + +My Solution +----------- + +.. code-block:: python + + def add_walkscore(listing): + api_url = 'http://api.walkscore.com/score' + apikey = '' + loc = listing['location'] + if listing['address'] == 'unavailable': + return listing + parameters = { + 'lat': loc['data-latitude'], 'lon': loc['data-longitude'], + 'address': listing['address'], 'wsapikey': apikey, + 'format': 'json' + } + resp = requests.get(api_url, params=parameters) + data = json.loads(resp.text) + if data['status'] == 1: + listing['ws_description'] = data['description'] + listing['ws_score'] = data['walkscore'] + listing['ws_link'] = data['ws_link'] + return listing + + +My Results +---------- + +.. code-block:: python + + if __name__ == '__main__': + params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2} + html, encoding = fetch_search_results(**params) + doc = parse_source(html, encoding) + for listing in extract_listings(doc): + listing = add_address(listing) + listing = add_walkscore(listing) + pprint.pprint(listing) + +.. container:: incremental + + Let's try it out:: + + (soupenv)$ python mashup.py + + +Wrap Up +------- + +We've built a simple mashup combining data from three different sources. + +.. rst-class:: build + +As a result we can now make a listing of apartments ranked by the walkability +of their neighborhood. + +.. rst-class:: build + +What other data sources might we use? Check out +http://www.programmableweb.com/apis/directory to see some of the possibilities + + +Addenda +------- + +Altough we do not have class time to do walkthrough examples of using XML-RPC +and SOAP, I have provided exercises in each as an addenda to this session. If +you have the time and the interest, please try them out. + +.. class:: center + +`Web Service API Addenda `_ + + +Homework +-------- + +For your homework this week, you'll be creating a mashup of your own. + +.. rst-class:: build + +Use the programmable web api directory from above as a source of inspiration. + +.. rst-class:: build + +Your mashup should combine at least two sources of data in some way that +tickles your fancy. + +.. rst-class:: build + +Your results need not look pretty. Focus on data acquisition and processing. + + +Submitting Your Homework +------------------------ + +To submit your homework: + +* Create a new python script in ``assignments/session03``. It should be + something I can run with:: + + $ python your_script.py + +* Provide me with a text file describing what you did. Tell me about the + sources you use, how you combine them, what you hoped to achieve. + +* Include any instruction I might need to successfully run your script. + +* Commit your changes to your fork of the repo in github, then open a pull + request. + + +Extra Credit +------------ + +Bonus points if you write unit tests for the elements of your mashup. + diff --git a/slides/presentations/session06.html b/slides/presentations/session06.html new file mode 100644 index 00000000..612ff42f --- /dev/null +++ b/slides/presentations/session06.html @@ -0,0 +1,1658 @@ + + + + + + Session 06 — Internet Programming with Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    +

    +

    +
    +
    + + + +
    +

    Session 06

    +
    + +
    +
    +

    CGI, WSGI and Living Online

    +
    +
    +

    Wherein we discover the gateways to dynamic processes on a server.

    + + + + +
    +
    +
    +

    But First

    +
    +
    +

    Homework Review and Questions

    + + + + +
    +
    +
    +

    Previously

    +
    +
    +
      +
    • You've learned about passing messages back and forth with sockets
    • +
    • You've created a simple HTTP server using sockets
    • +
    • You may even have made your server dynamic by returning the output of a +python script.
    • +
    +
    +

    What if you want to pass information to that script?

    +

    How can you give the script access to information about the HTTP request +itself?

    +
    + + + + +
    +
    +
    +

    Stepping Away: The Environment

    +
    +
    +

    A computer has an environment:

    +
    +

    in *nix, you can see this in a shell:

    +
    $ printenv
    +TERM_PROGRAM=iTerm.app
    +...
    +
    +
    +

    or in Windows at the command prompt:

    +
    C:\> set
    +ALLUSERSPROFILE=C:\ProgramData
    +...
    +
    +
    +
    + + + + +
    +
    +
    +

    Setting The Environment

    +
    +
    +

    This can be manipulated:

    +
    +

    In a bash shell we can do this:

    +
    $ export VARIABLE='some value'
    +$ echo $VARIABLE
    +some value
    +
    +
    +

    or at a Windows command prompt:

    +
    C:\Users\Administrator\> set VARIABLE='some value'
    +C:\Users\Administrator\> echo %VARIABLE%
    +'some value'
    +
    +
    +
    + + + + +
    +
    +
    +

    Viewing the Results

    +
    +
    +

    These new values are now part of the environment

    +
    +

    *nix:

    +
    $ printenv
    +TERM_PROGRAM=iTerm.app
    +...
    +VARIABLE=some value
    +
    +
    +

    Windows:

    +
    C:\> set
    +ALLUSERSPROFILE=C:\ProgramData
    +...
    +VARIABLE='some value'
    +
    +
    +
    + + + + +
    +
    +
    +

    Environment in Python

    +
    +
    +

    We can see this environment in Python, too:

    +
    $ python
    +
    +
    +
    >>> import os
    +>>> print os.environ['VARIABLE']
    +some_value
    +>>> print os.environ.keys()
    +['VERSIONER_PYTHON_PREFER_32_BIT', 'VARIABLE',
    + 'LOGNAME', 'USER', 'PATH', ...]
    +
    +
    + + + + +
    +
    +
    +

    Altering the Environment

    +
    +
    +

    You can alter os environment values while in Python:

    +
    >>> os.environ['VARIABLE'] = 'new_value'
    +>>> print os.environ['VARIABLE']
    +new_value
    +
    +
    +
    +

    But that doesn't change the original value, outside Python:

    +
    >>> ^D
    +
    +$ echo this is the value: $VARIABLE
    +this is the value: some_value
    +<OR>
    +C:\> \Users\Administrator\> echo %VARIABLE%
    +'some value'
    +
    +
    +
    + + + + +
    +
    +
    +

    Lessons Learned

    +
    +
    +
    +
      +
    • Subprocesses inherit their environment from their Parent
    • +
    • Parents do not see changes to environment in subprocesses
    • +
    • In Python, you can actually set the environment for a subprocess explicitly
    • +
    +
    subprocess.Popen(args, bufsize=0, executable=None,
    +                 stdin=None, stdout=None, stderr=None,
    +                 preexec_fn=None, close_fds=False,
    +                 shell=False, cwd=None, env=None, # <-------
    +                 universal_newlines=False, startupinfo=None,
    +                 creationflags=0)
    +
    +
    +
    + + + + +
    +
    +
    +

    CGI - The Web Environment

    +
    +
    +

    CGI is little more than a set of standard environmental variables

    + + + + +
    +
    +
    +

    What is CGI

    +
    +
    +

    First discussed in 1993, formalized in 1997, the current version (1.1) has +been in place since 2004.

    +

    From the preamble:

    + +This memo provides information for the Internet community. It does not +specify an Internet standard of any kind. +
    +RFC 3875 - CGI Version 1.1: http://tools.ietf.org/html/rfc3875
    + + + + +
    +
    +
    +

    Meta-Variables

    +
    +
    +
    4.  The CGI Request . . . . . . . . . . . . . . . . . . . . . . .  10
    +    4.1. Request Meta-Variables . . . . . . . . . . . . . . . . .  10
    +         4.1.1.  AUTH_TYPE. . . . . . . . . . . . . . . . . . . .  11
    +         4.1.2.  CONTENT_LENGTH . . . . . . . . . . . . . . . . .  12
    +         4.1.3.  CONTENT_TYPE . . . . . . . . . . . . . . . . . .  12
    +         4.1.4.  GATEWAY_INTERFACE. . . . . . . . . . . . . . . .  13
    +         4.1.5.  PATH_INFO. . . . . . . . . . . . . . . . . . . .  13
    +         4.1.6.  PATH_TRANSLATED. . . . . . . . . . . . . . . . .  14
    +         4.1.7.  QUERY_STRING . . . . . . . . . . . . . . . . . .  15
    +         4.1.8.  REMOTE_ADDR. . . . . . . . . . . . . . . . . . .  15
    +         4.1.9.  REMOTE_HOST. . . . . . . . . . . . . . . . . . .  16
    +         4.1.10. REMOTE_IDENT . . . . . . . . . . . . . . . . . .  16
    +         4.1.11. REMOTE_USER. . . . . . . . . . . . . . . . . . .  16
    +         4.1.12. REQUEST_METHOD . . . . . . . . . . . . . . . . .  17
    +         4.1.13. SCRIPT_NAME. . . . . . . . . . . . . . . . . . .  17
    +         4.1.14. SERVER_NAME. . . . . . . . . . . . . . . . . . .  17
    +         4.1.15. SERVER_PORT. . . . . . . . . . . . . . . . . . .  18
    +         4.1.16. SERVER_PROTOCOL. . . . . . . . . . . . . . . . .  18
    +         4.1.17. SERVER_SOFTWARE. . . . . . . . . . . . . . . . .  19
    +
    +
    + + + + +
    +
    +
    +

    Running CGI

    +
    +
    +

    You have a couple of options:

    +
    +
      +
    • Python Standard Library CGIHTTPServer
    • +
    • Apache
    • +
    • IIS (on Windows)
    • +
    • Some other HTTP server that implements CGI (lighttpd, ...?)
    • +
    +

    Let's keep it simple by using the Python module

    +
    + + + + +
    +
    +
    +

    Preparations

    +
    +
    +

    In the class resources for this session, you'll find a directory named cgi.

    +
    +

    Make a copy of that folder in your class working directory.

    +

    Windows Users, you may have to edit the first line of +cgi/cgi-bin/cgi_1.py to point to your python executable.

    +
      +
    • Open two terminal windows in this cgi directory
    • +
    • In the first terminal, run python -m CGIHTTPServer
    • +
    • Open a web browser and load http://localhost:8000/
    • +
    • Click on CGI Test 1
    • +
    +
    + + + + +
    +
    +
    +

    Did that work?

    +
    +
    +
      +
    • If nothing at all happens, check your terminal window
    • +
    • Look for this: OSError: [Errno 13] Permission denied
    • +
    • If you see something like that, check permissions for cgi-bin and +cgi_1.py
    • +
    • The file must be executable, the cgi-bin directory needs to be readable +and executable.
    • +
    +
    +

    Remember that you can use the bash chmod command to change permissions +in *nix: chmod a+x cgi-bin/cgi_1.py

    +

    Windows users, use the 'properties' context menu to get to permissions, +just grant 'full'

    +
    + + + + +
    +
    +
    +

    Break It

    +
    +
    +

    Problems with permissions can lead to failure. So can scripting errors

    +
    +
      +
    • Open cgi/cgi-bin/cgi_1.py in an editor
    • +
    • Before where it says cgi.test(), add a single line:
    • +
    +
    1 / 0
    +
    +
    +

    Reload your browser, what happens now?

    +
    + + + + +
    +
    +
    +

    Errors in CGI

    +
    +
    +

    CGI is famously difficult to debug. There are reasons for this:

    +
      +
    • CGI is designed to provide access to runnable processes to the internet
    • +
    • The internet is a wretched hive of scum and villainy
    • +
    • Revealing error conditions can expose data that could be exploited
    • +
    + + + + +
    +
    +
    +

    Viewing Errors in Python CGI

    +
    +
    +

    Back in your editor, add the following lines, just below import cgi:

    +
    +
    import cgitb
    +cgitb.enable()
    +
    +
    +

    Now, reload again.

    +
    + + + + +
    +
    +
    +

    cgitb Output

    +
    +
    +
    +../_images/cgitb_output.png +
    + + + + +
    +
    +
    +

    Repair the Error

    +
    +
    +

    Let's fix the error from our traceback. Edit your cgi_1.py file to match:

    +
    #!/usr/bin/env python
    +import cgi
    +import cgitb
    +
    +cgitb.enable()
    +
    +cgi.test()
    +
    +
    +
    +

    Notice the first line of that script: #!/usr/bin/python.

    +

    This is called a shebang (short for hash-bang)

    +

    It tells the system what executable program to use when running the script.

    +
    + + + + +
    +
    +
    +

    CGI Process Execution

    +
    +
    +

    Servers like CGIHTTPServer run CGI scripts as a system user called +nobody.

    +
    +

    This is just like you calling:

    +
    $ ./cgi_bin/cgi_1.py
    +
    +
    +

    In fact try that now in your second terminal (use the real path), what do +you get?

    +

    Windows folks, you may need C:\>python cgi-bin/cgi_1.py

    +

    Notice what is missing?

    +
    + + + + +
    +
    +
    +

    CGI Process Execution

    +
    +
    +

    There are a couple of important facts about CGI that derive from this:

    +
      +
    • The script must include a shebang so that the system knows how to run +it.
    • +
    • The script must be executable.
    • +
    • The executable named in the shebang will be called as the nobody user.
    • +
    • This is a security feature to prevent CGI scripts from running as a user +with any privileges.
    • +
    • This means that the executable from the script shebang must be one that +anyone can run.
    • +
    + + + + +
    +
    +
    +

    The CGI Environment

    +
    +
    +

    CGI is largely a set of agreed-upon environmental variables.

    +
    +

    We've seen how environmental variables are found in python in +os.environ

    +

    We've also seen that at least some of the variables in CGI are not part +of the system environment.

    +

    Where do they come from?

    +
    + + + + +
    +
    +
    +

    CGI Servers

    +
    +
    +

    Let's find 'em. In a terminal fire up python:

    +
    +
    >>> import CGIHTTPServer
    +>>> CGIHTTPServer.__file__
    +'/big/giant/path/to/lib/python2.6/CGIHTTPServer.py'
    +
    +
    +

    Copy this path and open the file it points to in your text editor

    +
    + + + + +
    +
    +
    +

    Environmental Set Up

    +
    +
    +

    From CGIHTTPServer.py, in the CGIHTTPServer.run_cgi method:

    +
    # Reference: http://hoohoo.ncsa.uiuc.edu/cgi/env.html
    +# XXX Much of the following could be prepared ahead of time!
    +env = {}
    +env['SERVER_SOFTWARE'] = self.version_string()
    +env['SERVER_NAME'] = self.server.server_name
    +env['GATEWAY_INTERFACE'] = 'CGI/1.1'
    +env['SERVER_PROTOCOL'] = self.protocol_version
    +env['SERVER_PORT'] = str(self.server.server_port)
    +env['REQUEST_METHOD'] = self.command
    +...
    +ua = self.headers.getheader('user-agent')
    +if ua:
    +    env['HTTP_USER_AGENT'] = ua
    +...
    +os.environ.update(env)
    +...
    +
    +
    + + + + +
    +
    +
    +

    CGI Scripts

    +
    +
    +

    And that's it, the big secret. The server takes care of setting up the +environment so it has what is needed.

    +
    +

    Now, in reverse. How does the information that a script creates end up in +your browser?

    +

    A CGI Script must print its results to stdout.

    +

    Use the same method as above to import and open the source file for the +cgi module. Note what test does for an example of this.

    +
    + + + + +
    +
    +
    +

    Recap

    +
    +
    +

    What the Server Does:

    +
      +
    • parses the request
    • +
    • sets up the environment, including HTTP and SERVER variables
    • +
    • figures out if the URI points to a CGI script and runs it
    • +
    • builds an appropriate HTTP Response first line ('HTTP/1.1 200 OK\r\n')
    • +
    • appends what comes from the script on stdout and sends that back
    • +
    +

    What the Script Does:

    +
      +
    • names appropriate executable in it's shebang line
    • +
    • uses os.environ to read information from the HTTP request
    • +
    • builds any and all appropriate HTTP Headers (Content-type:, +Content-length:, ...)
    • +
    • prints headers, empty line and script output (body) to stdout
    • +
    + + + + +
    +
    +
    +

    In-Class Exercise I

    +
    +
    +

    You've seen the output from the cgi.test() method from the cgi module. +Let's make our own version of this.

    +
    +
      +
    • In the directory cgi-bin you will find the file cgi_2.py.
    • +
    • Open that file in your editor.
    • +
    • The script contains some html with text naming elements of the CGI +environment.
    • +
    • You should use the values in os.environ to fill in the blanks.
    • +
    • You should be able to view the results of your work by loading +http://localhost:8000/ and clicking on Exercise One
    • +
    +

    GO

    +
    + + + + +
    +
    +
    +

    Getting Data from Users

    +
    +
    +

    All this is well and good, but where's the dynamic stuff?

    +
    +

    It'd be nice if a user could pass form data to our script for it to use.

    +

    In HTTP, these types of inputs show up in the URL query (the part after +the ?):

    +
    http://myhost.com/script.py?a=23&b=37
    +
    +
    +

    You've seen this before, right? In your Pyramid learning journal?

    +

    It's how we got the id of an entry to the edit form.

    +
    + + + + +
    +
    +
    +

    Form Data in CGI

    +
    +
    +

    In the cgi module, we get access to this with the FieldStorage class:

    +
    import cgi
    +
    +form = cgi.FieldStorage()
    +stringval = form.getvalue('a', None)
    +listval = form.getlist('b')
    +
    +
    +
      +
    • The values in the FieldStorage are always strings
    • +
    • getvalue allows you to return a default, in case the field isn't present
    • +
    • getlist always returns a list: empty, one-valued, or as many values as +are present
    • +
    + + + + +
    +
    +
    +

    In-Class Exercise II

    +
    +
    +

    Let's create a dynamic adding machine.

    +
      +
    • In the cgi-bin directory you'll find cgi_sums.py.
    • +
    • In the index.html file in the cgi directory, the third link leads to +this file.
    • +
    • You will use the structure of that link, and what you learned just now about +cgi.FieldStorage.
    • +
    • Complete the cgi script in cgi_sums.py so that the result of adding all +operands sent via the url query is returned.
    • +
    • Return the results as plain text, with the appropriate Content-Type +header.
    • +
    + + + + +
    +
    +
    +

    My Solution

    +
    +
    +
    form = cgi.FieldStorage()
    +operands = form.getlist('operand')
    +total = 0
    +for operand in operands:
    +    try:
    +        value = int(operand)
    +    except ValueError:
    +        value = 0
    +    total += value
    +
    +output = str(total)
    +
    +print "Content-Type: text/plain"
    +print "Content-Length: %s" % len(output)
    +print
    +print output
    +
    +
    + + + + +
    +
    +
    +

    Break Time

    +
    +
    +

    Let's take a break here, before continuing

    + + + + +
    +
    +
    +

    WSGI

    +
    +
    + + + + +
    +
    +
    +

    CGI Problems

    +
    +
    +

    CGI is great, but there are problems:

    +
    +
      +
    • Code is executed in a new process
    • +
    • Every call to a CGI script starts a new process on the server
    • +
    • Starting a new process is expensive in terms of server resources
    • +
    • Especially for interpreted languages like Python
    • +
    +

    How do we overcome this problem?

    +
    + + + + +
    +
    +
    +

    Alternatives to CGI

    +
    +
    +

    The most popular approach is to have a long-running process inside the +server that handles CGI scripts.

    +
    +

    FastCGI and SCGI are existing implementations of CGI in this fashion.

    +

    The PHP scripting language works in much the same way.

    +

    The Apache module mod_python offers a similar capability for Python +code.

    +
      +
    • Each of these options has a specific API
    • +
    • None are compatible with each-other
    • +
    • Code written for one is not portable to another
    • +
    +

    This makes it much more difficult to share resources

    +
    + + + + +
    +
    +
    +

    A Solution

    +
    +
    +

    Enter WSGI, the Web Server Gateway Interface.

    +
    +

    Other alternatives are specific implementations of the CGI standard.

    +

    WSGI is itself a new standard, not an implementation.

    +

    WSGI is generalized to describe a set of interactions.

    +

    Developers can write WSGI-capable apps and deploy them on any WSGI server.

    +

    Read the WSGI spec: http://www.python.org/dev/peps/pep-0333

    +
    + + + + +
    +
    +
    +

    Apps and Servers

    +
    +
    +

    WSGI consists of two parts, a server and an application.

    +
    +
    +

    A WSGI Server must:

    +
      +
    • set up an environment, much like the one in CGI
    • +
    • provide a method start_response(status, headers, exc_info=None)
    • +
    • build a response body by calling an application, passing +environment and start_response as args
    • +
    • return a response with the status, headers and body
    • +
    +
    +
    +

    A WSGI Appliction must:

    +
      +
    • Be a callable (function, method, class)
    • +
    • Take an environment and a start_response callable as arguments
    • +
    • Call the start_response method.
    • +
    • Return an iterable of 0 or more strings, which are treated as the +body of the response.
    • +
    +
    +
    + + + + +
    +
    +
    +

    Simplified WSGI Server

    +
    +
    +
    from some_application import simple_app
    +
    +def build_env(request):
    +    # put together some environment info from the reqeuest
    +    return env
    +
    +def handle_request(request, app):
    +    environ = build_env(request)
    +    iterable = app(environ, start_response)
    +    for data in iterable:
    +        # send data to client here
    +
    +def start_response(status, headers):
    +    # start an HTTP response, sending status and headers
    +
    +# listen for HTTP requests and pass on to handle_request()
    +serve(simple_app)
    +
    +
    + + + + +
    +
    +
    +

    Simple WSGI Application

    +
    +
    +

    Where the simplified server above is not functional, this is a complete +app:

    +
    def application(environ, start_response)
    +    status = "200 OK"
    +    body = "Hello World\n"
    +    response_headers = [('Content-type', 'text/plain'),
    +                        ('Content-length', len(body))]
    +    start_response(status, response_headers)
    +    return [body]
    +
    +
    + + + + +
    +
    +
    +

    WSGI Middleware

    +
    +
    +

    A third part of the puzzle is something called WSGI middleware

    +
    +
      +
    • Middleware implements both the server and application interfaces
    • +
    • Middleware acts as a server when viewed from an application
    • +
    • Middleware acts as an application when viewed from a server
    • +
    +
    +../_images/wsgi_middleware_onion.png +
    +
    + + + + +
    +
    +
    +

    WSGI Data Flow

    +
    +
    +
    +
    +

    WSGI Servers:

    +

    HTTP <---> WSGI

    +
    +
    +

    WSGI Applications:

    +

    WSGI <---> app code

    +
    +
    + + + + +
    +
    +
    +

    The WSGI Stack

    +
    +
    +

    The WSGI Stack can thus be expressed like so:

    +

    HTTP <---> WSGI <---> app code

    + + + + +
    +
    +
    +

    Using wsgiref

    +
    +
    +

    The Python standard lib provides a reference implementation of WSGI:

    +
    +../_images/wsgiref_flow.png +
    + + + + +
    +
    +
    +

    Apache mod_wsgi

    +
    +
    +

    You can also deploy with Apache as your HTTP server, using mod_wsgi:

    +
    +../_images/mod_wsgi_flow.png +
    + + + + +
    +
    +
    +

    Proxied WSGI Servers

    +
    +
    +

    Finally, it is also common to see WSGI apps deployed via a proxied WSGI +server:

    +
    +../_images/proxy_wsgi.png +
    + + + + +
    +
    +
    +

    The WSGI Environment

    +
    +
    +
    +
    REQUEST_METHOD:
    +
    The HTTP request method, such as "GET" or "POST". This cannot ever be an +empty string, and so is always required.
    +
    SCRIPT_NAME:
    +
    The initial portion of the request URL's "path" that corresponds to the +application object, so that the application knows its virtual "location". +This may be an empty string, if the application corresponds to the "root" of +the server.
    +
    PATH_INFO:
    +
    The remainder of the request URL's "path", designating the virtual +"location" of the request's target within the application. This may be an +empty string, if the request URL targets the application root and does not +have a trailing slash.
    +
    QUERY_STRING:
    +
    The portion of the request URL that follows the "?", if any. May be empty or +absent.
    +
    CONTENT_TYPE:
    +
    The contents of any Content-Type fields in the HTTP request. May be empty or +absent.
    +
    + + + + +
    +
    +
    +

    The WSGI Environment

    +
    +
    +
    +
    CONTENT_LENGTH:
    +
    The contents of any Content-Length fields in the HTTP request. May be empty +or absent.
    +
    SERVER_NAME, SERVER_PORT:
    +
    When combined with SCRIPT_NAME and PATH_INFO, these variables can be used to +complete the URL. Note, however, that HTTP_HOST, if present, should be used +in preference to SERVER_NAME for reconstructing the request URL. See the URL +Reconstruction section below for more detail. SERVER_NAME and SERVER_PORT +can never be empty strings, and so are always required.
    +
    SERVER_PROTOCOL:
    +
    The version of the protocol the client used to send the request. Typically +this will be something like "HTTP/1.0" or "HTTP/1.1" and may be used by the +application to determine how to treat any HTTP request headers. (This +variable should probably be called REQUEST_PROTOCOL, since it denotes the +protocol used in the request, and is not necessarily the protocol that will +be used in the server's response. However, for compatibility with CGI we +have to keep the existing name.)
    +
    + + + + +
    +
    +
    +

    The WSGI Environment

    +
    +
    +
    +
    HTTP_ Variables:
    +
    Variables corresponding to the client-supplied HTTP request headers (i.e., +variables whose names begin with "HTTP_"). The presence or absence of these +variables should correspond with the presence or absence of the appropriate +HTTP header in the request.
    +
    +

    Seem Familiar?

    + + + + +
    +
    +
    +

    In-Class Exercise III

    +
    +
    +

    Let's start simply. We'll begin by repeating our first CGI exercise in WSGI

    +
      +
    • Find the wsgi directory in the class resources. Copy it to your working +directory.
    • +
    • Open the file wsgi_1.py in your text editor.
    • +
    • We will fill in the missing values using the wsgi environ, just as we +use os.environ in cgi
    • +
    +

    But First

    + + + + +
    +
    +
    +

    Orientation

    +
    +
    +
    if __name__ == '__main__':
    +    from wsgiref.simple_server import make_server
    +    srv = make_server('localhost', 8080, application)
    +    srv.serve_forever()
    +
    +
    +
    +

    Note that we pass our application function to the server factory

    +

    We don't have to write a server, wsgiref does that for us.

    +

    In fact, you should never have to write a WSGI server.

    +
    + + + + +
    +
    +
    +

    Orientation

    +
    +
    +
    def application(environ, start_response):
    +    response_body = body % (
    +         environ.get('SERVER_NAME', 'Unset'), # server name
    +            ...
    +         )
    +    status = '200 OK'
    +    response_headers = [('Content-Type', 'text/html'),
    +                        ('Content-Length', str(len(response_body)))]
    +    start_response(status, response_headers)
    +    return [response_body]
    +
    +
    +
    +

    We do not define start_response, the application does that.

    +

    We are responsible for determining the HTTP status.

    +
    + + + + +
    +
    +
    +

    Running a WSGI Script

    +
    +
    +

    You can run this script with python:

    +
    $ python wsgi_1.py
    +
    +
    +
    +

    This will start a wsgi server. What host and port will it use?

    +

    Point your browser at http://localhost:8080/. Did it work?

    +

    Go ahead and fill in the missing bits. Use the environ passed into +application

    +
    + + + + +
    +
    +
    +

    Some Tips

    +
    +
    +

    WSGI is a long-running process.

    +
    +

    The file you are editing is not reloaded after you edit it.

    +

    You'll need to quit and re-run the script between edits.

    +

    Notice the use of pprint.pprint, check your terminal for useful output.

    +
    + + + + +
    +
    +
    +

    A WSGI Application

    +
    +
    +

    So now we've learned a bit about the WSGI specification and how a WSGI +application can get data that comes in via an HTTP request.

    +
    +

    Let's create a multi-page wsgi application.

    +

    It will serve a small database of python books.

    +

    The database (with a very simple api) can be found in wsgi/bookdb.py

    +
      +
    • We'll need a listing page that shows the titles of all the books
    • +
    • Each title will link to a details page for that book
    • +
    • The details page for each book will display all the information and have +a link back to the list
    • +
    +
    + + + + +
    +
    +
    +

    Some Questions to Ponder

    +
    +
    +

    When viewing our first wsgi app, do we see the name of the wsgi application +script anywhere in the URL?

    +
    +

    In our wsgi application script, how many applications did we actually have?

    +

    How are we going to serve different types of information out of a single +application?

    +
    + + + + +
    +
    +
    +

    Dispatch

    +
    +
    +

    We have to write an app that will map our incoming request path to some code +that can handle that request.

    +
    +

    This process is called dispatch. There are many possible approaches.

    +

    You've seen one approach in the Learning Journal you built with Pyramid.

    +

    Let's begin by designing this piece of our app.

    +

    Open bookapp.py from the wsgi folder. We'll do our work here.

    +
    + + + + +
    +
    +
    +

    PATH

    +
    +
    +

    The wsgi environment gives us access to PATH_INFO.

    +
    +

    This value is the URI from the client's HTTP request.

    +

    We can design the URLs that our app will use to assist us in routing.

    +

    Let's declare that any request for / will map to the list page.

    +
    +

    We can also say that the URL for a book will look like this:

    +
    http://localhost:8080/book/<identifier>
    +
    +
    +
    +
    + + + + +
    +
    +
    +

    Writing resolve_path

    +
    +
    +

    Let's write a function, called resolve_path in our application file.

    +
      +
    • It should take the PATH_INFO value from environ as an argument.
    • +
    • It should return the function that will be called.
    • +
    • It should also return any arguments needed to call that function.
    • +
    • This implies of course that the arguments should be part of the PATH
    • +
    + + + + +
    +
    +
    +

    My Solution

    +
    +
    +
    def resolve_path(path):
    +    urls = [(r'^$', books),
    +            (r'^book/(id[\d]+)$', book)]
    +    matchpath = path.lstrip('/')
    +    for regexp, func in urls:
    +        match = re.match(regexp, matchpath)
    +        if match is None:
    +            continue
    +        args = match.groups([])
    +        return func, args
    +    # we get here if no url matches
    +    raise NameError
    +
    +
    + + + + +
    +
    +
    +

    Application Updates

    +
    +
    +

    We need to hook our new dispatch function into the application.

    +
      +
    • The path should be extracted from environ.
    • +
    • The dispatch function should be used to get a function and arguments
    • +
    • The body to return should come from calling that function with those +arguments
    • +
    • If an error is raised by calling the function, an appropriate response +should be returned
    • +
    • If the router raises a NameError, the application should return a 404 +response
    • +
    + + + + +
    +
    +
    +

    My Solution

    +
    +
    +
    def application(environ, start_response):
    +    headers = [("Content-type", "text/html")]
    +    try:
    +        path = environ.get('PATH_INFO', None)
    +        if path is None:
    +            raise NameError
    +        func, args = resolve_path(path)
    +        body = func(*args)
    +        status = "200 OK"
    +    except NameError:
    +        status = "404 Not Found"
    +        body = "<h1>Not Found</h1>"
    +    except Exception:
    +        status = "500 Internal Server Error"
    +        body = "<h1>Internal Server Error</h1>"
    +    finally:
    +        headers.append(('Content-length', str(len(body))))
    +        start_response(status, headers)
    +        return [body]
    +
    +
    + + + + +
    +
    +
    +

    Test Your Work

    +
    +
    +

    Once you've got your script settled, run it:

    +
    $ python bookapp.py
    +
    +
    +
    +

    Then point your browser at http://localhost:8080/

    +
      +
    • http://localhost/book/id3
    • +
    • http://localhost/book/id73/
    • +
    • http://localhost/sponge/damp
    • +
    +

    Did that all work as you would have expected?

    +
    + + + + +
    +
    +
    +

    Building the Book List

    +
    +
    +

    The function books should return an html list of book titles where each +title is a link to the detail page for that book

    +
      +
    • You'll need all the ids and titles from the book database.
    • +
    • You'll need to build a list in HTML using this information
    • +
    • Each list item should have the book title as a link
    • +
    • The href for the link should be of the form /book/<id>
    • +
    + + + + +
    +
    +
    +

    My Solution

    +
    +
    +
    def books():
    +    all_books = DB.titles()
    +    body = ['<h1>My Bookshelf</h1>', '<ul>']
    +    item_template = '<li><a href="/book/{id}">{title}</a></li>'
    +    for book in all_books:
    +        body.append(item_template.format(**book))
    +    body.append('</ul>')
    +    return '\n'.join(body)
    +
    +
    + + + + +
    +
    +
    +

    Test Your Work

    +
    +
    +

    Quit and then restart your application script:

    +
    $ python bookapp.py
    +
    +
    +
    +
    +

    Then reload the root of your application:

    +
    http://localhost:8080/
    +
    +
    +
    +

    You should see a nice list of the books in the database. Do you?

    +

    Click on a link to view the detail page. Does it load without error?

    +
    + + + + +
    +
    +
    +

    Showing Details

    +
    +
    +

    The next step of course is to polish up those detail pages.

    +
    +
      +
    • You'll need to retrieve a single book from the database
    • +
    • You'll need to format the details about that book and return them as HTML
    • +
    • You'll need to guard against ids that do not map to books
    • +
    +

    In this last case, what's the right HTTP response code to send?

    +
    + + + + +
    +
    +
    +

    My Solution

    +
    +
    +
    def book(book_id):
    +    page = """
    +<h1>{title}</h1>
    +<table>
    +    <tr><th>Author</th><td>{author}</td></tr>
    +    <tr><th>Publisher</th><td>{publisher}</td></tr>
    +    <tr><th>ISBN</th><td>{isbn}</td></tr>
    +</table>
    +<a href="/">Back to the list</a>
    +"""
    +    book = DB.title_info(book_id)
    +    if book is None:
    +        raise NameError
    +    return page.format(**book)
    +
    +
    + + + + +
    +
    +
    +

    Revel in Your Success

    +
    +
    +

    Quit and restart your script one more time

    +
    +

    Then poke around at your application and see the good you've made

    +

    And your application is portable and sharable

    +

    It should run equally well under any wsgi server

    +
    + + + + +
    +
    +
    +

    A Few Steps Further

    +
    +
    +

    Next steps for an app like this might be:

    +
      +
    • Create a shared full page template and incorporate it into your app
    • +
    • Improve the error handling by emitting error codes other than 404 and 500
    • +
    • Swap out the basic backend here with a different one, maybe a Web Service?
    • +
    • Think about ways to make the application less tightly coupled to the pages +it serves
    • +
    + + + + +
    +
    +
    +

    Homework

    +
    +
    +
    +

    For your homework this week, you'll be creating a wsgi application of your +own.

    +
    +

    You'll create an online calculator that can perform several operations

    +

    You'll need to support:

    +
      +
    • Addition
    • +
    • Subtraction
    • +
    • Multiplication
    • +
    • Division
    • +
    +
    +

    Your users should be able to send appropriate requests and get back +proper responses:

    +
    http://localhost:8080/multiply/3/5  => 15
    +http://localhost:8080/add/23/42     => 65
    +http://localhost:8080/divide/6/0    => HTTP "400 Bad Request"
    +
    +
    +
    +
    +
    + + + + +
    +
    +
    +

    Submitting Your Homework

    +
    +
    +
    +

    To submit your homework:

    +
      +
    • Create a new github repository. Call it wsgi-calc.
    • +
    • Add a python script to it called calculator.py.
    • +
    • Your script should be runnable using $ python calculator.py
    • +
    • When the script is running, I should be able to view your application in +my browser.
    • +
    • I should be able to see a home page that explains how to perform +calculations.
    • +
    +
    +

    Your repository should include a README.md file.

    +

    Include all instructions I need to successfully run and view your +script.

    +

    When you are done, send Maria and I an email with a link to your +repository.

    +
    +
    + + + + +
    +
    +
    +

    Wrap-Up

    +
    +
    +

    For educational purposes, you might wish to take a look at the source code for +the wsgiref module. It's the canonical example of a simple wsgi server

    +
    >>> import wsgiref
    +>>> wsgiref.__file__
    +'/full/path/to/your/copy/of/wsgiref.py'
    +...
    +
    +
    +

    See you Next Time

    + + + + +
    +
    + + + + +
    +

    <Thank You!>

    +

     

    +
    +

    + +

    +
    + + + +
    + + + + \ No newline at end of file diff --git a/slides/presentations/session07.html b/slides/presentations/session07.html new file mode 100644 index 00000000..8caaac66 --- /dev/null +++ b/slides/presentations/session07.html @@ -0,0 +1,1864 @@ + + + + + + Session 07 — Internet Programming with Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    +

    +

    +
    +
    + + + +
    +

    Session 07

    +
    + +
    +
    +

    Scraping, APIs and Mashups

    +
    +
    +

    Wherein we learn how to make order from the chaos of the wild internet.

    + + + + +
    +
    +
    +

    A Dilemma

    +
    +
    +

    The internet makes a vast quantity of data available.

    +
    +

    But not always in the form or combination you want.

    +

    It would be nice to be able to combine data from different sources to +create meaning.

    +
    + + + + +
    +
    +
    +

    The Big Question

    +
    +
    +

    But How?

    + + + + +
    +
    +
    +

    The Big Answer

    +
    +
    +

    Mashups

    + + + + +
    +
    +
    +

    Mashups

    +
    +
    +

    A mashup is:

    +
    a web page, or web application, that uses and combines data, presentation
    +or functionality from two or more sources to create new services.
    +
    +-- `wikipedia <http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)>`_
    +
    +
    + + + + +
    +
    +
    +

    Data Sources

    +
    +
    +

    The key to mashups is the idea of data sources.

    +
    +

    These come in many flavors:

    +
      +
    • Simple websites with data in HTML
    • +
    • Web services providing structured data
    • +
    • Web services providing tranformative service (geocoding)
    • +
    • Web services providing presentation (mapping)
    • +
    +
    + + + + +
    +
    +
    +

    Web Scraping

    +
    +
    +
    +

    It would be nice if all online data were available in well-structured formats.

    +
    +

    The reality is that much data is available only in HTML.

    +

    Still we can get at it, with some effort.

    +

    By scraping the data from the web pages.

    +
    +
    + + + + +
    +
    +
    +

    HTML, Ideally

    +
    +
    +
    <!DOCTYPE html>
    +<html>
    +  <head>
    +  </head>
    +  <body>
    +    <p>A nice clean paragraph</p>
    +    <p>And another nice clean paragraph</p>
    +  </body>
    +</html>
    +
    +
    + + + + +
    +
    +
    +

    HTML... IRL

    +
    +
    +
    <html>
    + <form>
    +  <table>
    +   <td><input name="input1">Row 1 cell 1
    +   <tr><td>Row 2 cell 1
    +  </form>
    +  <td>Row 2 cell 2<br>This</br> sure is a long cell
    + </body>
    +</html>
    +
    +
    + + + + +
    +
    +
    +

    FFFFFFFFFUUUUUUUUUUUUU

    +
    + +
    +
    +

    The Law of The Internet

    +
    +
    +

    "Be strict in what you send and tolerant in what you receive"

    + + + + +
    +
    +
    +

    Taming the Mess

    +
    +
    +

    Luckily, there are tools to help with this.

    +
    +

    In python there are several candidates, but I like BeautifulSoup.

    +

    BeautifulSoup is a great tool, but it's not in the Standard Library.

    +

    We'll need to install it.

    +

    Create a virtualenv to do so:

    +
    $ virtualenv soupenv
    +...
    +$ source soupenv/bin/activate
    +
    +
    +

    (remember, for Windows users that should be soupenv/Scripts/activate)

    +
    + + + + +
    +
    +
    +

    Install BeautifulSoup

    +
    +
    +

    Once the virtualenv is activated, you can simply use pip or easy_install to +install the libraries you want:

    +
    source
    +
    +(soupenv)$ pip install beautifulsoup4
    +
    +
    + + + + +
    +
    +
    +

    Choose a Parsing Engine

    +
    +
    +

    BeautifulSoup is built to use the Python HTMLParser.

    +
      +
    • Batteries Included. It's already there
    • +
    • It's not great, especially before Python 2.7.3
    • +
    +
    +

    BeautifulSoup also supports using other parsers.

    +

    There are two good choices: lxml and html5lib.

    +

    lxml is better, but much harder to install. Let's use html5lib.

    +
    + + + + +
    +
    +
    +

    Install a Parsing Engine

    +
    +
    +

    Again, this is pretty simple:

    +
    (soupenv)$ pip install html5lib
    +
    +
    +
    +

    Once installed, BeautifulSoup will choose it automatically.

    +

    BeautifulSoup will choose the "best" available.

    +

    You can specify the parser if you need to for some reason.

    +
    + + + + +
    +
    +
    +

    Install Requests

    +
    +
    +

    Python provides tools for opening urls and communicating with servers. It's +spread across the urllib and urllib2 packages.

    +
    +

    These packages have pretty unintuitive APIs.

    +

    The requests library is becoming the de-facto standard for this type of +work. Let's install it too.

    +
    (soupenv)$ pip install requests
    +
    +
    +
    + + + + +
    +
    +
    +

    Our Class Mashup

    +
    +
    +

    We're going to explore some tools for making a mashup today

    +
    +

    We'll be starting by scraping ZIP codes for Seattle

    +

    Then we'll choose one of them and look up restaurant health code data for +that ZIP code

    +

    Then, we'll look up the geographic location of those zipcodes using Google

    +

    Open a new file in your editor: mashup.py.

    +
    + + + + +
    +
    +
    +

    Examine the Source

    +
    +
    +

    Craigslist doesn't have an api, just a website, so we'll need to dig a bit

    +

    By going to the website and playing with the form there, we can derive a +formula for a search URL

    +
      +
    • Base URL: http://seattle.craigslist.org/search/apa
    • +
    • keywords: query=keyword+values+here
    • +
    • price: minAsk=NNN maxAsk=NNN
    • +
    • bedrooms: bedrooms=N (N in range 1-8)
    • +
    +

    We'll make an HTTP request with these parameters

    + + + + +
    +
    +
    +

    Opening URLs with Requests

    +
    +
    +

    In requests, each HTTP method has a module-level function:

    +
      +
    • GET == requests.get(url, **kwargs)
    • +
    • POST == requests.post(url, **kwargs)
    • +
    • ...
    • +
    +

    kwargs represent other parts of an HTTP request:

    +
      +
    • params: a dict of url parameters (?foo=bar&baz=bim)
    • +
    • headers: a dict of headers to send with the request
    • +
    • data: the body of the request, if any (form data for POST goes here)
    • +
    • ...
    • +
    + + + + +
    +
    +
    +

    Getting Responses with Requests

    +
    +
    +

    The return value from one of these functions is a response which provides:

    +
      +
    • response.status_code: see the HTTP Status Code returned
    • +
    • response.ok: True if response.status_code is not an error
    • +
    • response.raise_for_status(): call to raise a python error if it is
    • +
    • response.headers: The headers sent from the server
    • +
    • response.text: Body of the response, decoded to unicode
    • +
    • response.encoding: The encoding used to decode
    • +
    • response.content: The original encoded response body as bytes
    • +
    +

    requests documentation: http://docs.python-requests.org/en/latest/

    + + + + +
    +
    +
    +

    Fetch Search Results

    +
    +
    +

    We'll start by writing a function fetch_search_results

    +
      +
    • It will accept one keyword argument for each of the possible query values
    • +
    • It will build a dictionary of request query parameters from incoming keywords
    • +
    • It will make a request to the craigslist server using this query
    • +
    • It will return the body of the response if there is no error
    • +
    • It will raise an error if there is a problem with the response
    • +
    +

    Try writing this function. Put it in mashup.py

    + + + + +
    +
    +
    +

    My Solution

    +
    +
    +

    Here's the one I created:

    +
    import requests
    +
    +def fetch_search_results(
    +    query=None, minAsk=None, maxAsk=None, bedrooms=None
    +):
    +    incoming = locals().copy()
    +    base = 'http://seattle.craigslist.org/search/apa'
    +    search_params = dict(
    +        [(key, val) for key, val in incoming.items()
    +                    if val is not None])
    +    if not search_params:
    +        raise ValueError("No valid keywords")
    +
    +    resp = requests.get(base, params=search_params, timeout=3)
    +    resp.raise_for_status() #<- no-op if status==200
    +    return resp.content, resp.encoding
    +
    +
    + + + + +
    +
    +
    +

    Parse the Results

    +
    +
    +

    Next, we need a function parse_source to set up HTML for scraping. It will +need to:

    +
      +
    • Take the response body from the previous method (or some other source)
    • +
    • Parse it using BeautifulSoup
    • +
    • Return the parsed object for further processing
    • +
    +

    Before you start, a word about parsing HTML with BeautifulSoup

    + + + + +
    +
    +
    +

    Parsing HTML with BeautifulSoup

    +
    +
    +

    The BeautifulSoup object can be instantiated with a string or a file-like +object as the sole argument:

    +
    from bs4 import BeautifulSoup
    +parsed = BeautifulSoup('<h1>Some HTML</h1>')
    +
    +fh = open('a_page.html', 'r')
    +parsed = BeautifulSoup(fh)
    +
    +page = urllib2.urlopen('http://site.com/page.html')
    +parsed = BeautifulSoup(page)
    +
    +
    +

    You might want to open the documentation as reference +(http://www.crummy.com/software/BeautifulSoup/bs4/doc)

    + + + + +
    +
    +
    +

    My Solution

    +
    +
    +

    Take a shot at writing this new function in mashup.py

    +
    # add this import at the top
    +from bs4 import BeautifulSoup
    +
    +# then add this function lower down
    +def parse_source(html, encoding='utf-8'):
    +    parsed = BeautifulSoup(html, from_encoding=encoding)
    +    return parsed
    +
    +
    + + + + +
    +
    +
    +

    Put It Together

    +
    +
    +

    We'll need to make our script do something when run.

    +
    if __name__ == '__main__':
    +    # do something
    +
    +
    +
      +
    • Fetch a search results page
    • +
    • Parse the resulting HTML
    • +
    • For now, print out the results so we can see what we get
    • +
    +
    +

    Use the prettify method on a BeautifulSoup object:

    +
    print parsed.prettify()
    +
    +
    +
    + + + + +
    +
    +
    +

    My Solution

    +
    +
    +

    Try to come up with the proper code on your own. Add it to mashup.py

    +
    if __name__ == '__main__':
    +    html, encoding = fetch_search_results(
    +        minAsk=500, maxAsk=1000, bedrooms=2
    +    )
    +    doc = parse_source(html, encoding)
    +    print doc.prettify(encoding=encoding)
    +
    +
    + + + + +
    +
    +
    +

    Test Your Work

    +
    +
    +

    Assuming your virtualenv is still active, you should be able to execute the +script.

    +
    (soupenv)$ python mashup.py
    +<!DOCTYPE html>
    +<html class="nojs">
    + <head>
    +  <title>
    +   seattle apts/housing for rent classifieds  - craigslist
    +  </title>
    +...
    +
    +
    + + + + +
    +
    +
    +

    Preserve the Results

    +
    +
    +

    Try it again, this time redirect the output to a local file, so we can use +it without needing to hit the craiglist servers each time:

    +
    (soupenv)$ python mashup.py > craigslist_results.html
    +
    +
    + + + + +
    +
    +
    +

    Finding The Needle

    +
    +
    +

    Next we find the bits of this pile of HTML that matter to us.

    +

    Open your html file in a browser and take a look (w/ dev tools).

    +

    We'll want to find:

    +
      +
    • The HTML element that contains a single listing
    • +
    • The source of location data, listings without location should be abandoned
    • +
    • The description of a listing
    • +
    • The link to a full listing page on craigslist
    • +
    • Relevant price or size data.
    • +
    + + + + +
    +
    +
    +

    Pulling it Out

    +
    +
    +

    We can extract this information now. In BeautifulSoup:

    +
      +
    • All HTML elements (including the parsed document itself) are tags
    • +
    • A tag can be searched using its find_all method
    • +
    • This searches the descendents of the tag on which it is called.
    • +
    • It takes arguments which act as filters on the search results
    • +
    +
    +

    like so:

    +
    +
    +class small
    +
    + +
    tag.find_all(name, attrs, recursive, text, limit, **kwargs)
    +
    +
    +
    + + + + +
    +
    +
    +

    Searching by CSS Class

    +
    +
    +

    The items we are looking for are p tags which have the CSS class +row:

    +

    find_all supports keyword arguments. If the keyword you use isn't one of +the listed arguments, it is treated as an attribute

    +

    In Python, class is a reserved word, so we can't use it as a keyword, but +you can use class_!

    +
    parsed.find_all('p', class_='row')
    +
    +
    + + + + +
    +
    +
    +

    Try It Out

    +
    +
    +

    Let's fire up a python interpreter and get our hands dirty here:

    +
    (soupenv)$ python
    +
    +
    +
    >>> html = open('craigslist_results.html', 'r').read()
    +>>> from bs4 import BeautifulSoup
    +>>> parsed = BeautifulSoup(html)
    +>>> listings = parsed.find_all('p', class_='row')
    +>>> len(listings)
    +100
    +
    +
    +

    That sounds about right. Let's see if we can get only those with location +data.

    + + + + +
    +
    +
    +

    Filtering Tricks

    +
    +
    +

    Attribute filters given a True value match tags with that attribute

    +

    Location data was in the data-latitude and data-longitude attributes.

    +
    >>> location_attrs = {
    +...     'data-longitude': True,
    +...     'data-latitude': True}
    +>>> locatable = parsed.find_all(
    +...     'p', class_='row', attrs=location_attrs)
    +>>> len(locatable)
    +43
    +
    +
    +

    Great. That worked nicely

    + + + + +
    +
    +
    +

    Parsing a Row

    +
    +
    +

    Now that we have the rows we want, we need to parse them. We want to preserve:

    +
      +
    • Location data (latitude and longitude)
    • +
    • Source link (to craiglist detailed listing)
    • +
    • Description text
    • +
    • Price and size data
    • +
    +

    Which parts of a single row contain each of these elements?

    + + + + +
    +
    +
    +

    Extracting Location

    +
    +
    +

    Location data is in the data- attributes we used to filter rows.

    +
    +

    We can read the HTML attributes of a 'tag' easily, using attrs:

    +
    >>> row1 = locatable[0]
    +>>> row1.attrs
    +{u'data-pid': u'3949023084', u'data-latitude': u'35.8625743108992',
    + u'class': [u'row'], u'data-longitude': u'-78.6232739959049'}
    +>>> lat = row1.attrs.get('data-latitude', None)
    +>>> lon = row1.attrs.get('data-longitude', None)
    +>>> print lat, lon
    +46.9989830869194 -122.847250593816
    +
    +
    +
    + + + + +
    +
    +
    +

    Extracting Description and Link

    +
    +
    +

    Where find_all will find many elements, find will only find the first +that matches the filters you provide.

    +
    +

    Our targets are in the first a tag in the pl span inside our row:

    +
    >>> link = row1.find('span', class_='pl').find('a')
    +
    +
    +
    +
    +

    The link path will be in the attrs:

    +
    >>> path = link.attrs['href']
    +
    +
    +
    +
    +

    Text contained inside tags is in the string property:

    +
    >>> description = link.string.strip()
    +
    +
    +
    + + + + +
    +
    +
    +

    Extracting Price and Size

    +
    +
    +

    Both price and size are held in the l2 span:

    +
    >>> l2 = row1.find('span', class_='l2')
    +
    +
    +
    +

    Price, conveniently, is in it's own container:

    +
    >>> price_span = l2.find('span', class_='price')
    +>>> price = price_span.string.strip()
    +
    +
    +
    +

    But the size element is not. It is a standalone text node.

    +

    Try finding it by reading the string property of our l2 tag.

    + + + + +
    +
    +
    +

    Simple Navigation and Text

    +
    +
    +

    We can get to a simple text node by navigating there.

    +

    You can navigate up, down and across document nodes.

    +
    +

    We already have the price span, the size text node is next at the same +level:

    +
    >>> size = price_span.next_sibling.strip(' \n-/')
    +>>> size
    +u'2br - 912ft\xb2'
    +
    +
    +
    +

    You may have noticed that we keep using strip. There are two reasons for +this.

    + + + + +
    +
    +
    +

    The NavigableString Element

    +
    +
    +

    The most obvious reason is that we don't want extra whitespace.

    +

    The second reason is more subtle. The values returned by string are +not simple unicode strings

    +
    +

    They are actually instances of a class called NavigableString:

    +
    >>> price_span.next_sibling.__class__
    +<class 'bs4.element.NavigableString'>
    +
    +
    +
    +

    Calling strip or casting them to unicode converts them, saving memory

    + + + + +
    +
    +
    +

    Put It All Together

    +
    +
    +

    Okay, a challenge. Combine everything we've done into a function that:

    +
      +
    • Extracts all the locatable listings from our html page
    • +
    • Iterates over each of them, and builds a dictionary of data
        +
      • include location, href, description, price and size
      • +
      +
    • +
    • Returns a list of these dictionaries
    • +
    +

    Call it extract_listings

    +

    Put this new function into mashup.py and call it from __main__, +printing the result

    + + + + +
    +
    +
    +

    Break Time

    +
    +
    +

    Once you have this working, take a break.

    +

    When we return, we'll try a saner approach to getting data from online

    +
    +

    While you have a moment, sign up for an API key from this service:

    +

    http://www.walkscore.com/professional/api.php

    +
    + + + + +
    +
    +
    +

    My Solution

    +
    +
    +
    def extract_listings(doc):
    +    location_attrs = {'data-latitude': True,
    +                      'data-longitude': True}
    +    for row in doc.find_all('p', class_='row',
    +                            attrs=location_attrs):
    +        location = dict(
    +            [(key, row.attrs.get(key)) for key in location_attrs])
    +        link = row.find('span', class_='pl').find('a')
    +        price_span = row.find('span', class_='price')
    +        listing = {
    +            'location': location,
    +            'href': link.attrs['href'],
    +            'description': link.string.strip(),
    +            'price': price_span.string.strip(),
    +            'size': price_span.next_sibling.strip(' \n-/')
    +        }
    +        yield listing
    +
    +
    + + + + +
    +
    +
    +

    My Solution

    +
    +
    +
    if __name__ == '__main__':
    +    html, encoding = fetch_search_results(
    +        minAsk=500, maxAsk=1000, bedrooms=2
    +    )
    +    doc = parse_source(html, encoding)
    +    for listing in extract_listings(doc):
    +        print listing
    +
    +
    + + + + +
    +
    +
    +

    Another Approach

    +
    +
    +

    Scraping web pages is tedious and inherently brittle

    +

    The owner of the website updates their layout, your code breaks

    +

    But there is another way to get information from the web in a more normalized +fashion

    +

    Web Services

    + + + + +
    +
    +
    +

    Web Services

    +
    +
    +

    "a software system designed to support interoperable machine-to-machine +interaction over a network" - W3C

    +
      +
    • provides a defined set of calls
    • +
    • returns structured data
    • +
    + + + + +
    +
    +
    +

    Early Web Services

    +
    +
    +

    RSS is one of the earliest forms of Web Services

    + +

    A single web-based endpoint provides a dynamically updated listing of +content

    +

    Implemented in pure HTTP. Returns XML

    +

    Atom is a competing, but similar standard

    + + + + +
    +
    +
    +

    RSS Document

    +
    +
    +
    +
    +class tiny
    +
    + +
    <?xml version="1.0" encoding="UTF-8" ?>
    +<rss version="2.0">
    +<channel>
    +  <title>RSS Title</title>
    +  <description>This is an example of an RSS feed</description>
    +  <link>http://www.someexamplerssdomain.com/main.html</link>
    +  <lastBuildDate>Mon, 06 Sep 2010 00:01:00 +0000 </lastBuildDate>
    +  <pubDate>Mon, 06 Sep 2009 16:45:00 +0000 </pubDate>
    +  <ttl>1800</ttl>
    +
    +  <item>
    +    <title>Example entry</title>
    +    <description>Here is some text containing an interesting description.</description>
    +    <link>http://www.wikipedia.org/</link>
    +    <guid>unique string per item</guid>
    +    <pubDate>Mon, 06 Sep 2009 16:45:00 +0000 </pubDate>
    +  </item>
    +  ...
    +</channel>
    +</rss>
    +
    +
    + + + + +
    +
    +
    +

    XML-RPC

    +
    +
    +

    RSS provides a pre-defined data set, can we also allow calling procedures to +get more dynamic data?

    +

    We can! Enter XML-RPC (Remote Procedure Call)

    +
      +
    • Provides a set of defined procedures which can take arguments
    • +
    • Calls are made via HTTP GET, by passing an XML document
    • +
    • Returns from a call are sent to the client in XML
    • +
    +

    There is an interactive example of this at the end of this session. We will +not go through it here, though.

    + + + + +
    +
    +
    +

    Beyond XML-RPC

    +
    +
    +
      +
    • XML-RPC allows introspection
    • +
    • XML-RPC forces you to introspect to get information
    • +
    • Wouldn't it be nice to get that automatically?
    • +
    • XML-RPC provides data types
    • +
    • XML-RPC provides only certain data types
    • +
    • Wouldn't it be nice to have an extensible system for types?
    • +
    • XML-RPC allows calling methods with parameters
    • +
    • XML-RPC only allows calling methods, nothing else
    • +
    • wouldn't it be nice to have contextual data as well?
    • +
    +

    Enter SOAP: Simple Object Access Protocol

    + + + + +
    +
    +
    +

    SOAP

    +
    +
    +

    SOAP extends XML-RPC in a couple of useful ways:

    +
      +
    • It uses Web Services Description Language (WSDL) to provide meta-data about +an entire service in a machine-readable format (Automatic introspection)
    • +
    • It establishes a method for extending available data types using XML +namespaces
    • +
    • It provides a wrapper around method calls called the envelope, which +allows the inclusion of a header with system meta-data that can be used +by the application
    • +
    + + + + +
    +
    +
    +

    SOAP in Python

    +
    +
    +

    There is no standard library module that supports SOAP directly.

    +
      +
    • The best-known and best-supported module available is Suds
    • +
    • The homepage is https://fedorahosted.org/suds/
    • +
    • It can be installed using easy_install or pip install
    • +
    +

    Again, there is a good example of using SOAP via the suds library at the +end of this session.

    +

    But we're going to move on

    + + + + +
    +
    +
    +

    Afterword

    +
    +
    +

    SOAP (and XML-RPC) have some problems:

    +
      +
    • XML is pretty damned inefficient as a data transfer medium
    • +
    • Why should I need to know method names?
    • +
    • If I can discover method names at all, I have to read a WSDL to do it?
    • +
    +

    Suds is the best we have, and it hasn't been updated since Sept. 2010.

    + + + + +
    +
    +
    +

    If Not XML, Then What?

    +
    +
    +

    JSON

    + + + + +
    +
    +
    +

    JSON

    +
    +
    +

    JavaScript Object Notation:

    +
      +
    • a lightweight data-interchange format
    • +
    • easy for humans to read and write
    • +
    • easy for machines to parse and generate
    • +
    +

    Based on Two Structures:

    +
      +
    • object: { string: value, ...}
    • +
    • array: [value, value, ]
    • +
    +
    +
    +center incremental
    +
    + +

    pythonic, no?

    + + + + +
    +
    +
    +

    JSON Data Types

    +
    +
    +

    JSON provides a few basic data types (see http://json.org/):

    +
      +
    • string: unicode, anything but ", \ and control characters
    • +
    • number: any number, but json does not use octal or hexadecimal
    • +
    • object, array (we've seen these above)
    • +
    • true
    • +
    • false
    • +
    • null
    • +
    +

    No date type? OMGWTF??!!1!1

    + + + + +
    +
    +
    +

    Dates in JSON

    +
    +
    +

    Option 1 - Unix Epoch Time (number):

    +
    >>> import time
    +>>> time.time()
    +1358212616.7691269
    +
    +
    +

    Option 2 - ISO 8661 (string):

    +
    >>> import datetime
    +>>> datetime.datetime.now().isoformat()
    +'2013-01-14T17:18:10.727240'
    +
    +
    + + + + +
    +
    +
    +

    JSON in Python

    +
    +
    +

    You can encode python to json, and decode json back to python:

    +
    >>> import json
    +>>> array = [1,2,3]
    +>>> json.dumps(array)
    +>>> '[1, 2, 3]'
    +>>> orig = {'foo': [1,2,3], 'bar': u'my resumé', 'baz': True}
    +>>> encoded = json.dumps(orig)
    +>>> encoded
    +'{"baz": true, "foo": [1, 2, 3], "bar": "my resum\\u00e9"}'
    +>>> decoded = json.loads(encoded)
    +>>> decoded == orig
    +True
    +
    +
    +

    Customizing the encoder or decoder class allows for specialized serializations

    + + + + +
    +
    +
    +

    JSON in Python

    +
    +
    +

    the json module also supports reading and writing to file-like objects via +json.dump(fp) and json.load(fp) (note the missing 's')

    +

    Remember duck-typing. Anything with a .write and a .read method is +file-like

    +

    This usage can be much more memory-friendly with large files/sources

    + + + + +
    +
    +
    +

    What about WSDL?

    +
    +
    +

    SOAP was invented in part to provide completely machine-readable +interoperability.

    +

    Does that really work in real life?

    +

    Hardly ever

    + + + + +
    +
    +
    +

    What about WSDL?

    +
    +
    +

    Another reason was to provide extensibility via custom types

    +

    Does that really work in real life?

    +

    Hardly ever

    + + + + +
    +
    +
    +

    Why Do All The Work?

    +
    +
    +

    So, if neither of these goals is really achieved by using SOAP, why pay all +the overhead required to use the protocol?

    +

    Enter REST

    + + + + +
    +
    +
    +

    REST

    +
    +
    +
    +
    +class center
    +
    + +

    Representational State Transfer

    +
      +
    • Originally described by Roy T. Fielding (worth reading)
    • +
    • Use HTTP for what it can do
    • +
    • Read more in this book*
    • +
    +
    +
    +image-credit incremental
    +
    + +

    * Seriously. Buy it and read +(<http://www.crummy.com/writing/RESTful-Web-Services/)

    + + + + +
    +
    +
    +

    A Comparison

    +
    +
    +

    The XML-RCP/SOAP way:

    +
      +
    • POST /getComment HTTP/1.1
    • +
    • POST /getComments HTTP/1.1
    • +
    • POST /addComment HTTP/1.1
    • +
    • POST /editComment HTTP/1.1
    • +
    • POST /deleteComment HTTP/1.1
    • +
    +

    The RESTful way:

    +
      +
    • GET /comment/<id> HTTP/1.1
    • +
    • GET /comment HTTP/1.1
    • +
    • POST /comment HTTP/1.1
    • +
    • PUT /comment/<id> HTTP/1.1
    • +
    • DELETE /comment/<id> HTTP/1.1
    • +
    + + + + +
    +
    +
    +

    ROA

    +
    +
    +

    This is Resource Oriented Architecture

    +

    The URL represents the resource we are working with

    +

    The HTTP Method represents the action to be taken

    +

    The HTTP Code returned tells us the result (whether success or failure)

    + + + + +
    +
    +
    +

    HTTP Codes Revisited

    +
    +
    +
    +
    +class small
    +
    + +

    POST /comment HTTP/1.1 (creating a new comment):

    +
      +
    • Success: HTTP/1.1 201 Created
    • +
    • Failure (unauthorized): HTTP/1.1 401 Unauthorized
    • +
    • Failure (NotImplemented): HTTP/1.1 405 Not Allowed
    • +
    • Failure (ValueError): HTTP/1.1 406 Not Acceptable
    • +
    +
    +
    +small incremental
    +
    + +

    PUT /comment/<id> HTTP/1.1 (edit comment):

    +
      +
    • Success: HTTP/1.1 200 OK
    • +
    • Failure: HTTP/1.1 409 Conflict
    • +
    +
    +
    +small incremental
    +
    + +

    DELETE /comment/<id> HTTP/1.1 (delete comment):

    +
      +
    • Success: HTTP/1.1 204 No Content
    • +
    + + + + +
    +
    +
    +

    HTTP Is Stateless

    +
    +
    +

    No individual request may be assumed to know anything about any other request.

    +

    All the required information representing the possible actions to take should +be present in every response.

    +

    Thus: HATEOAS

    + + + + +
    +
    +
    +

    HATEOAS

    +
    +
    +

    Hypermedia As The Engine Of Application State

    + + + + +
    +
    +
    +

    Applications are State Engines

    +
    +
    +

    A State Engine is a machine that provides states for a resource to be in and +transitions to move resources between states. A Restful api should:

    +
      +
    • provide information about the current state of a resource
    • +
    • provide information about available transitions for that resource (URIs)
    • +
    • provide all this in each HTTP response
    • +
    + + + + +
    +
    +
    +

    Playing With REST

    +
    +
    +

    Let's take a moment to play with REST.

    +

    We'll use a common, public API provided by Google.

    +

    Geocoding

    + + + + +
    +
    +
    +

    Geocoding with Google APIs

    +
    +
    +

    https://developers.google.com/maps/documentation/geocoding

    +
    +

    Open a python interpreter using our virtualenv:

    +
    +
    +class small
    +
    + +
    (soupenv)$ python
    +
    +
    +
    +
    >>> import requests
    +>>> import json
    +>>> from pprint import pprint
    +>>> url = 'http://maps.googleapis.com/maps/api/geocode/json'
    +>>> addr = '1325 4th Ave, Seattle, 98101'
    +>>> parameters = {'address': addr, 'sensor': 'false' }
    +>>> resp = requests.get(url, params=parameters)
    +>>> data = json.loads(resp.text)
    +>>> if data['status'] == 'OK':
    +...     pprint(data)
    +
    +
    + + + + +
    +
    +
    +

    Reverse Geocoding

    +
    +
    +

    You can do the same thing in reverse, supply latitude and longitude and get +back address information:

    +
    >>> location = data['results'][0]['geometry']['location']
    +>>> latlng="{lat},{lng}".format(**location)
    +>>> parameters = {'latlng': latlng, 'sensor': 'false'}
    +>>> resp = requests.get(url, params=paramters)
    +>>> data = json.loads(resp.text)
    +>>> if data['status'] == 'OK':
    +...     pprint(data)
    +
    +
    +

    Notice that there are a number of results returned, ordered from most specific +to least.

    + + + + +
    +
    +
    +

    Mash It Up

    +
    +
    +

    Let's add a new function to mashup.py. It will:

    +
      +
    • take a single listing from our craiglist work
    • +
    • format the location data provided in that listing properly
    • +
    • make a reverse geocoding lookup using the google api above
    • +
    • add the best available address to the listing
    • +
    • return the updated listing
    • +
    +

    Call it add_address

    + + + + +
    +
    +
    +

    My Solution

    +
    +
    +
    # add an import
    +import json
    +
    +# and a function
    +def add_address(listing):
    +    api_url = 'http://maps.googleapis.com/maps/api/geocode/json'
    +    loc = listing['location']
    +    latlng_tmpl = "{data-latitude},{data-longitude}"
    +    parameters = {
    +        'sensor': 'false',
    +        'latlng': latlng_tmpl.format(**loc),
    +    }
    +    resp = requests.get(api_url, params=parameters)
    +    data = json.loads(resp.text)
    +    if data['status'] == 'OK':
    +        best = data['results'][0]
    +        listing['address'] = best['formatted_address']
    +    else:
    +        listing['address'] = 'unavailable'
    +    return listing
    +
    +
    + + + + +
    +
    +
    +

    Add Address to Output

    +
    +
    +

    Go ahead and bolt the new function into our __main__ block:

    +
    import pprint
    +if __name__ == '__main__':
    +    params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2}
    +    html, encoding = fetch_search_results(**params)
    +    doc = parse_source(html, encoding)
    +    for listing in extract_listings(doc):
    +        listing = add_address(listing)
    +        pprint.pprint(listing)
    +
    +
    +
    +

    And give the result a whirl:

    +
    +
    +class small
    +
    + +
    (soupenv)$ python mashup.py
    +{'address': u'123 Some Street, Chapel Hill, NC ...',
    + 'description': u'3 bedroom 2 bathroom unit is move in ready!'
    + ...
    +}
    +
    +
    +
    + + + + +
    +
    +
    +

    One More Step

    +
    +
    +

    I'm a big fan of walking places.

    +

    So I'd like to find an apartment that is located somewhere 'walkable'

    +

    There's an API for that!

    +

    http://www.walkscore.com/professional/api.php

    +

    If you haven't already, sign up for an API key now.

    + + + + +
    +
    +
    +

    Getting a Walk Score

    +
    +
    +

    The API documentation tells us we have to provide lat, lon and address to get +a walk score, along with our API key.

    +

    It also tells us we have a choice of XML or JSON output. Let's use JSON

    +

    Let's poke at it and see what we get back

    +

    Fire up your virtualenv Python interpreter again

    + + + + +
    +
    +
    +

    Making an API Call

    +
    +
    +
    (soupenv)$ python
    +
    +
    +
    >>> import requests
    +>>> import json
    +>>> from pprint import pprint
    +>>> api_url = 'http://api.walkscore.com/score'
    +>>> lat, lon = 35.9108986, -79.053783
    +>>> addr = '120 E. Cameron Avenue Chapel Hill, NC 27599'
    +>>> params = {'lat': lat, 'lon', lon, 'address': addr}
    +>>> params['wsapikey'] = '<type your api key here>'
    +>>> params['format'] = 'json'
    +>>> resp = requests.get(api_url, params=params)
    +>>> data = json.loads(resp.text)
    +>>> if data['status'] == 1:
    +...     pprint(data)
    +
    +
    + + + + +
    +
    +
    +

    Mash It Up

    +
    +
    +

    Add a function to mashup.py that:

    +
      +
    • takes a single listing from our craigslist search
    • +
    • uses the location and address to make a walkscore api call
    • +
    • adds the description, walkscore and ws_link parameters to the listing
    • +
    • returns the updated listing
    • +
    +

    Call the function add_walkscore

    +

    Bolt it into our script's __main__ block where it fits best

    + + + + +
    +
    +
    +

    My Solution

    +
    +
    +
    def add_walkscore(listing):
    +    api_url = 'http://api.walkscore.com/score'
    +    apikey = '<your api key goes here>'
    +    loc = listing['location']
    +    if listing['address'] == 'unavailable':
    +        return listing
    +    parameters = {
    +        'lat': loc['data-latitude'], 'lon': loc['data-longitude'],
    +        'address': listing['address'], 'wsapikey': apikey,
    +        'format': 'json'
    +    }
    +    resp = requests.get(api_url, params=parameters)
    +    data = json.loads(resp.text)
    +    if data['status'] == 1:
    +        listing['ws_description'] = data['description']
    +        listing['ws_score'] = data['walkscore']
    +        listing['ws_link'] = data['ws_link']
    +    return listing
    +
    +
    + + + + +
    +
    +
    +

    My Results

    +
    +
    +
    if __name__ == '__main__':
    +    params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2}
    +    html, encoding = fetch_search_results(**params)
    +    doc = parse_source(html, encoding)
    +    for listing in extract_listings(doc):
    +        listing = add_address(listing)
    +        listing = add_walkscore(listing)
    +        pprint.pprint(listing)
    +
    +
    +
    +

    Let's try it out:

    +
    (soupenv)$ python mashup.py
    +
    +
    +
    + + + + +
    +
    +
    +

    Wrap Up

    +
    +
    +

    We've built a simple mashup combining data from three different sources.

    +

    As a result we can now make a listing of apartments ranked by the walkability +of their neighborhood.

    +

    What other data sources might we use? Check out +http://www.programmableweb.com/apis/directory to see some of the possibilities

    + + + + +
    +
    +
    +

    Addenda

    +
    +
    +

    Altough we do not have class time to do walkthrough examples of using XML-RPC +and SOAP, I have provided exercises in each as an addenda to this session. If +you have the time and the interest, please try them out.

    +
    +
    +class center
    +
    + +

    Web Service API Addenda

    + + + + +
    +
    +
    +

    Homework

    +
    +
    +

    For your homework this week, you'll be creating a mashup of your own.

    +

    Use the programmable web api directory from above as a source of inspiration.

    +

    Your mashup should combine at least two sources of data in some way that +tickles your fancy.

    +

    Your results need not look pretty. Focus on data acquisition and processing.

    + + + + +
    +
    +
    +

    Submitting Your Homework

    +
    +
    +

    To submit your homework:

    +
      +
    • Create a new python script in assignments/session03. It should be +something I can run with:

      +
      $ python your_script.py
      +
      +
      +
    • +
    • Provide me with a text file describing what you did. Tell me about the +sources you use, how you combine them, what you hoped to achieve.

      +
    • +
    • Include any instruction I might need to successfully run your script.

      +
    • +
    • Commit your changes to your fork of the repo in github, then open a pull +request.

      +
    • +
    + + + + +
    +
    +
    +

    Extra Credit

    +
    +
    +

    Bonus points if you write unit tests for the elements of your mashup.

    + + + + +
    +
    + + + + +
    +

    <Thank You!>

    +

     

    +
    +

    + +

    +
    + + + +
    + + + + \ No newline at end of file From 4b0cd21c0e8ba4e3120c7ef03d94022a802fadb6 Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 8 Feb 2015 22:36:24 -0800 Subject: [PATCH 083/114] fixing errors in session 6 --- html/_sources/presentations/session06.txt | 400 ++++++++++----------- html/genindex.html | 2 +- html/objects.inv | Bin 284 -> 281 bytes html/presentations/index.html | 1 + html/presentations/session06.html | 404 +++++++++------------- html/searchindex.js | 2 +- 6 files changed, 338 insertions(+), 471 deletions(-) diff --git a/html/_sources/presentations/session06.txt b/html/_sources/presentations/session06.txt index 25112f47..f5e64cff 100644 --- a/html/_sources/presentations/session06.txt +++ b/html/_sources/presentations/session06.txt @@ -492,8 +492,8 @@ What the Script Does: * prints headers, empty line and script output (body) to stdout -In-Class Exercise ------------------ +In-Class Exercise I +------------------- You've seen the output from the ``cgi.test()`` method from the ``cgi`` module. Let's make our own version of this. @@ -554,8 +554,8 @@ In the ``cgi`` module, we get access to this with the ``FieldStorage`` class: are present -In-Class Exercise ------------------ +In-Class Exercise II +-------------------- Let's create a dynamic adding machine. @@ -660,8 +660,6 @@ Enter WSGI, the Web Server Gateway Interface. WSGI is itself a new standard, not an implementation. -.. rst-class:: build - WSGI is generalized to describe a set of interactions. Developers can write WSGI-capable apps and deploy them on any WSGI server. @@ -693,7 +691,7 @@ WSGI consists of two parts, a *server* and an *application*. A WSGI Appliction must: - .. rst-class:: build small + .. rst-class:: build * Be a callable (function, method, class) * Take an environment and a ``start_response`` callable as arguments @@ -759,61 +757,61 @@ A third part of the puzzle is something called WSGI *middleware* :width: 38% -Flowcharts ----------- +.. nextslide:: WSGI Data Flow -WSGI Servers: +.. rst-class:: build +.. container:: -.. class:: center incremental + .. container:: -**HTTP <---> WSGI** + WSGI Servers: -.. rst-class:: build + .. rst-class:: large centered + + **HTTP <---> WSGI** -WSGI Applications: + .. container:: -.. class:: center incremental + WSGI Applications: -**WSGI <---> app code** + .. rst-class:: large centered + **WSGI <---> app code** -The Whole Enchilada -------------------- + +.. nextslide:: The WSGI Stack The WSGI *Stack* can thus be expressed like so: -.. rst-class:: build big-centered +.. rst-class:: build large centered **HTTP <---> WSGI <---> app code** -Using wsgiref -------------- +.. nextslide:: Using wsgiref The Python standard lib provides a reference implementation of WSGI: -.. image:: img/wsgiref_flow.png +.. figure:: /_static/wsgiref_flow.png :align: center :width: 80% -Apache mod_wsgi ---------------- +.. nextslide:: Apache mod_wsgi You can also deploy with Apache as your HTTP server, using **mod_wsgi**: -.. image:: img/mod_wsgi_flow.png +.. figure:: /_static/mod_wsgi_flow.png :align: center :width: 80% -Proxied WSGI Servers --------------------- +.. nextslide:: Proxied WSGI Servers Finally, it is also common to see WSGI apps deployed via a proxied WSGI server: -.. image:: img/proxy_wsgi.png +.. figure:: /_static/proxy_wsgi.png :align: center :width: 80% @@ -821,44 +819,39 @@ server: The WSGI Environment -------------------- -.. class:: small - -REQUEST_METHOD +REQUEST_METHOD: The HTTP request method, such as "GET" or "POST". This cannot ever be an empty string, and so is always required. -SCRIPT_NAME +SCRIPT_NAME: The initial portion of the request URL's "path" that corresponds to the application object, so that the application knows its virtual "location". This may be an empty string, if the application corresponds to the "root" of the server. -PATH_INFO +PATH_INFO: The remainder of the request URL's "path", designating the virtual "location" of the request's target within the application. This may be an empty string, if the request URL targets the application root and does not have a trailing slash. -QUERY_STRING +QUERY_STRING: The portion of the request URL that follows the "?", if any. May be empty or absent. -CONTENT_TYPE +CONTENT_TYPE: The contents of any Content-Type fields in the HTTP request. May be empty or absent. -The WSGI Environment --------------------- +.. nextslide:: The WSGI Environment -.. class:: small - -CONTENT_LENGTH +CONTENT_LENGTH: The contents of any Content-Length fields in the HTTP request. May be empty or absent. -SERVER_NAME, SERVER_PORT +SERVER_NAME, SERVER_PORT: When combined with SCRIPT_NAME and PATH_INFO, these variables can be used to complete the URL. Note, however, that HTTP_HOST, if present, should be used in preference to SERVER_NAME for reconstructing the request URL. See the URL Reconstruction section below for more detail. SERVER_NAME and SERVER_PORT can never be empty strings, and so are always required. -SERVER_PROTOCOL +SERVER_PROTOCOL: The version of the protocol the client used to send the request. Typically this will be something like "HTTP/1.0" or "HTTP/1.1" and may be used by the application to determine how to treat any HTTP request headers. (This @@ -868,24 +861,21 @@ SERVER_PROTOCOL have to keep the existing name.) -The WSGI Environment --------------------- - -.. class:: small +.. nextslide:: The WSGI Environment -HTTP\_ Variables +HTTP\_ Variables: Variables corresponding to the client-supplied HTTP request headers (i.e., variables whose names begin with "HTTP\_"). The presence or absence of these variables should correspond with the presence or absence of the appropriate HTTP header in the request. -.. class:: center incremental +.. rst-class:: build large centered **Seem Familiar?** -A Bit of Repetition -------------------- +In-Class Exercise III +--------------------- Let's start simply. We'll begin by repeating our first CGI exercise in WSGI @@ -897,13 +887,12 @@ Let's start simply. We'll begin by repeating our first CGI exercise in WSGI * We will fill in the missing values using the wsgi ``environ``, just as we use ``os.environ`` in cgi -.. rst-class:: build center +.. rst-class:: build centered **But First** -Orientation ------------ +.. nextslide:: Orientation .. code-block:: python @@ -913,20 +902,16 @@ Orientation srv.serve_forever() .. rst-class:: build +.. container:: -Note that we pass our ``application`` function to the server factory - -.. rst-class:: build - -We don't have to write a server, ``wsgiref`` does that for us. + Note that we pass our ``application`` function to the server factory -.. rst-class:: build + We don't have to write a server, ``wsgiref`` does that for us. -In fact, you should *never* have to write a WSGI server. + In fact, you should *never* have to write a WSGI server. -Orientation ------------ +.. nextslide:: Orientation .. code-block:: python @@ -942,132 +927,118 @@ Orientation return [response_body] .. rst-class:: build +.. container:: -We do not define ``start_response``, the application does that. - -.. rst-class:: build - -We *are* responsible for determining the HTTP status. + We do not define ``start_response``, the application does that. + We *are* responsible for determining the HTTP status. -Running a WSGI Script ---------------------- +.. nextslide:: Running a WSGI Script You can run this script with python:: $ python wsgi_1.py .. rst-class:: build +.. container:: -This will start a wsgi server. What host and port will it use? - -.. rst-class:: build - -Point your browser at ``http://localhost:8080/``. Did it work? - -.. rst-class:: build - -Go ahead and fill in the missing bits. Use the ``environ`` passed into -``application`` + This will start a wsgi server. What host and port will it use? + Point your browser at ``http://localhost:8080/``. Did it work? -Some Tips ---------- + Go ahead and fill in the missing bits. Use the ``environ`` passed into + ``application`` -Because WSGI is a long-running process, the file you are editing is *not* -reloaded after you edit it. -.. rst-class:: build +.. nextslide:: Some Tips -You'll need to quit and re-run the script between edits. +WSGI is a long-running process. .. rst-class:: build +.. container:: -You may also want to consider using ``print environ`` in your application so -you can see the dictionary. + The file you are editing is *not* reloaded after you edit it. -.. rst-class:: build + You'll need to quit and re-run the script between edits. -If you do that, where will the printed environment appear? + Notice the use of ``pprint.pprint``, check your terminal for useful output. -A More Complex Example ----------------------- +A WSGI Application +------------------ -Let's create a multi-page wsgi application. It will serve a small database of -python books. +So now we've learned a bit about the WSGI specification and how a WSGI +application can get data that comes in via an HTTP request. .. rst-class:: build +.. container:: -The database (with a very simple api) can be found in ``wsgi/bookdb.py`` + Let's create a multi-page wsgi application. -.. rst-class:: build + It will serve a small database of python books. -* We'll need a listing page that shows the titles of all the books -* Each title will link to a details page for that book -* The details page for each book will display all the information and have a - link back to the list + The database (with a very simple api) can be found in ``wsgi/bookdb.py`` + .. rst-class:: build -Some Questions to Ponder ------------------------- + * We'll need a listing page that shows the titles of all the books + * Each title will link to a details page for that book + * The details page for each book will display all the information and have + a link back to the list -.. rst-class:: build + +.. nextslide:: Some Questions to Ponder When viewing our first wsgi app, do we see the name of the wsgi application script anywhere in the URL? .. rst-class:: build +.. container:: -In our wsgi application script, how many applications did we actually have? - -.. rst-class:: build + In our wsgi application script, how many applications did we actually have? -How are we going to serve different types of information out of a single -application? + How are we going to serve different types of information out of a single + application? -Dispatch --------- +.. nextslide:: Dispatch We have to write an app that will map our incoming request path to some code that can handle that request. .. rst-class:: build +.. container:: -This process is called ``dispatch``. There are many possible approaches - -.. rst-class:: build + This process is called ``dispatch``. There are many possible approaches. -Let's begin by designing this piece of it. + You've seen one approach in the Learning Journal you built with Pyramid. -.. rst-class:: build + Let's begin by designing this piece of our app. -Open ``bookapp.py`` from the ``wsgi`` folder. We'll do our work here. + Open ``bookapp.py`` from the ``wsgi`` folder. We'll do our work here. -PATH ----- +.. nextslide:: PATH -The wsgi environment gives us access to *PATH_INFO*, which maps to the URI the -user requested when they loaded the page. +The wsgi environment gives us access to *PATH_INFO*. .. rst-class:: build +.. container:: -We can design the URLs that our app will use to assist us in routing. + This value is the URI from the client's HTTP request. -.. rst-class:: build + We can design the URLs that our app will use to assist us in routing. -Let's declare that any request for ``/`` will map to the list page + Let's declare that any request for ``/`` will map to the list page. -.. container:: incremental + .. container:: - We can also say that the URL for a book will look like this:: + We can also say that the URL for a book will look like this:: - http://localhost:8080/book/ + http://localhost:8080/book/ -Writing resolve_path --------------------- +Writing ``resolve_path`` +------------------------ Let's write a function, called ``resolve_path`` in our application file. @@ -1079,8 +1050,9 @@ Let's write a function, called ``resolve_path`` in our application file. * This implies of course that the arguments should be part of the PATH -My Solution ------------ +.. nextslide:: My Solution + +.. rst-class:: build .. code-block:: python @@ -1098,15 +1070,14 @@ My Solution raise NameError -Application Updates -------------------- +.. nextslide:: Application Updates -We need to hook our new router into the application. +We need to hook our new dispatch function into the application. .. rst-class:: build * The path should be extracted from ``environ``. -* The router should be used to get a function and arguments +* The dispatch function should be used to get a function and arguments * The body to return should come from calling that function with those arguments * If an error is raised by calling the function, an appropriate response @@ -1115,8 +1086,9 @@ We need to hook our new router into the application. response -My Solution ------------ +.. nextslide:: My Solution + +.. rst-class:: build .. code-block:: python @@ -1149,22 +1121,21 @@ Once you've got your script settled, run it:: $ python bookapp.py .. rst-class:: build +.. container:: -Then point your browser at ``http://localhost:8080/`` - -.. rst-class:: build + Then point your browser at ``http://localhost:8080/`` -* ``http://localhost/book/id3`` -* ``http://localhost/book/id73/`` -* ``http://localhost/sponge/damp`` + .. rst-class:: build -.. rst-class:: build + * ``http://localhost/book/id3`` + * ``http://localhost/book/id73/`` + * ``http://localhost/sponge/damp`` -Did that all work as you would have expected? + Did that all work as you would have expected? -Building the List ------------------ +Building the Book List +---------------------- The function ``books`` should return an html list of book titles where each title is a link to the detail page for that book @@ -1177,8 +1148,9 @@ title is a link to the detail page for that book * The href for the link should be of the form ``/book/`` -My Solution ------------ +.. nextslide:: My Solution + +.. rst-class:: build .. code-block:: python @@ -1199,19 +1171,18 @@ Quit and then restart your application script:: $ python bookapp.py -.. container:: incremental - - Then reload the root of your application:: +.. rst-class:: build +.. container:: - http://localhost:8080/ + .. container:: -.. rst-class:: build + Then reload the root of your application:: -You should see a nice list of the books in the database. Do you? + http://localhost:8080/ -.. rst-class:: build + You should see a nice list of the books in the database. Do you? -Click on a link to view the detail page. Does it load without error? + Click on a link to view the detail page. Does it load without error? Showing Details @@ -1220,18 +1191,20 @@ Showing Details The next step of course is to polish up those detail pages. .. rst-class:: build +.. container:: -* You'll need to retrieve a single book from the database -* You'll need to format the details about that book and return them as HTML -* You'll need to guard against ids that do not map to books + .. rst-class:: build -.. rst-class:: build + * You'll need to retrieve a single book from the database + * You'll need to format the details about that book and return them as HTML + * You'll need to guard against ids that do not map to books -In this last case, what's the right HTTP response code to send? + In this last case, what's the right HTTP response code to send? -My Solution ------------ +.. nextslide:: My Solution + +.. rst-class:: build .. code-block:: python @@ -1251,27 +1224,21 @@ My Solution return page.format(**book) -Revel in Your Success ---------------------- +.. nextslide:: Revel in Your Success Quit and restart your script one more time .. rst-class:: build +.. container:: -Then poke around at your application and see the good you've made - -.. rst-class:: build - -And your application is portable and sharable + Then poke around at your application and see the good you've made -.. rst-class:: build + And your application is portable and sharable -It should run equally well under any `wsgi server -`_ + It should run equally well under any `wsgi server `_ -A Few Steps Further -------------------- +.. nextslide:: A Few Steps Further Next steps for an app like this might be: @@ -1283,70 +1250,65 @@ Next steps for an app like this might be: Homework --------- - -For your homework this week, you'll be creating a wsgi application of your -own. - -.. rst-class:: build - -As the source of your data, use the mashup you created last week. - -.. rst-class:: build - -Your application should have at least two separate "pages" in it. - -.. rst-class:: build - -The HTML you produce does not need to be pretty, but it should be something -that shows up in a browser. - - -Submitting Your Homework ------------------------- +======== -To submit your homework: +.. rst-class:: left +.. container:: -.. class:: small + For your homework this week, you'll be creating a wsgi application of your + own. -* Create a new python script in ``assignments/session04``. It should be - something I can run with: + .. rst-class:: build + .. container:: -.. class:: small + You'll create an online calculator that can perform several operations -:: + You'll need to support: - $ python your_script.py + .. rst-class:: build -.. class:: small + * Addition + * Subtraction + * Multiplication + * Division -* Once your script is running, I should be able to view your application in my - browser. + .. container:: -* Include all instructions I need to successfully run and view your script. + Your users should be able to send appropriate requests and get back + proper responses:: -* Add tests for your code. I should be able to run the tests like so: + http://localhost:8080/multiply/3/5 => 15 + http://localhost:8080/add/23/42 => 65 + http://localhost:8080/divide/6/0 => HTTP "400 Bad Request" -.. class:: small -:: +.. nextslide:: Submitting Your Homework - $ python tests.py +.. rst-class:: left +.. container:: -.. class:: small + To submit your homework: -* Commit your changes to your fork of the repo in github, then open a pull - request. + .. rst-class:: build + * Create a new github repository. Call it ``wsgi-calc``. + * Add a python script to it called ``calculator.py``. + * Your script should be runnable using ``$ python calculator.py`` + * When the script is running, I should be able to view your application in + my browser. + * I should be able to see a home page that explains how to perform + calculations. -But Wait, There's More ----------------------- + .. rst-class:: build + .. container:: -In addition, read and step through the quick tutorials on templates and -database persistence in the assignments directory. + Your repository should include a README.md file. -Use your flaskenv Python, it has everything you need installed. + Include all instructions I need to successfully run and view your + script. + When you are done, send Maria and I an email with a link to your + repository. Wrap-Up ------- @@ -1359,6 +1321,6 @@ the ``wsgiref`` module. It's the canonical example of a simple wsgi server '/full/path/to/your/copy/of/wsgiref.py' ... -.. rst-class:: build center +.. rst-class:: build centered **See you Next Time** diff --git a/html/genindex.html b/html/genindex.html index 9a559c4d..aff80480 100644 --- a/html/genindex.html +++ b/html/genindex.html @@ -79,7 +79,7 @@

    S

    diff --git a/html/objects.inv b/html/objects.inv index eb64dcff4580b8df15ecf5e1c6ff0183d7f4f960..dfc65ed9188eda157313bf671f59f5e7046f1aa1 100644 GIT binary patch delta 142 zcmV;90CE4E0+|AklYc=90x=9l_dP{Gx7Bea%ne)!f+vV=m?@;GG!>lN+o5$KxS3t} z|2=+U@6><=p-PzD{0p|MWA_H! wa3Z4-nd|uI7*(PEkx5AkmXJh`N~-l3&Q0BeHLkXlHz_5^vIj}{0EdQU)767Q^#A|> delta 145 zcmV;C0B--80-OSnlYdPL0x=AQ_dP{GxAkYEFgI`^2%aFeVWyC#(o}G6Z>1Fx1aTMM z`#xS`@%7jR7e#sr6FWJZ!N(ktyoLzOVQ=@V>O$IcBn z;Yda!GS~6JF{(oSBa@O8EFp=ml~n7o*)??u*0|bI{;llaN(u=w|0O&ChZkki*8D*) diff --git a/html/presentations/index.html b/html/presentations/index.html index b0f2c5c3..1883dbf9 100644 --- a/html/presentations/index.html +++ b/html/presentations/index.html @@ -110,6 +110,7 @@

    Course PresentationsCGI, WSGI and Living Online
  • CGI - The Web Environment
  • WSGI
  • +
  • Homework
  • diff --git a/html/presentations/session06.html b/html/presentations/session06.html index b81bfb61..5355e291 100644 --- a/html/presentations/session06.html +++ b/html/presentations/session06.html @@ -392,8 +392,8 @@

    CGI Process Executionprints headers, empty line and script output (body) to stdout -
    -

    In-Class Exercise¶

    +
    +

    In-Class Exercise I¶

    You’ve seen the output from the cgi.test() method from the cgi module. Let’s make our own version of this.

    @@ -437,8 +437,8 @@

    Getting Data from Users

    -
    -

    In-Class Exercise¶

    + -

    WSGI is generalized to describe a set of interactions.

    -

    Developers can write WSGI-capable apps and deploy them on any WSGI server.

    -

    Read the WSGI spec: http://www.python.org/dev/peps/pep-0333

    -
    -
    -

    Flowcharts¶

    +
    +

    WSGI Servers:

    -
    -
    -center incremental
    -
    - -

    HTTP <—> WSGI

    -

    WSGI Applications:

    -
    -
    -center incremental
    -
    - -

    WSGI <—> app code

    +

    HTTP <—> WSGI

    -
    -

    The Whole Enchilada¶

    -

    The WSGI Stack can thus be expressed like so:

    -

    HTTP <—> WSGI <—> app code

    +
    +

    WSGI Applications:

    +

    WSGI <—> app code

    -
    -

    Using wsgiref¶

    +
    +

    The WSGI Stack can thus be expressed like so:

    +

    HTTP <—> WSGI <—> app code

    The Python standard lib provides a reference implementation of WSGI:

    -presentations/img/wsgiref_flow.png +
    +../_images/wsgiref_flow.png
    -
    -

    Apache mod_wsgi¶

    You can also deploy with Apache as your HTTP server, using mod_wsgi:

    -presentations/img/mod_wsgi_flow.png +
    +../_images/mod_wsgi_flow.png
    -
    -

    Proxied WSGI Servers¶

    Finally, it is also common to see WSGI apps deployed via a proxied WSGI server:

    -presentations/img/proxy_wsgi.png +
    +../_images/proxy_wsgi.png +

    The WSGI Environment¶

    -
    -
    -class small¶
    -
    -
    -
    REQUEST_METHOD
    +
    REQUEST_METHOD:
    The HTTP request method, such as “GET” or “POST”. This cannot ever be an empty string, and so is always required.
    -
    SCRIPT_NAME
    +
    SCRIPT_NAME:
    The initial portion of the request URL’s “path” that corresponds to the application object, so that the application knows its virtual “location”. This may be an empty string, if the application corresponds to the “root” of the server.
    -
    PATH_INFO
    +
    PATH_INFO:
    The remainder of the request URL’s “path”, designating the virtual “location” of the request’s target within the application. This may be an empty string, if the request URL targets the application root and does not have a trailing slash.
    -
    QUERY_STRING
    +
    QUERY_STRING:
    The portion of the request URL that follows the ”?”, if any. May be empty or absent.
    -
    CONTENT_TYPE
    +
    CONTENT_TYPE:
    The contents of any Content-Type fields in the HTTP request. May be empty or absent.
    -
    -
    -

    The WSGI Environment¶

    -
    -
    -class small
    -
    -
    -
    CONTENT_LENGTH
    +
    CONTENT_LENGTH:
    The contents of any Content-Length fields in the HTTP request. May be empty or absent.
    -
    SERVER_NAME, SERVER_PORT
    +
    SERVER_NAME, SERVER_PORT:
    When combined with SCRIPT_NAME and PATH_INFO, these variables can be used to complete the URL. Note, however, that HTTP_HOST, if present, should be used in preference to SERVER_NAME for reconstructing the request URL. See the URL Reconstruction section below for more detail. SERVER_NAME and SERVER_PORT can never be empty strings, and so are always required.
    -
    SERVER_PROTOCOL
    +
    SERVER_PROTOCOL:
    The version of the protocol the client used to send the request. Typically this will be something like “HTTP/1.0” or “HTTP/1.1” and may be used by the application to determine how to treat any HTTP request headers. (This @@ -672,30 +646,17 @@

    The WSGI Environment -

    The WSGI Environment¶

    -
    -
    -class small
    -
    -
    -
    HTTP_ Variables
    +
    HTTP_ Variables:
    Variables corresponding to the client-supplied HTTP request headers (i.e., variables whose names begin with “HTTP_”). The presence or absence of these variables should correspond with the presence or absence of the appropriate HTTP header in the request.
    -
    -
    -center incremental
    -
    - -

    Seem Familiar?

    +

    Seem Familiar?

    -
    -

    A Bit of Repetition¶

    +
    +

    In-Class Exercise III¶

    Let’s start simply. We’ll begin by repeating our first CGI exercise in WSGI

    -

    But First

    -
    -
    -

    Orientation¶

    +

    But First

    if __name__ == '__main__':
         from wsgiref.simple_server import make_server
         srv = make_server('localhost', 8080, application)
         srv.serve_forever()
     
    -

    Note that we pass our application function to the server factory

    -

    We don’t have to write a server, wsgiref does that for us.

    -

    In fact, you should never have to write a WSGI server.

    +
    +

    Note that we pass our application function to the server factory

    +

    We don’t have to write a server, wsgiref does that for us.

    +

    In fact, you should never have to write a WSGI server.

    -
    -

    Orientation¶

    def application(environ, start_response):
         response_body = body % (
              environ.get('SERVER_NAME', 'Unset'), # server name
    @@ -732,72 +689,72 @@ 

    Orientationreturn [response_body]

    -

    We do not define start_response, the application does that.

    -

    We are responsible for determining the HTTP status.

    +
    +

    We do not define start_response, the application does that.

    +

    We are responsible for determining the HTTP status.

    -
    -

    Running a WSGI Script¶

    You can run this script with python:

    $ python wsgi_1.py
     
    -

    This will start a wsgi server. What host and port will it use?

    -

    Point your browser at http://localhost:8080/. Did it work?

    -

    Go ahead and fill in the missing bits. Use the environ passed into +

    +

    This will start a wsgi server. What host and port will it use?

    +

    Point your browser at http://localhost:8080/. Did it work?

    +

    Go ahead and fill in the missing bits. Use the environ passed into application

    -
    -

    Some Tips¶

    -

    Because WSGI is a long-running process, the file you are editing is not -reloaded after you edit it.

    -

    You’ll need to quit and re-run the script between edits.

    -

    You may also want to consider using print environ in your application so -you can see the dictionary.

    -

    If you do that, where will the printed environment appear?

    -
    -
    -

    A More Complex Example¶

    -

    Let’s create a multi-page wsgi application. It will serve a small database of -python books.

    -

    The database (with a very simple api) can be found in wsgi/bookdb.py

    +

    WSGI is a long-running process.

    +
    +

    The file you are editing is not reloaded after you edit it.

    +

    You’ll need to quit and re-run the script between edits.

    +

    Notice the use of pprint.pprint, check your terminal for useful output.

    +
    +
    +
    +

    A WSGI Application¶

    +

    So now we’ve learned a bit about the WSGI specification and how a WSGI +application can get data that comes in via an HTTP request.

    +
    +

    Let’s create a multi-page wsgi application.

    +

    It will serve a small database of python books.

    +

    The database (with a very simple api) can be found in wsgi/bookdb.py

    • We’ll need a listing page that shows the titles of all the books
    • Each title will link to a details page for that book
    • -
    • The details page for each book will display all the information and have a -link back to the list
    • +
    • The details page for each book will display all the information and have +a link back to the list
    -
    -

    Some Questions to Ponder¶

    -

    When viewing our first wsgi app, do we see the name of the wsgi application +

    When viewing our first wsgi app, do we see the name of the wsgi application script anywhere in the URL?

    -

    In our wsgi application script, how many applications did we actually have?

    -

    How are we going to serve different types of information out of a single +

    +

    In our wsgi application script, how many applications did we actually have?

    +

    How are we going to serve different types of information out of a single application?

    -
    -

    Dispatch¶

    We have to write an app that will map our incoming request path to some code that can handle that request.

    -

    This process is called dispatch. There are many possible approaches

    -

    Let’s begin by designing this piece of it.

    -

    Open bookapp.py from the wsgi folder. We’ll do our work here.

    -
    -
    -

    PATH¶

    -

    The wsgi environment gives us access to PATH_INFO, which maps to the URI the -user requested when they loaded the page.

    -

    We can design the URLs that our app will use to assist us in routing.

    -

    Let’s declare that any request for / will map to the list page

    -
    +
    +

    This process is called dispatch. There are many possible approaches.

    +

    You’ve seen one approach in the Learning Journal you built with Pyramid.

    +

    Let’s begin by designing this piece of our app.

    +

    Open bookapp.py from the wsgi folder. We’ll do our work here.

    +
    +

    The wsgi environment gives us access to PATH_INFO.

    +
    +

    This value is the URI from the client’s HTTP request.

    +

    We can design the URLs that our app will use to assist us in routing.

    +

    Let’s declare that any request for / will map to the list page.

    +

    We can also say that the URL for a book will look like this:

    http://localhost:8080/book/<identifier>
     
    +
    -

    Writing resolve_path¶

    +

    Writing resolve_path¶

    Let’s write a function, called resolve_path in our application file.

    -
    -
    -

    My Solution¶

    -
    def resolve_path(path):
    +
    def resolve_path(path):
         urls = [(r'^$', books),
                 (r'^book/(id[\d]+)$', book)]
         matchpath = path.lstrip('/')
    @@ -822,13 +776,10 @@ 

    My Solutionraise NameError

    -
    -
    -

    Application Updates¶

    -

    We need to hook our new router into the application.

    +

    We need to hook our new dispatch function into the application.

    • The path should be extracted from environ.
    • -
    • The router should be used to get a function and arguments
    • +
    • The dispatch function should be used to get a function and arguments
    • The body to return should come from calling that function with those arguments
    • If an error is raised by calling the function, an appropriate response @@ -836,10 +787,7 @@

      Application Updates -

      My Solution¶

      -
      def application(environ, start_response):
      +
      -
      -

      Building the List¶

      +
      +

      Building the Book List¶

      The function books should return an html list of book titles where each title is a link to the detail page for that book

      -
      -
      -

      My Solution¶

      -
      def books():
      +
      def books():
           all_books = DB.titles()
           body = ['<h1>My Bookshelf</h1>', '<ul>']
           item_template = '<li><a href="/book/{id}">{title}</a></li>'
      @@ -899,34 +846,35 @@ 

      My Solution -

      Test Your Work¶

      +
      +

      Test Your Work¶

      Quit and then restart your application script:

      $ python bookapp.py
       
      -
      +
      +

      Then reload the root of your application:

      http://localhost:8080/
       
      -

      You should see a nice list of the books in the database. Do you?

      -

      Click on a link to view the detail page. Does it load without error?

      +

      You should see a nice list of the books in the database. Do you?

      +

      Click on a link to view the detail page. Does it load without error?

      +

      Showing Details¶

      The next step of course is to polish up those detail pages.

      +
      • You’ll need to retrieve a single book from the database
      • You’ll need to format the details about that book and return them as HTML
      • You’ll need to guard against ids that do not map to books
      -

      In this last case, what’s the right HTTP response code to send?

      +

      In this last case, what’s the right HTTP response code to send?

      -
      -

      My Solution¶

      -
      def book(book_id):
      +
      def book(book_id):
           page = """
       <h1>{title}</h1>
       <table>
      @@ -942,16 +890,12 @@ 

      My Solutionreturn page.format(**book)

      -
      -
      -

      Revel in Your Success¶

      Quit and restart your script one more time

      -

      Then poke around at your application and see the good you’ve made

      -

      And your application is portable and sharable

      -

      It should run equally well under any wsgi server

      +
      +

      Then poke around at your application and see the good you’ve made

      +

      And your application is portable and sharable

      +

      It should run equally well under any wsgi server

      -
      -

      A Few Steps Further¶

      Next steps for an app like this might be:

      • Create a shared full page template and incorporate it into your app
      • @@ -961,69 +905,50 @@

        A Few Steps Further -

        Homework¶

        +

        Homework¶

        +

        For your homework this week, you’ll be creating a wsgi application of your own.

        -

        As the source of your data, use the mashup you created last week.

        -

        Your application should have at least two separate “pages” in it.

        -

        The HTML you produce does not need to be pretty, but it should be something -that shows up in a browser.

        -
        -
        -

        Submitting Your Homework¶

        -

        To submit your homework:

        -
        -
        -class small
        -
        - -
          -
        • Create a new python script in assignments/session04. It should be -something I can run with:
        • +
          +

          You’ll create an online calculator that can perform several operations

          +

          You’ll need to support:

          +
            +
          • Addition
          • +
          • Subtraction
          • +
          • Multiplication
          • +
          • Division
          -
          -
          -class small
          -
          - -
          $ python your_script.py
          +
          +

          Your users should be able to send appropriate requests and get back +proper responses:

          +
          http://localhost:8080/multiply/3/5  => 15
          +http://localhost:8080/add/23/42     => 65
          +http://localhost:8080/divide/6/0    => HTTP "400 Bad Request"
           
          -
          -
          -class small
          -
          - -
            -
          • Once your script is running, I should be able to view your application in my -browser.
          • -
          • Include all instructions I need to successfully run and view your script.
          • -
          • Add tests for your code. I should be able to run the tests like so:
          • -
          -
          -
          -class small
          -
          - -
          $ python tests.py
          -
          -
          -
          -class small
          -
          - -
            -
          • Commit your changes to your fork of the repo in github, then open a pull -request.
          • +
          +
          +
          +

          To submit your homework:

          +
            +
          • Create a new github repository. Call it wsgi-calc.
          • +
          • Add a python script to it called calculator.py.
          • +
          • Your script should be runnable using $ python calculator.py
          • +
          • When the script is running, I should be able to view your application in +my browser.
          • +
          • I should be able to see a home page that explains how to perform +calculations.
          +
          +

          Your repository should include a README.md file.

          +

          Include all instructions I need to successfully run and view your +script.

          +

          When you are done, send Maria and I an email with a link to your +repository.

          -
          -

          But Wait, There’s More¶

          -

          In addition, read and step through the quick tutorials on templates and -database persistence in the assignments directory.

          -

          Use your flaskenv Python, it has everything you need installed.

          Wrap-Up¶

          @@ -1035,7 +960,7 @@

          Wrap-Up...

      -

      See you Next Time

      +

      See you Next Time

      @@ -1059,47 +984,26 @@

      Table Of Contents

    • What is CGI
    • Running CGI
    • CGI Process Execution
    • -
    • In-Class Exercise
    • +
    • In-Class Exercise I
    • Getting Data from Users
    • -
    • In-Class Exercise
    • +
    • In-Class Exercise II
  • WSGI +
  • +
  • Homework
  • diff --git a/html/searchindex.js b/html/searchindex.js index 66893cfc..783d0592 100644 --- a/html/searchindex.js +++ b/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:42,terms:{content_length:3,interchang:[2,4],four:0,database_url:6,prefix:[0,7],ronach:9,af_rout:7,skeleton:[7,4],whose:3,choos:[],aug:4,sorri:4,ipproto_raw:7,crisew:7,concret:4,swap:3,under:3,dest_dir:4,worth:[2,4,8],formatd:0,digit:[0,8],everi:[0,2,3,4],govern:[0,1,5],vast:2,chapel:2,location_attr:2,fetch_search_result:2,cmd:0,herbert:8,imaplib:[0,5],verif:6,direct:[0,4],batch:4,second:[0,7,2,3,4,6,8],street:2,nthi:8,even:[0,3,4,5,9],introspect:2,list_of_tcp_and_udp_port_numb:7,"new":[0,7,2,3,4,6,8],net:0,ever:[2,3,9],told:6,ipproto_tcp:7,behavior:[7,4,8],never:[7,3,4],here:[0,1,2,3,4,6,7,8,9],"4xx":0,path:[],interpret:[0,7,2,3,4,8],credit:[],webfact:0,permit:[0,5],studi:9,portabl:[1,3],golden:8,pprint:2,heroku_postgresql_maroon_url:6,wikimedia:[4,8],avenu:2,unix:[0,7,2],brower:5,txt:[0,7,4,6],unit:2,highli:1,yore:8,describ:[7,2,3],would:[0,2,3,4,6,8],init:4,dnt:0,call:[],admin_password:6,typo:4,recommend:6,type:[],tell:[0,7,2,3,4,6],fastcgi:3,relat:[4,9],panach:8,notic:[0,7,2,3,4,6,8],phone:8,unpack:4,addon:6,af_unix:7,join:[0,3],flaskenv:3,restor:[4,6],setup:[4,6,8],work:[],spec:[3,9],conceptu:8,introduc:[1,4,5,8],root:[3,6],defer:6,bookapp:3,give:[1,2,3,4,5,6,7],smtp:[],indic:0,unavail:2,want:[0,1,2,3,4,6,8,9],dele:0,end:[0,1,2,3,5,6,7,8,9],learning_journ:[4,6,8],frobozz:0,classifi:2,how:[0,1,2,3,4,5,6,7,8,9],conn:[0,7],env:[3,4],answer:[],verifi:[6,8],perspect:9,updat:[],anon_1:4,after:[3,4,8],superus:4,diagram:4,befor:[0,7,2,3,4,5,6,8],wrong:4,lat:2,beautifulsoup4:2,parallel:9,demonstr:[0,4,5],domin:4,third:3,classmethod:[4,6,8],authzpolici:6,wsapikei:2,greet:0,imposs:4,alias:7,scoped_sess:4,dispar:5,environ:[],incorpor:[3,6],enter:[0,2,3,8],mechan:6,first:[],engine_from_config:[4,6,8],order:[1,2,4,5,6,8],hob7v7guwir4n1v:6,oper:[1,8,6,7],belong:[0,7,6],over:[7,2,4,5,8,9],fall:4,becaus:[0,3,4,6,8],jpeg:0,privileg:[3,4],keyboard:0,flexibl:4,vari:[0,7],digest:9,img:0,fix:[0,3,4,8],simple_cli:0,toolbelt:[6,8],comprehend:9,better:[7,2,4,6,9],offic:0,drawback:5,persist:[],comprehens:9,"1xx":0,easier:[9,4,8],descend:2,them:[0,1,2,3,4,5,6,7,8],thei:[0,1,2,3,4,5,6,7,8,9],id73:3,safe:[0,4,6],"break":[],sqlite3:4,bang:3,jinja2:[],initializedb:[4,6],rental:[],choic:[1,2,4,5,7,9],acquisit:2,retr:0,bonu:2,getvalu:3,rocki:6,timeout:2,each:[0,1,2,3,4,5,6,7,10],debug:[0,3,4,9],went:[0,8],side:[],bone:8,mean:[0,7,2,3,4,5,6,8],laboratori:1,doug:5,logo:8,extract:[],network:[1,2,5,8,9,7],goe:[2,4,8],god:4,dsn:0,got:[0,3,4,6,8],forth:[0,3],navig:[],rail:0,nightmar:4,situat:[0,4],free:[6,8],standard:[0,1,2,3,4,5,6,7,9],hand:[2,6,8],uiuc:3,puzzl:3,traceback:3,static_url:8,filter:[],mvc:[],iso:2,unabl:6,subtl:2,confus:[7,8],user:[],rang:[0,1,2,8],render:[],independ:[0,4],rank:2,hook:[3,4],instruct:[7,2,3,4,9],alreadi:[0,7,2,4,6,8],messag:[],agre:3,fantast:[1,4,9],primari:[4,8],top:[2,4,6,8],"0x1103e38d0":4,sometim:[0,4],imap4rev1:0,necessarili:3,master:[4,6],too:[0,7,2,3,4,8,9],tom:4,my_view:8,consol:4,namespac:2,tool:[0,1,2,3,4,5,6,7,9],setuptool:4,took:4,incur:6,next_sibl:2,target:[2,3],keyword:[2,6,8],provid:[],tree:[4,6],project:[],matter:[2,6],arriv:8,minut:[0,7,8],latitud:2,rad:7,fashion:[2,3],close:[0,7,8],ran:[0,4],walkscor:2,modern:[4,5],mind:9,mine:0,raw:0,af_sna:7,pylon:4,increment:[2,3],"__main__":[2,3,6],seen:[0,7,2,3,4,6,8],seem:[3,6],seek:[4,6],strength:5,latter:4,thorough:[9,8],"0x1103e3fd0":4,shelf:4,transmit:4,hypertext_transfer_protocol:0,simplifi:[],endfor:[6,8],plenti:5,though:[0,2,6,9],usernam:[0,6,8],object:[7,2,3,4,6,8,9],guess_typ:0,minask:2,regular:4,alan:[4,8],bsd:7,models_id:4,typ:7,maria:7,tradit:8,don:[0,1,2,3,4,6,7,8,9],doc:[0,2,4,6],flow:[],doe:[],declar:[3,4,8],unchang:9,passwordfield:6,section:[0,9,3,4,8],dot:8,asid:6,opposit:8,random:6,syntax:[],radio:8,protocol:[],involv:6,absolut:8,exactli:[0,7,8],layout:[2,9,5,6,8],menu:[0,3],explain:[4,9],configur:[],apach:[],restaur:2,kessler:9,disert:9,matchdict:[6,8],rich:[1,5],folder:[7,3,4,6,8],resolve_uri:0,patter:8,stop:[],reconstruct:3,bat:9,bar:[0,7,2,8],ietf:[0,3],baz:[0,2],method:[],buffsiz:7,reload:[0,3,6],bad:0,metadata:4,steal:[4,6],title_info:3,respond:[],get_const:7,disucss:5,serve_forev:3,result:[],respons:[],fail:[0,7,6],simpl:[],best:[2,4,6],awar:6,pythoncert:[4,8],databas:[],wikipedia:[0,7,2,4,9],urllib:[2,5],yet:[0,7,4,6,8],figur:[7,3,4],score:[],outstand:8,awai:[],enlighten:9,approach:[],attribut:[2,4,6,8],extend:[],weak:5,extens:[0,1,2,6],html5:[5,8],toler:2,pull:[],protect:0,accident:7,expos:3,howev:[3,4,8],against:[0,3,6,8],logic:[4,6,8],browser:[0,7,2,3,4,5,6,8],com:[0,7,2,3,4,6,8],compromis:1,get_appset:[4,6,8],assur:7,trunk:8,trust:4,assum:[7,2,4],speak:[],bathroom:2,chrome:0,add_rout:[4,6,8],three:[],been:[2,3,4,6,8],much:[0,7,2,3,4,5,8,9],redeploi:6,interest:[2,9],basic:[],futur:[7,5],raise_for_statu:2,tini:2,quickli:[0,4],life:[0,2,5],xxx:3,setup_log:[4,8],telnet:7,argument:[0,7,2,3,4,6,8],matchpath:3,"catch":0,build_env:3,ugli:0,ident:6,servic:[],properti:[7,2,3,6],commerci:4,apikei:2,neat:0,seven:0,pyramid:[],af_appletalk:7,shebang:3,toolkit:0,kwarg:2,fnhg:0,varchar:4,tediou:[2,4],fedorahost:2,sever:[2,6,9],datetim:2,perform:[4,8],suggest:[0,6],make:[],couchdb:4,craigslist:2,complex:[],split:0,version_str:3,complet:[0,1,2,3,4,5,6,7,8,9],rfc822:0,nic:7,hang:0,xyzzi:0,nix:3,rais:[0,7,2,3],editcom:2,"548kb":4,thu:[7,2,3],hypothet:4,inherit:[3,4,8],client:[],endif:[6,8],gzip:0,programm:2,everyth:[0,1,2,3,4,6,8,9],moreov:0,left:[4,6,9],identifi:[0,3,8],just:[0,7,2,3,4,6,8,9],photo:[2,3],human:[0,2,9,8],mysql_length:4,languag:[],previous:[],alchemi:4,easi:[2,9,4,6,8],shout:8,"8bitmim":0,httpfound:[6,8],els:[0,2,4,6,8],save:[0,2,4,6,8],hat:0,gave:4,opt:0,applic:[],race:[6,8],mayb:3,preserv:[],parse_var:4,render_markdown:6,elabor:6,ineffici:2,apart:[2,9,8],imap4_port:0,response_method_not_allow:0,specif:[7,2,3,4,5,6,8,9],arbitrari:[7,4,6],reload_templ:4,manual:4,ncsa:3,hung:0,install_requir:4,underli:[1,5,7],www:[0,7,2,3],right:[0,1,2,3,6,8,9],old:4,"0db8":7,nfrom:4,intern:[0,3],successfulli:[2,3,4],craiglist:2,transmiss:[0,7,9],total:[3,6],bottom:7,ssh2:9,exectut:4,overcom:3,condit:[0,3],foo:[0,7,2,6,8],fieldstorag:3,localhost:[0,3,6,8],mailgat:0,core:9,particular:[9,4,6,8],wandering_angel:3,confer:5,bolt:2,repositori:[7,4,6,8],post:[0,2,3,6,8],"super":0,unsaf:0,obj:[4,8],surround:8,dinner:0,log_buff:0,commit:[2,3,4,6],sept:2,produc:[7,3,5],encod:[0,2,6],bound:[7,4],curios:5,down:[2,6,8],creativ:[4,8],bufsiz:3,storag:[0,4],git:[4,6],deal:[7,9],utmcsr:0,support:[0,1,2,4,5,6,8,9],hypermedia:2,avail:[7,2,4,6,8],reli:6,request_method:[3,6],editor:[2,3],overhead:2,get_address_info:7,rcpt:0,fork:[0,2,3],head:[0,7,2,6,8],medium:[7,2],form:[],offer:[9,3,4,5,8],forc:[2,9],hear:7,icmp:7,codehilit:6,absent:3,attr:[2,8],paramiko:9,strip_filt:8,maximum:7,until:[7,4],dens:1,absenc:3,fundament:[1,5],emit:3,nnn:2,featur:[3,4,5,6,9],af_decnet:7,"abstract":4,decrypt:0,proven:4,exist:[0,3,4,6,8],glanc:9,check:[0,2,3,4,6],assembl:8,encrypt:[6,9],mashup:[],when:[0,7,2,3,4,6,8,9],role:8,jone:0,test:[],webob:4,roll:6,realiti:2,node:2,intend:[1,4,7],af_unspec:7,urllib2:[2,5],djangocon:9,intent:1,iterm:3,sql:[4,5],receiv:[],longer:7,bullet:6,anywher:3,pbkdf2:6,initialize_learning_journal_db:[4,6],ignor:[4,9],time:[],push:[0,4,6],serious:2,osx:[0,6],concept:[1,4,5,6,7,9],chain:[4,8],skip:4,consum:[7,5,9],focus:9,invent:[2,4],supplement:9,skim:9,row:[],depend:[4,5,6,8],flask:[4,9],graph:8,readabl:[0,2,3,8],unpython:4,a0004:0,a0005:0,certainli:8,a0001:0,a0002:0,a0003:0,must:[0,1,3,4,6,7,8],query_str:3,sourc:[],string:[0,7,2,3,4,5,6,8,9],congest:7,price_span:2,lru:4,kitten:4,ydood:8,my_index:4,brows:[5,8],administr:3,level:[1,2,4,6],did:[],dig:[2,8],ipproto_udp:7,iter:[7,2,3,4],item:[2,3,4,8],team:4,quick:[0,1,3,4,9],imap4:0,dir:[0,7],declarative_bas:4,upper:8,slower:7,thin:7,lstrip:3,htm:2,sign:[0,2,6],restkit:9,cost:6,port:[0,7,3,6],procfil:6,appear:[3,6,8],repli:[],scaffold:4,beautifulsoup:[],current:[7,2,3,4],rst2xml:4,sinc:[7,2,3,4,8],"3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4":6,response_bodi:3,deriv:[2,3,5],urlopen:2,gener:[0,7,2,3,4,6,8,9],unauthor:2,slow:7,address:[],along:[0,1,2,5,9],wait:[],regexp:[3,8],shift:0,queue:7,bob:[0,4],commonli:7,ourselv:[0,6],ipc:7,semant:7,session1:7,extra:[],modul:[0,1,2,3,4,5,6,7,9],prefer:[0,3],repoz:4,seattl:2,visibl:5,marker:8,instal:[],http_:3,smallish:7,market:4,types_map:0,memori:[1,2],univers:9,visit:[6,8],todai:[0,7,2,6,8],live:[],criteria:[0,4],msg:7,tightli:3,chapter:[4,9],idempot:0,maxask:2,walkabl:2,enhanc:5,visual:0,appendix:0,oop:4,postgresql:[4,6],effort:2,content_typ:3,pretend:0,focu:[2,5],whatev:[7,8],purpos:[0,3,4,5,6,8],boilerpl:4,input1:2,stream:[7,4],predict:0,agent:[0,3],topic:[9,8],critic:9,app_factori:4,occur:7,entryeditform:6,alwai:[0,7,2,3,4,6],lxml:2,multipl:4,winter:1,charset:[0,8],write:[],anyon:[3,6,8],pure:2,xhtml:0,map:[],product:[4,6,9],max:[0,6,8],dive:[1,5,6],mac:0,"4th":2,mai:[0,7,2,3,4,6,9],data:[],classroom:4,gethostnam:7,practic:0,divid:[7,4],explicit:8,predic:6,mangl:0,inform:[],"switch":4,cannot:[7,3,8],combin:[1,2,3,4,5,6,8],printenv:3,callabl:[3,8],talk:[0,7,4,5,8,9],shield:5,ydwoh:8,ttl:2,gitignor:4,still:[0,2,4,8],dynam:[0,2,3,5,8],config_uri:[4,6,8],group:[7,3,4],"4z6rvnhte21mpljw5veive0eg57gn":6,concis:5,authorization_polici:6,sec10:0,platform:6,window:[0,2,3,4,6],curli:8,mail:0,main:[0,2,4,6,8],non:0,noj:2,profession:2,killer:5,initi:[0,3,4,6,9],interview:0,safari:0,half:7,now:[0,7,2,3,4,6,8,9],discuss:[7,3,4,5,8,9],introduct:[],term:[1,3,4],name:[0,7,2,3,4,6,8,9],config:[4,6,8],interpr:4,server_softwar:3,separ:[],magazin:[9,8],path_transl:3,januari:1,compil:[6,9],domain:[7,9,4,6,8],"0x105849b90":8,replac:[6,8],individu:[7,2,4,8],continu:[0,7,3,4,5,6],wsgi_1:3,protocol_vers:3,operand:3,happen:[0,7,3,4,8],accomplish:[0,9],space:0,profil:7,formula:2,sensor:2,factori:[3,6],she:6,tmpl:8,myproject:6,earlier:[0,4,6],pseudocod:0,state:[],ch05s03:0,envelop:2,argv:[4,6],orm:[],argn:6,org:[0,7,2,3],"byte":[7,2],search_param:2,care:[0,7,3,9],sign_in:6,wai:[0,1,2,3,4,5,6,8,9],question:[],default_permiss:6,syndic:2,refus:7,thing:[0,2,4,6,8,9],place:[7,2,3,4,5,6,8],router:3,principl:1,think:[7,3,4,5,6,8,9],frequent:4,lambda:8,origin:[2,3,4,5,9],info:[7,3,4,6],directli:[7,2,4,8],onc:[0,7,2,3,4,5,6,8],arrai:2,yourself:[0,1],walkthrough:2,submit:[],open:[],size:[],urin:0,given:[0,1,2,4,5,7,8,9],sheet:8,bookdb:3,convent:0,bookmark:9,imap4_ssl_port:0,eachoth:4,paramt:2,lognam:3,conveni:[2,4],friend:6,prettier:8,especi:[2,3],memo:3,copi:[0,2,3,6,8],huh:0,artifact:4,github:[0,7,2,3,4,6,8],mostli:[0,7,9],date:[],attempt:7,than:[0,7,3,4,6,8,9],png:0,serv:[],were:[7,2,4],posit:7,seri:4,pre:2,internet_protocol_suit:7,sai:[0,3,4,6],angel:3,pro:7,ani:[0,1,2,3,4,6,7,8,9],doctyp:[0,2,8],rent:2,notimplementederror:0,saw:4,shtml:0,engin:[],ipproto_:7,note:[0,7,2,3,4,6,8],wretch:3,take:[0,7,2,3,4,5,6,8,9],green:0,bcrypt:6,noth:[2,3,4,6,8],channel:[0,2,4],begin:[0,7,3,4,5,6,8],sure:[7,2,4,6,8],pain:[4,6],trace:4,normal:[2,4],buffer:[0,7],price:[],pair:[4,5,8],homepag:[2,9],run_cgi:3,sesstion:[],utmccn:0,later:0,drive:9,"8mb":4,quantiti:2,create_al:4,link:[],shortnam:6,preambl:3,gracefulli:0,shot:2,show:[],subprocess:3,checkbox:8,permiss:[3,6],ground:1,xml:[],onli:[0,2,4,6,8],explicitli:[3,4],"true":[0,7,2,4,6,8],transact:[7,4,6],activ:[],enough:[0,4,6],dict:[7,2,4],analyt:6,startswith:7,nearli:4,variou:[4,5,8],get:[],mung:0,clang:4,repo:[2,3],ssl:0,tailor:0,ssh:7,reveal:3,entryfactori:6,yield:2,authenticated_userid:6,draft:0,where:[7,2,3,4,6,8],summari:2,wiki:[0,7,2],n10:8,lng:2,web_application_hybrid:2,detect:6,review:[0,7,3,4,6,8],enumer:6,label:[6,8],getattr:7,between:[0,1,2,3,4,5,7],"import":[0,7,2,3,4,6,8],across:[1,2,5,7],parent:[3,4],elladan:7,tut:0,cycl:[4,8],portion:[3,8],come:[0,2,3,4,6,8],fit:[2,5],tutori:[9,3,5,8],wherin:4,improv:[0,3,4,6],among:[7,4,5,8],intitalizedb:4,color:6,unittest:5,inspir:2,dispatch:[],"__class__":2,exploit:3,imad1:0,artu:0,coupl:[7,2,3,4],rebuild:0,hardli:2,mark:6,evangelista:[4,8],workshop:1,valueerror:[2,3],extract_list:2,avian:7,zope:4,emphas:1,doesn:[0,7,2,3,4,6,8],docxmlrpcserv:5,lectur:[1,5],howdi:8,those:[0,2,3,4],"case":[0,9,3,4,8],interoper:2,cast:[2,4],outcom:[0,4],scum:3,python_web:[4,8],ehlo:0,zipcod:2,advantag:[4,6],stdout:[7,3,4],canon:[7,3],worri:[7,6],blah:0,reqeuest:3,smalltalk:4,develop:[0,1,2,3,4,5,6,8,9],author:[3,5,6],cc0:[4,8],same:[0,7,2,3,4,5,6,8,9],epoch:2,html:[],pai:[2,6],document:[],week:[0,1,2,3,4,5,6,7,8,9],finish:[],assist:[3,4],someon:6,driven:[0,8],capabl:3,http_host:3,add_rount:6,mani:[0,7,2,3,4,6,8,9],extern:9,appropri:[7,3,5,6,8],"__acl__":6,markup:6,without:[7,2,3,4,8],promis:7,model:[],nosql:4,excel:[9,8],resp:[0,2],rest:[],interrupt:0,kill:[0,4],aspect:[4,5,6,8],polish:[],flavor:2,nam:7,heffalump:7,versu:1,hint:0,except:[0,7,3,4],littl:[3,6,8],apache2:9,blog:[0,5],ws_score:2,pile:2,blob:6,exercis:[],vulner:0,real:[],tranmiss:7,around:[7,2,3,6,8,9],read:[],psd:2,makin:8,traffic:0,mon:[0,2],redqueen:0,socket_tool:7,intel:0,whitespac:[0,2],integ:[7,4,6],server:[],benefit:[0,7,5],either:[0,8],cascad:8,output:[],manag:[7,4,6],fulfil:6,ipproto_ip:7,definit:8,"2xx":0,exit:4,posgresql:6,notabl:0,af_inet6:7,power:[7,4,5,6,8,9],tdd:0,broken:0,"__name__":[2,3,6],src:8,deflat:0,central:4,acl:6,microframework:4,srv:3,"19t01":6,act:[2,3],mytempl:[4,8],effici:1,consid:[0,9,3,4,8],status_cod:2,console_script:4,isoformat:2,inbox:0,strip:[2,8],your:[],igmp:7,loc:2,buffer_s:7,httpnotfound:[6,8],her:6,set_authorization_polici:6,aren:[4,6],lon:2,start:[],interfac:[0,7,3,4,5,6,9],low:1,lot:[0,9,4,8],resum:2,"0x10b075ed0":4,machin:[1,2,3,4,5,6,7,8,9],hei:7,svn:8,handle_request:3,tupl:7,categor:0,congratul:6,card:7,notat:[2,8],dirti:[2,4],possibl:[7,2,3,9,8],"default":[7,3,4,6,8],start_respons:3,clone:[7,4,8],gone:4,uid:0,creat:[],certain:[0,7,2,4],deep:[6,9],strongli:6,file:[0,1,2,3,4,5,6,7,8],fill:[3,6,8],again:[0,7,2,3,4,5,6,8],models_valu:4,googl:[],compel:4,field:[2,3,4,6,8],valid:[0,2,6,8],compet:2,copiou:9,pathnam:[0,7],you:[0,1,2,3,4,5,6,7,8,9],intention:0,juic:8,sequenc:0,symbol:[7,8],briefli:8,transceiv:7,pool:9,reduc:4,"1b6":0,wife:9,directori:[0,2,3,4,5,6,8],descript:[],potenti:[5,6],escap:6,unset:3,represent:[7,2,4],all:[],forget:6,breadth:9,forbidden:6,scalar:4,abil:[0,4],cameron:2,follow:[0,7,3,4,5,6,8,9],disk:0,content:[],script_nam:3,af_inet:7,articl:[4,6,8],tail:6,norm:0,hill:2,sound:2,liter:4,chameleon:8,far:[7,4,9],faq:0,mcdonough:9,util:[0,7,4,9],verb:0,fan:2,fam:7,veri:[0,7,3,4,5,6,8,9],ticket:6,simple_app:3,webmast:0,list:[],last_nam:8,adjust:4,stderr:[0,3],small:[2,3],correct:[0,7,8],neighborhood:2,your_script:[2,3],sync:5,past:[4,6],design:[1,2,3,4,5,6,7,8,9],pass:[0,7,2,3,4,5,6,8,9],further:[],integr:1,by_nam:6,sud:[2,9],sum:8,abl:[0,2,3,4,5,6,8],brief:[5,9],delet:[0,1,2,6],version:[0,1,2,3,4,5,6],tickl:2,primary_kei:[4,6],intersect:8,deepli:1,"public":[2,6,8],contrast:1,craigslist_result:2,hasn:2,full:[1,2,3,4,5],hash:[3,6],berkelei:9,inher:[2,5],goodby:0,strong:[6,8],modifi:0,rfc3875:3,valu:[0,7,2,3,4,6,8],ahead:[7,2,3,6,8],popen:3,prior:6,pick:[6,8],action:[7,2,4,5,6,8],add_static_view:[4,8],via:[2,3,4,6,8],transit:2,filenam:0,href:[2,3,6,8],famili:[],establish:[7,2],select:[0,1,4],hexadecim:2,distinct:0,ctrl:0,regist:[7,6],two:[0,7,2,3,4,5,6,8,9],taken:[2,6],more:[],flaw:8,mozilla:[0,9,8],flag:[0,7,6],addcom:2,jsonp:8,known:[7,2,6],cach:[0,4],none:[0,7,2,3,4,6,8],endpoint:[0,7,2],s3cr3t:6,hour:[0,7,5,8],hous:2,outlin:[],dev:[2,3,6],venusian:4,remain:[6,9],paragraph:2,learn:[],abandon:2,rst2html:4,def:[0,7,2,3,4,6,8],ndate:7,prompt:[7,3,4,5],scan:[4,8],challeng:[0,2,6],registr:6,share:[0,7,3,4,6,8],accept:[],explor:[1,2,4,5,7],phrase:[4,8],login_form:6,cours:[],goal:[2,4],first_nam:8,secur:[],rather:0,anoth:[],comfort:[1,8],"__init__":[4,6,8],csv:[4,8],loginform:6,css:[],isn:[0,2,3,8],"545kb":4,resourc:[],referenc:8,okai:[0,2,4],associ:5,"short":[3,9],footer:8,proto:7,django:[],caus:4,egg:4,constitu:8,help:[0,1,2,4,5,7,8,9],"912ft":2,mainthread:[4,6],hypertext:9,stackoverflow:0,soon:[7,8],listval:3,held:2,through:[0,1,2,3,4,5,6,8,9],pane:0,paramet:2,style:[0,4,6,8],psycopg2:[4,6],relev:[2,4],pserv:[6,8],might:[0,7,2,3,4,8,9],alter:3,pce:[1,8],tri:8,good:[0,1,2,3,4,5,6,9],"return":[0,7,2,3,4,6,8],pollut:4,cew:4,framework:[1,4,5,6,8,9],maildrop:0,gethostbynam:7,msg_part:7,httplib:5,eventu:4,troubleshoot:6,authent:[],easili:[2,9,4,8],achiev:2,http_server:0,compris:4,found:[0,3,4,8],unicod:[2,4,6,8],button:8,hard:[4,5,6],idea:[0,7,2,4,5],procedur:2,realli:[0,7,2,6,8,9],connect:[],beyond:[],orient:[],some_valu:3,ftp:7,publish:[3,4,9],research:4,bubbl:8,etag:0,health:2,authnpolici:6,print:[0,7,2,3,4,6,8],uwpc:[4,8],some_appl:3,"__utmz":0,postgr:6,proxi:[],uncommit:4,advanc:0,new_model:4,guess:0,cooki:[0,6],reason:[0,2,3,8],base:[0,1,2,4,5,6],ask:[0,7,4],"__utma":0,earliest:2,recv:[0,7],bash:[3,6],applict:3,by_id:[4,6,8],perhap:[0,8],perman:[0,4,6],find_al:2,assign:[0,1,2,3,4,5,6,7,8],request_protocol:3,"85a3":7,feed:2,oserror:3,set_authentication_polici:6,obviou:[0,2],prevent:[3,6],feel:8,number:[0,7,2,4,5,6,8,9],placehold:[0,8],done:[0,7,2,4,6,8],least:[2,3,4,8],blank:[0,3],miss:[2,3,4],fanci:2,differ:[0,7,2,3,4,5,6,8],script:[],interact:[],pbkdf2passwordmanag:6,construct:[],getservbyport:7,order_bi:4,statement:4,zeromq:9,store:[4,6],luckili:[0,2,4,6,8],parc:4,option:[0,7,2,3,4,6,9],relationship:[7,5],behind:[4,9],echo_socket:7,part:[],pars:[],logged_in:6,off:[0,9,4,6,8],fred:4,kind:[0,7,3,6,8],grew:0,roi:2,remot:[7,2,4,6,9],remov:[7,4,6],str:[3,4],relative_to:6,consumpt:[5,9],aclauthorizationpolici:6,payload:0,"_socketobject":7,expir:6,properli:[0,2,5,8],"null":2,imagin:[6,8],built:[0,2,4,5,6,8,9],lib:[0,3,4],remote_addr:3,self:[3,6],click:[3,8],also:[0,1,2,3,4,5,6,7,8,9],build:[],cgi_1:3,textareafield:8,brace:8,pubdat:2,http_user_ag:3,distribut:4,lighttpd:3,kai:4,previou:[0,2,5],reach:7,chart:[4,8],most:[0,7,2,3,4,5,6,8],plai:[],wahoo:0,plan:6,addr:[0,7,2],clear:[0,7,5],cover:[0,1,4,6,9],clean:[],usual:[7,4],wsgi:[],hyper:0,latlng_tmpl:2,v12:0,getcom:2,session:[],particularli:[6,8],fine:[0,8],find:[],access:[0,1,2,3,5,6,9],giant:3,execut:[],pretti:[0,2,3,4],solut:[],"172kb":4,templat:[],factor:4,smtplib:5,darwin:4,hit:2,unus:4,"__file__":3,express:[1,3,8],resent:7,famous:3,googleapi:2,"3xx":0,restart:[0,3,6,8],rfc:[0,3,9],common:[0,7,2,3,4,5,6,8],nowher:4,wrote:6,certif:[1,8],set:[],dump:2,sep:2,overwhelm:4,"0x1103e3f50":4,af_ipx:7,see:[0,7,2,3,4,5,6,8],bare:8,sea:5,arg:[3,4],reserv:[0,7,2],someth:[0,2,3,4,6,8],particip:1,topmost:7,won:0,subscript:8,pastedeploi:4,altern:[],javascript:[2,8],isol:4,mailbox:0,"31m":6,cgi_sum:3,both:[0,7,2,3,4,5,6,8,9],blabber:4,last:[0,7,3,4,6,8],delimit:0,lignt:5,context:[3,6,8],collect:[4,8],load:[0,2,3,5,6,8],markdown:[5,6],simpli:[0,2,3,4,5,6,8],point:[],instanti:[2,4],header:[],route_url:[6,8],param:[2,6],suppli:[2,3,6],batteri:2,comput:[],throughout:1,xkcd:0,backend:3,damp:3,empti:[0,7,3,4,6,8],pgbackup:6,bs4:2,secret:[3,6],damn:2,rstpep2html:4,"55c0287d4ef21f15b97eb1f107451b88b479bff":6,fire:[0,2,3,4,6,8],imag:[0,2,8],cryptacular:6,append:[0,3,4,6],coordin:4,understand:[0,1,5,6,9],func:3,educ:3,remote_us:3,look:[],solid:[1,6,9],add_walkscor:2,histor:[1,9],"while":[0,7,2,3,4,5],"54f7e4d":6,homework:[],abov:[0,7,2,3,4,5,6],error:[],fun:8,everyon:6,loop:0,readi:[0,7,2,4,6,8],unintuit:2,readm:4,itself:[2,3,4],spong:3,limit:[7,2],"3f80f":0,decor:8,grant:[3,6],remote_id:3,wherein:[2,3,8],decod:2,octal:2,conflict:[2,4],b59b7c3:6,communc:7,moment:[7,2,4,6,8],temporari:8,"__or__":7,robust:6,stack:[],recent:[0,4],lower:[7,2,9,8],task:[],find_packag:4,entri:[],spent:7,doodi:8,pickl:4,person:[7,6,8],expens:[7,3,6],elev:0,connnect:7,cedar:6,macintosh:0,spend:[7,8],explan:0,make_wsgi_app:4,"__path__":4,shape:1,mysql:4,session05:0,session04:[7,3],session01:7,session03:2,session02:[0,8],a0006:0,restructuredtext:4,global_config:[4,6,8],populate_obj:[6,8],armin:9,appli:[5,6,8],input:[],cgi_2:3,bin:[2,3,4,6,8],bim:2,march:1,format:[],response_ok:0,folk:3,server_socket:7,bit:[],formal:[0,3,4],httpexcept:8,leisur:9,ipproto_icmp:7,docutil:4,altough:2,manifest:[4,5],http_server_at_hom:0,princip:6,popular:[3,5,6],often:[0,7,4,9],some:[],back:[0,7,2,3,4,5,6,8,9],understood:7,uidnext:0,sampl:[6,8],ljenv:[4,6,8],formatted_address:2,virtualenv:[],scale:6,cgihttpserv:[3,9],sock_dgram:7,pep:3,id3:3,per:[0,7,2,6],larg:[2,3],slash:3,cgi:[],intial:0,run:[],authtktauthenticationpolici:6,simple_serv:3,viabl:4,step:[],crlf:0,"resum\u00e9":2,constraint:9,materi:[10,5,9],prove:6,"0x100563c90":7,exc_info:3,block:[0,7,2,6,8],path_info:3,supplementari:[],miracl:0,within:3,ensur:[0,7,4,6],chang:[0,2,3,4,5,6,8,9],lesson:9,html5shiv:8,inclus:2,span:[2,6],errno:3,sock:[0,7],stylesheet:8,fast:4,custom:[],heroku:[],includ:[0,1,2,3,4,6,7,8],suit:[5,9],term_program:3,larri:4,repeatedli:[7,4],great:[0,2,3,4,5,8,9],pwd:4,game:8,atol:6,atom:2,line:[0,1,3,4,6,8],translationstr:4,row1:2,utf:[0,2,8],consist:[0,3],latlng:2,highlight:[],similar:[0,2,3,4,5],mymodel:[4,6,8],sesson:0,constant:7,parser:[2,9],chao:[2,6],ws_descript:2,repres:[0,2,4,5,8],gecko:0,response_not_found:0,titl:[0,2,3,4,8],scrape:[],xb2:2,nav:8,librari:[0,1,2,3,4,5,6,7,8,9],nice:[0,2,3,5,6,8],llvm:4,mongodb:4,elsewher:[7,6],meaning:4,csrftoken:0,longitud:2,esr:0,index_pag:[6,8],algorithm:6,mimetyp:0,rst2latex:4,parse_sourc:2,sign_in_out:6,depth:[1,9],came:6,hello:[0,9,3,8],getaddrinfo:7,code:[],queri:[2,3,4,6,8,9],sqlserver:4,ljshell:8,edu:[7,3],a_pag:2,bathtim:8,tomayko:9,friendli:2,send:[],becam:2,aris:4,sent:[0,7,2,3,4,5,6,8],charlesproxi:0,rollback:4,spool:0,add_address:2,runnabl:3,recip:6,magic:8,joel:6,geograph:2,hive:3,"try":[],rfc5321:0,kit:9,entry_point:4,hasnochildren:0,pleas:[2,4,5,9],impli:3,smaller:7,natur:8,uniqu:[2,4,6,8],video:9,download:[4,8],odd:8,html5lib:2,client_address:7,compat:[3,4],index:[0,3,4,6,8],poke:[2,3],compar:[0,6],resembl:8,cell:2,can:[0,7,2,3,4,5,6,8,9],len:[0,7,2,3,4],bodi:[0,2,3,4,6,8],loadapp:6,intercept:6,let:[0,7,2,3,4,6,8],myhost:3,becom:[2,4],someexamplerssdomain:2,convert:[2,4,6,8],convers:9,technolog:[7,6],fetch:[],stringval:3,rdf:2,aliv:[0,7],typic:[3,4],purplemattfish:2,maker:8,chanc:5,response_head:3,firefox:0,ago:[7,6],parse_request:0,win:0,app:[],gatewai:[3,5],apt:2,api:[],duck:2,apa:2,from:5,zip:2,commun:[],upgrad:6,next:[0,7,2,3,4,6,8,9],websit:[2,4,5,6,8],few:[],usr:[3,4],remaind:3,sudo:4,scgi:3,ipoac:7,babi:8,trail:3,train:[4,8],somesecret:6,account:8,retriev:[3,8],scalabl:4,alic:6,annot:[],tag:[0,2,6,8],universal_newlin:3,meet:5,plug:0,thie:9,control:[],sqlite:[4,6],tar:4,process:[],lock:6,preformat:6,high:4,af_:7,tab:0,onlin:[],serial:2,cache_max_ag:[4,8],gcc:4,cewing_socket:7,sit:9,client_socket:7,pyramid_jinja2:8,copyright:4,instead:[0,4,6,8],chri:9,stand:[4,8],delai:4,initialzedb:6,attend:1,other_sess:4,"6mb":4,class_:2,attent:6,tier:6,philosophi:9,physic:[7,8],drop:[7,8],add_al:4,bind:[],correspond:[7,3],element:[],webroot:0,runapp:6,prettifi:2,allow:[0,1,2,3,4,5,6,7,8,9],sendal:[0,7],elif:8,insight:5,bunch:7,uiqj579igrbrebhmjqnth8pffaz2qrj:0,verify_password:6,"0x10046cec0":7,infrastructur:6,bye:0,recept:7,greater:9,handl:[],demoenv:4,spell:8,dai:[0,5,8],auth:6,httplib2:9,close_fd:3,front:5,"8a2e":7,tilkov:9,mashup_:2,all_book:3,somewher:[2,6,8],anyth:[2,4,6],edit:[],entrycreateform:[6,8],nameerror:[0,3],soupenv:2,slide:[1,5],mode:4,autoincr:6,beneath:6,pygment:6,item_templ:3,bump:0,sessionmak:[4,8],meta:[2,3,8],"static":[],brittl:2,our:[],wander:3,ws_link:2,out:[],variabl:[3,6],defend:9,facto:2,categori:4,suitabl:6,rel:8,cwd:3,red:0,clarifi:4,insid:[0,7,2,3,4],frank:8,manipul:[3,4],sock_:7,standalon:2,zodb:4,dictionari:[2,3,6,8],downei:2,auth_secret:6,first_lin:0,complianc:6,cri:[0,8],"0x1103d9f10":4,could:[0,3,4,6,9],lexer:6,put:[],keep:[0,1,2,3,4,5,7],length:[0,3,4,6,8],enforc:9,outsid:[3,4,6],geometri:2,waitress:6,softwar:[0,7,2,4,6,8],isbn:3,pygments_styl:6,qualiti:5,echo:[0,7,3,5],exact:8,getservbynam:7,match_param:[6,8],owner:[2,8],"long":[0,7,2,3,4,5,6],strict:2,licens:[4,9],creator:9,mkdir:4,system:[1,2,3,4,6,7,8,9],wrapper:[7,2],attach:6,imap4_ssl:0,termin:[0,7,3,4,6],"final":[0,1,3,4,5,7,8],ipv4:[7,9],udp:[7,9],shell:[3,4,6],fnhg5:0,ipv6:[7,9],fnhg2:0,fnhg3:0,"8d3":7,dyno:6,textfield:[6,8],nobodi:3,haven:2,route_nam:[6,8],embodi:[4,6],roberto:8,structur:[1,2,3,5,8,9],charact:[2,4,6,8],sens:8,sensit:[0,6],f12:0,unstag:4,stdin:3,favorit:0,py2:4,py3:4,deprec:4,requri:6,have:[],tabl:[2,3,4,6,8],need:[0,1,2,3,4,6,7,8,9],turn:[0,4,5,6,8,9],villaini:3,afraid:[0,4],lightweight:[2,9],min:[6,8],rout:[],chief:6,which:[0,7,2,3,4,5,6,8,9],from_encod:2,authentication_polici:6,soap:[],singl:[0,1,2,3,4,5,6,7,8],unless:7,ds_store:4,deploy:[],whl:4,who:[6,8],oracl:4,discov:[0,2,3],deploi:[],pyc:4,segment:8,payment:6,url:[],request:[],face:8,pipe:8,build_db:6,deni:[3,6],determin:[0,7,3,4,5,6,8],fact:[7,3,5,6,8],jkorpela:0,text:[],bring:[0,8],server_nam:3,bedroom:2,rough:4,identityset:4,redirect:[0,2],locat:[],auth_typ:3,"2br":2,should:[0,1,2,3,4,5,6,7,8],jan:[0,7],suppos:9,"3e1cb03b":0,"__tablename__":[4,6],local:[7,2,4,6,8],hope:[2,9],freddi:8,move:[0,7,2,4,5],satisfact:6,familiar:[0,1,3],pypi:4,db8:7,notimpl:2,increas:9,smash:[9,8],experi:5,enabl:[0,1,3,6],organ:9,rage:0,"0x10e7d6b90":8,stuff:[3,8],"0x1005b8b40":7,contain:[0,7,2,3,4,5,6,8],programmableweb:2,paster:[4,8],view:[],dbsession:[4,6,8],knowledg:[1,4,9],packet:[7,9],book_id:3,closer:4,statu:[2,3,4,6],wire:[7,6,8],correctli:[0,8],uidvalid:0,pattern:[9,4,5,8],make_serv:3,creationflag:3,tend:4,written:[9,3,5,8],progress:[1,5],neither:[2,9],flickr:[2,3,6],email:[0,7,4],mysite1:0,sole:[0,7,2],kei:[2,3,4,6,8],gethead:3,job:[0,4,6,8],entir:[2,4],jog:1,permanentflag:0,egg_info:4,addit:[1,9,3,8],revers:[],dobb:0,startupinfo:3,trove:5,equal:3,wsgiref:[],configpars:4,etc:[0,7,4,8],instanc:[2,4,6],equat:7,wear:0,comment:[0,7,2,8],typifi:4,lang:8,this_id:8,rfc2616:0,chmod:[3,6],walk:[],tuesdai:1,admin:[5,6],orig:2,quit:[0,7,3,4,5,6,8,9],addition:4,insuffici:0,json:[],treat:[2,3],rpclib:9,immedi:7,treasur:5,presenc:3,sock_stream:7,tranform:2,bulk:4,untrack:4,saner:2,hiddenfield:6,behalf:8,togeth:[],minim:[0,9],present:[],preexec_fn:3,ingredi:4,multi:[0,3],"14t17":2,plain:[0,3,4,5,6,8],harder:2,contextu:2,defin:[7,2,3,4,8,9],wild:[2,5],dbapi2:4,endblock:[6,8],layer:[0,7,4,9],omgwtf:2,ripe:5,demo:8,site:[2,4,5,6,8],server_protocol:3,incom:[],whirl:[7,2,6],pyramid_chameleon:[4,8],welcom:4,parti:0,matthew:2,failur:[0,7,2,3],difficult:3,http:[],hostnam:7,denot:3,absorb:4,upon:3,"5xx":0,student:[1,5],php:[2,3],api_url:2,fenced_cod:6,center:[0,2,3],well:[0,1,2,3,4,6,7,9],exampl:[],command:[0,1,3,4,6,8],filesystem:[0,5,8],undefin:8,latest:[2,9],deletecom:2,distanc:7,less:[0,7,3],kramer:6,tcp:[],paul:2,emtpi:4,web:[],wed:0,nullabl:[6,8],smith:0,add:[],book:[2,3,8],polici:[5,6],logger:4,match:[0,7,2,3,6,8,9],gmt:0,candid:2,branch:4,xmlrpc:[5,9],agnost:[7,8],crud:0,piec:[3,8],arguabl:5,five:0,know:[1,2,3,4,6,7,8,9],unseen:0,password:[0,6,8],recurs:2,lastbuildd:2,python2:[3,4],insert:6,like:[],success:[],echo_serv:7,lose:4,architectur:2,page:[0,1,2,3,4,5,6,8,9],backlog:7,didn:[4,9],specifi:[2,3,8],captur:[4,8],linux:[0,6],utmcmd:0,"export":3,mistak:4,proper:[0,7,2,8],home:[0,4,6,8],transport:[],tmp:7,guid:[2,9],gethostbyname_ex:7,programdata:3,lead:[3,5,8],broad:1,octet:0,leav:[4,8],settl:3,server_port:3,u00e9:2,investig:[0,5,8],journal:[3,4,5,6,8],usag:[1,2,4],facilit:9,host:[0,7,3,4,6],although:[0,4,8],wtttzy:6,about:[],actual:[0,7,2,3,4,6,8],socket:[],world:[9,3,4,5,8],column:[4,6],herokuapp:6,datagram:[7,9],carrier:7,constructor:7,fals:[7,2,3,6],remote_host:3,own:[7,2,3,4,5,6,8],washington:7,easy_instal:[2,4],automat:[7,2,4,8],guard:3,hoohoo:3,hellmann:5,leverag:6,w3c:2,mod_python:3,val:[2,4,8],allusersprofil:3,transfer:[0,2,6,9],rcp:2,spread:2,appl:4,wouldn:2,arg1:6,"var":[0,6],"function":[0,7,2,3,4,5,6,8],respositori:0,getlist:3,versioner_python_prefer_32_bit:3,xerox:4,bui:2,gain:[1,4,5,6],bookshelf:3,inlin:[7,4],count:4,gateway_interfac:3,made:[0,7,2,3,4,6,8,9],view_config:[6,8],whether:[0,2],wish:[3,4,6,9],googlecod:8,displai:[3,6,8],troubl:9,below:[7,3,6],pcreat:[4,8],problem:[],"int":[3,4,6],dure:5,pid:[2,6,8],ephemer:[7,4],implement:[],ini:[4,6,8],pip:[2,4],duru:4,probabl:[3,6,8],sharabl:3,crummi:2,detail:[],virtual:[0,3,4],new_valu:3,other:[0,1,2,3,4,5,6,7,8,9],lookup:[7,2,8],special:[2,4,5,6,8],rememb:[0,7,2,3,4,6,8],stat:0,repeat:3,allowedvers:0,dewei:0,echo_cli:7,log:[0,4,6,8],fiddler2:0,"_queri":6,syllabu:4,reliabl:7,xmlrpclib:5,rule:[0,7,4],bcryptpasswordmanag:6,models_nam:4,cgi_bin:3,htmlparser:[2,5]},objtypes:{"0":"py:class"},objnames:{"0":["py","class","Python class"]},filenames:["presentations/session05","index","presentations/session07","presentations/session06","presentations/session01","outline","presentations/session03","presentations/session04","presentations/session02","readings","presentations/index"],titles:["Session 05","Internet Programming with Python","Session 07","Session 06","Session 01","Course Outline","Session 03","Session 04","Session 02","Supplementary Course Readings","Course Presentations"],objects:{"":{small:[3,0,1,""],center:[2,0,1,""],tiny:[2,0,1,""]}},titleterms:{wsgi:[3,5,9],code:2,protocol:[0,7,5,9],entri:6,execut:3,show:3,text:2,concern:4,all:[7,2],tcp:[7,5,9],syntax:6,time:[0,7,2],session:[0,7,2,3,4,5,6,8,9],polish:6,find:2,languag:0,row:2,xml:2,web:[2,3,4,5,9],terminolog:4,locat:2,configur:6,activ:4,html:2,send:7,environment:[],add:[2,8],program:1,exercis:3,persist:[5,9],enchilada:3,input:8,homework:[0,7,2,3,4,8],real:0,deactiv:4,sourc:2,get:[7,2,3,8],preserv:2,big:2,rout:8,stop:[],"break":[0,7,2],test:[0,7,2,3],hateoa:2,roa:2,rest:2,recap:[],bit:3,requir:1,introduct:4,like:0,addenda:2,edit:8,revers:2,list:3,resolv:0,authent:[5,9],server:[7,3],"try":2,did:[],mod_wsgi:3,output:2,side:7,view:[9,5,8],respond:7,cgi:[3,5,9],set:6,map:0,pop3:0,some:3,request:[2,8],revel:3,"static":8,expect:1,respons:[0,2,8],our:[2,4,8],beyond:2,extract:2,orient:3,transport:7,out:2,virtualenv:4,separ:4,what:[0,1,2,3],afterword:2,hide:6,navig:2,databas:4,beautifulsoup:2,navigablestr:2,state:2,score:2,irl:2,internet:[1,2,7],django:[5,9],awai:3,content:0,approach:2,method:0,refer:[1,5],altern:[],model:[4,8],run:[7,3,6],proxi:3,extend:5,preprar:5,speak:0,step:[0,2,3],orm:4,logout:6,heroku:6,prerequisit:1,address:[7,2],put:[7,2],path:3,wsdl:2,geocod:2,wait:3,comparison:2,about:[2,4],socket:[7,5,9],login:6,commun:7,http:[0,2,8],success:3,wsgiref:3,filter:2,credit:2,mvc:[9,4,5,8],mime:0,implement:[0,6],whole:3,anonym:6,first:[0,3,4,6,8],repair:[],client:7,dilemma:2,render:[9,5,8],extra:2,overview:1,app:[3,6],dispatch:3,walk:2,price:2,header:0,rpc:2,api:[2,5,9],messag:7,famili:7,wrap:[2,3,6],instal:[2,4],custom:7,open:2,your:[0,7,2,3,6,8],middlewar:[],size:2,authz:6,from:3,supplementari:9,script:3,interact:[4,8],question:[2,3],live:3,submit:[0,7,2,3],tame:2,compon:4,start:4,json:2,call:2,asset:8,basic:[0,5,8],jinja2:8,templat:8,type:[0,7,2],date:2,authn:6,project:4,form:[5,9],search:[1,2],apach:3,part:8,pars:2,togeth:[7,2],examin:2,why:[2,4],repetit:3,virtuelenv:4,imap:0,present:[10,8],rss:2,serv:0,pull:2,word:4,flowchart:3,provid:6,prepar:[5,6,8],outlin:5,work:[2,3,4],url:2,three:4,learn:0,highlight:6,problem:3,listen:7,servic:2,fetch:2,connect:7,control:8,earli:2,pyramid:[9,4,5,8],comput:[0,7],have:0,creat:[7,4],look:0,process:3,flow:7,smtp:0,few:[0,3],accept:7,wtform:8,packag:4,inform:7,sqla:4,point:[],further:[0,7,3],incom:7,mash:2,result:2,trick:2,ponder:3,cours:[10,5,9],engin:2,googl:2,secur:6,receiv:7,anoth:2,make:[2,8],format:6,tip:3,detail:3,scrape:2,revisit:2,write:3,python:[0,1,2,4,7],ideal:2,complex:3,build:3,answer:2,document:2,simpl:2,needl:2,css:2,updat:3,simplifi:[],finish:7,resourc:0,clean:[7,4],deploy:[9,5,6,8],mess:2,resolve_path:3,choos:2,sqlalchemi:4,solut:[2,3],cgitb:[],"class":[1,2,3],plai:2,fffffffffuuuuuuuuuuuuu:2,user:[3,8],applic:[7,2,3,4,5,6,9],deploi:[5,6],previous:3,construct:7,law:2,data:[2,3,5,9,8],stack:7,soap:2,stateless:2,handl:0,task:7,read:9,bind:7,descript:2,uri:0,doe:0,onlin:3,more:[2,3],exampl:[0,3],environ:3,error:0,thi:1,repli:7,link:[7,2],element:2,sesstion:[5,9],mashup:[2,5,9]}}) \ No newline at end of file +Search.setIndex({envversion:42,terms:{content_length:3,interchang:[2,4],four:0,database_url:6,prefix:[0,7],ronach:9,af_rout:7,forget:6,whose:3,aug:4,sorri:4,ipproto_raw:7,crisew:7,concret:4,swap:3,under:3,dest_dir:4,worth:[2,4,8],remote_us:3,digit:[0,8],everi:[0,2,3,4],govern:[0,1,5],vast:2,chapel:2,location_attr:2,fetch_search_result:2,cmd:0,herbert:8,imaplib:[0,5],verif:6,direct:[0,4],histor:[1,9],second:[0,7,2,3,4,6,8],street:2,nthi:8,even:[0,3,4,5,9],asid:6,list_of_tcp_and_udp_port_numb:7,"new":[0,7,2,3,4,6,8],net:0,ever:[2,3,9],metadata:4,ipproto_tcp:7,abov:[0,7,2,3,4,5,6],never:[7,3,4],here:[0,1,2,3,4,6,7,8,9],"4xx":0,path:[],interpret:[0,7,2,3,4,8],credit:[],webfact:0,permit:[0,5],studi:9,portabl:[1,3],golden:8,pprint:[2,3],heroku_postgresql_maroon_url:6,wikimedia:[4,8],avenu:2,unix:[0,7,2],org:[0,7,2,3],txt:[0,7,4,6],unit:2,highli:1,first_lin:0,describ:[7,2,3],would:[0,2,3,4,6,8],tail:6,dnt:0,call:[],admin_password:6,typo:4,recommend:6,calc:3,type:[],tell:[0,7,2,3,4,6],fastcgi:3,relat:[4,9],panach:8,notic:[0,7,2,3,4,6,8],phone:8,unpack:4,must:[0,1,3,4,6,7,8],af_unix:7,join:[0,3],flaskenv:[],restor:[4,6],setup:[4,6,8],work:[],spec:[3,9],conceptu:8,norm:0,root:[3,6],defer:6,repoz:4,give:[1,2,3,4,5,6,7],smtp:[],indic:0,unavail:2,want:[0,1,2,3,4,6,8,9],dele:0,end:[0,1,2,3,5,6,7,8,9],learning_journ:[4,6,8],frobozz:0,classifi:2,how:[0,1,2,3,4,5,6,7,8,9],conn:[0,7],env:[3,4],answer:[],verifi:[6,8],perspect:9,updat:[],anon_1:4,after:[3,4,8],superus:4,diagram:4,befor:[0,7,2,3,4,5,6,8],wrong:4,lat:2,beautifulsoup4:2,parallel:9,demonstr:[0,4,5],domin:4,third:3,classmethod:[4,6,8],authzpolici:6,wsapikei:2,greet:0,think:[7,3,4,5,6,8,9],alias:7,scoped_sess:4,dispar:5,environ:[],incorpor:[3,6],enter:[0,2,3,8],fan:2,first:[],engine_from_config:[4,6,8],order:[1,2,4,5,6,8],hob7v7guwir4n1v:6,oper:[1,3,8,6,7],remote_id:3,over:[7,2,4,5,8,9],fam:7,becaus:[0,4,6,8],jpeg:0,privileg:[3,4],keyboard:0,flexibl:4,vari:[0,7],digest:9,fit:[2,5],fix:[0,3,4,8],simple_cli:0,toolbelt:[6,8],comprehend:9,better:[7,2,4,6,9],offic:0,drawback:5,persist:[],comprehens:9,"1xx":0,easier:[9,4,8],descend:2,them:[0,1,2,3,4,5,6,7,8],thei:[0,1,2,3,4,5,6,7,8,9],id73:3,safe:[0,4,6],"break":[],sqlite3:4,bang:3,jinja2:[],initializedb:[4,6],rental:[],choic:[1,2,4,5,7,9],villaini:3,walkthrough:2,retr:0,bonu:2,getvalu:3,rocki:6,timeout:2,each:[0,1,2,3,4,5,6,7,10],debug:[0,3,4,9],went:[0,8],side:[],bone:8,mean:[0,7,2,3,4,5,6,8],laboratori:1,doug:5,logo:8,extract:[],network:[1,2,5,8,9,7],goe:[2,4,8],god:4,content:[],got:[0,3,4,6,8],forth:[0,3],navig:[],written:[9,3,5,8],rail:0,nightmar:4,situat:[0,4],free:[6,8],ineffici:2,hand:[2,6,8],getservbynam:7,uiuc:3,s3cr3t:6,traceback:3,static_url:8,filter:[],mvc:[],iso:2,unabl:6,subtl:2,confus:[7,8],"__or__":7,rang:[0,1,2,8],render:[],independ:[0,4],rank:2,hook:[3,4],instruct:[7,2,3,4,9],alreadi:[0,7,2,4,6,8],wrapper:[7,2],agre:3,fantast:[1,4,9],primari:[4,8],top:[2,4,6,8],"0x1103e38d0":4,sometim:[0,4],imap4rev1:0,necessarili:3,master:[4,6],too:[0,7,2,3,4,8,9],tom:4,my_view:8,consol:4,namespac:2,tool:[0,1,2,3,4,5,6,7,9],setuptool:4,took:4,incur:6,next_sibl:2,target:[2,3],keyword:[2,6,8],provid:[],tree:[4,6],project:[],matter:[2,6],rfc2616:0,minut:[0,7,8],latitud:2,rad:7,fashion:[2,3],ran:[0,4],walkscor:2,modern:[4,5],mind:9,mine:0,raw:0,af_sna:7,pylon:4,increment:2,"__main__":[2,3,6],seen:[0,7,2,3,4,6,8],seem:[3,6],seek:[4,6],strength:5,latter:4,thorough:[9,8],"0x1103e3fd0":4,fnhg5:0,transmit:4,hypertext_transfer_protocol:0,simplifi:[],elev:0,plenti:5,though:[0,2,6,9],usernam:[0,6,8],object:[7,2,3,4,6,8,9],guess_typ:0,minask:2,regular:4,artifact:4,bsd:7,fnhg3:0,typ:7,maria:[7,3],tradit:8,don:[0,1,2,3,4,6,7,8,9],doc:[0,2,4,6],flow:[],doe:[],declar:[3,4,8],unchang:9,passwordfield:6,sum:8,dot:8,introspect:2,opposit:8,random:6,syntax:[],radio:8,protocol:[],involv:6,absolut:8,nobodi:3,layout:[2,9,5,6,8],menu:[0,3],explain:[3,4,9],configur:[],apach:[],restaur:2,kessler:9,disert:9,png:0,rich:[1,5],folder:[7,3,4,6,8],resolve_uri:0,patter:8,stop:[],reconstruct:3,bat:9,bar:[0,7,2,8],ietf:[0,3],baz:[0,2],"public":[2,6,8],buffsiz:7,reload:[0,3,6],bad:[0,3],told:6,steal:[4,6],title_info:3,respond:[],get_const:7,disucss:5,serve_forev:3,result:[],respons:[],fail:[0,7,6],best:[2,4,6],awar:6,pythoncert:[4,8],databas:[],wikipedia:[0,7,2,4,9],urllib:[2,5],yet:[0,7,4,6,8],figur:[7,3,4],score:[],outstand:8,awai:[],enlighten:9,approach:[],attribut:[2,4,6,8],extend:[],weak:5,extens:[0,1,2,6],html5:[5,8],toler:2,pull:[],protect:0,accident:7,expos:3,howev:[3,4,8],against:[0,3,6,8],logic:[4,6,8],seri:4,com:[0,7,2,3,4,6,8],compromis:1,get_appset:[4,6,8],assur:7,trunk:8,trust:4,assum:[7,2,4],speak:[],bathroom:2,strong:[6,8],chrome:0,add_rout:[4,6,8],three:[],been:[2,3,4,6,8],much:[0,7,2,3,4,5,8,9],redeploi:6,interest:[2,9],basic:[],raise_for_statu:2,tini:2,quickli:[0,4],life:[0,2,5],rfc5321:0,xxx:3,setup_log:[4,8],telnet:7,argument:[0,7,2,3,4,6,8],matchpath:3,"catch":0,build_env:3,ugli:0,ident:6,servic:[],properti:[7,2,3,6],commerci:4,calcul:3,apikei:2,neat:0,seven:0,pyramid:[],af_appletalk:7,shebang:3,tabl:[2,3,4,6,8],toolkit:0,kwarg:2,fnhg:0,march:1,tediou:[2,4],fedorahost:2,sever:[2,3,6,9],datetim:2,perform:[3,4,8],suggest:[0,6],make:[],couchdb:4,craigslist:2,complex:[],split:0,version_str:3,complet:[0,1,2,3,4,5,6,7,8,9],rfc822:0,nic:7,hang:0,xyzzi:0,nix:3,rais:[0,7,2,3],editcom:2,"548kb":4,thu:[7,2,3],hypothet:4,inherit:[3,4,8],client:[],endif:[6,8],gzip:0,programm:2,everyth:[0,1,2,4,6,8,9],moreov:0,left:[4,6,9],identifi:[0,3,8],just:[0,7,2,3,4,6,8,9],photo:[2,3],spread:2,human:[0,2,9,8],config:[4,6,8],mysql_length:4,languag:[],previous:[],alchemi:4,easi:[2,9,4,6,8],shout:8,"8bitmim":0,httpfound:[6,8],els:[0,2,4,6,8],save:[0,2,4,6,8],hat:0,gave:4,opt:0,applic:[],mayb:3,preserv:[],parse_var:4,render_markdown:6,elabor:6,apart:[2,9,8],imap4_port:0,response_method_not_allow:0,specif:[7,2,3,4,5,6,8,9],arbitrari:[7,4,6],bcrypt:6,manual:4,soap:[],hung:0,install_requir:4,underli:[1,5,7],www:[0,7,2,3],right:[0,1,2,3,6,8,9],old:4,"0db8":7,universal_newlin:3,nfrom:4,intern:[0,3],successfulli:[2,3,4],craiglist:2,transmiss:[0,7,9],total:[3,6],bottom:7,multipli:3,ssh2:9,exectut:4,overcom:3,condit:[0,3],foo:[0,7,2,6,8],fieldstorag:3,localhost:[0,3,6,8],mailgat:0,core:9,jsonp:8,oracl:4,confer:5,bolt:2,repositori:[7,3,4,6,8],post:[0,2,3,6,8],"super":0,chapter:[4,9],postgresql:[4,6],surround:8,dinner:0,commit:[2,4,6],sept:2,produc:[7,5],encod:[0,2,6],bound:[7,4],curios:5,down:[2,6,8],creativ:[4,8],bufsiz:3,storag:[0,4],git:[4,6],deal:[7,9],wai:[0,1,2,3,4,5,6,8,9],support:[0,1,2,3,4,5,6,8,9],hypermedia:2,avail:[7,2,4,6,8],reli:6,request_method:[3,6],editor:[2,3],overhead:2,get_address_info:7,rcpt:0,internet_protocol_suit:7,head:[0,7,2,6,8],medium:[7,2],form:[],offer:[9,3,4,5,8],forc:[2,9],hear:7,icmp:7,"true":[0,7,2,4,6,8],ws_link:2,absent:3,attr:[2,8],strip_filt:8,maximum:7,until:[7,4],url:[],absenc:3,fundament:[1,5],emit:3,intitalizedb:4,featur:[3,4,5,6,9],af_decnet:7,"abstract":4,decrypt:0,proven:4,exist:[0,3,4,6,8],glanc:9,check:[0,2,3,4,6],assembl:8,encrypt:[6,9],mashup:[],excel:[9,8],role:8,jone:0,test:[],webob:4,roll:6,realiti:2,node:2,intend:[1,4,7],af_unspec:7,urllib2:[2,5],djangocon:9,intent:1,consid:[0,9,4,8],sql:[4,5],receiv:[],longer:7,bullet:6,sock:[0,7],anywher:3,pbkdf2:6,initialize_learning_journal_db:[4,6],pathnam:[0,7],time:[],push:[0,4,6],serious:2,osx:[0,6],concept:[1,4,5,6,7,9],chain:[4,8],skip:4,consum:[7,5,9],focus:9,invent:[2,4],supplement:9,skim:9,row:[],depend:[4,5,6,8],flask:[4,9],graph:8,readabl:[0,2,3,8],unpython:4,a0004:0,a0005:0,certainli:8,a0001:0,a0002:0,a0003:0,addon:6,query_str:3,sourc:[],string:[0,7,2,3,4,5,6,8,9],congest:7,price_span:2,lru:4,kitten:4,ydood:8,subprocess:3,brows:[5,8],administr:3,level:[1,2,4,6],did:[],dig:[2,8],ipproto_udp:7,iter:[7,2,3,4],item:[2,3,4,8],team:4,quick:[0,1,4,9],imap4:0,dir:[0,7],declarative_bas:4,upper:8,slower:7,lstrip:3,htm:2,sign:[0,2,6],restkit:9,cost:6,port:[0,7,3,6],procfil:6,appear:[6,8],repli:[],scaffold:4,beautifulsoup:[],current:[7,2,3,4],rst2xml:4,"3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4":6,response_bodi:3,deriv:[2,3,5],urlopen:2,gener:[0,7,2,3,4,6,8,9],unauthor:2,slow:7,address:[],along:[0,1,2,5,9],wait:[],shift:0,queue:7,bob:[0,4],commonli:7,ourselv:[0,6],ipc:7,semant:7,session1:7,extra:[],modul:[0,1,2,3,4,5,6,7,9],prefer:[0,3],bookapp:3,seattl:2,visibl:5,marker:8,instal:[],http_:3,smallish:7,market:4,types_map:0,memori:[1,2],univers:9,visit:[6,8],todai:[0,7,2,6,8],live:[],criteria:[0,4],msg:7,tightli:3,unsaf:0,idempot:0,maxask:2,walkabl:2,enhanc:5,visual:0,appendix:0,oop:4,obj:[4,8],effort:2,content_typ:3,pretend:0,focu:[2,5],whatev:[7,8],purpos:[0,3,4,5,6,8],boilerpl:4,input1:2,stream:[7,4],predict:0,agent:[0,3],topic:[9,8],critic:9,app_factori:4,occur:7,entryeditform:6,alwai:[0,7,2,3,4,6],lxml:2,multipl:[3,4],winter:1,charset:[0,8],write:[],anyon:[3,6,8],pure:2,xhtml:0,map:[],product:[4,6,9],max:[0,6,8],dive:[1,5,6],tomayko:9,mac:0,"4th":2,mai:[0,7,2,3,4,6,9],data:[],classroom:4,gethostnam:7,practic:0,divid:[7,3,4],explicit:8,predic:6,mangl:0,inform:[],"switch":4,cannot:[7,3,8],combin:[1,2,3,4,5,6,8],printenv:3,callabl:[3,8],talk:[0,7,4,5,8,9],shield:5,ydwoh:8,ttl:2,gitignor:4,still:[0,2,4,8],dynam:[0,2,3,5,8],config_uri:[4,6,8],group:[7,3,4],"4z6rvnhte21mpljw5veive0eg57gn":6,concis:5,authorization_polici:6,sec10:0,platform:6,window:[0,2,3,4,6],curli:8,mail:0,main:[0,2,4,6,8],non:0,noj:2,profession:2,killer:5,initi:[0,3,4,6,9],interview:0,safari:0,half:7,now:[0,7,2,3,4,6,8,9],discuss:[7,3,4,5,8,9],introduct:[],term:[1,3,4],name:[0,7,2,3,4,6,8,9],simpl:[],interpr:4,server_softwar:3,separ:[],magazin:[9,8],path_transl:3,januari:1,compil:[6,9],domain:[7,9,4,6,8],"0x105849b90":8,replac:[6,8],individu:[7,2,4,8],continu:[0,7,3,4,5,6],wsgi_1:3,ensur:[0,7,4,6],operand:3,happen:[0,7,3,4,8],accomplish:[0,9],space:0,profil:7,formula:2,sensor:2,factori:[3,6],she:6,tmpl:8,earlier:[0,4,6],pseudocod:0,ch05s03:0,envelop:2,argv:[4,6],orm:[],argn:6,brower:5,"byte":[7,2],search_param:2,care:[0,7,3,9],sign_in:6,utmcsr:0,where:[7,2,3,4,6,8],syndic:2,refus:7,thing:[0,2,4,6,8,9],place:[7,2,3,4,5,6,8],router:3,principl:1,imposs:4,frequent:4,lambda:8,origin:[2,3,4,5,9],directli:[7,2,4,8],onc:[0,7,2,3,4,5,6,8],arrai:2,yourself:[0,1],acquisit:2,fast:4,open:[],size:[],urin:0,given:[0,1,2,4,5,7,8,9],sheet:8,bookdb:3,convent:0,bookmark:9,imap4_ssl_port:0,eachoth:4,paramt:2,lognam:3,conveni:[2,4],friend:6,includ:[0,1,2,3,4,6,7,8],especi:[2,3],memo:3,copi:[0,2,3,6,8],huh:0,alan:[4,8],"short":[3,9],mostli:[0,7,9],attempt:7,than:[0,7,3,4,6,8,9],matchdict:[6,8],serv:[],were:[7,2,4],posit:7,"5xx":0,browser:[0,7,2,3,4,5,6,8],pre:2,fork:[0,2],sai:[0,3,4,6],angel:3,pro:7,ani:[0,1,2,3,4,6,7,8,9],doctyp:[0,2,8],rent:2,notimplementederror:0,saw:4,shtml:0,engin:[],ipproto_:7,note:[0,7,2,3,4,6,8],wretch:3,take:[0,7,2,3,4,5,6,8,9],green:0,reload_templ:4,noth:[2,3,4,6,8],channel:[0,2,4],begin:[0,7,3,4,5,6,8],sure:[7,2,4,6,8],pain:[4,6],trace:4,normal:[2,4],buffer:[0,7],price:[],pair:[4,5,8],homepag:[2,9],run_cgi:3,sesstion:[],utmccn:0,later:0,drive:9,"8mb":4,quantiti:2,create_al:4,link:[],shortnam:6,preambl:3,gracefulli:0,shot:2,show:[],my_index:4,checkbox:8,permiss:[3,6],ground:1,xml:[],onli:[0,2,4,6,8],explicitli:[3,4],codehilit:6,transact:[7,4,6],activ:[],enough:[0,4,6],dict:[7,2,4],analyt:6,startswith:7,nearli:4,variou:[4,5,8],get:[],mung:0,clang:4,repo:2,ssl:0,tailor:0,ssh:7,reveal:3,entryfactori:6,yield:2,authenticated_userid:6,draft:0,default_permiss:6,summari:2,wiki:[0,7,2],n10:8,lng:2,web_application_hybrid:2,detect:6,review:[0,7,3,4,6,8],enumer:6,label:[6,8],getattr:7,between:[0,1,2,3,4,5,7],"import":[0,7,2,3,4,6,8],across:[1,2,5,7],parent:[3,4],elladan:7,tut:0,cycl:[4,8],come:[0,2,3,4,6,8],img:0,tutori:[9,5,8],wherin:4,improv:[0,3,4,6],among:[7,4,5,8],nnn:2,color:6,unittest:5,inspir:2,dispatch:[],"__class__":2,exploit:3,imad1:0,typic:[3,4],artu:0,coupl:[7,2,3,4],rebuild:0,hardli:2,mark:6,evangelista:[4,8],workshop:1,cwd:3,valueerror:[2,3],extract_list:2,avian:7,emphas:1,ws_descript:2,docxmlrpcserv:5,repres:[0,2,4,5,8],howdi:8,those:[0,2,3,4],"case":[0,9,3,4,8],interoper:2,cast:[2,4],outcom:[0,4],scum:3,python_web:[4,8],ehlo:0,zipcod:2,advantag:[4,6],stdout:[7,3,4],canon:[7,3],worri:[7,6],blah:0,reqeuest:3,smalltalk:4,develop:[0,1,2,3,4,5,6,8,9],proto:7,cc0:[4,8],same:[0,7,2,3,4,5,6,8,9],epoch:2,html:[],pai:[2,6],eventu:4,week:[0,1,2,3,4,5,6,7,8,9],someexamplerssdomain:2,finish:[],assist:[3,4],someon:6,driven:[0,8],capabl:3,http_host:3,add_rount:6,mani:[0,7,2,3,4,6,8,9],extern:9,appropri:[7,3,5,6,8],"__acl__":6,markup:6,without:[7,2,3,4,8],promis:7,model:[],nosql:4,when:[0,7,2,3,4,6,8,9],resp:[0,2],rest:[],interrupt:0,kill:[0,4],aspect:[4,5,6,8],polish:[],flavor:2,xb2:2,heffalump:7,versu:1,hint:0,except:[0,7,3,4],littl:[3,6,8],apache2:9,blog:[0,5],ws_score:2,pile:2,blob:6,exercis:[],vulner:0,real:[],requri:6,tranmiss:7,around:[7,2,3,6,8,9],read:[],psd:2,makin:8,traffic:0,mon:[0,2],redqueen:0,socket_tool:7,intel:0,whitespac:[0,2],notimpl:2,integ:[7,4,6],server:[],benefit:[0,7,5],either:[0,8],cascad:8,output:[],manag:[7,4,6],fulfil:6,ipproto_ip:7,definit:8,"2xx":0,exit:4,posgresql:6,notabl:0,af_inet6:7,power:[7,4,5,6,8,9],tdd:0,broken:0,"__name__":[2,3,6],src:8,deflat:0,central:4,acl:6,microframework:4,srv:3,"19t01":6,act:[2,3],mytempl:[4,8],effici:1,iterm:3,status_cod:2,console_script:4,isoformat:2,inbox:0,strip:[2,8],your:[],igmp:7,loc:2,buffer_s:7,httpnotfound:[6,8],her:6,set_authorization_polici:6,aren:[4,6],lon:2,start:[],interfac:[0,7,3,4,5,6,9],low:1,lot:[0,9,4,8],resum:2,"0x10b075ed0":4,hei:7,index_pag:[6,8],handle_request:3,tupl:7,client_address:7,categor:0,congratul:6,card:7,notat:[2,8],dirti:[2,4],possibl:[7,2,3,9,8],"default":[7,3,4,6,8],start_respons:3,gone:4,uid:0,creat:[],certain:[0,7,2,4],deep:[6,9],strongli:6,file:[0,1,2,3,4,5,6,7,8],fill:[3,6,8],again:[0,7,2,3,4,5,6,8],models_valu:4,googl:[],compel:4,field:[2,3,4,6,8],valid:[0,2,6,8],compet:2,copiou:9,ignor:[4,9],you:[0,1,2,3,4,5,6,7,8,9],juic:8,sequenc:0,symbol:[7,8],briefli:8,transceiv:7,pool:9,reduc:4,"1b6":0,wife:9,directori:[0,2,3,4,5,6,8],descript:[],potenti:[5,6],escap:6,unset:3,represent:[7,2,4],all:[],skeleton:[7,4],breadth:9,forbidden:6,scalar:4,abil:[0,4],cameron:2,follow:[0,7,3,4,5,6,8,9],disk:0,dsn:0,script_nam:3,af_inet:7,articl:[4,6,8],init:4,cgi:[],introduc:[1,4,5,8],hill:2,sound:2,liter:4,chameleon:8,far:[7,4,9],faq:0,mcdonough:9,util:[0,7,4,9],verb:0,mechan:6,fall:4,veri:[0,7,3,4,5,6,8,9],ticket:6,simple_app:3,webmast:0,list:[],last_nam:8,adjust:4,stderr:[0,3],small:[2,3],correct:[0,7,8],neighborhood:2,your_script:2,sync:5,past:[4,6],design:[1,2,3,4,5,6,7,8,9],pass:[0,7,2,3,4,5,6,8,9],further:[],by_nam:6,sud:[2,9],section:[0,9,3,4,8],abl:[0,2,3,4,5,6,8],brief:[5,9],delet:[0,1,2,6],version:[0,1,2,3,4,5,6],tickl:2,primary_kei:[4,6],intersect:8,deepli:1,method:[],contrast:1,craigslist_result:2,hasn:2,full:[1,2,3,4,5],hash:[3,6],berkelei:9,inher:[2,5],goodby:0,standard:[0,1,2,3,4,5,6,7,9],modifi:0,rfc3875:3,valu:[0,7,2,3,4,6,8],ahead:[7,2,3,6,8],"0x1005b8b40":7,popen:3,prior:6,pick:[6,8],action:[7,2,4,5,6,8],add_static_view:[4,8],via:[2,3,4,6,8],transit:2,filenam:0,href:[2,3,6,8],famili:[],establish:[7,2],cgi_bin:3,select:[0,1,4],hexadecim:2,distinct:0,ctrl:0,regist:[7,6],two:[0,7,2,3,4,5,6,8,9],taken:[2,6],more:[],flaw:8,octal:2,mozilla:[0,9,8],flag:[0,7,6],addcom:2,particular:[9,4,6,8],known:[7,2,6],cach:[0,4],none:[0,7,2,3,4,6,8],endpoint:[0,7,2],puzzl:3,hour:[0,7,5,8],hous:2,outlin:[],dev:[2,3,6],venusian:4,remain:[6,9],paragraph:2,learn:[],abandon:2,rst2html:4,def:[0,7,2,3,4,6,8],ndate:7,prompt:[7,3,4,5],scan:[4,8],challeng:[0,2,6],registr:6,share:[0,7,3,4,6,8],accept:[],explor:[1,2,4,5,7],phrase:[4,8],login_form:6,cours:[],goal:[2,4],first_nam:8,secur:[],rather:0,anoth:[],comfort:[1,8],divis:3,"__init__":[4,6,8],csv:[4,8],loginform:6,css:[],isn:[0,2,3,8],"545kb":4,resourc:[],referenc:8,okai:[0,2,4],associ:5,github:[0,7,2,3,4,6,8],footer:8,author:[3,5,6],django:[],caus:4,egg:4,translationstr:4,constitu:8,help:[0,1,2,4,5,7,8,9],"912ft":2,mainthread:[4,6],hypertext:9,add_address:2,soon:[7,8],held:2,through:[0,1,2,4,5,6,8,9],pane:0,paramet:2,style:[0,4,6,8],psycopg2:[4,6],runnabl:3,pserv:[6,8],might:[0,7,2,3,4,8,9],alter:3,pce:[1,8],recip:6,good:[0,1,2,3,4,5,6,9],"return":[0,7,2,3,4,6,8],pollut:4,cew:4,framework:[1,4,5,6,8,9],maildrop:0,gethostbynam:7,msg_part:7,httplib:5,document:[],troubleshoot:6,authent:[],easili:[2,9,4,8],achiev:2,http_server:0,compris:4,found:[0,3,4,8],unicod:[2,4,6,8],joel:6,hard:[4,5,6],idea:[0,7,2,4,5],procedur:2,realli:[0,7,2,6,8,9],connect:[],beyond:[],orient:[],hostnam:7,some_valu:3,ftp:7,publish:[3,4,9],research:4,bubbl:8,etag:0,health:2,authnpolici:6,print:[0,7,2,3,4,6,8],uwpc:[4,8],some_appl:3,"__utmz":0,postgr:6,proxi:[],uncommit:4,advanc:0,new_model:4,differ:[0,7,2,3,4,5,6,8],cooki:[0,6],reason:[0,2,3,8],base:[0,1,2,4,5,6],ask:[0,7,4],"__utma":0,earliest:2,recv:[0,7],bash:[3,6],applict:3,by_id:[4,6,8],perhap:[0,8],perman:[0,4,6],find_al:2,assign:[0,1,2,4,5,6,7,8],request_protocol:3,feed:2,oserror:3,set_authentication_polici:6,obviou:[0,2],prevent:[3,6],feel:8,number:[0,7,2,4,5,6,8,9],placehold:[0,8],done:[0,7,2,3,4,6,8],construct:[],blank:[0,3],miss:[2,3,4],fanci:2,guess:0,script:[],interact:[],pbkdf2passwordmanag:6,least:[2,3,4,8],getservbyport:7,order_bi:4,statement:4,zeromq:9,store:[4,6],luckili:[0,2,4,6,8],parc:4,option:[0,7,2,3,4,6,9],relationship:[7,5],behind:[4,9],echo_socket:7,part:[],pars:[],logged_in:6,fenced_cod:6,fred:4,kind:[0,7,3,6,8],grew:0,roi:2,remot:[7,2,4,6,9],remov:[7,4,6],str:[3,4],relative_to:6,consumpt:[5,9],aclauthorizationpolici:6,payload:0,"_socketobject":7,expir:6,properli:[0,2,5,8],"null":2,imagin:[6,8],built:[0,2,3,4,5,6,8,9],lib:[0,3,4],remote_addr:3,self:[3,6],html5lib:2,also:[0,1,2,3,4,5,6,7,8,9],build:[],cgi_1:3,textareafield:8,brace:8,pubdat:2,http_user_ag:3,distribut:4,lighttpd:3,kai:4,previou:[0,2,5],reach:7,chart:[4,8],most:[0,7,2,3,4,5,6,8],plai:[],poke:[2,3],plan:6,addr:[0,7,2],filesystem:[0,5,8],clear:[0,7,5],cover:[0,1,4,6,9],clean:[],http_server_at_hom:0,latest:[2,9],wsgi:[],hyper:0,latlng_tmpl:2,v12:0,getcom:2,session:[],particularli:[6,8],fine:[0,8],find:[],cell:2,giant:3,execut:[],pretti:[0,2,4],solut:[],"172kb":4,templat:[],factor:4,smtplib:5,darwin:4,hit:2,unus:4,"__file__":3,express:[1,3,8],resent:7,famous:3,googleapi:2,"3xx":0,restart:[0,3,6,8],rfc:[0,3,9],common:[0,7,2,3,4,5,6,8],nowher:4,wrote:6,certif:[1,8],set:[],dump:2,sep:2,overwhelm:4,"0x1103e3f50":4,af_ipx:7,see:[0,7,2,3,4,5,6,8],bare:8,sea:5,arg:[3,4],reserv:[0,7,2],someth:[0,2,3,4,6,8],particip:1,topmost:7,won:0,subscript:8,pastedeploi:4,altern:[],javascript:[2,8],isol:4,mailbox:0,"31m":6,cgi_sum:3,both:[0,7,2,3,4,5,6,8,9],blabber:4,last:[0,7,3,4,6,8],delimit:0,lignt:5,context:[3,6,8],load:[0,2,3,5,6,8],markdown:[5,6],simpli:[0,2,3,4,5,6,8],point:[],instanti:[2,4],header:[],route_url:[6,8],param:[2,6],suppli:[2,3,6],batteri:2,comput:[],throughout:1,xkcd:0,backend:3,damp:3,empti:[0,7,3,4,6,8],pgbackup:6,bs4:2,secret:[3,6],damn:2,rstpep2html:4,"55c0287d4ef21f15b97eb1f107451b88b479bff":6,fire:[0,2,3,4,6,8],imag:[0,2,8],cryptacular:6,coordin:4,understand:[0,1,5,6,9],func:3,educ:3,formatd:0,look:[],solid:[1,6,9],add_walkscor:2,batch:4,"while":[0,7,2,3,4,5],"54f7e4d":6,match:[0,7,2,3,6,8,9],behavior:[7,4,8],error:[],fun:8,everyon:6,loop:0,readi:[0,7,2,4,6,8],unintuit:2,readm:[3,4],itself:[2,3,4],spong:3,limit:[7,2],"3f80f":0,decor:8,grant:[3,6],belong:[0,7,6],wherein:[2,3,8],decod:2,zope:4,conflict:[2,4],b59b7c3:6,communc:7,moment:[7,2,4,6,8],temporari:8,user:[],robust:6,stack:[],recent:[0,4],lower:[7,2,9,8],task:[],find_packag:4,entri:[],spent:7,doodi:8,pickl:4,person:[7,6,8],expens:[7,3,6],endfor:[6,8],connnect:7,five:0,macintosh:0,spend:[7,8],explan:0,make_wsgi_app:4,"__path__":4,shape:1,mysql:4,session05:0,session04:7,session01:7,session03:2,session02:[0,8],a0006:0,restructuredtext:4,global_config:[4,6,8],populate_obj:[6,8],armin:9,win:0,input:[],cgi_2:3,bin:[2,3,4,6,8],bim:2,varchar:4,format:[],response_ok:0,folk:3,server_socket:7,bit:[],formal:[0,3,4],httpexcept:8,leisur:9,ipproto_icmp:7,docutil:4,altough:2,manifest:[4,5],collect:[4,8],princip:6,popular:[3,5,6],often:[0,7,4,9],duck:2,some:[],back:[0,7,2,3,4,5,6,8,9],understood:7,uidnext:0,sampl:[6,8],ljenv:[4,6,8],formatted_address:2,virtualenv:[],scale:6,cgihttpserv:[3,9],sock_dgram:7,pep:3,id3:3,per:[0,7,2,6],larg:[2,3],slash:3,machin:[1,2,3,4,5,6,7,8,9],intial:0,run:[],authtktauthenticationpolici:6,simple_serv:3,viabl:4,step:[],crlf:0,subtract:3,"resum\u00e9":2,constraint:9,materi:[10,5,9],prove:6,"0x100563c90":7,exc_info:3,block:[0,7,2,6,8],path_info:3,supplementari:[],miracl:0,within:3,protocol_vers:3,lesson:9,html5shiv:8,inclus:2,span:[2,6],errno:3,question:[],stylesheet:8,submit:[],custom:[],heroku:[],prettier:8,suit:[5,9],term_program:3,larri:4,repeatedli:[7,4],great:[0,2,3,4,5,8,9],pwd:4,game:8,atol:6,atom:2,line:[0,1,3,4,6,8],info:[7,3,4,6],row1:2,utf:[0,2,8],consist:[0,3],latlng:2,highlight:[],similar:[0,2,3,4,5],mymodel:[4,6,8],sesson:0,constant:7,parser:[2,9],chao:[2,6],doesn:[0,7,2,3,4,6,8],lectur:[1,5],gecko:0,response_not_found:0,titl:[0,2,3,4,8],scrape:[],nam:7,nav:8,transport:[],nice:[0,2,3,5,6,8],llvm:4,mongodb:4,plug:0,meaning:4,csrftoken:0,longitud:2,svn:8,algorithm:6,mimetyp:0,rst2latex:4,parse_sourc:2,sign_in_out:6,depth:[1,9],server_protocol:3,came:6,hello:[0,9,3,8],getaddrinfo:7,code:[],queri:[2,3,4,6,8,9],sqlserver:4,ljshell:8,edu:[7,3],a_pag:2,bathtim:8,elsewher:[7,6],friendli:2,send:[],becam:2,aris:4,sent:[0,7,2,3,4,5,6,8],charlesproxi:0,rollback:4,spool:0,stackoverflow:0,relev:[2,4],tri:8,magic:8,button:8,geograph:2,hive:3,"try":[],race:[6,8],kit:9,entry_point:4,hasnochildren:0,pleas:[2,4,5,9],impli:3,smaller:7,natur:8,uniqu:[2,4,6,8],video:9,download:[4,8],odd:8,click:[3,8],append:[0,3,4,6],compat:[3,4],index:[0,3,4,6,8],wahoo:0,compar:[0,6],resembl:8,access:[0,1,2,3,5,6,9],py2:4,can:[0,7,2,3,4,5,6,8,9],len:[0,7,2,3,4],bodi:[0,2,3,4,6,8],loadapp:6,intercept:6,let:[0,7,2,3,4,6,8],myhost:3,becom:[2,4],sinc:[7,2,3,4,8],convert:[2,4,6,8],didn:[4,9],convers:9,technolog:[7,6],stringval:3,rdf:2,thie:9,chang:[0,2,3,4,5,6,8,9],purplemattfish:2,maker:8,chanc:5,response_head:3,firefox:0,ago:[7,6],parse_request:0,appli:[5,6,8],app:[],gatewai:[3,5],apt:2,api:[],regexp:[3,8],apa:2,from:[],zip:2,commun:[],upgrad:6,next:[0,7,2,3,4,6,8,9],websit:[2,4,5,6,8],few:[],usr:[3,4],remaind:3,preformat:6,scgi:3,ipoac:7,babi:8,trail:3,train:[4,8],somesecret:6,account:8,retriev:[3,8],scalabl:4,alic:6,annot:[],af_:7,thin:7,meet:5,fetch:[],aliv:[0,7],control:[],sqlite:[4,6],tar:4,process:[],lock:6,sudo:4,high:4,tag:[0,2,6,8],tab:0,onlin:[],serial:2,cache_max_ag:[4,8],gcc:4,cewing_socket:7,sit:9,client_socket:7,pyramid_jinja2:8,copyright:4,instead:[0,4,6,8],chri:9,stand:[4,8],delai:4,initialzedb:6,attend:1,other_sess:4,"6mb":4,class_:2,attent:6,tier:6,philosophi:9,physic:[7,8],add_al:4,bind:[],correspond:[7,3],element:[],webroot:0,runapp:6,prettifi:2,allow:[0,1,2,3,4,5,6,7,8,9],sendal:[0,7],elif:8,insight:5,bunch:7,uiqj579igrbrebhmjqnth8pffaz2qrj:0,verify_password:6,"0x10046cec0":7,infrastructur:6,bye:0,recept:7,greater:9,handl:[],demoenv:4,spell:8,dai:[0,5,8],auth:6,httplib2:9,close_fd:3,front:5,"8a2e":7,tilkov:9,mashup_:2,all_book:3,somewher:[2,6,8],anyth:[2,4,6],edit:[],entrycreateform:[6,8],nameerror:[0,3],soupenv:2,slide:[1,5],mode:4,autoincr:6,beneath:6,pygment:6,item_templ:3,bump:0,sessionmak:[4,8],meta:[2,3,8],"static":[],brittl:2,our:[],wander:3,special:[2,4,5,6,8],out:[],variabl:[3,6],defend:9,facto:2,categori:4,suitabl:6,rel:8,clone:[7,4,8],red:0,clarifi:4,insid:[0,7,2,3,4],frank:8,manipul:[3,4],w3c:2,standalon:2,zodb:4,dictionari:[2,6,8],downei:2,auth_secret:6,yore:8,complianc:6,cri:[0,8],"0x1103d9f10":4,could:[0,3,4,6,9],lexer:6,put:[],keep:[0,1,2,3,4,5,7],length:[0,3,4,6,8],enforc:9,outsid:[3,4,6],geometri:2,waitress:6,softwar:[0,7,2,4,6,8],isbn:3,pygments_styl:6,qualiti:5,echo:[0,7,3,5],exact:8,date:[],match_param:[6,8],owner:[2,8],"long":[0,7,2,3,4,5,6],strict:2,licens:[4,9],creator:9,mkdir:4,system:[1,2,3,4,6,7,8,9],messag:[],attach:6,imap4_ssl:0,termin:[0,7,3,4,6],"final":[0,1,3,4,5,7,8],ipv4:[7,9],udp:[7,9],shell:[3,4,6],shelf:4,ipv6:[7,9],fnhg2:0,models_id:4,"8d3":7,dyno:6,textfield:[6,8],exactli:[0,7,8],haven:2,route_nam:[6,8],embodi:[4,6],roberto:8,structur:[1,2,3,5,8,9],charact:[2,4,6,8],sens:8,sensit:[0,6],f12:0,stdin:3,favorit:0,listval:3,py3:4,deprec:4,myproject:6,have:[],close:[0,7,8],need:[0,1,2,3,4,6,7,8,9],turn:[0,4,5,6,8,9],paramiko:9,programdata:3,afraid:[0,4],min:[6,8],rout:[],chief:6,which:[0,7,2,3,4,5,6,8,9],from_encod:2,authentication_polici:6,ncsa:3,singl:[0,1,2,3,4,5,6,7,8],unless:7,ds_store:4,deploy:[],whl:4,who:[6,8],wandering_angel:3,discov:[0,2,3],deploi:[],pyc:4,segment:8,payment:6,dens:1,request:[],face:8,pipe:8,build_db:6,deni:[3,6],determin:[0,7,3,4,5,6,8],fact:[7,3,5,6,8],jkorpela:0,text:[],bring:[0,8],server_nam:3,bedroom:2,rough:4,identityset:4,redirect:[0,2],locat:[],auth_typ:3,"2br":2,should:[0,1,2,3,4,5,6,7,8],jan:[0,7],suppos:9,"3e1cb03b":0,"__tablename__":[4,6],local:[7,2,4,6,8],hope:[2,9],freddi:8,move:[0,7,2,4,5],satisfact:6,familiar:[0,1,3],pypi:4,db8:7,log_buff:0,increas:9,smash:[9,8],experi:5,enabl:[0,1,3,6],organ:9,rage:0,"0x10e7d6b90":8,stuff:[3,8],integr:1,contain:[0,7,2,3,4,5,6,8],programmableweb:2,paster:[4,8],view:[],dbsession:[4,6,8],knowledg:[1,4,9],packet:[7,9],mistak:4,book_id:3,closer:4,statu:[2,3,4,6],wire:[7,6,8],correctli:[0,8],pattern:[9,4,5,8],make_serv:3,creationflag:3,tend:4,state:[],progress:[1,5],neither:[2,9],flickr:[2,3,6],email:[0,7,3,4],mysite1:0,sole:[0,7,2],kei:[2,3,4,6,8],gethead:3,job:[0,4,6,8],entir:[2,4],jog:1,permanentflag:0,egg_info:4,addit:[1,9,3,8],revers:[],dobb:0,startupinfo:3,trove:5,equal:3,wsgiref:[],configpars:4,etc:[0,7,4,8],instanc:[2,4,6],equat:7,wear:0,comment:[0,7,2,8],typifi:4,lang:8,this_id:8,arriv:8,chmod:[3,6],walk:[],tuesdai:1,admin:[5,6],orig:2,quit:[0,7,3,4,5,6,8,9],addition:4,insuffici:0,json:[],treat:[2,3],rpclib:9,immedi:7,treasur:5,presenc:3,sock_stream:7,tranform:2,bulk:4,untrack:4,saner:2,hiddenfield:6,behalf:8,togeth:[],minim:[0,9],present:[],preexec_fn:3,ingredi:4,multi:[0,3],"14t17":2,plain:[0,3,4,5,6,8],harder:2,contextu:2,defin:[7,2,3,4,8,9],wild:[2,5],dbapi2:4,endblock:[6,8],layer:[0,7,4,9],omgwtf:2,ripe:5,demo:8,site:[2,4,5,6,8],lightweight:[2,9],incom:[],whirl:[7,2,6],pyramid_chameleon:[4,8],welcom:4,parti:0,matthew:2,failur:[0,7,2,3],difficult:3,http:[],unstag:4,denot:3,absorb:4,upon:3,"85a3":7,student:[1,5],php:[2,3],api_url:2,off:[0,9,4,6,8],center:[0,2],well:[0,1,2,3,4,6,7,9],exampl:[],command:[0,1,3,4,6,8],choos:[],undefin:8,usual:[7,4],deletecom:2,distanc:7,less:[0,7,3],kramer:6,tcp:[],paul:2,emtpi:4,web:[],wed:0,nullabl:[6,8],smith:0,add:[],other:[0,1,2,3,4,5,6,7,8,9],polici:[5,6],logger:4,homework:[],gmt:0,candid:2,rememb:[0,7,2,3,4,6,8],xmlrpc:[5,9],agnost:[7,8],crud:0,piec:[3,8],arguabl:5,cedar:6,know:[1,2,3,4,6,7,8,9],unseen:0,password:[0,6,8],recurs:2,lastbuildd:2,python2:[3,4],insert:6,like:[],success:[],echo_serv:7,lose:4,architectur:2,page:[0,1,2,3,4,5,6,8,9],backlog:7,drop:[7,8],specifi:[2,3,8],captur:[4,8],linux:[0,6],utmcmd:0,"export":3,uidvalid:0,proper:[0,7,2,3,8],home:[0,3,4,6,8],librari:[0,1,2,3,4,5,6,7,8,9],tmp:7,guid:[2,9],gethostbyname_ex:7,esr:0,lead:[3,5,8],broad:1,octet:0,leav:[4,8],settl:3,server_port:3,u00e9:2,investig:[0,5,8],journal:[3,4,5,6,8],usag:[1,2,4],facilit:9,host:[0,7,3,4,6],although:[0,4,8],wtttzy:6,about:[],actual:[0,7,2,3,4,6,8],socket:[],world:[9,3,4,5,8],column:[4,6],herokuapp:6,datagram:[7,9],carrier:7,constructor:7,fals:[7,2,3,6],remote_host:3,own:[7,2,3,4,5,6,8],washington:7,easy_instal:[2,4],automat:[7,2,4,8],guard:3,hoohoo:3,hellmann:5,leverag:6,sock_:7,mod_python:3,val:[2,4,8],allusersprofil:3,transfer:[0,2,6,9],rcp:2,intention:0,appl:4,wouldn:2,arg1:6,"var":[0,6],"function":[0,7,2,3,4,5,6,8],respositori:0,getlist:3,versioner_python_prefer_32_bit:3,xerox:4,bui:2,gain:[1,4,5,6],bookshelf:3,inlin:[7,4],count:4,gateway_interfac:3,made:[0,7,2,3,4,6,8,9],view_config:[6,8],whether:[0,2],wish:[3,4,6,9],googlecod:8,displai:[3,6,8],troubl:9,below:[7,3,6],pcreat:[4,8],problem:[],"int":[3,4,6],dure:5,pid:[2,6,8],ephemer:[7,4],implement:[],ini:[4,6,8],pip:[2,4],duru:4,probabl:[3,6,8],sharabl:3,crummi:2,detail:[],virtual:[0,3,4],new_valu:3,book:8,lookup:[7,2,8],futur:[7,5],branch:4,stat:0,repeat:3,allowedvers:0,dewei:0,echo_cli:7,log:[0,4,6,8],fiddler2:0,"_queri":6,syllabu:4,reliabl:7,xmlrpclib:5,rule:[0,7,4],bcryptpasswordmanag:6,models_nam:4,portion:[3,8],htmlparser:[2,5]},objtypes:{"0":"py:class"},objnames:{"0":["py","class","Python class"]},filenames:["presentations/session05","index","presentations/session07","presentations/session06","presentations/session01","outline","presentations/session03","presentations/session04","presentations/session02","readings","presentations/index"],titles:["Session 05","Internet Programming with Python","Session 07","Session 06","Session 01","Course Outline","Session 03","Session 04","Session 02","Supplementary Course Readings","Course Presentations"],objects:{"":{small:[2,0,1,""],center:[2,0,1,""],tiny:[2,0,1,""]}},titleterms:{wsgi:[3,5,9],code:2,protocol:[0,7,5,9],execut:3,show:3,text:2,all:[7,2],tcp:[7,5,9],syntax:6,session:[0,7,2,3,4,5,6,8,9],resolve_path:3,polish:6,outlin:5,find:2,languag:0,row:2,xml:2,web:[2,3,4,5,9],terminolog:4,bind:7,locat:2,doe:0,virtuelenv:4,configur:6,activ:4,complex:[],send:7,environment:[],add:[2,8],program:1,exercis:3,persist:[5,9],enchilada:[],input:8,control:8,homework:[0,7,2,3,4,8],real:0,deactiv:4,sourc:2,get:[7,2,3,8],preserv:2,big:2,stop:[],"break":[0,7,2],answer:2,hateoa:2,roa:2,rest:2,recap:[],resourc:0,bit:[],requir:1,introduct:4,document:2,like:0,addenda:2,edit:8,revers:2,list:3,resolv:0,authent:[5,9],server:[7,3],separ:4,did:[],pars:2,output:2,side:7,view:[9,5,8],respond:7,altern:[],set:6,simplifi:[],problem:3,some:[],revel:[],"static":8,expect:1,respons:[0,2,8],our:[2,4,8],stack:7,beyond:2,extract:2,orient:[],transport:7,out:2,virtualenv:4,"try":2,what:[0,1,2,3],afterword:2,hide:6,extend:5,databas:4,navigablestr:2,beautifulsoup:2,content:0,state:2,score:2,irl:2,internet:[1,2,7],needl:2,awai:3,previous:3,approach:2,method:0,refer:[1,5],cgi:[3,5,9],run:[7,3,6],proxi:[],navig:2,preprar:5,json:2,step:[0,2,3],orm:4,logout:6,prerequisit:1,address:[7,2],put:[7,2],path:[],wsdl:2,geocod:2,wait:[],comparison:2,about:[2,4],socket:[7,5,9],mash:2,script:[],success:[],wsgiref:[],filter:2,credit:2,mvc:[9,4,5,8],descript:2,repli:7,mime:0,implement:[0,6],whole:[],book:3,first:[0,3,4,6,8],size:2,repair:[],dilemma:2,render:[9,5,8],extra:2,overview:1,app:[3,6],dispatch:[],walk:2,header:0,rpc:2,api:[2,5,9],submit:[0,7,2],famili:7,wrap:[2,3,6],instal:[2,4],tame:2,open:2,your:[0,7,2,3,6,8],middlewar:[],speak:0,authz:6,from:3,supplementari:9,commun:7,interact:[4,8],question:2,live:3,messag:7,custom:7,compon:4,start:4,heroku:6,call:2,asset:8,accept:7,basic:[0,5,8],type:[0,7,2],authn:6,form:[5,9],stateless:2,search:[1,2],apach:[],part:8,link:[7,2],togeth:[7,2],examin:2,why:[2,4],repetit:[],iii:3,imap:0,present:[10,8],rss:2,serv:0,pull:2,word:4,flowchart:[],provid:6,prepar:[5,6,8],work:[2,3,4],exampl:0,project:4,three:4,learn:0,highlight:6,anonym:6,listen:7,servic:2,fetch:2,connect:7,point:[],earli:2,pyramid:[9,4,5,8],comput:[0,7],creat:[7,4],look:0,process:3,flow:7,smtp:0,few:0,templat:8,uri:0,packag:4,sqla:4,have:0,further:[0,7],incom:7,element:2,result:2,trick:2,ponder:[],cours:[10,5,9],engin:2,googl:2,secur:6,receiv:7,anoth:2,make:[2,8],format:6,tip:[],detail:3,scrape:2,revisit:2,write:3,python:[0,1,2,4,7],ideal:2,html:2,read:9,build:3,mashup:[2,5,9],test:[0,7,2,3],more:2,concern:4,simpl:2,mod_wsgi:[],css:2,updat:[],map:0,finish:7,http:[0,2,8],thi:1,deploy:[9,5,6,8],mess:2,price:2,choos:2,sqlalchemi:4,solut:[2,3],cgitb:[],"class":[1,2,3],plai:2,fffffffffuuuuuuuuuuuuu:2,user:[3,8],applic:[7,2,3,4,5,6,9],deploi:[5,6],date:2,construct:7,law:2,data:[2,3,5,9,8],login:6,soap:2,pop3:0,handl:0,task:7,url:2,entri:6,request:[2,8],wtform:8,django:[5,9],onlin:3,inform:7,client:7,environ:3,error:0,clean:[7,4],time:[0,7,2],jinja2:8,model:[4,8],sesstion:[5,9],rout:8}}) \ No newline at end of file From 413e33a94b8e1d9187921af723faf044fdb6797c Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 8 Feb 2015 22:36:54 -0800 Subject: [PATCH 084/114] adding images --- html/_images/mod_wsgi_flow.png | Bin 0 -> 23498 bytes html/_images/proxy_wsgi.png | Bin 0 -> 24188 bytes html/_images/wsgiref_flow.png | Bin 0 -> 21611 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 html/_images/mod_wsgi_flow.png create mode 100644 html/_images/proxy_wsgi.png create mode 100644 html/_images/wsgiref_flow.png diff --git a/html/_images/mod_wsgi_flow.png b/html/_images/mod_wsgi_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c2e84d4f4ddce50fa1823e128e8d563ee5c3e2 GIT binary patch literal 23498 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 literal 0 HcmV?d00001 diff --git a/html/_images/proxy_wsgi.png b/html/_images/proxy_wsgi.png new file mode 100644 index 0000000000000000000000000000000000000000..a95aec03a0b6f0b564a7f110c91582fce9169993 GIT binary patch literal 24188 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 RVjw5aVS%?XuQK(F`yXsWP?Z1x literal 0 HcmV?d00001 diff --git a/html/_images/wsgiref_flow.png b/html/_images/wsgiref_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..cea3f5e1e269a3a55406843a400445c659ebb336 GIT binary patch literal 21611 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 literal 0 HcmV?d00001 From 3398a917188754086d63649e62133c22d84bacdb Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 8 Feb 2015 22:45:25 -0800 Subject: [PATCH 085/114] update outline a readings to reflect new ordering --- html/_sources/outline.txt | 42 +++++++++++++---------- html/_sources/readings.txt | 68 +++++++++++++++++++------------------- html/index.html | 8 ++--- html/outline.html | 52 +++++++++++++++++------------ html/readings.html | 52 ++++++++++++++--------------- html/searchindex.js | 2 +- 6 files changed, 120 insertions(+), 104 deletions(-) diff --git a/html/_sources/outline.txt b/html/_sources/outline.txt index 8d7a40e8..b461ab53 100644 --- a/html/_sources/outline.txt +++ b/html/_sources/outline.txt @@ -134,8 +134,22 @@ clear and concise and have some great code examples. .. _Internet Protocols and Support: http://pymotw.com/2/internet_protocols.html +Session 6 - CGI and WSGI +------------------------ + +In this class we will explore ways of moving data from HTTP requests into the +dynamic scripts that process data. We will begin by looking at the original +specification for passing data, CGI (Common Gateway Interface). We'll look at +the benefits and drawbacks of the specification, and use it to create some +simple interactions. -Session 6 - APIs and Mashups +Then we will investigate a more modern take on the same problem, WSGI (Web +Services Gateway Interface). We'll see the ways in which WSGI is similar to +CGI, and look at the ways in which it differs. We'll create a simple interaction +using WSGI and see what benefits and drawbacks it confers. + + +Session 7 - APIs and Mashups ---------------------------- The internet is a treasure trove of information. But meaning can be hard to @@ -162,19 +176,6 @@ References * `json `_ -Session 7 - CGI and WSGI ------------------------- - -In this class we will explore ways of moving data from HTTP requests into the -dynamic scripts that process data. We will begin by looking at the original -specification for passing data, CGI (Common Gateway Interface). We'll look at -the benefits and drawbacks of the specification, and use it to create some -simple interactions. - -Then we will investigate a more modern take on the same problem, WSGI (Web -Services Gateway Interface). We'll see the ways in which WSGI is similar to -CGI, and look at the ways in which it differs. We'll create a simple interaction -using WSGI and see what benefits and drawbacks it confers. Preparation for Session 8 ************************* @@ -218,16 +219,23 @@ Session 9 - Extending Django ---------------------------- During this session, we will continue our exploration of Django, and of pair -programming. Students will once again pair up and work together to implement -one or more feature extending the basic Django app we created previously. +programming. Students will pair up and work together to implement one or more +feature extending the basic Django app we created previously. Finally, we'll discuss some of the strengths and weaknesses of Django. What makes it a good choice for some projects but not for others. -`Lecture Slides `_ +Preparation for Session 10 +************************** + +In preparation for session 10, you'll need to sign up for an account with +Amazon Web Services. Session 10 - Deploying Django ----------------------------- +During this session, we will deploy our Django application to Amazon Web +Services. To do so, we'll use a popular Python-based configuration management +tool, Ansible. diff --git a/html/_sources/readings.txt b/html/_sources/readings.txt index efe1bc80..7e555bad 100644 --- a/html/_sources/readings.txt +++ b/html/_sources/readings.txt @@ -167,7 +167,40 @@ remain unchanged) over time, skim these specifications for HTTP and SMTP: * `RFC 5321 - SMTP (latest) `_ -Session 6 - APIs and Mashups +Session 6 - CGI and WSGI +------------------------ + +* `CGI tutorial`_ - Read the following sections: Hello World, Debugging, Form. + Other sections optional. Follow along using CGIHTTPServer. +* `WSGI tutorial`_ - Follow along using wsgiref. +* `CGI module`_ - utilities for CGI scripts, mostly form and query string + parsing +* `Parse URLS into components + `_ +* `CGIHTTPServer`_ - python -m CGIHTTPServer +* `WSGI Utilities and Reference implementation + `_ +* `WSGI 1.0 specification `_ +* `WSGI 1.0.1 (Python 3 support) `_ +* `test WSGI server, like cgi.test() + `_ + +.. _CGI tutorial: http://webpython.codepoint.net/cgi_tutorial +.. _WSGI tutorial: http://webpython.codepoint.net/wsgi_tutorial +.. _CGI module: http://docs.python.org/release/2.6.5/library/cgi.html +.. _CGIHTTPServer: http://docs.python.org/release/2.6.5/library/cgihttpserver.html + +For alternative introductions to WSGI, try these two sources. They are a bit +more minimal and may be easier to comprehend off the bat. + +* `Getting Started with WSGI`_ - by Armin Ronacher (really solid and quick!) +* `very minimal introduction to WSGI + `_ + +.. _Getting Started with WSGI: http://lucumr.pocoo.org/2007/5/21/getting-started-with-wsgi/ + + +Session 7 - APIs and Mashups ---------------------------- * `Introduction to HTML (from the Mozilla Developer Network) @@ -212,39 +245,6 @@ both from the side of production and consumption: .. _restkit: https://github.com/benoitc/restkit/ -Session 7 - CGI and WSGI ------------------------- - -* `CGI tutorial`_ - Read the following sections: Hello World, Debugging, Form. - Other sections optional. Follow along using CGIHTTPServer. -* `WSGI tutorial`_ - Follow along using wsgiref. -* `CGI module`_ - utilities for CGI scripts, mostly form and query string - parsing -* `Parse URLS into components - `_ -* `CGIHTTPServer`_ - python -m CGIHTTPServer -* `WSGI Utilities and Reference implementation - `_ -* `WSGI 1.0 specification `_ -* `WSGI 1.0.1 (Python 3 support) `_ -* `test WSGI server, like cgi.test() - `_ - -.. _CGI tutorial: http://webpython.codepoint.net/cgi_tutorial -.. _WSGI tutorial: http://webpython.codepoint.net/wsgi_tutorial -.. _CGI module: http://docs.python.org/release/2.6.5/library/cgi.html -.. _CGIHTTPServer: http://docs.python.org/release/2.6.5/library/cgihttpserver.html - -For alternative introductions to WSGI, try these two sources. They are a bit -more minimal and may be easier to comprehend off the bat. - -* `Getting Started with WSGI`_ - by Armin Ronacher (really solid and quick!) -* `very minimal introduction to WSGI - `_ - -.. _Getting Started with WSGI: http://lucumr.pocoo.org/2007/5/21/getting-started-with-wsgi/ - - Sessions 8, 9, & 10 - Django ---------------------------- diff --git a/html/index.html b/html/index.html index 79f5e450..b00df1c8 100644 --- a/html/index.html +++ b/html/index.html @@ -72,8 +72,8 @@

    Internet Programming with PythonSesstion 3 - Pyramid Authentication and Deployment
  • Session 4 - TCP/IP and Sockets
  • Session 5 - Web Protocols
  • -
  • Session 6 - APIs and Mashups
  • -
  • Session 7 - CGI and WSGI
  • +
  • Session 6 - CGI and WSGI
  • +
  • Session 7 - APIs and Mashups
  • Session 8 - Basic Django
  • Session 9 - Extending Django
  • Session 10 - Deploying Django
  • @@ -94,8 +94,8 @@

    Internet Programming with PythonSesstion 3 - Pyramid Authentication and Deployment
  • Session 4 - TCP/IP and Sockets
  • Session 5 - Web Protocols
  • -
  • Session 6 - APIs and Mashups
  • -
  • Session 7 - CGI and WSGI
  • +
  • Session 6 - CGI and WSGI
  • +
  • Session 7 - APIs and Mashups
  • Sessions 8, 9, & 10 - Django
  • diff --git a/html/outline.html b/html/outline.html index ae749757..fb7981b3 100644 --- a/html/outline.html +++ b/html/outline.html @@ -168,8 +168,20 @@

    References -

    Session 6 - APIs and Mashups¶

    +
    +

    Session 6 - CGI and WSGI¶

    +

    In this class we will explore ways of moving data from HTTP requests into the +dynamic scripts that process data. We will begin by looking at the original +specification for passing data, CGI (Common Gateway Interface). We’ll look at +the benefits and drawbacks of the specification, and use it to create some +simple interactions.

    +

    Then we will investigate a more modern take on the same problem, WSGI (Web +Services Gateway Interface). We’ll see the ways in which WSGI is similar to +CGI, and look at the ways in which it differs. We’ll create a simple interaction +using WSGI and see what benefits and drawbacks it confers.

    +
    +
    +

    Session 7 - APIs and Mashups¶

    The internet is a treasure trove of information. But meaning can be hard to find among all that data. Mashups offer a way to combine data from disparate sources in order to derive meaning. Data online can be offered in forms ripe @@ -191,18 +203,6 @@

    Referencesjson

    -

    -
    -

    Session 7 - CGI and WSGI¶

    -

    In this class we will explore ways of moving data from HTTP requests into the -dynamic scripts that process data. We will begin by looking at the original -specification for passing data, CGI (Common Gateway Interface). We’ll look at -the benefits and drawbacks of the specification, and use it to create some -simple interactions.

    -

    Then we will investigate a more modern take on the same problem, WSGI (Web -Services Gateway Interface). We’ll see the ways in which WSGI is similar to -CGI, and look at the ways in which it differs. We’ll create a simple interaction -using WSGI and see what benefits and drawbacks it confers.

    Preparation for Session 8¶

    Please walk through this tutorial before session 8 begins.

    @@ -235,14 +235,21 @@

    Session 8 - Basic Django

    Session 9 - Extending Django¶

    During this session, we will continue our exploration of Django, and of pair -programming. Students will once again pair up and work together to implement -one or more feature extending the basic Django app we created previously.

    +programming. Students will pair up and work together to implement one or more +feature extending the basic Django app we created previously.

    Finally, we’ll discuss some of the strengths and weaknesses of Django. What makes it a good choice for some projects but not for others.

    -

    Lecture Slides

    +
    +

    Preparation for Session 10¶

    +

    In preparation for session 10, you’ll need to sign up for an account with +Amazon Web Services.

    +

    Session 10 - Deploying Django¶

    +

    During this session, we will deploy our Django application to Amazon Web +Services. To do so, we’ll use a popular Python-based configuration management +tool, Ansible.

    @@ -273,16 +280,17 @@

    Table Of Contents

  • References
  • -
  • Session 6 - APIs and Mashups
  • diff --git a/html/readings.html b/html/readings.html index 643ab80c..df9383a7 100644 --- a/html/readings.html +++ b/html/readings.html @@ -169,8 +169,30 @@

    Session 5 - Web ProtocolsRFC 5321 - SMTP (latest)

    -
    -

    Session 6 - APIs and Mashups¶

    +
    +

    Session 6 - CGI and WSGI¶

    + +

    For alternative introductions to WSGI, try these two sources. They are a bit +more minimal and may be easier to comprehend off the bat.

    + +
    +
    +

    Session 7 - APIs and Mashups¶

    Sessions 8, 9, & 10 - Django¶

    Though it’s way too much to read in any one sitting (or even in 10 or 20), the @@ -266,8 +266,8 @@

    Table Of Contents

  • Sesstion 3 - Pyramid Authentication and Deployment
  • Session 4 - TCP/IP and Sockets
  • Session 5 - Web Protocols
  • -
  • Session 6 - APIs and Mashups
  • -
  • Session 7 - CGI and WSGI
  • +
  • Session 6 - CGI and WSGI
  • +
  • Session 7 - APIs and Mashups
  • Sessions 8, 9, & 10 - Django
  • diff --git a/html/searchindex.js b/html/searchindex.js index 783d0592..4899053f 100644 --- a/html/searchindex.js +++ b/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:42,terms:{content_length:3,interchang:[2,4],four:0,database_url:6,prefix:[0,7],ronach:9,af_rout:7,forget:6,whose:3,aug:4,sorri:4,ipproto_raw:7,crisew:7,concret:4,swap:3,under:3,dest_dir:4,worth:[2,4,8],remote_us:3,digit:[0,8],everi:[0,2,3,4],govern:[0,1,5],vast:2,chapel:2,location_attr:2,fetch_search_result:2,cmd:0,herbert:8,imaplib:[0,5],verif:6,direct:[0,4],histor:[1,9],second:[0,7,2,3,4,6,8],street:2,nthi:8,even:[0,3,4,5,9],asid:6,list_of_tcp_and_udp_port_numb:7,"new":[0,7,2,3,4,6,8],net:0,ever:[2,3,9],metadata:4,ipproto_tcp:7,abov:[0,7,2,3,4,5,6],never:[7,3,4],here:[0,1,2,3,4,6,7,8,9],"4xx":0,path:[],interpret:[0,7,2,3,4,8],credit:[],webfact:0,permit:[0,5],studi:9,portabl:[1,3],golden:8,pprint:[2,3],heroku_postgresql_maroon_url:6,wikimedia:[4,8],avenu:2,unix:[0,7,2],org:[0,7,2,3],txt:[0,7,4,6],unit:2,highli:1,first_lin:0,describ:[7,2,3],would:[0,2,3,4,6,8],tail:6,dnt:0,call:[],admin_password:6,typo:4,recommend:6,calc:3,type:[],tell:[0,7,2,3,4,6],fastcgi:3,relat:[4,9],panach:8,notic:[0,7,2,3,4,6,8],phone:8,unpack:4,must:[0,1,3,4,6,7,8],af_unix:7,join:[0,3],flaskenv:[],restor:[4,6],setup:[4,6,8],work:[],spec:[3,9],conceptu:8,norm:0,root:[3,6],defer:6,repoz:4,give:[1,2,3,4,5,6,7],smtp:[],indic:0,unavail:2,want:[0,1,2,3,4,6,8,9],dele:0,end:[0,1,2,3,5,6,7,8,9],learning_journ:[4,6,8],frobozz:0,classifi:2,how:[0,1,2,3,4,5,6,7,8,9],conn:[0,7],env:[3,4],answer:[],verifi:[6,8],perspect:9,updat:[],anon_1:4,after:[3,4,8],superus:4,diagram:4,befor:[0,7,2,3,4,5,6,8],wrong:4,lat:2,beautifulsoup4:2,parallel:9,demonstr:[0,4,5],domin:4,third:3,classmethod:[4,6,8],authzpolici:6,wsapikei:2,greet:0,think:[7,3,4,5,6,8,9],alias:7,scoped_sess:4,dispar:5,environ:[],incorpor:[3,6],enter:[0,2,3,8],fan:2,first:[],engine_from_config:[4,6,8],order:[1,2,4,5,6,8],hob7v7guwir4n1v:6,oper:[1,3,8,6,7],remote_id:3,over:[7,2,4,5,8,9],fam:7,becaus:[0,4,6,8],jpeg:0,privileg:[3,4],keyboard:0,flexibl:4,vari:[0,7],digest:9,fit:[2,5],fix:[0,3,4,8],simple_cli:0,toolbelt:[6,8],comprehend:9,better:[7,2,4,6,9],offic:0,drawback:5,persist:[],comprehens:9,"1xx":0,easier:[9,4,8],descend:2,them:[0,1,2,3,4,5,6,7,8],thei:[0,1,2,3,4,5,6,7,8,9],id73:3,safe:[0,4,6],"break":[],sqlite3:4,bang:3,jinja2:[],initializedb:[4,6],rental:[],choic:[1,2,4,5,7,9],villaini:3,walkthrough:2,retr:0,bonu:2,getvalu:3,rocki:6,timeout:2,each:[0,1,2,3,4,5,6,7,10],debug:[0,3,4,9],went:[0,8],side:[],bone:8,mean:[0,7,2,3,4,5,6,8],laboratori:1,doug:5,logo:8,extract:[],network:[1,2,5,8,9,7],goe:[2,4,8],god:4,content:[],got:[0,3,4,6,8],forth:[0,3],navig:[],written:[9,3,5,8],rail:0,nightmar:4,situat:[0,4],free:[6,8],ineffici:2,hand:[2,6,8],getservbynam:7,uiuc:3,s3cr3t:6,traceback:3,static_url:8,filter:[],mvc:[],iso:2,unabl:6,subtl:2,confus:[7,8],"__or__":7,rang:[0,1,2,8],render:[],independ:[0,4],rank:2,hook:[3,4],instruct:[7,2,3,4,9],alreadi:[0,7,2,4,6,8],wrapper:[7,2],agre:3,fantast:[1,4,9],primari:[4,8],top:[2,4,6,8],"0x1103e38d0":4,sometim:[0,4],imap4rev1:0,necessarili:3,master:[4,6],too:[0,7,2,3,4,8,9],tom:4,my_view:8,consol:4,namespac:2,tool:[0,1,2,3,4,5,6,7,9],setuptool:4,took:4,incur:6,next_sibl:2,target:[2,3],keyword:[2,6,8],provid:[],tree:[4,6],project:[],matter:[2,6],rfc2616:0,minut:[0,7,8],latitud:2,rad:7,fashion:[2,3],ran:[0,4],walkscor:2,modern:[4,5],mind:9,mine:0,raw:0,af_sna:7,pylon:4,increment:2,"__main__":[2,3,6],seen:[0,7,2,3,4,6,8],seem:[3,6],seek:[4,6],strength:5,latter:4,thorough:[9,8],"0x1103e3fd0":4,fnhg5:0,transmit:4,hypertext_transfer_protocol:0,simplifi:[],elev:0,plenti:5,though:[0,2,6,9],usernam:[0,6,8],object:[7,2,3,4,6,8,9],guess_typ:0,minask:2,regular:4,artifact:4,bsd:7,fnhg3:0,typ:7,maria:[7,3],tradit:8,don:[0,1,2,3,4,6,7,8,9],doc:[0,2,4,6],flow:[],doe:[],declar:[3,4,8],unchang:9,passwordfield:6,sum:8,dot:8,introspect:2,opposit:8,random:6,syntax:[],radio:8,protocol:[],involv:6,absolut:8,nobodi:3,layout:[2,9,5,6,8],menu:[0,3],explain:[3,4,9],configur:[],apach:[],restaur:2,kessler:9,disert:9,png:0,rich:[1,5],folder:[7,3,4,6,8],resolve_uri:0,patter:8,stop:[],reconstruct:3,bat:9,bar:[0,7,2,8],ietf:[0,3],baz:[0,2],"public":[2,6,8],buffsiz:7,reload:[0,3,6],bad:[0,3],told:6,steal:[4,6],title_info:3,respond:[],get_const:7,disucss:5,serve_forev:3,result:[],respons:[],fail:[0,7,6],best:[2,4,6],awar:6,pythoncert:[4,8],databas:[],wikipedia:[0,7,2,4,9],urllib:[2,5],yet:[0,7,4,6,8],figur:[7,3,4],score:[],outstand:8,awai:[],enlighten:9,approach:[],attribut:[2,4,6,8],extend:[],weak:5,extens:[0,1,2,6],html5:[5,8],toler:2,pull:[],protect:0,accident:7,expos:3,howev:[3,4,8],against:[0,3,6,8],logic:[4,6,8],seri:4,com:[0,7,2,3,4,6,8],compromis:1,get_appset:[4,6,8],assur:7,trunk:8,trust:4,assum:[7,2,4],speak:[],bathroom:2,strong:[6,8],chrome:0,add_rout:[4,6,8],three:[],been:[2,3,4,6,8],much:[0,7,2,3,4,5,8,9],redeploi:6,interest:[2,9],basic:[],raise_for_statu:2,tini:2,quickli:[0,4],life:[0,2,5],rfc5321:0,xxx:3,setup_log:[4,8],telnet:7,argument:[0,7,2,3,4,6,8],matchpath:3,"catch":0,build_env:3,ugli:0,ident:6,servic:[],properti:[7,2,3,6],commerci:4,calcul:3,apikei:2,neat:0,seven:0,pyramid:[],af_appletalk:7,shebang:3,tabl:[2,3,4,6,8],toolkit:0,kwarg:2,fnhg:0,march:1,tediou:[2,4],fedorahost:2,sever:[2,3,6,9],datetim:2,perform:[3,4,8],suggest:[0,6],make:[],couchdb:4,craigslist:2,complex:[],split:0,version_str:3,complet:[0,1,2,3,4,5,6,7,8,9],rfc822:0,nic:7,hang:0,xyzzi:0,nix:3,rais:[0,7,2,3],editcom:2,"548kb":4,thu:[7,2,3],hypothet:4,inherit:[3,4,8],client:[],endif:[6,8],gzip:0,programm:2,everyth:[0,1,2,4,6,8,9],moreov:0,left:[4,6,9],identifi:[0,3,8],just:[0,7,2,3,4,6,8,9],photo:[2,3],spread:2,human:[0,2,9,8],config:[4,6,8],mysql_length:4,languag:[],previous:[],alchemi:4,easi:[2,9,4,6,8],shout:8,"8bitmim":0,httpfound:[6,8],els:[0,2,4,6,8],save:[0,2,4,6,8],hat:0,gave:4,opt:0,applic:[],mayb:3,preserv:[],parse_var:4,render_markdown:6,elabor:6,apart:[2,9,8],imap4_port:0,response_method_not_allow:0,specif:[7,2,3,4,5,6,8,9],arbitrari:[7,4,6],bcrypt:6,manual:4,soap:[],hung:0,install_requir:4,underli:[1,5,7],www:[0,7,2,3],right:[0,1,2,3,6,8,9],old:4,"0db8":7,universal_newlin:3,nfrom:4,intern:[0,3],successfulli:[2,3,4],craiglist:2,transmiss:[0,7,9],total:[3,6],bottom:7,multipli:3,ssh2:9,exectut:4,overcom:3,condit:[0,3],foo:[0,7,2,6,8],fieldstorag:3,localhost:[0,3,6,8],mailgat:0,core:9,jsonp:8,oracl:4,confer:5,bolt:2,repositori:[7,3,4,6,8],post:[0,2,3,6,8],"super":0,chapter:[4,9],postgresql:[4,6],surround:8,dinner:0,commit:[2,4,6],sept:2,produc:[7,5],encod:[0,2,6],bound:[7,4],curios:5,down:[2,6,8],creativ:[4,8],bufsiz:3,storag:[0,4],git:[4,6],deal:[7,9],wai:[0,1,2,3,4,5,6,8,9],support:[0,1,2,3,4,5,6,8,9],hypermedia:2,avail:[7,2,4,6,8],reli:6,request_method:[3,6],editor:[2,3],overhead:2,get_address_info:7,rcpt:0,internet_protocol_suit:7,head:[0,7,2,6,8],medium:[7,2],form:[],offer:[9,3,4,5,8],forc:[2,9],hear:7,icmp:7,"true":[0,7,2,4,6,8],ws_link:2,absent:3,attr:[2,8],strip_filt:8,maximum:7,until:[7,4],url:[],absenc:3,fundament:[1,5],emit:3,intitalizedb:4,featur:[3,4,5,6,9],af_decnet:7,"abstract":4,decrypt:0,proven:4,exist:[0,3,4,6,8],glanc:9,check:[0,2,3,4,6],assembl:8,encrypt:[6,9],mashup:[],excel:[9,8],role:8,jone:0,test:[],webob:4,roll:6,realiti:2,node:2,intend:[1,4,7],af_unspec:7,urllib2:[2,5],djangocon:9,intent:1,consid:[0,9,4,8],sql:[4,5],receiv:[],longer:7,bullet:6,sock:[0,7],anywher:3,pbkdf2:6,initialize_learning_journal_db:[4,6],pathnam:[0,7],time:[],push:[0,4,6],serious:2,osx:[0,6],concept:[1,4,5,6,7,9],chain:[4,8],skip:4,consum:[7,5,9],focus:9,invent:[2,4],supplement:9,skim:9,row:[],depend:[4,5,6,8],flask:[4,9],graph:8,readabl:[0,2,3,8],unpython:4,a0004:0,a0005:0,certainli:8,a0001:0,a0002:0,a0003:0,addon:6,query_str:3,sourc:[],string:[0,7,2,3,4,5,6,8,9],congest:7,price_span:2,lru:4,kitten:4,ydood:8,subprocess:3,brows:[5,8],administr:3,level:[1,2,4,6],did:[],dig:[2,8],ipproto_udp:7,iter:[7,2,3,4],item:[2,3,4,8],team:4,quick:[0,1,4,9],imap4:0,dir:[0,7],declarative_bas:4,upper:8,slower:7,lstrip:3,htm:2,sign:[0,2,6],restkit:9,cost:6,port:[0,7,3,6],procfil:6,appear:[6,8],repli:[],scaffold:4,beautifulsoup:[],current:[7,2,3,4],rst2xml:4,"3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4":6,response_bodi:3,deriv:[2,3,5],urlopen:2,gener:[0,7,2,3,4,6,8,9],unauthor:2,slow:7,address:[],along:[0,1,2,5,9],wait:[],shift:0,queue:7,bob:[0,4],commonli:7,ourselv:[0,6],ipc:7,semant:7,session1:7,extra:[],modul:[0,1,2,3,4,5,6,7,9],prefer:[0,3],bookapp:3,seattl:2,visibl:5,marker:8,instal:[],http_:3,smallish:7,market:4,types_map:0,memori:[1,2],univers:9,visit:[6,8],todai:[0,7,2,6,8],live:[],criteria:[0,4],msg:7,tightli:3,unsaf:0,idempot:0,maxask:2,walkabl:2,enhanc:5,visual:0,appendix:0,oop:4,obj:[4,8],effort:2,content_typ:3,pretend:0,focu:[2,5],whatev:[7,8],purpos:[0,3,4,5,6,8],boilerpl:4,input1:2,stream:[7,4],predict:0,agent:[0,3],topic:[9,8],critic:9,app_factori:4,occur:7,entryeditform:6,alwai:[0,7,2,3,4,6],lxml:2,multipl:[3,4],winter:1,charset:[0,8],write:[],anyon:[3,6,8],pure:2,xhtml:0,map:[],product:[4,6,9],max:[0,6,8],dive:[1,5,6],tomayko:9,mac:0,"4th":2,mai:[0,7,2,3,4,6,9],data:[],classroom:4,gethostnam:7,practic:0,divid:[7,3,4],explicit:8,predic:6,mangl:0,inform:[],"switch":4,cannot:[7,3,8],combin:[1,2,3,4,5,6,8],printenv:3,callabl:[3,8],talk:[0,7,4,5,8,9],shield:5,ydwoh:8,ttl:2,gitignor:4,still:[0,2,4,8],dynam:[0,2,3,5,8],config_uri:[4,6,8],group:[7,3,4],"4z6rvnhte21mpljw5veive0eg57gn":6,concis:5,authorization_polici:6,sec10:0,platform:6,window:[0,2,3,4,6],curli:8,mail:0,main:[0,2,4,6,8],non:0,noj:2,profession:2,killer:5,initi:[0,3,4,6,9],interview:0,safari:0,half:7,now:[0,7,2,3,4,6,8,9],discuss:[7,3,4,5,8,9],introduct:[],term:[1,3,4],name:[0,7,2,3,4,6,8,9],simpl:[],interpr:4,server_softwar:3,separ:[],magazin:[9,8],path_transl:3,januari:1,compil:[6,9],domain:[7,9,4,6,8],"0x105849b90":8,replac:[6,8],individu:[7,2,4,8],continu:[0,7,3,4,5,6],wsgi_1:3,ensur:[0,7,4,6],operand:3,happen:[0,7,3,4,8],accomplish:[0,9],space:0,profil:7,formula:2,sensor:2,factori:[3,6],she:6,tmpl:8,earlier:[0,4,6],pseudocod:0,ch05s03:0,envelop:2,argv:[4,6],orm:[],argn:6,brower:5,"byte":[7,2],search_param:2,care:[0,7,3,9],sign_in:6,utmcsr:0,where:[7,2,3,4,6,8],syndic:2,refus:7,thing:[0,2,4,6,8,9],place:[7,2,3,4,5,6,8],router:3,principl:1,imposs:4,frequent:4,lambda:8,origin:[2,3,4,5,9],directli:[7,2,4,8],onc:[0,7,2,3,4,5,6,8],arrai:2,yourself:[0,1],acquisit:2,fast:4,open:[],size:[],urin:0,given:[0,1,2,4,5,7,8,9],sheet:8,bookdb:3,convent:0,bookmark:9,imap4_ssl_port:0,eachoth:4,paramt:2,lognam:3,conveni:[2,4],friend:6,includ:[0,1,2,3,4,6,7,8],especi:[2,3],memo:3,copi:[0,2,3,6,8],huh:0,alan:[4,8],"short":[3,9],mostli:[0,7,9],attempt:7,than:[0,7,3,4,6,8,9],matchdict:[6,8],serv:[],were:[7,2,4],posit:7,"5xx":0,browser:[0,7,2,3,4,5,6,8],pre:2,fork:[0,2],sai:[0,3,4,6],angel:3,pro:7,ani:[0,1,2,3,4,6,7,8,9],doctyp:[0,2,8],rent:2,notimplementederror:0,saw:4,shtml:0,engin:[],ipproto_:7,note:[0,7,2,3,4,6,8],wretch:3,take:[0,7,2,3,4,5,6,8,9],green:0,reload_templ:4,noth:[2,3,4,6,8],channel:[0,2,4],begin:[0,7,3,4,5,6,8],sure:[7,2,4,6,8],pain:[4,6],trace:4,normal:[2,4],buffer:[0,7],price:[],pair:[4,5,8],homepag:[2,9],run_cgi:3,sesstion:[],utmccn:0,later:0,drive:9,"8mb":4,quantiti:2,create_al:4,link:[],shortnam:6,preambl:3,gracefulli:0,shot:2,show:[],my_index:4,checkbox:8,permiss:[3,6],ground:1,xml:[],onli:[0,2,4,6,8],explicitli:[3,4],codehilit:6,transact:[7,4,6],activ:[],enough:[0,4,6],dict:[7,2,4],analyt:6,startswith:7,nearli:4,variou:[4,5,8],get:[],mung:0,clang:4,repo:2,ssl:0,tailor:0,ssh:7,reveal:3,entryfactori:6,yield:2,authenticated_userid:6,draft:0,default_permiss:6,summari:2,wiki:[0,7,2],n10:8,lng:2,web_application_hybrid:2,detect:6,review:[0,7,3,4,6,8],enumer:6,label:[6,8],getattr:7,between:[0,1,2,3,4,5,7],"import":[0,7,2,3,4,6,8],across:[1,2,5,7],parent:[3,4],elladan:7,tut:0,cycl:[4,8],come:[0,2,3,4,6,8],img:0,tutori:[9,5,8],wherin:4,improv:[0,3,4,6],among:[7,4,5,8],nnn:2,color:6,unittest:5,inspir:2,dispatch:[],"__class__":2,exploit:3,imad1:0,typic:[3,4],artu:0,coupl:[7,2,3,4],rebuild:0,hardli:2,mark:6,evangelista:[4,8],workshop:1,cwd:3,valueerror:[2,3],extract_list:2,avian:7,emphas:1,ws_descript:2,docxmlrpcserv:5,repres:[0,2,4,5,8],howdi:8,those:[0,2,3,4],"case":[0,9,3,4,8],interoper:2,cast:[2,4],outcom:[0,4],scum:3,python_web:[4,8],ehlo:0,zipcod:2,advantag:[4,6],stdout:[7,3,4],canon:[7,3],worri:[7,6],blah:0,reqeuest:3,smalltalk:4,develop:[0,1,2,3,4,5,6,8,9],proto:7,cc0:[4,8],same:[0,7,2,3,4,5,6,8,9],epoch:2,html:[],pai:[2,6],eventu:4,week:[0,1,2,3,4,5,6,7,8,9],someexamplerssdomain:2,finish:[],assist:[3,4],someon:6,driven:[0,8],capabl:3,http_host:3,add_rount:6,mani:[0,7,2,3,4,6,8,9],extern:9,appropri:[7,3,5,6,8],"__acl__":6,markup:6,without:[7,2,3,4,8],promis:7,model:[],nosql:4,when:[0,7,2,3,4,6,8,9],resp:[0,2],rest:[],interrupt:0,kill:[0,4],aspect:[4,5,6,8],polish:[],flavor:2,xb2:2,heffalump:7,versu:1,hint:0,except:[0,7,3,4],littl:[3,6,8],apache2:9,blog:[0,5],ws_score:2,pile:2,blob:6,exercis:[],vulner:0,real:[],requri:6,tranmiss:7,around:[7,2,3,6,8,9],read:[],psd:2,makin:8,traffic:0,mon:[0,2],redqueen:0,socket_tool:7,intel:0,whitespac:[0,2],notimpl:2,integ:[7,4,6],server:[],benefit:[0,7,5],either:[0,8],cascad:8,output:[],manag:[7,4,6],fulfil:6,ipproto_ip:7,definit:8,"2xx":0,exit:4,posgresql:6,notabl:0,af_inet6:7,power:[7,4,5,6,8,9],tdd:0,broken:0,"__name__":[2,3,6],src:8,deflat:0,central:4,acl:6,microframework:4,srv:3,"19t01":6,act:[2,3],mytempl:[4,8],effici:1,iterm:3,status_cod:2,console_script:4,isoformat:2,inbox:0,strip:[2,8],your:[],igmp:7,loc:2,buffer_s:7,httpnotfound:[6,8],her:6,set_authorization_polici:6,aren:[4,6],lon:2,start:[],interfac:[0,7,3,4,5,6,9],low:1,lot:[0,9,4,8],resum:2,"0x10b075ed0":4,hei:7,index_pag:[6,8],handle_request:3,tupl:7,client_address:7,categor:0,congratul:6,card:7,notat:[2,8],dirti:[2,4],possibl:[7,2,3,9,8],"default":[7,3,4,6,8],start_respons:3,gone:4,uid:0,creat:[],certain:[0,7,2,4],deep:[6,9],strongli:6,file:[0,1,2,3,4,5,6,7,8],fill:[3,6,8],again:[0,7,2,3,4,5,6,8],models_valu:4,googl:[],compel:4,field:[2,3,4,6,8],valid:[0,2,6,8],compet:2,copiou:9,ignor:[4,9],you:[0,1,2,3,4,5,6,7,8,9],juic:8,sequenc:0,symbol:[7,8],briefli:8,transceiv:7,pool:9,reduc:4,"1b6":0,wife:9,directori:[0,2,3,4,5,6,8],descript:[],potenti:[5,6],escap:6,unset:3,represent:[7,2,4],all:[],skeleton:[7,4],breadth:9,forbidden:6,scalar:4,abil:[0,4],cameron:2,follow:[0,7,3,4,5,6,8,9],disk:0,dsn:0,script_nam:3,af_inet:7,articl:[4,6,8],init:4,cgi:[],introduc:[1,4,5,8],hill:2,sound:2,liter:4,chameleon:8,far:[7,4,9],faq:0,mcdonough:9,util:[0,7,4,9],verb:0,mechan:6,fall:4,veri:[0,7,3,4,5,6,8,9],ticket:6,simple_app:3,webmast:0,list:[],last_nam:8,adjust:4,stderr:[0,3],small:[2,3],correct:[0,7,8],neighborhood:2,your_script:2,sync:5,past:[4,6],design:[1,2,3,4,5,6,7,8,9],pass:[0,7,2,3,4,5,6,8,9],further:[],by_nam:6,sud:[2,9],section:[0,9,3,4,8],abl:[0,2,3,4,5,6,8],brief:[5,9],delet:[0,1,2,6],version:[0,1,2,3,4,5,6],tickl:2,primary_kei:[4,6],intersect:8,deepli:1,method:[],contrast:1,craigslist_result:2,hasn:2,full:[1,2,3,4,5],hash:[3,6],berkelei:9,inher:[2,5],goodby:0,standard:[0,1,2,3,4,5,6,7,9],modifi:0,rfc3875:3,valu:[0,7,2,3,4,6,8],ahead:[7,2,3,6,8],"0x1005b8b40":7,popen:3,prior:6,pick:[6,8],action:[7,2,4,5,6,8],add_static_view:[4,8],via:[2,3,4,6,8],transit:2,filenam:0,href:[2,3,6,8],famili:[],establish:[7,2],cgi_bin:3,select:[0,1,4],hexadecim:2,distinct:0,ctrl:0,regist:[7,6],two:[0,7,2,3,4,5,6,8,9],taken:[2,6],more:[],flaw:8,octal:2,mozilla:[0,9,8],flag:[0,7,6],addcom:2,particular:[9,4,6,8],known:[7,2,6],cach:[0,4],none:[0,7,2,3,4,6,8],endpoint:[0,7,2],puzzl:3,hour:[0,7,5,8],hous:2,outlin:[],dev:[2,3,6],venusian:4,remain:[6,9],paragraph:2,learn:[],abandon:2,rst2html:4,def:[0,7,2,3,4,6,8],ndate:7,prompt:[7,3,4,5],scan:[4,8],challeng:[0,2,6],registr:6,share:[0,7,3,4,6,8],accept:[],explor:[1,2,4,5,7],phrase:[4,8],login_form:6,cours:[],goal:[2,4],first_nam:8,secur:[],rather:0,anoth:[],comfort:[1,8],divis:3,"__init__":[4,6,8],csv:[4,8],loginform:6,css:[],isn:[0,2,3,8],"545kb":4,resourc:[],referenc:8,okai:[0,2,4],associ:5,github:[0,7,2,3,4,6,8],footer:8,author:[3,5,6],django:[],caus:4,egg:4,translationstr:4,constitu:8,help:[0,1,2,4,5,7,8,9],"912ft":2,mainthread:[4,6],hypertext:9,add_address:2,soon:[7,8],held:2,through:[0,1,2,4,5,6,8,9],pane:0,paramet:2,style:[0,4,6,8],psycopg2:[4,6],runnabl:3,pserv:[6,8],might:[0,7,2,3,4,8,9],alter:3,pce:[1,8],recip:6,good:[0,1,2,3,4,5,6,9],"return":[0,7,2,3,4,6,8],pollut:4,cew:4,framework:[1,4,5,6,8,9],maildrop:0,gethostbynam:7,msg_part:7,httplib:5,document:[],troubleshoot:6,authent:[],easili:[2,9,4,8],achiev:2,http_server:0,compris:4,found:[0,3,4,8],unicod:[2,4,6,8],joel:6,hard:[4,5,6],idea:[0,7,2,4,5],procedur:2,realli:[0,7,2,6,8,9],connect:[],beyond:[],orient:[],hostnam:7,some_valu:3,ftp:7,publish:[3,4,9],research:4,bubbl:8,etag:0,health:2,authnpolici:6,print:[0,7,2,3,4,6,8],uwpc:[4,8],some_appl:3,"__utmz":0,postgr:6,proxi:[],uncommit:4,advanc:0,new_model:4,differ:[0,7,2,3,4,5,6,8],cooki:[0,6],reason:[0,2,3,8],base:[0,1,2,4,5,6],ask:[0,7,4],"__utma":0,earliest:2,recv:[0,7],bash:[3,6],applict:3,by_id:[4,6,8],perhap:[0,8],perman:[0,4,6],find_al:2,assign:[0,1,2,4,5,6,7,8],request_protocol:3,feed:2,oserror:3,set_authentication_polici:6,obviou:[0,2],prevent:[3,6],feel:8,number:[0,7,2,4,5,6,8,9],placehold:[0,8],done:[0,7,2,3,4,6,8],construct:[],blank:[0,3],miss:[2,3,4],fanci:2,guess:0,script:[],interact:[],pbkdf2passwordmanag:6,least:[2,3,4,8],getservbyport:7,order_bi:4,statement:4,zeromq:9,store:[4,6],luckili:[0,2,4,6,8],parc:4,option:[0,7,2,3,4,6,9],relationship:[7,5],behind:[4,9],echo_socket:7,part:[],pars:[],logged_in:6,fenced_cod:6,fred:4,kind:[0,7,3,6,8],grew:0,roi:2,remot:[7,2,4,6,9],remov:[7,4,6],str:[3,4],relative_to:6,consumpt:[5,9],aclauthorizationpolici:6,payload:0,"_socketobject":7,expir:6,properli:[0,2,5,8],"null":2,imagin:[6,8],built:[0,2,3,4,5,6,8,9],lib:[0,3,4],remote_addr:3,self:[3,6],html5lib:2,also:[0,1,2,3,4,5,6,7,8,9],build:[],cgi_1:3,textareafield:8,brace:8,pubdat:2,http_user_ag:3,distribut:4,lighttpd:3,kai:4,previou:[0,2,5],reach:7,chart:[4,8],most:[0,7,2,3,4,5,6,8],plai:[],poke:[2,3],plan:6,addr:[0,7,2],filesystem:[0,5,8],clear:[0,7,5],cover:[0,1,4,6,9],clean:[],http_server_at_hom:0,latest:[2,9],wsgi:[],hyper:0,latlng_tmpl:2,v12:0,getcom:2,session:[],particularli:[6,8],fine:[0,8],find:[],cell:2,giant:3,execut:[],pretti:[0,2,4],solut:[],"172kb":4,templat:[],factor:4,smtplib:5,darwin:4,hit:2,unus:4,"__file__":3,express:[1,3,8],resent:7,famous:3,googleapi:2,"3xx":0,restart:[0,3,6,8],rfc:[0,3,9],common:[0,7,2,3,4,5,6,8],nowher:4,wrote:6,certif:[1,8],set:[],dump:2,sep:2,overwhelm:4,"0x1103e3f50":4,af_ipx:7,see:[0,7,2,3,4,5,6,8],bare:8,sea:5,arg:[3,4],reserv:[0,7,2],someth:[0,2,3,4,6,8],particip:1,topmost:7,won:0,subscript:8,pastedeploi:4,altern:[],javascript:[2,8],isol:4,mailbox:0,"31m":6,cgi_sum:3,both:[0,7,2,3,4,5,6,8,9],blabber:4,last:[0,7,3,4,6,8],delimit:0,lignt:5,context:[3,6,8],load:[0,2,3,5,6,8],markdown:[5,6],simpli:[0,2,3,4,5,6,8],point:[],instanti:[2,4],header:[],route_url:[6,8],param:[2,6],suppli:[2,3,6],batteri:2,comput:[],throughout:1,xkcd:0,backend:3,damp:3,empti:[0,7,3,4,6,8],pgbackup:6,bs4:2,secret:[3,6],damn:2,rstpep2html:4,"55c0287d4ef21f15b97eb1f107451b88b479bff":6,fire:[0,2,3,4,6,8],imag:[0,2,8],cryptacular:6,coordin:4,understand:[0,1,5,6,9],func:3,educ:3,formatd:0,look:[],solid:[1,6,9],add_walkscor:2,batch:4,"while":[0,7,2,3,4,5],"54f7e4d":6,match:[0,7,2,3,6,8,9],behavior:[7,4,8],error:[],fun:8,everyon:6,loop:0,readi:[0,7,2,4,6,8],unintuit:2,readm:[3,4],itself:[2,3,4],spong:3,limit:[7,2],"3f80f":0,decor:8,grant:[3,6],belong:[0,7,6],wherein:[2,3,8],decod:2,zope:4,conflict:[2,4],b59b7c3:6,communc:7,moment:[7,2,4,6,8],temporari:8,user:[],robust:6,stack:[],recent:[0,4],lower:[7,2,9,8],task:[],find_packag:4,entri:[],spent:7,doodi:8,pickl:4,person:[7,6,8],expens:[7,3,6],endfor:[6,8],connnect:7,five:0,macintosh:0,spend:[7,8],explan:0,make_wsgi_app:4,"__path__":4,shape:1,mysql:4,session05:0,session04:7,session01:7,session03:2,session02:[0,8],a0006:0,restructuredtext:4,global_config:[4,6,8],populate_obj:[6,8],armin:9,win:0,input:[],cgi_2:3,bin:[2,3,4,6,8],bim:2,varchar:4,format:[],response_ok:0,folk:3,server_socket:7,bit:[],formal:[0,3,4],httpexcept:8,leisur:9,ipproto_icmp:7,docutil:4,altough:2,manifest:[4,5],collect:[4,8],princip:6,popular:[3,5,6],often:[0,7,4,9],duck:2,some:[],back:[0,7,2,3,4,5,6,8,9],understood:7,uidnext:0,sampl:[6,8],ljenv:[4,6,8],formatted_address:2,virtualenv:[],scale:6,cgihttpserv:[3,9],sock_dgram:7,pep:3,id3:3,per:[0,7,2,6],larg:[2,3],slash:3,machin:[1,2,3,4,5,6,7,8,9],intial:0,run:[],authtktauthenticationpolici:6,simple_serv:3,viabl:4,step:[],crlf:0,subtract:3,"resum\u00e9":2,constraint:9,materi:[10,5,9],prove:6,"0x100563c90":7,exc_info:3,block:[0,7,2,6,8],path_info:3,supplementari:[],miracl:0,within:3,protocol_vers:3,lesson:9,html5shiv:8,inclus:2,span:[2,6],errno:3,question:[],stylesheet:8,submit:[],custom:[],heroku:[],prettier:8,suit:[5,9],term_program:3,larri:4,repeatedli:[7,4],great:[0,2,3,4,5,8,9],pwd:4,game:8,atol:6,atom:2,line:[0,1,3,4,6,8],info:[7,3,4,6],row1:2,utf:[0,2,8],consist:[0,3],latlng:2,highlight:[],similar:[0,2,3,4,5],mymodel:[4,6,8],sesson:0,constant:7,parser:[2,9],chao:[2,6],doesn:[0,7,2,3,4,6,8],lectur:[1,5],gecko:0,response_not_found:0,titl:[0,2,3,4,8],scrape:[],nam:7,nav:8,transport:[],nice:[0,2,3,5,6,8],llvm:4,mongodb:4,plug:0,meaning:4,csrftoken:0,longitud:2,svn:8,algorithm:6,mimetyp:0,rst2latex:4,parse_sourc:2,sign_in_out:6,depth:[1,9],server_protocol:3,came:6,hello:[0,9,3,8],getaddrinfo:7,code:[],queri:[2,3,4,6,8,9],sqlserver:4,ljshell:8,edu:[7,3],a_pag:2,bathtim:8,elsewher:[7,6],friendli:2,send:[],becam:2,aris:4,sent:[0,7,2,3,4,5,6,8],charlesproxi:0,rollback:4,spool:0,stackoverflow:0,relev:[2,4],tri:8,magic:8,button:8,geograph:2,hive:3,"try":[],race:[6,8],kit:9,entry_point:4,hasnochildren:0,pleas:[2,4,5,9],impli:3,smaller:7,natur:8,uniqu:[2,4,6,8],video:9,download:[4,8],odd:8,click:[3,8],append:[0,3,4,6],compat:[3,4],index:[0,3,4,6,8],wahoo:0,compar:[0,6],resembl:8,access:[0,1,2,3,5,6,9],py2:4,can:[0,7,2,3,4,5,6,8,9],len:[0,7,2,3,4],bodi:[0,2,3,4,6,8],loadapp:6,intercept:6,let:[0,7,2,3,4,6,8],myhost:3,becom:[2,4],sinc:[7,2,3,4,8],convert:[2,4,6,8],didn:[4,9],convers:9,technolog:[7,6],stringval:3,rdf:2,thie:9,chang:[0,2,3,4,5,6,8,9],purplemattfish:2,maker:8,chanc:5,response_head:3,firefox:0,ago:[7,6],parse_request:0,appli:[5,6,8],app:[],gatewai:[3,5],apt:2,api:[],regexp:[3,8],apa:2,from:[],zip:2,commun:[],upgrad:6,next:[0,7,2,3,4,6,8,9],websit:[2,4,5,6,8],few:[],usr:[3,4],remaind:3,preformat:6,scgi:3,ipoac:7,babi:8,trail:3,train:[4,8],somesecret:6,account:8,retriev:[3,8],scalabl:4,alic:6,annot:[],af_:7,thin:7,meet:5,fetch:[],aliv:[0,7],control:[],sqlite:[4,6],tar:4,process:[],lock:6,sudo:4,high:4,tag:[0,2,6,8],tab:0,onlin:[],serial:2,cache_max_ag:[4,8],gcc:4,cewing_socket:7,sit:9,client_socket:7,pyramid_jinja2:8,copyright:4,instead:[0,4,6,8],chri:9,stand:[4,8],delai:4,initialzedb:6,attend:1,other_sess:4,"6mb":4,class_:2,attent:6,tier:6,philosophi:9,physic:[7,8],add_al:4,bind:[],correspond:[7,3],element:[],webroot:0,runapp:6,prettifi:2,allow:[0,1,2,3,4,5,6,7,8,9],sendal:[0,7],elif:8,insight:5,bunch:7,uiqj579igrbrebhmjqnth8pffaz2qrj:0,verify_password:6,"0x10046cec0":7,infrastructur:6,bye:0,recept:7,greater:9,handl:[],demoenv:4,spell:8,dai:[0,5,8],auth:6,httplib2:9,close_fd:3,front:5,"8a2e":7,tilkov:9,mashup_:2,all_book:3,somewher:[2,6,8],anyth:[2,4,6],edit:[],entrycreateform:[6,8],nameerror:[0,3],soupenv:2,slide:[1,5],mode:4,autoincr:6,beneath:6,pygment:6,item_templ:3,bump:0,sessionmak:[4,8],meta:[2,3,8],"static":[],brittl:2,our:[],wander:3,special:[2,4,5,6,8],out:[],variabl:[3,6],defend:9,facto:2,categori:4,suitabl:6,rel:8,clone:[7,4,8],red:0,clarifi:4,insid:[0,7,2,3,4],frank:8,manipul:[3,4],w3c:2,standalon:2,zodb:4,dictionari:[2,6,8],downei:2,auth_secret:6,yore:8,complianc:6,cri:[0,8],"0x1103d9f10":4,could:[0,3,4,6,9],lexer:6,put:[],keep:[0,1,2,3,4,5,7],length:[0,3,4,6,8],enforc:9,outsid:[3,4,6],geometri:2,waitress:6,softwar:[0,7,2,4,6,8],isbn:3,pygments_styl:6,qualiti:5,echo:[0,7,3,5],exact:8,date:[],match_param:[6,8],owner:[2,8],"long":[0,7,2,3,4,5,6],strict:2,licens:[4,9],creator:9,mkdir:4,system:[1,2,3,4,6,7,8,9],messag:[],attach:6,imap4_ssl:0,termin:[0,7,3,4,6],"final":[0,1,3,4,5,7,8],ipv4:[7,9],udp:[7,9],shell:[3,4,6],shelf:4,ipv6:[7,9],fnhg2:0,models_id:4,"8d3":7,dyno:6,textfield:[6,8],exactli:[0,7,8],haven:2,route_nam:[6,8],embodi:[4,6],roberto:8,structur:[1,2,3,5,8,9],charact:[2,4,6,8],sens:8,sensit:[0,6],f12:0,stdin:3,favorit:0,listval:3,py3:4,deprec:4,myproject:6,have:[],close:[0,7,8],need:[0,1,2,3,4,6,7,8,9],turn:[0,4,5,6,8,9],paramiko:9,programdata:3,afraid:[0,4],min:[6,8],rout:[],chief:6,which:[0,7,2,3,4,5,6,8,9],from_encod:2,authentication_polici:6,ncsa:3,singl:[0,1,2,3,4,5,6,7,8],unless:7,ds_store:4,deploy:[],whl:4,who:[6,8],wandering_angel:3,discov:[0,2,3],deploi:[],pyc:4,segment:8,payment:6,dens:1,request:[],face:8,pipe:8,build_db:6,deni:[3,6],determin:[0,7,3,4,5,6,8],fact:[7,3,5,6,8],jkorpela:0,text:[],bring:[0,8],server_nam:3,bedroom:2,rough:4,identityset:4,redirect:[0,2],locat:[],auth_typ:3,"2br":2,should:[0,1,2,3,4,5,6,7,8],jan:[0,7],suppos:9,"3e1cb03b":0,"__tablename__":[4,6],local:[7,2,4,6,8],hope:[2,9],freddi:8,move:[0,7,2,4,5],satisfact:6,familiar:[0,1,3],pypi:4,db8:7,log_buff:0,increas:9,smash:[9,8],experi:5,enabl:[0,1,3,6],organ:9,rage:0,"0x10e7d6b90":8,stuff:[3,8],integr:1,contain:[0,7,2,3,4,5,6,8],programmableweb:2,paster:[4,8],view:[],dbsession:[4,6,8],knowledg:[1,4,9],packet:[7,9],mistak:4,book_id:3,closer:4,statu:[2,3,4,6],wire:[7,6,8],correctli:[0,8],pattern:[9,4,5,8],make_serv:3,creationflag:3,tend:4,state:[],progress:[1,5],neither:[2,9],flickr:[2,3,6],email:[0,7,3,4],mysite1:0,sole:[0,7,2],kei:[2,3,4,6,8],gethead:3,job:[0,4,6,8],entir:[2,4],jog:1,permanentflag:0,egg_info:4,addit:[1,9,3,8],revers:[],dobb:0,startupinfo:3,trove:5,equal:3,wsgiref:[],configpars:4,etc:[0,7,4,8],instanc:[2,4,6],equat:7,wear:0,comment:[0,7,2,8],typifi:4,lang:8,this_id:8,arriv:8,chmod:[3,6],walk:[],tuesdai:1,admin:[5,6],orig:2,quit:[0,7,3,4,5,6,8,9],addition:4,insuffici:0,json:[],treat:[2,3],rpclib:9,immedi:7,treasur:5,presenc:3,sock_stream:7,tranform:2,bulk:4,untrack:4,saner:2,hiddenfield:6,behalf:8,togeth:[],minim:[0,9],present:[],preexec_fn:3,ingredi:4,multi:[0,3],"14t17":2,plain:[0,3,4,5,6,8],harder:2,contextu:2,defin:[7,2,3,4,8,9],wild:[2,5],dbapi2:4,endblock:[6,8],layer:[0,7,4,9],omgwtf:2,ripe:5,demo:8,site:[2,4,5,6,8],lightweight:[2,9],incom:[],whirl:[7,2,6],pyramid_chameleon:[4,8],welcom:4,parti:0,matthew:2,failur:[0,7,2,3],difficult:3,http:[],unstag:4,denot:3,absorb:4,upon:3,"85a3":7,student:[1,5],php:[2,3],api_url:2,off:[0,9,4,6,8],center:[0,2],well:[0,1,2,3,4,6,7,9],exampl:[],command:[0,1,3,4,6,8],choos:[],undefin:8,usual:[7,4],deletecom:2,distanc:7,less:[0,7,3],kramer:6,tcp:[],paul:2,emtpi:4,web:[],wed:0,nullabl:[6,8],smith:0,add:[],other:[0,1,2,3,4,5,6,7,8,9],polici:[5,6],logger:4,homework:[],gmt:0,candid:2,rememb:[0,7,2,3,4,6,8],xmlrpc:[5,9],agnost:[7,8],crud:0,piec:[3,8],arguabl:5,cedar:6,know:[1,2,3,4,6,7,8,9],unseen:0,password:[0,6,8],recurs:2,lastbuildd:2,python2:[3,4],insert:6,like:[],success:[],echo_serv:7,lose:4,architectur:2,page:[0,1,2,3,4,5,6,8,9],backlog:7,drop:[7,8],specifi:[2,3,8],captur:[4,8],linux:[0,6],utmcmd:0,"export":3,uidvalid:0,proper:[0,7,2,3,8],home:[0,3,4,6,8],librari:[0,1,2,3,4,5,6,7,8,9],tmp:7,guid:[2,9],gethostbyname_ex:7,esr:0,lead:[3,5,8],broad:1,octet:0,leav:[4,8],settl:3,server_port:3,u00e9:2,investig:[0,5,8],journal:[3,4,5,6,8],usag:[1,2,4],facilit:9,host:[0,7,3,4,6],although:[0,4,8],wtttzy:6,about:[],actual:[0,7,2,3,4,6,8],socket:[],world:[9,3,4,5,8],column:[4,6],herokuapp:6,datagram:[7,9],carrier:7,constructor:7,fals:[7,2,3,6],remote_host:3,own:[7,2,3,4,5,6,8],washington:7,easy_instal:[2,4],automat:[7,2,4,8],guard:3,hoohoo:3,hellmann:5,leverag:6,sock_:7,mod_python:3,val:[2,4,8],allusersprofil:3,transfer:[0,2,6,9],rcp:2,intention:0,appl:4,wouldn:2,arg1:6,"var":[0,6],"function":[0,7,2,3,4,5,6,8],respositori:0,getlist:3,versioner_python_prefer_32_bit:3,xerox:4,bui:2,gain:[1,4,5,6],bookshelf:3,inlin:[7,4],count:4,gateway_interfac:3,made:[0,7,2,3,4,6,8,9],view_config:[6,8],whether:[0,2],wish:[3,4,6,9],googlecod:8,displai:[3,6,8],troubl:9,below:[7,3,6],pcreat:[4,8],problem:[],"int":[3,4,6],dure:5,pid:[2,6,8],ephemer:[7,4],implement:[],ini:[4,6,8],pip:[2,4],duru:4,probabl:[3,6,8],sharabl:3,crummi:2,detail:[],virtual:[0,3,4],new_valu:3,book:8,lookup:[7,2,8],futur:[7,5],branch:4,stat:0,repeat:3,allowedvers:0,dewei:0,echo_cli:7,log:[0,4,6,8],fiddler2:0,"_queri":6,syllabu:4,reliabl:7,xmlrpclib:5,rule:[0,7,4],bcryptpasswordmanag:6,models_nam:4,portion:[3,8],htmlparser:[2,5]},objtypes:{"0":"py:class"},objnames:{"0":["py","class","Python class"]},filenames:["presentations/session05","index","presentations/session07","presentations/session06","presentations/session01","outline","presentations/session03","presentations/session04","presentations/session02","readings","presentations/index"],titles:["Session 05","Internet Programming with Python","Session 07","Session 06","Session 01","Course Outline","Session 03","Session 04","Session 02","Supplementary Course Readings","Course Presentations"],objects:{"":{small:[2,0,1,""],center:[2,0,1,""],tiny:[2,0,1,""]}},titleterms:{wsgi:[3,5,9],code:2,protocol:[0,7,5,9],execut:3,show:3,text:2,all:[7,2],tcp:[7,5,9],syntax:6,session:[0,7,2,3,4,5,6,8,9],resolve_path:3,polish:6,outlin:5,find:2,languag:0,row:2,xml:2,web:[2,3,4,5,9],terminolog:4,bind:7,locat:2,doe:0,virtuelenv:4,configur:6,activ:4,complex:[],send:7,environment:[],add:[2,8],program:1,exercis:3,persist:[5,9],enchilada:[],input:8,control:8,homework:[0,7,2,3,4,8],real:0,deactiv:4,sourc:2,get:[7,2,3,8],preserv:2,big:2,stop:[],"break":[0,7,2],answer:2,hateoa:2,roa:2,rest:2,recap:[],resourc:0,bit:[],requir:1,introduct:4,document:2,like:0,addenda:2,edit:8,revers:2,list:3,resolv:0,authent:[5,9],server:[7,3],separ:4,did:[],pars:2,output:2,side:7,view:[9,5,8],respond:7,altern:[],set:6,simplifi:[],problem:3,some:[],revel:[],"static":8,expect:1,respons:[0,2,8],our:[2,4,8],stack:7,beyond:2,extract:2,orient:[],transport:7,out:2,virtualenv:4,"try":2,what:[0,1,2,3],afterword:2,hide:6,extend:5,databas:4,navigablestr:2,beautifulsoup:2,content:0,state:2,score:2,irl:2,internet:[1,2,7],needl:2,awai:3,previous:3,approach:2,method:0,refer:[1,5],cgi:[3,5,9],run:[7,3,6],proxi:[],navig:2,preprar:5,json:2,step:[0,2,3],orm:4,logout:6,prerequisit:1,address:[7,2],put:[7,2],path:[],wsdl:2,geocod:2,wait:[],comparison:2,about:[2,4],socket:[7,5,9],mash:2,script:[],success:[],wsgiref:[],filter:2,credit:2,mvc:[9,4,5,8],descript:2,repli:7,mime:0,implement:[0,6],whole:[],book:3,first:[0,3,4,6,8],size:2,repair:[],dilemma:2,render:[9,5,8],extra:2,overview:1,app:[3,6],dispatch:[],walk:2,header:0,rpc:2,api:[2,5,9],submit:[0,7,2],famili:7,wrap:[2,3,6],instal:[2,4],tame:2,open:2,your:[0,7,2,3,6,8],middlewar:[],speak:0,authz:6,from:3,supplementari:9,commun:7,interact:[4,8],question:2,live:3,messag:7,custom:7,compon:4,start:4,heroku:6,call:2,asset:8,accept:7,basic:[0,5,8],type:[0,7,2],authn:6,form:[5,9],stateless:2,search:[1,2],apach:[],part:8,link:[7,2],togeth:[7,2],examin:2,why:[2,4],repetit:[],iii:3,imap:0,present:[10,8],rss:2,serv:0,pull:2,word:4,flowchart:[],provid:6,prepar:[5,6,8],work:[2,3,4],exampl:0,project:4,three:4,learn:0,highlight:6,anonym:6,listen:7,servic:2,fetch:2,connect:7,point:[],earli:2,pyramid:[9,4,5,8],comput:[0,7],creat:[7,4],look:0,process:3,flow:7,smtp:0,few:0,templat:8,uri:0,packag:4,sqla:4,have:0,further:[0,7],incom:7,element:2,result:2,trick:2,ponder:[],cours:[10,5,9],engin:2,googl:2,secur:6,receiv:7,anoth:2,make:[2,8],format:6,tip:[],detail:3,scrape:2,revisit:2,write:3,python:[0,1,2,4,7],ideal:2,html:2,read:9,build:3,mashup:[2,5,9],test:[0,7,2,3],more:2,concern:4,simpl:2,mod_wsgi:[],css:2,updat:[],map:0,finish:7,http:[0,2,8],thi:1,deploy:[9,5,6,8],mess:2,price:2,choos:2,sqlalchemi:4,solut:[2,3],cgitb:[],"class":[1,2,3],plai:2,fffffffffuuuuuuuuuuuuu:2,user:[3,8],applic:[7,2,3,4,5,6,9],deploi:[5,6],date:2,construct:7,law:2,data:[2,3,5,9,8],login:6,soap:2,pop3:0,handl:0,task:7,url:2,entri:6,request:[2,8],wtform:8,django:[5,9],onlin:3,inform:7,client:7,environ:3,error:0,clean:[7,4],time:[0,7,2],jinja2:8,model:[4,8],sesstion:[5,9],rout:8}}) \ No newline at end of file +Search.setIndex({envversion:42,terms:{content_length:3,interchang:[2,4],four:0,database_url:6,prefix:[0,7],ronach:9,af_rout:7,skeleton:[7,4],whose:3,choos:[],aug:4,sorri:4,ipproto_raw:7,crisew:7,concret:4,swap:3,under:3,dest_dir:4,worth:[2,4,8],formatd:0,digit:[0,8],everi:[0,2,3,4],govern:[0,1,5],vast:2,chapel:2,location_attr:2,fetch_search_result:2,cmd:0,herbert:8,imaplib:[0,5],verif:6,direct:[0,4],batch:4,second:[0,7,2,3,4,6,8],street:2,nthi:8,even:[0,3,4,5,9],introspect:2,list_of_tcp_and_udp_port_numb:7,"new":[0,7,2,3,4,6,8],net:0,ever:[2,3,9],told:6,ipproto_tcp:7,behavior:[7,4,8],never:[7,3,4],here:[0,1,2,3,4,6,7,8,9],"4xx":0,path:[],interpret:[0,7,2,3,4,8],credit:[],webfact:0,permit:[0,5],studi:9,portabl:[1,3],golden:8,pprint:[2,3],heroku_postgresql_maroon_url:6,wikimedia:[4,8],avenu:2,unix:[0,7,2],brower:5,txt:[0,7,4,6],unit:2,highli:1,yore:8,describ:[7,2,3],would:[0,2,3,4,6,8],init:4,dnt:0,call:[],admin_password:6,typo:4,recommend:6,calc:3,type:[],tell:[0,7,2,3,4,6],fastcgi:3,relat:[4,9],panach:8,notic:[0,7,2,3,4,6,8],phone:8,unpack:4,addon:6,af_unix:7,join:[0,3],flaskenv:[],restor:[4,6],setup:[4,6,8],work:[],spec:[3,9],conceptu:8,introduc:[1,4,5,8],root:[3,6],defer:6,bookapp:3,give:[1,2,3,4,5,6,7],smtp:[],indic:0,unavail:2,want:[0,1,2,3,4,6,8,9],dele:0,end:[0,1,2,3,5,6,7,8,9],learning_journ:[4,6,8],frobozz:0,classifi:2,how:[0,1,2,3,4,5,6,7,8,9],conn:[0,7],env:[3,4],answer:[],verifi:[6,8],perspect:9,updat:[],anon_1:4,after:[3,4,8],superus:4,diagram:4,befor:[0,7,2,3,4,5,6,8],wrong:4,lat:2,beautifulsoup4:2,parallel:9,demonstr:[0,4,5],domin:4,third:3,classmethod:[4,6,8],authzpolici:6,wsapikei:2,greet:0,imposs:4,alias:7,scoped_sess:4,dispar:5,environ:[],incorpor:[3,6],enter:[0,2,3,8],mechan:6,first:[],engine_from_config:[4,6,8],order:[1,2,4,5,6,8],hob7v7guwir4n1v:6,oper:[1,3,8,6,7],belong:[0,7,6],over:[7,2,4,5,8,9],fall:4,becaus:[0,4,6,8],jpeg:0,privileg:[3,4],keyboard:0,flexibl:4,vari:[0,7],digest:9,img:0,fix:[0,3,4,8],simple_cli:0,toolbelt:[6,8],comprehend:9,better:[7,2,4,6,9],offic:0,drawback:5,persist:[],comprehens:9,"1xx":0,easier:[9,4,8],descend:2,them:[0,1,2,3,4,5,6,7,8],thei:[0,1,2,3,4,5,6,7,8,9],id73:3,safe:[0,4,6],"break":[],sqlite3:4,bang:3,jinja2:[],initializedb:[4,6],rental:[],choic:[1,2,4,5,7,9],acquisit:2,retr:0,bonu:2,getvalu:3,rocki:6,timeout:2,each:[0,1,2,3,4,5,6,7,10],debug:[0,3,4,9],went:[0,8],side:[],bone:8,mean:[0,7,2,3,4,5,6,8],laboratori:1,doug:5,logo:8,extract:[],network:[1,2,5,8,9,7],goe:[2,4,8],god:4,dsn:0,got:[0,3,4,6,8],forth:[0,3],navig:[],rail:0,nightmar:4,situat:[0,4],free:[6,8],standard:[0,1,2,3,4,5,6,7,9],hand:[2,6,8],uiuc:3,puzzl:3,traceback:3,static_url:8,filter:[],mvc:[],iso:2,unabl:6,subtl:2,confus:[7,8],user:[],rang:[0,1,2,8],render:[],independ:[0,4],rank:2,hook:[3,4],instruct:[7,2,3,4,9],alreadi:[0,7,2,4,6,8],messag:[],agre:3,fantast:[1,4,9],primari:[4,8],top:[2,4,6,8],"0x1103e38d0":4,sometim:[0,4],imap4rev1:0,necessarili:3,master:[4,6],too:[0,7,2,3,4,8,9],tom:4,my_view:8,consol:4,namespac:2,tool:[0,1,2,3,4,5,6,7,9],setuptool:4,took:4,incur:6,next_sibl:2,target:[2,3],keyword:[2,6,8],provid:[],tree:[4,6],project:[],matter:[2,6],arriv:8,minut:[0,7,8],latitud:2,rad:7,fashion:[2,3],ran:[0,4],walkscor:2,modern:[4,5],mind:9,mine:0,raw:0,af_sna:7,pylon:4,increment:2,"__main__":[2,3,6],seen:[0,7,2,3,4,6,8],seem:[3,6],seek:[4,6],strength:5,latter:4,thorough:[9,8],"0x1103e3fd0":4,shelf:4,transmit:4,hypertext_transfer_protocol:0,simplifi:[],endfor:[6,8],plenti:5,though:[0,2,6,9],usernam:[0,6,8],object:[7,2,3,4,6,8,9],guess_typ:0,minask:2,regular:4,alan:[4,8],bsd:7,models_id:4,typ:7,maria:[7,3],tradit:8,don:[0,1,2,3,4,6,7,8,9],doc:[0,2,4,6],flow:[],doe:[],declar:[3,4,8],unchang:9,passwordfield:6,section:[0,9,3,4,8],dot:8,asid:6,opposit:8,random:6,syntax:[],radio:8,protocol:[],involv:6,absolut:8,exactli:[0,7,8],layout:[2,9,5,6,8],menu:[0,3],explain:[3,4,9],configur:[],apach:[],restaur:2,kessler:9,disert:9,matchdict:[6,8],rich:[1,5],folder:[7,3,4,6,8],resolve_uri:0,patter:8,stop:[],amazon:5,reconstruct:3,bat:9,bar:[0,7,2,8],ietf:[0,3],baz:[0,2],method:[],buffsiz:7,reload:[0,3,6],bad:[0,3],metadata:4,steal:[4,6],title_info:3,respond:[],get_const:7,disucss:5,serve_forev:3,result:[],respons:[],fail:[0,7,6],simpl:[],best:[2,4,6],awar:6,pythoncert:[4,8],databas:[],wikipedia:[0,7,2,4,9],urllib:[2,5],yet:[0,7,4,6,8],figur:[7,3,4],score:[],outstand:8,awai:[],enlighten:9,approach:[],attribut:[2,4,6,8],extend:[],weak:5,extens:[0,1,2,6],html5:[5,8],toler:2,pull:[],protect:0,accident:7,expos:3,howev:[3,4,8],against:[0,3,6,8],logic:[4,6,8],browser:[0,7,2,3,4,5,6,8],com:[0,7,2,3,4,6,8],compromis:1,get_appset:[4,6,8],assur:7,trunk:8,trust:4,assum:[7,2,4],speak:[],bathroom:2,chrome:0,add_rout:[4,6,8],three:[],been:[2,3,4,6,8],much:[0,7,2,3,4,5,8,9],redeploi:6,interest:[2,9],basic:[],futur:[7,5],raise_for_statu:2,tini:2,quickli:[0,4],life:[0,2,5],xxx:3,setup_log:[4,8],telnet:7,argument:[0,7,2,3,4,6,8],matchpath:3,"catch":0,build_env:3,ugli:0,ident:6,servic:[],properti:[7,2,3,6],commerci:4,calcul:3,apikei:2,neat:0,seven:0,pyramid:[],af_appletalk:7,shebang:3,tabl:[2,3,4,6,8],toolkit:0,kwarg:2,fnhg:0,varchar:4,tediou:[2,4],fedorahost:2,sever:[2,3,6,9],datetim:2,perform:[3,4,8],suggest:[0,6],make:[],couchdb:4,craigslist:2,complex:[],split:0,version_str:3,complet:[0,1,2,3,4,5,6,7,8,9],rfc822:0,nic:7,hang:0,xyzzi:0,nix:3,rais:[0,7,2,3],editcom:2,"548kb":4,thu:[7,2,3],hypothet:4,inherit:[3,4,8],client:[],endif:[6,8],gzip:0,programm:2,everyth:[0,1,2,4,6,8,9],moreov:0,left:[4,6,9],identifi:[0,3,8],just:[0,7,2,3,4,6,8,9],photo:[2,3],human:[0,2,9,8],mysql_length:4,languag:[],previous:[],alchemi:4,easi:[2,9,4,6,8],shout:8,"8bitmim":0,httpfound:[6,8],els:[0,2,4,6,8],save:[0,2,4,6,8],hat:0,gave:4,opt:0,applic:[],race:[6,8],mayb:3,preserv:[],parse_var:4,render_markdown:6,elabor:6,ineffici:2,apart:[2,9,8],imap4_port:0,response_method_not_allow:0,specif:[7,2,3,4,5,6,8,9],arbitrari:[7,4,6],reload_templ:4,manual:4,ncsa:3,hung:0,install_requir:4,underli:[1,5,7],www:[0,7,2,3],right:[0,1,2,3,6,8,9],old:4,"0db8":7,nfrom:4,intern:[0,3],successfulli:[2,3,4],craiglist:2,transmiss:[0,7,9],total:[3,6],bottom:7,multipli:3,ssh2:9,exectut:4,overcom:3,condit:[0,3],foo:[0,7,2,6,8],fieldstorag:3,localhost:[0,3,6,8],mailgat:0,core:9,particular:[9,4,6,8],wandering_angel:3,confer:5,bolt:2,repositori:[7,3,4,6,8],post:[0,2,3,6,8],"super":0,unsaf:0,obj:[4,8],surround:8,dinner:0,log_buff:0,commit:[2,4,6],sept:2,produc:[7,5],encod:[0,2,6],bound:[7,4],curios:5,down:[2,6,8],creativ:[4,8],bufsiz:3,storag:[0,4],git:[4,6],deal:[7,9],utmcsr:0,support:[0,1,2,3,4,5,6,8,9],hypermedia:2,avail:[7,2,4,6,8],reli:6,request_method:[3,6],editor:[2,3],overhead:2,get_address_info:7,rcpt:0,fork:[0,2],head:[0,7,2,6,8],medium:[7,2],form:[],offer:[9,3,4,5,8],forc:[2,9],hear:7,icmp:7,codehilit:6,absent:3,attr:[2,8],paramiko:9,strip_filt:8,maximum:7,until:[7,4],dens:1,absenc:3,fundament:[1,5],emit:3,nnn:2,featur:[3,4,5,6,9],af_decnet:7,"abstract":4,decrypt:0,proven:4,exist:[0,3,4,6,8],glanc:9,check:[0,2,3,4,6],assembl:8,encrypt:[6,9],mashup:[],when:[0,7,2,3,4,6,8,9],role:8,jone:0,test:[],webob:4,roll:6,realiti:2,node:2,intend:[1,4,7],af_unspec:7,urllib2:[2,5],djangocon:9,intent:1,iterm:3,sql:[4,5],receiv:[],longer:7,bullet:6,anywher:3,pbkdf2:6,initialize_learning_journal_db:[4,6],ignor:[4,9],time:[],push:[0,4,6],serious:2,osx:[0,6],concept:[1,4,5,6,7,9],chain:[4,8],skip:4,consum:[7,5,9],focus:9,invent:[2,4],supplement:9,skim:9,row:[],depend:[4,5,6,8],flask:[4,9],graph:8,readabl:[0,2,3,8],unpython:4,a0004:0,a0005:0,certainli:8,a0001:0,a0002:0,a0003:0,must:[0,1,3,4,6,7,8],query_str:3,sourc:[],string:[0,7,2,3,4,5,6,8,9],congest:7,price_span:2,lru:4,kitten:4,ydood:8,my_index:4,brows:[5,8],administr:3,level:[1,2,4,6],did:[],dig:[2,8],ipproto_udp:7,iter:[7,2,3,4],item:[2,3,4,8],team:4,quick:[0,1,4,9],imap4:0,dir:[0,7],declarative_bas:4,upper:8,slower:7,thin:7,lstrip:3,htm:2,sign:[0,2,5,6],restkit:9,cost:6,port:[0,7,3,6],procfil:6,appear:[6,8],repli:[],scaffold:4,beautifulsoup:[],current:[7,2,3,4],rst2xml:4,sinc:[7,2,3,4,8],"3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4":6,response_bodi:3,deriv:[2,3,5],urlopen:2,gener:[0,7,2,3,4,6,8,9],unauthor:2,slow:7,address:[],along:[0,1,2,5,9],wait:[],regexp:[3,8],shift:0,queue:7,bob:[0,4],commonli:7,ourselv:[0,6],ipc:7,semant:7,session1:7,extra:[],modul:[0,1,2,3,4,5,6,7,9],prefer:[0,3],repoz:4,seattl:2,visibl:5,marker:8,instal:[],http_:3,smallish:7,market:4,types_map:0,memori:[1,2],univers:9,visit:[6,8],todai:[0,7,2,6,8],live:[],criteria:[0,4],msg:7,tightli:3,chapter:[4,9],idempot:0,maxask:2,walkabl:2,enhanc:5,visual:0,appendix:0,oop:4,postgresql:[4,6],effort:2,content_typ:3,pretend:0,focu:[2,5],whatev:[7,8],purpos:[0,3,4,5,6,8],boilerpl:4,input1:2,stream:[7,4],predict:0,agent:[0,3],topic:[9,8],critic:9,app_factori:4,occur:7,entryeditform:6,alwai:[0,7,2,3,4,6],lxml:2,multipl:[3,4],winter:1,charset:[0,8],write:[],anyon:[3,6,8],pure:2,xhtml:0,map:[],product:[4,6,9],max:[0,6,8],dive:[1,5,6],mac:0,"4th":2,mai:[0,7,2,3,4,6,9],data:[],classroom:4,gethostnam:7,practic:0,divid:[7,3,4],explicit:8,predic:6,mangl:0,inform:[],"switch":4,cannot:[7,3,8],combin:[1,2,3,4,5,6,8],printenv:3,callabl:[3,8],talk:[0,7,4,5,8,9],shield:5,ydwoh:8,ttl:2,gitignor:4,still:[0,2,4,8],dynam:[0,2,3,5,8],config_uri:[4,6,8],group:[7,3,4],"4z6rvnhte21mpljw5veive0eg57gn":6,concis:5,authorization_polici:6,sec10:0,platform:6,window:[0,2,3,4,6],curli:8,mail:0,main:[0,2,4,6,8],non:0,noj:2,profession:2,killer:5,initi:[0,3,4,6,9],interview:0,safari:0,half:7,now:[0,7,2,3,4,6,8,9],discuss:[7,3,4,5,8,9],introduct:[],term:[1,3,4],name:[0,7,2,3,4,6,8,9],config:[4,6,8],interpr:4,server_softwar:3,separ:[],magazin:[9,8],path_transl:3,januari:1,compil:[6,9],domain:[7,9,4,6,8],"0x105849b90":8,replac:[6,8],individu:[7,2,4,8],continu:[0,7,3,4,5,6],wsgi_1:3,protocol_vers:3,operand:3,happen:[0,7,3,4,8],accomplish:[0,9],space:0,profil:7,formula:2,sensor:2,factori:[3,6],she:6,tmpl:8,myproject:6,earlier:[0,4,6],pseudocod:0,state:[],ch05s03:0,envelop:2,argv:[4,6],orm:[],argn:6,org:[0,7,2,3],"byte":[7,2],search_param:2,care:[0,7,3,9],sign_in:6,wai:[0,1,2,3,4,5,6,8,9],question:[],default_permiss:6,syndic:2,refus:7,thing:[0,2,4,6,8,9],place:[7,2,3,4,5,6,8],router:3,principl:1,think:[7,3,4,5,6,8,9],frequent:4,lambda:8,origin:[2,3,4,5,9],info:[7,3,4,6],directli:[7,2,4,8],onc:[0,7,2,3,4,5,6,8],arrai:2,yourself:[0,1],walkthrough:2,submit:[],open:[],size:[],urin:0,given:[0,1,2,4,5,7,8,9],sheet:8,bookdb:3,convent:0,bookmark:9,imap4_ssl_port:0,eachoth:4,paramt:2,lognam:3,conveni:[2,4],friend:6,prettier:8,especi:[2,3],memo:3,copi:[0,2,3,6,8],huh:0,artifact:4,github:[0,7,2,3,4,6,8],mostli:[0,7,9],date:[],attempt:7,than:[0,7,3,4,6,8,9],png:0,serv:[],were:[7,2,4],posit:7,seri:4,pre:2,internet_protocol_suit:7,sai:[0,3,4,6],angel:3,pro:7,ani:[0,1,2,3,4,6,7,8,9],doctyp:[0,2,8],rent:2,notimplementederror:0,saw:4,shtml:0,engin:[],ipproto_:7,note:[0,7,2,3,4,6,8],wretch:3,take:[0,7,2,3,4,5,6,8,9],green:0,bcrypt:6,noth:[2,3,4,6,8],channel:[0,2,4],begin:[0,7,3,4,5,6,8],sure:[7,2,4,6,8],pain:[4,6],trace:4,normal:[2,4],buffer:[0,7],price:[],pair:[4,5,8],homepag:[2,9],run_cgi:3,sesstion:[],utmccn:0,later:0,drive:9,"8mb":4,quantiti:2,create_al:4,link:[],shortnam:6,preambl:3,gracefulli:0,shot:2,show:[],subprocess:3,checkbox:8,permiss:[3,6],ground:1,xml:[],onli:[0,2,4,6,8],explicitli:[3,4],"true":[0,7,2,4,6,8],transact:[7,4,6],activ:[],enough:[0,4,6],dict:[7,2,4],analyt:6,startswith:7,nearli:4,variou:[4,5,8],get:[],mung:0,clang:4,repo:2,ssl:0,tailor:0,ssh:7,reveal:3,entryfactori:6,yield:2,authenticated_userid:6,draft:0,where:[7,2,3,4,6,8],summari:2,wiki:[0,7,2],n10:8,lng:2,web_application_hybrid:2,detect:6,review:[0,7,3,4,6,8],enumer:6,label:[6,8],getattr:7,between:[0,1,2,3,4,5,7],"import":[0,7,2,3,4,6,8],across:[1,2,5,7],parent:[3,4],elladan:7,tut:0,cycl:[4,8],portion:[3,8],come:[0,2,3,4,6,8],fit:[2,5],tutori:[9,5,8],wherin:4,improv:[0,3,4,6],among:[7,4,5,8],intitalizedb:4,color:6,unittest:5,inspir:2,dispatch:[],"__class__":2,exploit:3,imad1:0,artu:0,coupl:[7,2,3,4],rebuild:0,hardli:2,mark:6,evangelista:[4,8],workshop:1,valueerror:[2,3],extract_list:2,avian:7,zope:4,emphas:1,doesn:[0,7,2,3,4,6,8],docxmlrpcserv:5,lectur:[1,5],howdi:8,those:[0,2,3,4],"case":[0,9,3,4,8],interoper:2,cast:[2,4],outcom:[0,4],scum:3,python_web:[4,8],ehlo:0,zipcod:2,advantag:[4,6],stdout:[7,3,4],canon:[7,3],worri:[7,6],blah:0,reqeuest:3,smalltalk:4,develop:[0,1,2,3,4,5,6,8,9],author:[3,5,6],cc0:[4,8],same:[0,7,2,3,4,5,6,8,9],epoch:2,html:[],pai:[2,6],document:[],week:[0,1,2,3,4,5,6,7,8,9],finish:[],assist:[3,4],someon:6,driven:[0,8],capabl:3,http_host:3,add_rount:6,mani:[0,7,2,3,4,6,8,9],extern:9,appropri:[7,3,5,6,8],"__acl__":6,markup:6,without:[7,2,3,4,8],promis:7,model:[],nosql:4,excel:[9,8],resp:[0,2],rest:[],interrupt:0,kill:[0,4],aspect:[4,5,6,8],polish:[],flavor:2,nam:7,heffalump:7,versu:1,hint:0,except:[0,7,3,4],littl:[3,6,8],apache2:9,blog:[0,5],ws_score:2,pile:2,blob:6,exercis:[],vulner:0,real:[],tranmiss:7,around:[7,2,3,6,8,9],read:[],psd:2,makin:8,traffic:0,mon:[0,2],redqueen:0,socket_tool:7,intel:0,whitespac:[0,2],integ:[7,4,6],server:[],benefit:[0,7,5],either:[0,8],cascad:8,output:[],manag:[7,4,5,6],fulfil:6,ipproto_ip:7,definit:8,"2xx":0,exit:4,posgresql:6,notabl:0,af_inet6:7,power:[7,4,5,6,8,9],tdd:0,broken:0,"__name__":[2,3,6],src:8,deflat:0,central:4,acl:6,microframework:4,srv:3,"19t01":6,act:[2,3],mytempl:[4,8],effici:1,consid:[0,9,4,8],status_cod:2,console_script:4,isoformat:2,inbox:0,strip:[2,8],your:[],igmp:7,loc:2,buffer_s:7,httpnotfound:[6,8],her:6,set_authorization_polici:6,aren:[4,6],lon:2,start:[],interfac:[0,7,3,4,5,6,9],low:1,lot:[0,9,4,8],resum:2,"0x10b075ed0":4,machin:[1,2,3,4,5,6,7,8,9],hei:7,svn:8,handle_request:3,tupl:7,categor:0,congratul:6,card:7,notat:[2,8],dirti:[2,4],possibl:[7,2,3,9,8],"default":[7,3,4,6,8],start_respons:3,clone:[7,4,8],gone:4,uid:0,creat:[],certain:[0,7,2,4],deep:[6,9],strongli:6,file:[0,1,2,3,4,5,6,7,8],fill:[3,6,8],again:[0,7,2,3,4,6,8],models_valu:4,googl:[],compel:4,field:[2,3,4,6,8],valid:[0,2,6,8],compet:2,copiou:9,pathnam:[0,7],you:[0,1,2,3,4,5,6,7,8,9],intention:0,juic:8,sequenc:0,symbol:[7,8],briefli:8,transceiv:7,pool:9,reduc:4,"1b6":0,wife:9,directori:[0,2,3,4,5,6,8],descript:[],potenti:[5,6],escap:6,unset:3,represent:[7,2,4],all:[],forget:6,breadth:9,forbidden:6,scalar:4,abil:[0,4],cameron:2,follow:[0,7,3,4,5,6,8,9],disk:0,content:[],script_nam:3,af_inet:7,articl:[4,6,8],tail:6,norm:0,hill:2,sound:2,liter:4,chameleon:8,far:[7,4,9],faq:0,mcdonough:9,util:[0,7,4,9],verb:0,fan:2,fam:7,veri:[0,7,3,4,5,6,8,9],ticket:6,simple_app:3,webmast:0,list:[],last_nam:8,adjust:4,stderr:[0,3],small:[2,3],correct:[0,7,8],neighborhood:2,your_script:2,sync:5,past:[4,6],design:[1,2,3,4,5,6,7,8,9],pass:[0,7,2,3,4,5,6,8,9],further:[],integr:1,by_nam:6,sud:[2,9],sum:8,abl:[0,2,3,4,5,6,8],brief:[5,9],delet:[0,1,2,6],version:[0,1,2,3,4,5,6],tickl:2,primary_kei:[4,6],intersect:8,deepli:1,"public":[2,6,8],contrast:1,craigslist_result:2,hasn:2,full:[1,2,3,4,5],hash:[3,6],berkelei:9,inher:[2,5],goodby:0,strong:[6,8],modifi:0,rfc3875:3,valu:[0,7,2,3,4,6,8],ahead:[7,2,3,6,8],popen:3,prior:6,pick:[6,8],action:[7,2,4,5,6,8],add_static_view:[4,8],via:[2,3,4,6,8],transit:2,filenam:0,href:[2,3,6,8],famili:[],establish:[7,2],select:[0,1,4],hexadecim:2,distinct:0,ctrl:0,regist:[7,6],two:[0,7,2,3,4,5,6,8,9],taken:[2,6],more:[],flaw:8,mozilla:[0,9,8],flag:[0,7,6],addcom:2,jsonp:8,known:[7,2,6],cach:[0,4],none:[0,7,2,3,4,6,8],endpoint:[0,7,2],s3cr3t:6,hour:[0,7,5,8],hous:2,outlin:[],dev:[2,3,6],venusian:4,remain:[6,9],paragraph:2,learn:[],abandon:2,rst2html:4,def:[0,7,2,3,4,6,8],ndate:7,prompt:[7,3,4,5],scan:[4,8],challeng:[0,2,6],registr:6,share:[0,7,3,4,6,8],accept:[],explor:[1,2,4,5,7],phrase:[4,8],login_form:6,cours:[],goal:[2,4],first_nam:8,secur:[],rather:0,anoth:[],comfort:[1,8],divis:3,"__init__":[4,6,8],csv:[4,8],loginform:6,css:[],isn:[0,2,3,8],"545kb":4,resourc:[],referenc:8,okai:[0,2,4],associ:5,"short":[3,9],footer:8,proto:7,django:[],caus:4,egg:4,constitu:8,help:[0,1,2,4,5,7,8,9],"912ft":2,mainthread:[4,6],hypertext:9,stackoverflow:0,soon:[7,8],listval:3,held:2,through:[0,1,2,4,5,6,8,9],pane:0,paramet:2,style:[0,4,6,8],psycopg2:[4,6],relev:[2,4],pserv:[6,8],might:[0,7,2,3,4,8,9],alter:3,pce:[1,8],tri:8,good:[0,1,2,3,4,5,6,9],"return":[0,7,2,3,4,6,8],pollut:4,cew:4,framework:[1,4,5,6,8,9],maildrop:0,gethostbynam:7,msg_part:7,httplib:5,eventu:4,troubleshoot:6,authent:[],easili:[2,9,4,8],achiev:2,http_server:0,compris:4,found:[0,3,4,8],unicod:[2,4,6,8],button:8,hard:[4,5,6],idea:[0,7,2,4,5],procedur:2,realli:[0,7,2,6,8,9],connect:[],beyond:[],orient:[],some_valu:3,ftp:7,publish:[3,4,9],research:4,bubbl:8,etag:0,health:2,authnpolici:6,print:[0,7,2,3,4,6,8],uwpc:[4,8],some_appl:3,"__utmz":0,postgr:6,proxi:[],uncommit:4,advanc:0,new_model:4,guess:0,cooki:[0,6],reason:[0,2,3,8],base:[0,1,2,4,5,6],ask:[0,7,4],"__utma":0,earliest:2,recv:[0,7],bash:[3,6],applict:3,by_id:[4,6,8],perhap:[0,8],perman:[0,4,6],find_al:2,assign:[0,1,2,4,5,6,7,8],request_protocol:3,"85a3":7,feed:2,oserror:3,set_authentication_polici:6,obviou:[0,2],prevent:[3,6],feel:8,number:[0,7,2,4,5,6,8,9],placehold:[0,8],done:[0,7,2,3,4,6,8],least:[2,3,4,8],blank:[0,3],miss:[2,3,4],fanci:2,differ:[0,7,2,3,4,5,6,8],script:[],interact:[],pbkdf2passwordmanag:6,construct:[],getservbyport:7,order_bi:4,statement:4,zeromq:9,store:[4,6],luckili:[0,2,4,6,8],parc:4,option:[0,7,2,3,4,6,9],relationship:[7,5],behind:[4,9],echo_socket:7,part:[],pars:[],logged_in:6,off:[0,9,4,6,8],fred:4,kind:[0,7,3,6,8],grew:0,roi:2,remot:[7,2,4,6,9],remov:[7,4,6],str:[3,4],relative_to:6,consumpt:[5,9],aclauthorizationpolici:6,payload:0,"_socketobject":7,expir:6,properli:[0,2,5,8],"null":2,imagin:[6,8],built:[0,2,3,4,5,6,8,9],lib:[0,3,4],remote_addr:3,self:[3,6],click:[3,8],also:[0,1,2,3,4,5,6,7,8,9],build:[],cgi_1:3,textareafield:8,brace:8,pubdat:2,http_user_ag:3,distribut:4,lighttpd:3,kai:4,previou:[0,2,5],reach:7,chart:[4,8],most:[0,7,2,3,4,5,6,8],plai:[],wahoo:0,plan:6,addr:[0,7,2],clear:[0,7,5],cover:[0,1,4,6,9],clean:[],usual:[7,4],wsgi:[],hyper:0,latlng_tmpl:2,v12:0,getcom:2,session:[],particularli:[6,8],fine:[0,8],find:[],access:[0,1,2,3,5,6,9],giant:3,execut:[],pretti:[0,2,4],solut:[],"172kb":4,templat:[],factor:4,smtplib:5,darwin:4,hit:2,unus:4,"__file__":3,express:[1,3,8],resent:7,famous:3,googleapi:2,"3xx":0,restart:[0,3,6,8],rfc:[0,3,9],common:[0,7,2,3,4,5,6,8],nowher:4,wrote:6,certif:[1,8],set:[],dump:2,sep:2,overwhelm:4,"0x1103e3f50":4,af_ipx:7,see:[0,7,2,3,4,5,6,8],bare:8,sea:5,arg:[3,4],close:[0,7,8],someth:[0,2,3,4,6,8],particip:1,topmost:7,won:0,subscript:8,pastedeploi:4,altern:[],javascript:[2,8],isol:4,mailbox:0,"31m":6,cgi_sum:3,both:[0,7,2,3,4,5,6,8,9],blabber:4,last:[0,7,3,4,6,8],delimit:0,lignt:5,context:[3,6,8],collect:[4,8],load:[0,2,3,5,6,8],markdown:[5,6],simpli:[0,2,3,4,5,6,8],point:[],instanti:[2,4],header:[],route_url:[6,8],param:[2,6],suppli:[2,3,6],batteri:2,comput:[],throughout:1,xkcd:0,backend:3,damp:3,empti:[0,7,3,4,6,8],pgbackup:6,bs4:2,secret:[3,6],damn:2,rstpep2html:4,"55c0287d4ef21f15b97eb1f107451b88b479bff":6,fire:[0,2,3,4,6,8],imag:[0,2,8],cryptacular:6,append:[0,3,4,6],coordin:4,understand:[0,1,5,6,9],func:3,educ:3,remote_us:3,look:[],solid:[1,6,9],add_walkscor:2,histor:[1,9],"while":[0,7,2,3,4,5],"54f7e4d":6,homework:[],abov:[0,7,2,3,4,5,6],error:[],fun:8,everyon:6,loop:0,readi:[0,7,2,4,6,8],unintuit:2,readm:[3,4],itself:[2,3,4],spong:3,limit:[7,2],"3f80f":0,decor:8,grant:[3,6],remote_id:3,wherein:[2,3,8],decod:2,octal:2,conflict:[2,4],b59b7c3:6,communc:7,moment:[7,2,4,6,8],temporari:8,"__or__":7,robust:6,stack:[],recent:[0,4],lower:[7,2,9,8],task:[],find_packag:4,entri:[],spent:7,doodi:8,pickl:4,person:[7,6,8],expens:[7,3,6],elev:0,connnect:7,cedar:6,macintosh:0,spend:[7,8],explan:0,make_wsgi_app:4,"__path__":4,shape:1,mysql:4,session05:0,session04:7,session01:7,session03:2,session02:[0,8],a0006:0,restructuredtext:4,global_config:[4,6,8],populate_obj:[6,8],armin:9,appli:[5,6,8],input:[],cgi_2:3,bin:[2,3,4,6,8],bim:2,march:1,format:[],response_ok:0,folk:3,server_socket:7,bit:[],formal:[0,3,4],httpexcept:8,leisur:9,ipproto_icmp:7,docutil:4,altough:2,manifest:[4,5],http_server_at_hom:0,princip:6,popular:[3,5,6],often:[0,7,4,9],some:[],back:[0,7,2,3,4,5,6,8,9],understood:7,uidnext:0,sampl:[6,8],ljenv:[4,6,8],formatted_address:2,virtualenv:[],scale:6,cgihttpserv:[3,9],sock_dgram:7,pep:3,id3:3,per:[0,7,2,6],larg:[2,3],slash:3,cgi:[],intial:0,run:[],authtktauthenticationpolici:6,simple_serv:3,viabl:4,step:[],crlf:0,subtract:3,"resum\u00e9":2,constraint:9,materi:[10,5,9],prove:6,"0x100563c90":7,exc_info:3,block:[0,7,2,6,8],path_info:3,supplementari:[],miracl:0,within:3,ensur:[0,7,4,6],chang:[0,2,3,4,5,6,8,9],lesson:9,html5shiv:8,inclus:2,span:[2,6],errno:3,sock:[0,7],stylesheet:8,fast:4,custom:[],heroku:[],includ:[0,1,2,3,4,6,7,8],suit:[5,9],term_program:3,larri:4,repeatedli:[7,4],great:[0,2,3,4,5,8,9],pwd:4,game:8,atol:6,atom:2,line:[0,1,3,4,6,8],translationstr:4,row1:2,utf:[0,2,8],consist:[0,3],latlng:2,highlight:[],similar:[0,2,3,4,5],mymodel:[4,6,8],sesson:0,constant:7,parser:[2,9],chao:[2,6],ws_descript:2,repres:[0,2,4,5,8],gecko:0,response_not_found:0,titl:[0,2,3,4,8],scrape:[],xb2:2,nav:8,librari:[0,1,2,3,4,5,6,7,8,9],nice:[0,2,3,5,6,8],llvm:4,mongodb:4,elsewher:[7,6],meaning:4,csrftoken:0,longitud:2,esr:0,index_pag:[6,8],algorithm:6,mimetyp:0,rst2latex:4,parse_sourc:2,sign_in_out:6,depth:[1,9],came:6,hello:[0,9,3,8],getaddrinfo:7,code:[],queri:[2,3,4,6,8,9],sqlserver:4,ljshell:8,edu:[7,3],a_pag:2,bathtim:8,tomayko:9,friendli:2,send:[],becam:2,aris:4,sent:[0,7,2,3,4,5,6,8],charlesproxi:0,rollback:4,spool:0,add_address:2,runnabl:3,recip:6,magic:8,joel:6,geograph:2,hive:3,"try":[],rfc5321:0,kit:9,entry_point:4,hasnochildren:0,pleas:[2,4,5,9],impli:3,smaller:7,natur:8,uniqu:[2,4,6,8],video:9,download:[4,8],odd:8,html5lib:2,client_address:7,compat:[3,4],index:[0,3,4,6,8],poke:[2,3],compar:[0,6],resembl:8,cell:2,can:[0,7,2,3,4,5,6,8,9],len:[0,7,2,3,4],bodi:[0,2,3,4,6,8],loadapp:6,intercept:6,let:[0,7,2,3,4,6,8],myhost:3,becom:[2,4],someexamplerssdomain:2,convert:[2,4,6,8],convers:9,technolog:[7,6],fetch:[],stringval:3,rdf:2,aliv:[0,7],typic:[3,4],purplemattfish:2,maker:8,chanc:5,response_head:3,firefox:0,ago:[7,6],parse_request:0,win:0,app:[],gatewai:[3,5],apt:2,api:[],duck:2,apa:2,from:[],zip:2,commun:[],upgrad:6,next:[0,7,2,3,4,6,8,9],websit:[2,4,5,6,8],few:[],usr:[3,4],remaind:3,sudo:4,scgi:3,ipoac:7,babi:8,trail:3,train:[4,8],somesecret:6,account:[5,8],retriev:[3,8],scalabl:4,alic:6,annot:[],tag:[0,2,6,8],universal_newlin:3,meet:5,plug:0,thie:9,control:[],sqlite:[4,6],tar:4,process:[],lock:6,preformat:6,high:4,af_:7,tab:0,onlin:[],serial:2,cache_max_ag:[4,8],gcc:4,cewing_socket:7,sit:9,client_socket:7,pyramid_jinja2:8,copyright:4,instead:[0,4,6,8],chri:9,stand:[4,8],delai:4,initialzedb:6,attend:1,other_sess:4,"6mb":4,class_:2,attent:6,tier:6,philosophi:9,physic:[7,8],drop:[7,8],add_al:4,bind:[],correspond:[7,3],element:[],webroot:0,runapp:6,prettifi:2,allow:[0,1,2,3,4,5,6,7,8,9],sendal:[0,7],elif:8,insight:5,bunch:7,uiqj579igrbrebhmjqnth8pffaz2qrj:0,verify_password:6,"0x10046cec0":7,infrastructur:6,bye:0,recept:7,greater:9,handl:[],demoenv:4,spell:8,dai:[0,5,8],auth:6,httplib2:9,close_fd:3,front:5,"8a2e":7,tilkov:9,mashup_:2,all_book:3,somewher:[2,6,8],anyth:[2,4,6],edit:[],entrycreateform:[6,8],nameerror:[0,3],soupenv:2,slide:1,mode:4,autoincr:6,beneath:6,pygment:6,item_templ:3,bump:0,sessionmak:[4,8],meta:[2,3,8],"static":[],brittl:2,our:[],wander:3,special:[2,4,5,6,8],out:[],variabl:[3,6],defend:9,facto:2,categori:4,suitabl:6,rel:8,cwd:3,red:0,clarifi:4,insid:[0,7,2,3,4],frank:8,manipul:[3,4],sock_:7,standalon:2,zodb:4,dictionari:[2,6,8],downei:2,auth_secret:6,first_lin:0,complianc:6,cri:[0,8],"0x1103d9f10":4,could:[0,3,4,6,9],lexer:6,put:[],keep:[0,1,2,3,4,5,7],length:[0,3,4,6,8],enforc:9,outsid:[3,4,6],geometri:2,waitress:6,softwar:[0,7,2,4,6,8],isbn:3,pygments_styl:6,qualiti:5,echo:[0,7,3,5],exact:8,getservbynam:7,match_param:[6,8],owner:[2,8],"long":[0,7,2,3,4,5,6],strict:2,licens:[4,9],creator:9,mkdir:4,system:[1,2,3,4,6,7,8,9],wrapper:[7,2],attach:6,imap4_ssl:0,termin:[0,7,3,4,6],"final":[0,1,3,4,5,7,8],ipv4:[7,9],udp:[7,9],shell:[3,4,6],fnhg5:0,ipv6:[7,9],fnhg2:0,fnhg3:0,"8d3":7,dyno:6,textfield:[6,8],nobodi:3,haven:2,route_nam:[6,8],embodi:[4,6],roberto:8,structur:[1,2,3,5,8,9],charact:[2,4,6,8],sens:8,sensit:[0,6],f12:0,unstag:4,stdin:3,favorit:0,py2:4,py3:4,deprec:4,requri:6,have:[],reserv:[0,7,2],need:[0,1,2,3,4,5,6,7,8,9],turn:[0,4,5,6,8,9],villaini:3,afraid:[0,4],lightweight:[2,9],min:[6,8],rout:[],chief:6,which:[0,7,2,3,4,5,6,8,9],from_encod:2,authentication_polici:6,soap:[],singl:[0,1,2,3,4,5,6,7,8],unless:7,ds_store:4,deploy:[],whl:4,who:[6,8],oracl:4,discov:[0,2,3],deploi:[],pyc:4,segment:8,payment:6,url:[],request:[],face:8,pipe:8,build_db:6,deni:[3,6],determin:[0,7,3,4,5,6,8],fact:[7,3,5,6,8],jkorpela:0,text:[],bring:[0,8],server_nam:3,bedroom:2,rough:4,identityset:4,redirect:[0,2],locat:[],auth_typ:3,"2br":2,should:[0,1,2,3,4,5,6,7,8],jan:[0,7],suppos:9,"3e1cb03b":0,"__tablename__":[4,6],local:[7,2,4,6,8],hope:[2,9],freddi:8,move:[0,7,2,4,5],satisfact:6,familiar:[0,1,3],pypi:4,db8:7,notimpl:2,increas:9,smash:[9,8],experi:5,enabl:[0,1,3,6],organ:9,rage:0,"0x10e7d6b90":8,stuff:[3,8],"0x1005b8b40":7,contain:[0,7,2,3,4,5,6,8],programmableweb:2,paster:[4,8],view:[],dbsession:[4,6,8],knowledg:[1,4,9],packet:[7,9],book_id:3,closer:4,statu:[2,3,4,6],wire:[7,6,8],correctli:[0,8],uidvalid:0,pattern:[9,4,5,8],make_serv:3,creationflag:3,tend:4,written:[9,3,5,8],progress:[1,5],neither:[2,9],flickr:[2,3,6],email:[0,7,3,4],mysite1:0,sole:[0,7,2],kei:[2,3,4,6,8],gethead:3,job:[0,4,6,8],entir:[2,4],jog:1,permanentflag:0,egg_info:4,addit:[1,9,3,8],revers:[],dobb:0,startupinfo:3,trove:5,equal:3,wsgiref:[],configpars:4,etc:[0,7,4,8],instanc:[2,4,6],equat:7,wear:0,comment:[0,7,2,8],typifi:4,lang:8,this_id:8,rfc2616:0,chmod:[3,6],walk:[],tuesdai:1,admin:[5,6],orig:2,quit:[0,7,3,4,5,6,8,9],addition:4,insuffici:0,json:[],treat:[2,3],rpclib:9,immedi:7,treasur:5,presenc:3,sock_stream:7,tranform:2,bulk:4,untrack:4,saner:2,hiddenfield:6,behalf:8,togeth:[],minim:[0,9],present:[],preexec_fn:3,ingredi:4,multi:[0,3],"14t17":2,plain:[0,3,4,5,6,8],harder:2,contextu:2,defin:[7,2,3,4,8,9],wild:[2,5],dbapi2:4,endblock:[6,8],layer:[0,7,4,9],omgwtf:2,ripe:5,demo:8,site:[2,4,5,6,8],server_protocol:3,incom:[],whirl:[7,2,6],pyramid_chameleon:[4,8],welcom:4,parti:0,matthew:2,failur:[0,7,2,3],ansibl:5,difficult:3,http:[],hostnam:7,denot:3,absorb:4,upon:3,"5xx":0,student:[1,5],php:[2,3],api_url:2,fenced_cod:6,center:[0,2],well:[0,1,2,3,4,6,7,9],exampl:[],command:[0,1,3,4,6,8],filesystem:[0,5,8],undefin:8,latest:[2,9],deletecom:2,distanc:7,less:[0,7,3],kramer:6,tcp:[],paul:2,emtpi:4,web:[],wed:0,nullabl:[6,8],smith:0,add:[],book:[],polici:[5,6],logger:4,match:[0,7,2,3,6,8,9],gmt:0,candid:2,branch:4,xmlrpc:[5,9],agnost:[7,8],crud:0,piec:[3,8],arguabl:5,five:0,know:[1,2,3,4,6,7,8,9],unseen:0,password:[0,6,8],recurs:2,lastbuildd:2,python2:[3,4],insert:6,like:[],success:[],echo_serv:7,lose:4,architectur:2,page:[0,1,2,3,4,5,6,8,9],backlog:7,didn:[4,9],specifi:[2,3,8],captur:[4,8],linux:[0,6],utmcmd:0,"export":3,mistak:4,proper:[0,7,2,3,8],home:[0,3,4,6,8],transport:[],tmp:7,guid:[2,9],gethostbyname_ex:7,programdata:3,lead:[3,5,8],broad:1,octet:0,leav:[4,8],settl:3,server_port:3,u00e9:2,investig:[0,5,8],journal:[3,4,5,6,8],usag:[1,2,4],facilit:9,host:[0,7,3,4,6],although:[0,4,8],wtttzy:6,about:[],actual:[0,7,2,3,4,6,8],socket:[],world:[9,3,4,5,8],column:[4,6],herokuapp:6,datagram:[7,9],carrier:7,constructor:7,fals:[7,2,3,6],remote_host:3,own:[7,2,3,4,5,6,8],washington:7,easy_instal:[2,4],automat:[7,2,4,8],guard:3,hoohoo:3,hellmann:5,leverag:6,w3c:2,mod_python:3,val:[2,4,8],allusersprofil:3,transfer:[0,2,6,9],rcp:2,spread:2,appl:4,wouldn:2,arg1:6,"var":[0,6],"function":[0,7,2,3,4,5,6,8],respositori:0,getlist:3,versioner_python_prefer_32_bit:3,xerox:4,bui:2,gain:[1,4,5,6],bookshelf:3,inlin:[7,4],count:4,gateway_interfac:3,made:[0,7,2,3,4,6,8,9],view_config:[6,8],whether:[0,2],wish:[3,4,6,9],googlecod:8,displai:[3,6,8],troubl:9,below:[7,3,6],pcreat:[4,8],problem:[],"int":[3,4,6],dure:5,pid:[2,6,8],ephemer:[7,4],implement:[],ini:[4,6,8],pip:[2,4],duru:4,probabl:[3,6,8],sharabl:3,crummi:2,detail:[],virtual:[0,3,4],new_valu:3,other:[0,1,2,3,4,5,6,7,8,9],lookup:[7,2,8],ws_link:2,rememb:[0,7,2,3,4,6,8],stat:0,repeat:3,allowedvers:0,dewei:0,echo_cli:7,log:[0,4,6,8],fiddler2:0,"_queri":6,syllabu:4,reliabl:7,xmlrpclib:5,rule:[0,7,4],bcryptpasswordmanag:6,models_nam:4,cgi_bin:3,htmlparser:[2,5]},objtypes:{"0":"py:class"},objnames:{"0":["py","class","Python class"]},filenames:["presentations/session05","index","presentations/session07","presentations/session06","presentations/session01","outline","presentations/session03","presentations/session04","presentations/session02","readings","presentations/index"],titles:["Session 05","Internet Programming with Python","Session 07","Session 06","Session 01","Course Outline","Session 03","Session 04","Session 02","Supplementary Course Readings","Course Presentations"],objects:{"":{small:[2,0,1,""],center:[2,0,1,""],tiny:[2,0,1,""]}},titleterms:{wsgi:[3,5,9],code:2,protocol:[0,7,5,9],entri:6,execut:3,show:3,text:2,all:[7,2],tcp:[7,5,9],syntax:6,time:[0,7,2],session:[0,7,2,3,4,5,6,8,9],polish:6,find:2,languag:0,row:2,xml:2,web:[2,3,4,5,9],terminolog:4,locat:2,iii:3,configur:6,activ:4,html:2,send:7,environment:[],add:[2,8],program:1,exercis:3,persist:[5,9],enchilada:[],input:8,work:[2,3,4],homework:[0,7,2,3,4,8],real:0,deactiv:4,sourc:2,get:[7,2,3,8],preserv:2,big:2,stop:[],"break":[0,7,2],test:[0,7,2,3],hateoa:2,roa:2,rest:2,recap:[],bit:[],implement:[0,6],requir:1,introduct:4,like:0,addenda:2,edit:8,revers:2,list:3,resolv:0,authent:[5,9],server:[7,3],"try":2,did:[],mod_wsgi:[],output:2,out:2,side:7,view:[9,5,8],respond:7,cgi:[3,5,9],set:6,map:0,pop3:0,some:[],supplementari:9,revel:[],"static":8,expect:1,respons:[0,2,8],content:0,our:[2,4,8],beyond:2,extract:2,orient:[],transport:7,concern:4,virtualenv:4,separ:4,what:[0,1,2,3],afterword:2,hide:6,navig:2,databas:4,extra:2,beautifulsoup:2,navigablestr:2,state:2,score:2,irl:2,internet:[1,2,7],django:[5,9],awai:3,previous:3,approach:2,method:0,refer:[1,5],altern:[],run:[7,3,6],proxi:[],extend:5,preprar:5,json:2,speak:0,step:[0,2,3],orm:4,logout:6,prerequisit:1,element:2,put:[7,2],path:[],wsdl:2,geocod:2,wait:[],comparison:2,about:[2,4],socket:[7,5,9],commun:7,http:[0,2,8],success:[],wsgiref:[],filter:2,credit:2,mvc:[9,4,5,8],mime:0,login:6,whole:[],book:3,first:[0,3,4,6,8],repair:[],client:7,dilemma:2,render:[9,5,8],point:[],overview:1,app:[3,6],address:[7,2],dispatch:[],walk:2,price:2,header:0,rpc:2,api:[2,5,9],messag:7,famili:7,wrap:[2,3,6],instal:[2,4],custom:7,open:2,your:[0,7,2,3,6,8],middlewar:[],size:2,authz:6,from:3,why:[2,4],script:[],make:[2,8],interact:[4,8],question:2,heroku:6,submit:[0,7,2],tame:2,compon:4,start:4,live:3,call:2,asset:8,basic:[0,5,8],jinja2:8,templat:8,type:[0,7,2],authn:6,form:[5,9],search:[1,2],apach:[],part:8,link:[7,2],togeth:[7,2],examin:2,flowchart:[],repetit:[],virtuelenv:4,imap:0,present:[10,8],rss:2,serv:0,pull:2,word:4,look:0,provid:6,prepar:[5,6,8],outlin:5,project:4,url:2,three:4,learn:0,highlight:6,problem:3,listen:7,servic:2,fetch:2,connect:7,control:8,earli:2,pyramid:[9,4,5,8],comput:[0,7],creat:[7,4],applic:[7,2,3,4,5,6,9],process:3,flow:7,smtp:0,few:0,accept:7,wtform:8,packag:4,inform:7,sqla:4,have:0,further:[0,7],request:[2,8],incom:7,doe:0,result:2,trick:2,ponder:[],cours:[10,5,9],engin:2,googl:2,secur:6,receiv:7,anoth:2,rout:8,format:6,tip:[],detail:3,scrape:2,revisit:2,write:3,python:[0,1,2,4,7],ideal:2,complex:[],build:3,answer:2,document:2,simpl:2,needl:2,css:2,updat:[],simplifi:[],finish:7,resourc:0,clean:[7,4],deploy:[9,5,6,8],mess:2,anonym:6,resolve_path:3,choos:2,sqlalchemi:4,solut:[2,3],cgitb:[],"class":[1,2,3],plai:2,fffffffffuuuuuuuuuuuuu:2,user:[3,8],deploi:[5,6],date:2,construct:7,law:2,data:[2,3,5,9,8],stack:7,soap:2,stateless:2,handl:0,task:7,read:9,bind:7,descript:2,uri:0,mash:2,onlin:3,more:2,exampl:0,environ:3,error:0,thi:1,repli:7,pars:2,model:[4,8],sesstion:[5,9],mashup:[2,5,9]}}) \ No newline at end of file From d3032a5ec03c950d4296258b0e3f53db804c58bd Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 15 Feb 2015 01:44:21 -0800 Subject: [PATCH 086/114] changes adding session 7 and prep for session 8 --- html/_images/admin_index.png | Bin 0 -> 27949 bytes html/_images/django-admin-login.png | Bin 0 -> 7749 bytes html/_images/django-start.png | Bin 0 -> 31371 bytes html/_images/geojson-io.png | Bin 0 -> 1302253 bytes html/_sources/outline.txt | 10 +- html/_sources/presentations/django_intro.txt | 1013 ++++++++++ html/_sources/presentations/index.txt | 1 + html/_sources/presentations/session07.txt | 1832 +++++++++++------- html/_static/geojson-io.png | Bin 0 -> 1302253 bytes html/genindex.html | 19 +- html/index.html | 1 + html/objects.inv | Bin 281 -> 278 bytes html/outline.html | 9 +- html/presentations/django_intro.html | 978 ++++++++++ html/presentations/index.html | 7 + html/presentations/session06.html | 10 +- html/presentations/session07.html | 1512 ++++++++------- html/searchindex.js | 2 +- 18 files changed, 3917 insertions(+), 1477 deletions(-) create mode 100644 html/_images/admin_index.png create mode 100644 html/_images/django-admin-login.png create mode 100644 html/_images/django-start.png create mode 100644 html/_images/geojson-io.png create mode 100644 html/_sources/presentations/django_intro.txt create mode 100644 html/_static/geojson-io.png create mode 100644 html/presentations/django_intro.html diff --git a/html/_images/admin_index.png b/html/_images/admin_index.png new file mode 100644 index 0000000000000000000000000000000000000000..ae7a19f986880cac0b47c2ea4cb48a722851c260 GIT binary patch literal 27949 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 literal 0 HcmV?d00001 diff --git a/html/_images/django-admin-login.png b/html/_images/django-admin-login.png new file mode 100644 index 0000000000000000000000000000000000000000..4ceb5f54b92922f5f82b8896c8dccfbcd1ad6bdf GIT binary patch literal 7749 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 literal 0 HcmV?d00001 diff --git a/html/_images/geojson-io.png b/html/_images/geojson-io.png new file mode 100644 index 0000000000000000000000000000000000000000..cc437c5865b6c32b19160fac0405d66aeec73903 GIT binary patch literal 1302253 zcmd?QcTkhv*Dj2rqEvlAK&py>NC~JQHBk`|5d+d&=+b)&B}70#YD5H-76IwKD^)-U zMTkfT0U`7r0;EDte17en_dWB?_s2K$&6&eYW^Q)YUVE);uY2#cueB4S^Gt(|fOB>CkiIv}>M`Xx9<(8K=UN zuHRF=agL5rZA?x%RD^5!^gF%U?kl&cXZjCP#BN8)+~&-=kXv>g^R3eLsBlHRx$k|N z$WjiE$#0I&}Igss&h+Q^8% z>(X9$4Sk9}sAEo)=6YG_k*an|*u?FFW72jx-}bi2_=+R3eQI7HRPR`&H;8P271=^( zKZwsZnRneP1GI9|9o;a^;IC~(_}V=(GTfuTJxT%pVPJ=Bs8qlO3KP=2e8*mGxuCE>>(Te`%&ci>yJP%C zD(0(#(_mkhL?-ep7dCRuKzHrkg;z0-&5_Ds#&4wT7+=B17U0}+q6}9;vs^eF{VeHV zkqSDWH5qz6ROnQN=x?}#f={SEn&sN_wtS>{oGZ$S1%u5q)(-ndVJdH{+XHw zz)4yN%1oZ}k8t*+8x0HkapqaLoaZ_7Ge%!oJeinZYTRdx>d=xtH5cY|K78-u<=h7) zZ#X}(eRw#2k=OKmpy~r1c@Fw+)tEOI-`*$w5Gmrm6;YC-s-tosSVH zyXTHi!CqZ@e|p54Ws`OFDqZS3S);N7E>h_viX zK7YUWJpHh`@p)eCqla&dZ=AYx%_Zsjr_;r1>2Fv+@qS5ooaD7ce=a)5`aL&i&lOCx zN&JG1q4l`U6X~({w(kv}a;?a{xOgXw7@lu4R$X8$S_bmJAa^MvLGqiS6~fA_Dy^D+ z(t1mYj}`Ux$|9d<=x1*8+wQUzXByci;+tP?cCjpoV4*Fy<~Vl4**bjoY(lQJF~a%a z0`myLo_5hU7fjE%gtJ{sy?Vp-hW`>Fn~t#oitn;rmsA?G|44pGc8yc z{B9yGAk9(=DQbBQ{^X>9^7*uG$Ndhyu)He69QB2|PL)Vawe;K+o7Xn!HZe94i?ZFi z!YyyZ-ZuUPF228B^;0$K|>r|qYu`8Do+B9A1mcOM9@wH{os7q&NB zzPZe|%(GnE|NLC1v=!mb^DFuB$??tc2;AM3FK7&UMy}EcLTwRCA>MMo6_Rp2xr7lsTH>#Rqf=tjO%Oe%54aao+RoR$*X z5_*!G5`rdTCTES^>NcuKUDMyvT`X*2s3>QQZS7FO>`HxkvE;me`!-A|-J)uiv-w#w z`iS-DI$4A)!=Mrkjc#SdPx|`bY<>kByR^Bs@OcOuk6{oE7Ofu9ES%3W84?>}8Omc~ z=Gx;LmE`sw_FDMN=ba>FClzlA^~@PHm`TByZj!!hPb94Re{=gbJE<~t{FyAyrp1<| z5r=wLn7qn^W`eveSG@ZpEQe`*jpt{ zkilo<&y-zQWBhbR{fr?4km>e?zs~xd>FPMu(Ht%a_-T2=e3bL_LyD?@r1Aw>W{b-t zA8sj$yJaFr)Zz?K@6+g38`IEM3sy^0(@Haz zFsWTqk2j6KTA;!y$a^{XhQD_){^zV#G-hj&5wjz8$2_%mYudYhxp)9w@y4>l#Osy- zuOR>YMQRLtXYumWiUZ3p0n2A5lAEK+Z&!Q7R}-)n1ba%-nY33muZAC`eY1$M)vVCG ztcf`deo+70uf}peY^nI&n|FC)cZ!FL2c2Hk5$Z-B3R}lkiCf%J5p4x@-OZC$ZR&R# z+c99zy+54v^rnx=i{|%wdqqa_IPSC5OydUAtW`yKc|Es4aJ%NxKdiKC~HFj9ml^|9ZPQZvrzS z&VE07wcVP3lur)$?SDSt*X()|&iI3k31sR=#czx9XUccZD@0d5I@wEY;Hgw}}E$VYV|{Kk|#b0_Z$;f(w>1?(b-D>Ct?Qn($Eld|#J01r zRgwi6Fn81hTTY~A@zTegBkf4F1ydovRMug0$HNT8Y!J}*Ao*j*W7{oEt|%k;R(1)f z{CJEo@uIl(VC&8bEG!u<84@=Q6zc0rX_9s7--1e&n`lx3)AA;Ivy%7&}+m2098m z&LP_#ppw?Nzyxp#G6572a)GiB6>)p9GLL_SBi~ju38m$f7d#)E_|VZYvH$s;qD#-@ zrlUKR@1$?+YpnfL(bmIF%G%Du#$F2Q=1G&Lqf>?|(jMLHeXXxT-CW&$6rn2D|CUgs zJ^yJ2T)+Cah_8#vbz^OvtEwK}_E%-4?n+5t2Qps0dR5um?uFv>N9zCVPWw;gx}&eJ zry>9l5D*|0a7W6++W{b>pr8Pdz74p2TaqRr=@aPgYYmlj_YwMsl7H!WWbb3^?d0j} z(~Db^zXla*y-!^;y)v~`~1@_nuCBp-vDH!qyhidP3x-sr&UqM z(Zkn+=9RaTt){!Ly|`@59}8<0^M@b4)AGTw#-^3c)Ur_+4&Kp%Q)tCgY7V$5$>#UrVrsUm3i zuk&GaVQ(&4UDUo>k`Rpcp$Pl$cb_cAC#|+zLSY}fuC^`-Hy~|A6Or2-X_Hn}YpwS* zubz5%*)L~~ygg5<^ntGqHP@k4@K3I?2Llp(R?K})987$+VLMY=F1vcxIrVjQnZuKl zgnMDF!Yw5?24+0KXK&rQ<;zStVwM+lYGz!*%~$ZX`(=fkz&8t8W?$ln9!81tP0xVT zc0av2_pd}sqd3aLLKI1zZxZvk_dDc-w(m4njC4@$McPOdRaBhVd@ZZ^@laP)wJR=c zynyMP{G~zX&WOIB0R~Zk#S|R83A+yMUrt*bI0WNq56G3|70V%DciLtlwx0-^CETTY z6Y~k)$0I7)-o!%UCt_MH7`sezYVke+-vbV|n}>?EnNxich2|$tK&O-CExnL0p*)qD z)R6=*4v=OU3zz`SV#Lzm>ELv@0-3|I0!iBzsJ@sH%E15c!&Zij-VztbN1x4`x{N{y zQtdCcX+$l@k8~77XdSkJt-3$v(@;<{Q1;4kY8eH|-z3zbC*K657GU=*`{#=nM_PVD zi>VyQBR#VIE;(LP#_&n|<_9eDtUY^;pH?K^TyS@}-Nl(hYT62jfeyO0e~cj56U zaEuJJea>u3L#kb`o1H7YN9#BuA{`upSW5umN=oJo357hDWp7z@Td!Q`Llg-nCD^;&oDi2UDRK76m7 z_^Y@(w}&paG23sPTht<-uv;?Qw-_^_I9U^CZP6Vd3!nsy?bul=7 z-u>YuW-7n++!KDRqEdFnVspCqNwaf64RmoCg9cIkn3rk&Rzb)MCP=Zh8XzFNtXPrn zzJcOv$LzH4_->4jA~aKLTo>1-*qK!(H3$y<`MwQaLa;;;Vm=t;>G6Y&Hr1qv6s{9) z`@xtrqAhx$xl<1(kwJUA;lN^br$HE1f3w>>a|nZcPoyA?!}PMy6#{_oYCvk?E^ham ziAVAhj+#LwPRPxOdJ`$DIJCoUjp)P+^C47y1eeX<=Cy-*o?uTV#UsT;SKkkGW^G_4 zkWPthNRnvUNFc=_f!8G6(g-zTK&iB)e6#zW?e9m4W)o}(-uZ&s*xW1+#_u%EN({Bz z@F_!o0FT$fT!`r3%_WO#!+DZV{SBqxDtIrw-kz=(Z{v7W4n_jy?0Vl2HfEdg7veOE zLFaDWf-CuNRjC9YP3EXZ$DW*H6L3|HW|bvsWi+M@kHY<< z0kTJnY;lO3Ud4D&?Muv6Mo1}L$P!>e+EMccs2)wj8=iQLpLZ|Uc^!Kxa;Kc{ME_7q zUu4FBTAb_~vP{W8THY%x0b}xyD@fpN9CmdTgnE<60@bZQAiREvH)MsE1aaL;-Y%hz zYAUvQpFAgf6ZFOku|GqNjth^71X>8#K1Q8uDKZTTd6W|@9t|>RWlHJuAA@h);I~wO z7sC`N#Tz3~r}oklJ#q+zNJPtgvQ=&2jLn9h5I?8pofVoMFE?|WYYFrfN{Cb2zHue1 zH5fnLa0UTphzMI{oq#z0K(>QqwVto8amvvY@rbPRn9> zixhH8lQY@>H}NG@DWnhxb|?!l%_{CzlB^t25G}kju2eom+ZSL{pEx~42UpvD##FLa zm)7I`YH;(ParWfl?U}8f`PM%5(YkrRA75hq<8P%*%uNVX2R9@(utDyPIV<{OQ=P%9 znVCbz`5Tl}&fOcCtt0!2Sw7y1wyh%@-*fh#4Q%=j^{vMrJ}dPBQi*sFKmBeUrsmG- z(#bK|?U;1v6_L1aG*e?AXA!uZlC-MbnA73#e0y^Ep{{{JN)`=|@lqoI6SyaFvZqI# zNh#TNti<5b9lwpy&kqgy3zs?r#*v0iHU8XU@-j_tEmJ|nockZnuHEkq3sX^e(8mtj zxHTYP61)9W&}>mgPM0u5SU-OGO@QLrt}u6g zBDzLne2Pz*)l65`CayD>(ziDU=3#?(+R1u|!<-Rq?^^L6A{DN{za6wG4LEcsm!r#t zs3u3fiWw0oYw;3wS6wIqbY+gLiCF-@FI#cT2X7Cj)!>1((xMo|`?&xIVi~mN@QdFP zh-RIG&z`)i+SqGJ#$BvvS1^dS30z1XYbie{Rv|q>FQ=qOOqK8eG%_UDCN$a%JzQs?-dv{PvoRExBaIF^2(1;X{8y3I8W~x?)GU zG(z5yKwbtn02>o24pTy#uB-ylKt`jGPGa|v^BEqx;)&XD6bDV+uTi6p{bV*~RMlS#9E8zIWXoA*K&dn?4DTm8ey zgDA2+GsG|!z1og(%gWzKMZ<|0r0o}dmfEGs*BdEF>SbZ-;}>J#8VUtq@PU2#1d6K{ zKg6@K)od~fG<(=6>C7;chli)k ztkE5N=|R@C$&#p^*}DVt>-cM3D z_IAnH8i0~C=UfqpPwp z0VM#>%GrMa$=@0wm|&lqN%x-ucH6Cg4a!0QfJkbmSEVUI(SGdSX+>x2Vcr+U zp#%?y(9}+c>wZrVtz|g*ZXKkB#)NDsdYyFhLLBpto;|t!W#Vj z@@EOvE^dzv2pIt(%_^a*V7K*W$H&`FT=OLB43)OZf?FXy_a=MN1Z$O$rUI))U+n8F z$Q`_{q+SRX*B&^bbu=sJ(P##`1Ns%^|7%<_WRg=EuU=Q*-*?mjI^S66ggL|HuD;@)wYGs;du7Swmde|oOlU;<`ephY7 zCVpB@0pt?vss1>Haa9y}_F3>r2YD;fkBsrszZ06;y4s{5SEjMB`%Yp6Gb#vQ!{I=* z%wiWF83!J^plfu!mV<8r%LYdt?tfHf=gw zH-x~EoKL^$2W%rycBwNsJjf;VE?e74C`5S&26taG|ZN^E#Cg8mpKj2JT^wRqSHlsm#X902S^^ zdPMs>My8&bl*Nu%XFliN8rL5&K|rQBKtcphVDo4X;vPRp(WYPSFordqREPkObhbYB zs;JS9_yYV3$`ECR-(54YU=%_?`Q-U6K5kdVTq`vk5fI}3Jh`kXhdq+^o*vBejy*=* zmfiQ$+8j{078pdy%UkLE1RQ=4+2>4n;y3v~ua&g+XrZqQGaMGN7{T{7&+<$ zK8d7{(AMB6E9%J^|5-C3aD1|Tw2@tG?X{+NG(Q(m;bzt{%_=bIg5r&wbYO$;t~S)6 z%*ljZ*z_E1-80y$1HF|X6bbO3$)mjw zJrYuywJS`I%4&iwe_7peCw+pgj3BE5<~_3y+2&v0x^*xlkE`DSt1MeLq=%y4K>h z!OnkITrk98y(%KL>!lDILPK=Jva<*&E8u}l6toa)|MnF`@E#?P$oEeLx2$S)UsAWt zQQxplo7Q3P8^Pw`8j8WbKSn{Ykl|<>2DKeAMP2Cr+WEi3Kyc15L^1T>H#Y70!dI)2 zOJ~K?(eMQyM7rG=OV-U0AeEom`lI@3Ldfh-lJ~R6*))TSzDU#b=~&nBv_0qd|Dj(A z{G)FV>igTb^g~)wgxyGiw)lzTR3sO~k)&Jo;f@0*cFx0GqO%x$9#UEuq@I**^6BbE zTo6Rj`coGd2WX?zZw%Rp52acV;()NgUBv(?e-N3j+0`mnhfu6nlL?huRjdhT#!bZ3t-&`Vbz706qH$tI! zz$ry?nTW-)qBKI&cBz}aeTv0F+oo&($2LPH5??Tt!NJUaa!~Ke-p|VOB%dK}>)DNT zx3BLt$4hgE8n#tlj8_dpj9cb|GRXqX``@h>h%pgcnJz0+pI*ZKwjo~-+St<56QjQ_ zQVb`vx0SY`2IbnBx8(?oG7aT56E>_J{>GM@cN}A9JqI#9$jGAo7Afn*=djU`tm2$P8lcku9nfVU zvSv%z7Wia6CTU{~4_NpL6=1%-SiH;IAT~D;sj(~OT{IDRlI3|aA21KYnhf_FprLKl z6Y_SV(#~si`nYXGMf*umGi84O!+f31JT47|OdtrT^DbDl2w z6e++N_dHX&vw#KpRy>KeARd{tfya@QjjQ`73u?pSs|Qx}sQ1rX(d=0_+a5VB#;BS5 z)?lk|;BR|Gvj88Nw5X=3wZfrAd->4y5UC9ZS&#YAQ4XKKQj`bgFw1~#GWVKtBts#o zg!S%0u2V>*Dmv2|!1ydA72=(4Qxp?^IX^};wFsZJ5-lh_#|kH0q~-I{AR@)bH}kPV z>Zh>iAd~)5q+iIBoeVrJONne3riEL_DjZq^wzmiHj*EvtqR`SVPBjHpFZE1J2z)FI z7UsWAh=lEi>jI8vLy$WpvnjjFrvfB?1T>hTWK!VC4NnLHqJmO;|q5 zd&OyI9^NvA^Sl{6;g}t-OZ|e>8iP_#cmyNzq+X4Rm3^y=fw@Qu` zx>8BOfv6M&DwQ?MKJ&3@Aok817`5JAW`mt6MC^D*i5f}0D#V3MgU&1W40I<4pWvzAsGgq; zM<44a1g+qZu-1i5dho2xDJ3X-cGKy+6XHCTorYK&U*71mQQH>tmP*NbjTKm+AQ4Zc zklTmUsQ5uaBR=sH=v&CKHw!NU0}W|L!^@M_PK^(w0U94foa?rHKd~av$DO<%E^4%o z3Av!u%w(2taFv<18QkENv3V3C^`pX~IW|sht={od*potr>lfk#rL%9PN_YBq3-&E) zg^oU=ks@=#aKcvz5Srg@Em1s2?p=(;Cs446IXyw~0mIvSYs+l&5CEU?&7gUsr-y2_ zixFpOoswme*yRqCa;@~JHP@n~_XwTOVCX!&cTXhSP3|e&+h@w$u6nJA=2v!{nT`0S!ORrdt6K_tAw!6N*#;n{{ zr8kdTYt8gppl4J+YWc*@c5X(07h{L*Bu9ZLdH7LOe@zOrauBhrae|3~Gj6E!D!$yY1O!@b%O$wpmX5Xr)bK8mY;%`27m$q3}ZYE_6+?bu{{? zrHZ3?!%m~n!qfw$M)#`n=q~sCjRiRu(*UKKrO;sEH6C8XWRDtPnq;L6`}J|{>qME? ze2`g6^)&)7I$I#RD zri3}wXJ^9_r}nbMeD7AMRH|6bljr!4NOPS-pFSq|2wNP!(Hy2~f!p;DsGS(V+1}4` z)beMr@?s;imiZQx`f>C=*>>^UF@*R*nnk9K%nz`(eQ(8lCep{ z+b|6PoNyGh@b%#^8MvDD-;r_Mu$23D@tlC=Wbtm`0c7a&-l?-f!H}OZ3=wW6c&{4h z0<25$WH@-k)_&^AIe}Kn!pvqQJ(JoldDP;rIMCRWuqShcUBOzlU5HWc5Ws75o*n_% z8pSII0UXQ;FT;~m0PEi(I^@R4@+K{NZ3}GFHI>8a8dqU@1mt9I`>-=CG8YfqkV?NS zC?Ow0cpo2=S(P(?>1+lmjYZ~F7>dh(BUqp{?T*y{D<5N>6V#d1r?p25!ASWD4TM0w zN$m@@OdE%8RJ8A6=@q&Qk01PX`e18nqz57B!7JzbI_`D^16$&$$ccz#|J^yaXjcB% z_vz{BYv%-Oz{i{Z4PKZYzkZ}mVZ`3ax8!-!;pV_fG-#?gNsw63CRB7;RH8I7x3m9Q zi*MTk*O!~OJr6n_XZQC;hg2UDI~}Hi;rkDU=8#Y%{mGjMZ5R={XSMfWp6tM!P2x83 zro_E9>W{z%^^Lwp458S;ZEN=Q=Yom7tL?|pVz^D0rOlXZ5>wh(kzcH;6tC}Fd#qJU zwy~H%``b9$0c0B|Uan>;?!2KBX@f}VcqUqODE5(x70SZJt=J@FqCop+nvA*ZPLq2W=s z4^XeB;xj;3+$~%hywc#kQZ6k6*{yi4Bb(Bl%rCo*Q$o#+QcI3mq7+GH_L-lb(VQy8 zx00^Md~5go69@SwW=wAd&G-qXd$7&=wa*@p7%??RJB!S;uvysCi!(MCW8Cb^qy3cS zN}M~ly$lwW)h@sEM=%QkIP?x=R?aqFSc`u=qr~#K?TtyfWB!UI?6kL1|JLg=^H?D7X zjGMA`NZnpwfje!jZGH`-$38XGV7b^5f4Jv-TsPg|HsgxUR^fELZaDM4u3WP@@<8WC z$RqpB46yO_!xUc!idX}WLg1}02TwB_4BTd$#*TJoGd>_WYxYFV_QQidc*dsmuovj# zLSJc;O=>v0pf`;4C=yrvvtx}UTb>@}^T;1;l*+t-E^62_coc&^7Au#6B`Vp$LZaY& zp?iq#bEYNdzJ)Wg0orS{Fbj9$Y~rN0wX*wvhAIklqu*Mu7862FibHv6`C&O{HfHic zK^qTBSs7)i@4uHyqEGLyC4Jjh#NPGZ*H`q$8M}TYQuJbuMkh>poF69$vx5`Hc8l^) zz8374wN-sfkl__CYYHYj<{60TKyHXHqrz4uBj{ddmowUW-$U_GA&s54``;*kg5wZ;WR0`krZQKU7DM~f>b zJn{^p$OlYjKQa!8g4u$j)H>l=iX-%qB1k`e%muzXVFi{h)#UD0ss~l127Y&)b;7o{fOf z=Wr{%KtoI8#oLxk$r~*yG&!#vLLOT;o4z-cm|~I6-eAIE=Idm+ub+A}g1s4<%B%$L zP9ss^`+cHrqeZ%(ICnWlM38ZSHo~j3LOl{y2to3KiRuE`a7Iv{E_d(ALjddo``OB{ zo0{c@#8s|78Tw0=E9Avx@k7x}N-v;ISWj!a?}4JXfxGEsZl8MS-um)n+P+p|jS)S9 zP1pLP38}~xhV$y5`mI&HP<=^FB-YaV!8rlfX}rIHQ1<7&5*I^uR(@>90;m+Z@%3i* zL?E(QdC(-NbusecX6C}Z{QQu7@7)1Z7jn;ej@9Cc-qUG3)JBGF?R7MS0|a3}49(ca zu`;R$Eq2~PS=^2^i7x*uC5nsNp>MKrS2a|Ca1y*i^Q%t+dz*7~UB2?zd=T^d(*q>^giIj)_OCvg;gM{5yi>R z5r6RQ4^g$9nfEL=e`8B#&nasJD6hNnI`F=R@Es|fX-6EO4Dk^affMO)+=6mtGQ z5M<(%sG?QWIIB(B6lmMsuc|v9b1nX$r#+c*op-30$@pCa9P9bi=7+u%gR>4xZzIR9 zUpCh>&EE`J6no-h`!)oCc9QKwW5mLXmYkggbh+nR1O%U6r$K^h;5d}u1u?P7itP4T4884=H2>(C zEWl_WKg;KAdd*QUe7#DS@w{qsl~!5>p-!V1QRhboI=r(3`JuW1)H#zNN+EPtbQv3# z36$v-A9FagPexMP#gNn&8hG~_7Bl~ujy%7G)bcsGo%mX}?=Pz&oAz}1*-j;L`SqjW zar~3}QRQLi>(}z0?s_XP1U%0?D?kcPQs1XVHO);t_7e#;7iQQ zi)yPFrf9YUU<0baHkno8^IglO-`vqlRvoVySC{uft2=NIgrH6S$*aTLXgyVmniVt; zP{Q^3E_gvN-cIb<`=Pr%SCxS^6q$gz%Emrgph0uhO%ClK#r!^xEcF4N1gq>Osf z@KXn#&`43k)b@}QrbAtR$5E+ru6lHdDDFusR_$-ez3S&rc`RYpiX(gC%GGuZ2wFIX zoG6GWR8VAu_))J9*0F_{n`1t%`NoGM##Xg9LhNT(VX+#lhA=?1QR2__<-kfjP?=3# zKY=^j!Q4tnx@DMajEN8U$Vp6npF{L-3s4%Vpp_x=p&YF^$qydAS(^P_yxul(EpFp1 ztKj$KJuwlNwpZ&;sb?(M#F(Zz9FBGAd;)*;Yn?@E#u6A zF+J0eU~uoF4kE!yFEg!6T!Z*y;BU+>am5#<1!jANC4Aje|Knh6*pRJ?2#F0%h-u8x zymWTxB7+WJO0JU*qb}p_anKwFyKcW2X@u*J4^SuKnJts)!Dj0Jbu>6djnb zz;&#jLu#HM{UnN*$?lmP|0&j`9H!;_7^-m8c z!?E>Jv|kO_cWZ5rq0v+dWx@dxbV5QufHQlWdxiW2Z!3&HH-pFLMl6b}Fg*W4I|?Db z>#Zv}i;W|c2BgF%IHJ+|Qf9L2wLEP(ou69l^0)GFk_l=5P)5_(86c3QL?j~N)Xg=V z?6LAt=aU`>Hw`2TA}TPi1Bl=nj1>!l_rRJIL1ai zJGa2Ql3f7#mYmv;73H1Psu0P3pBq~9Dvg;D0-LQBEhG3U|Hf)r9@TUdrfC&$)&Hdp zBg^mSM*(!_jY0`rhb*pQt*A~6z1dCRD_Z>k_4}CM^^$g^`SxyTU`#{w3zYcO>=yn{ zoD6dLX>P8Pt==;fEs23av_&%RlJi?6RWuYr!o(|T_Q;6R*w|;@3;Ta)qY1ACvmkR% z<@NV{GztX`=NDJxB)DE0Y^M_M6eZwSS^d~kGD#gHwAXtTPW5|AXdgWA%O+xO`gii8 z5=osuTYhccK#3YV-a;W=_tDe_pR^{OMhV8Kz?V<5_YeLq*Z76hDN*ZdA2YlLeN;ww ztlBT?@t)`~v5n6(Fin#lgtO_+*HE+&mL99sgj2M41SPe+9=FH_c^3sgj9IXUNX>2T z#bq5h=X>vaBeY=ZqUE8#Ve!vHpCc!sA%+qMI+P`xWf9Qtlhj$K8L#C-t2g&IVdcg%Bep$j=;Kygmvn{q^=Ws#?8@P^cv$}4|{)w2z;n$eYz zo-4#-0uh>ll#5I%95jaVZ{y-<#{DgY5l2!fG*0V$d7dpxJg9);we(+vX(~DVa;4fr z+g|jxmT@2|E%8Ll;xn2(IMZKP7_@5mW{YOUgDUQCFW0o#&hf4vJlXz)%7*@U?oEjh ziYiJA!+9@X{er$6yd;pvH~MjJBlv^s-Uan{d>?ziKCW1C)4~!iURKvv_^leMjIfkm zQ$AD%Vj~jUiqe<%HM0qY0G0RQYStk?3;loEf|VV`6izxWsg4eO4OFl__+kTS`M26D z{+G7)mgrI-E$LeeeH#1Em4T1?hRJUvPrj92U^tgmn2jpjx}l+Asjux#yaA?+pbWj! zeS`A>vRo;lY2DrU^XlxDKKgUpQpXcV8^F(4blIL3~%Wfws`_{aakH{q2CL0tVT3U{#g$ zta9{O&{hnCq%aC3Z}U3niafxG^)1=FT4P71{{ahQWm{U`Ii%I2zEiQx@k`Eg4IF(O__(jHC%L%l%wWnbt(8U_a(B5g0U>bpiCN%l!|$k>W?aD(VVF4;IGo zx2Jxy$KO=ApA?p4J~)%Qh`n|zzR3G)GzBWqZuKK@BQRuIOPe=;`l!ncc?42K37_=78R&_$4CAB`r3y5 z?-p}~$2&gV0$)%!8Dwv^kRT$wA>o&V8E)Q|ep?zi^Jju1FBz~B-Uy;GT+E7K6$F^_ z*oft2M+pD|xZ>Eo_ajHO!2z93@NqdjJna7F`EL5UL%qzQXnVe^oj8AB5iLP?8Zrsm z+aGHU4%nQiM6&SQ?Ij&;2ZzJGu|xr2h&d$!Uhq}Pda3k%}mIUZV9`g5y%&DGL%;x%W zl16HRT_?%w@zGW-db-YOB)0K%IJ*H3igZZ@*qt3{2=L~}x9|ILiT##Bbt_xnm40c+_+LT@##C$U;&Vm#9@9Hq-90tZc6Y|v6J#l>fJVPVRys1x5XDQZmklh ze`QpSGI^yk^M~fVjWfc18P+HS%0WcFcsT7?B{6C7?XrEiiNPv|{xsgeF#Jhxc}PLJ zf@8AfAAG-`lKZ`8n=H#^Rn@^|ywn-U?`@Y$TkVm8&gzoIvfdk!za}nT8AV@{MFC({ z8+pm!XTmkbK)Kv}9y!A4 zICK9$!j3@d_G)yxu9ju6C1ALt)&F$}A4I5fL|4e@n(>;RTk1VsA zI+9XYW%?;`MbYNIFju9B(){Qy?W$Mvrt3khW&{dRQQ3ufa~Zw?ktaR`^Lf7vw^i=! zupRKD(s%}2NKJ=8%S!vrd0K${Xk@t!u#&NkmO(yP?mpIAXwX&#Fk!}hkC=N59Q}u$}^tcemAzH;cxu_up-3U zjU`&q_~~DIl@V!hBp4cH(A+IP715pMEkL9C&6VFhB^F&M6hS&q2J&1k_ZU5+43j3X zkEw3g32Bwq1`hno?f-!TmFM!0!-9&{&+ZZd$A!9Kmv$>flYGk8Dz6P+)7q}Wp0rA& zU^MpY{8mWFO;;jz;<#qexrr0+0`T+m>sFNJ+*(sj3f}NrJp5U4U3NLITYTxQE@-Pn zmhRQ*Puitsrf2hX@~hg6_jBktPVwLFKF|gla7zwBsgr?aP-&fmgP2mNv(EO->Caw5 zd+!AmJ!@1vf8Xc3)BZ%{gZDF>k#gVbINSXr?~unm1lqMt{s6ZHjibr?!nUkS^dOz( z-b(uOr6O7T&-n=91=|)Uhku;|ma{o}TbK1~FjOzSEzbA4k@kJ_jm$|Avj^cC*V0@e zXH35&r&BknxG+1ml0h&;y6MYK)8^Lx002=LV)R$apws^*T>jwp41Cs?f34C)$>(_W z4km~rHW4_HWu6hc5h>8p-uCV(H-KH>Lxr{qK$-MBwADOxSyg{xYFcK=em?weYh{TPqnJQazoC zgeI8QVSWxiP_r=PJ-zoeDShA-(IXI*h~BQBfYj2ei6g*+95yu-?tNh{T}#1(C6Ong zrk6MkwU-9pQ&YaC@{eE?)NT-K!1D18Fmj z?Z;U+Ic|&MjkLMERw}rU3+`*H>~kK=MK~q|FgK@#FDBeeGxO-q8}JpmiHd{UOh_ zK#r`! zdHlB(>R-t9ihJ%~hMo{tw|kR>EWCeL^2$i~9Y<%nJUCoX!*=@#L5XS%-Q#+TaXo|Q zJUR|Rz?f1XF-H&7dUT}dT1_JZf6YTNEaa7Y?N{!pIfglQzPf-FhHSFUlg1leY4i3$ z_6-}viPdC+I%fXW<=TC^w|Wodd%bVAdUXDHve0oqGI~Pt(Vh+^EIBjtN1$t}K;}(b zZ7-f$U!Ac|Fr)u|&P?WkueYqX?(Cn!2)pPrSG@EVt@hDzr?b!d~& z*TN7Mm6I66FHF*938r1M2G?p~t<*_c8nWFlUKx)g?NU#6{a3RBrrjE6$17OBB?~5~ zzEjJ&>zx{Ym9?|hUlSy5E-E|cL~9WxxM?WwuyLEal! z`N0RgQ#Y{tjp55Z0VNxa4DoXCZg!yz{x9MyML{J)hryiGR#nN7ar1!hiLz0%iDN3| z4%(=cbG%=#v^}KkfkZn}3?>fh(zjyjZ8Z{2UURP0I~@Hgys&copPBsUZlqW8Qch&+ z*Oxo)&wgY{G^I+6`ATYFnyT|QLDm7=lkOS_uAR;#*nH@5c>}zC@i0%C@U_s+DOsvJ z4A47h*m}~Wof%|En44~W-OXlvsD-uCW1Q1V=(a=$x3@imutMVQHw8QGFZET=k#cSw z6W*o!1J-qAI_LZ*Ec`di8`b%$TS0w$VvJFQgVK8G-;vJ=ZP3gP)yqEs(wY@q+F^(B zAIZDz^FZwjeDb~d!rAU z&OVu`KPbDFF0xF)p%HA6kb38o)`Oo~4KT9*$YRET6LEpbbahi7VK!M8o@Rd)EZK>5C{BRzI1k17XXXNH zu5TI{0vrci8uscF8mNw0hwq_ZX60=kH{WkIYPAAO1=rqmDgI!0k48$#gkEX=vUDog zI%}%?-e9Aytm3mx*L9VEndznm#mkv^ruTv6@55i=6TKZ3YNj})Os!||d^J%USbt18 zm+8#zvnWdh6nib$X`p(oB>zRcMPQc%?LHB#fUP*<@tvMYK7qPuovGY`U~YKcm-}wl}6Qac!oo6}2bLEIy^gq_NtkRd9uj{OGTyDu)05+=yNrwlxAtiJa+b$tEwPN@4 zc(TewaPOMd1k|^ZzjVu^i*#58Gi#h#x#&avm?P)@O{ds)phi`MZX$;e`9!MCQ*y@c zxD#Vt(pl-gsdzaHYEel${F64#`#S8p-^IJUz?OU-h#CJt zvEX^=Fu#)jq!2>+uVPO9A4#tluj;wJMRe|oeBklcZH2IvhMJZQJEv3oi09p5UFsHs z8Zeu%O9puW2)A~w$EccZ5`;~A{6@^gH>YdrwgR{99{>7soxgrLZOOg;*q@v=Pt3|S z^UjHS{(H+32E5-m->i z)_=PAV1&;e!EDL*Zi5_n?VP->-Tp%0F0M}$S;qx|<~SCpRpHz4t=KDSWmV1@5H~ls zvgV!&5#A|?&!DW@Ok>8n%mU`e)WxZyYQZ7XTBUP*K&4!8f62JruUh4h zWXKC!F!0B|3LA%RecVSk+#W}8J`(S8 zcwo$JNeFjyE@6SYc2@7+DpKxW{=qjivqO)X{=72b=GI%@KRARfDnpwNNAx$=q2>z=6rX2 z9se3a^!I2P3u_tcj-!XPr=N!*Hf4x&KYcphJsnjnd%R)A93%pAAdvXk*;_Mw@!$mE zn)9|kBtR^ilYMLrLajI-E%#pMbWm5X$(A^k1l(rNMfm`SV1KT78$fqc{%1V%$DQVt zHrryO6Ym5cYGdGklRbb0_h4F5E4^}#^rKbm0~62Nuv2p7H@+xBpENPhnuKr*!}0(Q z&bo2cdLG1hcU((UKNmsyBHJM~%l0Ek9DRO)h4C@$z{i>srw; z?&XI&`pUe^9GIhs^96p@kBYK|I+^TnTOc}`F2aP@!T|gI)$)P)KeweEv@I_Wgk^$g zyqmgPiS~SEoN6IWswX`BR%kPoh}0~k%jcJevTI~fgQ@B7QLmg2Kl4~eh!JU!gbVNK zcxRrr2d7d}3ftJSaMMW@%Lrq7(8{m6?N-M8KoL{t9nGIp!G}{j?+ni0$U+vE%d_BT z(Lelu5VmRIaSHOXT1sA+o7eEZ{JDw?6DbcJ5^=&7at@V(C&#+X!5;9Gp2Mp7I^ ztERp;0l!?a#Rd~-BDcn6Q&lD~i}5GlMr*1^r>)TXw{d6R;Byu_ON12}2?v>J+n=*gA$zB+wuc#1^+1T! z;RW8RTmUUVyKbOMkvp{LOWw(4KW7uU~XIxVo2WOO<5#&aA#IXE&>;@ZdM z(@LAL^>#(f_3;y^h>YvmY^Xu{;ox!F0jJEsi>QcuB8R>RZkM)(DAlEMi|{s(DL~%; zndzfJl{`&=qz`J9DnjOh1b)IW0lC>>DE;rFO`zO5aB)>&t?^6KeTH06(>(8n{#J7Y z)yrv0-(Eu&aa}PwfUs!(=*LwlLo;wqTcjE6uK_J4fTTy|HHMJLs{q^c*1wIX{~r+I zU&pZC_yW+-`P)nCF{0tES4>jINqwLljb>->%XX!|CeP2jgrpi=3ae1Og*aS`A2tg< z+*TH~G$AR_1RSopm|$I+3ba7g^(T>Y(hk8>?iRNxNd{w0_3V?)p1uvF!70VsTD(XN z)S`Ccvs>Io=6Wif;)EFJ;KhJ(8n;F5_-51TdT%eFH6LVEvoz}Bv3{HHiwlTW&f$G< z0`mMSO?Tc}YxSckXjWtAzM9y2Can3k=i%7&oMPZPNTleWJI-Chw=VZRP~-pcDp8kw zk}j*JTOz4K(C{E7BGRkMnPk5Rg`%-T_^cF2yN67j$g7U29qCkc_whj(swO!_UXy8|t4Ca+DwEL^D}}p343q+G$D$y*v%C zBw@~DdmDd<#+G*FoW$&qiSV;L<=V{#pOsV$Yz%n9Ap`E0g?h|0oKD_0nK*ytG13>0%@pm*9wWza)_$XchrK~t{O{WH#n`V$?3wVG}3 zb>Z{K?BF(FD7N>%wE%J_95IJ!=i3<<$m1rC<2pk!I7b!r3oLgpR^ z)geK2+`(jKmx_mnoCTAMs!@#j!7h`hU#2Lz^BWfMpr1yx?qZYM&=Qjc(jk4@Xq8K>G;vvDa{Z^Yc<+}~su88vB0rqQYFpdP0y@n683L4ew8Hr~S+iz_ob323E^3*LDV?NzQ93lL&9$ToH z29-GB9rUKF+sWZ{*(sZCkWsc&{J4)IFmXqtNCVo{##rvU-BamO6eVKXWOgy3z&S=> zvr;7FOuCdysOeO6_C^K5g*R#E5@o=vT0UO!%OO!qgxMClB&XEf?8^6I8Z zPrsT>6FDF)$x6n@3GsE=bnk-$0ps1Yahc#GTQP2}K_AZjnuW2`^tm)Ix)*>ZyjQk> zjuZlAyiSs36xJshSZwHhxi6~(P87PuOiK~G5I)Iq>Fz&!GvvfGjNAK*^U0IJhf)2@ z12T(Q)zCMXR>$Cf7XA}d$o}!pRoO6;My1k8mwd3xrx72^s6k;CG5EaGacEI;q$|{% zPr|s_-^LIa$Hw(xiasM2TidyLZ>ubh*Gi4$ZS#5+96xX?R!&)gYB~zDgN^rR1_vSF zBJFCtigGz+o5!NrA?zB@<6l2oYYr(*4Up3cWgoIXhxyhvJcS@rQCs=wCdH!8Et@br z>?CAdQMI$21ygGylgnYkNVd{3!mz+R7{W;9ZVo10AW1;H>JCJI+YwF%$Gw34C!q_8 ztM$fj#tJRx9e~u@OHSNsr(1oy*lZnqT5H8U+usX$REIvM$BOvxO-uHiH3 z=97^CHGyf_1$_idf|T;OX8*!~Xo_c_JpaQbq+m)=@g0@hAn{d!96zg8{g*q93n0c9 z=6C+MJ`{Q59K)u{!XGFNx^rN^1unSNao_T-P+7EYl9gf>>WPG7AJ@>u@|w$`*_(V> z;x?f`?-3&`mU-f)ni6<#KH2hGmiW;>VoiP{hHrEj#p*|NVxD#zdK{0K?q~6fn6G|s zUdfBeQ{s$}eOnOHZ762Y&!`o$@UV&VxR_^Bu=rw1*lWc~)TyT5$OmMMN6;OXOYi}I zdRWy2?SK<8NBwTz%id!Boal?@Haku`|88HeyzdLQUcP$SCzp~DOeJsORq5#2IzdPn z6;|y(b5&@W*mK(h%MS@?>)iO9460?0W5OS177^xEkIHnmSk|Za)K6iB^mcq!L zsUgq%H=!)4EK zQb1I_4woJMOk=+cbjFdLJtl(*%Eb7pp^e_P;r;5J>KvAn2QlhbUQAVvSIMs1{;1?0 z^%%wa9DI6Vak8$3-X?OCk()fD8{X;Of{Ra)cfn|M$QPijZ_qZ2am%yPHJ>>o%6DQ9 zjV!?c1Bk^R$j#|FHFX)BLNZz}h~oS#KdDUkk_1c@Z}och_$1Oo`b_ZhZB` zwCO<=)C|+PG@~T7{?pkdP{y@#3GXbER#Vo&hj!6R3)?<^8dHn7)`d_0Cr=rQ$8_)n zIb<7MSDq0~pR8??-1iX;>|uvGqa>sdy+M(NEng>mTuosvhf(ylTKc~2*STG;Fx9&P z2i~f1Ql22t*~Iq~Zx1xChbu!biktzNI>U8;1fzGxSsUio4A6ncjOd`Q`BB&`RHjA- zg5eH9_hv{uS{IyjacN79;-EQQ)d6gL8_JcLPP5cz7MqL zZ#4$Bq#8wTQ5$5Sm9lNX>*jj5Hng^5x1a#y?$yO*I+Dx``(k74aqwU9^ws5R`8=J_^sS;Wx$s| zN-L-%+wYs^cAq`eRQXd^eL12y)K4={f7Sl#i}y7zzXQ1f>Z)%J-HX2oR@YHftYm&5 zcQGGv;aF}3T)F*%c{o)!Vw6@8LmCz8+D?co=4GLrKfRKo^gLpSR)e%MuOaW0_t>g@ z?zk|@opb^Bql+f2kf*x3$T+hml*8#U@FmqsCNYekqYG87Rl6O_ttcb<)!E2EHMdCK z6cZ9`i5id!KrzNdaCY38*%g2%GDoGYMBEkgnEk~kCSG+Mrh0VovlHKsv*CRf@~pal z^NpQ|yYa;fW;zWu`+M&mZxm-J`np=yebHuolfhE%bE>YgYL_|jqwSTc#P1W-}u%PZOdZnjj*y53EzIs!Q=%J49T>Gk#6 zR}bb9#RS$ILss_3Z8!0ZM50@qjn@HjW{)ukgvApKVj?EHbvL0FeIaf(-P@X@H(B(o;nKymGq|& zEfTYd5eb$U`fzhAwRV2mHrxaRHk0r`pE5>0r|r)1W46>F6P1wsxYY zYu;+o^d8)g-U+Lp03gb*Vm<}_iRT`2xt6x&(|yk~&(webnlJ zQ13dZ?hLz2z{*L5TSLm6NrV!O*kp6j=K{NwY#&Z8>~EGZ|Rw~70Nvz=;5g^y!TL^#b>BCs7#F(n%XU$gE6Bq|L z!*cRtvny~1E4R>KAon)1-BKJ6kU%DKh+jI zFki#~Kk<#5PszzFMqShDBH!J!PgmW)wbN?|V^hRL{&w=#VU+BCiv1*Vjfa}phD-HZ zRJ$l9*km;qq4uy0VtR-9Ma=a?0hMcwJ_@Uj>$Kno;Jf#-;?jYVy!sQr`~B)I z;4w|a^{d>h_{HydrxsmCqpGn+r|XYp%^&TmENI;F*xi|xPg}vgI9`d+Rl(-77%OI1 z+9(ZH%l%{g2EFh=u(6iyA=I<2^-pc{LHS%o`F|yD3dDlDnkff}&Z2#nsF5huGvZOZ z9~_sV@|$J>%ze+d!;_=uEg%P;7yPySqMy%2XVvM|&1C0DktxkRBjx6f0p*-6}yX3m9Eoz}Z%dfb! zsPV_vG>eY)B1Eq!0xuD=N+K+B@uyHya{mPg!SVIeK}99UA}so6m9bHYf->|al@&m_ zwdP|=xJ60L@BKPAj;`D*=@7kKdxM?Q7}1ZsE7jUI>v&^$0NsBWy4`+@%^Qa2Gk=uf z_HoLu<+7uNHB))uLs3?p?7+-y<>C#g>~lNr3Lj+VMDJ>U zxJ8xpWkxWG2AMeE-|(`tw?q*1F9Kv{v&RML@xLma>JFdlh<5$Yl7L5s7ob6Zrk>Zw zgc1ITf7aGX^XLV!_;{W3tM-cM5Ea(yxUczMiIoRiHcCSrKQS>X61|m0K|>Bb4Af(b zBgtY79xj!j`zskx9n(i^vi9{l+=H^Soa=D~xVajKqps>S+Zih(ENSMKsoHjd%b&G1 zK@y_79qM-6$%Bk|~1UQGHN~1);*5O6(*$zDKHk~|P z9r?oXMpC3(#I*7bEg|f#8_?S}Vglmki2Aj5moOZvQ0zK)n?Jyy=~I%J{D%`0?MIDw z4S6lP9$&}W`ZCdEMEHyqLWtj4=%V6IOsxFvEiVs!{8pGWzelTQZd}x@efT4I9x(G^ zPaPyFlG8PMnrK zqbLLOU?LoJaF+6VSLpD-kwE5k%27kYI50QU#T#+n+I(_RL>S0z(v;AFWM4DK9Mc8b z62u#9NBuH`S06Y~CvB&M>L>R7bD5aDXxf*@c|XYmj3*)c715ZW1 zMwzrk$<;vLJ8`*ep5--dt_S!7n}7-JQpt! zJ}mVT9S8U)z7sD(g8drz%pBv8M6BBDnCiPP{S42JqNi9+y*t;!3N3y;#>)xC}2h+e&NzV3%{HuP_Rd(1AE z<)yhMU{Ud7=7??agSEN~iS%XNs}`><3W#HMDN%&7A1`#P?i#&m{7Ps#yAl`xjRPvcA%vGjA=2!TRIQ}ljf`!?Z!a^Maz(oFTgBE1dC zM9;(DPhBcjS$q&96Om&noe}7k8fDwyKn8GzlO-Yd<0fffL$4syxc4RM+5Gdx^lw^SZcB zdWsP~d76;zB#jWh%EU7XQ4_u8Lf>}2kQqkFk|4_bcGF&a{~;hH=1$GH!8(E)qxfIpaA@6uIf9&KwfeomeEv(AxK7Pf*%-?I!{Q~0{O zqN3^L483ETjBb-){bm->#8S~op1{$NaNUfBA+$nOX90p^nH;WU~^GpCB3*2exF zcUox<>1}ybF#@DuLZC%-I%)be@Yp<}f@;qPT0OuV>ZvSTN$!73r^RA4!}LLg?hP+M z-sZ2w5@*Ml=n{3ljer4NzM$t%{MtGU7xPp?!XGeov4LvMoDH6{6sj{z2YttOBs>x$ zPSAyOD;RXK8s6GTEIC#h9t*1(AZmC>FLcw2($@IG7^2{IoET2z{isySfa5nwx?<4d zq4#;&&lMh_Tr?Q@6y%(&S8+vlZ$l^_#j+D(nrMmJ{jm1Zyr5tEbfD^VT?l?6eY&7gy0Ntx z@JIA~W^5u78FsM|?|OEkaEc)toc`(=P~U?IPrD@brPE47$@Js_Em##ZHUDb>b!-y} z_tPVWp}hHY-@M@h+SFR9)H+cka+|q0{2))u=GfO~~t`HDDdX*ffv572=WL=8R zjE;_cFJF3)n$PJI#e{MUAW-Hm)o$-h)Yqw&#m?{%#>~_X`~b{8l}BhHrJefz@yeQ= z*@ud6q*@0ZWnKDTP5QIMwQhcWY4++$?&>!LP$}%8P7OYp5&G&@j1g1ifLdTAw=W}< zIQq>eq~-T@NI=&n@bLBiA9y!bCf|?Ih&4HwP_xb)=#yVHFxO9_ja*BlPxFI;nqjpaBmPFIS3Joyr@(jkhRd? zdH*K(4=O%lf!2W_M)1ra`Y+|Rv(m}_Vc94kIIz4woKd&VNch!HV6B(R#nu#yU|pl} zlgf8B%_BcN_PH81<_wI#scIWE5Uji~a&qKEi@9>}HE;S>skF6LwO+apkOI(`DSRq=a zuF<_;GH^wHYOVet2w7SAMvST* zCG_=XLKen%WPZr3%b3>;_Q~xDlce89UsFa4pVbp~{iftM*PVU5+B*EsK_lgO!M4N0 zRmW@>90=%uXs*|)Xp{C!*oG`g-9t1E--_~spJ$MNlIbq8#gkybHe3GNV^iA(x2GL? zGuXzAQ88L15ti1uPdk0!e2EPtdcE05S7h)US=S;-8(Pqqwh5^U`+p)BPTwBwY$b^L&Lbz9)4-;`AWp?nx6?%Q@PVmZ*sF_n|@d^P4KqtzRo{_NMmK|x&~ zg?@_vVA4@Y=#-T}j)-`?os4`azsK|)LM4dGkEHw7pF33QaHC-(vvHUVwV)b!1~ zx2MoQk+)91r$aEk=#v&j$ia5$dg0!sY}D3nWE`>4nc?u}Si5?BePv9c#Vo*A7)__Q zRfU^Yo{5ybz3Ut$`YnraWt0=lWd$Hs|m$8jV;x zxN=-usy|8hJzqjtw-#U_7Xqjygf`?L1@@*bET6B+b+3-DeOvZ69xH}oY&Ko+4i6m$ z%jO?WDwHCfi%c8d*Di6oax43x2I>#ipvr`F+0OpA=UpqKLhFOwk5#7Td*>JbPr>oO zhaiPyY)u+1M+Y3N`AwA=I1M~gjP4d;UFEc5)B$(Ieq>~=r);g9=rse{YQS43+w%{- z%Q5%aE0{|kl*--oxf*dzjHoK+()utlW7NeRD7D5ZX9bG92553=)&087{TlP#m^sJ( z4Y%vlA#W$Oy3vX&{p5|?XRBr}4u~HoMgm5ml@ItA`Dc>LNz80)ozHq&;o7p{E-002 z^leMAt<(T;{*izlh=O|mV(k3!cAh1bq+sD9RyBkJfpNOQz&#fowSMtIg|MJfXQBp) zHDEt>Ze?u1>}sMFg*9erOufqX6}vCHz`L967p}~|^zfSfQtYPri-5ZnxWB%zqw?!x zH^10~^>T?HwUL{FU;g-RTkXPIeX&&TYdOfL$+bZzGXA>@bKhp*d&4k?O|~ ze>6-l1k_3hr*RE>MwokBR(Fub@3=59s%e-blJj+bl?w1yOaNNvt-dgo&k9*~&{-^w z+{`HnpHARAaglCK-47`7Z}L0QuiO=}@~9ZAQTaw!f4sNciIpwC=%(?x!k;E3!^6Yv zVceK9nzkd5L-IXlHCAY1jWX@lQ}P*U=A(am^?4(g^XEu{Pq+!6`vIHfHSR|7`wz0M z?%$8y|NV&t(CDWP1$H0prBjIX=NCDoZ zukRi;hA~^!jyjLL?hHSHVb78nk&CIR{rRj2^{=4wH4}0>i(dQKMJA;i-^M`jrrvBt z*=8@{RM^E0s@Xw3u*$W1g9-EGpagUF4H(qtRLfG(NS}~)@*alIHykw&-cX&$GGl36 z<8B=rHzNw1U@As~|H%7b*@hrbNQlI2ic(0^JiMXP!axyQQNOzppLp8;KO^_wLi){r zTau1lwCpTTKmPcr*~v*a_N$7HkE?lhpo?9&`RoAW)%q^A$qzEDcc7BeiG#881eS}e zWK0u^8f{7DmSg8-%)eEdC??$dgL$7SI!hAHx{Sy6EpvtVX@zT88}7d?u&*-L1zQo` zbmpd}%yJB27o~TIGBt9QPl+ZzPONVNwr&LyDRA<%P+bL|A_wKVrj|LH71H{U2ai=!1k!fvzxY@+DhxWDK7wWR?0!#Z z1{45$$C<$mkGSc(ehce~D`K2_#T4jL#WH9LuagJTs3%$HUFLUO-j~r;vH$*$A4kd6 z?_|XHIq_){;MR;kF25Vfsf|3bV~0P!tkgulDHH0jNLiVat{D50vg%#3!n*m~g_CHR zvtT#adGu}}0VmZody@ag+_98mPS7me9-TmrPT-^d)X&IBHZ9a$*X(QwxW$WO*Y*c$ zmI`OTOjHRF`Qz5*X?`LQKK94<0{i{%gZLYAzMEN9M80l3b4=J5lMiexxnYc7USF4q zw81lbhJENbGA$ew)IuJwb9Hx~sV`yMAeklyLl$H))l`obP(gD$YYwbgh$ zIo;gVyr?E`G}NjyU~1*y>#h|+v%<;SzI9%*>BRx3 z;m(wGBDm4pTR7caesrKJ*2IcGczJ~jr&I^7}} zG4=pp#=n>G;`GK~C+#zkx*#B84!ql|^8qFGcky3XhMS`KFTXZN<#S6wg)hVKPyC{I zac>|Gww|y*sW_V24lPyc@~F$SBo&x0cI*ELld-f5f>JIQ-N1?G`h8FE!K3{1w$_XL zknwqJFky||%`g4KW{>ff1E9r3UHlnyPh(=f^>MTjS|-&FzRHSWaI6m}&5&J!?RcS- zIw=A>^37_Aq&;u;^D4de$C?&mSSrs3e6gENn1)A}|8zqQW<^^_fu1asZbur4eAr>#bArNK4_wLJWjT%hO3n?xN1)C(vmf#&cy{2dHp8Oltur%5 z$$eaV!m6}ZaVC&7+{Z=54M}Yir!^|9;YLqT_wSMr)wSSA<>SG5 zn=SRnQ~zz#HnUq7oo-vC?gGCV2dzMbIR)7h;7;6k0o_&%nnHH?p%B+bX9)Gz<8AQ2 zV;owZvTAkQHEo_Vjo(|6$i?ZGeS%WI)xNAcq|V+93!Z7dSA5R@?d5Ky0J@)34D+M3 zRL$Fa*Cc#OEEZ!30ZHq6JkW5bWy5TVQ?BV=bIjUa*VB*ddQ3IidR-=by8%U#UMt_r z%7n962kSv6_TACm%m~`f4ID7HAW?c09M>Qe(8Ey@)O?S$khpK4=&!_#>3%(Z*L$fa zz0&OaGacdYg2d>{MO#fD26`l{R_ku;b)v%PUR-0vnJ8SB3ALpM2zI3Riw_Bk1<(yV z;s%9Us1AMT3~F`GZ((6t1csE=`mx0tDx`dCTrDp>_(T8Wi?Q28p+T8swuyQDOa1}D z4<>F!Y@JHoF{6@S5*9n;x(54-!dAS}J3N4B+tqxnmZP+pdhDV_&Wf;VWcrLamf=UO z&$HwN_Y|mU4~)Rzpi*$HHY5~Ve@l#qZc)8-e9<&#uj8YY_}(Mf#Hh3sj0Y#FSEwVk z`X=(+&^bao$Fy);knq?&`?+r|g?H~mpT}H)sl$^Oi)o|Vro4NdmD&oa{B=-BKxZq~ zc^S&GEP``eUB5xH4btW%2o`$(9PPCifE^c_lzmEPKCCEpheAEFGCUjkC z^1fu&o{fAI;rZjGnAPfy+{qXS%LGowFl)6masnOA)-IM6dJHywvfU|8YYDG@e9O@+ z5_{&V(b7|dB2JKb>x;TnCU)RX6vtd7#_kl3rUssU>=a2*?3jRkIXtorNH9wG-!o0w z&FkVaqz&u^nUdQ?#hENHGNh}poPOCxg0NsbeE$e>kpX|E|1(`dQ?HFxu`U5CH=@x( zTPs-REtpwk1DrujzN1qzf+ZLtG?X#@xKBtX!L5)(`_Q!fl+IH=k2yiKjkQ#}Ww_Hj z{lz|m`)y6351q7CvKNH?EZpG<-^Hv@cx7VVdI#p^eDK#P8h0M+MSI92g$ux$A52=5 zMEU-r4`~N;Ym0pu#6ObIM&cxcvpB5c?UhB^+;GfFONI)g{YPn5;&gjg_;cziT7Rym zi4wI#=r|BN9cEVOa~Ak#pj{H=lxa%b7UXUoVwaoP#F~}h99x}>r7SnI?q%pAhse-F zwp13}YlTggIV14|+~r^Id3Q|dhZqaI(C5_~uv~ozs2bDmPpqE*ck;7#Z`oohd9U!C z#trTq*#&8frG*}c8m;UF2p+D43hV@BfPthTD7MdC*-@wa;&8! z`mqlcsR)~i-Xlx3a0Q7OO`{48*HN8D3CV?V_5#@()Cr0hufeCSN8^rP;?J@Er(aj; zOioPfDY=6#POo2fH}IJ{3zc>`T3%?`Vuk#L^O!~@0s#7cU2$0hifH zj_IRX{sS-Lp9$;LK~DKos-_^k1aq1A4WYNRz1i_JC@;=kGqb~OKnQA%6&;dGEtl)C zZ^a6kmgU-8h>`BdGa!|SRU5gc-9FX95SIx#G@@9&^bRNe&QG1V>WyUCgrP#Cb;&r- ziDY*gL~#t z&TI|Z^OoqjTd7w#5Z1_$iYPk)Q~EB04~th)p;YS>>!Lalh)av@X|%bI;f=VkbwT_s zM?y@8TagYR)j11i%vEdhf3>JadnKs}8=gfn$R?=Egd`e4cu89h+Ke4x)@^dD%Qpha zT7+@5RKiXlt~swpX^62xsDVN~BvFZWpShHM-WIWyG6$^|+C=$+>z}e__Fr2X_xK_k zXJ5ZFH69JF|8)DveWFkz0f*LI>iRA5bVR73GiT3i{4Wg|U9P_|JT-8pdg&T-Zb%mtvuA<674Oi_b{6%YPf$r#m2&vqc+KIRT6Pz8~hy6=rk$1 zB(1BY+bP#VGk#F`arl|q(`Gx>*VE0yjllzcr&;Iyl2zwavimciH*UNsOa>aRU?J}d4H52QuviJ_f;idD3IDeO?xP(NpLPXjaH>ar5zCo7@kxq z_c;k*EX$cH_MCbMryf!p1g#g@gvRA$vTWRivsSd{QBMDOx}CTpk0#xL&ES?^U)i6b zF``TE6N%;4S$02_WPdC&=Dgy!B3Uc6Xp>sh{fSrvD(paVI;fDj$?1Dc=xm|4im0qE z<5uIMz!qxTz0z{X)MPQ+xa0%GsOG& zm?J~&giLe%EdMoUpky68-U+PFYx7h$boDMnJXC8a&Fb;e$Dv63jyc*UK+_EWIy}Dm zTy-_9DlYU?Hxbb7NPaaxKYnf~`Nb#KWZIbkq*+XlFSKC8fU8J7zcFmcH|BvXfm(eI zqS#VBv;MU}TkdKU_gd81ee&%ALBAeJ-7_9o)gEU3Ot0BG_qD>1-hvuWn6@M4Ce-I# z7WLu-^fsY;wE?@CP({P#$I%?REs~N$v{mfsrFC~tw`Bv&IWaC?1odr+tM2uLANs-% zF^c(r+wIGlR)Vj5`lTqH=iI&(`Xzo5ux#qZkoPkw??P9uY0gl*`n=cr4j9*o|mi6dOt_SJ~Aw{m-Cqz1-cc*8D0oIeLekH zlWIW#NqYSh$)fa6QmUfV3Pp@Ca&?r*7z$NyBiC$(%CNB|W1^_IF}?xe{f(w>P$)Pw zX8o{~cI^a|tznAWkwC>z&Q)oyCu83@yE|Om^88-&%z4%MOb{}wEY<_3r<23{4GzvTU1ePE2g{oQo( z&JtTW@wKKBg9Ks-X*u*!hGnzS&0Rdf7Uz{d*zdO2?(sziLyQhi*Ff55YSc(3BrQDNKSWtNiA%}{tJL(XnV2OP2t<|!ywyP809u3I>g)JA%<_XT9Cj;amCL+L6hN$JfjO*VzeTy!l)g}a(0kN1j_=rIDd2&CRNjjAmcvuMm0*iZm&a8Ccze%XBhZM1TH&;oGn)q_EKDKw_-yI8l6~sVCKu}Tk?(8c?o-=6Ed_j--Au7Fl=}9DT*PKt~oL? z@-ODLJ8pjoJf!2e^MJfHlR&$Eir5;#NYqPDO-{Dy%aX67X~s)H#>FQa{aI-DsbGn1 zQ3Hd6p?P`tXk1w3G+7uAyNEd}r=h*sU7W8KGTHZMH1({Xs`MMrq+ZWJh>p zVq&8HbnaPK?yMMPPVCZNhXwEA7P~E2fSW$K6jwiW1(xP*WaV=+A#}GDdpAX(Zcj7Q zB}cVfngQCNGCSE=QLqj!DAKT6)vJRrHK7@60Nyy7ZIYk1ID-FLSJj>P^`kBKcCtQK zTb40(=awkvA%6k)WG$ljREA69`X#CI^u5XdNunBz_Og_a92mWJR&%>P0B#R ze4`rsOTEJVK3=y|Rwdh0OJVG{@4gdbbA47oME?KH@9<3DN7TWDw+bj7Awlt>q zEa**J6mQ4}no3VpU1K8`?Ypxh4$yY#Ggk;rA%46mP&P%xg58dec!nG_eyu4~tdv^X z*qtqI^LKPij0Bt#l%?n^x=?ew#=0dGo+8_{jW14YRHREqL>jtTIVU5u#Iflu;w0DU zx-vNtO5M)i6&N;tQvB>(ujQNM)RkhBM=z>8JZYBc>@Qu*=8uEj9t(F@mF9*PciU$@ zZ2e*rhMX|(!lLxPiTK_Zj9iS`73NFfOFQ~U%CfR9F19u(6&5g$U3TM7gRWND`p-2O zrk6Bdw`>>)}LixR+Tkg?msoP_<^Bjsx91CJ%f8(veh|? zl2cumr25>o#muP8w8s$rR+i=MM{XIoodPZlc6!Hn_dpm21&$m3J zaIBMFx{C1x)s(x9Vb0m9Z+6ho^*7NuvDQZeg__OdN{k*rND(5 z?h0Ig$+|GP>G*0YX$CYxPW3_O4rb7u@=ZAPn}_Xj zx8s`a;sZo}{>5lI((3Aa-P;0)uZ`Q$aS5w*p31DGCF`_(X6>gZrm8I-C!*lJnc#O? z?N>y3zFtkhQ0{ds@@L+hGrXajdYtVe%-Q98c{fl||8zqI#ky>b|MHeKX@;fStDe{7 zEe6{>`nfn=z%O9(v5C)zKLeJYA$o^DxWm?5~+1(La+SoPo11{iUT2z`^ubpi*{ zK)m?!DCna)Cy`FC*3&{^(;g0-u|g6kAZ=!GA4o{>RgnwbGz08dlxi?_d-|sk$K7^H z*S+eQn)Y*Zyi}qYSuC&z(!ghd4Z4v6KKgjKmMkAg+N#Km8%chcqGsPAsm-58j1)+* z98r^_Ut|k6xzV?nDSPLVnDOT%X-lFS;@GeQ2uqbQK`?GMhJWLsq=`E7Mdqa7ByFBVWo{2uHOi z(CEOq)_Vhg_xPO|O{x}JS1PTR2ej8uyg<5E zEkJSGQQR;UuMHbaL7<#jXG+f1=dG2WyQu72w$sBg$GI~_R)lasW7P02kEFxW;|0)6 zRIRE~Wb=gHtgLZ7=RztMeSsokv$HvPW97CocYYMxKVQ1z4iZ+e`6qJ!;G0X2j$kv` zpKq9rG24O;@h{nb<*jaQyzmt}+Ab2`E|AaF2fer;t8%R0?u}APCd|MYqh^8tHN$Gb zPLMI9^(j!yS+hG)*NX(>5_33D8%myB;C)!K1T;CEEx*ukw)7+8$r|~ycGri+ zTkNSc(Cy|d3fvX5;doqV1ZbwpZV@e?r|PEK%p)-2f#d%Of?5LF7jGAiFJ7Lh+X6QJ zBn^HAzKBi#NY4{;V?OFyFR2F*zNZny5UK^jx~tgb@shrIa7)^Ax=wU=2Ici{U~aC# zo4xMlz(WMO!+55~se14zzNFla7_HLQBcewc;cG~+^2(;xT~$@Hqr(}w@Z6xvB=1KZ z!zI$=4Wt`diyd=4C6BgT+X1lP=X#kjCLxtv*o*ZRh5MeTFZGg{$5!!_!%(0)KhHo) zTz1rA=_dAj^mj~JKhl{^$h3K|&>*OY0t@P21kx^oBhv+>mevIkll(TDGrs08Fg)a; zy`&H!;`1?gdtUN7wCyazd40Jn^iNP8Tdsdrt#)T#ty0@_7x~DNM)=4P@BUUti!99< zm5%RBLcrRO61gVj&ICes7u|(}&Q49`-AxBYn@qNMW*WmHy_k9Yc8q#%r=!xnUV5#z z5D!Db5u)G4oqHKgWvgu~tp@e#rFq6Sf21jd@K$R^9fg$#h|crP>E&N$ zYToB`NS#;?&_5hasBCg~+R!&uW^~~VzQLm9>E^vf*vI1PwpMwqyH?J=*5Y+sQV&Dg zcYG(`o^5~h5Bh%6Pnhv$Tx5FuWoYo2Ox|jJpG&#uQ+qw`V2NX@(qC`xSiod^LnXfJ zqD#z$&v!L_ty(f+uq(lvBfJ$)3>IWXwZb*&10%?K_g^-jYam0tS;|Abkel7~@?0zm zfrCU9zO>Mza^JsSS!-Gp4mLGv9PDqm{IkWJu8=;n2wYV5f!B5FK7FN|2hs*}KbUC= zc*HwI(K-jA5+4MBkgl3q72W@uICCbVW%FXXOo9Jcf@-T-Uqi=?VcY)#tUy!0c~=MK zjT;`ywH(tbwjPq_kSSAe;nn}GgJ6 z6vuGk#3#6MF-){-zf72D<9Z4&m~{>e13$4`*G(v=g;x--bx~gOW183o_9@XhxcpcL z%eE}Zv)*|II(FeM)PyQPCxp7Xx&{p;TH&=pGiJ<~py=4KW5cUqD%6)Ybfoy5j?}qa zD`~|ASFk=j0TuH4(d%u$_j|wh3-jg`z2vJ-j>R08p}gs>OMvl7V?OJhS3DVO?w`d0 zw~x+{kLtXk0Y`FFKgHs88L^y9`PLR$ zg_G$-E8bX+^1}c4$3Mo26DLqmkSx+gtG+RP`gFYT!V81GCb)xn#jm==k`Wo%)Ej-{ZIe& zPdI-3_@F&ihQUbW;EJUuIo(h4qk zQ$uZJ8u7WVmajOL@4U+W$xnWQlP6E!u?=FM7LUuY&7_ah*3)$n&OCyd*F27eGf${H zZvkB#AB*Qcg-s9KgLHp4I=R5NEVZv?xoqPk^H;0=6Z?4FC@f4CX3{tIbJt(+U<1}e zX$9LgWcU-;6*>7R@O^6aOcbR0(c71YQH42Z=YxoxcHUp;Be_*e@yt_mP*heyc}bs< zT$LM_nUhzF+?)=|Ov*7%aa^wKez*SLeDWwRYtVZ_T~)q=c$~Lh)>AaXQydBl%CMXpM0pnu;;Ta^@X^+>__fET zBY!{#@np8YWh?e&osCl&D)(;fFPY*|5RZb}Gi3M^>))47zLAoDvkqH!jm3*A#*v9j+iD#I?=Z$Ed35BF20^MPK^<-PdXw$rFu_5vQ9JdB%ziC?vzIfe^tk3!DR>kePSoK@q3UbaWN?KF0< z?KS1Su(tuXxLH&ZO12L+3ffE<*#j^3m10^Jpbi7FZ`~e+jtzbJ21lhFp^ikqfhkhJ9bOCc# zj}KU)kWapXvYGhK0~644d^h%noVcP;B`zZ=4o=X0SZb*%vKKw32C^EI*cEn9DJb*PA9T$k-S z2`8V;;bsnokHypp<2Zrl0Lx*xkH`6se!3aE+lOOX6>m^SS~;k^h^n^Z*!I;v96x*dnNe~Gl=ga6_XcX#qtHHDc1D6 z8yD(!VCT1|(8{_MR8GONl`AlVy7a1jD3^~wR7EuG`VgPhrSZs%>oFb|u=9)UIC8ly z;6^RmgpG5{gM$hn8@X))0e@sKJ7#8^8ZO#Yst3nE`vAMI7h>|bTpT?*RG%4@g?wW4 z1wPu}it*E`ah9*<&D`(`?yJ6q1KYOYTh>vbV$wpaT)7CvJBtf zFqaQ^58=!0wYbuzRsxnj@hTQ@;-{dx+c&=Vz3<_zx84fh$_7}b9Yb=T(MbuO$r>-XS`&-UUP=?kmo;*s^M zFou(w^ewjA=UY*Cu~ni_vwRbtT2M`0I&rRc8|z+=7V2MEH5DsXug3K10`y)xfdBh; zEfzibT`U-#hZA4CjnB`PL0Ag}ohc5U5(Lzfc&7`N$1g;hJnyIU8%&CH72w z@ft=?8jH4L$8dvFxY_rw!^#;|ETNnJv?JKGojMg%Ov1e@R$$iX5}uf7!Le_?#-1aW z(ZlllMlHkZda9S|#n}Vj;6PIa)~sKI%R7gB?|)vtFZf;#ZM$>FZk)W*&N2!yVZln= zfA16&q`Pp8W6if3YpVNk=x96Ez4|(p)icJ*VAVAjYcZ28B{Xwt&&@VodQbv4-V>PC#Aht+=l751EN zqD}>vxq2P$pHvahty;PPOE$iOMK#HWkn;A!%yGkh?s3DmHN9iWP_S>`u^o7y zN)H=@sT1!>UT5a!P+w06$Gf3%1?^|C?bAc3ymu{DPAx;KuLZR`ccSjZrGfj>O8Vlg zpl|3uxf=VLvHzpZ*oWD8al<@Z`rvc38 zuS4T~<1mVwPgm>qqE!o=-UIlD|9J@;URsRW+M8jacI4y#jm9OL@Wk9+_SY?F9XS!z z>7+eh`QE%Rj@RBOXCGRIQW=Cp!gcw5eLYU!NMY2>2e5YKRFw2J;;Wy$hpxp>W8LgZ zG@satH@>=zb{4AUC?_2b=!CF-g;G~ zpnRh4I}0(oBrn{jKHS%W$#ciy+P;JI$U;n8{TLpcsqyyq$yZ?J&)wQlaPcT;bW8Dp z5Qg)l)THqPud33uITm)^XyDkei?5_>Y$(E{g{yG?eN#}#{&@3ZEq?ylZd~t5p=Rn- z8u&anSl8jqY{9msay;?W8g5f2Pp?N$oPr6J zIhZhIHYQiSi??@Q#_n(HF>~Dvq*@xVmE-Q|CeDdDZ_`|G7AG!!t;g~1o7-`nZII%) zQ$1rT9$qzrr^H^;|R*)p~@$1U1s z>p#7TqnrYWcEsq}cxde^&Xwqs{M^9-_Va_sFQSv>_SYo+TuVsVT^CQ{6c^B=s!DPFS}VuPMobu(#{_*l z&SBrVew6bqineRlQCD{gi^k6lo0gKFN_9p$Hll^E1~=X}7B%_q|DC8m(7-y>By~7( z2v?Tf6Yy*2JDKmv`^_}W66w)8$_o7jq ze98XeN$f1HB$!Tk(Q1C6P+Bt)o_)5^No&+hqhtcH_81ODbDA4f7ZQ4LHbJX>qicRF`=mM z0RHiBE@S=o)?-Z04IJFD1G`RK33Sy{mtfVZ#q1+VJ;g8Hp2kDi*Ts$H{F~VFzy2<{ zM--pJX7yVUv7d~ZdGFx;U*oLSh8nbUZ=J>a?|cf(T8GD%-h;MN`v&JA`Q@5}ti;&j zL`RinU+-@{hh5vg!BNitREM$mJ%z{Td>c~kA8*Cdz-_0 z>HOhin8EeZ63!3L?cIjY4xSBKR?l1=`fSNSpK`mVIj1~-U?+C&iPnd!R$^v(3%2|N zeT)4fedJyIKb&{TZsUrQ_Lp9g5zk}vfJ5tk&(~ES(J92^zkMkn_+y_lt>8{uPx+>T zX+wrT*28(pc2Jq-7u^1BU0jCg<2LXfhh>;Xajbu4I>t-B@lMBbGSi|}aGBz9S~y+G zE4W@Elksz>dYRX9GFS%n%(Sn{6HgpSL+{QAg6R^mVmFu!=|YW@P+d~g1B%62c~?{e zv-yPcWqQY=F|YN|2?KqrNU?B=^(`XB3Nc>%)22-e^ok`z!E!CrFxMdv@kjDStDrp< z3P4`RMI323jT6U@;dJ9oPQY@|)76G_>t!6P@8`Ff=3{u*S$zE74xCTT!FON%F76wC z9lJi-i6%b%XgRry8y-yHZOE*y9tTaR7G%4gPN%CIy}?fN<^R_>?HfyUZS%-1+(o%OB8xKTG8Km9VgCn!XMS= z25pq)cO&}yT5loN9vLI2<#*0G6odFF{|ESN-zjvAxff49^DH*3or#jX5>ED~ z2fd4?uEeJMC-I3-8|r?(hcavM_{*>1)AGsVMNPuZ2syb z`uH@X{+o|*f}3RbZg>?xeH>}wH(>T}ra#f9bH9TZo_PcnE$2etI@R8X z_J(hD z``>*8rEMqi@wQW3EcWB{?oUD+ELs0@=+n!_4jc42*++I#P+B&>QybXsv5$(!Hdm}5 zI?2%`m}Mt8_W#Z{q;6it@l$CmTsR+Py{h+ioaaWw^WS?O_YS{?Z$8|P8@bh3wP6)T z@}5&P?S4G->}pixv}6B!@8iIQTs->1E7-WG9H)0}=HiI9VDW0-wyS4Q&-PuikWX#- zD%Cq%>yTc!4zIoVD9Uc0!q2zWla}Kj7iRPZPS8(b;);c+U_Usu|6F)VuRikyH-tJy zFU6D3K8we{Gm8r(z0&g$zTgR&1&_Xnm)9>w^Qm3fc7pAaZpGoxYjM4k8(QCc9p8KQ zNlYwDHkf0Z*oK)le&B%zg56@<%6_(`?Pwbd=U|zNX>8v<-Dv5(g{GTopDyg*{5B4pzK-$*593+t{mASp+J^UE4i4%wg?&vp`r+F+)HDXq zuszD?i`^YOsoQpCs112C$GTbPo*O4|xFa7AZFmL`FRA1=wHk5koNSdw<_6L#IlS*Y_s9}%$Q-7h?nfK-Pw|8s`0(e{!G_>FdZ=@{ z_5yAV_`K?Pr}1BU$WF1XMC-AP)nQ|?&v0|M?nFIK96O3rSGXy!vEiMsaQb>N);#kf z)-5R;7#l7C9cS?2mi=h$uf~HLpT@Mj8@SQQ*Nb{{2l`$C7joCI>(fv0(;vN$)*Nnp zuA7e{^?8oZw~znLe5H@`4(iZxekVTW7}r}l9~+)pj$D2t@)qr*#ZWI7-7C0>|NK)= z<2y5W*W?4dj{Xt+ZWI?7tk2#0zv?Z#>+gEYF6QeY&BQspKXa4vz?L0+z(F6Rt};zu z-%ad)_dV2}SO5PWHZCkj!#5v<{$DYLujxyE(NwH|`az5yH4~5C&y6!OPUTqq#L8J1 zE}vmuH3hIj`)zj4wa=8rwhF!V__eu!CSeZZ0exD@t(*B zj|G~)1R2TvxVxL5M(E+|D&3u^n6(7eEF-s@y^gOGefZ8czJi&|N0xFv^3CR*XqIDQ z80M~f4!`z;*YMb!VlD_E#MZGd!jF zan5=6fi1X}H;LmAPm^l_O-} zfx5{5bgM}GSMrsPgLnmZ-Gp&_lln>ad8O^L*8L z!eUIT%*PFW&*vJy4aN^(;Ck~dT)oP<6=l-fN#7do!4vq9yCOI7y$%Yw^zBF3d!`MQ zb05T}Rb$a~f&GH7A#(=EO~VuTWDie=O}HN~zWy4XdtxC^2PSP5+IyffRa2*jhw&(y zj>kDBj4J3t?T5*FV(ywvc;T_7e8^LW_uu@MbbGGn1=+o>AU}9&QUI4{v+Sz9Ay#jhdZ&OKG}Rqd^u_V#seSW)BR_W$Bn$OKIBH# z&dnd7p{EL~H>^e}$%>||=EGWUOmQmX_LmIJ!)0gBV|1^J=j+1hN_=q0w!fm=wl2n72gSz4Fwtd(xJ=1aaQR9L zAL}fbg5^u5F3T~_`Al439{7pNF2L2_J<9NuLMZX0Mb zhXo?Vg>voA?cDj@j-wYifn(6qrIc>guRX`z=>-_ZMNlh0j+xWmgp(&4(8imvZVETq z;fGZvr;={geT~m|odiad^0k1(PFlRAOPAoa$L_r7apyw{fR?Bv$f zRUKyPQXO<3Rz4P^EBKt6iwi!SBJCx7y!i`o4-I7{iC=htbX`=R>gww7 zm;Uq@0QDFDloy@sA$%NcL-z;aY&X&R@**RT{#e8b0?O{iuRs3?mMs{E_KO$zq=Sc; zn=az;sYawoQ`p#wo>VTX$4&?~KlJIxq1{SG^2U{Bd!N>1w*sqH%tTqm6rNPkWQv@V}wvp_jZ=1=Eu{~ot>8bp` zWM9)*u6;`VxPbi;Bk#knKf9LpyayeZFHyH#^xU|JV_Yy(F!HYQgXy9D5}#kZ@g*#n zwE)ZK)^IYA%kkvqZGEeZlZprKtK=k&3(clZ6jh9-|M1nHgJ0pZZ<2nl2VT-SZ(z*J z<05UusH)Jh?9geOuhGhjN&V>>GN06L0+~5g^UVg&FWPP zF_J=cvL^UH7k4eJOD>={h#C6tIu%EoIfyTvUcpZr|QoP^xH-* zcJugTyef>5!+AQTx}qFKea*Pg!AWyYH!js5$E6M)edomg<}G>}b<>9>b2uJ;f72Q) zr@!8$U*^-Mz0H?Gf1zU{zfpcky=YI_ZtljHv25WAK4m75?>d!rDXo5>dNaqH=5<_bW1WXB z#A7R_pn^}er?For{Xe1G{o(ugwrMOLd-(~}aM7vO%pW9+TOJ=s=)^(duVD-$4^nzvn0!p9`HEd- zrEFJ#QDdu6!dF~!HP)#-$?R$3y_NT!vc*`=`%cA_MOeyvYhLdKG;@ic!2D7x2W{0rr(tIo7`PG{*CowCi-I z{%>2jzSd80rNyJMw`%4pY`B-FnRCwKiycRK3N5$~a(kox&&|+_ok{<1XaCO|F$$IJ z1E~>}7*joh<9Y!`kEss+Q9f!6MhqK4e)*1Cm>Uct;)prw2^&*U`@>F*d=TY?k;)PhZYASty zG^R}-71~+0(59<=c{xwAa<7=aToC$MLB#}&;#niU5(-J&s)Wl7@8m^Rcb58M9GCnwy4&1ywaE-5n65rg^hf&-N%1v=Im-xWXd&BX% zEBs>smAG}S86~56Vl&l^qbDv0ynZg7ILvmgM()jP=qlAKz_~nWoQ#Jm;{xlD;&@rm z*&N18jYl3Y6I-y%?s|Ov>E}3nwF8y&pTL9Td8C|m;eYC@x(tmk!H)d!|2@?8X7AAa zQhuZm`;%;Ro4u)z^13{pIUkt$BcBN{0|sK#jacwBPt`2NlIi87E#g{9<1NP_$>nLP zlz5UCFp8T_k1ih_Xf^KVjNrVRI_F*f z1|NUE2iLiYQzn^|Z6A_4xumO*pN`OdrW6I-Y`fUX*Y!B3UOtoK1=mc=c;D8VsjVm3 z=$73ir!QwXs;X$K6i=J+9#NFb*MG{!g?_v5n;q;Ay#G_SUO5vzf2iL%ZfJgj%N4w5 zJuw^k96vNS)*Q39>C)i5EdOe2n1cj9>ZvljJpbd|diC@gRNpfh)9&G#B)s&!S6$At~{)w29@PyVO}L&t#2rtKbiA&%^e-o4hr@++f}iG zeaENCb{$!>pufyx z`jB9qLR-@I`fGfZiyy*-T-lxrX$lG7=jiF=2Zd=_onjJyZ*u&W9>(u`B#Vc+n_frx z5quwQ65eJO8<+Mv{52-F6p^pAsWV;=X1Od91)qjZ>) zQP*64bEJ!}w{gDAwQf?!!csoPEgg>X2S*{lq=E-x`K*%d_T0$B*td5NpLlw&D#hMP2*z^lXPWW41v$_`!hx^PZ?hR$uUoqz|x3f}f>$bia#!sVRm|(@B52 zAio_m^t!2zv8$ei(y4S9mOQkE-}o9C^eUPE6rL@oKkeTa^g2PkHoW>UD#GL;DT|`% zmfW=AQC8Ve{Xntosu0>Wq>`W5rcMi^aYA{?iu-u*N#fOSQd}IUJ~}xiy;Yy0vJupK zIF_zigPg*$@ZrS{)t|EX2W-#+0BhR0z-ey)oD!Xsy@sAe1d$7 z8=wPYHnYL@im8+ID;O~x6>Nj@hiXC_6p+`xv47tlG;p)J{=i8*{>oZZ4Y;c87V1Pf z(rfYJ#liOSZM8*gW0C|~*)-TyHsWR9HB5AI2(~1h#-;EoZ`VyeSL8BHKF4+dzdKf@ zF>~=6Oyt;B#V6c-oNQ@q=6~|)-{k4~V z)UQoj*@V7O%-4}CN=s1jU=4DM%7b6tV$0@o%*o@^xzN6}UA~-NaPkBlIbP^Q0f$z~ z%12(l{%TSRrDY>gTFjFi4@^Qa#~N)q%-i&Rlpo&5c0Y_m-+au;rRu?ygnbw3=Ji3zlv0nTJ zg>0Xb&vxKFgw>SW4YX@wyTremxRG~(e`JB1J{)*c^wrR2U3_@Mei661(m8!saIAs% zJRbS~`os6+q{+Rf^Dxe|&d010wx`AtUOn`;WRrz?>Z0#b_4ZNMP#?zZuiYF6m`ws@ zg|elI`XuXBz;UgEr!9JU6e-w)4{Y=VT;pXQ7vjN|1NBz@SqM+Zu)nb_`}tHn9p0gk zjR+H7c2PN0!uK87R(OpFG(adPmx~$>gOtVlw}u4rdNac63a0XX86L+$r%)f#iN10f zUVUb$4cjlC5B`|XQzjZ4(p>z7MHgxF^>9it$Bkb4LEjB-NHEXOsSK3Kahi+J#XP-M zm0FIy|MU;oTe}C1v&LhTs-p6u@t@hiCmRcwo9<;B@l@RvJ_JaRVVvq~J%x9E`Z-#2 z%dvXXvzWqD${Z$Di-az&Ak(g+#u?edV|8d7;zPUfL$vC%y*$!dy6|x~d9!h5a593sN1os(BxtK}%e;NCKx~GM&+^BUVpMK1C?Hjls_ww6C@@tL=gL+6k z`A5?9^n+g7iLat0@;T;o@>Cwjk~IBO)h0C+;1hKX&6KZ_R41KMQLK8jpF4tP`b}yi zzYoR@?cfWgWyxHS^O1?U#T?hVapL3ugB_RiFq01iCQaa`(YY>;6Y|q!1CMHPoagu$ zoIW(j;FzmdWb42B1n24Z6@1lj<@kL1zUF`2;5+^)-u>nxPdF{Zyooiq(tLr2<*TS^ z&AC`t&N2Jwuwf1)BgtO0x9XC|le8KKIT8`9He@+l{t??Q=VKQ2oJc*Jsb?PhTxdhl z1wE7dk?v2E7thA-&raam_upZ;d04%6B7O4qlTo&n+h3NI?Lzz0e~lMhK{(BUQ#=v( z@MGh#o2Sjr?fw7<%U-}dZr*6DIognnHD9URfw3li>o7O{=3-8HKks=BY$ty9;LFW8 zLcMdC&H-N+KhuJ-)A-t1{W0_t)_mj(ymLsp=pF?eJ$@bw$4x^szeOc{i|~hK8;wD! zfM0YEPoy>SBqzTumVfI2K6-CIbrn7jZAVYx`l7L@;=|3Or!-bK;p@%s1|4;O$>}(Z zhGxDFH-aajREL0nhkj0e;W=KOZkdPKBWVNrS-SE*ytcj^@BQB`XgT~X8fJb6_wcn? zHH6wEpWh;ty=22+JKhvZMvcZq{-wy!X2dBNA2R$=TPPTw*j$Z!J1hYBBU$PPG-c>N zq9=1ea|8=xr{*!89Fx1bu_3v-!tGV*h&Z|;4xlT~u z<@kQ(N)zRB=S#)raWnP%n{Z?wzY})29@{@WjwAPO#D-bA7bo`w&Hr@&)7Z=s!u%mu z{p%>JXay|d!`=aOy>pAJh@ADq} z4Dar`fT~&COq;-ykbD(W^Y5T5@tPmy_VE)KTrbHlRhDpJj#5;GhaTh{Wn^ha`_o@o zdCgnWoO|@}bXXrBJW7Av3w3HtGBg+L8|agvQG!NE`^!#R@5J+U8 zH_>qA&11X^6V7s!b`Zbe;#FF~l~dk$!JSw7FaPo{2ftbLTfg;Nx8;BPw|^Ud@fUwF zh*w_p{-)9I{Lb$LT~($+9J>s~cM94$W~F%qv>)x9K&X=^`qJR+wR*avaZ{n7tOlhy z{4Nepn)H=a@vlpyaI>j}9WKS!UykEO;TSA>Xgw;ozlW_2x40nVfHs`(L&Govx1;1cSZ*x0$FQBlHg z2}~G{+@sAnRCfU*rt_rGv1^oH#HS+sKp#)#sLd)DtiklQZ?NOkxA^(~;do+k6)qk< zgxoPafwF!yir@MG$GW&+(p-e&w%f+`Q=JtAkNqTp-uYKm(i8ZGv(zX5GLAH9gR26= z_z}-;)?2cZ!IxDp9Km;GQ)q6lY7Qe?ck5_y528vKDKXP329R2aL;TCoT%a-_dvpH~0bAkwqOi zcAyobr{9YWV=D3P+gs6ciyI5nnY*fi*0r)NG(bN1;Dh0PUE?HEcwg=x!VBiubhe%7 zluigVfo6xM?X`d)Bg$&VBKL3`U&H7|!Msrz!4p}{d}`3kf&S{zdgP3rj0ZN4VUAitkeeigMXnv@OPAcNa; z5yZbPGoTUj`J|?l`1Ygx_Eyyz%qUCI*Liw~dgUBy#m(k!6wc)-3_j^>YUN);U50pvZgA36^)0R8asNXt9B){c zxsy?r+l}T{E`T`sxWqQd89R->F$zULdzXEh$GQ2+LYfN#^V?pMrAdNbjZz!LK{(qp z6CSrmjLS^3Wx|-59`Lh5_1iFJ@)S%7pCS%V#!O8f3sh%LU=&ntnjd4GP|EKE@#JQE zZwaRG$y@KuW_0nD1m4LssD=KbjX<5^Djm&NC;5FR^_QY~Q}{|p2Tx+CKl4>cjk#g9 z6S@{lus;^@#N2S?@KojYtq1YIl1a$p#+Js5QRDe)=h0he=eScjiKiBNZt@f-6&=Qp zqw?EPHT?d;dX5_(@KxkCZd~Zwa5|-7+lGn^{Ak>ejrE?tZ6`XVGlSr^y>P)618t!R zN`Qq~H}4hPNNDT06*fFYCtlyDBsn}t2r#Dec@N?E+H&h4wjLaY`=(UjR_iVH3;tE5 z0p9r!eFt4T`ReK3k5Mq}DJ&hEj1ju;={1B8Du<8aYe;HO-s`wgq4tz7 zFdD3jC$Xwu>-h#;8Fvr=D$t2g->TALZa}p%or{k8S{yGZ!M=kxn3uj92zVls<4z~aHPJZoiBP42VHm@EYco$t>^nUgGYc;d-ghcWxG_Z{l}l<>myDbs2F8Ib z(`qkYq77sbjoVYPZ6}+C2Le5Pp$)yDC@kZ*SaOf@8z1{{W}?Q1I$Y7jZfp(b0sM<{ zyic^&ZN>JUYFs{Y3O&qo>JjX&ML`~KBIo#8+m)sU9JxuG@?@3Pm}%~yXwG(=4~B{= zu3|s$#oi;s&2Xo+ur;dH~GDyVm_U(T17KtY8}`A1*E!`?~Y6?D4fY`O`1KPcaR&i~2v?rR@gVd-xa5#+RXo zV?j6jf4YR*n2FFYDvZ_)U1_2OAv;VH-#en0M; zqt`eL@h@4en9je5be`iH=OaAr-d{2o98!3n(Oj^fub1=TLhe17GNBSzPbVkkTe(4| z`B@0mQ9dt!SCIeMUv4(+!Z(*R_e^2Zs9v0GXrTXatmM5px1%jQbelGH9EM#!6YAL8 z&c$|N73Wd>@>u%;e6_y>%cfQGmGe#v8^xm>3bIMCJ=>0T%4IsuO~RWUd>}cXXX9y} zq9MGM^C5k|D6}E-8dH?+=k7uN*qNA|I*A6J0P3$<6;2fm3{NU0gv|C=y%Y>rTJnZs zrlk|-I{B5;@c2Xgi&|UH;xJ#UtlYE#BQBoc_f>ex@ujD38*AR+t3F3hUdEhRw{VD? z4vQXtk>8L@=6mV(di?l}t!U(Th1#b~z_Ft(C||SzPcKSNMx;_L*zx1H`HB%gn%!D~ z^TIFQh)o0dH2r_)Pu}G#L;PU%t!d~xbOgD4GvKA?7V>Li3jH|y^&9xS;UenK-sH!h zPw=(sDn4|58e{m%szQ7H*LZVV0}k^WQe!I`(8M}CK2QhYHD12K*T{vRvwRFqz=s*! zMCjpJueJA%!~1(LVaMLH*tBvYM>LN6?8l848ZeS|<(4rww?<<8Xl|15n?mKB3up?j zJE`rRw3%8jfhn)cerCErFz{nsLd#8ZwhOri+TZKMBtOuE!Drm(f*3U?`y8D*@M+9f zYbPgkloo$6D)?=$+@>4Y{^c%=%e{aTmpq5!CI-J%di;73rY>27u~j?q*4HQbpdh&q zstoBF#@zfu-t#pk=sv@5Sn*W5)=cULwdclQX8t7{WWzAhE0ebIMXRiKpRv+QMf#T(6{E3sKGWVd@aS|HyU0 zuo;{>9_9E>yK4@c)J3gwdx+cL7(M9Hd|ht?NS|L6Vi}1pLw#R)<0Z#=%QU^?xIEJe z=CMTSnAY@hY<$e`@=Rx%SYE83;JVZYEyptA*yFfiq7{$zHQaF~-1-PFUe7B;r?g_h zO=q}a&KoZ|N(=7TwAR%;q79oxN+_5>3?_0~_>vM%y11KL&yPuJk}G;`TIhR0vuDr7 z@ZrfTCP$7O34hs0uYrlbxLAL>lpmcWzm&25?!w?uI(Svl-RZqLQvmESHFb*3x zEXU`c?!cZ;-p6k0tyf3ZK05|Q?fiJ{SKnYeL7Kn~pRk-CmE^_^zp0=}4R=ezB26bq zGzjU*utLBU4#Tx?KSu)>G&!jeSn>G17{>8o@l)&2^~o1FwQ~!&Rlwtx6YzY5a|_RZ zcXIeR+|F;m<_%YybXB`rhF{(^s|#FRU-)N$FkK&34n?=Kssydv)nm zWO?2@eWtwk67miKLJ~+IKp?y=%68BD&V7G`nfU}Wm$T-6X04foXGuEs5o_tZB2yxDaT z&ZuSacW(|;+tA0Fw{A^7VC^m#3;`N(bISKA4`r11f58Xs`E-Im)Ie22UYnEh(r z=9?^^p71edYME0#G2VS^MXX!9CANL?hxk%Jz2F%y|8hd;*S*u}s!lx}FZ^Gp4^6%m zt)H&dFVn1#V_z|zSLjCWm!ThoQ&Kk4>tC1%o$>Em%W0Q~VvYQp#!{U|`js|xlI2ua zp9o=@s=Z_3L`+)oPArpux1Br~>poIHQ&_P2m$5|OK6$1?aaA|I6s0wJ+ddUia{({+wbJFYE<= z3d(n-2OCBGR8`emf4X!E@V(cfb=@a%{J@s@P*2q>Dn`XiKYvY|`v3H|BqP^<miVojn)d}@!kV)v%cQ~w{T?=`J> z_E|kBQU4!4C1z9{)VHk;#rC^;txPvk*IQZWFxM=P*Oqn07yFLIiCgnx*`nImEx#tc zwUc{Cr|ftor0v*eX?-DOW5KJxiYLbvTU^QKz0UtdJF$(7hfHqPINi*LcvXRDsh=M2 zy>KS}@5U2yj_T7{7f-(Pj@s**IQW&;1Y5CZWjyx!uVd8Uk+IT*X}G^E}hBI=pxModuUQ@a-kUR>8KMgU1(Xf!gbb zEB=8G$xn5@s7dBbTzdcZL?nfgRkM_#@GFEKNtJ&z$bO z@kgt%N?xVP6hu^T5}8}HwJF8k0_(Yc^E zCi3ofRbN&*j3!Ds?_LGknRxSqoGwhVe^LFi~i=C7{ zw+OiLF29~@0w%B~@JonHtIeF)GZb=!oVs?8ed%kj{>YA_;HVhf*V{7svTNO*MTPBy z??HiMKNWllNvelxkKTUa81+%Ei3Yvt_-q`oci_1_W8}F)T~7O3kJvfs?GW;mj+4&# z?M&>hXVw)}A`Vb-5n8@7Itb%lt?FyXEGj+THphZ`bE-F7!H(y%13#p+-ZAtczP3!d z3WoZz=>FK0_VFoxoL}JcW3aN&fc!K!1M_ul-tD~$SZ_@5!GM>IdQ2Ww1b`3 zjqtYXzlD^5$`ut>(H!KXNEiHEmm|JY3twR%!#X+Zw1?YQ#k8sJj|{ zV>J!zpgH*I*Lbuf1;tuGu>`wjkO3NY(a#M~R zVZKH2{zxIYH$ z8A@h+m&fIW?@?33FKBC*A>eJ zMtNZ-3KPU@okvh@zEyRW60afNpAk{tdy?z=6!i#Qs!4+M4Iy1%gQeq3rubN*`N#J<;X~+ z{Nhsx^M9$Pl4~e2mW{pO$Y!84i~Wgp4&cw6g0$qQ$~jvTi=s_@idE`*-@2M!1QuHu zzQa{UE4RLyU-Zoi6moEXY4ubMP>OukR5q%gWmuXnZe`mYpRbFI;!)v6;h$9wCtZ=l_iV|ntDlk+tF-jpsTKdwQ(uK8t3 zyIMh&vpYx2IOi**xPqfEm1KdW;$1R6J9$H2;{_XDW}m4if@yV<1!CAxpYQ8({d$?b16;HDS{9s| zlpA|y zuZ`KaxRoVZTLjMP39oGuEq>`|X!uMe8Aa@RR(z(U0dZp#e))B|$cmI-FG@pS$lD4! z1lvDxL)OlRTt!8y3bjFl3#oe2Rxj36A2vc5B|_HPVbf=W=R!2Dds~^ZRQ@c<@OWoc zG6zg~X|BV~|%Tk47P-8j-YhoDY#@YB`@yd|ty|vph1PnI2NuQeed9{O6U~W3@A)of&eHKaPG^6FPKjgVm{GFmtZs zerEN~l%vf+lYfxrLr=!i(Wm`ic-xFYOhy%utw8RM^A8}(QRSCk2D4hJEXjA~L?nJ* zIB)9*2PSe9(oJ-(T?HwMlBUZBSAF6Mx20Vn`{PqgPk?Zywrg=kZXw@#A+@eVcL<*D zz-xDZ)X0fzHRmU=+>UdN_+{$DlnQC(d0C56jhPnAabq;Cy+>y=(Rk4bT;|4W&M#0c z@HE>%vgUDr_ouDVqyoE23A?x+$)m~(83=}$Hc1T`p!myJ)P{#@vW9V)aV&k2SqQ0< zjc3O2|A6u^K}nVXLk5}u$Jb1uPr?iyXF-GwhL($jZyukSCCdm`&D9J>XYZ#um?;)E zYiTB^%!W)nT*~F`2uSj5*kbXY3OPFuE)7TjRbF=LZE&%}2&96&qArvt9x2Pm@902W zg!Q;H2kgs5J&HPR^A`QR1}zd2Kvfg$T4Eg<28j6WyON+ByF)uMj|+++&wrb|(G~#0`U}C1vRZHlDEX;Bv?!&0%!aN9YWTY{G7ev>ZK(Q>z2BK&mSS@OZr(BGl<($P@aEeLiH}?m2f zhfQMB`{2Ggea7@}#K6tem>}Yg??7VhB7EReEsCK+E7XDuTb;t)s-L0wq?0e)JGKjU zaoC0RGrok`fo;_#=A|xn^|$$+8njnb^_b471j){-(Afr0Q@hxY3hup_YMkC`-?-p7 zlTsnRXFfitWUOWEhkmxsJ|mcus_dGxaQUKWb}FCVy3F2|^9iVof?n+pPYYaDkdS?F zL5wCns7m9qeAaf$WE+K0$+UPPWRZjRR9d}}vAcgtFsu66zwimQ?OQ`_^)G#d{#j{} z?+zT|4m`117Kh8AWrXd`+Z(>nu*Z6c1{cM#a&0H2yHfPZX z(f*cMWk!de1@xsB=bISA8yAfS6dmFf3 zZy&Z~_G)JTFKGp6Ka^IqLD>CQYqyt{y*;cU(=I1;LLWbblbE>j&&`i9wre@d6YqR!0mt41|(JEiLO;F7lkM8hA1HuYKZ+-18 z`S$G;aM75@V=(v#QhDUlWv65#538@xZk%F_pEf;)SBKk&h%sW$hkP`T1iRO}LbBLM z$(=fIvPd>*QwD_xx-})`vlv0Md!1r4J9E+YFH&&$dc1w%9Y4N6iX1&N)inu|$tH~- zk8Va^)c*4vR$8*5lLI`hS_l${jwIDsO#>LsZ>?4>*^Gn1mDG(iM8cjkNH3m+%LK4sT77e3l28STxP+6Kjp`sYQ?F$ z4XUdUIrJnzkfw_hDplRn0r4GomZ6ScvOE8BJF>Jl#InrhHfIqM`dEmV6*FAW}eWnF9};_`tggV<4ISK|BgQ#kv)^H6B<640(AU%=o(KnF_NzJ+QWT-dgH4)|+$zRc-Wfd0TF`UB}6OEr(+%0GvkjP;I);665?`tuQ&&D<;rJ_AMI4RC!qyHh|4 zYT?R7QJOxvjpR6u_wB)q_RCAnNZX&?B@mlw*7S(XaWIFdd>_yazHE_#AyyZVt(yf2 zKzmN42CS2V1=YALg?s51z=>Wh4kw;ksEyfK+zQM{CH)f;?_j>5mpX4o04l02oV7MD zM|gf75e9t0IulidPMuP3$SRx(jS~jkWEuE$={`#2O51ZJf>?1VrDDHu8uu|_HR=LX zXKGhSv|t4A#sq}+XgDH3NAM@&oyx#^x} z{}lw-?o)>7y9p2B6;d)$DT`?`BL9#eszfbe^DtNCa6}WGx z*4Yk{IBd6IopIW}3xe!6NGQ$#+e_IG&+fJ=`J6Qp#AtqXx+|MwN7e-NW`j69*f9EU z&6(Y2q{t%fstf77zI;_*m5 z?avP;JRwFDuhgnUaB#iEhbS=|I8MHRw+QsY?3&0 zA&)?c8sY_TCp0LyNDJZWv&v(gx%b?~y`y=Tx1~%Hn52jlksy_YM1;DVZ-+Krtj8?i zX}GH%BTxxf&$vJ>zLab`oAfLzVW{)_BWM{$q^`mE;*L$ z<#BgQ=JzPm ze)($Xlq`pgmty+`s7v}nI;SA|^rp2^Z>+P*Ujf!uGJz$>{(mH(Q7|$HT5%DTgkyLK zCn+nq&P6E8Bf!i;5l$zMifAasubPB)39SfJ4gbQ*Buh>}hCDdmnWIGBPr{G?^4UWE08%{2K_UVUO zd#sj=ASMmrc~O**m$d+PB7YD;Rnp@-HpGpKn#moJF9rtp{@zb@FhBe%pWt;=C?|>T z*$E9Lo`M{HzyV|4oVo6qjt(X6Eq8dHN)W^LbrFQLdbDPut zCh{jqGvW_72Ysuu~Y?oby2uh*P?Q`Uv&JV`hU<`XJTLoC%yc zQt*G#qh1&(JyYrXFY{-7$kM0Kb(Bo{T2zKP*irL(AP~|JGTtGBCby$^LMK@Z7M=L? z5=C`A_<}B?SK|`DP*A&G7Eif_3mIRXTcXOuJiSa9W}Rh?miEI0-#!gAFiXmG7-lOD~kc zP*d3Y8;>mJ|32a5A;?>wX6~(Yn3lQ|)zQDxhdNwPu!z@AcZy5w^s;OhYWI~=sgz7L z%kk9FaCsj}^3j9PgxY(c%O@Q--FcxNLc211H+k#K)i8W+!ol4HmTZ!>If*?U!<m zox9*&wiC4lM)PdF5OL#UEv`1B?#Tjj5QDEzGSQ4@+5+jI!;fG%?wg-57>%}RzpyE} z?WI%%SYa?JGW_cEeoEcVI<+aD&}N(E4&T3Mub^J^bkXWXP(rIM`s0A>MEy9AV9~wb z7f}&-=rULAf1k~{&BT-a)Tceo`loMs;E1bU=DiPYqdQgE*bt?4*{6mqYgs z9lrkuN!t9zC;4x6xy`|$8go*+3rfrO%xj$I|BE9z^gkT0QP2IZ*0${y637Kd@F@f@ zHZ*5R3~FdgNj&FE!3C%KG*}Lp8Crqki1m_S@+$ivK6scVGR1lZkVk*^oo?)oibzF` zmq~(CQ!)4>Kzgnf1 zFrl>i+%GzoKk{nHsw-^`;2rd|3Ls#3a?r*lesX=DT$Gl3n7vQL-S_cM?KxS3e02FgMvj{!o*oX4)(a`ew6c1FuH@Amt z>1hdl!5vz8(->u=zuTyj8!5E}dE+_c>|3@V3U2>dg3Y|&$#I=j$R0N2lO^-H2*z>v zD~%iy+c1Een&)S1b5l7E*HGkZwTxOEfG)T_mOvCEl(;w1eF6W{rI8o!XtE+3+usrj`T^ExaJWh35e_!X0 z(}1U@kK>o0nQ=nN9|jHyHX&WmbTl8LK~x%oBEaW0^ixtZwG;(StvOSiEiSU58U^N= zj+-)cPhxGzaz9I}Vk^`{SXyeOpM`1K`gtfGraaA33ZB)k(DI0 zXq@;Kkv`a%k#KY+lS}EV7K*utCv{l^-nDkqmm19RWEf?+C$WjcNz;(icBJ*&zqHE4 z2ZAA^HfVnQJLNB&>dYuSza@db|RC)7)heCTV-}P3E_%}P!JVB5r%bYWaX~Qdw zho)`Yjlm-@)oOdoL9okeuVgr1i)*js zTN5=CF@xCVYvot;TK<5b<{}(Hhf%8bR&hege(grIA*0yfy&p~fTZMA0cDwCC23|>d zbQ#t>RQsXP44OhbmN|~Dng6L@G(sC2{i%;G^p)0$v@7_Jg_;H({+`v$B0g)%PiIrWH>ztZZo}1SPJ-quy5X(9B*RfGwkX?U&84Yv zbH4{tma}rKe;_OHwVoMS{Y;{_55M%UVkPiKR4IryHzsMlxhp(Q`@;r zU8cQjH|jo9-9`~37+4*~g~&-+Q6N@O-A8Tw#%5PZ)`)znS=%42O(U1}N=`vumSd~7 zJjf)31!u+B(BCTxqM=NKse7x^P9p_p9X2{M^1-~Dl$Vxzd>!_MAYH|Bv@T8>6;Oyi zdPR7zjJvEsdViOQru^Npc$+?8Ci=#!LzZj2=MZntyqlA~rVa@>Fn+vS3U`US7n+1q z+?v>1Ci_UREBJz$bI}?nzAt{{dw*rF__S!-$~?iTb^9Y1ITHQhrQVJHC*O0n@6N;O zeO6y(L{1i~b8SCJ1%`sX`moSm;jWn`!!AjP3 zKq_;}6G%Jyd$QpdgS$68+Kpg}PaEB*G}Ydk^`oko+QG`I!3yfayKTUrBnLm%nHT== z$)I(>7F-DDC>5t3@Lz#TyL0T7&?gbb48@DFuupfI$8Te;HqkQ)L6T@B36D-~0>unX z;%+;I*>ueyJRpQ)Nvzn-xAl7lY#6iJBW?|M^WBAS{`|rPp(ciwZ%s*dQ(lwHiyPKT zWD$`MII&0*LV^j56rM94SsiWzRUrfMg_~^y+S-qI=-(wucJSaUy6rdXAUJ_qT8%;_c;yQ=!pu4_yk8-WO+t{!wDT6(<$8 zsK?#Z*ULxHbm1r76HQWPGu|}rMcbRD;F_DW7?3jh${_bYZ2Xvw={o)V!kn{f9Kx-h zhd;--TVQJ;NCG&w8(^;Ukfn8v@Aiz^u{Qiol@`xQ1cI3eAv=T^n;x($CB_`qd8l_8LGhAoe==Jkw;EZ= z2zB+IEhT?{6#mU+`L}!c2{;K;?^Y-}V3T4eyq!No@mu%%vAe`Fe*NPu%`=)s_af63 z@n>;~@_in?GZ!w(3VU3QP?L@r^!%XAH7^(mZuS=3MS7ph^`B~-eA*rdCwm8fpb)A0 zpe+wV?RQJ_vkPvo%j-O0_bJuPu9DE>{?;FTPQB;LB|UK5ne$vGus28QlE-If>(3_% zxXp$pAGFbDM9L5(jk(%7*j?{NHR?ap+@*EFGXICL^2>^EnCC0TD3(q5HfxXpcoID= z=`>Z261JU=nZS*3NwXQVz2S@vrD2WSc-%y*0e{+gC)$t?5A2VftWQYr;QPM9w4FoL z1WE(Cd-j9~WV*Vb2hVyh;Gvy;?0lBwPPFrj&MS!{0IHnF{Bh%h)J3lV{Pv0EAD;#~ z(%*#^>)Zm?Y7h)!!ze+rNY)Bc7_}8DarZ&zuGf*Ca$(45S(Y&E1NU(i&3k5sGleZX z+_QtlP3`h~uoP#dXQ`1yW|cYH_M)>n`ShUu%A*Fn0Gv0gIrtPB%Qq&~n;vQ%!3>RD zTS-Xvmo=7uzSnsL=HaVSXk3q&eqH! z%jH3~7K+w&5X2}kq}CuT>JssH1_ZKwHLRvDq*1C`)jkE9!j608f4CLg8`Oa9{+U@Vff#{X{}k@j}a!>lN-iN>pECEktnDtyt(E~_v#<9q9zgjrb@7|@wlpH1pX*%z#~B6)NQGh z3;^^{y4EYS6Hm#qPrn|tE$Cuq8@BUHDRXHlx#^{>uGMOwR_eU)1DxmT>CI~tA719 zS&GAhWF0b~uSwHo7ZfCZbxk{hf<^bwsXAfQ?UZcUnC-3>+}@W1@JvBSI!%;$5Xbwb z{>ERv_6eP*;W)2_h|8TLauB>x)hMMqeq`HlSe}Q_hEJbtjSPInQzs<2 zFh=u6Ml0yxCv&a+!E24aezl|vI`2o<48E6-d{}8DoWw%bPg!|z+?LOozJ*r=j4ag8 z?8|X&x5Xe9Sj2<+$&1uAz4c=k3&Hx)nOU|%m1D~XnJ*r!xUlct{4Nm4$JqxRY3~te zYj=*PIjhBBWR9v1LWB}V_jK;6;X|GT55pJsccg;x(%XTwETGj`s>_C-E&OUN_DqEZ z&dkX5;>fMfGJodx4MH8%MDj-9?nJTR?Ir_|O>X8Hxtr^@ljDOM;msR{=(sA<3`)huy z;Ks&TemIldtT~-^BqN%4>wN&D7}H4^`(%9Ffvh*>2UHM?6~&f5p+wHreZD4?YKMla z#mSngxoqQrc``eU3~wAfPlbs7gL(@A2`-{^0_ddp0EY*UL&D zN{qB!fb@Pl*7el8+alI(Q>tYnL3PnT{il^@cOb}!XPM*;plA03t2 z#Kv8~SHy4J_Zb`bd@yGrNExLddnW1^OX^2nm1-|wq(UAwSM0u=1?{z|KFO{;=XW!E zP5-lg;T~$gB2JKbyUz5QzJ6sSslnYe{^$b(yKEwVXwFH{nA{u3~FLWd6wqe zq~vllkh`&4jb{cacic0~BS<#X6!vM`4FY*s5r1?DgTuc$wjW88;P*?_oU!F`gQ~|5 zRQ8OS2@K8DwUTFT32Jl&dAFG~`42fzLV5r`*=W;=1Qk+gopP(aAd`iR2##Z8;M-18 z3kG0^T#TFD^M&xxsQ&(WwMJZ!?Q3edd4TBv>?DC9O((nha zyX`?G$@490JPmkMlU6F^i8JK{65!a&0r8osc%=#H1@6Ao37!+7J`8jvJ;=qM%*qu= z>=q@h!RaJ9lV4f@@g^W|qD0YT~4`NQnU@08ob=_VksfvjP-WJ;X2!pc`R4{?mo z#8d}3+h674;A+R|IX_E~sQ^T?dyj}Sg6OV{qrp1b!hy%~#4!ijlSHPKrG|p4d@ylX z*iW>_;|oFs0JOeD;D4jo4t|y#a`YLgKuWeyM#viYI{PuQ)_)G)^>J&dWEAmB6SZXT zokt=xDEKV+m@C!F(mfX4PL?Q7UfyP8O740ysb}319sE)>vf1LatYoKmU~g#C2L7-> z=syf_#Ad2XNnX#+vrIUyS-8Daw(|Iz2im*A=6|@+>TaRjXghN9qcUhSmUqTix;CUr zZa{dJzX{pGt&KG5>VT-lp*O%=n>J4dpn=1a5c}dJF2q*&Kz2YAq%;)S6kK1U9N8K)YtChSKLoW{} zY3rPFGy673`X9y~SipwU+MN0arMH_e3jLji6m;OLLJC5a6Wj<|QzucnkQx8X#%luf z3JD3LvF?TF1k`8IBCTKtZ*wJIAiws3Gy%V#@}G>F7w*fA1e+PGU~WzwPFJiJ$4AD+ z+l#@YFN|Sv%aeaLJ&BGdJBiu+kt93n2#@V*(wf39p6I!-JACM<+w~qHu0sl0Uak^9 zI38m(9rrL(MO?B4n>fDIZDkGEjcj}VUHyQsUKURTcKAsP!icS>IU#Jj6z)`{fTVcr zz)ia=us4S?Irxke@ae#?ogOnb%yNAV4jz?iWzH+tiPA`3(ShhlK}NWK(;Ecew9xja zSKn)BB?!kc$M_cY=cihQD9!~R%|C5wT4D0WbBIe#)KJm)ooxuYK%O&J|_`)TxKf=7^ z&%a-tY;e;;Nx8gxPO|m02G7>NjnrX`-RkZgY0nq-=Cf@Q<3c5$KY6otR|Xg5J%M;S zsJ7hF%$mQf+}6Nt5H8a7yTpo_O&_RBq7F|ScIVWO+=Uu+E)6G_*e(WShy7K$u&XQ` zPmg2P84+SLxpf^F_u{KZFT~qEiB!Lg1>H-=ZxzueKA~@pS;dWj?|NtOrjKKHg*wBL zPlOrFP@xVRpnOJ@88ux6r?oAP-7Z8W-Rrb9rSu;bi4*fGD+92V_}<(%^Ch}fU)P&f z8h8?e#TwnZ=lV03wi}d(nNx@R6AtDBz!IBN*Mz2$O16}E04F%O9e&UDF?&R?CB;iTUy(HH7N*WFsyligfU#Gt8heaJYV@9(rFD zllYz8Updcj^ds+_r;3~5KrG10q#zMi=6QmStE7$Ayot|E1jO*~~$zlNo*D zLSJAYW0TdiA?3yJjXB=~9ha$U*@0P!kc^P+8J?vwQDl)9ZjZ-mQgmE&OB>36d%3Ym zsGj4?AUbjQIqZYJWyxmB)Z?O%(C=<9z%pAqj?R)UqsX)xsK0rNva%#;7=LB36Fk(*l zI;5=%jC68o39Oe6;lnHr=)Vfh~06WViDEmeEk!K#&)MnHJfGC?6O9^|=ziMjynHJN<3{ z?0I_P4u95{DBAw98|)^NwYow#MD1R5es?^6>wPj$`aOod{^W_OrXg3tIkB7=Em7cO z6kcU#F(O|&V0}4C%wZ`$=X`5hz3e!eD=wo`WR&&;V2Tiq?l(KQ?yAxJ`KVNeb5ntj z;!7F!V*n06!hnlH|7sv!EMvb`5r9`;LEWc6QfQuG82`UtFAsM0#wBX0n!7ss)pfb?70(&xKZC8US2z+=kR%8s zE=E}`dJr;>T7#?b~zi5o6cUkra?fO zAtd7eX(0$(P^1rf9KOvu@fanz#E3WPtx$Yc6M2mt)2cS*8=1kuBj6*iX43$qgR(R_Z#Az(a5{A;=I$B zb<@d$+$Dz4ByBP7#Dj!l!i@+hTX9VeTCD|ft#|MeQk-?=gkg$#`Ekm95 zcckyZN$b^4QMsXQEDG03C;dueBsncdP0J-jR_4~IM`qHrbFQuLaMk$UN3O_?cx_V_ z&9UtOmoapuBUlYM^xsg6c%eLP#DNnyD5#rU`Ox0A4uVP%kIb{#B=3ym+vVl$=mgOx zYYz!;J@=jeHjhm;<4+rEXH7NStBuhTBZ&t*fJt1}E5>HLF*@1DX-L0WyZzFiX1ua5 z9-(WIryoXc0v#4Zj?3I_OXS%jB?F}`)6`^`|3aLunIGztS?R+P+rBTu}dxO1b#?Ew_a^72N9OuH;c^Z6vcO@%G4 z@kE)C5RQiLbaY!%rz|!SOkECI)VfsaxYxy5kj*yi)M;_EGY;3hvp|$dii~GZ%l>Me zapArI7YYTVdwYOg`Wr1goAQQ=s(#7&Axr=$M6IJkpl@@ft((t`l0c^FoUnga$t$5o zRpuZM7Le_Dn3k<$uzl7{?afxV>`P=(&X_g74KFL#&uin}m2WpT>woG$aHpM=rKvp@ zy(u5Whs{f+rtURE7aavBYvnn;gJdGQFU^j4VWOJ9ZIG;5)1zEvMc>R&3ILZh{|_uKv^YsP7%k1Y6a;8}fb>*Dn>?MOWgP1&B-xWgRuNG+u%krqn-#*I? zRgQJ#2olqj#-G%c!^T11#fz8%eZV@n3TQ@Duh`br;Qh>9(=J2$gn5$7cO05LXz(wiMG@muItAoo4(~{^wl1Bfdo1-^a6S((kQ0xYku$=`+|L-?Wo? zU>Vb`{~6b-Nt~W)-Ru{Y_$>jQt6b4Ekg1U^{+&MsR9ie!Mq26gyVLY2l(1yk^u!Hz~CQYu`@))8Dx>HjIAx zvq)v@gle=iz9u@x^UwQQkkhk?@vCK1Lyk>MRj~!W-fw`x{Qy}-A9X4%^|i+BbpO=s z8Grnv?0CP)Xh{d31dJbd{JmdK^?;GDQI~P>>Hf~$Ya6-ht?Hb)&p|)s#cu{zS$dBv ztuDx5Q@`$XCm;f`V$?VrD_^!+|FQ`qCn600nQ1|D#-7>V&8exR9o7`XTOZ7gA}K?) z0+k2k1l-4nni#52dpx(%EzSOzF+|(tk`&1(r5ar-@rKH$^_7u~&s!^ZIhM=H3bz?B~Cp z%IWqwyzaB~sm#5|5PN`0YUHYzJoF1DWaFWWl9$oy1?gbh;Od!XK_P>&mmnLL(O+=? zt|4BvD8Qa$TvH(ZGzZT{WWR_ywqK+2=q^_n3RQY9TzjKNB|d29SOdoA$g@?qjI%Gcc;5YS(=odENwVHP$}*ev~r={d^6;0C$o{5 zEiSDPM4dxE#0pUXwkOWbP*G+*ah6GLg4&&?pJI2KZnx3?#2>nBtrn-Z$b{_df95Ua z80HY*`iYo{vj8Bp56op#TCN~Snr+89C8OhF6?`;<+GheV{fP&S+)Y@T1busQQvsIB zr4H)e$n1_I6u%4~VZA2r=vE%>#4T_oSYLmb)n$IBa6!q+(hab@&4w?UJBb!#LstTN z1PtR7JL9Yd+K%=LCxVQfYjZKa8Jj&(+St8piQqx)1HEgyMN9b!{wu1KuRd0Cb#%9N zle&8n&KvXe!yF*gG>xs~} zwEUWb`5!e0+XduF1pTU6f_XImP5>^s$j%r|>B9Zp(2MJsGX7QeIg_ZjdhPc)X(wY> zV2<)t9v`)Zz~OjxGlQ~5wI)w3J9YH4)nfy5*I#jWB-?}r--T~ed$M<$IEwV!PPaAF zYx$(*z3xJ$L%Pfl)?V!41l?3!c*~3{Z@nGJ;

    MzizmeR(LL(GCyZpG;E?4h(~< z!BkagdzdaB)!3IQ=Ojt44a*l6>SMvHjQx4K*~tNeK96Jiff#(9kzA0XG&+_+wc1gm zqZm=l2ZpmhBa(-w>O3=>3Sx`o4nuc{W_M1UEDD6TNB11}k_)mU>&VgRbYlr9Hm-W# z^kkQ3GVhX2yY9#EGTyGU#OMZ>*F|x53YAA+23C`X88$mnS&A0%nW|3J!ZRt$)#mXf zuD&l71Kb|u$f{}%7++L7Z+GD<;2Nw&yPrjeTS~Zpne=eKm?BZ~}p%c8> zk|tfOVpq(AHl_u5i(XWtb}|J z;@fFAvl8L>VqQSb*Q**n&y%T!?YZuH#enHIW{Em9i8Dy#1}N%myvlt2lb-ym23EJK?|7n(Nnp7lixBWYtTmrFL#;IG$&A<1L>8#TUbcwp!~S z zYa~&#s*yD2iC^zf*z2b(W6kO^@fyKT-7nca(~Zqg5Q%WkPoOS{IpSN=ZUiLDC&jzb z|CQfttScYAf2JMsa83dM>;AQUfJ zN^vIzf;U)kcL-A4-K{`yFA&^Nyi= zWS5mzg~K;Q^E#0SyX1?6E@_fwA<+@M^Uk|%K6Da~-;^>Os-Z-EfT;%x`TBdWheP*v zdwt57-O}NvTv3U~>G#l37s%0m>8j~pKP&x4z4nA^E^EwrHH72@t^yI^f9Uf=3w<=joxenB=sQf2|1CXnUmNcU zjVTlvc%0$dyH!Fr+6N2_ZkAU9-UIlc%$N-hK=0wq2tloK1k~*m153F z4Tf4rE9wHM=rOJ0Q%+q+#Se$9KNL@GuEsDt4!5XTj}DwfUdP`BDS{huuJIgv0f%Ov2UjH1YRlNnX()7F*$+CbA)jqptG4)#3WQHCEde)58 zbJ4xU9&}Gzag>mw#b6i~xWz;8AB{xzt>V&>ocE7&Jp;SysU1dF^8aZ8e9Ct}+gv>3 z^_bnLF#(%TYcGYBQ+;H|H8dpUHScRZyVY<4rP#|XRMW&^z>`(s}T+K zsNzl2S6{$82iq@ihz(x=8?qxBoKJ2EQe1{Xmn=;gDUqT#ia2jo@v*OOk>ys4sYMz; zW0co1o_^;wg0mc&UAg9As^#GJ%vnFLPmNXEu8T*upEgWgu3~lC%+#aE`S`TPD4Bfs zyA$!{=@|EZ9_kToutX^WV(j%uCGkIb(XP11J{q-#b#&$aLossb`Oa?eX)nXDL@~$5#5HbD}@L+ybu>6 zR7ZbHG{GCAQH0TGXNZr-18&nbqgt50AL)nLz7l`V`Fn}5XKqiCHo^_Fvapaj6F|W$ zK|Cxqj+$M2_?);c+K# zdHo?jFCym6Mx4pT3jOpGfdXymXbNi@Nzva8pk4fz`NfF=LLjk9KjEFnu-5y^l_Fw<2Bt$huJ= zQ9{wMkg?X9YFbxzf3Ke1$`iz>t$ zh8oqchu;~Ck}sZUKOy|Ms4rGU(;LkxLjm2QJ2k_~=^I;CwjRDd+s($k6S59{lpFZ{ zKwl3AeBXM$H@gC%`}=0abxQxJOQW@c)&|P)-tu6zVvoc1o2_yZv;Jdm$o=osKc|!7 zDUG)~XE!DfLocs(*_TFLjiB{UFs>?1{K#M>3;F(~>U#AO|BuTq5274OO$f#rjmyM& z9){Qx@Z>k`DL!6QAx^7+i)-U2v(Ezy{P(fxJ*x!o9d-uL>{Hv4EC3fdQ6>-Pusy#x zIT~KarVJJqoUgs2A&aFOU89vMd!&+r+Ivo=1|{#)QeQuFzb}TEX-n-7rlpV#gs|%P zTOyy??WI`L9+1w%z_UsUas6KZV6|&5v!P<$D=&}B(y$t}HqvUS1i9EXO_)=$YkwL^ z@p`avMKlCKDk^1k4Is$AvngL$(jJgain#_IEJ`%|s4~v#FgDC>pW#(dGxMQ|F%+lr zHLByY&srwi>4&P~R#x58^V;rClo&TLU6oE=X{sA`3i~`NP8LUJ0^g>O(MBT6eTgFF zpfNvId_`PO7OC&l45GZ#=X%fF%hyL`rQ@M?I}|hF4HJJSSsXO25%053HTMU_PG4^x z2&xp3a(b902%3A|zTJB0)}HOIxpEYzeTF3OG%X13m&W!0qe?n;k?Ei79|Xm{<+-<8 z@>CMCXaokbdqVc;Wq7fn>*6xcy@Sy(zjx;^Dh#iF6O4||Gk;Z3bD83pRE#83tD=zO ziY(O|=q`WII-Bm)c$lMaB;eUOX{?;jLb_oCS4CbucAfJQrfk)a)04-*+$mL+Z;o5= zN3{QlUE}_{7yJ+A>GKPzSe;dD-2Npyyous2W|vflGXPrvJQWYoVciks&(_?>a92ua zq1umsGuYQQU54ze(<+X=8b1oTJ)Z{$t5W{hhtHr2YeU^GhLmmg;PvhKy4Azr<0*7$ z(-L{ldxx;x{E+^MvN&GX7Ncz1LQ2-NkwEj7ObrWKLj9ttUW`>Z7ws3w|gfV zZPVRret7;!8&v*3Cu==rd-vQQvU!wJdjoYto}ED&&sYNTe411*v@>GhxR&{LXC);& z&Ywt}B8(zq2}*FU5?Ub7;c>HmGupe6$jTBHYUIuiB_bu&sXcsL}dB!n%v7erS z3=uEkDse&HOFq6&*Nd*xapk45olPYvlzFO|Q3^uhLpxV0sVACGC)*r{(6O7b4v!R{ zvbh-e_x+7UB5}5CUSn^0@3Je4MTGa{(E>HEyoa+(y)_L5MSjRkUsIt*-j@~XGVM-K zemM5FFJ!#1UMg6EJ+kse?=xYtQXET7_jPAR9S^?U4U=nzU6dhqRo{BIUiCrU>$%HY zjXt(a;@3X1vNi_7;|F&2yk66>7<}AjjY* zIbxzzp)RZRWqf=_0Mi1HS@49L@Z7X<$BxKnuWCsBBo zggkyk5pVnZnIRVL8%^>HLtaio^{EGVFU^j1eck!wjW{6dypbJr6$QBNePRDW=}I~7 zzRh!^FDQIkPxB|>!~WI>2b|{PRng4Y%TQ=R#@KmR&l?QHk|-L=iyUsoxE}+VZy!Mky=au~@7Epv;C zj`N7H@%SDWmz3ktqIarFBz0NmvmpR^_t#5EloAf#uQrQIszz1H%j@J)AacDh!z zRv1{b?(q5$y(@#M^mc}eD_b;|RVDbs&2V*hQbQEx<$ERXu+V!&-+&j6CttSKhtqu^B@^l#O--yg_yn@u#cr0i=11{?M^1Gyx?SWj< zOSjwKsX8=hm5jVZlJ@qfS;>#Tv*<#_CSeB9I?>6AclTO}Gf~;38t~Kjb{^YEeJI7N zDapd_LzsQQwL`dC4CzWW8hU1-)=O$d4K=CZM2$ghG`8Y+GfP!CQcO0zruukS*wVh( zLBn@rMNO>nD5t(U{^zZ9syoF$I-23gG`fz1XQoU}rzZZPP@AZW5gO(=>2C=o(X86GXi zi2)<8n7KjB%)CzSXs!q^T;1`gLxotcbTo;8t=mrL%Th|Srz*>5s*7EAv05%vGbCK! zR|${?8d**i3j3U=MN2bkoXi{u_{S$x#zP&&;>Io-sB5-b?tQ#4y^Y(R3nuoN&pti- z0!0^OS3&o;qcDHHN^L%QHS*->bI%b9KG(0)1(c~{SrYZuE`UlrJJlCUcGh!p-Fr8R z-k|w-j*a?44U#rP*Tm8mbYQlat=HLF56QxhzWP=nv!`W^Qm^TtxIx!%qAq+%`@4E{CKo0nN;i%Z6isTp4t9@uihrn$1@$XS~m^Nl2a>`Bj-wBy~c z6Dj=IYvZoakKx>+PEKiJkr6!Eg$=4jI9InxI=svK+d6IJ4mMXXBBM5n_kzI&nE`Y# zBk?8iH;7`cOh6V~YDkoVyFZSR^$PZrDvw6Bvlcki5B$~=1?veUM_&`;F)k%yUmPdb zS;jgSME>$hyw$we5=M?T3p+XbdX>doEKgJ9n*G+O`QE!qE*AHu+BkX<0+vLjC(|DE^CvKV#zwoc=CC6! z?7;nOzO;p=H61e{)U&(rV_LqT|4$7sOqD?1IdCM_O_%o7$8?4vRQKodeZTe=phE04qxh`Dp>w~jmbD|{DAmb&-O=`$KXkZK2OL{Q z^n`ZD^e%R{`~^!;vR2pcUQW(Ij9kjyH^WoNEjRLg@B451fkzQy9(W$Z;re?)T2P7a z?MK6vOMnUF7_;~O>iSjFR7HJvF3F&Sz*SFuh(okEZA54X#J#Fs$FjA<(6AA-FwecA zy3|Boev;~{2oK2@ipN8wt>65e_?mLtovFmS9wd=r1UrBWJ8dc$OwUg|Px(;CO)k81 z?IJts>`%v;iPt6av8gP(en*o&dxBQf)wx!sPSDX>E@n>pG6Xy~p7SH&xS3r)y8j<2 zc|Gm88GmJ_t-!8Dy=AAiy+*S(TjHw5;oARZdq}_z%`m(bF#Y+*+fvU85hYp`mi8u) z-Jt|TQ|LfweS*y93Qx!G>&$3GGYCdht`S&#iMnnx+9zCyDMz)H_{D{*`bpJ*of?BJ zJ)I^b+n_qnj_InE)}!foOJW4_j*+11%;3092zO0F`9Sn{xXJEz^^@lcXpfsIJX%6euj z*0I{-XVGxCUws*wRx6mDfyrqs&_PT44g&9fWQ3*9#q?)^GTv85pMfqF?cbC{9;kY` z--VuaK3zXWSC73pz|Eg6ypx1_$~W}a*ihicmH+0VrjaaP-an}sySL*oTOguBLoRl} zT~a|koDMx9c#wzND{_8tY)7LQbC%cnAdJ43yKt$ca2(9fUl1>=l=ObjN8uHBfRNHi zo!`IvdOL&Ys$_0s)w#Y%vev71$1TNqrgJ$WsvQ4i4^fBX&C$7Ei>mH#DFFrvB%VD3 z)fro?&{u)1ZmT=B=lsH(Q~!t}=HGJV@MsU=yNJ}FH$8I+R=oVTgyF%yKT*ATf3Ws{ z2lHaGFAFH2gm)5-dZ=AoMvt#&ytEEErEk~)1!1Kgv;|gu9$;hRaF!8Hej%qnn&5U( z7_D=MT>jGtQ8`r4WDM!AJ5dQYHNOg_?GDXa-MU=?)Qh`jW)Q_FQy0cOH1rKtH^^T^ zgnMwe8VOm;gXYFA)P-C;UQLcoH}ZCI1Jqs_7$Wc`!Af2p;9*hNOxX&v0L-Io3y|JS>WN83;Hw<6C>25@maP40Z~ z_3%%pSi{~YOepN*iiYm_0HKN=9=MSWNZqXgadRkLkT&}kw6oYsvg-rW@)#GohK7uSCw_%D;0BTQ9qx74KiMS zY-kYfaM6bW_;^|HX8ITGX(N|f$C!=rxRyf{U2C)LXw9$};s93P{t)zbJrg(oVz(!5 z@oap&rt`wg9vWJx*{Q29HP$3>XEHJn(a7u&DcYBY%U`npdDs5?gT*>{Nyqv_lGE8= zCkH^j1EpO|U2;|b=3m_W^UW9SjwP%CWhXbq#!yyKA$UW)r`hOP=H7OL>6ntJgc!et zgec=bUkE$CgCSXCmb*|^_LmP8mxNY}j}~f&%k7l)h>*1)Ob)Z!EHv%?`i#umKggz# zLEbM9Aq0~rf7B`CEdb1h`s*VNOOWsDu_+Q-N2qcy{~VbjhwkHZepWdC3B1%SxA*Fh zm?gfOPF~a37UN24yZ!pA)F!gg_*fbA#@o6&;d{1qlluo(uXeEpo8~SX|3DV5Xx5_L zl+(oY8sD9UKXsMDa)ylAzz2+K?lZ#|*13JDSyBSZ`ZU~v4$v#ltD|%vwGs(D#eE#k zHziQmNZR=`=lWTz#;Nv4>F9N_&z3CNEz%>ULn=i2ho0-qFHTCQmtQ{qE3B|yWaPEE z*%S79`0jOHEOxf+kW?%JUJCKH!k_2J7#fPJSbW2gXIO06$M4Nr(eZ_{alsY5oc5Xo z>j0D@B;at=5)1$R@lt-U@$gubL5F@k9*e*$M!U-~BcQA#a;J<+YmCIFNJwoX{YTZp z3c|&tgS{g3sH40($0Z%+uzH*0jXAFPaCke$J;t(Jj|Vb4Z(}w4o3D{q*Zht}yj}E7 zytONN2*8O~#4N2%V$$2+Gdxvr9^Dx#3$ph}n3Na9ugMelhUc zK8kjp#4TAXA_ITRL0r6$f=j_$xxoxc*iP_nCTu&{lv+s;pM zX;NxrGjJQd9%{w*V~J}ol)7V&f<~?L)^Vf?@Y?t0A-bvdu3T8`sGdAOeUEx!y#IVq zSN+v1}bHDxyOVa;ZtNM=vXUVHdS5M-i?UA}zN z%9Y@|a#mgGxg8FAG*V>wIp@mud| z@L8Qzp(GEAvAm-1iix=XI|-XY8A=Op%tY zgInyg&+Xu~%SGAuW@2SK4)X(h60N3~*WVIHCAO%L+zFlZYjRPT{tbHCz|Ch7FI4yb zXVn{(Hz-Dq2ocwBCzWLzMyMV!)WX<-Zmz|#i9e4!`-$8 zEjToC>NhkQGkCqBc9~YM;*{~Su_;e4f=;%sg)v5d?~5(?cAo5N#pr`x|1k?EBR=#V z@`S*m&x|=J;W#Ifrv+un7*a8E4SfdEuMd(O5ste9@|$VcP<|2#e{q;rF`N|K%a}6i zZgao5^-NQulP2tO52A~*Vc!-#S2x92N6hsWR|l310Nc!(=4R-zD+=No9o-81U997} z1X_o1a=(w#f95$S9uLCw1KUYgs&DhM%L6Dr?ss@H$oKuxeCaf&U&srS4*Zhm!Iq4l zu*Hmp2piIS_RGob1ourCd4}>QI2#&j9>M5fGM*pxecBbG|Ao5HCQA@Jsa%O3DP zpuZnP6c4&pKY4Kzf@P>Dx^75G6>cU2ONtwZ$w*RwHI-WaBf=AG^Xg1GsskRW_ujTg zQkd;hQo84eT%TQ#&vz#nj712=SwjfS4pP=1!Gnj~1LQe4IJ~K*ym!2QJP>rmIjC)m zZ1hq^(LNZrIPdvTmIqXx-#+!&z?=bqTBT}OyjsWzn5+q#FTM6kJ=wDa`V2jIY|4@i}lyl=$6%4~-7F?*{eZo_$w-$l@EepfS19?hs=OZLq$Fucis zDe+qav5_V^B)}qms#(;^8y!UokZ1c|zqEM4lVu~l*I|}H&gc_G26Cax@`vF9ZJN1LVJK0HAC4!uN+Ut0zeVh@Gbyj~X zD~GPpqKgUk<)pxsUZ&9FO^Z8pA9@#m*EOf=(fO;Y;L&XiqPi+U|9l!Y#Ix*uWpzqb zFL-9cuSu>5OX3Bvy~D1o7WMBAI@Xb7*QCyebM>;vnVXq2*(utm&_^OSY?p=u-GUvp zW>}be716zWkqhcLUzP{}gcy(4K|gIO?xSQ&_PqKgANy_4%?w^+cNBGJA!a}?6oE(4keI4 zXDfYx35izymG*Xo8altv+fJ7KjOm^F=4;l*p6VC0SZsW^|3#5yIfM@W&LP%NwR(+w zSw#M16fPog#HZCp)@*EWVf;M#1xM>*Yg^k&n&z4--u)?)u2I|@yB2wAbJK~m|E`43 zM)Jol>l|{G>7F|n4l~oDo0W{R2%xH zxI(66uXx+BW{Jt*f76`C!Hfvtm^LEN6X!UJ4gEEk2W)Yyaumg3K}ft8*A* z0EleaAJ(jRU$B8v6aIX*_jnM3314`clhla(xtzjvurLZc+Pqv) z$qM%+tDzu5xM<^~<$x<)&@OEpeLe)s2Q?>-tSizFYpO&&|2_kVyd)&Mk|s&3#Td&U z-A!iQe0&W!>m^wp9*|*HSO3PuN!>3(50p6XhiIECsLc`CVf!mjOa4K)Kxo_M8>m2$tQY$#m4qZW!c?VIeIM0z?Vf z0~OHPg8BgF8D=$IQa{2+Hf!(L-RXa4=bqn>82d2>{lXc5Tkk?i$NihCYp-XqOKfn z-)@s`KFYLM6(3XjUJ&RGGSPxj%-~e6E$ychqS*PM%IE(y@YCoe*|{iRbG;h{YKcy0 z7#P^FwjCAkeN!>m}P zh4@GLOm&)H!@!JEyyw@n%{r0@ai)&%5%5O&Kd$houTiHlbfooL_bIOmrUJP3q5RR4 z4rBT4VKL`aCrump*M+b7F?3#==RH2SXOn(>kB4bWsHpIRJu^u{ZRbL&8JGY?jlRwA zxO8dB-@Cl8om8Djwde3wrB)XllA-LDS!d)rmudef-Rm@>MydEfFfWWXdI=5hW#E>Y zph6Nf_{ag*-FTw;`1@mgWN7~_=p;rrUT`-_vR|j+BHoAn3kXRe`KV;T=L@It>}WqD z7jcj3ru&Gy#YI=_-*X=+vP*E?20SxT1>U7*2jwOrqmb$&)pSH;=|mL_%igI2 z?KFTNWMGDZ$giGDvWSpmDWhP)jz3&S-bT$Ix%+X{3Fg#)Z06e|@|OoF_te#HJ#yLt z_kF7#oHHk6()T1qAs>e&AI7=)2nl5}y}rI$Wm}S)riR7B0WlsIR$({yq5;0@#+ypU z@u7q+j;f-aY-)NQkKZ$&@~P+zxx7b3K++;ouwnNJX^I`9b-?_2%T#J!tuyB9XtWG@ zy{~WZiVwoQs6NG(W5=$m^O z8{hP8OpBRD{Gp+fm+Cb$c>|%8HYcM4q*6-9IwMH-0oE3YcX zaldUv0LKg9>L-Bbx_jcb_6S6=aC~ssCBeOAyer4wwdBHtk`)YppC(`?3Rsx++Y{*$ zp`gBLH@#m)eb^d^ajp^}7A95;L#~tElDOx+KkIdIez`Omsyn-gIp0U{JtCG%Efu^% za>eQw1fJ>x&Ge|cp~wa)4S6kDhBw z_qiuQ!flDBbjv(Co zf9EauKl7G$(G-1wF+Vgz9Gv$dPh^~xN1Qj$?EIf*T3W&;^futdCUe0sT*T$OYBM3MUPL+y&9{Mq?O?}0G*B3Ayz%oBZ zKt$#oH-_wI~9phYHufU1PK8Jrj-)nQha2XuR zh;*~R*Z?dUZAJ>uLNcVKdu88NZDcqa$UhDYLrSiIU_6Ta@k?gJ`Nn!0Bl0HKOqoAxChq}Un(U37G#QO+B2-0LMAL%qC+^O()TcARdVp)*{J#7k$x1f`u(2flMSuVI$( z`9`PX70_b)TTf-Lt8Gqi9CFMXt&$kU7&j`a; zSYir9dRcJtWLpukt;4H*p8X`OI-2D_vYz|HnEC6~(C|FzK?P5=e`0;Nl>fP@^6MJvQa|UY-hbhtCk6ox57mSYodlML&U((bPiFt?pEj*QriX;@AGV1xQ60{ z)-M*K+8|M05GG*frAvl1!PZS&Fr;vy}^hA1Z-)mZr-#d8xGF@=TnKI1| zPmHXwo(1=`M}II)*#lMB?5<5g;a$?Pd>Z#2K%HxUErqM!rN!1jp4vd3d_*`t6tb4w z!RqE`0ZIf!A@1=dNUoKkq}OluXQQaOqYgV1jZz@lz4x>)L49Z;H81CD|C3+(F7Qe3 zbXLD_ih5$>)B4z~|OMpxOKi8PAilLrY79ROs{W|KoT9p=Fr(;p}`PAmt5E`&8_6{xj6+JU&#| zC!;5wO?v4pgPGf((S=AMP>V_sosCdUd^5Zj)+2H@J$xa$zd9iBkdsv+w4aLyj);N8 zg?fM;*sf@^q_lm)Brs{$(07QkxugwRP9}lpJ>_glsjF6-I|={*Lu|67R{}GqA=%t! zq{rKGw`@72LNV76ah}S4A%1iLCSII_@scGbLmsV%6LBr@E%pceZ&U-q-+wupbc_2Q zd0I_`QadUPM)r`sOS-9}>yYPWZr9!XS|fx1rnLfA@tYlX^H!n_k(MTOx1L|-7^IRV zI`eWkME{3&<9R~)2+zU(@uZo&>T6AcYOeN|b{n_#vrVS$E-tW?D_33jPc?~2ubFWf z+RfK7o0g1g2XRx$sQk&O>NkxlX&QUxqRT zZUnu%n*G%==^8f17%ib?u0wwMyqh$F9OKRla%Nph7&qJ2WRTl8qP{GBKD5Yjw# zLwrV^waVk%H>9a$#Jk9%Qq@=%m%p3XFiKik7OI8oq~b8eK&&^fpKdp}9(>%@A+<3v zIcsJvnp7rHDcVcPN!2Sey z-^R-BLPXGF5u;vY#OJh!cHd_CyV#xVj*huzePU^6)c1vLIsG=bnix$xJ80r-GQH+` zTPrI_2fl`7v!P~CM+XGso;ZmG_LP8ET>iGwUKb2Nk zj0mQv{#u-P&6)qJP3|;+b@`*UZkHR^>pwx#Rk8qowZI)2o@0@R?I-OcX|n=4YL@8& z_682j)?%rpgBSyN$#b#k#6Dro#1|4b0(nJpF#c9)6+NgY^No^7kbhjh+*@~Vqkr}@ z3`WMHF4?>do0U~%&RNwu9lu*d#hkgd>2wQ3gtWEqB@f@4m<(dFci{zB%;VApE4KMMUn&l~_-coil1HvDv8 z92J|IND`HUFz<$R&n5`>k$8QG`H#cVQNwH!=PcK1Zc)q7z8utI<`-9AqGFRA z&xR7F6jwkem*J+&KsBYV_IN=@j*p1wjLUL#fKvMNrA5?gGF> zZit1McPsXI_$5)VZ%}}-3aEM>SBX%cb6GrrZ#$qWuZfX3LaXkRRfk&z>a)IBZq34V zT9lz#qa*fw!GmH|_4K6%1u4fVI9_uSlVoIw1fnlXs*CQ-)olhRUEH#2W;)8*w4>=O zTD{veqd#SCh6su`&T0nVzf3f{m(Is@FT2wB%ZbT1%w^G$YaH^1+qa3+(#CmX7)CCs;=e*2XD*&6 zcM>MPO>1(kR}PIYH?145D1~02luihj;*DMyK~XQ#Yb=ht(cLKgop!^x`%jC%6d4*W zE#YJFc1*NrI=uz{r+MPc=0=k-wuDJ&>=ZvIOwtIEs;#f5r|Fxkk|F#l=SyXvqJH1? zkwlRw`wD*M9eJb#iu5CI#|R!;Pl8{FEdD0xt`R$}kvRx++fIXl4iWXXuI-_q5@J+U z*S@6n-q>0*u_v?Guf?qHv+Ooceu-3Wicpfsdd3=>UUAgCo*2O~THYDNx|2M`D zsj)9z$E5!E5#TA}Cqs%BkI|P|WiagsrRLW_K}##t4C)ea+*CkiV>F1BDG~d2Y)Tvz zs!t>-Ulq;u;-(N``-k1MPUkn3)K<_Z4Fhrq`$cdjae!xGpL(I2ZFlIW8I;v;=@=3i z78r^cOC{X78n30kvF9)c@`Rm+%Drq-r|(K0a&^6G>M~-;ZMRY?CyqE807bu1nP&O^ z$49*H#Vt z+AnLH6G58<^iO_CXCy48pHPLFgB!e%0NR+;I*Y#v?=&)r;WmTovRX`pM5AfvwZ#7F zU(UuSrS+rKflCt|PGKT)6+4?TZUZ_v2el;8z}aZPz5=!iDkn;(edmVi-M_|;BT)Od zL1NFe!?h{ z6E7yZso>bCEUyX`SBl)cUZeE(0?fGbKJ~V16}wNqi^p9z}ohwydIRrj5OB zkI!OWaEp=!FQ2o_xBDLH3g0XC)R#1ka_QMmL||Fh@#Yg(R-+NUoW}Os9)C5tFByFt zn3iT;uTgSN-2h%gOBbzN{>ZnRA0wORFb~^naNZ-3!xKdazT@b;R7eZ{zhVEMWBtL8>)B0f( zhoLwLprNS7!0a1r?SCeXYEd$(M4#81dEVE^+b+!ua7EFZn-Obbozmr2Dg@YmQSwg| zG2x%t|JG0|ZPE`P9i3%@hJHvzAsuQfuWaWd0$~0_`H=fIL4#t5b*ws-6cNgIU(i~-Fco%_0q;M?>&4biqP(lcL$LkCYk<<| z7W)X7ZBpQY1#+NLlsMN5(@#glwN^kB1_Uu-*zGO)*&gk?Y1E~vw}t;Etx<&~HPCW6 z;6Yv~_NWECG%9E`vsJo<5HML66CNoleh~529uZGYNUsnoVV?JSf)#?Hl;pGa(YC$e z2X_uErZ2{Nm>)2NF+TT*NPab3BBx||%qf)uIQQO6;+s8=`AhI!4iz>~H+`nvC1_jI zX32SJhkqkOgW)R4(Zz+5Ff_!D>Xia;#WmSK<;@ngOGC*&?`U9EO{0_CwoPY`ul_dB zu#ktm$iPlS=)B|X^Rg=+|A<|Zp|z_rm7T!~DIg+GFHpPm?-JI~E=J+*Dvpj8^ryS1 z(4JQ(0AA*J|KroXYd_6&@Lh-&-*)$D2Tz)%i-1A`31=LA+!2Gt^C55x&&?Wlt(@ki zyk@8fy_bqIEeR)JK9CiLw>luACxarZ-(Y*j=*5_c9QxymyX&X+O086~UdoCXl8rK5 zD)x1NmKG>Ub5i}2TuoUyRpZoay$Bwq~w4Z%sK{S+C_kEm5Rc?7+OvD9Ny$0*07c3{B*QlU{s& zb?WC!c#{cZy^t9#onS!+5C1=z{67)?>j%|_ZYpG(RX2=jbMBz!eei+a7 z${-(=i`4%4F>#t_{vF&(0Wg6NMWOfqr#9wc~_LAJ_P6V89=QEOhs z%H({SN_vydJXNvwq0=AVuf!A$hYefdbtmV!ciqQU!>CEsxI_N9iHwQpU*Qv}D54YL z)udfCsR+6*MbAL~AkB3tVZ5@z9&YM^$hJjB&NuuVJnHOnxH72?5i2-*;7_@KKX#}y z+8F8=>N;21=y2NMAvfbrijUZFzkX(rEPD1Cx*%Q+PWr?LDmupjBal2VW~dPj0rKW( z*`gSKUPs!2(a z{>WRm?(v1G#kH^o^>oDbO=G6q+! zc)xcaRiU^f8w$Ov^IIXGpEeJuSZh-+R2X4ttBkOTWa3F9Mql0fTe~>g(l|s?+85wx z$Z#W}i}Xy-2fPdcrw~ni?quKhXR7zcoKtmIHrflns6S+Cc%|Q4J-=-^fm)OXpt718 zUeqEP5~onlzu(aQEG(^!C-COmRO*^cS)dj~8KLP#lI>sMOn#{MX{m3hFIPkRJMC}+ z+$g#@YQaui^+vhR?>voqoZ^;LzKQ$)C-Tp3iNBXgM-|Qgo7w3$x;}46YV@3=Do9Bw zJ-LnrnCyR`Ld$#%X2JVSZ6Sy9`bPOL3nxmIkdpquXv)_yY8Bkmk8bE-2v2u#i)od) zy13L9##{0qM^aliQp8q8yxJI20uqRV`4D!2{& zhvv_S({C{4%24vpX8KaStmPu`;sbTH)6H9{_bih30Yz@r%TpvgSUFgzG*caBFr|Vm z#Cz7X8AK5qf}D=L{KE;!yy7W3_A*!pT0;FUws0T~GYvJzq$ngL{My(qr|%03_SVd~ z)21HVGG7_`vC=J(q&lJ)1Gbvsu@)F39ZlO?t~VKbgU(JgIxP)cLw&XlM>CPM3`Jqc z(47k#vmRy6(6%}KS(C>=@FK-edSAscse{x{r6YrVXv>!+`8ht&DsaCuB`^98kSg4! z`Ej7wM!f^>pIIc1ceD0=(cQh#EDy-XdE?sI3)bLdIRKJ7Nx*hg^UBNchcSrs+~* zXVa#EmM3M1pQX*4=Y1!caIC-Vc(D4|ZOZdny~`;CT@CL|cSHtL=7u6zg6?$-28Zb= zDjxOZ4P9pSKk&NAy8kSi9#Icu@jYQr=ZyyIlP0zl8*oIMXSg&8B@F%Bh&4b>6)YEs zk*oG3PPgwt*d-ZeqpWFwE93IR+8^t4&{F{yvSV*@T!7GG#5woxsI81cT#$+NM>i}s z>p0z|h^^tJ=3^XX-GXL69@?Ccov&ILZnp zlwCVn^5lOp*RpR>ajoT{TKa<`l0WaJ7gTv}at+#)@%Rg{N)2sYZfM3F)> zn|!WG=@_zOtf%P$v;=-yN?do~@@h?-f-vK3!#l&GXG<(jVlC z^@dv5$ddDD#Q)X%`Bd7!Gj+-6gZrm{7dk5}|5u>op~E)#u<{O*9(OI;Z(?N5r;FZ? z2BQ`~b;-}+F2wH~ zjon2lrT3j9!!ipROw1xY!cl%#u`3NDW>rt zt6x%!7mBsS{|n6TzrNF9?D=@0suKDU!Fkr`R&mmV8>Fx^K8j&X;WxOQ9Pj@cjAv;v zx%rbHqmZ5>>lcFI@WK`6*S(YpdP&zvxz3}Z#Yl?jM!(wU_Ha2o^NH^e-4*@d23Bn4 z+JVSl;XKfWms0dst6gNVI2u$zuKW==C~_%t32Y~60(gi9E2lIfwmkxG>DGV_^p1%S zXWfxOk1|cghEi$r-K@Le9Ud$XdnDFQL@CRkvCqH=97{sGOneH|tgi}uJ>J-#{8-dr zoM#K}067a)aLGuz(72%8VoA-U8;YPvcCONIcLx2tzSDgoe5|P0X0kLL;f5mP6uJLH z)>m+~8LeF=0Sc7jMT$EVio3geaSc-3in|pG#c6SOcXxMp3+@`+b+~Kh&YCsfU&xzt z&VKf@1sJ_)h43nj$+w~=B>{s6@cZ`w^uEa9`^B?x9z?v*%bQsc*$iXWH}yJuID=_4 zmw7gs=k_S`1!OQ(Z88$eA%`b!%r4-dEBEVYAdAPnO<(+GiV?~V$kKbEiQEg1PFo=u z^7ji3*6$ac<1rBB^+UB>6E2s4Qq1Q!y$lARLZ&Ih;CNgpwyE1|@RLyR!kDyTVI2G! zW8OJ9MC#N7JXfpQ8olc%<7sulN=!b{oc^)#;u5`gtBHTGpS$a z@p{%h&mC#d-uEg&GlGqrE&?SE={xQ_t`=H}#p327;`Z+-lM#=bda&s*TK^#u{x6|+ z8wt~nvfPsW{|sD~1VTuZK!s~JMzq1LUu>#mLV3P_nxzqd8FaAnpvYoOldRs{K*EXh z_n8XHyOUX8sHBs$pe{phkXWYMG&x_Ulixk9%IuHUrpIE6KA7oI4?G&YxV(jeGGu6N zrfa#?vsPQQTXsbYB>~aX%|EDAzWHMdJGRJ;PkyIS-Tvj5TQ+I68oExJRiTxPE{>%( zKi@W1?{p2h<_^{}Jp5^KDD?+BbMw`6mYy>Ml&RD-CyTSJj@Y>UGGM_*(A&g;QcH*s^NxGB zYCaV^(F^_3M>XE3eX!1g2gw1dR$QZptC3P>fGG{mIvOpbF0%{YVf9}yu1NbyH#h3_ z=V&4#?AhZunyXhh%C&6iu*YId6H>5i?xzhtRvv37YhBrN9d zxmZE}aVOk|OT4=#&3*oS=$9jMyM}4avbhn3+NluNW0`yP4%l3SJ3m#9tKS#~Uv6jw zt)Bdx9pko7=GZc>@-b(l)G0_9wi}(bU{$Ny%l#u3@9M|}^h_K9qGUDo+y3B^C(_ZN zTf1BQ8PTIYRq%zLXSRI&Jf#l+bFk|;MmKluOtp~ ziN?d}h;dJ!1Xc8){*5)Ct!G>NnB+;wQuA+5Hbf|N&v`oEeWjT<*|Ak-ui+bk8u8l~ zGdERBHDl_<(VVD;>?urZt(d)dw? z`4SYI&s8O9=7HLfMd@=b)H#^baF0n!J&HpWbSg}=IOSm0u$<1cT_ z8EpQ(Wo2K|0vp*mJXTbXS4lGqEyLMDQPAz|MHtrwr>l*9jys@eX`>D0^He%bPX1T+ zD~rkwnfg@n!bvsm_$-K+2QXlZc-}0bi4Y^^LZN4Ztk#H2QE|NS6?S2^0;i~h*M!iR zI?IGs!enDOyk&N)c#A&}_EEi~9D<)==hMZ1>znFk)XVj$f2oGJfe;|yRQf>aUuc&p zp+!a(g7y<230rH3kuyud|KK&G1iDW3mP%Fsd+mQ>MrqvpC{l9J4UZ%gZ3k{^a4IGn zwef;ykoF+2W9I;0*c-{N8V^L)-CRo6h-*t)H}IPj%LV^9%AU`Qo1&EuvE0S7CiBNY zCYSc*@P7Q1^c1^vq&DJB=PIYnlPB))7t9!=zuRN?2@kQa4}({&Uh7rzT%-Ekt8X<$ z;IX)g7@ZT37T?nBv0L$u0U#nhAeA`e>=JR5jEij;Fd2mq@Y!E>8bO)Y{NrzT?0nwb z-yuluWQ>wNvwzK*C?cCfU`{}=qym?LhePduh-Or<&uzE1jMO6L~R()p-B^i9uoysLH^Tm}^K;Zq*(W$Uw(5;`yEKkJKUrdaD zF!tzD?hX}X&J&U58>-Tn1x-zT@eKM#F+XlK*|XK-C_4YJifZUVexqavj5_bV*bfle z9WSsW%p85*pfC{isR0apd=}`;Q0e9zC0+$OGbJU@N&5_OoqTC~XtD>5x!lwSOJGj~ zm?r(J3Rpdwv+`1qOXFcrLZX#RNjs7)dj1UTWQjU}@d?1)pMuPxoM!K;=&5}jYqgE) zIIfC&kQY3BOou~O48^C}8uuh3qJd!3YyWUvu@5e2d-)gUT@ItrLno&_<##frV3l~1 zrPkY)`u~#*?_-(gK*N9kbwL#Hle8Gk8{H}h^L`*te6;4JUqo&I!HC3leE4W+U~u_Nb~J_ih~42C{f`-I?EG@74o_Q`~%${PHP`CqP ze$OuP@3cy^ZY0W;Y#~oN$__YOm}R)W+JJ=Gl{@1$&iG!J;2wz8!>V-(0~yW4v&)<4vR- zqdw4pX(K3IGRW|vvn*_CqQ*|Rr`3TpWWpVU*J^-RS{$@4cmJ{;_o_#J&%JL}|Mu|S zc}~Z0V7u+4YPOJw3TVEFggI0tExZIZTI0CDNnD-}DnyuQk6sLi%Wh+feqTRayc6xd zwewX0vvsZ59Z-STHof*Wrv8&yootxd3q;Lj4+)&C9kv64czlA@udfQb=7xvvc(aleR=%J8s$StdvYVJlB0Ntiet}f8|%@6GbZ$G;A z5u-b1XJrZBNtB%3N<0uHDT8=6E0Z54si6Gb%j>T$f~RMK3;LdA0r}@J9w6B5R%xF> zjv+hMg!@li|6>EuN!|VJf3G9nNBx>W7zD+TpNz=(h^Z%B*G@3`3ini9zUbYX%|Yzt zzc&^zVn_16sOqTDpG)F#%lI0tZ9AxcGaD_(_P<5k(;YhgV3Q_B!w_AOPMgBNuVfR< zuTB!=^8M%l!-b>_XHH8~_sB=}XR{8OuzGbPn_TVH7hd+c2w@+r#b|_LV11)YgddrU zfKG!;MBt!N((oKt8ITs%98;vh%BZLsU_N;%Yz*4OtVDn!0a9sD8HbPtMf?`-M9NJq+*bFgzXUs-txQliANOU_~guS92knG*1+ zeoDFd5i{?TMb<*g`Qu;)0S&NwfFlE2^;~{`(Y%F}68Wnr;Te zN!it7xX)!cf9AesdDG^oV5RSJIGV5_}av{oJJD_Q)!rme%~q zZDtvnOWV?T2Y~meQKrk#yzmDnBwwMZw$8w%;Mtv-6Tr2AV9<0qqp_?}{!sj~)0{C< zTDnMRgcN`d&i$K1{#rl0GcnQ-fFmW^k(lz#l;j9D;C3(?&o9KE{n}pK$e5&K&a{bC zq=n~7UuJV@!>->RPrD+_9rri5^}5eaYpTlV5M$v|L>3-?V^lgH$&cPK1Bt+#_@J`} zR=bh75jD*PebcnD8TA|{&H|h8KzRr<@_&#hkPGeXG9V3q$kLV3W2&TYt6H9rBfq%U zlJ;MPg{SgZH2p8ZaQ3k@^(?rJUIMtRPrz?K=r%+SNYr~kVdGrO%H8S zxwGb~`9mrC6qhkkSz1anEQa%tqB3-Fio^EuM;-;q#|>C#BO@5^la<-8nP$78CMchQ z`f-T5U2^@u?I2@t<)UHm25?=N{+Q80bTgu5ereGl1(4^?bYM?487&zl z9mv~l8loM{;rFqV ztRHcPS*TL%7_ozoAyKqMk^Zdmc_0>X^cV|`l9k&ZeWqY!7EOiz25Uo#C|Z^A83$pr zbJ)c~qO49H@~f@1R?7P;)CqE)2k+f?Xx zUNU~J<6Jr%fAtInz`dcqle3d-iGo5V-0ajTBxnw=K|h7bzB<62Ym;HZg0$**{Ymhg z6n-*s0Fzn~vmkdkM{7gv zV$J*fC#O`V1+hEJaMZJtg6*o2*?GLiH~>(EMHj!U$*omE!+7%qtMrd;&pMI$7KBH* z(fKmi>Qo~ukI@gpl;4twz=I0(qA*Frdpokv#c}wIn)|1(&XY_wNE)}6D3zHF-81J{ zKUgM3Zv`KbAay+NGD3CMAJsu_D8F3NTZo@G;Gw&Wz7Hf0W?KKz!?~3^ZoEF7xndK% zzv1xgbho(QAd}N38P8B-m%Cw8SN$QJ)FJX=D2&-eH4d@QIWLBF+{ z&rr0o5B&DHV7ukKmt=;L%mYtL@y&k?0LvBhSL!C9oLrE+naOC zl-0%p&$vU96z)*VYq8~~Q${#AUw-ItRWpUb#+>DlrSR)(GBU!td6sotbeDZTTll1t zR-5JTTKyeCgtCu_^}ExZ=C(GqEQAFzDsWx#EQ$Pv{X3>+7wSwmhsN zBB;26Lg+$qR@}lwzc>K_Zn1tmAspfYN&zG%0$~(CG=>?`ND%i-LKMl=Vv%OMQ1z)% znx9V;OT23al%D?}UY+J4*>2zp$-;X48P z!+F~B3%NYH+ZLWY?F55WEd6IY#JD;3Q&ID}`&z?os**2R?I9E8$l~CQusd~V2#OE% zl2i;V1BZY$G&|1%;9UucRTDLvw|)Il;B6pG8r1;|uNo$0jDZ2Hc| zn9#5NJ3#$ZL-t*b|NcyDB9#lj~;9Hsk&t>k@O$w!-J; z_iaMQ>ym=!=9hN-RptS;K{omPR7}}i`ML6osn+R64D*38+BUmn)KG&phcmvk$sFd* zwd2nu5Hcq0v9`yEjDHezfpg7hhov4DEdCetol4bPq)wOD!j|m+_pkma<`63D(c_vquy|%C3`#0 zyw9%O>qkC*M})`B`2NGJU_u!s^`YzuTEm!RSRl8~Nj&uSGBM(XY~L4FaHbM@imq8( zT{N?H558NxKl=W3krG+cL#4j#;V;?Yo!PbaCK$CSsnZPIiYYi%0iimXXz0Er(l0IA zcDyXaSnnmu=v0=E`8e!5JnazgE!9r-pjws%M-cM6jAh_J<|?>Ogle2K>hG+Ha{O`o zJf2ab*ghd(zr1dKNJ#oX+fdS&LabwUwa_47Y=G{R#^pV$khzN-RbEF z`ae2gK+QMJ2blXMA4X_tZAKR_Y-N6b0RG~*F_ck5c**v!I*d~!XJc>Xsf&p}Sk{JY zzZT2vL=CXd$D*PkcN#(=HzfGB9zjF+_LC@Z_oH3XE~LC*L|E$tL{*h-DvRv6MVcf= z5R(gHC&N^$W(7B^?X#O}B1$K-u8^K5Z_5HA)660h%I`}gID;K3ZBR49PfqS*K?%Nr z0{r@6V(iFi;6ZaQPW^9U_Uie8?AjlR{MVh{F4xQhO_+C4Uiaj;fdtXMM=BZ+*N!JW z-n-T-f=>flPyPK=Eid)UC!?$iI3yh79OXFcy`mBAk>*9h7H=yu8UI+64Ayc*J!~G2C`v(+BvR_^u||cTcHY8y{j=U`wEt+*PcwD z=FZ-XI$pQI)?<$m9Ig^=ZFgljON#A2ac$ei;L6{!8nf_4R|4xwp2kB2_qJ;{o+GPNW%|JU-stJ-mSBP)M|%N{e#(HJ0s&^o{Qr z2M&+BzNABq*(M89*_?A~!#mLX4 z)4!}_ya**qY&mTR7cjV-ev>`5zY5ty0(7gxhcY#M{p?0kG~Iz>7dtsmF_ee_} z3IQBQcv6j87(|q7Y-nn>3MNYp3iwPPok4NXRq#pY5Bco&6`UU(^Os|@UkT_h1X%%n zd;^mQ{=$Y1L0|C{Dw?Q>lLe~oC23H*_>OX|XW!ce6}McmXk`C1lM$O(G$eB5h4hu{ z0tBw%I}26u#LhF7763T+xY`UcwR0tT_9Qd!-QQ(-L054UfSl*L!ay`*c zU}bYyX6z~Ie%#DLJqY7@G#0|1&1680gC6al9v<6hX-t8*qxVuDEw!`^%ntgY+{^44 zAYBq`eccG+qX_&{zU4kE0Zk3sS9CkhQtTgF|8Jrl>1fq zyZ!<3O=}>3V=jF@FQ4$Tbz?2lhG4SIy=HOjt(cBg4cl5XR8sIUi`U)vs?YAS%I-6l z(>OPy%T?{!+X5;y?aZU$Wyegg0oCh(d>TdTtTl#}JYyM-MP();)3e@JAlJW#pTxbO z6p&&5c3x6Oco^BVl!TUvaM~rZE-m*$Cp06SEEEQVg zrf^(h+^w0kH7s}1CAq(B27BIm*nRaleR~^N#dncNe$sqw=aTuy1K`zunRZN|!}sth}J#wHZauTtJ$TDq9_zr)S;HVGS5AF6r7)Nj^miKu5i@f zE}rFSO%?N*jTYC?>GNnTPm=vQS?(;SpsAhF=P{_ifi4IzK5Qk+-XCM)pR~N`8inEC z?ky^gW+H^PUa9R%my$n&t6VW-qm0ACc?jy(e}kG_)~J zfJxTmu^V0Ey!xM`*a~E7X$WXa*QZUujTY^zHAXcN@x&oGV}!lAhQ{1Q5HyzUk zddLsXwllV6EIW*hFSE^OJ-Ys0^3XPy7`K;X%=~Nib58#R_T-d-g{WF~mX@%}mZu|@ zBzJyV)>?*}yY9Evo(KEc9rXH=2d~WMzg->6*mkw_5RWt_QEjh<)w=H2mtW-BIxYNU z2yZ*of>rNVc%E%LM$+3;$J?@IAr3E$Tl9I0Aj!_US6&szsFxzeuAvf*CHb;B(e)SAv%p`KA;eeBbdxc?~*-1Ud=OdQsfwhfN*3 zrEB(HzP!HaWo{7)Y}S~_+edd4Y0XvI8A2CXQB2cVHipo=!)l)w?G!ePP%P;}teorZ zq~Gy!WF)pR@fbowmy}^9TeI{YOb^|{Y}(Y88O3uF{^e8Q8>s?~21Sl;q6B=IQGoyo zGE|FMcqt)$mvY)UMU$wvEIEFq0S@PZu9Mjp~_7CerqPRNI0QjS? z23Ws%G6}^2HfXUx`pH`(*(+y!PKfCR9?<7GR~qznv55f~Zosy?vhs%t?p!W|ePG@~ z!4A?W3{a>Tg-CD##MkQ)H|&WyxEjW9Fty)xp3AjgYD&|}w&oa|Vr6wKQrWm43BNzl zxOc$9hf2b|+h5H3s`G5AIAyK^^?D8pBxI>{=u!S=GIQwWTa2-MJ(;`Dvr&Ehgj43P4xX>a-<$o>Y@I5!TISZy63 zp5yoRH%z{4ziV6H8|N3}4JoTbm0m6sy+df}q1UbKOpA!hV48BxKb~bR5_zrXu>7>5 zTwj})D7&Ju;yUUkGK$#$i`W8vAl1m0`r^ej;xt(5;uy9U>sX+;B4h6kf4g_(@*%Uz zFg^a@b-Ai+A^yPUJCwuuh{9j=QaQgh9O(}B4)kKCu-QVBlwspTOr=WH*kP|&os$kT zj+a4SMvsDfV<~rDus5^S`L}jL8$|QCg>_b6#p2ouJ%xWd;@`c`IcX2xA5wl)e>xL< zo@>8(K=p(u`ZyYc)A{+oj<+ElNt{}LoFX&0gVFFE+yCO+zB8(FEu7h1-gf#(%|1nn z+(-O!^x^3wc->HiD!eZ4eHHq4wkG*r--LV{a@V?~@47^tc1n%q^MPF8u4&?dl@McZ zEXAz!3pTyXd}X5YMSBNr0ea0^9pElibB$F)*Z%j*7EVWW|1u9gt7&-KHsM+H-e$og z?Y6*cFSUT7;M>ClVYG>j-~0^hLlQnsWu(w{NFDr5+mTvD^@P_RtM^%z|M1Bf*K>uQ z;~4wxRFu!G&t1#<(hzlqweRay2DFdSr;2mz(b9F#JRlD>g7Go*mg+cH@8R#`2>8`V zL*G5`P2lw+>bR-C7lrqPsRN~~qN_e>7ypq!lYHq$=S|lHwcMgcp{>GfaQ(bRF~w*i zMVHcM5qewE;ngkRrQY^(z4l>3rHs%J?7PCn`}T*~JFUghqUPngy{`bw)t zatS|@cpq;ope(1Nx{Yf|?@6`6!7<@w-=<_IJy-tHy-LqxOYCVi2Y)sSaczQlrKx}Y zFd?09>Qo8*dfiLq`TOy%jaPm7dt4fK^{9Z;Jll|FNUMM*M$Fs=i36kd`X0$Z5i7hz zDL^%y(>`#tUc0S6XpiA(Ep5amYgF&`<&D4)9ADqrUr*%OgL?Y6r}f9-mBqt{X6JX~ z(WOZ+gcGixWT$;s@~(+QmeMMj_hk7^(=vrQ!{bKz)*dL$DIK$gb9Yd3=!0OQeV^)k z@AforBYOhV;jw7z_M?n_aEKiU*wpmbf|Z+LcpK|+Np`be)lsOl8(x?&zNEW)S&p|N z)iO|l9n^i>z?;DLebrc~8BlxJRk`6EK8e~M&}SLIgL{5S07UzX=q#wW9C*6oj|X+! z1sShuU>d9^*lBNYj<^BcIVWVXfw3KG?P=K7mJOcqx68(F3i-;c$3dv7FEf$&C%98e zHGqtawYF{n%AXg4>>Zl3`VTFVPv(s$IH=k!fWZn&+n38}Oq=S?a>YSn9RDURJJA&H z*M4eiapRV@%?A}5*Ve-lC&9E-#-AuLHBK9kSdt2pjk(5SE}R`}Ketr*l`O4`A0NwS z%set&IWt_#-QVuz}GaliH#2Lj6ne~A+!b3gT9@<2ch6_ zfFFi6AW3HF7DyDezhQXVJ?M2CCtuJF?oc{=f5ArwpQo%p_rv`hZa1>IFs?H(Wue!IOmc+s;*gC z9t%$3N9Mwm_$gwQ*&^u|Qcg~C-5A|P3_L=Bqbi*@h!!WxWDX_$R+f)kihYMo-cXB@D$+{y5^5lWyev}2maG3tO zKCxc5o9{m_9xU2cs@FKF!}s#0ds3BI+Q^@Tugv5(3pie0~{|LPdkvBY4eS zf!{uzg8k9tyhmjTnASpxw*F$`?|Ye`)jJO-#So|c4v(GIPPyTSvzj9$63{YuFla%L|R6#E+pN~Btc*QvDo~T z_b+sm$AI;N(UP_c3mRnXb5UC^I zA~~3*sOCB={Hr+Pheoh^nbxsDiRnk&Kr?ej^u`HXco2Zm@yEMi%ZGSDS`;;NaJy+q z48Dd+ApE{9x60A%kv5?n+}f@8Y>2X@iR;VkcTCWvunyls^O$SCCztaqPI;B|HQKKk z3Q4NSHfmH;Q}bMj`G`Wc1+l7d7XDnhAr#D}bX~6KHI=;kiNCvOfbbCTX(5VH*D^ux z!lY#nkGDb00nDCh&`ran;RPBtur$?Q>8r`4;@3e8D@&+wb&!uV-Wj^8373 z2!6dxfMx{~vG^egg}0oww^Z<)`oHJL&n^Igw7~k_$2`Uyh0N_hOogA(2YV@Y^^9Jd zNGL3A??6t`%u`~Vv1tbbzBe-s)%u#Zo5H(wQElVZY%KO|xzf-qEK>0ODF{N%m1S(3 zwQYfNcrK0To8EhY{tTnmqDC>coUlB-<3|hMr{#5m&g@a4hpQ2@1$Z2If!n9PdD5`3 zi4LcrmyK*uo2@_JpH}E)+b~OIv89@}uPzTAhimbk9!vHXhj@Gr=drr+n)xRLaqQ}& zRw@@GGg!LY-8V@=2K~zw#M)-ym*r65g$pOHTUBTd+j&KYhsdiw5_F^@(dLZLq}p4O zWYQbiX1=^mz%U?IZ@z)*#p17*=X$aF)8?wxj~Di#_Ume`)*&boce_w3&E{T88coEG*MSDokE8$5EC`i#-}*7VGtFR|U0s8mJ7Y{C*!qMkABH({*`8 zcyHZBHD&mFOx+zBQ!O1UrfxyF%mrIF8;4w$l2{+H6{rgZ{XPa>MWvg+4*)(E0oPmy z(R~9=x zFkL_r*mYs`d{f2ci<`sXJuUB#XHswa6`D-!Xa_KSpyzBZ;&y*T zjK%DC@ZwLx7BKKRv#T?qO)Shfg%LNz%)ftuwfjG*ZAkb4|HGLAPkn5j3D31FzBI>n zBlOdjGXX>fHE;0ZA5oQGa9c$M=|_H83l(mCbh?X_gpchnP`h{T4fx1WBvz7o1~PXV z>G=4I@Kp~j7pCx!3{3c+WB(|=9``W{$?@k|RNhpuIUb2?wI@ngEd&B`Wm=~5uf-(= zYh#cX)7GBbx=aEb(Y=;G58M9)`;4^w7TwFPZ?-gS2EY? zXv=D+7w>1Q_^*j-$}nrlbrOf}FIEp7^JKteRZdy}@44*72~RNQwh0T4ElF`^WIfBc`$a`UXqZ}~KivEy%}z?dOh>*>b1qZn~& z2Tw5`D)Wb-x%Q`&6}Z~MOabSx*Y7~{G6#f}<(gGj7+q=`G8a^QO5{G@rv~2|^yz4k z6a%pvgr{0q@qV<816lBE=w2C{8~B>c)lHswip5BwhuhV3%{7XG�a06nz7~)!;Ns zJ~7dV`E2K#E-z+i8i%(`8&;@%m&Trpv6K|+z|n@poZrPrHmq`= znkxPT6#l$K&HxU6z|VXTC4P)X8a+YjDgW*TmCO_?d>Ynh|5wXA_|cte;N{bwc&--4 zNk`EMzA+8JVH+Yq{Oz&g?dS^ejTIrj1=Hy+KSD2ViBKu`+*Caz4XZ~Co`6FcEnY@Ue;_ba5) zC|orK{?5Jcqq#FYJ55;qrKG?m`Wx5HJE6N?A{z7H`*!F1k|qL+$EuPqS4I4GKk&M8 zF4rVD+voNCz75)DPVAh5_k!ERr+JKFa3q;!w&Ud?20$*930;%HA+bT8mpNHrE z8->BEkWD>;So2ou7Y;+Q>U^KJ`>P8@%?f#?N{||Cp|D^xoN6 ztUI8%ZWQ+U9{?P#Dk;g;3=6)OQog_7KNozzp>-S^iWEk)7cpP`BpCW8AKJB4K1bEh z%lndYoQi*&mWYYFWV*R98|YwUL_fZ7 zAAsiX%%W*bo%qvAlcSzzpwn#p!|>=9dITl5C_37E)Sdx)_cz+(&27M(V>{aG>s?0_ znZN{EIuq~q@fW0?>uiK`^HzeFQwzZ7gLuDv$F>3;$VUjfoDgU^qvmHQ2dMGS@oHU; zB!H~(71VaHco#`Zx%3rT{1Kqli;C7OzF}y#wgbxMaq1mD* z7GaJdg7$%flXgdlB&3n)_Bg(1&9bm!Q#k!qqRB}7{Nf-4I#|3R#H(`|#KIvB^ZwZS z?6yJ{2qjUvBu_1$n!$bz1=s<$76SCkB@QM6a!qpRw#3zKt4M61mxOd1UOrL4Zyw{% z51vR1$=XC9O~P^gR`@V?Y#`K76v>hVHK3{!3XzY%CyX{ALcx5Sk`ivnRs9w9r-42t zPy8FuJK1jpP*+T=Nwo@)@1rTSFj9Q}c4f8xEu{z5?=nTId0;7<{y_3tOh|w9$ zoX0m&{auI>h{0cM73(+20hBZ^wuuL5tH+;=_YnYfw`gPz6~MTo&!;1;VKIRMueb1S ziM`Z#wu!@Ph(9diIMnm}%2X71`zAA!`R|x4-0L8`H_rHFg(W5e%$BNUwJ_SNKo{8& zY}X)OlOwhyP`N8On%q)iv6$wP85}+l*3x@R+gVXd#W#peN$lHMAPgd|VZG;l>X+LBoim7Z4uW>%-}Q_-2b$GN{|VrW zVG+T1M(~^gBiE++vW_F$-pHBlYw+7JY#_1E;3wYW*=^|iimp=BRIVz@cXQd+hsSxk z@ipjb{M;f?k!Mu(3Wm2htLpll66#xfo${Sf^yx2Os-x?S`{2LhwHR_7Ozg90WX6cF z<7Edj)iVFc+CUUjzggC>c64X@#&1%7ILgZi+CZn$LFJ1sEhA4SXUj(a9V8FChU)dL zv&$*bTO7h_|NPDzEy91^{7ewdm97FarJ|x@JaY5tUDIU*5Q9xOGye&*ctH>%#JvUo zv6T8!m~`GDTpBx_pP(?heoS&a-871=7Q%RHSHH_b{^UFIZ$DZ;$=mRB(WfKwx4xyM>Bt^R`d z<~icYV@l|Oth9oJ)I4(LpG57X@-9@Dj5WQcR!i$igQ;*HZ)8M;U-Lc=HXJ~+RQ?VTa#ie zN(0f4>{I=Ey1U?O)8%gP5?zO5@C(O;ZlrzbS4NNNMlS>FxClb!J(7{HGm?9eM zZ!aPxGmR2%v}6zRqaJ(6txo1H3Eu;jO?@_Htz56TJ0b!OdD?ITPSGae zk6?71JKlln9UMxSh}^uAPQUf148VITkk)V_o z2FbpiVSWz!+!yCD#buPW4~FJcuh?fcwtiD=j^!jMDUxS%fj}rG$vAz2X?sAQ|Q|rcqkR8MAg-_!s268g5*P*STUmoCD zK~{{8VR3=5a;a?Men@y?(sZq(9v(ZQ;@#CxEYodr_i~f+)m|5Ry6vb1ek1UyUxn#q?C5o$c_~E6k-y1oCvqe zz4*Z2crndWri#pIwzd|BSxMZ^F@JvpHy}1-~xS!whwSTVC#ufpTFSu!= z*%=vc2C81dXlYKmiR+om_Jf0s14-<6SJM&ZINSq9H(3S zonQHrOuK58mW?EjXW@)U^BwNz$Q$pOGu&Ic4}b!Siug0RLLf zqK7{}76e+RGQKKU#JHI#>+_IYu{io=CN00Dym`3pi{SHSl$7y>+rr>|H%><`;h_2w zJNV&WXNM8I-jYAEJpJCstHh>mH)=;}pkLOfF&=XRpYHW{=u5cBC${IGBOx26T4;nQ zlmY6*ZqHAY8ZFtA2a&J|Ho}*b1U}cAo;O!ge+jPudKBOjGSWr*sziyXIKPSG{z1>5yx%YjZj4!pWWL4l+ zFiqG63HL6cp$RDhp`eb8Ssp)>35vBBSOJtQ z`_VR;PB9xhQ2U>Igx?Q5$xMlsX`ZJ|ylQbDLdpEOP7j{}B!V)phnkMLJ%1&M4vCxI z6GCUX`NT0>+S}Izo;OhiDZlVdxC!pS&fb5}fhLTW9_#|SUZfiusY?pTW56g_^1|e@lI#TUL>;Zj9>s3cp)o21*xT& zeEM#WEAiG-O!T!RKFZAtcTJ6ENfLKBvnw0X;j?qST$s<#Cl+4Oe5r>|FLT}{Wm=&7 z5|hx+n_X&S&F)V)*!TYK?+Gq#7Y`~sjm^Vu=&NLLp7=yPq-h^eZ8=Q5{ zb#6A`VvtOSy~Im8&S)j$dbJXbMV^`rQZT?9DOcF}5GntG-S!n$%Dwg2$zh}>GJrm>#rXJ2y+T7--z$EryEyZ|FV7(OBT}g0ZfK7 z;jW3Tz1Z`~ni^}o*{8pJ7ihtjZ8=>53N5!Kfdi5zo^k}As>cCpXu4#Xz+boB1~A}f zO}{L%@w1bfiF)Ff1Ibr7q@M^GQtvV}Ps~m2I5MGJ7*pd|c$)6JsVT`jL1HFkQO`fC zYGjoNJ0p|=5i|*Ja~N5u&|D_ZFb73vYisMzLQD$aMOjz{`RJPM2#|to9&&Wz*SwLM zM!eF@1croEM>`6}uSY_EB5=pGa)Ctb?Cirs&Sil!7?g z`r9KhhUzBUxgh^{G+j0ADZuE{xv=V2634@TebbtFri3iaNo?-L>>mS#98V^DBBKQf z*6_`nGB;xqzh-U10uTxp-btigoTWu&b`Y`^fu@1=5DXe~>T2=l;vdPs70JEyq>r3C z5!$Ot)=+@rCM+384y+|ccOh^Fv*qqeRAUUa#Rufpa7-ZBfZ&TFA-zlYLuBX}@xJ5t z=m+E|7ZeuYac?*S&_O0_gdLpX-Huv;_Gfm=Qp4vGv;OB42Jf>{l4}Y0%zeW1FF+vUdHa(9YkA1D)^NI56g~o5&7(u2;AD!$9zmX=n4z(dMCaC~q zU^@kCBPNf!V}I7B%jQ=bl}v~a-y$j%m#gKc(rJ8a(0=zN9;G`~D%|~@5G6z$N}aX7 z@|3&zvp$-WI3nF_whARqy)^RRP}=yCGT%x-qv)fX1YiMp)v^vm5|Rs03DJXI!?kM4 z(vUGR;&*Wf&+)*_lT{^tHERv6yYwwGYi1X+8s&#D;e~8~9F<7HX@D*ntWqz5+eAV8 z)}2XiUet*ghpYOFg2B|mUvh#>3h-v7i04&D>#XhTKw7=|Qn8craxURG+c^sM>qWdT zB=6GdI!L3fxBaQ+ZS^a$<5pP(_d3zPugjQW31_j`I9zS*x6SKIy9v6vF6!FL06&!- zekDn{PogmhVE-ysJZSJ2$b`==D|N7|Phtdeyucc=`O-#AblL*KsMel2&x-qgTGJC< zQss_t$scw}9{_=H%?HO)gx0%`yS6jrFO`4Tk@FqA0+%&_Oo$O@+fjmRV`4e_1b>aS z`&qvV0?s#)j^5jB4rH76(>=Wc{lK^frOWjZ8KyP*uLVpnLDWnqkNUT?h+$(x^KT>nFF;cIP|0Lpv@KX1{K)G1KXZ zxAh!QJac5Fh-M-X@_l=&xg!F25YDZ>7M9kQtj5(s=89d1{)Jf^^Pm`rR3HLHSo?r8 z)}6S<8!!P~REf6tm#7A!QX)qRaUA@oGs>#i%ZqDu6+0u(Jb$!l({wWc$$ra;QXcP}f|)1CD-GVd+X=}blWOQHv(v2R zmP>}h>Xi#9;!h;cp%nfbtKzI|R!7}PoTn;BxV6!p^RNWw=gx6)T~#$U1^Nvu_BoF{ z$qlHqfL{VFU;$P#3oz%g*VU4W(wyZh|JprXE_bF+@T=mRw_05Dbeijf)c!t4dsi}T-jcr1QYo;VS!s9pi2BKasJ+8WY-|X# zMn}k(H`E1-F7FS9q!;>=$}(y$DdrW}!p-V+Q)cCb zJ4bpW@eKa;t(Nf=$l?k}iKI#t_XSTQ2)gY&JP=XkRiFWy4Ox6tXbE&0LIoo(`U~5F z&Gz5I@v`Nbhd^xoy-xY=Wwlz&zD>qZwTyTDjKJKml(??!r|kuVtws2J4{V)$r^JOZ zhi?t-R8~yZ;5dU&WctwNpSb2UAac88O34^vd$6b86p5KIh$sp zgZcL9pKuA=hBLanydf}L`yr%>CitrEOfPJ3C1qb|CR)B$z$rQMW7B8{jiqwa32|vG zOuvj$5ZAWT&V$P%?^4!Rgxhie^t_DTuVsIHAlYD|1tdYZ`q`om%+Hrot&aqEBw;t^{?y4;H;*9g)nRT^eus31`0Ht zk$+2W@$gn=v+PCt?bQ~=Jgla*e+0DsxY$zS0l(;TPi6i$3*e|mdGXFr?ds(^3V`*$ zsQSm~I-s>}8(u56Z8T_XH)xW^_KI!WYHZs{(=@hi+qP}L+4mm%d&c*7{yxX$c^*_* zUW!+aA0@^8aDEB$4QEQb?8_B94kpCNLwdarI0M8SPLw_#Uf$qok``pKG{LFCHS#gX=sD?X%){g`l__E#Hk)yY!5 zjm5%@u-%&7KnL4LOF}ZnlblDx?`m6ur}5<0$dK~NM|6JEIefce$8tIDShSH*F(lKR zp9dH56xt5mr};4#h}0~%=dO$rwI;bn=$GP)1K9khbR&34Hl3FCiOz#P6vq#c5#&wx zhOz=_EUY+OzF&5rFKTTh+MlDEvkzH6%vt?zKOY-);k%C77CXMF{$Rb7a5O2L^tuW# z(mS2hdY^p1BeXdr?zq-gwOUIgaz6sAz^ zz&@T*e0CFO_|Qk7Y=mafw(EwhmiN15%yB*RYS~SyzO-}xIy0<{FkQKp^ys)rsw}*n z{PMBaD0S={B)H1zY{7?jTB&l|We5X(_e^7BV&plf86JG9AdQ|=T{9lf9e}F!irrL**XrBsCT^aNX7dg(L`iV3k zwzBiu{uq3-jl4bBxc~JChiYFbtpBz|Aj22=vCdTAzs9d?BIff+&Y*_bc`nrHo_13F zyuRrdRA&c7)lrPV>uhRWc8`UAieZwXt+`WV;SZAKH?nu`vLOEV_EvJidbGnnLu%jb z7|cP>>;zpK+b*(0>rV$IkFi0Yu|k?6s_`@N6h2R#7l10U+UH}u6GLv=F=VlfWQw+< zDbMG3N2L5qH}gjH4ymx!+Zo2qDY;Ff*ipu|x5zuv0Ciu4(t=-gQLLs7gYh>M2_*dm zfLE+-7miZaS6?_hZyfpKvzDTDsSoIzNA=euGiSWD=WEW!B5a>)-%wO$Y8fkQ$xGjh zHmB{*_4Emf)W`Yy+=csn0(je#TLGNc$w7nj)4ui@igWQ}vzz-qZo}C{djYS7&v)|| z7TOKMQa<96j@|vXWWmjsg~lDrT-}MBz7t^|Yu<%I-B#U(|J)P}LTHKleB~)r&M%XH z(Lsq|$%F+#C|kD93v=V2u4u{NU|*v^-}VrIf7usmydU_hB=+xbnH>HfI~d|Q*RX9B zw86}AWs@vl<6oDuy~jiJ-^&Z_6v^LnWC<_~&+jfaqD7H&VR!2n9B9_?cCT{wO7HEy z>)wwDBH7|`jkv-_?v`2lCtwWRAZH5zRYFRV0YnkK55?VW1$5U?7d z=!~@<+AEP!pw%cxIfgYgV>P!s&I!y)-KFyY35%Nu2=+6sL=M~BuS~k+Iw*`_{s19F zHG5hcL=a9~((MA{UPU)^V{?;u z3|y$McP%8H(^s6xsvC_lc%BI{p4O%lwvPM<>!oqA8iG|<~-SL<3?{rO6=kC5Uet-BS=OskW17O=G-p^qvm}3oXKv79sI}QIx zK1mW*BY71AI>82x;YKcXfxd`Tvf9(RqY-fk*LDSkS)=Hfm?si@keMtm9!; zvEqmiw-@1_zXkIGn8=lrAH!=-`_8m8o11l%G9(-~tJ!Q6-UNcBLQFeC(q3(b$}Pmh zjLK5#EZzkEu440KzZbC`nI&D(DKCg$5)x*yR3U5e)OL8ZX8xIBuWr*(Af9xQ7ckxWSn+Z7isQm!y=|s6Tp{2xn$92aF4n32O86`x0m5n#2w_dEqv`5S_CJZ6x*54JIuLl&M7k1jJ9FE z{U?U5e9L`{)c&p$LumT;?*c-|`03*tre!%+rt%!^b+XFZ3PPV1O~RP)ZGS)c+caqC zjYd60YGJ$ZPJ9vBRqnkRvhzj4_l&4Ke}!k@4{8A{jZE&Y4MxO8IlzqiD2h6BYz_Ph z=@e^;ViH1b&+r5BotKW||;|k@Vj^R@* zR5bd~%Vd(^*;1^CXv`#+JJS6qRwqQz8~&C`3ds9uBY(Btq=oxcu?;bH)13c_eqh#b z&&$6^)~-=+!LPCsxfQ1~{xz_;o3(~+??o+zR}&N*{^-Y>`8JAw7gwwvr5`nQH9P>T6N*!4QQqu(o~ zluE#M0ZF%d8c3aQi#$)}%Yqfl z;i}hJZ3XCAO8MNNJ;G?Ckb@F}V`h(kLEe=JC8z#dKhvB3Ca+o-Dln2gS>EP)ldRp_ zRB9qxBvnW|c27oL4v~2QYNl!5?Qso;oHDI=vub&fQY)_XKDRvf^cxsiIjy3J)mHPq zu7u_4U@ogo2L@>|OQl_)s3`2AR4=5Uk(tVwLi%#JHo zZMIMN6K6TnWOY{4R;i*7~|xrvYtfZPY;DY?+AS4Te0lL z%HTgUrJ`|yaS|y>w3TfvssVgs=g?U!9aEONw-!eDjqSd#DQu<>Wn1kF#I3-}oQE<~ z!{%m=J$JC`D58$6|uFRxZcm=j6Bk)uu>3s<8}z8jI4H|~CibsFdXW~1=K8?-Oo zm;a9+mS8=_=|6Gequ^fCdtgP;?IR zM=n;J9nx}m;5Y&nPS7KX*Pb=|aTOZmbwpb&6%dq|*Do01^@pc&L?)YI8ErAXkx};~ z!HgF~JMWRWv$6=NJ14ngoG})LDmhVrU&7?7an(K$U{2x zNrvS{0W_5Bjt3Jm@RuFW1gh+n5t(tyf0I+{;%o3IL)peM!NdVE8r}({l z1Js4mB9#5Vkw^#GHk84wTPmy-%KzpDc2QAKV;vz$=!?zdAy_VpbiTSNlkOBEKw@{( zle}K0>rH&QWoXUMjPk`MNyszU6dE@g#=UYtgcruy73YeqhJCcaw7}GeFN=M^XA#2X zWzYm5p=q;4%f6(!8CB50v}Ly;V>XN`D;^Ih2zf;(b2a)(uhxN7l*7YART$?NJ&+ym z`p~FqsnGg6m8;X>xyI~r?t4N2QMox8l5EsXrUDvtA&nMvL3uJf_F$*hVEadoB3B^feH-n{~PGTXRc-0GuA8WzMFIMXcGn(-dAAlGOzaRWKH!Wp!_ zGeDITBe#zunerirfmaJfc{LC}b-`u;4vj>!)r7w0wo4#SwR>^XR}_y@w3X z`JEWr(2JoTz3>b)gS+pQ;dFkGIZ^5KaMokT<7Z#EEr^i4F%lu7qTW(|B(5B4M+Wy$ ziU`!hdAu-V3 z`*AO&ZN^(cs@wa_w0WQGo>;0TQqJclq532ZD-~p7QJ*I|{n+{WE`Q*}%B|W(ovkud zKkjqo*Jbu763`@8;|shXLOOQzy{+tYW=%{GHbf%?nISv0*)5L<%Mm}QcO8r8&g$Df zf%BIXWoSz9^M-(l>hL=MR7oa^N3f09N#H2T=lOF*@2*qdd+r@FDA$3)@UbF=^ob|HnfhFq=OntxhvZ&c2)KFf#<%su+ z)5V2heMr#zopO%sPM#{0JfyZFJiD{>Hu40s59D4&LS8W!bA9A^%7ag>upC%W;DF4c z9wLXol*_(V=Rtynk-y{`LH=0eZVOzb1@hM3A9x*0>4uX$w^WQl@}Y^aHB3>e=J7gz4AXfu5=)WOqr?i0 zOs6aQ$o2oU{e~sgAZmwz8hI$%(nEtR??%p`Y5CQ`5E`!ZytBhZ2?Rm!yKaShj?CB? z$XVc)L=+@@j!b*YY!tvxwPzt>J?E`C?YPc#2)p zR9UC`O#7vF>Mgvqh6> zn2trzwe84w>Q2w_a_&sW6(bc~^7gqqg8lxzcDY1s^7e$m15350z96SZ?c?9vjz80^ zp{r22Kpjr7LSGh+K6^`4xNNBM!;&q=C1oK7SEdV5;!kf}lr>FPUZD~vFAs!z@duMcWkVyL`U04PccWt((ChP+*2jh)G9>O2 zuC{S1{$YJ;ml6Ln!Cf=u6#7`1e2YuZEssyWKC#w`#06@q9i6)x<`M1FaBfWu5 z1PAkOV+5ktHtcLTlx7V^7y4gu*z+ig*-9(%8~!5t*bWxe1OKGRI%TG6B9b}$IBN1LBNHq+MlYh{D-HK zj}fY;xhXk=IP2jU zVwYf-S#PjRo}W}BNrLq?f1`gNKOkyB(&l71K+dd7Uzbd<9=#M17~I}66ci*Q^L)UM zX{=p_aMo^NjE$vv72(@ph`}7e@{|A$)a)qrPf}M-YXlIjS;m_N#n9~COEy1ZWMjRI z+M7oVCY#4!+8o?_0UPLMjW&aWA{T_K1l33?tx36Vz80bMb%{{jczLN>DS8-hCDoNv z`XpVanV1|3*{coP8PdXYzHCk3EKyBbz-FN%deh35@(Y^vsu>EHw4ne((tNA&r0;f{92nW6knBA0 z?awJ51>->;jw6TC3GQVDei;GUpgUuDmi4t47`kY9IPcCsmMTs5>;Q)gu?DN!8^cyk zn<2h7f6S;2yNl-I`AQF!Dc62XVkvlRdL*W!09UQl0aV|^cx0_~AD?%`zJ5GN`5>vc z!tYIvvVmoJ+ep}cs2IPhTvv`9Yu$G}cEIU-L}mP9leELG=fTVEx-+fb>cgB%2u57@ zh4nCgnLKYl`pZHxu^e4}oy2Dw(q=z=-yCW6F3~g#dsJNUwSrV>{-3hG; zzw7fZA9tTjJqQj#ppNh0t8J@H{BMZ;KLs}J2`c!p;`q}b;plszNjoa8{#~d;q76H!`i3M`ji_GNr3+}f}OH^hgGY(8L!!%aY()GHDg8UEwyvy%&*lFe5 z$}{bqcg3$_Qpwr?a(_BQq~@P1C~k~ye>LOX>+ov$wD0R6(CVhWh=5SaO0pK>tDOiX&?G%s~BUDEh{?3s`jqWdL_jYx;wh~s%Q>=Xrd%+#{`YRTu}|< z5m|Zi@j(Y)2{hPVdPi8J;fMEyWkRf(3b}-ItoXAjUUmkCWN#bbiPE!85 z$`76ZWB3LaS(0Bdp(y4!6|r$7nh^}oOHt0*w9qs$Spd_yI z#~aQahxsRcfkdB@$=B5j?5-obYb_*A4n(>;cWpu1vO_PMpC+ujNS?ONHUG)E;oz9i z|IuNS8j`Z@w5PG0bM=3pJ9P=DCELR5B@@H%_yZ9PiKc&}UF2T=Gdo=@k8z_a2rJp; z2$)ZZECvfkuV8K&yc-^a_zg3lhEV2!21PbRcof4WpgD zo~{suKlbIk^N22x(!CTv-r8I*?)SyTMHSCAKM=3nw&xv2DiNW~tUYPBV<@7`Z}cY+ zo8F>kUjfKg$3&z0>wq0{@_GF6!12B-{6>$&@|4}K)t|qd7n~7{YM}n4f5nQ6MAflR zf2L)q>u@<=OrE5L{bclw1xvQUg=OphY`IoREd_umh^)#tAR1qx9wwU>nrNP|Xk1IR zhJbbPBS7gO`S79Sxsdh2;yfy_MPT8(FGLC16qghHkhQRE1L~Hxd|wlP3vk6}^p;5b zvyfR6e;yO36`aikbXtjRM{%gI;tHTyS?q-jj*Y_FV;E$d$shL#VuS!+R4fH*9D|y{ z@_O#$ip~(T8T7v8-kSQp1l(o2>Jngyjck261F!~cMMoItmCI;JNgpZ1_(-q(^lpvo zZ>9ok8!7ksh)sAQlSQ9w^E(aSmoj54{afXbv`#7q@f>NW{G_?rBm9_DK69C7x@>Vi z<%RrgUp^k-KjK%4ehw&PSMMOH@md!4RWAAe)0i)TosMeJ|0L&@YL`oWO%rHCGeBgozcJPm`cWAEsLFN-wk|MSZaB2b|eWne^;dLcxO@-)d@nI-8Jq*DpQ z1q;(3f6z2ira{Y8A0s$NRXykKI7QJ4ZFrnJop50`fXnR{Ku1zYJ89R26*znHZw{tu z8*Loy*B4{~K`k3$4P`L2MP<|Z&_0L`Qv|dBI)M@r=Fj~XiNQT;ldKPOg`*jwr%>au zh(H*sk#;md4(ck3WE7=1fKkASo+g=r$aFLrn8MIah?}RVU1q+rqE6Y)sfmG^`(@=n z?)R(ju3Os#LooH)n{HA>tv@-17h7cH5MJGAS=5|SPeEYQTn-pH!aaJYWBgMCrH@5! z3YimO&UzD*lW}wbuV0LIw<4M=w?Z9P13b7tX&_B}9f-X-~)c)@5&4ZR#> z*BSI9BA`4eEcd5+mN;h#z_}MH*;dkWUWKPz7-BMq=O>YxdhK8GLFv9kDgobNlJRLtn z4*phVTj#y?V?-gYlgzM4?rXPZ^s3=j&_V`}PAM%eyd81VfG;ntS10-3!1bTR_?1B4 zcLlShHz2>KhLE8va{k!(B%927Ka8ykQ0BLDX+?>%Y*p9=r5Wcv;6DsyVBNXm;_X0ro?KBiIT1 z(KXDLW6&eMhb7#YVhGJ1>hBwDR%m3be?kyP5mS`q7l8!Y(2S2cno@8iGK8^0^!51UYi_ z3zT{iBDa8;heEOJ>rfbj_AqrtXgk8ya4nsWxY4TIo ziUwNNv|m8^u?da#TZvYw6MU6ZbPmeMJA+`9KAp^^dm|t!R5T&!=@ts=0+ZF2#f2OxpU-Z&KI{hLDKh0MKkb+GFOvx;8>TnuS}R zhq(whdyq5yvvbMq3O~lNu~bUmi7AK}@mKBm_-MG7o>=CTq=l2FCeL%C6410EPy8Yu z5%=5Fj0ngoMe>sA1Wg>hZ@Q=?j^mvCPpqUP6v9%;^=$533&(QyFN3}-bgyJJatP)JsE$1%H0T=hHZVGMFsSq7#Y1?m; zbOfgJ9lj4RTm05J-Sm&hm29X^q?FD~#jB=MWPxaMYDG7L$;&GO>BD;bR-dOK_!jkr z1ae*(ORH_-XDc6km(%zvYbjrB{tD#^W3Z}IPu4%hF^n?Q!IdR?N2Czn7>BCTTP2%+ zax~T%L@oT@M^V-D;}`zx_}3JasMicMc1qTt6OU2TUFuyEQwKpEpoL>tgTS( zL^WZPzKzu7mvKjr!371QyMo81Cxfi5_vv#VQwv4=*ZHEPX_hnAK7yq0tE+FuM$qZX zV#mk*U8(K|*@z8*faPFu9sU9Wr6(VbmTY}9^9na`*aZooLE5gxJg<}$)6)|EMoC}m zWdm`!m*-Vq>0?@=+E_yyQ-5W#>&^-Lf|tlo_u*p-p^B;Y|Ae?{i=?bKed+qCGWXxt ztxy8_IP@)r^U-PjaIhiUBRA@3EzZBUS*~lSa3?Tegr{We4UPnGK864qP>@^k2*Zln z8M1PEH+GU`(zQ1ArQynIHTB5=Pf$_{&tNUj^zWuYE@n_)u6}-^VVJOephojQ=+kiP z^^9IbD-2a)D6WN(9+mzF^Jd|!hTaFWW>$~8qtLHW#XCrK2Za6zO#97JMwTP-TNVHz ztpL`>eSXJE<}y7XlR=&wmm8p}$Y!_HzN|OclixSg93CIX0J>~G*aYk_m&ip(- z|6jnyZ#q zKIsq}XNO>15&>9dX~_n8WH|Mls%WcG8TdxSinof-maIjU2)*SQlw2+7H`K7pId^9BuCbjm5st zi@q|qhm&%%rW4}CUv^SeW2@qVPgx2FPuE%M74^_p=Brk%nm)f+lGr(jgDo-yJ%>zQ ztpk%qN6g~ddxzJA5Pf5j3wsM!3%y%1mW*0vf9f?Ieb;>Zns0=RdFXrDaRPyo20zTr) zN-oOf(MCMhnzNX?U|kGu5CtR-^0$9elD005@jnCA54#rV$7S@rnF&yO=hqu{T1=QM zl2)6deq1`U63yt*iQoZnWci+r{PGX#y!s_aRyJ*c-?TIA;8`Z3^b)uHM~W+c1(HwI zo!6~{5eA?N%V%mtXX)-Dro8x zaQ1YPcvaVz$}bzq!P8S-$uB!bJM<3ESg<5d*X*^BmSPC3^_0D`;dIIniy%))YK%#o z-oi}QiZ9%wui#O(qq1KLiQ7i`tH8c zoBqen-7Gi^&taycK~Y_^C6q#u zuB9~NSY;f(00lgBL%W|xxq3LP9jK#5^QGitA;h9{sOh4P-?wEtnk1EB=+~HOuG>&e#+OA78ZD>>L;?7Nx{j?;wmlev|2FT#s1Jn4u|5SlV-e1hY zT`?i0P@?m2sG_N3_*0m%8-7uo^ER?pHJ+_tZCKPl*^m&ssMoToHM&IbRO|{ER(81q zao}BWLfyxXRCk)JiEdN4v5v`V!S^Cf$O1FCg0;IO%6`@r1g_c*8p-U6m|Z`Y5^7g!+r6=yE(5VD+}1o{3XkN+4CUz^ zkvq8=$uQSLtkZ@)mb6@pLx-ABl6I5{Lmm%KI2E3V);;d|&w(EhrFgY(4 zzgX4@H=`Eth^|ZTPv~x?T@#7M?|xcZg7|yj_r{iFmE0V26^_a`o|Dt@Z19Dc?(p2T zy(cp&YT7EUcUu=&&kyd)h{)%SCSdOH5FNWc@Utbw0%Ywsn3Z03VSgnn{}&s>!I2IB zldF51983TFrnQo?dKTI%U;rnZqSvckrguqb(*cL|ESa?Nv z!+Vl;##{Yl9T%!JGf~WSnuCsJywdkc7AXNwio;Ulf3I;lG;_zFv}2lriCbzHcmS>@AuRFR~YDW$kV?AwQSF{ zGk8fc#k$%yWc%h1ZF<|I$KAV*AK8mAQ=i|2uz5oAk09NL0%tfDjp$@kFfUM-u^NXO zM4?O~X_J$m%$CG5D@kk3kvHmFTl6CIr30br5|kPzJZLCZsNSlYyfXtLw@N+%O6_nJ z$?dyeW0K$kucrr4Nvsf;)fC!S)wMi)_p$A<-TWmo?Kp_hOaG;BPyiQ8wj%Q(0Q(Jg zK|)4do*k{%RLa8N6j41$!g7ih+el9)lWVn;xNg-Mx`-|zz@*pQk#Q@%y4=HV8Dp=k z^EqZR71MR);AOALFr2tTLd>2PQ}!H(7m0saz^`67q_~3p^rf3ws9kaJUy`;tyikW6 zzp+muP$c*pcd#_9jd_Wy~o7mUz1RDWMRU7dCR7l;Ye z2vCfsvcA*KYjCT=MwH7kD(8%vYJYK3Dvy2@TE-dwCD>>;Q)t@3c@=df_J?h7@5%?p!P|kT`qs@7G=<-kNIM+*^W5azK0KM8_ zybIejo96}Jh7iP`7~bAAo4Gey3-f zEAq9$)_tP+Y<0Xjd`cZ6K4(ZoN|&?=u6;Cs*lBy#qDZ~vcU!y=JpTG~WD2=m%KBX5 z4`4Y06NG%>yn>Pxz%7|n9JWUoy`~6929XjOmbWODKYi0WVk83ACk~wmL@k>WT!T|A^q;+Eaf@pp~yEZ_*RMlBDk_?g=Lta)*Ec182SN^ECo<%i;Oyc8<#sol^Ij(4S+DfpHSvEl{Te3{ zf_C%K15-DH$pv%y_Iqhbr|uU6)*N2f911Og0C{ITXOiUyB1Il9XE3uDw-een1P2B@ z)s~hknz_4i{NC?XZz@7#1D7MG(m4$^6@E<{R4gB_ zmEJ;U>DMKu_RZdJiU~Hme{2p(kA;xp^hc>Ms%fElm9%sdkO89zH)R}G_RHG zVnww2)$#f(4#@C8>koF6mCxGRHNO;lRWlQn1SH(NQ@-%54+ z)LI^x3ugZ%(Hd;3c<)FFSXc2=h0PcO6k^WNJ0C1fY)1_fkfl=%4GB3-KJ_A^i8=&evU1|or4_jw4sRZPpKxGMB?jy{f7vy#Bi|&cl&yvQ zF4)e5MM}y_Sv_Zc1&#GcPboSjEC0Gd;?q!w1PeLjkY-}ON-#oW^LM|Va~TjtWUnOI zppcMy(IiCF#ejaI=>q}uK*Pwboi6D^5YTG(lxsxzuutN6vGd8;Vh{dZqE0&{fr_SkhlaM3*1(sF4%xCn7i_wgWcr1?bz9Tm$18PI>Le&MEhKmVwGz>2N z?B-rN?w|{aww^P{V*WsI5|zg$K!WPkto*)tSM?!^Ydhjde!R4idoJ7?1Wtv=wz_vW?)QXb03#bBCj{Kn)sp5hqd zXuK9#+puPt-(snv_NMD^ggJtFEy;D3)IrIMD81Sho8trvqhIKi zsxijsb&%t1dI0EM6tb~oqVe(FvIh;!nGp6np=qJkBV!|B%Fb}ivi0wB7RW%v%ax(X zSQ1es8K$1KyR4JZhEfF#Qd$YnG_Nj2Y_A)?wR(#WNYT zvT$b3J<>qE_Dt8cMNvskike^A8()^pMuQHChBgP4)EAUe{Am0sJNj`e&^m3jjYFD%Iv5nMlDQDpia0E`VcRsor9ga zLmVINZER@zx0wx)-d+FKj{_)rZgqE!3f`b2FJeq8^LM&ZxG>Fu+*fHrgtqB2gUFAWU__3 z8O|1uBXo>V32~m%-t1NmZ}!x3DTE%@JnnZs|DZvRnq&{XNqW@2Yair4ZDw;kRQ5Rs ze;mD6w4LZzIa-nNbha(z#F=%>Bpu9X8zFLCwAqN_i)I6~PKHrEGoAy<>^qsO2pR{X z@CPmIPG|R1bSGZ7AMR>W+PvgYi}=q>mSB^BnwF7h zQ(1LRg@B6%x}yC7gw=h-L8B>}ZX_XyXqDj7u%* zg9uc7a;`Z*8>Qc~=hmF$_Mgyw_ewh~0V}rrzPO9s!>2Gj2wtBtJ_fFtrp%40pz(!B zgA{+Y=@2<3+isS>vqTR|O`L;^s+^H_%6x*=YwkxI*efbAU#=^u|>+pL5-+knGx4mZsveTX4%kPM1Qkdoc7Gzd>*hr<>zD52%mKMyZ! z<_PgdoML3Z_D4$R2P}?Bu8cdHRrRE@AH-eem36;!pNb2}UKmzB+Ckb$scC|mykKQz zHX-M3?~eHMn)o5R`&XaC)oH6yBmp;`Xg%*y6(OnTR3fIMPjd}=RTX4VfhX@M zMuC@X20tqz#ZyV0X?CvG5Zpene;d$t1R928r#8=`78S>GYL#ZXE2tXc=w=J-;L%{; z2u(O#h#Svyy3e=5o4fbp6ZTi$j)CPiK3qao9`}Cp*OlJO`du)VUia@R-J4vl&WP!# zB%%d~7YGzCRk^;M}P`nX;%*u<}#k<<68p#pY=f z-w-n`$dyt0yeWw9;yOl((c?OzH@*;(+rpU4XT$xl$kyu}9~j?p9Az81JNV_k%aq58MDFZJiQlKa4b=XHmw&YJf3K0o52Uv)c+1%*`(G zJGHj&`@J8wqayS>OJ;+X^E|fjH18$7EoH^T1RzT28yFpr;5(2`UXCaP4ksz+dP^;e z@|Xs{_5Ia8+NW0FNshav(MWVn>jAuPmNL<(tJ!1#!apXPaCPP&>QtUiBW}1ODx*E7 zqo^|Rn(vo^XkfhcSZb8Ic2i_?wRYXNr6zshtJM!BStlur?ey?{9gM5Ip_(=abOci- zsIsB`QA4#y2Q3))0P$w66)fI0Y*TA|wvr>ucEc&1%SQbV?a_aR)`lygGIJQ+!6D$u za5(2CUYXJ)yX=-g@$Z&1dnF}dPe1aOZZfGOy2;^id;Xb{*=ll>$6$`(;XWcLw-csS z$J~hLkD(BUJa9v?x7;NA8|2c*ytZT;i+XZSrj(jngB>l*2>sODYG>eWXbmw{T()FG zLjEn11IZmN6wUgK>)>_WywGCATK8K8%WDg1fbj@06xL$Nw!|3FKVSq`HP#VAiRqKm z3LxFe+Z7hr+_$|_QmmQD-dAXL@SL{

    -The items we are looking for are ``p`` tags which have the CSS class -``row``: -.. rst-class:: build +.. nextslide:: Filtering By Regular Expression -``find_all`` supports keyword arguments. If the keyword you use isn't one of -the listed arguments, it is treated as an ``attribute`` +The next job is to find the inspection data we can see when we click on the +restaurant names in our page. .. rst-class:: build +.. container:: -In Python, ``class`` is a reserved word, so we can't use it as a keyword, but -you can use ``class_``! - -.. rst-class:: build small + Do you notice a pattern in how that data is structured? -:: + For each restaurant in our results, there are *two* ``
    `` tags. - parsed.find_all('p', class_='row') + The first contains the content you see at first, the second the content + that displays when we click. + What can you see that identifies these items? -Try It Out ----------- + ``
    `` and ``
    `` -Let's fire up a python interpreter and get our hands dirty here:: + Each pair shares an ID, and the stuff we want is in the second one - (soupenv)$ python + Each number is different for each restaurant -.. code-block:: python + We can use a regular expression to help us here. - >>> html = open('craigslist_results.html', 'r').read() - >>> from bs4 import BeautifulSoup - >>> parsed = BeautifulSoup(html) - >>> listings = parsed.find_all('p', class_='row') - >>> len(listings) - 100 +.. nextslide:: Getting the Information Divs +Let's write a function in ``mashup.py`` that will find all the divs in our +column with the right kind of id: .. rst-class:: build +.. container:: -That sounds about right. Let's see if we can get only those with location -data. + .. rst-class:: build + * It should match ``
    `` tags only + * It should match ids that start with ``PR`` + * It should match ids that contain some number of *digits* after that + * It should match ids that end with a *tilde* (``~``) character -Filtering Tricks ----------------- + .. code-block:: python -Attribute filters given a ``True`` value match tags with that attribute + # add an import up top + import re -.. rst-class:: build + # and add this function + def restaurant_data_generator(html): + id_finder = re.compile(r'PR[\d]+~') + return html.find_all('div', id=id_finder) -Location data was in the ``data-latitude`` and ``data-longitude`` attributes. -.. code-block:: python +.. nextslide:: Verify It Works - >>> location_attrs = { - ... 'data-longitude': True, - ... 'data-latitude': True} - >>> locatable = parsed.find_all( - ... 'p', class_='row', attrs=location_attrs) - >>> len(locatable) - 43 +Let's add that step to the *main* block at the bottom of ``mashup.py`` (only +print the first of the many divs that match): .. rst-class:: build +.. container:: -Great. That worked nicely + .. code-block:: python + html, encoding = load_inspection_page('inspection_page.html') + parsed = parse_source(html, encoding) + content_col = parsed.find("td", id="contentcol") + data_list = restaurant_data_generator(content_col) + print data_list[0].prettify() -Parsing a Row -------------- -Now that we have the rows we want, we need to parse them. We want to preserve: + Finally, test it out: -.. rst-class:: build + .. code-block:: bash + + (soupenv)$ python mashup.py +
    +
    -
    small (built-in class), [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11] +
    small (built-in class), [1], [2], [3]
    -UVCb;2lDhlB#vFXE7|dC=t1&YV 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ˤ$R6Xgd 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%0DZXzb(#-h@~?qrHduo!6BM#05kxkzse!u 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

  • *}HtAb(( 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 SV1efxD{VXT@V9Lu?N+Q< zNvF%!XY#B4(y_=qt%Lt!rz*4N8n3o|!a_`fy~q*sRLrmJ=tmm}rdl4yb7ugpIOZ_-&qTkD?4-vo0$f-ovL~HI_$!FvAA{bO4H+ za#l)<=cn|^&!+SlK5u#-;0p$0TEA3rzWJMpP!hzlT=U}3bOXa?noesQu^jq&N;lks zWzBntB{mGJo)a@jvUE{O9|N@c!WUCI_mUio=uPkDd4QH7gHw9ln_BB`?4`bx_dDMJ z=sI^#ut@gVvJsH!-jr_RGxVTb=HLED291V|&FK(EGaYdpvg+cL{`A{Kd_3Oy4M5fL zDfJnc-QNVmRxG5xSzuMOi-u&~_}>&3n*Lz#z`IemAA}U*zHv zyS6K)sAJ?&(D73oZ70&=UUALIR^eWu#_z}zarhjvYzSTcb%m}QqixwH z0#R>4nPKEBW65C`yQQtg(r6nGckYNV)3Imze>0Y(Ej2yT!8LpFyhnP-O-Ag#mXrN|SLCax8~2W5%E;EC|_*EIyO2B(6lGGvsVH!_q0Ycr^ zzwvLlG7Sl(_N0?eN;?3`RMa;hblYae?NFfa4Y)L9NG<6#0b;lndETD71I1EVR!Fs! zVG)6ai{)+7U57YXGp0|A9dxva>)OS56`Rv8Xkz)cu^jY~OD>C;4Dyvi=qab19PWrU z(Bj;8y^H5?M^l-HP9sN+Nek!CM(FPWfYJ?xpLj1k;cBxWYU@E8@jKu1YJ6+G{kQx^ zG5079KjftVRRL>sT~e9oPW{@o--1O|W5mBI_|~@t+UzeX)y6lGrh>OyP~y8`C8Cm0 zSY7O-uEm&Aj4`$s-GK20y3vOA1C^Y$^cQz53jl)$wi6V(qYpmMA<69xrfc7`&lUXX zSfRqJ;wV6>#e%@sCiu48=S-7wEXRUGKGp(n)To1ERUWiE$`vume9m%`K3N5TMS|2Z z_rWDgmM{*?WQ-V=h77F>kjUMf+zm@Y+qYF>k2&@@_!ddd`ar*)#7VJ#82iTiOwy(@CF6uGyFHW}++fGyaQ|aGc|Iyud zr%@wEr1Rf*S*$Bz;f7j_8_FB;9X^~feI{V;%y5&KGj|@YY&n*m zJSviV^wCGBkt2o&&?wLhae^0g9qfW>fL2;CAuexasfq=MDog`5(a(&}q?;nW+hiz% z7Lx1~2vDmlxiJ7iwz!*VE!_hoH~xvIdW9+N4sX)4&|QX zgqDQ@xE=-n#8?SU?SJx#u8smiUe~H;E`ikz%I-ZE*IYC+hMIChlmTWGq%z&z^!+~6 zud#7eEW+6*!vdT>9c@J#1^>o^0O<+x=W#%*G8cicqys22J>4I-Q#Ju9*?9Gu^4-{wpOgdrh8m*TLCop$PT$1EzIdA@Uh%!+#UZM~~?5$g#p zhwg4Se;N0?aVd>HBm-kqC2d^W^2m#RSvZT~jHkZ(B|bOq`S`Ft$lRMVuyi)-+0&oI zdg}u60mw3+qet@2J*~jgo^QYKug`w=v&m2CC{dt9fdh{M`+)!MTP3nk;&76WP^|ds zbwB=gGA^z=!Fs(=8nkqY6=9N4s0gJP;k^(TV|9Bo{_os#8}oGt2pcvdc=8hX z!VFU6Xrk?}Maf&zuqXnm3Wg{UD$*%btAr_#hw!7+$>EBytLZ8vDyIsFD_1tgNUICN z2QK_z%v6h5ovLO<^2a~^aje>Y@WKm25Yoy)!CPUnV;Q?fu_|iZk9F(T5RYUr+w=~P zG$WP;d8_yZ&_mt=Mha3|6G&TE8~rHQsQhs$l)NR2SC9vyDHq(i#C8dRl{9=WrekJg zg;sz2u}uU|v}91gGY^$w5<<9YLV?4Tp|_Sl6|rmF+}X3!nQwd}L7WeZHaCq=e)3b? z@0>pQ=}$u_c7;J1RS;Id-vt1bDVT);+eIN&dI%U9zs8kb-ON;a6>?p*luq)7d{qQE z-AZ}fbw{fSt+Fn7-~VUtJmB=Ks{DVGNis<$ZD!JEl1xbtp@R^r^s<6j0Z~zRZM!xE z`wEEY>gw9vMHI2SDu~iSKoF1`AP^wE%%u0;lmGX7?)yw8A&{uB>u3M(P2PFm_j#Y^ zmUGX&_nhB7=iIlYaR(lnX3vWHA3b^a0VXM$c=eD3mSqe8L$=t(ct03*iQT7ob>XaE7ksZ%J1N=cNxyW&{tF@F4e zOV(^>DtJr260E4C-vt&`92PEKj+^Hqf(X|~ziQDT-wH~2TAa+FVkLN?+l;~Ai#R)i z5baYj$5@_xzKyt3f-V6ta<6emq`kY+CV8dU{cfL6`_J-Q1~jq)mlYpkqM+~?7f3)s z6;IG5tb+uK=u=&#)NOQm898!v1YQm|Ecjj*DS;xDZh>q2-~J6N6LQmXZ5>;nTAx|> zZrFkU`Ogogrr{&tBgPB>Mu2aj2pilNno%FevO$c=Hg@W}Q$}~Jwze@Yr2Bf5VCUPe zolyMfivWJ0PX?O-gc(oL&N;*RP33dp!i6yo1!Jv?0FQL;N*{WZwXQy%5V#a8m0`HT zEY=bNn%RdYkEoBp`Jfn%CCe~>$4Q=>cJ0IVwD+@|Wc{jf8}is}VmpEY9|^TOtI z90w#^M4X~^oE}*P?F5NduUv*ZE*l+yRNJ8?9T#(rJR0jFwRVk>FLbNQZGt!2r2;4_ zF4>Q^H=p(hzr*LQ4F(6E*D^Qw&WXc3vuhLJoqa(0TElEwvy^Ih#Cwle>+*bu3nc%X zgYy`30-`T=9oAUpI_vE@m7a)x&b^p7F|>Y(HJ$QZKXpm#hvk+4gqs=isB5rmlzg2x zFLoBZYk2?}@I)p2pzCoJ>-vZ>!{GTo(OyrrH1SjPiEETe`V0E#>Uz`ff0w@X?QaK9 zY3ZV6$=ly?VVq2O_0?C$j<{A^jwyjHH&yHx`>DI@1=pP;2#n++o14nTDqO}KGXe`s zvErQrxS%zcmOQQP?VG#gTu z>lpI>#>U35dNBZOLqkKpP>NdKZ`q}OPjUl!3Q-7?a4EF4N zpcS&e_W+oq(1>|7Wy%!hhZ^WW{aF)b4z1ASC3#s{!DkIfAN1my{iHRorzgfdL%Wwz zhA{?h`?&qaBTMvy#)=o@3?Be5M!mO*g31Q8!;=u5yE=7#>A52w+{+(nC{U#J>X~Pr z**0(O{+RNV2b0*AU;N@1Y1F7uyWdj&{t8lH;IN$e0#-!rlOTsfec({olOHDj z3AZpTVT$B;uMaBau`l-&&%W4uHQ>r7GMf4%7C1-jyz8-tu?*U8=l7TE)3?8lWz|Pg zdc%8jj_h@(n{Iz$?oKI)rF%?TAep{^rPQlV&Y$=6cM3q!r@oC|!SuFrNd~4a|6oeL zy9T$n5AW%Tm%cWA`tYr4jqhFkYg06)F@!a z?zW#_B4r^Y3nJd85KyH2TVD8GlobH70GNg205`DI2qA^@&wSK-yf*{`GE$+asL+Ib zd)j~y9yf7a#UOUJwrhcc`98wNrp~y55yR+_nak4px~epOD1n1FFH1W%tw{r`5!hF+ zP4i|xo4PcP4B*L=tG46nu>#7TeZYZWrn-sMAvfH^ncFY#Ew4^Jqyb{H?JEyA5w$sX!I(XHYJLTl=BtpQt$b=+dJwR`g+jchP6L?`*623S#)YLb7o{6zCOfFL=xO zJll~IX5OCrkc>Sx-k`CUU3NJx0nGspxf|OZJKtqXFoQ=?woTFRCH}J-mSx@sl9WH< z_+#qkb?cX1k+2S+T;qPY$*E$hFt6~s8Gfk6e0=`w*{OkD;SYWA1H@NZlg_1%?uJg| zbepCof_+0fcce9QcaK*Zx{IkBS^-8xK+=Dq_0?< zT4{G7_&?skT0C8 zq={p~{t7S=KGCWutZ#T;KHmX|qaxh3D<>r}E&{ONy7g+G!osKYjMwE&`_%g#W0q?? zGT+w&1bM8sKqG7)eYh1xMmN;W)W>*C`|W=q&k70%z+?bL5^2?9TcyWl`qd!O=Cy`h z_Qi~gjT>=QoHa8P!J7KPjDtn#>8GB=t?5AO3@CzYTP1F__ucbgNKfaBVw?v!1kI$8^M~)gq=ml~ zE<^+1T>*eTSn|xBGds$*z4nPQ@uCdcDLCNq;I?@u-Cvr2GaCRbQC=0`;R>uZx()6c zW7{!0Yvv5BGsnj$5RCPdxtIeerxUz2xNdM*B(=_4km~D@mH~&hGM0@)q*4x-1bE$( zlbi-%HQ{O}FkptWX3vGbe@>^Lc@{j~F?|T@$baW>f`=b^C|$(7cI+`nQLpUI^yW9c zF`azks|j$wkW&q7(?Gz_Weew{;LlBcdi6-dMvg#;_tdiu@r-Ua&Tp;URZ^pIcuU29MI(Ze1P3!)tZ*oyB9K+g_D9`6C? zFt!+bg3DU5_62KCH8eB? zNLj_EfHV$ph&l#Aihi=rV@-UYSM9HG%ThR$Q*_OKN1_83U{Wpf+R){ zSB?S#J*OU)(p6u{z|aw=q|`birEh;WgCk%6ZAy(}Q#yv%RbTR?V`2pznbM>Oi3jv= z`MSTG_T?U?W#p~A76{Ck*r$>GBaLRbjOkAx=uf5e-cROOOV?xl^YnZyf538!#55E6 z6yF7M%ug|=Bn~(g#hT-Lkv~gkV9&*KbyyuOnwOtNg-JieGH4m~V=CDt^<@gY{iYm* z8__mRgkA5yl{$VFSGd6`9gkI#^r$Akkq74c9=$82dwAxGA7^wsz{# z#|>#*d3pUc>D+VA4L43bDRk#7r!ob~6!`n008#?8%|0XriVCcB3Pk`BEuM-6pV=#a z+lP$y@s>Ra!R_}acP~%Dtb<#F2*DKqOS*Vyy1acWE*KEyV8#FQ3UC0x${2taWyazq0b2ox)yBn@~_>?JA;~4iL4GrnZ#~(}I z_{KLvIaDc87+d}f_LtPBO-G|*hfeNj9!1JO!WBKTA z=CcZSy2ofeVciAf6gb_1?gZ_8Mk!1s&K4CZUzQSzpgCm$HY>4SQTekg6i(eCHK@3! zwQWXet^&|ngD`axLYGzyD#}{X%$zwheHx1*PXXJiLW&@}g5M83`sBq@ z3l8(vJw|0<13-*QkbPtQt#{naU+d^Af_$Qwc0@rERMAy#BYoHjMRLn_+754PnNnY0 zmxdrDKmFtrC`Hw2#OTqHgVqG*BuJo=BT!TTM!FdYM0tXdmIGQNpm$L3?qON60(TR6 z#jz$(rB#Q#fIb?4m2~Lbbz7XAWXzgh{pwe^Bz`(}R~BJ~bo0%(q-UO;LeN|!ppulJ z!X_YPOot7C2*&f-fTfhmx4@w8PtkT5*ZTVT?=IO*r4;mVOhMlqS4P(Y0yxu8+fk@` zR&gR6O1xHly6Sbns?L74tHauld;|ieLoeJO=c0TM9yoyKGhm@Y5_1>##5jy+a|Lpr zT6U(AF=|YXQInQ@x_R!56JuT|(d40$>r2JUoo~lhFO+_t^_~Dv=yQ2iHy0U&r=5s{b$7b`&f8*~I6nUKyWd5?)Rm-DdjI?0mnJ+G*@8(oOoQ(F@?;{FIp;trq`jk zt}Dz+-raGZHEUM1&wO$c$gmasEw#Dy!(QK{lks=7(hHY4>f*_I2E}#Etz(|hl~Is2 z+-SHKpaA_ACr@$zz(IrK9xe8ap(e{po98`&#<&MHi)4zxucs!*g3&Q)9!>;LGc-zm7n`%hLrHyv4~Jps0p{=`5Okc86 z21*n6cJzdJwMXCC~pVE#OKi*=NYrIBt?jv40; z*L~+^!N*Q$F3yiyV;Wn^dWZI9v6Sn}u_=F=v>?2LTpEP^ctklrh99>V9Bl#{p0~9G;v1_$1nmeZjeuA#_ z;pAtYPGd%oieu)1UV?F&ni>Hz9tf~cnwy-v_S|>zbBsx?^aQ`PAT)S(Snv8X^%z`N zm!2lph^MD%O)X$mhxMSp4b&Zt@vhaAG}(c5cgzhm!1+=6MC;3nPR8%ULX34w-qYQ4 z-uy)Xw3}1o@FA%`WryWv(937@JgL0plBf%;Z4dxRDTl+Mbc~|QQEvy9N&LP5bA*Z#!ul)IyrNHIiOX({g1^9R$av!`=3wUw# z1mf`gM=sZ~^Tlhq=VF3GGadJ2YFz{9an`W}bVkIAvBj->yJzVFfT^Ri<&ZfaQUaOI zIWDCu$loN;^OYYH|L0vPz3bgEB+`k1FK;-30MdXj^;dHJ)A4m z_W}ACZ|R+H%VoX)On@AK9Zw>=7dN**J%cqA!)?OpwD}XnM*@_(>ZbrVJo`^?_n?4W z_J08Wobu+J@0o8+=|RdrH%nW)@z|fb^iT|@6-MdaXQ;M06|?+TCq8$1M4|~ z?Hw5?@-BvLdXVx@IE?s9OslIY=U}kWvo6ee{H1@7I_jwO1i<^z#_%ksG6l*M_`9M& zhmYPePuXLysRDtl%a&E?V0LTA4(y(Kc4P+`AVzW1$yH^TH@+)^B4Cz;AWuzG_(wG2 zS6?rlTJ-@qXhmxV|zJFJ_#^C88NuRDYuF+GzVYz1gt((=x=0Q90?PlhV0wd_$T$V+s~MxlrrkZwi45x`GN`GkJ&LRiqLRMwJmFRRTO- z-8&3$tx{RICG_l7jdIur5NT_=oYNGVo10PYyQIdZhIH!bXGGs?8DiFgYJSK&vtHYg zR-$MvO23^;kW-EQt)I2;uW?d}J$MzQBl=Tg3wVYk-;xmacA93_H zRwyf1EJF#=s<9g{Pa0bpO0e_DT7rQuUb2EQR+WxD{zR;iwx-X0{tAHCmDV`shgE>d z5wMo}3U=Fm+u9Fzvd>+9Dec&vradzW7hd-BnInTPj3w(WodsqL<{B=a)Zga?g0#pA zAi%kn`0yriWxwXS^t ze04Kgx{{L>J7p`X=pXxvx>-)po4G-^)cMp&AWf@0-4DZMkN#Y^XbIr$$aDi1f7e}i zeYg!eXZf-%za;k1uL;2dCw z58%-ox0S*wXFVXNr)z5IrCW{`3i5#fLjcU}Xc2o7esBBG?#CBgcBW}h%uMBi+RjY! zO>Mt{sflCbpJKOV)nn|%KmcPY02Yhr1G7-rd!uKz*^TvH#@2Y(@@Nv_w7N~RQX3& zPupaj?PI?i=gqipT8P;ue^)zl-q#H{Xdu7xvMg#E`3i6>d_0tmpw3uAMO_P$@~ueGw_Mj6&sb|7dNCVISvRVVKmNEh{=kD| zbNF4E3742DQ`jV09S3Fz%9xzl?d>r@~5+PIBqo~3!#GJQt+`%*SofW@V9k#1;%0C3%G(#pwxmIltL zTEoTqOSJ{zy1|bOB-)5e8{wTIMWYl7W;LD@6;Q#q)9?Z1-~Zl=kJGJw3PkwI%Zb-5C;9y?6iR<^R60g*FXt z8}ct&fHc|!$kVHK&$sBhXT9;_PThO%de6Gm*^0^-xOE%?a%M|$kf&y-axe>ItR59Vak6acKiNeB5ycFC!VQn+8M@8!2 zlT$=GAk+vbgcPDMn&qAR7r-c_3nnYn;gB=h-SJ|TQs7t6DBe{x{JvoWF?J{i2#NQs zba&7_!mDJy6%b+zE@c#HAE=3(Sx*AIYl_M=K99x1887NYj%@vh?>Slum*QXnA zzBx^qIz2u8%rn712D<(zmI`lRn@Jz;?zlJT5)*mR2F>-WvCJ}-gzk_gl_bkh>GEV5 zi4g8_miIR#>G_H$t4lcooTh^Rq*Z0fJ;WVk$B8a0akMvzpKZ?bhVunh0`Q+XEWvb+A7KHEoA&wha+W1#3Z-IO*bPPGR9i zInprq9b*ML+7|mq|A7a| zqdGnM*yHKe+is`59n!JK9Tzc8X3m(A&N%b*)Q5FIH%gW3(IbbaFI@S#boi?dOG_5b z4>w8Ow>nV==U+hvS$<1cFtJ{6eE@Twv0$uk@IE}?8fc2YK@|QJ@4FGk%R66ro%Bkc z6<wRmxCvW7gPmb8*fLeE;m11 za|KlwELfPX{{9b8_M4L@@5pDi`^TJ*eKT|T;fEi_W%PULfaie77@udObUV~#NjZSA}D(9!yMDwkmA zXn>oJf=yf$OcKDH0iXJeeW+`-?SJu<^S58@E9Hj%@TX(VdCq(dAifBY$GJdxVimmK z-{`y4!=U~f7<&R#uHRlXpUw19#C8-IdJO#r4^`Wa^|tj4ecx2t?sxySkz zR@$9eZ$YhS+lJIKYi3x4ZDqdRwgvZp0L2vq*l!*+&WB&oWW5TRXKw|SPea=qh5q*6 z1uh6r_L7MyFZC*L`Fv7w~}a5b_ilZ;M z_%elty}jJw1gc1bdv#9zdJupV3!jcCEEy~cnLxRK&SXIUDE)q=u?t}nfMuoK4Cf~PYnXzThE$~T`?oD@tW{s5?z ziia_Yv_M!%{2c`|ftv`dj6kY@WKwxm7z|9ar4~6k@Xve-`8gyAVQ z;B0*r)~%ZYzIBdz(pK-a9bE92_^zO?0-!?evymUo@|jNbhcxsE+X&1_U8`VFl@Cuj z@pO^5UwC2qM*?}j?)9%{*YnWWRh%=oCH(~JqmxcQEi8-HQfK=>TIrT!8{|#N7km-* z%z(pAfB+srk+5%6x}?fG%&ZgYUJhtHYAO_-2k1U0{7S-bf*|P=7#(<>{HHCt;Oh5aew!XAHn%CzNfJPx)E}tG=GCKI(e=?YD>WefDe5 ziTiD*JmLwD(yyA69B;bmR*K#caacM~_OiwEL&4<%>WLDKBBz^66@ZBfsa9S2-B@-g zjnvusPtZY7)N)PHmo(CL3c@)i9D`lq+W-s%Rj{CuuEkUN$(%#+IWl{RKY6Ya%*xhj z!S~c#P|9}o;8Z<73&2G1T!1P&K>iSHtN>6j#nIr@#c|aSH=XIzXJ9Sz#q=ZMC|p2{ zH7y+`Kl>bRjxFh{|M9i3jJoC4TXFTfgIICni5K-$SPL~a3`>Ur4vil>Caj6NRO}#t z{#4v!Rx{sX_2OIz_`4aaL;FyGR~{7{uum+%2Nre4ag$FnN%>R|DQfGVfqIXANb?eSmKG*m?*!zkG)b`MicX6UZC`@M-mj~nV3bx& zf+@Pj4`kP{7G9S2&SCb2K+n{vQ^LA2PEg&MvDv&JQ7y*LrdT(PQ6!+{IFj}OZqYX7 zqUD?@C?MuoqZrnB<~rmc<&D()u!kFD@`&?=>!3i9ysjHw^Y9T7r_Oaz`6$8# zu(owXo(sUQ)NIGNuHPNtlXO%mmfKdQz~4%NeFlq;I{%`}_N6cd4_(T%EUN8} zRRh40U{NSoEZ!M1Feg{?zaA`#9FR;xsVlu}S(Jey#S4K91WHdii&9aV6-0rPHURo8 zSxH;~1ep%hwGtOI#96>00GOo98A?hAViIUe1aQ;^Aw_ksGoQCmMi<;KI&R}AVeBpk z)bxz@R&uR3t{w`rf*qPks^mlvMg%2~oHmfGLXSJq3jUf+SEJ;w!>zy*enL}HQ1zcu z7XqtEe|y`h@aB$N?>@aEZjnOSbc8&WUJ*Zc{!}0ovK7Kq(l%q3Z}98uufIM`07ds` z_|BNi4@F6N>WPT}Dx5;Z?x+f*WvUEVj-M6WqMkgn9KlcPoKUVLZ}g?gNfz*_WmdSA z{QR*UP^3_+u&6TKlihcB72N@~9FxL11?KYU6U$LCRPgm^Ug>%G;jc<(5InTGsX5H^ z!(9bh`{-|eb6xrt=Kc$b+q0Io9QEoG(%e}yL+Nn0SK8VhK{DHuff4G>wVf%0T-&Jk zX6_N7>VrV4^@%&4x|V77uA5Nb!F9xXsZF<{{5_AU{_k;*d-uEF9Rjs|X1}{r=?>+-otZrN3c^=$#LH>_gk*buA0x80m0F0|17{2rDDg+Zr;fp5XWbrAA<_CxFxdVx=9&3f z4!7p=ERB53!@iJj9izsO5(IX4+}L6Er3#;M$a-@6lJ|OYUp(V;iEV51q?7x4+ zN83aUmjK?>h9TIj*)3r$U;o^V2d1D-sGUrUrFa3P4&i#g3UI#)>tX=1+8#rY?c zdFlgU=sVgG?JCXJ)I-|ZUIAWDAym2Sg*D_7`l#S9`_GrD{pWn;#sB(z(T~oNT7n2H z*wum*j&;FP`&6*X*lvOZ_M0GA(U*dL0%FF#`p$R0o4)`3AA}prrI%lhWs&jTDpO-q zQ@ZVr+iCCCbjc-`q{Fa4oIZVediL4L(I*ohe=ME;%-D3G zNNCDDz{}5Cuc)|dNn?F%gFNHB)DK|Fda3wpt;nx?CII(HtDThF!)@H))5U%H-MaW} zo-+kBrH^w`ALc>24?Yoq1FV5J1*9F9y4mRBy zI-p?5D%Ju4PRFYXqT4lXrPBvfKw4JqfHEYY1$xrA0V1vl9B|zqS<(#j@kHm1C%2VSQ zM@JqxA%I`U!mQb|(2ml)@J!b{;{`d+>{~5sj7#O_k=AvyXV2pK`mpkm zj=FTN1L$=enWyuE<=Hp7usQA`6&=U*_80OxV>8**qs|_v;AV=kogA0LhmQ=aC7-c8 z;|^&dWZ!ub;NFs5YTrpuHznLi(VZ@=p<-NZi<9znD>WEucZ@Phhm~q@^H< z?_?Bnhe7_Wue>#U#K<(TZb*z(4<4}1#-8$i*(-M=^9a0P>pksE5Pi<<8O-@^C;%>T z%~Ni7;OgcYDE-{H9MW6{i}u#X<=@K`_`g5_V}kx7~ zQg8O1C^7H;36LmA^gtHrQ9%rb&Ipecn^Nx%8;C>1j(aBr3U+wABM4TZs8k_;^&~z~ z?}{y{KO4rCf?)16 zPM>CNYzoBEVf30xb&M(EQs@q(b%ToG zI$~9*)W?Z`nCnnh;x0`|umX8=l-W5vD_mzQ@%{?Kj$ki z{kM&lbVgy7W6bG8R-FO}RJG`BuBP71rg;7Kb7$ zNvzivHXOn#2mX;ijkl6PNdu*0!N|O%OO>?AmL)6UNoR?jJiC)hnI=2Oc0s*eX_YN~ z^KZo+#k+aQtMamA$@NVp(*neKV;kSKbn|yl!4fz!K8~9ay;vi4rwjL3GTarYHybw& zT+j2`==hOW1SyJsa4z@3uX!M?M`t1&{V*j$8^b-W&I+4OptU&KjH0elnI> z4PcQ}GCrPd*i4@aN^Svs@OrV%@l)E!8fp9}$D11tJphWTSRag0m)x5TnWB7 zM&%^~HV*>qnTz}92e2d>IdWv2UMZO5di3PPiOl1_=K2W6g(vg@craeft2_N|+s((h zMeuDc8zjy#t@GwZ0B`3YD{Q}p6)|;>Br$gVz&Gxpjn>V>Ap|44z{gsbYT2}C@e8?z`R2=nKD1=+srhW179 z8al9V8dBRmHTLV78vFN2L;6;whC$V7=zy9ul;i4$^yhQG>NJes8V2-EjlAlsyQbzk zPPpmaEe#t~OCJ5wcA~pgB6O(yt4OJMsElcQq?*UxaW zP(%9Y#TP>>6bWAl@d|By5fEnpXh<^!GRrZ3l8T)|n!Bb7e}Y&F$7>6~$QyYk+-W2z z$!9{~kKfFmdQ&Hbe%%O+_ao3_zABU6AIb#z1aL$ig@uiZgzevi@aFxtOQBdX-hiL2 zEiJ@=xFRfR6zZk*wE$vA0EXRt*B{cX>C@672Okpg5d7U;?~U}4u^@^dv9=3B!4L8f zpH%K~OHhdrr1GW0zI54&2v3H==9r_y6;UAR-1E*4!M#u-%tu8=3oM)8nR*E_ z#LjATsUy!1MQZ=Kxc1WTMLl2ou6_LV#frDXNYY83$QA&`sDRfP7oNi9yOw-f6d40U z*TUc<=&nUlD3~Y{_Js}h8$!*gFs{*070H(GI(1kwU%GBRktve9`7@$=y}br z0zCGuN>Bj7ysy*x5O7B8l-k;USoIA_-33t@7Y5?iT0kX8%P)CQP%n1o9k=AY9ILe1 zv!)X_Wd*U*dZoHS1Lfq1Kc=gN3Xm@WWr0$GUfs`BnB}n*D^|hFgJVw8<)gN?Z`ASD zTWjxiv5OAb-+Hc&rG;Wn);poyT00Jpp(xF!(1(Y1o#0*Hjh&IMi*KwtLSM@vn3$C|JC=k*00)#w(eUe8}AqH<`Edb+N{+1n3%Am)#g4D=`4E zoMpbXp1QyG!o6q() zBWP`H35%buoETVJL-1w#$$pWSvlXayW^9s?b=4xx$_YR@jy+B6GoSek;Lw_M^2sLy z@L!j%zUq7F*SHHm^2oyxz+Av&`0!@d6|CLpcYzw`7hMh)1L8P0Xc1V%oO9D-0r3V0 z;0hn>19cBs!gWj{MQZy{TnL)UFY>o;qyjA+8%!&OtL~%m|P=#yWhVOJz4);FvxlPv-?Kjf_#Id$l=PC*6ac zZ{_pG=BCt_)9r$Nqm3C*cU;N`$|&-L0FahoAZ}@4>)bT;`Ddy7d~!sFQ8u%WxzG7h z_hCEU13jdP^45^yWB1g&|Fvsnu;_n{^yPxf6ev@mOo1{5N)*^)PWWqIYFf#d29fjU`GvlsMxDOWucuqBAmJ-7=apj%AI^^uo`7}D;6iV zSK+CtsVQiCF#wTD#&`eoyCK|GVA-NzIc?fhPKm+_0VPX|h9wAP9udC|MWZi@jP>$4 z`@qxS1bb9;1;cEkf~3l>*A?ungTE`(#eGU|B+F6=)h)#xN-bDa2E0!RPo*RGQ?};t zyF$9$q43Y+!4m>JD$D-T8#;dUqK`y?>$kr3t?3=_d`G(Nw%Y(e7I9?pk*TS%nOFwH zBRH+rU0RFCUsg$TboosIJ_p*C-w^mac20euy@9K@a!$Pp;Zg)=fj$*qPo%1;A$A6Q z6d6%J-G4kX{Lc^EABvD5(8HY2_D}D5PrB`vo72&NHrt`&7RnbWvfqsP5PB{7hr)+~ zY+bY_(S=C?Sq0l<`!f~!T)O6Uni2y3$dRLx)*t7ee*s4ef_*eN>XQ4z(qB3i z0Ln|>wQs*h`wJqJ9tj-5&LmkU>*t(ex$@Rl`K?lRD!vGIVG|s$u*IRK{`7)Wg%*AiSMUem;XjBL~o~&5Y017K7?8rEVMz z-VX~n<_JN_H3W*y$9g-*X3G>o2J4&Ms&XLzO$3WIUoBAtbflRvhO|1mmlwd%^)n^|Iw z(wdqZ)8m}XIBC+Pm?u8_ub%}Bnh>?vhWnC%0OLR$zpHP%<;FC2)QHr9HF5b;Xs~{5 zS}<=e?lGM5#=IN~EVPidrMGLL?~+G8wa)?^<%0D$X(eJ{;%&@Bd`trx8p1_s6ClM7 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

    6_v>_Q3^-V6HqLd$SZW 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�`2&s=8ZD-Jvf?5P`C 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

    Some HTML

    ') - - fh = open('a_page.html', 'r') - parsed = BeautifulSoup(fh) - - page = urllib2.urlopen('http://site.com/page.html') - parsed = BeautifulSoup(page) + .. code-block:: python + from bs4 import BeautifulSoup + parsed = BeautifulSoup('

    Some HTML

    ') -.. rst-class:: build + fh = open('a_page.html', 'r') + parsed = BeautifulSoup(fh) + + page = urllib2.urlopen('http://site.com/page.html') + parsed = BeautifulSoup(page) -You might want to open the documentation as reference -(http://www.crummy.com/software/BeautifulSoup/bs4/doc) + You might want to open the documentation as reference + (http://www.crummy.com/software/BeautifulSoup/bs4/doc) My Solution @@ -405,7 +439,7 @@ My Solution Take a shot at writing this new function in ``mashup.py`` .. code-block:: python - + # add this import at the top from bs4 import BeautifulSoup @@ -426,16 +460,19 @@ We'll need to make our script do something when run. # do something .. rst-class:: build +.. container:: -* Fetch a search results page -* Parse the resulting HTML -* For now, print out the results so we can see what we get + .. rst-class:: build -.. container:: incremental small + * Fetch a search results page + * Parse the resulting HTML + * For now, print out the results so we can see what we get - Use the ``prettify`` method on a BeautifulSoup object:: + .. container:: + + Use the ``prettify`` method on a BeautifulSoup object:: - print parsed.prettify() + print parsed.prettify() My Solution @@ -443,401 +480,639 @@ My Solution Try to come up with the proper code on your own. Add it to ``mashup.py`` +.. rst-class:: build .. code-block:: python if __name__ == '__main__': - html, encoding = fetch_search_results( - minAsk=500, maxAsk=1000, bedrooms=2 - ) - doc = parse_source(html, encoding) - print doc.prettify(encoding=encoding) + use_params = { + 'Inspection_Start': '2/1/2013', + 'Inspection_End': '2/1/2015', + 'Zip_Code': '98101' + } + html, encoding = get_inspection_page(**use_params) + parsed = parse_source(html, encoding) + print parsed.prettify(encoding=encoding) -Test Your Work --------------- +.. nextslide:: Test The Results Assuming your virtualenv is still active, you should be able to execute the script. .. rst-class:: build +.. container:: -:: + .. code-block:: bash + + (soupenv)$ python mashup.py + ... + + + + + - (soupenv)$ python mashup.py - - - - - seattle apts/housing for rent classifieds - craigslist - - ... + This script is available as ``resources/session07/mashup_1.py`` -Preserve the Results --------------------- + +.. nextslide:: Preserve the Results Try it again, this time redirect the output to a local file, so we can use -it without needing to hit the craiglist servers each time:: +it without needing to hit the King County servers each time:: - (soupenv)$ python mashup.py > craigslist_results.html + (soupenv)$ python mashup.py > inspection_page.html +.. rst-class:: build +.. container:: -Finding The Needle ------------------- + Then add a quick function to our script that will use these saved results: + + .. code-block:: python + + def load_inspection_page(name): + with open(name, 'r') as fh: + content = fh.read() + return content, 'utf-8' + + Finally, bolt that in to your script to use it: + + .. code-block:: python + + # COMMENT OUT THIS LINE AND REPLACE IT + # html, encoding = get_inspection_page(**use_params) + html, encoding = load_inspection_page('inspection_page.html') + + +Extracting Data +--------------- Next we find the bits of this pile of HTML that matter to us. .. rst-class:: build +.. container:: -Open your html file in a browser and take a look (w/ dev tools). + Open the page you just wrote to disk in your web browser and open the + developer tools to inspect the page source. -.. rst-class:: build + You'll want to start by finding the element in the page that contains all + our search results. -We'll want to find: + Look at the source and identify the single element we are looking for. + +.. nextslide:: Tags and Searching + +Having found it visually, we can now search for it automatically. In +BeautifulSoup: .. rst-class:: build +.. container:: -* The HTML element that contains a single listing -* The source of location data, listings without location should be abandoned -* The description of a listing -* The link to a full listing page on craigslist -* Relevant price or size data. + .. rst-class:: build + * All HTML elements (including the parsed document itself) are ``tags`` + * A ``tag`` can be searched using its ``find`` or ``find_all`` methods + * This searches the descendents of the tag on which it is called. + * It takes arguments which act as *filters* on the search results -Pulling it Out --------------- + .. container:: + + like so:: -We can extract this information now. In BeautifulSoup: + tag.find(name, attrs, recursive, text, **kwargs) + tag.find_all(name, attrs, recursive, text, limit, **kwargs) + + +.. nextslide:: Searching by Attribute + +The ``find`` method allows us to pass *kwargs*. .. rst-class:: build +.. container:: -* All HTML elements (including the parsed document itself) are ``tags`` -* A ``tag`` can be searched using its ``find_all`` method -* This searches the descendents of the tag on which it is called. -* It takes arguments which act as *filters* on the search results + Keywords that are not among the named parameters will be considered an HTML + attribute. -.. container:: incremental + We can use this to find the column that holds our search results: - like so: + .. code-block:: python + + content_col = parsed.find('td', id="contentcol") - .. class:: small + Add that line to our mashup script and try it out: - :: + .. code-block:: python - tag.find_all(name, attrs, recursive, text, limit, **kwargs) + #... + parsed = parse_source(html, encoding) + content_col = parsed.find("td", id="contentcol") + print content_col.prettify(encoding=encoding) + .. code-block:: bash -Searching by CSS Class ----------------------- + (soupenv)$ python mashup.py +

    KYjES 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 Z{{S^e-PDKbPrm>F002ovPDHLkV1l$Y$HV{t literal 0 HcmV?d00001 diff --git a/html/_sources/outline.txt b/html/_sources/outline.txt index b461ab53..f89cec66 100644 --- a/html/_sources/outline.txt +++ b/html/_sources/outline.txt @@ -169,12 +169,14 @@ build a script that can produce derived meaning out of data we find online. References ********** +* `BeautifulSoup `_ +* `requests `_ +* `json `_ +* `geocoder `_ * `httplib `_ * `htmlparser `_ * `xmlrpclib `_ * `DocXMLRPCServer `_ -* `json `_ - Preparation for Session 8 @@ -182,7 +184,7 @@ Preparation for Session 8 Please walk through this tutorial before session 8 begins. -* `An Introduction to Django `_ +* `An Introduction to Django `_ Session 8 - Basic Django @@ -200,7 +202,7 @@ blog app in Django. We'll learn how to use the tools Django provides to explore and interact with your models while designing them. We'll also get a brief introduction to the Django admin, Django's *killer feature*. -.. _get started building: presentations/django_intro-plain.html +.. _get started building: presentations/django_intro.html Along the way, we'll build a nicely functional blog application. We'll learn diff --git a/html/_sources/presentations/django_intro.txt b/html/_sources/presentations/django_intro.txt new file mode 100644 index 00000000..d1325e96 --- /dev/null +++ b/html/_sources/presentations/django_intro.txt @@ -0,0 +1,1013 @@ +.. slideconf:: + :autoslides: False + +************************* +An Introduction To Django +************************* + +.. slide:: Internet Programming with Python + :level: 1 + + This document contains no slides. + +In this tutorial, you'll walk through creating a very simple microblog +application using Django. + +Practice Safe Development +========================= + +We'll install Django and any other packages we use with it in a virtualenv. + +This will ensure that it is isolated from everything else we do in class +(and vice versa) + +Remember the basic format for creating a virtualenv:: + + $ python virtualenv.py [options] + + $ virtualenv [options] + + +Set Up a VirtualEnv +------------------- + +Start by creating your virtualenv:: + + $ python virtualenv.py djangoenv + + $ virtualenv djangoenv + ... + +Then, activate it:: + + $ source djangoenv/bin/activate + + C:\> djangoenv\Scripts\activate + + +Install Django +-------------- + +Finally, install Django 1.7.4 using ``pip``:: + + (djangoenv)$ pip install Django==1.7.4 + Downloading/unpacking Django==1.7.4 + Downloading Django-1.7.4-py2.py3-none-any.whl (7.4MB): 7.4MB downloaded + Installing collected packages: django + Successfully installed django + Cleaning up... + (djangoenv)$ + + +Our Project +=========== + +Everything in Django stems from the *project*. To get started learning, we'll +create one. We'll use a script installed by Django, ``django-admin.py``: + +.. code-block:: bash + + (djangoenv)$ django-admin.py startproject mysite + +This will create a folder called 'mysite'. The folder contains the following +structure:: + + mysite + ├── manage.py + └── mysite + ├── __init__.py + ├── settings.py + ├── urls.py + └── wsgi.py + +If what you see doesn't match that, you're using an older version of Django. +Make sure you've installed 1.7.4 + + +What Got Created +---------------- + +* **outer *mysite* folder**: this is just a container and can be renamed or + moved at will +* **inner *mysite* folder**: this is your project directory. It should not be + renamed. +* **__init__.py**: magic file that makes *mysite* a python package. +* **settings.py**: file which holds configuration for your project, more soon. +* **urls.py**: file which holds top-level URL configuration for your project, + more soon. +* **wsgi.py**: binds a wsgi application created from your project to the + symbol ``application`` +* **manage.py**: a management control script. + +*django-admin.py* provides a hook for administrative tasks and abilities: + +* creating a new project or app +* running the development server +* executing tests +* entering a python interpreter +* entering a database shell session with your database +* much much more (run ``django-admin.py`` without an argument) + +*manage.py* wraps this functionality, adding the full environment of your +project. + + +How *manage.py* Works +--------------------- + +Look in the ``manage.py`` script Django created for you. You'll see this: + +.. code-block:: python + + #!/usr/bin/env python + import os + import sys + + if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") + + from django.core.management import execute_from_command_line + + execute_from_command_line(sys.argv) + +The environmental var ``DJANGO_SETTINGS_MODULE`` is how the ``manage.py`` +script is made aware of your project's environment. This is why you shouldn't +rename the project package. + + +Development Server +------------------ + +At this point, you should be ready to use the development server:: + + (djangoenv)$ cd mysite + (djangoenv)$ python manage.py runserver + ... + +You'll see a scary warning about unapplied migrations. Ignore it for a moment. +Instead, load ``http://localhost:8000`` in your browser. You should see this: + +.. figure:: /_static/django-start.png + :align: center + :width: 98% + +.. rst-class:: build center + +**Do you?** + + +Connecting A Database +--------------------- + +Django supplies its own ORM (Object-Relational Mapper). This ORM sits on top of +the DB-API implementation you choose. You must provide connection information +through Django configuration. + +All Django configuration takes place in ``settings.py`` in your project +folder. + +Edit your ``settings.py`` to match: + +.. code-block:: python + + + DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': 'mysite.db', + } + } + +There are other database settings, but they are not used with sqlite3, we'll +ignore them for now. + +Django's ORM provides a layer of *abstraction* between you and SQL. You write +Python classes called *models* describing the objects that make up your system. +The ORM handles converting data from these objects into SQL statements (and +back). We'll learn much more about this in a bit. + +The final step in preparing to work is to set up the database. You do this by +running *migrations*. These migrations create the tables needed to support the +models that are required by Django out of the box. + +Run the following command: + +.. code-block:: bash + + (djangoenv)$ python manage.py migrate + Operations to perform: + Apply all migrations: admin, contenttypes, auth, sessions + Running migrations: + Applying contenttypes.0001_initial... OK + Applying auth.0001_initial... OK + Applying admin.0001_initial... OK + Applying sessions.0001_initial... OK + +Great! Now we can set up an initial user who'll be able to do anything, a +*superuser*. Again, we'll use ``manage.py``: + +.. code-block:: bash + + (djangoenv)$ python manage.py createsuperuser + Username (leave blank to use 'cewing'): + Email address: cris@crisewing.com + Password: + Password (again): + Superuser created successfully. + +Notice that as you type your password, it will not appear on the screen. Don't +worry, it's actually being recorded. You just can't see it (and neither can +than snoopy git looking over your shoulder). + +Projects and Apps +================= + +We've created a Django *project*. In Django a project represents a whole +website: + +* global configuration settings +* inclusion points for additional functionality +* master list of URL endpoints + +A Django *app* encapsulates a unit of functionality: + +* A blog section +* A discussion forum +* A content tagging system + +.. important:: One *project* can (and likely will) consist of many *apps* + +Django already includes some *apps* for you. + +.. container:: incremental + + They're in ``settings.py`` in the ``INSTALLED_APPS`` setting: + + .. code-block:: python + + + INSTALLED_APPS = ( + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + ) + + +Our Class App +------------- + +We are going to build an *app* to add to our *project*. To start with our app +will be a simple blog. As stated above, an *app* represents a unit within a +system, the *project*. We have a project, we need to create an *app* + +This is accomplished using ``manage.py``. In your terminal, make sure you are +in the *outer* mysite directory, where the file ``manage.py`` is located. +Then: + +.. code-block:: bash + + (djangoenv)$ python manage.py startapp myblog + +This should leave you with the following structure: + +.. class:: small + +:: + + mysite + ├── db.sqlite3 + ├── manage.py + ├── myblog + │   ├── __init__.py + │   ├── admin.py + │   ├── migrations + │   │   └── __init__.py + │   ├── models.py + │   ├── tests.py + │   └── views.py + └── mysite + ├── __init__.py + ├── settings.py + ├── urls.py + └── wsgi.py + +Like our Pyramid site, Django divides up functionality by module. You'll create +ORM model classes in the ``models.py`` file, view code in the ``views.py`` +file, and so on. + +We'll start by defining the main Python class for our blog system, a ``Post``. + + +Django Models +------------- + +Any Python class in Django that is meant to be persisted *must* inherit from +the Django ``Model`` class. This base class hooks in to the ORM functionality +converting Python code to SQL. You can override methods from the base ``Model`` +class to alter how this works or write new methods to add functionality. + +Learn more about `models `_ + + +Our Post Model +-------------- + +Open the ``models.py`` file created in our ``myblog`` package. Add the +following: + +.. code-block:: python + + from django.db import models #<-- This is already in the file + from django.contrib.auth.models import User + + class Post(models.Model): + title = models.CharField(max_length=128) + text = models.TextField(blank=True) + author = models.ForeignKey(User) + created_date = models.DateTimeField(auto_now_add=True) + modified_date = models.DateTimeField(auto_now=True) + published_date = models.DateTimeField(blank=True, null=True) + +This code defines a subclass of the Django ``Model`` class and added a bunch of +attributes. + +* These attributes are all instances of ``Field`` classes defined in Django +* Field attributes on a model map to columns in a database table +* The arguments you provide to each Field customize how it works + + * This means *both* how it operates in Django *and* how it is defined in SQL + +* There are arguments shared by all Field types +* There are also arguments specific to individual types + +You can read much more about +`Model Fields and options `_ + +There are some features of our fields worth mentioning in specific. Notice we +have no field that is designated as the *primary key* + +* You *can* make a field the primary key by adding ``primary_key=True`` in the + arguments +* If you do not, Django will **automatically** create one. This field is always + called ``id`` +* No matter what the primary key field is called, its *value* is always + available on a model instance as the ``pk`` attribute: ``instance.pk`` + + +Field Details +------------- + +.. code-block:: python + + title = models.CharField(max_length=128) + +* The required ``max_length`` argument is specific to ``CharField`` fields. +* It affects *both* the Python and SQL behavior of a field. +* In python, it is used to *validate* supplied values during *model validation* +* In SQL it is used in the column definition: ``VARCHAR(128)`` + +.. code-block:: python + + author = models.ForeignKey(User) + +* Django also models SQL *relationships* as specific field types. +* The required positional argument is the class of the related Model. +* By default, the reverse relation is implemented as the attribute + ``_set``. +* You can override this by providing the ``related_name`` argument. + +.. code-block:: python + + created_date = models.DateTimeField(auto_now_add=True) + modified_date = models.DateTimeField(auto_now=True) + +* ``auto_now_add`` is available on all date and time fields. It sets the value + of the field to *now* when an instance is first saved. +* ``auto_now`` is similar, but sets the value anew each time an instance is + saved. +* Setting either of these will cause the ``editable`` attribute of a field to + be set to ``False``. +* This does not mean you can't update these values, only that they will not + show in forms by default. + +.. code-block:: python + + text = models.TextField(blank=True) + # ... + published_date = models.DateTimeField(blank=True, null=True) + +* The argument ``blank`` is shared across all field types. The default is + ``False`` +* This argument affects only the Python behavior of a field, determining if the + field is *required* +* The related ``null`` argument affects the SQL definition of a field: is the + column NULL or NOT NULL + + +Installing Apps +--------------- + +In order to use our new model, we need Django to know about our *app*. This is +accomplished by configuration in the ``settings.py`` file. Open that file now, +in your editor, and find the INSTALLED_APPS setting. + +You extend Django functionality by *installing apps*. This is pretty simple: + +.. code-block:: python + + + INSTALLED_APPS = ( + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'myblog', # <- YOU ADD THIS PART + ) + +Once Django is made aware of the existence of this new app, it can make a new +*migration* that will set up the tables for this new class automatically. + +.. code-block:: bash + + (djangoenv)$ python manage.py makemigrations myblog + Migrations for 'myblog': + 0001_initial.py: + - Create model Post + +And now you can run that migration to make the changes to your database: + +.. code-block:: bash + + (djangoenv)$ python manage.py migrate + Operations to perform: + Apply all migrations: admin, myblog, contenttypes, auth, sessions + Running migrations: + Applying myblog.0001_initial... OK + + +The Django Shell +================ + +Django provides a management command ``shell``: + +* Shares the same ``sys.path`` as your project, so all installed python + packages are present. +* Imports the ``settings.py`` file from your project, and so shares all + installed apps and other settings. +* Handles connections to your database, so you can interact with live data + directly. + +Let's explore the Model Instance API directly using this shell: + +:: + + (djangoenv)$ python manage.py shell + +Instances of our model can be created by simple instantiation: + +.. code-block:: python + + >>> from myblog.models import Post + >>> p1 = Post(title="My first post", + ... text="This is the first post I've written") + >>> p1 + + +We can also validate that our new object is okay before we try to save it: + +.. code-block:: python + + >>> p1.full_clean() + Traceback (most recent call last): + ... + ValidationError: {'author': [u'This field cannot be null.']} + + +Django Model Managers +--------------------- + +We have to hook our ``Post`` to an author, which must be a ``User``. To do +this, we need to have an instance of the ``User`` class. We can use the +``User`` *model manager* to run table-level operations like ``SELECT``. + + +All Django models have a *manager*. By default it is accessed through the +``objects`` class attribute. + +Let's use the *manager* to get an instance of the ``User`` class: + +.. code-block:: python + + >>> from django.contrib.auth.models import User + >>> all_users = User.objects.all() + >>> all_users + [] + >>> u1 = all_users[0] + >>> p1.author = u1 + +And now our instance should validate properly: + +.. code-block:: python + + >>> p1.full_clean() + >>> + + +Saving New Objects +------------------ + +Our model has three date fields, two of which are supposed to be +auto-populated: + +.. class:: python + + >>> print(p1.created_date) + None + >>> print(p1.modified_date) + None + +Although we've instantiated a Post object, it doesn't have these values yet. +That's because a model is not *created* until it's saved into the database. +When we save our post, these fields will get values assigned: + +.. code-block:: python + + >>> p1.save() + >>> p1.created_date + datetime.datetime(2015, 2, 15, 9, 3, 13, 719381, tzinfo=) + >>> p1.modified_date + datetime.datetime(2015, 2, 15, 9, 3, 13, 719932, tzinfo=) + + +Updating An Instance +-------------------- + +Models operate much like 'normal' python objects. To change the value of a +field, simply set the instance attribute to a new value. Call ``save()`` to +persist the change: + +.. code-block:: python + + >>> p1.title = p1.title + " (updated)" + >>> p1.save() + >>> p1.title + 'My first post (updated)' + + +Create a Few Posts +------------------ + +Let's create a few more posts so we can explore the Django model manager query +API: + +.. code-block:: python + + >>> p2 = Post(title="Another post", + ... text="The second one created", + ... author=u1).save() + >>> p3 = Post(title="The third one", + ... text="With the word 'heffalump'", + ... author=u1).save() + >>> p4 = Post(title="Posters are great decoration", + ... text="When you are a poor college student", + ... author=u1).save() + >>> Post.objects.count() + 4 + + +The Django Query API +-------------------- + +The *manager* on each model class supports a full-featured query API. API +methods take keyword arguments, where the keywords are special constructions +combining field names with field *lookups*. The double-underscore character +separates the name of a field from the *lookup* value. + +.. rst-class:: build small + +* title__exact="The exact title" +* text__contains="decoration" +* id__in=range(1,4) +* published_date__lte=datetime.datetime.now() + +Each keyword argument adds to the query that will be used to find matching +objects. + + +QuerySets +--------- + +A ``QuerySet`` is a special type of object that maintains a relationship to the +database. Query API methods can be divided into two basic groups: methods that +return ``QuerySets`` and those that do not. + +The former may be chained without hitting the database: + +.. code-block:: pycon + + >>> a = Post.objects.all() #<-- no query yet + >>> b = a.filter(title__icontains="post") #<-- not yet + >>> c = b.exclude(text__contains="created") #<-- nope + >>> [(p.title, p.text) for p in c] #<-- This will issue the query + +Conversely, the latter will issue an SQL query when executed. + +.. code-block:: python + + >>> a.count() # immediately executes an SQL query + + +QuerySets and SQL +----------------- + +If you are curious, you can see the SQL that a given QuerySet will use: + +.. code-block:: pycon + + >>> print(c.query) + SELECT "myblog_post"."id", "myblog_post"."title", + "myblog_post"."text", "myblog_post"."author_id", + "myblog_post"."created_date", "myblog_post"."modified_date", + "myblog_post"."published_date" + FROM "myblog_post" + WHERE ("myblog_post"."title" LIKE %post% ESCAPE '\' + AND NOT ("myblog_post"."text" LIKE %created% ESCAPE '\' ) + ) + +The SQL will vary depending on which DBAPI backend you use (yay ORM!!!) + + +Exploring the QuerySet API +-------------------------- + +See https://docs.djangoproject.com/en/1.7/ref/models/querysets + + +.. code-block:: python + + >>> [p.pk for p in Post.objects.all().order_by('created_date')] + [1, 2, 3, 4] + >>> [p.pk for p in Post.objects.all().order_by('-created_date')] + [4, 3, 2, 1] + >>> [p.pk for p in Post.objects.filter(title__contains='post')] + [1, 2, 4] + >>> [p.pk for p in Post.objects.exclude(title__contains='post')] + [3] + >>> qs = Post.objects.exclude(title__contains='post') + >>> qs = qs.exclude(id__exact=3) + >>> [p.pk for p in qs] + [] + >>> qs = Post.objects.exclude(title__contains='post', id__exact=3) + >>> [p.pk for p in qs] + [1, 2, 3, 4] + + +Updating via QuerySets +---------------------- + +You can update all selected objects at the same time. + +.. rst-class:: build + +Changes are persisted without needing to call ``save``. + +.. code-block:: python + + >>> qs = Post.objects.all() + >>> [p.published_date for p in qs] + [None, None, None, None] + >>> from datetime import datetime + >>> from django.utils.timezone import UTC + >>> utc = UTC() + >>> now = datetime.now(utc) + >>> qs.update(published_date=now) + 4 + >>> [p.published_date for p in qs] + [datetime.datetime(2015, 2, 15, 9, 11, 32, 214189, tzinfo=), + ...] + + +Testing Our Model +================= + +As with any project, we want to test our work. Django provides a testing +framework to allow this. Django supports both *unit tests* and *doctests*. I +strongly suggest using *unit tests*. You add tests for your *app* to the file +``tests.py``, which should be at the same package level as ``models.py``. + +Locate and open this file in your editor. + + +Django TestCase Classes +----------------------- + +**SimpleTestCase** is for basic unit testing with no ORM requirements + +**TransactionTestCase** is useful if you need to test transactional +actions (commit and rollback) in the ORM + +**TestCase** is used when you require ORM access and a test client + +**LiveServerTestCase** launches the django server during test runs for +front-end acceptance tests. + +Sometimes testing requires base data to be present. We need a User for ours. +Django provides *fixtures* to handle this need. Create a directory called +``fixtures`` inside your ``myblog`` app directory. This new folder should be +adjacent to the ``tests.py`` file. + +.. rst-class:: build + +Copy the file ``myblog_test_fixture.json`` from the ``resources/session08`` +into this directory, it contains users for our tests. + +Now that we have a fixture, we need to instruct our tests to use it. + +Edit ``tests.py`` to look like this: + +.. code-block:: python + + + from django.test import TestCase + from django.contrib.auth.models import User + + class PostTestCase(TestCase): + fixtures = ['myblog_test_fixture.json', ] + + def setUp(self): + self.user = User.objects.get(pk=1) + + +Our First Enhancement +--------------------- + +Look at the way our Post represents itself in the Django shell: + +.. code-block:: python + + >>> [p for p in Post.objects.all()] + [, , + , ] + +Wouldn't it be nice if the posts showed their titles instead? In Django, the +``__unicode__`` method is used to determine how a Model instance represents +itself. Then, calling ``unicode(instance)`` gives the desired result. + +Let's write a test that demonstrates our desired outcome: + +.. code-block:: python + + # add this import at the top + from myblog.models import Post + + # and this test method to the PostTestCase + def test_unicode(self): + expected = "This is a title" + p1 = Post(title=expected) + actual = unicode(p1) + self.assertEqual(expected, actual) + + +To run tests, use the ``test`` management command. Without arguments, it will +run all TestCases it finds in all installed *apps*. You can pass the name of a +single app to focus on those tests. + +Quit your Django shell and in your terminal run the test we wrote: + +.. code-block:: bash + + (djangoenv)$ python manage.py test myblog + +We have yet to implement this enhancement, so our test should fail: + +:: + + Creating test database for alias 'default'... + F + ====================================================================== + FAIL: test_unicode (myblog.tests.PostTestCase) + ---------------------------------------------------------------------- + Traceback (most recent call last): + File "/Users/cewing/projects/training/uw_pce/training.python_web/scripts/session07/mysite/myblog/tests.py", line 15, in test_unicode + self.assertEqual(expected, actual) + AssertionError: 'This is a title' != u'Post object' + + ---------------------------------------------------------------------- + Ran 1 test in 0.007s + + FAILED (failures=1) + Destroying test database for alias 'default'... + +Let's add an appropriate ``__unicode__`` method to our Post class. + +* It will take ``self`` as its only argument +* And it should return its own title as the result +* Go ahead and take a stab at this in ``models.py`` + +.. code-block:: python + + class Post(models.Model): + #... + + def __unicode__(self): + return self.title + +Re-run the tests to see if that worked:: + + (djangoenv)$ python manage.py test myblog + Creating test database for alias 'default'... + . + ---------------------------------------------------------------------- + Ran 1 test in 0.007s + + OK + Destroying test database for alias 'default'... + +.. rst-class:: centered + +**YIPEEEE!** + + +What to Test +------------ + +In any framework, the question arises of what to test. Much of your app's +functionality is provided by framework tools. Does that need testing? I +*usually* don't write tests covering features provided directly by the +framework. I *do* write tests for functionality I add, and for places where I +make changes to how the default functionality works. This is largely a matter +of style and taste (and of budget). + +We've only begun to test our blog app. We'll be adding many more tests later. +In between, you might want to take a look at the `Django testing documentation`_: + +.. _Django testing documentation: https://docs.djangoproject.com/en/1.7/topics/testing/ + + +The Django Admin +================ + +There are some who believe that Django has been Python's *killer app*. And +without doubt the Django Admin is a *killer feature* for Django. To demonstrate +this, we are going to set up the admin for our blog + +The Django Admin is, itself, an *app*, installed by default (as of 1.6). Open +the ``settings.py`` file from our ``mysite`` project package and verify that +you see it in the list: + +.. code-block:: python + + INSTALLED_APPS = ( + 'django.contrib.admin', # <- already present + # ... + ) + +What we need now is to allow the admin to be seen through a web browser. To do +that, we'll have to add some URLs to our project. + + +Django URL Resolution +--------------------- + +Like Pyramid, Django has a system for dispatching requests to code: the *urlconf*. + +* A urlconf is an iterable of calls to the ``django.conf.urls.url`` function +* This function takes: + + * a regexp *rule*, representing the URL + * a ``callable`` to be invoked (or a name identifying one) + * an optional *name* kwarg, used to *reverse* the URL + * other optional arguments we will skip for now + +* The function returns a *resolver* that matches the request path to the + callable + +I said above that a urlconf is an iterable. That iterable is generally built by +calling the ``django.conf.urls.patterns`` function. It's best to build it that +way, but in reality, any iterable will do. + +However, the name you give this iterable is **not flexible**. Django will load +the urlconf named ``urlpatterns`` that it finds in the file named in +``settings.ROOT_URLCONF``. + +Many Django add-on *apps*, like the Django Admin, come with their own urlconf. +It is standard to include these urlconfs by rooting them at some path in your +site. + +You can do this by using the ``django.conf.urls.include`` function as the +callable in a ``url`` call: + +.. code-block:: python + + url(r'^forum/', include('random.forum.app.urls')) + + +Including the Admin +------------------- + +We can use this to add *all* the URLs provided by the Django admin in one +stroke. + + verify the following lines in ``urls.py``: + + .. code-block:: python + + + from django.contrib import admin # <- should be present already + + urlpatterns = patterns('', + ... + url(r'^admin/', include(admin.site.urls)), #<- this should be too + ) + +We can now view the admin. We'll use the Django development server. + +.. rst-class:: build + +In your terminal, use the ``runserver`` management command to start the +development server: + +.. rst-class:: build + +:: + + (djangoenv)$ python manage.py runserver + Validating models... + + 0 errors found + Django version 1.4.3, using settings 'mysite.settings' + Development server is running at http://127.0.0.1:8000/ + Quit the server with CONTROL-C. + + +Viewing the Admin +----------------- + +Load ``http://localhost:8000/admin/``. You should see this: + +.. figure:: /_static/django-admin-login.png + :align: center + :width: 50% + +.. rst-class:: build + +Login with the name and password you created before. + + +The Admin Index +--------------- + +The index will provide a list of all the installed *apps* and each model +registered. You should see this: + +.. image:: /_static/admin_index.png + :align: center + :width: 90% + +.. rst-class:: build + +Click on ``Users``. Find yourself? Edit yourself, but **don't** uncheck +``superuser``. + + +Add Posts to the Admin +---------------------- + +Okay, let's add our app model to the admin. Find the ``admin.py`` file in the +``myblog`` package. Open it, add the following and save the file: + +.. code-block:: python + + from django.contrib import admin # <- this is already there. + from myblog.models import Post + + admin.site.register(Post) + +Reload the admin index page in your browser. You should now see a listing for +the Myblog app, and an entry for Posts. + +Visit the admin page for Posts. You should see the posts we created earlier in +the Django shell. Look at the listing of Posts. Because of our ``__unicode__`` +method we see a nice title. + +Are there other fields you'd like to see listed? Click on a Post, note what is +and is not shown. + + +Next Steps +---------- + +We've learned a great deal about Django's ORM and Models. We've also spent some +time getting to know the Query API provided by model managers and QuerySets. + +We've also hooked up the Django Admin and noted some shortcomings. + +In class we'll learn how to put a front end on this, add new models, and +customize the admin experience. + + diff --git a/html/_sources/presentations/index.txt b/html/_sources/presentations/index.txt index 6f5f5f35..62b26d7d 100644 --- a/html/_sources/presentations/index.txt +++ b/html/_sources/presentations/index.txt @@ -21,3 +21,4 @@ course. session04 session05 session06 + session07 diff --git a/html/_sources/presentations/session07.txt b/html/_sources/presentations/session07.txt index 6fe08bd7..85eb4c92 100644 --- a/html/_sources/presentations/session07.txt +++ b/html/_sources/presentations/session07.txt @@ -52,7 +52,7 @@ A mashup is:: a web page, or web application, that uses and combines data, presentation or functionality from two or more sources to create new services. - -- `wikipedia `_ + -- wikipedia (http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)) Data Sources @@ -90,8 +90,12 @@ Web Scraping By scraping the data from the web pages. -HTML, Ideally -------------- +HTML +---- + +.. ifnotslides:: + + Ideally, it looks like this: .. code-block:: html @@ -106,8 +110,11 @@ HTML, Ideally -HTML... IRL ------------ +.. nextslide:: HTML... IRL + +.. ifnotslides:: + + But in real life, it's more often like this: .. code-block:: html @@ -122,8 +129,7 @@ HTML... IRL -FFFFFFFFFUUUUUUUUUUUUU ----------------------- +.. nextslide:: FFFFFFFFFUUUUUUUUUUUUU!!!! .. figure:: /_static/scream.jpg :align: center @@ -132,8 +138,7 @@ FFFFFFFFFUUUUUUUUUUUUU Photo by Matthew via Flickr (http://www.flickr.com/photos/purplemattfish/3918004964/) - CC-BY-NC-ND -The Law of The Internet ------------------------ +.. nextslide:: The Law of The Internet .. rst-class:: large centered @@ -165,21 +170,17 @@ Luckily, there are tools to help with this. (remember, for Windows users that should be ``soupenv/Scripts/activate``) -Install BeautifulSoup ---------------------- +.. nextslide:: Install BeautifulSoup Once the virtualenv is activated, you can simply use pip or easy_install to install the libraries you want: .. code-block:: bash - source - (soupenv)$ pip install beautifulsoup4 -Choose a Parsing Engine ------------------------ +.. nextslide:: Choose a Parsing Engine BeautifulSoup is built to use the Python HTMLParser. @@ -198,8 +199,7 @@ BeautifulSoup is built to use the Python HTMLParser. ``lxml`` is better, but much harder to install. Let's use ``html5lib``. -Install a Parsing Engine ------------------------- +.. nextslide:: Install a Parsing Engine Again, this is pretty simple:: @@ -214,8 +214,8 @@ Again, this is pretty simple:: You can specify the parser if you need to for some reason. -Install Requests ----------------- + +.. nextslide:: Install Requests Python provides tools for opening urls and communicating with servers. It's spread across the ``urllib`` and ``urllib2`` packages. @@ -241,96 +241,144 @@ We're going to explore some tools for making a mashup today .. rst-class:: build .. container:: - We'll be starting by scraping ZIP codes for Seattle - - Then we'll choose one of them and look up restaurant health code data for - that ZIP code + We'll be starting by scraping restaurant health code data for + a given ZIP code Then, we'll look up the geographic location of those zipcodes using Google - Open a new file in your editor: ``mashup.py``. + Finally, we'll display the results of our work on a map + + Start by opening a new file in your editor: ``mashup.py``. -Examine the Source ------------------- +.. nextslide:: Getting Some HTML -Craigslist doesn't have an api, just a website, so we'll need to dig a bit +The source for the data we'll be displaying is a search tool provided by King +County. .. rst-class:: build +.. container:: -By going to the website and playing with the form there, we can derive a -formula for a search URL + It's supposed to have a web service, but the service is broken. -.. rst-class:: build + Luckily, the HTML search works just fine. -* Base URL: ``http://seattle.craigslist.org/search/apa`` -* keywords: ``query=keyword+values+here`` -* price: ``minAsk=NNN maxAsk=NNN`` -* bedrooms: ``bedrooms=N`` (N in range 1-8) + Open `the search form`_ in your browser. -.. rst-class:: build + Fill in a ZIP code (perhaps 98101). -We'll make an HTTP request with these parameters + Add a start and end date (perhaps about 1 or 2 years apart). + Submit the form, and take a look at what you get. -Opening URLs with Requests --------------------------- +.. _the search form: http://info.kingcounty.gov/health/ehs/foodsafety/inspections/search.aspx -In ``requests``, each HTTP method has a module-level function: -.. rst-class:: build +.. nextslide:: Repeat, But Automate -* ``GET`` == ``requests.get(url, **kwargs)`` -* ``POST`` == ``requests.post(url, **kwargs)`` -* ... +Next we want to automate the process. .. rst-class:: build +.. container:: -``kwargs`` represent other parts of an HTTP request: - -.. rst-class:: build + Copy the domain and path of the url into your new ``mashup.py`` file like + so: -* ``params``: a dict of url parameters (?foo=bar&baz=bim) -* ``headers``: a dict of headers to send with the request -* ``data``: the body of the request, if any (form data for POST goes here) -* ... + .. code-block:: python + + INSPECTION_DOMAIN = "http://info.kingcounty.gov" + INSPECTION_PATH = "/health/ehs/foodsafety/inspections/Results.aspx" +.. nextslide:: Repeat, But Automate -Getting Responses with Requests -------------------------------- +Next, copy the query parameters from the URL and convert them to a dictionary: -The return value from one of these functions is a ``response`` which provides: +.. code-block:: python + + INSPECTION_PARAMS = { + 'Output': 'W', + 'Business_Name': '', + 'Business_Address': '', + 'Longitude': '', + 'Latitude': '', + 'City': '', + 'Zip_Code': '', + 'Inspection_Type': 'All', + 'Inspection_Start': '', + 'Inspection_End': '', + 'Inspection_Closed_Business': 'A', + 'Violation_Points': '', + 'Violation_Red_Points': '', + 'Violation_Descr': '', + 'Fuzzy_Search': 'N', + 'Sort': 'H' + } + + +Fetching Search Results +----------------------- + +Next we'll use the ``requests`` library to write a function to fetch these +results on demand. .. rst-class:: build +.. container:: -* ``response.status_code``: see the HTTP Status Code returned -* ``response.ok``: True if ``response.status_code`` is not an error -* ``response.raise_for_status()``: call to raise a python error if it is -* ``response.headers``: The headers sent from the server -* ``response.text``: Body of the response, decoded to unicode -* ``response.encoding``: The encoding used to decode -* ``response.content``: The original encoded response body as bytes + In ``requests``, each HTTP method has a module-level function: -.. rst-class:: build small + .. rst-class:: build -``requests documentation``: http://docs.python-requests.org/en/latest/ + * ``GET`` == ``requests.get(url, **kwargs)`` + * ``POST`` == ``requests.post(url, **kwargs)`` + * ... -Fetch Search Results --------------------- + ``kwargs`` represent other parts of an HTTP request: + + .. rst-class:: build + + * ``params``: a dict of url parameters (?foo=bar&baz=bim) + * ``headers``: a dict of headers to send with the request + * ``data``: the body of the request, if any (form data for POST goes here) + * ... + + +.. nextslide:: Handling Requests Responses -We'll start by writing a function ``fetch_search_results`` +The return value from one of these functions is a ``response`` object which +provides: .. rst-class:: build +.. container:: + + .. rst-class:: build + + * ``response.status_code``: see the HTTP Status Code returned + * ``response.ok``: True if ``response.status_code`` is not an error + * ``response.raise_for_status()``: call to raise a python error if it is + * ``response.headers``: The headers sent from the server + * ``response.text``: Body of the response, decoded to unicode + * ``response.encoding``: The encoding used to decode + * ``response.content``: The original encoded response body as bytes -* It will accept one keyword argument for each of the possible query values -* It will build a dictionary of request query parameters from incoming keywords -* It will make a request to the craigslist server using this query -* It will return the body of the response if there is no error -* It will raise an error if there is a problem with the response + ``requests documentation``: http://docs.python-requests.org/en/latest/ + +.. nextslide:: Fetch Search Results + +We'll start by writing a function ``get_inspection_page`` .. rst-class:: build +.. container:: -Try writing this function. Put it in ``mashup.py`` + .. rst-class:: build + + * It will accept keyword arguments for each of the possible query values + * It will build a dictionary of request query parameters from incoming + keywords + * It will make a request to the inspection service search page using this + query + * It will return the encoded content and the encoding used as a tuple + + Try writing this function. Put it in ``mashup.py`` My Solution @@ -338,65 +386,51 @@ My Solution Here's the one I created: +.. rst-class:: build .. code-block:: python import requests - def fetch_search_results( - query=None, minAsk=None, maxAsk=None, bedrooms=None - ): - incoming = locals().copy() - base = 'http://seattle.craigslist.org/search/apa' - search_params = dict( - [(key, val) for key, val in incoming.items() - if val is not None]) - if not search_params: - raise ValueError("No valid keywords") - - resp = requests.get(base, params=search_params, timeout=3) - resp.raise_for_status() #<- no-op if status==200 + def get_inspection_page(**kwargs): + url = INSPECTION_DOMAIN + INSPECTION_PATH + params = INSPECTION_PARAMS.copy() + for key, val in kwargs.items(): + if key in INSPECTION_PARAMS: + params[key] = val + resp = requests.get(url, params=params) + resp.raise_for_status() return resp.content, resp.encoding Parse the Results ----------------- -Next, we need a function ``parse_source`` to set up HTML for scraping. It will -need to: - -.. rst-class:: build - -* Take the response body from the previous method (or some other source) -* Parse it using BeautifulSoup -* Return the parsed object for further processing +Next, we'll need to parse the results we get when we call that function -.. rst-class:: build - -Before you start, a word about parsing HTML with BeautifulSoup +But before we start, a word about parsing HTML with BeautifulSoup -Parsing HTML with BeautifulSoup -------------------------------- +.. nextslide:: Parsing HTML with BeautifulSoup The BeautifulSoup object can be instantiated with a string or a file-like object as the sole argument: -.. code-block:: python +.. rst-class:: build +.. container:: - from bs4 import BeautifulSoup - parsed = BeautifulSoup('

    y( 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 z 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

  • lZwn#0r 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 z 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≠Oh-6{`E}qwZqu;;{d236*Qg& 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 FCK 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

    + ... +
    + ... +
    + + + This code is available as ``/resources/session07/mashup_2.py`` -* Location data (latitude and longitude) -* Source link (to craiglist detailed listing) -* Description text -* Price and size data + +Parsing Restaurant Data +----------------------- + +Now that we have the records we want, we need to parse them. We want to preserve: .. rst-class:: build +.. container:: -Which parts of a single row contain each of these elements? + We'll start by parsing out the information about the restaurant themselves: + .. rst-class:: build -Extracting Location -------------------- + * Name + * Address + * Location + * ... -Location data is in the ``data-`` attributes we used to filter rows. + How is this information contained in our records? -.. container:: incremental - We can read the HTML attributes of a 'tag' easily, using ``attrs``: +.. nextslide:: Complex Filtering - .. code-block:: python +Each record consists of a table with a series of *rows* (``
    `` elements - Our targets are in the first ``a`` tag in the ``pl`` span inside our row: + My solution: .. code-block:: python - >>> link = row1.find('span', class_='pl').find('a') + def has_two_tds(elem): + is_tr = elem.name == 'tr' + td_children = elem.find_all('td', recursive=False) + has_two = len(td_children) == 2 + return is_tr and has_two -.. container:: incremental +.. nextslide:: Test It Out - The link path will be in the attrs: +Let's try this out in an interpreter: - .. code-block:: python +.. code-block:: pycon - >>> path = link.attrs['href'] + >>> from mashup import load_inspection_page, parse_source + >>> from mashup import restaurant_data_generator, has_two_tds + >>> html, encoding = load_inspection_page('inspection_page.html') + >>> parsed = parse_source(html, encoding) + >>> content_col = parsed.find("td", id="contentcol") + >>> records = restaurant_data_generator(content_col) + >>> rec = records[4] -.. container:: incremental +.. nextslide:: Test It Out - Text contained *inside* tags is in the ``string`` property: +We'd like to find all table rows in that div that contain *two* cells - .. code-block:: python +.. rst-class:: build +.. container:: - >>> description = link.string.strip() + The table rows are all contained in a ``
    + - Business Name + + WORLD FRESH MARKET +
    `` children + * The text in the first cell contains the word "inspection" + * But the text does not *start* with the word "inspection" + + Let's try to write a filter function like the one above that will catch + these rows for us. -* Extracts all the locatable listings from our html page -* Iterates over each of them, and builds a dictionary of data - - * include ``location``, ``href``, ``description``, ``price`` and ``size`` +.. nextslide:: The filter -* Returns a list of these dictionaries +Add this new function ``is_inspection_data_row`` to ``mashup.py`` .. rst-class:: build +.. code-block:: python + + def is_inspection_data_row(elem): + is_tr = elem.name == 'tr' + if not is_tr: + return False + td_children = elem.find_all('td', recursive=False) + has_four = len(td_children) == 4 + this_text = clean_data(td_children[0]).lower() + contains_word = 'inspection' in this_text + does_not_start = not this_text.startswith('inspection') + return is_tr and has_four and contains_word and does_not_start -Call it ``extract_listings`` +.. nextslide:: Test It Out + +We can test this function by adding it into our script: + +.. code-block:: python + + for data_div in data_list: + metadata = extract_restaurant_metadata(data_div) + # UPDATE THIS BELOW HERE + inspection_rows = data_div.find_all(is_inspection_data_row) + print metadata + print len(inspection_rows) + print '*'*10 .. rst-class:: build +.. container:: -Put this new function into ``mashup.py`` and call it from ``__main__``, -printing the result + And try running the script in your terminal: + .. code-block:: bash + + (soupenv)$ python mashup.py + {u'Business Category': [u'Seating 0-12 - Risk Category III'], + u'Longitude': [u'122.3401786000'], u'Phone': [u'(206) 501-9554'], + u'Business Name': [u"ZACCAGNI'S"], u'Address': [u'97B PIKE ST', u'SEATTLE, WA 98101'], + u'Latitude': [u'47.6086651300']} + 0 + ********** -Break Time ----------- +.. nextslide:: Building Inspection Data -Once you have this working, take a break. +Now we can isolate a list of the rows that contain inspection data. .. rst-class:: build +.. container:: -When we return, we'll try a saner approach to getting data from online + Next we need to calculate the average score, total number and highest score + for each restaurant. -.. container:: incremental + Let's add a function to ``mashup.py`` that will: - While you have a moment, sign up for an API key from this service: + .. rst-class:: build - http://www.walkscore.com/professional/api.php + * Take a div containing a restaurant record + * Extract the rows containing inspection data + * Keep track of the highest score recorded + * Sum the total of all inspections + * Count the number of inspections made + * Calculate the average score for inspections + * Return the three calculated values in a dictionary +.. nextslide:: My Solution -My Solution ------------ +Try writing this routine yourself. .. code-block:: python - def extract_listings(doc): - location_attrs = {'data-latitude': True, - 'data-longitude': True} - for row in doc.find_all('p', class_='row', - attrs=location_attrs): - location = dict( - [(key, row.attrs.get(key)) for key in location_attrs]) - link = row.find('span', class_='pl').find('a') - price_span = row.find('span', class_='price') - listing = { - 'location': location, - 'href': link.attrs['href'], - 'description': link.string.strip(), - 'price': price_span.string.strip(), - 'size': price_span.next_sibling.strip(' \n-/') - } - yield listing + def get_score_data(elem): + inspection_rows = elem.find_all(is_inspection_data_row) + samples = len(inspection_rows) + total = high_score = average = 0 + for row in inspection_rows: + strval = clean_data(row.find_all('td')[2]) + try: + intval = int(strval) + except (ValueError, TypeError): + samples -= 1 + else: + total += intval + high_score = intval if intval > high_score else high_score + if samples: + average = total/float(samples) + return {u'Average Score': average, u'High Score': high_score, + u'Total Inspections': samples} + +.. nextslide:: Test It Out + +We can now incorporate this new routine into our ``mashup`` script. +.. rst-class:: build +.. container:: -My Solution ------------ + We'll want to add the data it produces to the metadata we've already + extracted. -.. code-block:: python + .. code-block:: python + + for data_div in data_list: + metadata = extract_restaurant_metadata(data_div) + inspection_data = get_score_data(data_div) + metadata.update(inspection_data) + print metadata + + And test it out at the command line: + + .. code-block:: bash + + (soupenv)$ python mashup.py + ... + {u'Business Category': [u'Seating 0-12 - Risk Category III'], + u'Longitude': [u'122.3401786000'], u'High Score': 0, + u'Phone': [u'(206) 501-9554'], u'Business Name': [u"ZACCAGNI'S"], + u'Total Inspections': 0, u'Address': [u'97B PIKE ST', u'SEATTLE, WA 98101'], + u'Latitude': [u'47.6086651300'], u'Average Score': 0} + +Break Time +---------- + +Once you have this working, take a break. + +When we return, we'll try a saner approach to getting data from online - if __name__ == '__main__': - html, encoding = fetch_search_results( - minAsk=500, maxAsk=1000, bedrooms=2 - ) - doc = parse_source(html, encoding) - for listing in extract_listings(doc): - print listing Another Approach ----------------- +================ -Scraping web pages is tedious and inherently brittle +.. rst-class:: left +.. container:: -.. rst-class:: build + Scraping web pages is tedious and inherently brittle -The owner of the website updates their layout, your code breaks + .. rst-class:: build + .. container:: -.. rst-class:: build + The owner of the website updates their layout, your code breaks -But there is another way to get information from the web in a more normalized -fashion + But there is another way to get information from the web in a more normalized + fashion -.. rst-class:: build center + .. rst-class:: centered -**Web Services** + **Web Services** Web Services @@ -852,35 +1127,33 @@ interaction over a network" - W3C * returns structured data -Early Web Services ------------------- +.. nextslide:: Early Web Services RSS is one of the earliest forms of Web Services -* First known as ``RDF Site Summary`` -* Became ``Really Simple Syndication`` -* More at http://www.rss-specification.com/rss-specifications.htm - .. rst-class:: build +.. container:: -A single web-based *endpoint* provides a dynamically updated listing of -content + .. rst-class:: build -.. rst-class:: build + * First known as ``RDF Site Summary`` + * Became ``Really Simple Syndication`` + * More at http://www.rss-specification.com/rss-specifications.htm -Implemented in pure HTTP. Returns XML + A single web-based *endpoint* provides a dynamically updated listing of + content -.. rst-class:: build + Implemented in pure HTTP. Returns XML -**Atom** is a competing, but similar standard + **Atom** is a competing, but similar standard + There's a solid Python library for consuming RSS: `feedparser`_. -RSS Document ------------- +.. _feedparser: https://pythonhosted.org/feedparser/ -.. class:: tiny +.. nextslide:: RSS Document -:: +.. code-block:: xml @@ -903,51 +1176,51 @@ RSS Document - -XML-RPC -------- +.. nextslide:: XML-RPC RSS provides a pre-defined data set, can we also allow *calling procedures* to get more dynamic data? .. rst-class:: build +.. container:: -We can! Enter XML-RPC (Remote Procedure Call) + We can! Enter XML-RPC (Remote Procedure Call) -.. rst-class:: build + .. rst-class:: build -* Provides a set of defined procedures which can take arguments -* Calls are made via HTTP GET, by passing an XML document -* Returns from a call are sent to the client in XML + * Provides a set of defined procedures which can take arguments + * Calls are made via HTTP GET, by passing an XML document + * Returns from a call are sent to the client in XML -.. rst-class:: build + In python, you can access XML-RPC services using `xmlrpclib`_ from the + standard library -There is an interactive example of this at the end of this session. We will -not go through it here, though. + We will not cover XML-RPC here, though. +.. _xmlrpclib: https://docs.python.org/2/library/xmlrpclib.html -Beyond XML-RPC --------------- +.. nextslide:: Beyond XML-RPC .. rst-class:: build +.. container:: -* XML-RPC allows introspection -* XML-RPC forces you to introspect to get information -* **Wouldn't it be nice to get that automatically?** -* XML-RPC provides data types -* XML-RPC provides only *certain* data types -* **Wouldn't it be nice to have an extensible system for types?** -* XML-RPC allows calling methods with parameters -* XML-RPC only allows calling methods, nothing else -* **wouldn't it be nice to have contextual data as well?** + .. rst-class:: build -.. rst-class:: build center + * XML-RPC allows introspection + * XML-RPC forces you to introspect to get information + * **Wouldn't it be nice to get that automatically?** + * XML-RPC provides data types + * XML-RPC provides only *certain* data types + * **Wouldn't it be nice to have an extensible system for types?** + * XML-RPC allows calling methods with parameters + * XML-RPC only allows calling methods, nothing else + * **wouldn't it be nice to have contextual data as well?** -**Enter SOAP: Simple Object Access Protocol** + .. rst-class:: centered + **Enter SOAP: Simple Object Access Protocol** -SOAP ----- +.. nextslide:: SOAP SOAP extends XML-RPC in a couple of useful ways: @@ -964,46 +1237,41 @@ SOAP extends XML-RPC in a couple of useful ways: by the application -SOAP in Python --------------- +.. nextslide:: SOAP in Python There is no standard library module that supports SOAP directly. .. rst-class:: build +.. container:: -* The best-known and best-supported module available is **Suds** -* The homepage is https://fedorahosted.org/suds/ -* It can be installed using ``easy_install`` or ``pip install`` - -.. rst-class:: build - -Again, there is a good example of using SOAP via the ``suds`` library at the -end of this session. - -.. rst-class:: build + .. rst-class:: build -But we're going to move on + * The best-known and best-supported module available is **Suds** + * The homepage is https://fedorahosted.org/suds/ + * It can be installed using ``easy_install`` or ``pip install`` + But we're going to move on -Afterword ---------- +.. nextslide:: Afterword SOAP (and XML-RPC) have some problems: .. rst-class:: build +.. container:: -* XML is pretty damned inefficient as a data transfer medium -* Why should I need to know method names? -* If I can discover method names at all, I have to read a WSDL to do it? + .. rst-class:: build -.. rst-class:: build + * XML is pretty damned inefficient as a data transfer medium + * Why should I need to know method names? + * If I can discover method names at all, I have to read a WSDL to do it? -Suds is the best we have, and it hasn't been updated since Sept. 2010. + Suds is the best we have, and it hasn't been updated since Sept. 2010. -If Not XML, Then What? ----------------------- + There appear to be maintenance forks of Suds, but they are sketchy. -.. rst-class:: large centered incremental +.. nextslide:: If Not XML, Then What? + +.. rst-class:: build large centered **JSON** @@ -1014,66 +1282,70 @@ JSON JavaScript Object Notation: .. rst-class:: build +.. container:: -* a lightweight data-interchange format -* easy for humans to read and write -* easy for machines to parse and generate - -.. rst-class:: build + .. rst-class:: build -Based on Two Structures: + * a lightweight data-interchange format + * easy for humans to read and write + * easy for machines to parse and generate -.. rst-class:: build + Based on Two Structures: -* object: ``{ string: value, ...}`` -* array: ``[value, value, ]`` + * object: ``{ string: value, ...}`` + * array: ``[value, value, ]`` -.. class:: center incremental + .. rst-class:: centered -pythonic, no? + pythonic, no? -JSON Data Types ---------------- +.. nextslide:: JSON Data Types JSON provides a few basic data types (see http://json.org/): .. rst-class:: build +.. container:: -* string: unicode, anything but ", \\ and control characters -* number: any number, but json does not use octal or hexadecimal -* object, array (we've seen these above) -* true -* false -* null + .. rst-class:: build -.. rst-class:: build center + * string: unicode, anything but ", \\ and control characters + * number: any number, but json does not use octal or hexadecimal + * object, array (we've seen these above) + * true + * false + * null -**No date type? OMGWTF??!!1!1** + .. rst-class:: centered + **No date type? OMGWTF??!!1!1** -Dates in JSON -------------- +.. nextslide:: Dates in JSON + +You have two options: .. rst-class:: build +.. container:: -Option 1 - Unix Epoch Time (number): + .. container:: -.. code-block:: python + Option 1 - Unix Epoch Time (number): - >>> import time - >>> time.time() - 1358212616.7691269 + .. code-block:: python -.. rst-class:: build + >>> import time + >>> time.time() + 1358212616.7691269 -Option 2 - ISO 8661 (string): + .. container:: -.. code-block:: python + Option 2 - ISO 8661 (string): - >>> import datetime - >>> datetime.datetime.now().isoformat() - '2013-01-14T17:18:10.727240' + .. code-block:: python + + >>> import datetime + >>> datetime.datetime.now().isoformat() + '2013-01-14T17:18:10.727240' JSON in Python @@ -1081,107 +1353,99 @@ JSON in Python You can encode python to json, and decode json back to python: -.. code-block:: python - - >>> import json - >>> array = [1,2,3] - >>> json.dumps(array) - >>> '[1, 2, 3]' - >>> orig = {'foo': [1,2,3], 'bar': u'my resumé', 'baz': True} - >>> encoded = json.dumps(orig) - >>> encoded - '{"baz": true, "foo": [1, 2, 3], "bar": "my resum\\u00e9"}' - >>> decoded = json.loads(encoded) - >>> decoded == orig - True - .. rst-class:: build +.. container:: -Customizing the encoder or decoder class allows for specialized serializations + .. code-block:: python + >>> import json + >>> array = [1,2,3] + >>> json.dumps(array) + >>> '[1, 2, 3]' + >>> orig = {'foo': [1,2,3], 'bar': u'my resumé', 'baz': True} + >>> encoded = json.dumps(orig) + >>> encoded + '{"baz": true, "foo": [1, 2, 3], "bar": "my resum\\u00e9"}' + >>> decoded = json.loads(encoded) + >>> decoded == orig + True -JSON in Python --------------- + Customizing the encoder or decoder class allows for specialized serializations -the json module also supports reading and writing to *file-like objects* via -``json.dump(fp)`` and ``json.load(fp)`` (note the missing 's') -.. rst-class:: build +.. nextslide:: -Remember duck-typing. Anything with a ``.write`` and a ``.read`` method is -*file-like* +the json module also supports reading and writing to *file-like objects* via +``json.dump(fp)`` and ``json.load(fp)`` (note the missing 's') .. rst-class:: build +.. container:: -This usage can be much more memory-friendly with large files/sources + Remember duck-typing. Anything with a ``.write`` and a ``.read`` method is + *file-like* + This usage can be much more memory-friendly with large files/sources -What about WSDL? ----------------- +.. nextslide:: What about WSDL? SOAP was invented in part to provide completely machine-readable interoperability. .. rst-class:: build +.. container:: -Does that really work in real life? - -.. rst-class:: build center - -Hardly ever - + *Does that really work in real life?* -What about WSDL? ----------------- + .. rst-class:: centered -Another reason was to provide extensibility via custom types + Hardly ever -.. rst-class:: build + Another reason was to provide extensibility via custom types -Does that really work in real life? + *Does that really work in real life?* -.. rst-class:: build center + .. rst-class:: centered -Hardly ever + Hardly ever - -Why Do All The Work? --------------------- +.. nextslide:: Why Do All The Work? So, if neither of these goals is really achieved by using SOAP, why pay all the overhead required to use the protocol? .. rst-class:: build +.. container:: -Enter REST + Is there another way we could consider approaching the problem? + + .. rst-class:: centered + + **Enter REST** REST ---- -.. class:: center +.. rst-class:: centered -Representational State Transfer +**Representational State Transfer** .. rst-class:: build +.. container:: -* Originally described by Roy T. Fielding (worth reading) -* Use HTTP for what it can do -* Read more in `this book - `_\* - -.. class:: image-credit incremental + .. rst-class:: build -\* Seriously. Buy it and read -(`_\* + \* Seriously. Buy it and read it -A Comparison ------------- +.. nextslide:: A Comparison The XML-RCP/SOAP way: -.. rst-class:: build small +.. rst-class:: build * POST /getComment HTTP/1.1 * POST /getComments HTTP/1.1 @@ -1190,446 +1454,506 @@ The XML-RCP/SOAP way: * POST /deleteComment HTTP/1.1 .. rst-class:: build +.. container:: -The RESTful way: + The RESTful way: -.. rst-class:: build small + .. rst-class:: build -* GET /comment/ HTTP/1.1 -* GET /comment HTTP/1.1 -* POST /comment HTTP/1.1 -* PUT /comment/ HTTP/1.1 -* DELETE /comment/ HTTP/1.1 + * GET /comment/ HTTP/1.1 + * GET /comment HTTP/1.1 + * POST /comment HTTP/1.1 + * PUT /comment/ HTTP/1.1 + * DELETE /comment/ HTTP/1.1 -ROA ---- +.. nextslide:: ROA -This is **Resource Oriented Architecture** +REST is a **Resource Oriented Architecture** .. rst-class:: build +.. container:: -The URL represents the *resource* we are working with + The URL represents the *resource* we are working with -.. rst-class:: build + The HTTP Method indicates the ``action`` to be taken -The HTTP Method represents the ``action`` to be taken + The HTTP Code returned tells us the ``result`` (whether success or failure) + +.. nextslide:: HTTP Codes Revisited .. rst-class:: build +.. container:: -The HTTP Code returned tells us the ``result`` (whether success or failure) + POST /comment HTTP/1.1 (creating a new comment): + .. rst-class:: build -HTTP Codes Revisited --------------------- + * Success: ``HTTP/1.1 201 Created`` + * Failure (unauthorized): ``HTTP/1.1 401 Unauthorized`` + * Failure (NotImplemented): ``HTTP/1.1 405 Not Allowed`` + * Failure (ValueError): ``HTTP/1.1 406 Not Acceptable`` -.. class:: small + PUT /comment/ HTTP/1.1 (edit comment): -POST /comment HTTP/1.1 (creating a new comment): + .. rst-class:: build -.. rst-class:: build small + * Success: ``HTTP/1.1 200 OK`` + * Failure: ``HTTP/1.1 409 Conflict`` -* Success: ``HTTP/1.1 201 Created`` -* Failure (unauthorized): ``HTTP/1.1 401 Unauthorized`` -* Failure (NotImplemented): ``HTTP/1.1 405 Not Allowed`` -* Failure (ValueError): ``HTTP/1.1 406 Not Acceptable`` + DELETE /comment/ HTTP/1.1 (delete comment): -.. class:: small incremental + .. rst-class:: build -PUT /comment/ HTTP/1.1 (edit comment): + * Success: ``HTTP/1.1 204 No Content`` -.. rst-class:: build small -* Success: ``HTTP/1.1 200 OK`` -* Failure: ``HTTP/1.1 409 Conflict`` +Playing With REST +----------------- -.. class:: small incremental +Let's take a moment to play with REST. -DELETE /comment/ HTTP/1.1 (delete comment): +.. rst-class:: build +.. container:: -.. rst-class:: build small + We'll use a common, public API provided by Google. -* Success: ``HTTP/1.1 204 No Content`` + .. rst-class:: centered + **Geocoding** -HTTP Is Stateless ------------------ +.. nextslide:: Geocoding with Google APIs -No individual request may be assumed to know anything about any other request. +https://developers.google.com/maps/documentation/geocoding .. rst-class:: build +.. container:: -All the required information representing the possible actions to take *should -be present in every response*. - -.. rst-class:: build big-centered + Open a python interpreter using our virtualenv:: -Thus: HATEOAS + (soupenv)$ python + .. code-block:: pycon -HATEOAS -------- + >>> import requests + >>> import json + >>> from pprint import pprint + >>> url = 'http://maps.googleapis.com/maps/api/geocode/json' + >>> addr = '1325 4th Ave, Seattle, 98101' + >>> parameters = {'address': addr, 'sensor': 'false' } + >>> resp = requests.get(url, params=parameters) + >>> data = json.loads(resp.text) + >>> if data['status'] == 'OK': + ... pprint(data) -.. rst-class:: large centered -Hypermedia As The Engine Of Application State +.. nextslide:: Reverse Geocoding +You can do the same thing in reverse, supply latitude and longitude and get +back address information: -Applications are State Engines ------------------------------- +.. rst-class:: build +.. container:: -A State Engine is a machine that provides *states* for a resource to be in and -*transitions* to move resources between states. A Restful api should: + .. code-block:: pycon -.. rst-class:: build + >>> location = data['results'][0]['geometry']['location'] + >>> latlng="{lat},{lng}".format(**location) + >>> parameters = {'latlng': latlng, 'sensor': 'false'} + >>> resp = requests.get(url, params=paramters) + >>> data = json.loads(resp.text) + >>> if data['status'] == 'OK': + ... pprint(data) -* provide information about the current state of a resource -* provide information about available transitions for that resource (URIs) -* provide all this in *each* HTTP response + Notice that there are a number of results returned, ordered from most specific + to least. -Playing With REST ------------------ +Mashing It Up +------------- -Let's take a moment to play with REST. +Google's geocoding data is quite nice. .. rst-class:: build +.. container:: -We'll use a common, public API provided by Google. + But it's not in a format we can use directly to create a map -.. rst-class:: build center + For that we need `geojson` -**Geocoding** + Moreover, formatting the data for all those requests is going to get + tedious. + Luckily, people create *wrappers* for popular REST apis like google's + geocoding service. -Geocoding with Google APIs --------------------------- + Once such wrapper is `geocoder`_, which provides not only google's service, + but many others under a single umbrella. -https://developers.google.com/maps/documentation/geocoding +.. _geocoder: http://geocoder.readthedocs.org/en/latest/ +.. _geojson: http://geojson.org -.. container:: incremental +.. nextslide:: Install ``geocoder`` - Open a python interpreter using our virtualenv: +Install geocoder into your ``soupenv`` so that it's available to use: - .. class:: small +.. code-block:: bash - :: + (soupenv)$ pip install geocoder - (soupenv)$ python +.. rst-class:: build +.. container:: -.. code-block:: python + Our final step for tonight will be to geocode the results we have scraped + from the inspection site. - >>> import requests - >>> import json - >>> from pprint import pprint - >>> url = 'http://maps.googleapis.com/maps/api/geocode/json' - >>> addr = '1325 4th Ave, Seattle, 98101' - >>> parameters = {'address': addr, 'sensor': 'false' } - >>> resp = requests.get(url, params=parameters) - >>> data = json.loads(resp.text) - >>> if data['status'] == 'OK': - ... pprint(data) - + We'll then convert that to ``geojson``, insert our own properties and map + the results. + Let's begin by converting our script so that what we have so far is + contained in a generator function -Reverse Geocoding ------------------ + We'll eventually sort our results and generate the top 10 or so for + geocoding. -You can do the same thing in reverse, supply latitude and longitude and get -back address information: + Open up ``mashup.py`` and copy everthing in the ``main`` block. -.. code-block:: python +.. nextslide:: Make a Generator Function - >>> location = data['results'][0]['geometry']['location'] - >>> latlng="{lat},{lng}".format(**location) - >>> parameters = {'latlng': latlng, 'sensor': 'false'} - >>> resp = requests.get(url, params=paramters) - >>> data = json.loads(resp.text) - >>> if data['status'] == 'OK': - ... pprint(data) +Add a new function ``result_generator`` to the ``mashup.py`` script. Paste the +code you copied from the ``main`` block and then update it a bit: .. rst-class:: build +.. code-block:: python -Notice that there are a number of results returned, ordered from most specific -to least. - - -Mash It Up ----------- + def result_generator(count): + use_params = { + 'Inspection_Start': '2/1/2013', + 'Inspection_End': '2/1/2015', + 'Zip_Code': '98101' + } + # html, encoding = get_inspection_page(**use_params) + html, encoding = load_inspection_page('inspection_page.html') + parsed = parse_source(html, encoding) + content_col = parsed.find("td", id="contentcol") + data_list = restaurant_data_generator(content_col) + for data_div in data_list[:count]: + metadata = extract_restaurant_metadata(data_div) + inspection_data = get_score_data(data_div) + metadata.update(inspection_data) + yield metadata -Let's add a new function to ``mashup.py``. It will: -.. rst-class:: build +.. nextslide:: Test It Out -* take a single listing from our craiglist work -* format the location data provided in that listing properly -* make a reverse geocoding lookup using the google api above -* add the best available address to the listing -* return the updated listing +Update the ``main`` block of your ``mashup.py`` script to use the new function: .. rst-class:: build +.. container:: -Call it ``add_address`` + .. code-block:: python + if __name__ == '__main__': + for result in result_generator(10): + print result -My Solution ------------ + Then run your script and verify that the only thing that has changed is the + number of results that print. -.. code-block:: python + .. code-block:: bash - # add an import - import json - - # and a function - def add_address(listing): - api_url = 'http://maps.googleapis.com/maps/api/geocode/json' - loc = listing['location'] - latlng_tmpl = "{data-latitude},{data-longitude}" - parameters = { - 'sensor': 'false', - 'latlng': latlng_tmpl.format(**loc), - } - resp = requests.get(api_url, params=parameters) - data = json.loads(resp.text) - if data['status'] == 'OK': - best = data['results'][0] - listing['address'] = best['formatted_address'] - else: - listing['address'] = 'unavailable' - return listing - + (soupenv)$ python mashup.py + # you should see 10 dictionaries print here. -Add Address to Output ---------------------- +Add Geocoding +------------- -Go ahead and bolt the new function into our ``__main__`` block: +The API for geocoding with ``geocoder`` is the same for all providers. -.. code-block:: python +.. rst-class:: build +.. container:: - import pprint - if __name__ == '__main__': - params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2} - html, encoding = fetch_search_results(**params) - doc = parse_source(html, encoding) - for listing in extract_listings(doc): - listing = add_address(listing) - pprint.pprint(listing) + You give an address, it returns geocoded data. -.. container:: incremental + You provide latitude and longitude, it provides address data - And give the result a whirl: + .. code-block:: python + + >>> response = geocoder.google(
    ) + >>> response.json + # json result data + >>> response.geojson + # geojson result data - .. class:: small +.. nextslide:: Adding The Function - :: +Let's add a new function ``get_geojson`` to ``mashup.py`` - (soupenv)$ python mashup.py - {'address': u'123 Some Street, Chapel Hill, NC ...', - 'description': u'3 bedroom 2 bathroom unit is move in ready!' - ... - } +.. rst-class:: build +.. container:: + It will -One More Step -------------- + .. rst-class:: build -I'm a big fan of walking places. + * Take a result from our search as it's input + * Get geocoding data from google using the address of the restaurant + * Return the geojson representation of that data -.. rst-class:: build + Try to write this function on your own -So I'd like to find an apartment that is located somewhere 'walkable' + .. code-block:: python + + def get_geojson(result): + address = " ".join(result.get('Address', '')) + if not address: + return None + geocoded = geocoder.google(address) + return geocoded.geojson -.. rst-class:: build +.. nextslide:: Testing It Out -There's an API for that! +Next, update our ``main`` block to get the geojson for each result and print +it: .. rst-class:: build +.. container:: -http://www.walkscore.com/professional/api.php + .. code-block:: python -.. rst-class:: build + if __name__ == '__main__': + for result in result_generator(10): + geojson = get_geojson(result) + print geojson -If you haven't already, sign up for an API key now. + Then test your results by running your script: + .. code-block:: bash + + (soupenv)$ python mashup.py + {'geometry': {'type': 'Point', 'coordinates': [-122.3393005, 47.6134378]}, + 'type': 'Feature', 'properties': {'neighborhood': 'Belltown', + 'encoding': 'utf-8', 'county': 'King County', 'city_long': 'Seattle', + 'lng': -122.3393005, 'quality': u'street_address', 'city': 'Seattle', + 'confidence': 9, 'state': 'WA', 'location': u'1933 5TH AVE SEATTLE, WA 98101', + 'provider': 'google', 'housenumber': '1933', 'accuracy': 'ROOFTOP', + 'status': 'OK', 'state_long': 'Washington', + 'address': '1933 5th Avenue, Seattle, WA 98101, USA', 'lat': 47.6134378, + 'postal': '98101', 'ok': True, 'road_long': '5th Avenue', 'country': 'US', + 'country_long': 'United States', 'street': '5th Ave'}, + 'bbox': [-122.3406494802915, 47.6120888197085, -122.3379515197085, 47.6147867802915]} -Getting a Walk Score --------------------- +.. nextslide:: Update Geojson Properties -The API documentation tells us we have to provide lat, lon and address to get -a walk score, along with our API key. +The ``properties`` of our geojson records are filled with data we don't really +care about. .. rst-class:: build +.. container:: -It also tells us we have a choice of XML or JSON output. Let's use JSON + Let's replace that information with some of the metadata from our + inspection results. -.. rst-class:: build + We'll update our ``get_geojson`` function so that it: -Let's poke at it and see what we get back + .. rst-class:: build -.. rst-class:: build + * Builds a dictionary containing only the values we want from our + inspection record. + * Converts list values to strings (geojson requires this) + * Replaces the 'properties' of our geojson with this new data + * Returns the modified geojson record -Fire up your virtualenv Python interpreter again +.. nextslide:: Write the Function +See if you can make the updates on your own. -Making an API Call ------------------- +.. rst-class:: build +.. code-block:: python -:: + def get_geojson(result): + # ... + geocoded = geocoder.google(address) + geojson = geocoded.geojson + inspection_data = {} + use_keys = ( + 'Business Name', 'Average Score', 'Total Inspections', 'High Score' + ) + for key, val in result.items(): + if key not in use_keys: + continue + if isinstance(val, list): + val = " ".join(val) + inspection_data[key] = val + geojson['properties'] = inspection_data + return geojson - (soupenv)$ python +.. nextslide:: Making Mappable Data -.. code-block:: python +We are now generating a series of ``geojson`` *Feature* objects. - >>> import requests - >>> import json - >>> from pprint import pprint - >>> api_url = 'http://api.walkscore.com/score' - >>> lat, lon = 35.9108986, -79.053783 - >>> addr = '120 E. Cameron Avenue Chapel Hill, NC 27599' - >>> params = {'lat': lat, 'lon', lon, 'address': addr} - >>> params['wsapikey'] = '' - >>> params['format'] = 'json' - >>> resp = requests.get(api_url, params=params) - >>> data = json.loads(resp.text) - >>> if data['status'] == 1: - ... pprint(data) - - -Mash It Up ----------- +.. rst-class:: build +.. container:: -Add a function to ``mashup.py`` that: + To map these objects, we'll need to create a file which contains a + ``geojson`` *FeatureCollection*. -.. rst-class:: build + The structure of such a collection looks like this: -* takes a single listing from our craigslist search -* uses the location and address to make a walkscore api call -* adds the description, walkscore and ws_link parameters to the listing -* returns the updated listing + .. code-block:: json + + {'type': 'FeatureCollection', 'features': [...]} -.. rst-class:: build + Let's update our ``main`` function to append each feature to such a + structure. + + Then we can dump the structure as ``json`` to a file. -Call the function ``add_walkscore`` +.. nextslide:: Update the Script + +In ``mashup.py`` update the ``main`` block like so: .. rst-class:: build +.. container:: -Bolt it into our script's ``__main__`` block where it fits best + .. code-block:: python + # add an import at the top: + import json -My Solution ------------ + if __name__ == '__main__': + total_result = {'type': 'FeatureCollection', 'features': []} + for result in result_generator(10): + geojson = get_geojson(result) + total_result['features'].append(geojson) + with open('my_map.json', 'w') as fh: + json.dump(total_result, fh) -.. code-block:: python + When you run the script nothing will print, but the new file will appear. - def add_walkscore(listing): - api_url = 'http://api.walkscore.com/score' - apikey = '' - loc = listing['location'] - if listing['address'] == 'unavailable': - return listing - parameters = { - 'lat': loc['data-latitude'], 'lon': loc['data-longitude'], - 'address': listing['address'], 'wsapikey': apikey, - 'format': 'json' - } - resp = requests.get(api_url, params=parameters) - data = json.loads(resp.text) - if data['status'] == 1: - listing['ws_description'] = data['description'] - listing['ws_score'] = data['walkscore'] - listing['ws_link'] = data['ws_link'] - return listing + .. code-block:: bash + (soupenv)$ python mashup.py -My Results ----------- + This script is available as ``resources/session07/mashup_5.py`` -.. code-block:: python +Display the Results +------------------- - if __name__ == '__main__': - params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2} - html, encoding = fetch_search_results(**params) - doc = parse_source(html, encoding) - for listing in extract_listings(doc): - listing = add_address(listing) - listing = add_walkscore(listing) - pprint.pprint(listing) +Once the new file is written you are ready to display your results. -.. container:: incremental +.. rst-class:: build +.. container:: - Let's try it out:: + Open your web browser and go to http://geojson.io - (soupenv)$ python mashup.py + Then drag and drop the new file you wrote onto the map you see there. + .. figure:: /_static/geojson-io.png + :align: center + :width: 75% Wrap Up ------- -We've built a simple mashup combining data from three different sources. +We've built a simple mashup combining data from different sources. .. rst-class:: build +.. container:: -As a result we can now make a listing of apartments ranked by the walkability -of their neighborhood. + We scraped health inspection data from the King County government site. -.. rst-class:: build + We geocoded that data. -What other data sources might we use? Check out -http://www.programmableweb.com/apis/directory to see some of the possibilities + And we've displayed the results on a map. + What other sources of data might we choose to combine? -Addenda -------- - -Altough we do not have class time to do walkthrough examples of using XML-RPC -and SOAP, I have provided exercises in each as an addenda to this session. If -you have the time and the interest, please try them out. + Check out `programmable web `_ + to see some of the possibilities -.. class:: center -`Web Service API Addenda `_ Homework --------- +======== -For your homework this week, you'll be creating a mashup of your own. +.. rst-class:: left +.. container:: -.. rst-class:: build + For your homework this week, you'll be polishing this mashup. -Use the programmable web api directory from above as a source of inspiration. + .. rst-class:: build + .. container:: -.. rst-class:: build + Begin by sorting the results of our search by the average score. + + Then, update your script to allow the user to choose how to sort, by + average, high score or most inspections:: -Your mashup should combine at least two sources of data in some way that -tickles your fancy. + (soupenv)$ python mashup.py highscore + + Next, allow the user to choose how many results to map:: + + (soupenv)$ python mashup.py highscore 25 + + Or allow them to reverse the results, showing the lowest scores first:: + + (soupenv)$ python mashup.py highscore 25 reverse + + If you're feeling particularly adventurous, see if you can use the + `argparse`_ module from the standard library to handle command line + arguments + +.. _argparse: https://docs.python.org/2/library/argparse.html#module-argparse + +More Fun +-------- + +Next, try adding a bit of information to your map by setting the +``marker-color`` property. This will display a marker with the provided +css-style color (``#FF0000``) .. rst-class:: build +.. container:: -Your results need not look pretty. Focus on data acquisition and processing. + See if you can make the color change according to the values used for the + sorting of the list. Either vary the intensity of the color, or the hue. + Finally, if you are feeling particularly frisky, you can update your script + to automatically open a browser window with your map loaded on + *geojson.io*. -Submitting Your Homework ------------------------- + To do this, you'll want to read about the `webbrowser`_ module from the + standard library. -To submit your homework: + In addition, you'll want to read up on using the URL parameters API for + *geojson.io*. Click on the **help** tab in the sidebar to view the + information. -* Create a new python script in ``assignments/session03``. It should be - something I can run with:: + You will also need to learn about how to properly quote special characters + for a URL, using the `urllib`_ ``quote`` function. - $ python your_script.py +.. _urllib: https://docs.python.org/2/library/urllib.html#urllib.quote +.. _webbrowser: https://docs.python.org/2/library/webbrowser.html -* Provide me with a text file describing what you did. Tell me about the - sources you use, how you combine them, what you hoped to achieve. +Submitting Your Work +-------------------- -* Include any instruction I might need to successfully run your script. +Create a github repository to contain your mashup work. Start by populating it +with the script as we finished it today (mashup_5.py). -* Commit your changes to your fork of the repo in github, then open a pull - request. +As you implement the above features, commit early and commit often. +When you're ready for us to look it over, email a link to your repository to +Maria and I. -Extra Credit ------------- +Final Thoughts +-------------- + +In preparation for our work next week, I'd like you to get started a bit ahead +of time. -Bonus points if you write unit tests for the elements of your mashup. +Please read and follow along with this `basic intro to Django`_. +.. _basic intro to Django: django_intro.html diff --git a/html/_static/geojson-io.png b/html/_static/geojson-io.png new file mode 100644 index 0000000000000000000000000000000000000000..cc437c5865b6c32b19160fac0405d66aeec73903 GIT binary patch literal 1302253 zcmd?QcTkhv*Dj2rqEvlAK&py>NC~JQHBk`|5d+d&=+b)&B}70#YD5H-76IwKD^)-U zMTkfT0U`7r0;EDte17en_dWB?_s2K$&6&eYW^Q)YUVE);uY2#cueB4S^Gt(|fOB>CkiIv}>M`Xx9<(8K=UN zuHRF=agL5rZA?x%RD^5!^gF%U?kl&cXZjCP#BN8)+~&-=kXv>g^R3eLsBlHRx$k|N z$WjiE$#0I&}Igss&h+Q^8% z>(X9$4Sk9}sAEo)=6YG_k*an|*u?FFW72jx-}bi2_=+R3eQI7HRPR`&H;8P271=^( zKZwsZnRneP1GI9|9o;a^;IC~(_}V=(GTfuTJxT%pVPJ=Bs8qlO3KP=2e8*mGxuCE>>(Te`%&ci>yJP%C zD(0(#(_mkhL?-ep7dCRuKzHrkg;z0-&5_Ds#&4wT7+=B17U0}+q6}9;vs^eF{VeHV zkqSDWH5qz6ROnQN=x?}#f={SEn&sN_wtS>{oGZ$S1%u5q)(-ndVJdH{+XHw zz)4yN%1oZ}k8t*+8x0HkapqaLoaZ_7Ge%!oJeinZYTRdx>d=xtH5cY|K78-u<=h7) zZ#X}(eRw#2k=OKmpy~r1c@Fw+)tEOI-`*$w5Gmrm6;YC-s-tosSVH zyXTHi!CqZ@e|p54Ws`OFDqZS3S);N7E>h_viX zK7YUWJpHh`@p)eCqla&dZ=AYx%_Zsjr_;r1>2Fv+@qS5ooaD7ce=a)5`aL&i&lOCx zN&JG1q4l`U6X~({w(kv}a;?a{xOgXw7@lu4R$X8$S_bmJAa^MvLGqiS6~fA_Dy^D+ z(t1mYj}`Ux$|9d<=x1*8+wQUzXByci;+tP?cCjpoV4*Fy<~Vl4**bjoY(lQJF~a%a z0`myLo_5hU7fjE%gtJ{sy?Vp-hW`>Fn~t#oitn;rmsA?G|44pGc8yc z{B9yGAk9(=DQbBQ{^X>9^7*uG$Ndhyu)He69QB2|PL)Vawe;K+o7Xn!HZe94i?ZFi z!YyyZ-ZuUPF228B^;0$K|>r|qYu`8Do+B9A1mcOM9@wH{os7q&NB zzPZe|%(GnE|NLC1v=!mb^DFuB$??tc2;AM3FK7&UMy}EcLTwRCA>MMo6_Rp2xr7lsTH>#Rqf=tjO%Oe%54aao+RoR$*X z5_*!G5`rdTCTES^>NcuKUDMyvT`X*2s3>QQZS7FO>`HxkvE;me`!-A|-J)uiv-w#w z`iS-DI$4A)!=Mrkjc#SdPx|`bY<>kByR^Bs@OcOuk6{oE7Ofu9ES%3W84?>}8Omc~ z=Gx;LmE`sw_FDMN=ba>FClzlA^~@PHm`TByZj!!hPb94Re{=gbJE<~t{FyAyrp1<| z5r=wLn7qn^W`eveSG@ZpEQe`*jpt{ zkilo<&y-zQWBhbR{fr?4km>e?zs~xd>FPMu(Ht%a_-T2=e3bL_LyD?@r1Aw>W{b-t zA8sj$yJaFr)Zz?K@6+g38`IEM3sy^0(@Haz zFsWTqk2j6KTA;!y$a^{XhQD_){^zV#G-hj&5wjz8$2_%mYudYhxp)9w@y4>l#Osy- zuOR>YMQRLtXYumWiUZ3p0n2A5lAEK+Z&!Q7R}-)n1ba%-nY33muZAC`eY1$M)vVCG ztcf`deo+70uf}peY^nI&n|FC)cZ!FL2c2Hk5$Z-B3R}lkiCf%J5p4x@-OZC$ZR&R# z+c99zy+54v^rnx=i{|%wdqqa_IPSC5OydUAtW`yKc|Es4aJ%NxKdiKC~HFj9ml^|9ZPQZvrzS z&VE07wcVP3lur)$?SDSt*X()|&iI3k31sR=#czx9XUccZD@0d5I@wEY;Hgw}}E$VYV|{Kk|#b0_Z$;f(w>1?(b-D>Ct?Qn($Eld|#J01r zRgwi6Fn81hTTY~A@zTegBkf4F1ydovRMug0$HNT8Y!J}*Ao*j*W7{oEt|%k;R(1)f z{CJEo@uIl(VC&8bEG!u<84@=Q6zc0rX_9s7--1e&n`lx3)AA;Ivy%7&}+m2098m z&LP_#ppw?Nzyxp#G6572a)GiB6>)p9GLL_SBi~ju38m$f7d#)E_|VZYvH$s;qD#-@ zrlUKR@1$?+YpnfL(bmIF%G%Du#$F2Q=1G&Lqf>?|(jMLHeXXxT-CW&$6rn2D|CUgs zJ^yJ2T)+Cah_8#vbz^OvtEwK}_E%-4?n+5t2Qps0dR5um?uFv>N9zCVPWw;gx}&eJ zry>9l5D*|0a7W6++W{b>pr8Pdz74p2TaqRr=@aPgYYmlj_YwMsl7H!WWbb3^?d0j} z(~Db^zXla*y-!^;y)v~`~1@_nuCBp-vDH!qyhidP3x-sr&UqM z(Zkn+=9RaTt){!Ly|`@59}8<0^M@b4)AGTw#-^3c)Ur_+4&Kp%Q)tCgY7V$5$>#UrVrsUm3i zuk&GaVQ(&4UDUo>k`Rpcp$Pl$cb_cAC#|+zLSY}fuC^`-Hy~|A6Or2-X_Hn}YpwS* zubz5%*)L~~ygg5<^ntGqHP@k4@K3I?2Llp(R?K})987$+VLMY=F1vcxIrVjQnZuKl zgnMDF!Yw5?24+0KXK&rQ<;zStVwM+lYGz!*%~$ZX`(=fkz&8t8W?$ln9!81tP0xVT zc0av2_pd}sqd3aLLKI1zZxZvk_dDc-w(m4njC4@$McPOdRaBhVd@ZZ^@laP)wJR=c zynyMP{G~zX&WOIB0R~Zk#S|R83A+yMUrt*bI0WNq56G3|70V%DciLtlwx0-^CETTY z6Y~k)$0I7)-o!%UCt_MH7`sezYVke+-vbV|n}>?EnNxich2|$tK&O-CExnL0p*)qD z)R6=*4v=OU3zz`SV#Lzm>ELv@0-3|I0!iBzsJ@sH%E15c!&Zij-VztbN1x4`x{N{y zQtdCcX+$l@k8~77XdSkJt-3$v(@;<{Q1;4kY8eH|-z3zbC*K657GU=*`{#=nM_PVD zi>VyQBR#VIE;(LP#_&n|<_9eDtUY^;pH?K^TyS@}-Nl(hYT62jfeyO0e~cj56U zaEuJJea>u3L#kb`o1H7YN9#BuA{`upSW5umN=oJo357hDWp7z@Td!Q`Llg-nCD^;&oDi2UDRK76m7 z_^Y@(w}&paG23sPTht<-uv;?Qw-_^_I9U^CZP6Vd3!nsy?bul=7 z-u>YuW-7n++!KDRqEdFnVspCqNwaf64RmoCg9cIkn3rk&Rzb)MCP=Zh8XzFNtXPrn zzJcOv$LzH4_->4jA~aKLTo>1-*qK!(H3$y<`MwQaLa;;;Vm=t;>G6Y&Hr1qv6s{9) z`@xtrqAhx$xl<1(kwJUA;lN^br$HE1f3w>>a|nZcPoyA?!}PMy6#{_oYCvk?E^ham ziAVAhj+#LwPRPxOdJ`$DIJCoUjp)P+^C47y1eeX<=Cy-*o?uTV#UsT;SKkkGW^G_4 zkWPthNRnvUNFc=_f!8G6(g-zTK&iB)e6#zW?e9m4W)o}(-uZ&s*xW1+#_u%EN({Bz z@F_!o0FT$fT!`r3%_WO#!+DZV{SBqxDtIrw-kz=(Z{v7W4n_jy?0Vl2HfEdg7veOE zLFaDWf-CuNRjC9YP3EXZ$DW*H6L3|HW|bvsWi+M@kHY<< z0kTJnY;lO3Ud4D&?Muv6Mo1}L$P!>e+EMccs2)wj8=iQLpLZ|Uc^!Kxa;Kc{ME_7q zUu4FBTAb_~vP{W8THY%x0b}xyD@fpN9CmdTgnE<60@bZQAiREvH)MsE1aaL;-Y%hz zYAUvQpFAgf6ZFOku|GqNjth^71X>8#K1Q8uDKZTTd6W|@9t|>RWlHJuAA@h);I~wO z7sC`N#Tz3~r}oklJ#q+zNJPtgvQ=&2jLn9h5I?8pofVoMFE?|WYYFrfN{Cb2zHue1 zH5fnLa0UTphzMI{oq#z0K(>QqwVto8amvvY@rbPRn9> zixhH8lQY@>H}NG@DWnhxb|?!l%_{CzlB^t25G}kju2eom+ZSL{pEx~42UpvD##FLa zm)7I`YH;(ParWfl?U}8f`PM%5(YkrRA75hq<8P%*%uNVX2R9@(utDyPIV<{OQ=P%9 znVCbz`5Tl}&fOcCtt0!2Sw7y1wyh%@-*fh#4Q%=j^{vMrJ}dPBQi*sFKmBeUrsmG- z(#bK|?U;1v6_L1aG*e?AXA!uZlC-MbnA73#e0y^Ep{{{JN)`=|@lqoI6SyaFvZqI# zNh#TNti<5b9lwpy&kqgy3zs?r#*v0iHU8XU@-j_tEmJ|nockZnuHEkq3sX^e(8mtj zxHTYP61)9W&}>mgPM0u5SU-OGO@QLrt}u6g zBDzLne2Pz*)l65`CayD>(ziDU=3#?(+R1u|!<-Rq?^^L6A{DN{za6wG4LEcsm!r#t zs3u3fiWw0oYw;3wS6wIqbY+gLiCF-@FI#cT2X7Cj)!>1((xMo|`?&xIVi~mN@QdFP zh-RIG&z`)i+SqGJ#$BvvS1^dS30z1XYbie{Rv|q>FQ=qOOqK8eG%_UDCN$a%JzQs?-dv{PvoRExBaIF^2(1;X{8y3I8W~x?)GU zG(z5yKwbtn02>o24pTy#uB-ylKt`jGPGa|v^BEqx;)&XD6bDV+uTi6p{bV*~RMlS#9E8zIWXoA*K&dn?4DTm8ey zgDA2+GsG|!z1og(%gWzKMZ<|0r0o}dmfEGs*BdEF>SbZ-;}>J#8VUtq@PU2#1d6K{ zKg6@K)od~fG<(=6>C7;chli)k ztkE5N=|R@C$&#p^*}DVt>-cM3D z_IAnH8i0~C=UfqpPwp z0VM#>%GrMa$=@0wm|&lqN%x-ucH6Cg4a!0QfJkbmSEVUI(SGdSX+>x2Vcr+U zp#%?y(9}+c>wZrVtz|g*ZXKkB#)NDsdYyFhLLBpto;|t!W#Vj z@@EOvE^dzv2pIt(%_^a*V7K*W$H&`FT=OLB43)OZf?FXy_a=MN1Z$O$rUI))U+n8F z$Q`_{q+SRX*B&^bbu=sJ(P##`1Ns%^|7%<_WRg=EuU=Q*-*?mjI^S66ggL|HuD;@)wYGs;du7Swmde|oOlU;<`ephY7 zCVpB@0pt?vss1>Haa9y}_F3>r2YD;fkBsrszZ06;y4s{5SEjMB`%Yp6Gb#vQ!{I=* z%wiWF83!J^plfu!mV<8r%LYdt?tfHf=gw zH-x~EoKL^$2W%rycBwNsJjf;VE?e74C`5S&26taG|ZN^E#Cg8mpKj2JT^wRqSHlsm#X902S^^ zdPMs>My8&bl*Nu%XFliN8rL5&K|rQBKtcphVDo4X;vPRp(WYPSFordqREPkObhbYB zs;JS9_yYV3$`ECR-(54YU=%_?`Q-U6K5kdVTq`vk5fI}3Jh`kXhdq+^o*vBejy*=* zmfiQ$+8j{078pdy%UkLE1RQ=4+2>4n;y3v~ua&g+XrZqQGaMGN7{T{7&+<$ zK8d7{(AMB6E9%J^|5-C3aD1|Tw2@tG?X{+NG(Q(m;bzt{%_=bIg5r&wbYO$;t~S)6 z%*ljZ*z_E1-80y$1HF|X6bbO3$)mjw zJrYuywJS`I%4&iwe_7peCw+pgj3BE5<~_3y+2&v0x^*xlkE`DSt1MeLq=%y4K>h z!OnkITrk98y(%KL>!lDILPK=Jva<*&E8u}l6toa)|MnF`@E#?P$oEeLx2$S)UsAWt zQQxplo7Q3P8^Pw`8j8WbKSn{Ykl|<>2DKeAMP2Cr+WEi3Kyc15L^1T>H#Y70!dI)2 zOJ~K?(eMQyM7rG=OV-U0AeEom`lI@3Ldfh-lJ~R6*))TSzDU#b=~&nBv_0qd|Dj(A z{G)FV>igTb^g~)wgxyGiw)lzTR3sO~k)&Jo;f@0*cFx0GqO%x$9#UEuq@I**^6BbE zTo6Rj`coGd2WX?zZw%Rp52acV;()NgUBv(?e-N3j+0`mnhfu6nlL?huRjdhT#!bZ3t-&`Vbz706qH$tI! zz$ry?nTW-)qBKI&cBz}aeTv0F+oo&($2LPH5??Tt!NJUaa!~Ke-p|VOB%dK}>)DNT zx3BLt$4hgE8n#tlj8_dpj9cb|GRXqX``@h>h%pgcnJz0+pI*ZKwjo~-+St<56QjQ_ zQVb`vx0SY`2IbnBx8(?oG7aT56E>_J{>GM@cN}A9JqI#9$jGAo7Afn*=djU`tm2$P8lcku9nfVU zvSv%z7Wia6CTU{~4_NpL6=1%-SiH;IAT~D;sj(~OT{IDRlI3|aA21KYnhf_FprLKl z6Y_SV(#~si`nYXGMf*umGi84O!+f31JT47|OdtrT^DbDl2w z6e++N_dHX&vw#KpRy>KeARd{tfya@QjjQ`73u?pSs|Qx}sQ1rX(d=0_+a5VB#;BS5 z)?lk|;BR|Gvj88Nw5X=3wZfrAd->4y5UC9ZS&#YAQ4XKKQj`bgFw1~#GWVKtBts#o zg!S%0u2V>*Dmv2|!1ydA72=(4Qxp?^IX^};wFsZJ5-lh_#|kH0q~-I{AR@)bH}kPV z>Zh>iAd~)5q+iIBoeVrJONne3riEL_DjZq^wzmiHj*EvtqR`SVPBjHpFZE1J2z)FI z7UsWAh=lEi>jI8vLy$WpvnjjFrvfB?1T>hTWK!VC4NnLHqJmO;|q5 zd&OyI9^NvA^Sl{6;g}t-OZ|e>8iP_#cmyNzq+X4Rm3^y=fw@Qu` zx>8BOfv6M&DwQ?MKJ&3@Aok817`5JAW`mt6MC^D*i5f}0D#V3MgU&1W40I<4pWvzAsGgq; zM<44a1g+qZu-1i5dho2xDJ3X-cGKy+6XHCTorYK&U*71mQQH>tmP*NbjTKm+AQ4Zc zklTmUsQ5uaBR=sH=v&CKHw!NU0}W|L!^@M_PK^(w0U94foa?rHKd~av$DO<%E^4%o z3Av!u%w(2taFv<18QkENv3V3C^`pX~IW|sht={od*potr>lfk#rL%9PN_YBq3-&E) zg^oU=ks@=#aKcvz5Srg@Em1s2?p=(;Cs446IXyw~0mIvSYs+l&5CEU?&7gUsr-y2_ zixFpOoswme*yRqCa;@~JHP@n~_XwTOVCX!&cTXhSP3|e&+h@w$u6nJA=2v!{nT`0S!ORrdt6K_tAw!6N*#;n{{ zr8kdTYt8gppl4J+YWc*@c5X(07h{L*Bu9ZLdH7LOe@zOrauBhrae|3~Gj6E!D!$yY1O!@b%O$wpmX5Xr)bK8mY;%`27m$q3}ZYE_6+?bu{{? zrHZ3?!%m~n!qfw$M)#`n=q~sCjRiRu(*UKKrO;sEH6C8XWRDtPnq;L6`}J|{>qME? ze2`g6^)&)7I$I#RD zri3}wXJ^9_r}nbMeD7AMRH|6bljr!4NOPS-pFSq|2wNP!(Hy2~f!p;DsGS(V+1}4` z)beMr@?s;imiZQx`f>C=*>>^UF@*R*nnk9K%nz`(eQ(8lCep{ z+b|6PoNyGh@b%#^8MvDD-;r_Mu$23D@tlC=Wbtm`0c7a&-l?-f!H}OZ3=wW6c&{4h z0<25$WH@-k)_&^AIe}Kn!pvqQJ(JoldDP;rIMCRWuqShcUBOzlU5HWc5Ws75o*n_% z8pSII0UXQ;FT;~m0PEi(I^@R4@+K{NZ3}GFHI>8a8dqU@1mt9I`>-=CG8YfqkV?NS zC?Ow0cpo2=S(P(?>1+lmjYZ~F7>dh(BUqp{?T*y{D<5N>6V#d1r?p25!ASWD4TM0w zN$m@@OdE%8RJ8A6=@q&Qk01PX`e18nqz57B!7JzbI_`D^16$&$$ccz#|J^yaXjcB% z_vz{BYv%-Oz{i{Z4PKZYzkZ}mVZ`3ax8!-!;pV_fG-#?gNsw63CRB7;RH8I7x3m9Q zi*MTk*O!~OJr6n_XZQC;hg2UDI~}Hi;rkDU=8#Y%{mGjMZ5R={XSMfWp6tM!P2x83 zro_E9>W{z%^^Lwp458S;ZEN=Q=Yom7tL?|pVz^D0rOlXZ5>wh(kzcH;6tC}Fd#qJU zwy~H%``b9$0c0B|Uan>;?!2KBX@f}VcqUqODE5(x70SZJt=J@FqCop+nvA*ZPLq2W=s z4^XeB;xj;3+$~%hywc#kQZ6k6*{yi4Bb(Bl%rCo*Q$o#+QcI3mq7+GH_L-lb(VQy8 zx00^Md~5go69@SwW=wAd&G-qXd$7&=wa*@p7%??RJB!S;uvysCi!(MCW8Cb^qy3cS zN}M~ly$lwW)h@sEM=%QkIP?x=R?aqFSc`u=qr~#K?TtyfWB!UI?6kL1|JLg=^H?D7X zjGMA`NZnpwfje!jZGH`-$38XGV7b^5f4Jv-TsPg|HsgxUR^fELZaDM4u3WP@@<8WC z$RqpB46yO_!xUc!idX}WLg1}02TwB_4BTd$#*TJoGd>_WYxYFV_QQidc*dsmuovj# zLSJc;O=>v0pf`;4C=yrvvtx}UTb>@}^T;1;l*+t-E^62_coc&^7Au#6B`Vp$LZaY& zp?iq#bEYNdzJ)Wg0orS{Fbj9$Y~rN0wX*wvhAIklqu*Mu7862FibHv6`C&O{HfHic zK^qTBSs7)i@4uHyqEGLyC4Jjh#NPGZ*H`q$8M}TYQuJbuMkh>poF69$vx5`Hc8l^) zz8374wN-sfkl__CYYHYj<{60TKyHXHqrz4uBj{ddmowUW-$U_GA&s54``;*kg5wZ;WR0`krZQKU7DM~f>b zJn{^p$OlYjKQa!8g4u$j)H>l=iX-%qB1k`e%muzXVFi{h)#UD0ss~l127Y&)b;7o{fOf z=Wr{%KtoI8#oLxk$r~*yG&!#vLLOT;o4z-cm|~I6-eAIE=Idm+ub+A}g1s4<%B%$L zP9ss^`+cHrqeZ%(ICnWlM38ZSHo~j3LOl{y2to3KiRuE`a7Iv{E_d(ALjddo``OB{ zo0{c@#8s|78Tw0=E9Avx@k7x}N-v;ISWj!a?}4JXfxGEsZl8MS-um)n+P+p|jS)S9 zP1pLP38}~xhV$y5`mI&HP<=^FB-YaV!8rlfX}rIHQ1<7&5*I^uR(@>90;m+Z@%3i* zL?E(QdC(-NbusecX6C}Z{QQu7@7)1Z7jn;ej@9Cc-qUG3)JBGF?R7MS0|a3}49(ca zu`;R$Eq2~PS=^2^i7x*uC5nsNp>MKrS2a|Ca1y*i^Q%t+dz*7~UB2?zd=T^d(*q>^giIj)_OCvg;gM{5yi>R z5r6RQ4^g$9nfEL=e`8B#&nasJD6hNnI`F=R@Es|fX-6EO4Dk^affMO)+=6mtGQ z5M<(%sG?QWIIB(B6lmMsuc|v9b1nX$r#+c*op-30$@pCa9P9bi=7+u%gR>4xZzIR9 zUpCh>&EE`J6no-h`!)oCc9QKwW5mLXmYkggbh+nR1O%U6r$K^h;5d}u1u?P7itP4T4884=H2>(C zEWl_WKg;KAdd*QUe7#DS@w{qsl~!5>p-!V1QRhboI=r(3`JuW1)H#zNN+EPtbQv3# z36$v-A9FagPexMP#gNn&8hG~_7Bl~ujy%7G)bcsGo%mX}?=Pz&oAz}1*-j;L`SqjW zar~3}QRQLi>(}z0?s_XP1U%0?D?kcPQs1XVHO);t_7e#;7iQQ zi)yPFrf9YUU<0baHkno8^IglO-`vqlRvoVySC{uft2=NIgrH6S$*aTLXgyVmniVt; zP{Q^3E_gvN-cIb<`=Pr%SCxS^6q$gz%Emrgph0uhO%ClK#r!^xEcF4N1gq>Osf z@KXn#&`43k)b@}QrbAtR$5E+ru6lHdDDFusR_$-ez3S&rc`RYpiX(gC%GGuZ2wFIX zoG6GWR8VAu_))J9*0F_{n`1t%`NoGM##Xg9LhNT(VX+#lhA=?1QR2__<-kfjP?=3# zKY=^j!Q4tnx@DMajEN8U$Vp6npF{L-3s4%Vpp_x=p&YF^$qydAS(^P_yxul(EpFp1 ztKj$KJuwlNwpZ&;sb?(M#F(Zz9FBGAd;)*;Yn?@E#u6A zF+J0eU~uoF4kE!yFEg!6T!Z*y;BU+>am5#<1!jANC4Aje|Knh6*pRJ?2#F0%h-u8x zymWTxB7+WJO0JU*qb}p_anKwFyKcW2X@u*J4^SuKnJts)!Dj0Jbu>6djnb zz;&#jLu#HM{UnN*$?lmP|0&j`9H!;_7^-m8c z!?E>Jv|kO_cWZ5rq0v+dWx@dxbV5QufHQlWdxiW2Z!3&HH-pFLMl6b}Fg*W4I|?Db z>#Zv}i;W|c2BgF%IHJ+|Qf9L2wLEP(ou69l^0)GFk_l=5P)5_(86c3QL?j~N)Xg=V z?6LAt=aU`>Hw`2TA}TPi1Bl=nj1>!l_rRJIL1ai zJGa2Ql3f7#mYmv;73H1Psu0P3pBq~9Dvg;D0-LQBEhG3U|Hf)r9@TUdrfC&$)&Hdp zBg^mSM*(!_jY0`rhb*pQt*A~6z1dCRD_Z>k_4}CM^^$g^`SxyTU`#{w3zYcO>=yn{ zoD6dLX>P8Pt==;fEs23av_&%RlJi?6RWuYr!o(|T_Q;6R*w|;@3;Ta)qY1ACvmkR% z<@NV{GztX`=NDJxB)DE0Y^M_M6eZwSS^d~kGD#gHwAXtTPW5|AXdgWA%O+xO`gii8 z5=osuTYhccK#3YV-a;W=_tDe_pR^{OMhV8Kz?V<5_YeLq*Z76hDN*ZdA2YlLeN;ww ztlBT?@t)`~v5n6(Fin#lgtO_+*HE+&mL99sgj2M41SPe+9=FH_c^3sgj9IXUNX>2T z#bq5h=X>vaBeY=ZqUE8#Ve!vHpCc!sA%+qMI+P`xWf9Qtlhj$K8L#C-t2g&IVdcg%Bep$j=;Kygmvn{q^=Ws#?8@P^cv$}4|{)w2z;n$eYz zo-4#-0uh>ll#5I%95jaVZ{y-<#{DgY5l2!fG*0V$d7dpxJg9);we(+vX(~DVa;4fr z+g|jxmT@2|E%8Ll;xn2(IMZKP7_@5mW{YOUgDUQCFW0o#&hf4vJlXz)%7*@U?oEjh ziYiJA!+9@X{er$6yd;pvH~MjJBlv^s-Uan{d>?ziKCW1C)4~!iURKvv_^leMjIfkm zQ$AD%Vj~jUiqe<%HM0qY0G0RQYStk?3;loEf|VV`6izxWsg4eO4OFl__+kTS`M26D z{+G7)mgrI-E$LeeeH#1Em4T1?hRJUvPrj92U^tgmn2jpjx}l+Asjux#yaA?+pbWj! zeS`A>vRo;lY2DrU^XlxDKKgUpQpXcV8^F(4blIL3~%Wfws`_{aakH{q2CL0tVT3U{#g$ zta9{O&{hnCq%aC3Z}U3niafxG^)1=FT4P71{{ahQWm{U`Ii%I2zEiQx@k`Eg4IF(O__(jHC%L%l%wWnbt(8U_a(B5g0U>bpiCN%l!|$k>W?aD(VVF4;IGo zx2Jxy$KO=ApA?p4J~)%Qh`n|zzR3G)GzBWqZuKK@BQRuIOPe=;`l!ncc?42K37_=78R&_$4CAB`r3y5 z?-p}~$2&gV0$)%!8Dwv^kRT$wA>o&V8E)Q|ep?zi^Jju1FBz~B-Uy;GT+E7K6$F^_ z*oft2M+pD|xZ>Eo_ajHO!2z93@NqdjJna7F`EL5UL%qzQXnVe^oj8AB5iLP?8Zrsm z+aGHU4%nQiM6&SQ?Ij&;2ZzJGu|xr2h&d$!Uhq}Pda3k%}mIUZV9`g5y%&DGL%;x%W zl16HRT_?%w@zGW-db-YOB)0K%IJ*H3igZZ@*qt3{2=L~}x9|ILiT##Bbt_xnm40c+_+LT@##C$U;&Vm#9@9Hq-90tZc6Y|v6J#l>fJVPVRys1x5XDQZmklh ze`QpSGI^yk^M~fVjWfc18P+HS%0WcFcsT7?B{6C7?XrEiiNPv|{xsgeF#Jhxc}PLJ zf@8AfAAG-`lKZ`8n=H#^Rn@^|ywn-U?`@Y$TkVm8&gzoIvfdk!za}nT8AV@{MFC({ z8+pm!XTmkbK)Kv}9y!A4 zICK9$!j3@d_G)yxu9ju6C1ALt)&F$}A4I5fL|4e@n(>;RTk1VsA zI+9XYW%?;`MbYNIFju9B(){Qy?W$Mvrt3khW&{dRQQ3ufa~Zw?ktaR`^Lf7vw^i=! zupRKD(s%}2NKJ=8%S!vrd0K${Xk@t!u#&NkmO(yP?mpIAXwX&#Fk!}hkC=N59Q}u$}^tcemAzH;cxu_up-3U zjU`&q_~~DIl@V!hBp4cH(A+IP715pMEkL9C&6VFhB^F&M6hS&q2J&1k_ZU5+43j3X zkEw3g32Bwq1`hno?f-!TmFM!0!-9&{&+ZZd$A!9Kmv$>flYGk8Dz6P+)7q}Wp0rA& zU^MpY{8mWFO;;jz;<#qexrr0+0`T+m>sFNJ+*(sj3f}NrJp5U4U3NLITYTxQE@-Pn zmhRQ*Puitsrf2hX@~hg6_jBktPVwLFKF|gla7zwBsgr?aP-&fmgP2mNv(EO->Caw5 zd+!AmJ!@1vf8Xc3)BZ%{gZDF>k#gVbINSXr?~unm1lqMt{s6ZHjibr?!nUkS^dOz( z-b(uOr6O7T&-n=91=|)Uhku;|ma{o}TbK1~FjOzSEzbA4k@kJ_jm$|Avj^cC*V0@e zXH35&r&BknxG+1ml0h&;y6MYK)8^Lx002=LV)R$apws^*T>jwp41Cs?f34C)$>(_W z4km~rHW4_HWu6hc5h>8p-uCV(H-KH>Lxr{qK$-MBwADOxSyg{xYFcK=em?weYh{TPqnJQazoC zgeI8QVSWxiP_r=PJ-zoeDShA-(IXI*h~BQBfYj2ei6g*+95yu-?tNh{T}#1(C6Ong zrk6MkwU-9pQ&YaC@{eE?)NT-K!1D18Fmj z?Z;U+Ic|&MjkLMERw}rU3+`*H>~kK=MK~q|FgK@#FDBeeGxO-q8}JpmiHd{UOh_ zK#r`! zdHlB(>R-t9ihJ%~hMo{tw|kR>EWCeL^2$i~9Y<%nJUCoX!*=@#L5XS%-Q#+TaXo|Q zJUR|Rz?f1XF-H&7dUT}dT1_JZf6YTNEaa7Y?N{!pIfglQzPf-FhHSFUlg1leY4i3$ z_6-}viPdC+I%fXW<=TC^w|Wodd%bVAdUXDHve0oqGI~Pt(Vh+^EIBjtN1$t}K;}(b zZ7-f$U!Ac|Fr)u|&P?WkueYqX?(Cn!2)pPrSG@EVt@hDzr?b!d~& z*TN7Mm6I66FHF*938r1M2G?p~t<*_c8nWFlUKx)g?NU#6{a3RBrrjE6$17OBB?~5~ zzEjJ&>zx{Ym9?|hUlSy5E-E|cL~9WxxM?WwuyLEal! z`N0RgQ#Y{tjp55Z0VNxa4DoXCZg!yz{x9MyML{J)hryiGR#nN7ar1!hiLz0%iDN3| z4%(=cbG%=#v^}KkfkZn}3?>fh(zjyjZ8Z{2UURP0I~@Hgys&copPBsUZlqW8Qch&+ z*Oxo)&wgY{G^I+6`ATYFnyT|QLDm7=lkOS_uAR;#*nH@5c>}zC@i0%C@U_s+DOsvJ z4A47h*m}~Wof%|En44~W-OXlvsD-uCW1Q1V=(a=$x3@imutMVQHw8QGFZET=k#cSw z6W*o!1J-qAI_LZ*Ec`di8`b%$TS0w$VvJFQgVK8G-;vJ=ZP3gP)yqEs(wY@q+F^(B zAIZDz^FZwjeDb~d!rAU z&OVu`KPbDFF0xF)p%HA6kb38o)`Oo~4KT9*$YRET6LEpbbahi7VK!M8o@Rd)EZK>5C{BRzI1k17XXXNH zu5TI{0vrci8uscF8mNw0hwq_ZX60=kH{WkIYPAAO1=rqmDgI!0k48$#gkEX=vUDog zI%}%?-e9Aytm3mx*L9VEndznm#mkv^ruTv6@55i=6TKZ3YNj})Os!||d^J%USbt18 zm+8#zvnWdh6nib$X`p(oB>zRcMPQc%?LHB#fUP*<@tvMYK7qPuovGY`U~YKcm-}wl}6Qac!oo6}2bLEIy^gq_NtkRd9uj{OGTyDu)05+=yNrwlxAtiJa+b$tEwPN@4 zc(TewaPOMd1k|^ZzjVu^i*#58Gi#h#x#&avm?P)@O{ds)phi`MZX$;e`9!MCQ*y@c zxD#Vt(pl-gsdzaHYEel${F64#`#S8p-^IJUz?OU-h#CJt zvEX^=Fu#)jq!2>+uVPO9A4#tluj;wJMRe|oeBklcZH2IvhMJZQJEv3oi09p5UFsHs z8Zeu%O9puW2)A~w$EccZ5`;~A{6@^gH>YdrwgR{99{>7soxgrLZOOg;*q@v=Pt3|S z^UjHS{(H+32E5-m->i z)_=PAV1&;e!EDL*Zi5_n?VP->-Tp%0F0M}$S;qx|<~SCpRpHz4t=KDSWmV1@5H~ls zvgV!&5#A|?&!DW@Ok>8n%mU`e)WxZyYQZ7XTBUP*K&4!8f62JruUh4h zWXKC!F!0B|3LA%RecVSk+#W}8J`(S8 zcwo$JNeFjyE@6SYc2@7+DpKxW{=qjivqO)X{=72b=GI%@KRARfDnpwNNAx$=q2>z=6rX2 z9se3a^!I2P3u_tcj-!XPr=N!*Hf4x&KYcphJsnjnd%R)A93%pAAdvXk*;_Mw@!$mE zn)9|kBtR^ilYMLrLajI-E%#pMbWm5X$(A^k1l(rNMfm`SV1KT78$fqc{%1V%$DQVt zHrryO6Ym5cYGdGklRbb0_h4F5E4^}#^rKbm0~62Nuv2p7H@+xBpENPhnuKr*!}0(Q z&bo2cdLG1hcU((UKNmsyBHJM~%l0Ek9DRO)h4C@$z{i>srw; z?&XI&`pUe^9GIhs^96p@kBYK|I+^TnTOc}`F2aP@!T|gI)$)P)KeweEv@I_Wgk^$g zyqmgPiS~SEoN6IWswX`BR%kPoh}0~k%jcJevTI~fgQ@B7QLmg2Kl4~eh!JU!gbVNK zcxRrr2d7d}3ftJSaMMW@%Lrq7(8{m6?N-M8KoL{t9nGIp!G}{j?+ni0$U+vE%d_BT z(Lelu5VmRIaSHOXT1sA+o7eEZ{JDw?6DbcJ5^=&7at@V(C&#+X!5;9Gp2Mp7I^ ztERp;0l!?a#Rd~-BDcn6Q&lD~i}5GlMr*1^r>)TXw{d6R;Byu_ON12}2?v>J+n=*gA$zB+wuc#1^+1T! z;RW8RTmUUVyKbOMkvp{LOWw(4KW7uU~XIxVo2WOO<5#&aA#IXE&>;@ZdM z(@LAL^>#(f_3;y^h>YvmY^Xu{;ox!F0jJEsi>QcuB8R>RZkM)(DAlEMi|{s(DL~%; zndzfJl{`&=qz`J9DnjOh1b)IW0lC>>DE;rFO`zO5aB)>&t?^6KeTH06(>(8n{#J7Y z)yrv0-(Eu&aa}PwfUs!(=*LwlLo;wqTcjE6uK_J4fTTy|HHMJLs{q^c*1wIX{~r+I zU&pZC_yW+-`P)nCF{0tES4>jINqwLljb>->%XX!|CeP2jgrpi=3ae1Og*aS`A2tg< z+*TH~G$AR_1RSopm|$I+3ba7g^(T>Y(hk8>?iRNxNd{w0_3V?)p1uvF!70VsTD(XN z)S`Ccvs>Io=6Wif;)EFJ;KhJ(8n;F5_-51TdT%eFH6LVEvoz}Bv3{HHiwlTW&f$G< z0`mMSO?Tc}YxSckXjWtAzM9y2Can3k=i%7&oMPZPNTleWJI-Chw=VZRP~-pcDp8kw zk}j*JTOz4K(C{E7BGRkMnPk5Rg`%-T_^cF2yN67j$g7U29qCkc_whj(swO!_UXy8|t4Ca+DwEL^D}}p343q+G$D$y*v%C zBw@~DdmDd<#+G*FoW$&qiSV;L<=V{#pOsV$Yz%n9Ap`E0g?h|0oKD_0nK*ytG13>0%@pm*9wWza)_$XchrK~t{O{WH#n`V$?3wVG}3 zb>Z{K?BF(FD7N>%wE%J_95IJ!=i3<<$m1rC<2pk!I7b!r3oLgpR^ z)geK2+`(jKmx_mnoCTAMs!@#j!7h`hU#2Lz^BWfMpr1yx?qZYM&=Qjc(jk4@Xq8K>G;vvDa{Z^Yc<+}~su88vB0rqQYFpdP0y@n683L4ew8Hr~S+iz_ob323E^3*LDV?NzQ93lL&9$ToH z29-GB9rUKF+sWZ{*(sZCkWsc&{J4)IFmXqtNCVo{##rvU-BamO6eVKXWOgy3z&S=> zvr;7FOuCdysOeO6_C^K5g*R#E5@o=vT0UO!%OO!qgxMClB&XEf?8^6I8Z zPrsT>6FDF)$x6n@3GsE=bnk-$0ps1Yahc#GTQP2}K_AZjnuW2`^tm)Ix)*>ZyjQk> zjuZlAyiSs36xJshSZwHhxi6~(P87PuOiK~G5I)Iq>Fz&!GvvfGjNAK*^U0IJhf)2@ z12T(Q)zCMXR>$Cf7XA}d$o}!pRoO6;My1k8mwd3xrx72^s6k;CG5EaGacEI;q$|{% zPr|s_-^LIa$Hw(xiasM2TidyLZ>ubh*Gi4$ZS#5+96xX?R!&)gYB~zDgN^rR1_vSF zBJFCtigGz+o5!NrA?zB@<6l2oYYr(*4Up3cWgoIXhxyhvJcS@rQCs=wCdH!8Et@br z>?CAdQMI$21ygGylgnYkNVd{3!mz+R7{W;9ZVo10AW1;H>JCJI+YwF%$Gw34C!q_8 ztM$fj#tJRx9e~u@OHSNsr(1oy*lZnqT5H8U+usX$REIvM$BOvxO-uHiH3 z=97^CHGyf_1$_idf|T;OX8*!~Xo_c_JpaQbq+m)=@g0@hAn{d!96zg8{g*q93n0c9 z=6C+MJ`{Q59K)u{!XGFNx^rN^1unSNao_T-P+7EYl9gf>>WPG7AJ@>u@|w$`*_(V> z;x?f`?-3&`mU-f)ni6<#KH2hGmiW;>VoiP{hHrEj#p*|NVxD#zdK{0K?q~6fn6G|s zUdfBeQ{s$}eOnOHZ762Y&!`o$@UV&VxR_^Bu=rw1*lWc~)TyT5$OmMMN6;OXOYi}I zdRWy2?SK<8NBwTz%id!Boal?@Haku`|88HeyzdLQUcP$SCzp~DOeJsORq5#2IzdPn z6;|y(b5&@W*mK(h%MS@?>)iO9460?0W5OS177^xEkIHnmSk|Za)K6iB^mcq!L zsUgq%H=!)4EK zQb1I_4woJMOk=+cbjFdLJtl(*%Eb7pp^e_P;r;5J>KvAn2QlhbUQAVvSIMs1{;1?0 z^%%wa9DI6Vak8$3-X?OCk()fD8{X;Of{Ra)cfn|M$QPijZ_qZ2am%yPHJ>>o%6DQ9 zjV!?c1Bk^R$j#|FHFX)BLNZz}h~oS#KdDUkk_1c@Z}och_$1Oo`b_ZhZB` zwCO<=)C|+PG@~T7{?pkdP{y@#3GXbER#Vo&hj!6R3)?<^8dHn7)`d_0Cr=rQ$8_)n zIb<7MSDq0~pR8??-1iX;>|uvGqa>sdy+M(NEng>mTuosvhf(ylTKc~2*STG;Fx9&P z2i~f1Ql22t*~Iq~Zx1xChbu!biktzNI>U8;1fzGxSsUio4A6ncjOd`Q`BB&`RHjA- zg5eH9_hv{uS{IyjacN79;-EQQ)d6gL8_JcLPP5cz7MqL zZ#4$Bq#8wTQ5$5Sm9lNX>*jj5Hng^5x1a#y?$yO*I+Dx``(k74aqwU9^ws5R`8=J_^sS;Wx$s| zN-L-%+wYs^cAq`eRQXd^eL12y)K4={f7Sl#i}y7zzXQ1f>Z)%J-HX2oR@YHftYm&5 zcQGGv;aF}3T)F*%c{o)!Vw6@8LmCz8+D?co=4GLrKfRKo^gLpSR)e%MuOaW0_t>g@ z?zk|@opb^Bql+f2kf*x3$T+hml*8#U@FmqsCNYekqYG87Rl6O_ttcb<)!E2EHMdCK z6cZ9`i5id!KrzNdaCY38*%g2%GDoGYMBEkgnEk~kCSG+Mrh0VovlHKsv*CRf@~pal z^NpQ|yYa;fW;zWu`+M&mZxm-J`np=yebHuolfhE%bE>YgYL_|jqwSTc#P1W-}u%PZOdZnjj*y53EzIs!Q=%J49T>Gk#6 zR}bb9#RS$ILss_3Z8!0ZM50@qjn@HjW{)ukgvApKVj?EHbvL0FeIaf(-P@X@H(B(o;nKymGq|& zEfTYd5eb$U`fzhAwRV2mHrxaRHk0r`pE5>0r|r)1W46>F6P1wsxYY zYu;+o^d8)g-U+Lp03gb*Vm<}_iRT`2xt6x&(|yk~&(webnlJ zQ13dZ?hLz2z{*L5TSLm6NrV!O*kp6j=K{NwY#&Z8>~EGZ|Rw~70Nvz=;5g^y!TL^#b>BCs7#F(n%XU$gE6Bq|L z!*cRtvny~1E4R>KAon)1-BKJ6kU%DKh+jI zFki#~Kk<#5PszzFMqShDBH!J!PgmW)wbN?|V^hRL{&w=#VU+BCiv1*Vjfa}phD-HZ zRJ$l9*km;qq4uy0VtR-9Ma=a?0hMcwJ_@Uj>$Kno;Jf#-;?jYVy!sQr`~B)I z;4w|a^{d>h_{HydrxsmCqpGn+r|XYp%^&TmENI;F*xi|xPg}vgI9`d+Rl(-77%OI1 z+9(ZH%l%{g2EFh=u(6iyA=I<2^-pc{LHS%o`F|yD3dDlDnkff}&Z2#nsF5huGvZOZ z9~_sV@|$J>%ze+d!;_=uEg%P;7yPySqMy%2XVvM|&1C0DktxkRBjx6f0p*-6}yX3m9Eoz}Z%dfb! zsPV_vG>eY)B1Eq!0xuD=N+K+B@uyHya{mPg!SVIeK}99UA}so6m9bHYf->|al@&m_ zwdP|=xJ60L@BKPAj;`D*=@7kKdxM?Q7}1ZsE7jUI>v&^$0NsBWy4`+@%^Qa2Gk=uf z_HoLu<+7uNHB))uLs3?p?7+-y<>C#g>~lNr3Lj+VMDJ>U zxJ8xpWkxWG2AMeE-|(`tw?q*1F9Kv{v&RML@xLma>JFdlh<5$Yl7L5s7ob6Zrk>Zw zgc1ITf7aGX^XLV!_;{W3tM-cM5Ea(yxUczMiIoRiHcCSrKQS>X61|m0K|>Bb4Af(b zBgtY79xj!j`zskx9n(i^vi9{l+=H^Soa=D~xVajKqps>S+Zih(ENSMKsoHjd%b&G1 zK@y_79qM-6$%Bk|~1UQGHN~1);*5O6(*$zDKHk~|P z9r?oXMpC3(#I*7bEg|f#8_?S}Vglmki2Aj5moOZvQ0zK)n?Jyy=~I%J{D%`0?MIDw z4S6lP9$&}W`ZCdEMEHyqLWtj4=%V6IOsxFvEiVs!{8pGWzelTQZd}x@efT4I9x(G^ zPaPyFlG8PMnrK zqbLLOU?LoJaF+6VSLpD-kwE5k%27kYI50QU#T#+n+I(_RL>S0z(v;AFWM4DK9Mc8b z62u#9NBuH`S06Y~CvB&M>L>R7bD5aDXxf*@c|XYmj3*)c715ZW1 zMwzrk$<;vLJ8`*ep5--dt_S!7n}7-JQpt! zJ}mVT9S8U)z7sD(g8drz%pBv8M6BBDnCiPP{S42JqNi9+y*t;!3N3y;#>)xC}2h+e&NzV3%{HuP_Rd(1AE z<)yhMU{Ud7=7??agSEN~iS%XNs}`><3W#HMDN%&7A1`#P?i#&m{7Ps#yAl`xjRPvcA%vGjA=2!TRIQ}ljf`!?Z!a^Maz(oFTgBE1dC zM9;(DPhBcjS$q&96Om&noe}7k8fDwyKn8GzlO-Yd<0fffL$4syxc4RM+5Gdx^lw^SZcB zdWsP~d76;zB#jWh%EU7XQ4_u8Lf>}2kQqkFk|4_bcGF&a{~;hH=1$GH!8(E)qxfIpaA@6uIf9&KwfeomeEv(AxK7Pf*%-?I!{Q~0{O zqN3^L483ETjBb-){bm->#8S~op1{$NaNUfBA+$nOX90p^nH;WU~^GpCB3*2exF zcUox<>1}ybF#@DuLZC%-I%)be@Yp<}f@;qPT0OuV>ZvSTN$!73r^RA4!}LLg?hP+M z-sZ2w5@*Ml=n{3ljer4NzM$t%{MtGU7xPp?!XGeov4LvMoDH6{6sj{z2YttOBs>x$ zPSAyOD;RXK8s6GTEIC#h9t*1(AZmC>FLcw2($@IG7^2{IoET2z{isySfa5nwx?<4d zq4#;&&lMh_Tr?Q@6y%(&S8+vlZ$l^_#j+D(nrMmJ{jm1Zyr5tEbfD^VT?l?6eY&7gy0Ntx z@JIA~W^5u78FsM|?|OEkaEc)toc`(=P~U?IPrD@brPE47$@Js_Em##ZHUDb>b!-y} z_tPVWp}hHY-@M@h+SFR9)H+cka+|q0{2))u=GfO~~t`HDDdX*ffv572=WL=8R zjE;_cFJF3)n$PJI#e{MUAW-Hm)o$-h)Yqw&#m?{%#>~_X`~b{8l}BhHrJefz@yeQ= z*@ud6q*@0ZWnKDTP5QIMwQhcWY4++$?&>!LP$}%8P7OYp5&G&@j1g1ifLdTAw=W}< zIQq>eq~-T@NI=&n@bLBiA9y!bCf|?Ih&4HwP_xb)=#yVHFxO9_ja*BlPxFI;nqjpaBmPFIS3Joyr@(jkhRd? zdH*K(4=O%lf!2W_M)1ra`Y+|Rv(m}_Vc94kIIz4woKd&VNch!HV6B(R#nu#yU|pl} zlgf8B%_BcN_PH81<_wI#scIWE5Uji~a&qKEi@9>}HE;S>skF6LwO+apkOI(`DSRq=a zuF<_;GH^wHYOVet2w7SAMvST* zCG_=XLKen%WPZr3%b3>;_Q~xDlce89UsFa4pVbp~{iftM*PVU5+B*EsK_lgO!M4N0 zRmW@>90=%uXs*|)Xp{C!*oG`g-9t1E--_~spJ$MNlIbq8#gkybHe3GNV^iA(x2GL? zGuXzAQ88L15ti1uPdk0!e2EPtdcE05S7h)US=S;-8(Pqqwh5^U`+p)BPTwBwY$b^L&Lbz9)4-;`AWp?nx6?%Q@PVmZ*sF_n|@d^P4KqtzRo{_NMmK|x&~ zg?@_vVA4@Y=#-T}j)-`?os4`azsK|)LM4dGkEHw7pF33QaHC-(vvHUVwV)b!1~ zx2MoQk+)91r$aEk=#v&j$ia5$dg0!sY}D3nWE`>4nc?u}Si5?BePv9c#Vo*A7)__Q zRfU^Yo{5ybz3Ut$`YnraWt0=lWd$Hs|m$8jV;x zxN=-usy|8hJzqjtw-#U_7Xqjygf`?L1@@*bET6B+b+3-DeOvZ69xH}oY&Ko+4i6m$ z%jO?WDwHCfi%c8d*Di6oax43x2I>#ipvr`F+0OpA=UpqKLhFOwk5#7Td*>JbPr>oO zhaiPyY)u+1M+Y3N`AwA=I1M~gjP4d;UFEc5)B$(Ieq>~=r);g9=rse{YQS43+w%{- z%Q5%aE0{|kl*--oxf*dzjHoK+()utlW7NeRD7D5ZX9bG92553=)&087{TlP#m^sJ( z4Y%vlA#W$Oy3vX&{p5|?XRBr}4u~HoMgm5ml@ItA`Dc>LNz80)ozHq&;o7p{E-002 z^leMAt<(T;{*izlh=O|mV(k3!cAh1bq+sD9RyBkJfpNOQz&#fowSMtIg|MJfXQBp) zHDEt>Ze?u1>}sMFg*9erOufqX6}vCHz`L967p}~|^zfSfQtYPri-5ZnxWB%zqw?!x zH^10~^>T?HwUL{FU;g-RTkXPIeX&&TYdOfL$+bZzGXA>@bKhp*d&4k?O|~ ze>6-l1k_3hr*RE>MwokBR(Fub@3=59s%e-blJj+bl?w1yOaNNvt-dgo&k9*~&{-^w z+{`HnpHARAaglCK-47`7Z}L0QuiO=}@~9ZAQTaw!f4sNciIpwC=%(?x!k;E3!^6Yv zVceK9nzkd5L-IXlHCAY1jWX@lQ}P*U=A(am^?4(g^XEu{Pq+!6`vIHfHSR|7`wz0M z?%$8y|NV&t(CDWP1$H0prBjIX=NCDoZ zukRi;hA~^!jyjLL?hHSHVb78nk&CIR{rRj2^{=4wH4}0>i(dQKMJA;i-^M`jrrvBt z*=8@{RM^E0s@Xw3u*$W1g9-EGpagUF4H(qtRLfG(NS}~)@*alIHykw&-cX&$GGl36 z<8B=rHzNw1U@As~|H%7b*@hrbNQlI2ic(0^JiMXP!axyQQNOzppLp8;KO^_wLi){r zTau1lwCpTTKmPcr*~v*a_N$7HkE?lhpo?9&`RoAW)%q^A$qzEDcc7BeiG#881eS}e zWK0u^8f{7DmSg8-%)eEdC??$dgL$7SI!hAHx{Sy6EpvtVX@zT88}7d?u&*-L1zQo` zbmpd}%yJB27o~TIGBt9QPl+ZzPONVNwr&LyDRA<%P+bL|A_wKVrj|LH71H{U2ai=!1k!fvzxY@+DhxWDK7wWR?0!#Z z1{45$$C<$mkGSc(ehce~D`K2_#T4jL#WH9LuagJTs3%$HUFLUO-j~r;vH$*$A4kd6 z?_|XHIq_){;MR;kF25Vfsf|3bV~0P!tkgulDHH0jNLiVat{D50vg%#3!n*m~g_CHR zvtT#adGu}}0VmZody@ag+_98mPS7me9-TmrPT-^d)X&IBHZ9a$*X(QwxW$WO*Y*c$ zmI`OTOjHRF`Qz5*X?`LQKK94<0{i{%gZLYAzMEN9M80l3b4=J5lMiexxnYc7USF4q zw81lbhJENbGA$ew)IuJwb9Hx~sV`yMAeklyLl$H))l`obP(gD$YYwbgh$ zIo;gVyr?E`G}NjyU~1*y>#h|+v%<;SzI9%*>BRx3 z;m(wGBDm4pTR7caesrKJ*2IcGczJ~jr&I^7}} zG4=pp#=n>G;`GK~C+#zkx*#B84!ql|^8qFGcky3XhMS`KFTXZN<#S6wg)hVKPyC{I zac>|Gww|y*sW_V24lPyc@~F$SBo&x0cI*ELld-f5f>JIQ-N1?G`h8FE!K3{1w$_XL zknwqJFky||%`g4KW{>ff1E9r3UHlnyPh(=f^>MTjS|-&FzRHSWaI6m}&5&J!?RcS- zIw=A>^37_Aq&;u;^D4de$C?&mSSrs3e6gENn1)A}|8zqQW<^^_fu1asZbur4eAr>#bArNK4_wLJWjT%hO3n?xN1)C(vmf#&cy{2dHp8Oltur%5 z$$eaV!m6}ZaVC&7+{Z=54M}Yir!^|9;YLqT_wSMr)wSSA<>SG5 zn=SRnQ~zz#HnUq7oo-vC?gGCV2dzMbIR)7h;7;6k0o_&%nnHH?p%B+bX9)Gz<8AQ2 zV;owZvTAkQHEo_Vjo(|6$i?ZGeS%WI)xNAcq|V+93!Z7dSA5R@?d5Ky0J@)34D+M3 zRL$Fa*Cc#OEEZ!30ZHq6JkW5bWy5TVQ?BV=bIjUa*VB*ddQ3IidR-=by8%U#UMt_r z%7n962kSv6_TACm%m~`f4ID7HAW?c09M>Qe(8Ey@)O?S$khpK4=&!_#>3%(Z*L$fa zz0&OaGacdYg2d>{MO#fD26`l{R_ku;b)v%PUR-0vnJ8SB3ALpM2zI3Riw_Bk1<(yV z;s%9Us1AMT3~F`GZ((6t1csE=`mx0tDx`dCTrDp>_(T8Wi?Q28p+T8swuyQDOa1}D z4<>F!Y@JHoF{6@S5*9n;x(54-!dAS}J3N4B+tqxnmZP+pdhDV_&Wf;VWcrLamf=UO z&$HwN_Y|mU4~)Rzpi*$HHY5~Ve@l#qZc)8-e9<&#uj8YY_}(Mf#Hh3sj0Y#FSEwVk z`X=(+&^bao$Fy);knq?&`?+r|g?H~mpT}H)sl$^Oi)o|Vro4NdmD&oa{B=-BKxZq~ zc^S&GEP``eUB5xH4btW%2o`$(9PPCifE^c_lzmEPKCCEpheAEFGCUjkC z^1fu&o{fAI;rZjGnAPfy+{qXS%LGowFl)6masnOA)-IM6dJHywvfU|8YYDG@e9O@+ z5_{&V(b7|dB2JKb>x;TnCU)RX6vtd7#_kl3rUssU>=a2*?3jRkIXtorNH9wG-!o0w z&FkVaqz&u^nUdQ?#hENHGNh}poPOCxg0NsbeE$e>kpX|E|1(`dQ?HFxu`U5CH=@x( zTPs-REtpwk1DrujzN1qzf+ZLtG?X#@xKBtX!L5)(`_Q!fl+IH=k2yiKjkQ#}Ww_Hj z{lz|m`)y6351q7CvKNH?EZpG<-^Hv@cx7VVdI#p^eDK#P8h0M+MSI92g$ux$A52=5 zMEU-r4`~N;Ym0pu#6ObIM&cxcvpB5c?UhB^+;GfFONI)g{YPn5;&gjg_;cziT7Rym zi4wI#=r|BN9cEVOa~Ak#pj{H=lxa%b7UXUoVwaoP#F~}h99x}>r7SnI?q%pAhse-F zwp13}YlTggIV14|+~r^Id3Q|dhZqaI(C5_~uv~ozs2bDmPpqE*ck;7#Z`oohd9U!C z#trTq*#&8frG*}c8m;UF2p+D43hV@BfPthTD7MdC*-@wa;&8! z`mqlcsR)~i-Xlx3a0Q7OO`{48*HN8D3CV?V_5#@()Cr0hufeCSN8^rP;?J@Er(aj; zOioPfDY=6#POo2fH}IJ{3zc>`T3%?`Vuk#L^O!~@0s#7cU2$0hifH zj_IRX{sS-Lp9$;LK~DKos-_^k1aq1A4WYNRz1i_JC@;=kGqb~OKnQA%6&;dGEtl)C zZ^a6kmgU-8h>`BdGa!|SRU5gc-9FX95SIx#G@@9&^bRNe&QG1V>WyUCgrP#Cb;&r- ziDY*gL~#t z&TI|Z^OoqjTd7w#5Z1_$iYPk)Q~EB04~th)p;YS>>!Lalh)av@X|%bI;f=VkbwT_s zM?y@8TagYR)j11i%vEdhf3>JadnKs}8=gfn$R?=Egd`e4cu89h+Ke4x)@^dD%Qpha zT7+@5RKiXlt~swpX^62xsDVN~BvFZWpShHM-WIWyG6$^|+C=$+>z}e__Fr2X_xK_k zXJ5ZFH69JF|8)DveWFkz0f*LI>iRA5bVR73GiT3i{4Wg|U9P_|JT-8pdg&T-Zb%mtvuA<674Oi_b{6%YPf$r#m2&vqc+KIRT6Pz8~hy6=rk$1 zB(1BY+bP#VGk#F`arl|q(`Gx>*VE0yjllzcr&;Iyl2zwavimciH*UNsOa>aRU?J}d4H52QuviJ_f;idD3IDeO?xP(NpLPXjaH>ar5zCo7@kxq z_c;k*EX$cH_MCbMryf!p1g#g@gvRA$vTWRivsSd{QBMDOx}CTpk0#xL&ES?^U)i6b zF``TE6N%;4S$02_WPdC&=Dgy!B3Uc6Xp>sh{fSrvD(paVI;fDj$?1Dc=xm|4im0qE z<5uIMz!qxTz0z{X)MPQ+xa0%GsOG& zm?J~&giLe%EdMoUpky68-U+PFYx7h$boDMnJXC8a&Fb;e$Dv63jyc*UK+_EWIy}Dm zTy-_9DlYU?Hxbb7NPaaxKYnf~`Nb#KWZIbkq*+XlFSKC8fU8J7zcFmcH|BvXfm(eI zqS#VBv;MU}TkdKU_gd81ee&%ALBAeJ-7_9o)gEU3Ot0BG_qD>1-hvuWn6@M4Ce-I# z7WLu-^fsY;wE?@CP({P#$I%?REs~N$v{mfsrFC~tw`Bv&IWaC?1odr+tM2uLANs-% zF^c(r+wIGlR)Vj5`lTqH=iI&(`Xzo5ux#qZkoPkw??P9uY0gl*`n=cr4j9*o|mi6dOt_SJ~Aw{m-Cqz1-cc*8D0oIeLekH zlWIW#NqYSh$)fa6QmUfV3Pp@Ca&?r*7z$NyBiC$(%CNB|W1^_IF}?xe{f(w>P$)Pw zX8o{~cI^a|tznAWkwC>z&Q)oyCu83@yE|Om^88-&%z4%MOb{}wEY<_3r<23{4GzvTU1ePE2g{oQo( z&JtTW@wKKBg9Ks-X*u*!hGnzS&0Rdf7Uz{d*zdO2?(sziLyQhi*Ff55YSc(3BrQDNKSWtNiA%}{tJL(XnV2OP2t<|!ywyP809u3I>g)JA%<_XT9Cj;amCL+L6hN$JfjO*VzeTy!l)g}a(0kN1j_=rIDd2&CRNjjAmcvuMm0*iZm&a8Ccze%XBhZM1TH&;oGn)q_EKDKw_-yI8l6~sVCKu}Tk?(8c?o-=6Ed_j--Au7Fl=}9DT*PKt~oL? z@-ODLJ8pjoJf!2e^MJfHlR&$Eir5;#NYqPDO-{Dy%aX67X~s)H#>FQa{aI-DsbGn1 zQ3Hd6p?P`tXk1w3G+7uAyNEd}r=h*sU7W8KGTHZMH1({Xs`MMrq+ZWJh>p zVq&8HbnaPK?yMMPPVCZNhXwEA7P~E2fSW$K6jwiW1(xP*WaV=+A#}GDdpAX(Zcj7Q zB}cVfngQCNGCSE=QLqj!DAKT6)vJRrHK7@60Nyy7ZIYk1ID-FLSJj>P^`kBKcCtQK zTb40(=awkvA%6k)WG$ljREA69`X#CI^u5XdNunBz_Og_a92mWJR&%>P0B#R ze4`rsOTEJVK3=y|Rwdh0OJVG{@4gdbbA47oME?KH@9<3DN7TWDw+bj7Awlt>q zEa**J6mQ4}no3VpU1K8`?Ypxh4$yY#Ggk;rA%46mP&P%xg58dec!nG_eyu4~tdv^X z*qtqI^LKPij0Bt#l%?n^x=?ew#=0dGo+8_{jW14YRHREqL>jtTIVU5u#Iflu;w0DU zx-vNtO5M)i6&N;tQvB>(ujQNM)RkhBM=z>8JZYBc>@Qu*=8uEj9t(F@mF9*PciU$@ zZ2e*rhMX|(!lLxPiTK_Zj9iS`73NFfOFQ~U%CfR9F19u(6&5g$U3TM7gRWND`p-2O zrk6Bdw`>>)}LixR+Tkg?msoP_<^Bjsx91CJ%f8(veh|? zl2cumr25>o#muP8w8s$rR+i=MM{XIoodPZlc6!Hn_dpm21&$m3J zaIBMFx{C1x)s(x9Vb0m9Z+6ho^*7NuvDQZeg__OdN{k*rND(5 z?h0Ig$+|GP>G*0YX$CYxPW3_O4rb7u@=ZAPn}_Xj zx8s`a;sZo}{>5lI((3Aa-P;0)uZ`Q$aS5w*p31DGCF`_(X6>gZrm8I-C!*lJnc#O? z?N>y3zFtkhQ0{ds@@L+hGrXajdYtVe%-Q98c{fl||8zqI#ky>b|MHeKX@;fStDe{7 zEe6{>`nfn=z%O9(v5C)zKLeJYA$o^DxWm?5~+1(La+SoPo11{iUT2z`^ubpi*{ zK)m?!DCna)Cy`FC*3&{^(;g0-u|g6kAZ=!GA4o{>RgnwbGz08dlxi?_d-|sk$K7^H z*S+eQn)Y*Zyi}qYSuC&z(!ghd4Z4v6KKgjKmMkAg+N#Km8%chcqGsPAsm-58j1)+* z98r^_Ut|k6xzV?nDSPLVnDOT%X-lFS;@GeQ2uqbQK`?GMhJWLsq=`E7Mdqa7ByFBVWo{2uHOi z(CEOq)_Vhg_xPO|O{x}JS1PTR2ej8uyg<5E zEkJSGQQR;UuMHbaL7<#jXG+f1=dG2WyQu72w$sBg$GI~_R)lasW7P02kEFxW;|0)6 zRIRE~Wb=gHtgLZ7=RztMeSsokv$HvPW97CocYYMxKVQ1z4iZ+e`6qJ!;G0X2j$kv` zpKq9rG24O;@h{nb<*jaQyzmt}+Ab2`E|AaF2fer;t8%R0?u}APCd|MYqh^8tHN$Gb zPLMI9^(j!yS+hG)*NX(>5_33D8%myB;C)!K1T;CEEx*ukw)7+8$r|~ycGri+ zTkNSc(Cy|d3fvX5;doqV1ZbwpZV@e?r|PEK%p)-2f#d%Of?5LF7jGAiFJ7Lh+X6QJ zBn^HAzKBi#NY4{;V?OFyFR2F*zNZny5UK^jx~tgb@shrIa7)^Ax=wU=2Ici{U~aC# zo4xMlz(WMO!+55~se14zzNFla7_HLQBcewc;cG~+^2(;xT~$@Hqr(}w@Z6xvB=1KZ z!zI$=4Wt`diyd=4C6BgT+X1lP=X#kjCLxtv*o*ZRh5MeTFZGg{$5!!_!%(0)KhHo) zTz1rA=_dAj^mj~JKhl{^$h3K|&>*OY0t@P21kx^oBhv+>mevIkll(TDGrs08Fg)a; zy`&H!;`1?gdtUN7wCyazd40Jn^iNP8Tdsdrt#)T#ty0@_7x~DNM)=4P@BUUti!99< zm5%RBLcrRO61gVj&ICes7u|(}&Q49`-AxBYn@qNMW*WmHy_k9Yc8q#%r=!xnUV5#z z5D!Db5u)G4oqHKgWvgu~tp@e#rFq6Sf21jd@K$R^9fg$#h|crP>E&N$ zYToB`NS#;?&_5hasBCg~+R!&uW^~~VzQLm9>E^vf*vI1PwpMwqyH?J=*5Y+sQV&Dg zcYG(`o^5~h5Bh%6Pnhv$Tx5FuWoYo2Ox|jJpG&#uQ+qw`V2NX@(qC`xSiod^LnXfJ zqD#z$&v!L_ty(f+uq(lvBfJ$)3>IWXwZb*&10%?K_g^-jYam0tS;|Abkel7~@?0zm zfrCU9zO>Mza^JsSS!-Gp4mLGv9PDqm{IkWJu8=;n2wYV5f!B5FK7FN|2hs*}KbUC= zc*HwI(K-jA5+4MBkgl3q72W@uICCbVW%FXXOo9Jcf@-T-Uqi=?VcY)#tUy!0c~=MK zjT;`ywH(tbwjPq_kSSAe;nn}GgJ6 z6vuGk#3#6MF-){-zf72D<9Z4&m~{>e13$4`*G(v=g;x--bx~gOW183o_9@XhxcpcL z%eE}Zv)*|II(FeM)PyQPCxp7Xx&{p;TH&=pGiJ<~py=4KW5cUqD%6)Ybfoy5j?}qa zD`~|ASFk=j0TuH4(d%u$_j|wh3-jg`z2vJ-j>R08p}gs>OMvl7V?OJhS3DVO?w`d0 zw~x+{kLtXk0Y`FFKgHs88L^y9`PLR$ zg_G$-E8bX+^1}c4$3Mo26DLqmkSx+gtG+RP`gFYT!V81GCb)xn#jm==k`Wo%)Ej-{ZIe& zPdI-3_@F&ihQUbW;EJUuIo(h4qk zQ$uZJ8u7WVmajOL@4U+W$xnWQlP6E!u?=FM7LUuY&7_ah*3)$n&OCyd*F27eGf${H zZvkB#AB*Qcg-s9KgLHp4I=R5NEVZv?xoqPk^H;0=6Z?4FC@f4CX3{tIbJt(+U<1}e zX$9LgWcU-;6*>7R@O^6aOcbR0(c71YQH42Z=YxoxcHUp;Be_*e@yt_mP*heyc}bs< zT$LM_nUhzF+?)=|Ov*7%aa^wKez*SLeDWwRYtVZ_T~)q=c$~Lh)>AaXQydBl%CMXpM0pnu;;Ta^@X^+>__fET zBY!{#@np8YWh?e&osCl&D)(;fFPY*|5RZb}Gi3M^>))47zLAoDvkqH!jm3*A#*v9j+iD#I?=Z$Ed35BF20^MPK^<-PdXw$rFu_5vQ9JdB%ziC?vzIfe^tk3!DR>kePSoK@q3UbaWN?KF0< z?KS1Su(tuXxLH&ZO12L+3ffE<*#j^3m10^Jpbi7FZ`~e+jtzbJ21lhFp^ikqfhkhJ9bOCc# zj}KU)kWapXvYGhK0~644d^h%noVcP;B`zZ=4o=X0SZb*%vKKw32C^EI*cEn9DJb*PA9T$k-S z2`8V;;bsnokHypp<2Zrl0Lx*xkH`6se!3aE+lOOX6>m^SS~;k^h^n^Z*!I;v96x*dnNe~Gl=ga6_XcX#qtHHDc1D6 z8yD(!VCT1|(8{_MR8GONl`AlVy7a1jD3^~wR7EuG`VgPhrSZs%>oFb|u=9)UIC8ly z;6^RmgpG5{gM$hn8@X))0e@sKJ7#8^8ZO#Yst3nE`vAMI7h>|bTpT?*RG%4@g?wW4 z1wPu}it*E`ah9*<&D`(`?yJ6q1KYOYTh>vbV$wpaT)7CvJBtf zFqaQ^58=!0wYbuzRsxnj@hTQ@;-{dx+c&=Vz3<_zx84fh$_7}b9Yb=T(MbuO$r>-XS`&-UUP=?kmo;*s^M zFou(w^ewjA=UY*Cu~ni_vwRbtT2M`0I&rRc8|z+=7V2MEH5DsXug3K10`y)xfdBh; zEfzibT`U-#hZA4CjnB`PL0Ag}ohc5U5(Lzfc&7`N$1g;hJnyIU8%&CH72w z@ft=?8jH4L$8dvFxY_rw!^#;|ETNnJv?JKGojMg%Ov1e@R$$iX5}uf7!Le_?#-1aW z(ZlllMlHkZda9S|#n}Vj;6PIa)~sKI%R7gB?|)vtFZf;#ZM$>FZk)W*&N2!yVZln= zfA16&q`Pp8W6if3YpVNk=x96Ez4|(p)icJ*VAVAjYcZ28B{Xwt&&@VodQbv4-V>PC#Aht+=l751EN zqD}>vxq2P$pHvahty;PPOE$iOMK#HWkn;A!%yGkh?s3DmHN9iWP_S>`u^o7y zN)H=@sT1!>UT5a!P+w06$Gf3%1?^|C?bAc3ymu{DPAx;KuLZR`ccSjZrGfj>O8Vlg zpl|3uxf=VLvHzpZ*oWD8al<@Z`rvc38 zuS4T~<1mVwPgm>qqE!o=-UIlD|9J@;URsRW+M8jacI4y#jm9OL@Wk9+_SY?F9XS!z z>7+eh`QE%Rj@RBOXCGRIQW=Cp!gcw5eLYU!NMY2>2e5YKRFw2J;;Wy$hpxp>W8LgZ zG@satH@>=zb{4AUC?_2b=!CF-g;G~ zpnRh4I}0(oBrn{jKHS%W$#ciy+P;JI$U;n8{TLpcsqyyq$yZ?J&)wQlaPcT;bW8Dp z5Qg)l)THqPud33uITm)^XyDkei?5_>Y$(E{g{yG?eN#}#{&@3ZEq?ylZd~t5p=Rn- z8u&anSl8jqY{9msay;?W8g5f2Pp?N$oPr6J zIhZhIHYQiSi??@Q#_n(HF>~Dvq*@xVmE-Q|CeDdDZ_`|G7AG!!t;g~1o7-`nZII%) zQ$1rT9$qzrr^H^;|R*)p~@$1U1s z>p#7TqnrYWcEsq}cxde^&Xwqs{M^9-_Va_sFQSv>_SYo+TuVsVT^CQ{6c^B=s!DPFS}VuPMobu(#{_*l z&SBrVew6bqineRlQCD{gi^k6lo0gKFN_9p$Hll^E1~=X}7B%_q|DC8m(7-y>By~7( z2v?Tf6Yy*2JDKmv`^_}W66w)8$_o7jq ze98XeN$f1HB$!Tk(Q1C6P+Bt)o_)5^No&+hqhtcH_81ODbDA4f7ZQ4LHbJX>qicRF`=mM z0RHiBE@S=o)?-Z04IJFD1G`RK33Sy{mtfVZ#q1+VJ;g8Hp2kDi*Ts$H{F~VFzy2<{ zM--pJX7yVUv7d~ZdGFx;U*oLSh8nbUZ=J>a?|cf(T8GD%-h;MN`v&JA`Q@5}ti;&j zL`RinU+-@{hh5vg!BNitREM$mJ%z{Td>c~kA8*Cdz-_0 z>HOhin8EeZ63!3L?cIjY4xSBKR?l1=`fSNSpK`mVIj1~-U?+C&iPnd!R$^v(3%2|N zeT)4fedJyIKb&{TZsUrQ_Lp9g5zk}vfJ5tk&(~ES(J92^zkMkn_+y_lt>8{uPx+>T zX+wrT*28(pc2Jq-7u^1BU0jCg<2LXfhh>;Xajbu4I>t-B@lMBbGSi|}aGBz9S~y+G zE4W@Elksz>dYRX9GFS%n%(Sn{6HgpSL+{QAg6R^mVmFu!=|YW@P+d~g1B%62c~?{e zv-yPcWqQY=F|YN|2?KqrNU?B=^(`XB3Nc>%)22-e^ok`z!E!CrFxMdv@kjDStDrp< z3P4`RMI323jT6U@;dJ9oPQY@|)76G_>t!6P@8`Ff=3{u*S$zE74xCTT!FON%F76wC z9lJi-i6%b%XgRry8y-yHZOE*y9tTaR7G%4gPN%CIy}?fN<^R_>?HfyUZS%-1+(o%OB8xKTG8Km9VgCn!XMS= z25pq)cO&}yT5loN9vLI2<#*0G6odFF{|ESN-zjvAxff49^DH*3or#jX5>ED~ z2fd4?uEeJMC-I3-8|r?(hcavM_{*>1)AGsVMNPuZ2syb z`uH@X{+o|*f}3RbZg>?xeH>}wH(>T}ra#f9bH9TZo_PcnE$2etI@R8X z_J(hD z``>*8rEMqi@wQW3EcWB{?oUD+ELs0@=+n!_4jc42*++I#P+B&>QybXsv5$(!Hdm}5 zI?2%`m}Mt8_W#Z{q;6it@l$CmTsR+Py{h+ioaaWw^WS?O_YS{?Z$8|P8@bh3wP6)T z@}5&P?S4G->}pixv}6B!@8iIQTs->1E7-WG9H)0}=HiI9VDW0-wyS4Q&-PuikWX#- zD%Cq%>yTc!4zIoVD9Uc0!q2zWla}Kj7iRPZPS8(b;);c+U_Usu|6F)VuRikyH-tJy zFU6D3K8we{Gm8r(z0&g$zTgR&1&_Xnm)9>w^Qm3fc7pAaZpGoxYjM4k8(QCc9p8KQ zNlYwDHkf0Z*oK)le&B%zg56@<%6_(`?Pwbd=U|zNX>8v<-Dv5(g{GTopDyg*{5B4pzK-$*593+t{mASp+J^UE4i4%wg?&vp`r+F+)HDXq zuszD?i`^YOsoQpCs112C$GTbPo*O4|xFa7AZFmL`FRA1=wHk5koNSdw<_6L#IlS*Y_s9}%$Q-7h?nfK-Pw|8s`0(e{!G_>FdZ=@{ z_5yAV_`K?Pr}1BU$WF1XMC-AP)nQ|?&v0|M?nFIK96O3rSGXy!vEiMsaQb>N);#kf z)-5R;7#l7C9cS?2mi=h$uf~HLpT@Mj8@SQQ*Nb{{2l`$C7joCI>(fv0(;vN$)*Nnp zuA7e{^?8oZw~znLe5H@`4(iZxekVTW7}r}l9~+)pj$D2t@)qr*#ZWI7-7C0>|NK)= z<2y5W*W?4dj{Xt+ZWI?7tk2#0zv?Z#>+gEYF6QeY&BQspKXa4vz?L0+z(F6Rt};zu z-%ad)_dV2}SO5PWHZCkj!#5v<{$DYLujxyE(NwH|`az5yH4~5C&y6!OPUTqq#L8J1 zE}vmuH3hIj`)zj4wa=8rwhF!V__eu!CSeZZ0exD@t(*B zj|G~)1R2TvxVxL5M(E+|D&3u^n6(7eEF-s@y^gOGefZ8czJi&|N0xFv^3CR*XqIDQ z80M~f4!`z;*YMb!VlD_E#MZGd!jF zan5=6fi1X}H;LmAPm^l_O-} zfx5{5bgM}GSMrsPgLnmZ-Gp&_lln>ad8O^L*8L z!eUIT%*PFW&*vJy4aN^(;Ck~dT)oP<6=l-fN#7do!4vq9yCOI7y$%Yw^zBF3d!`MQ zb05T}Rb$a~f&GH7A#(=EO~VuTWDie=O}HN~zWy4XdtxC^2PSP5+IyffRa2*jhw&(y zj>kDBj4J3t?T5*FV(ywvc;T_7e8^LW_uu@MbbGGn1=+o>AU}9&QUI4{v+Sz9Ay#jhdZ&OKG}Rqd^u_V#seSW)BR_W$Bn$OKIBH# z&dnd7p{EL~H>^e}$%>||=EGWUOmQmX_LmIJ!)0gBV|1^J=j+1hN_=q0w!fm=wl2n72gSz4Fwtd(xJ=1aaQR9L zAL}fbg5^u5F3T~_`Al439{7pNF2L2_J<9NuLMZX0Mb zhXo?Vg>voA?cDj@j-wYifn(6qrIc>guRX`z=>-_ZMNlh0j+xWmgp(&4(8imvZVETq z;fGZvr;={geT~m|odiad^0k1(PFlRAOPAoa$L_r7apyw{fR?Bv$f zRUKyPQXO<3Rz4P^EBKt6iwi!SBJCx7y!i`o4-I7{iC=htbX`=R>gww7 zm;Uq@0QDFDloy@sA$%NcL-z;aY&X&R@**RT{#e8b0?O{iuRs3?mMs{E_KO$zq=Sc; zn=az;sYawoQ`p#wo>VTX$4&?~KlJIxq1{SG^2U{Bd!N>1w*sqH%tTqm6rNPkWQv@V}wvp_jZ=1=Eu{~ot>8bp` zWM9)*u6;`VxPbi;Bk#knKf9LpyayeZFHyH#^xU|JV_Yy(F!HYQgXy9D5}#kZ@g*#n zwE)ZK)^IYA%kkvqZGEeZlZprKtK=k&3(clZ6jh9-|M1nHgJ0pZZ<2nl2VT-SZ(z*J z<05UusH)Jh?9geOuhGhjN&V>>GN06L0+~5g^UVg&FWPP zF_J=cvL^UH7k4eJOD>={h#C6tIu%EoIfyTvUcpZr|QoP^xH-* zcJugTyef>5!+AQTx}qFKea*Pg!AWyYH!js5$E6M)edomg<}G>}b<>9>b2uJ;f72Q) zr@!8$U*^-Mz0H?Gf1zU{zfpcky=YI_ZtljHv25WAK4m75?>d!rDXo5>dNaqH=5<_bW1WXB z#A7R_pn^}er?For{Xe1G{o(ugwrMOLd-(~}aM7vO%pW9+TOJ=s=)^(duVD-$4^nzvn0!p9`HEd- zrEFJ#QDdu6!dF~!HP)#-$?R$3y_NT!vc*`=`%cA_MOeyvYhLdKG;@ic!2D7x2W{0rr(tIo7`PG{*CowCi-I z{%>2jzSd80rNyJMw`%4pY`B-FnRCwKiycRK3N5$~a(kox&&|+_ok{<1XaCO|F$$IJ z1E~>}7*joh<9Y!`kEss+Q9f!6MhqK4e)*1Cm>Uct;)prw2^&*U`@>F*d=TY?k;)PhZYASty zG^R}-71~+0(59<=c{xwAa<7=aToC$MLB#}&;#niU5(-J&s)Wl7@8m^Rcb58M9GCnwy4&1ywaE-5n65rg^hf&-N%1v=Im-xWXd&BX% zEBs>smAG}S86~56Vl&l^qbDv0ynZg7ILvmgM()jP=qlAKz_~nWoQ#Jm;{xlD;&@rm z*&N18jYl3Y6I-y%?s|Ov>E}3nwF8y&pTL9Td8C|m;eYC@x(tmk!H)d!|2@?8X7AAa zQhuZm`;%;Ro4u)z^13{pIUkt$BcBN{0|sK#jacwBPt`2NlIi87E#g{9<1NP_$>nLP zlz5UCFp8T_k1ih_Xf^KVjNrVRI_F*f z1|NUE2iLiYQzn^|Z6A_4xumO*pN`OdrW6I-Y`fUX*Y!B3UOtoK1=mc=c;D8VsjVm3 z=$73ir!QwXs;X$K6i=J+9#NFb*MG{!g?_v5n;q;Ay#G_SUO5vzf2iL%ZfJgj%N4w5 zJuw^k96vNS)*Q39>C)i5EdOe2n1cj9>ZvljJpbd|diC@gRNpfh)9&G#B)s&!S6$At~{)w29@PyVO}L&t#2rtKbiA&%^e-o4hr@++f}iG zeaENCb{$!>pufyx z`jB9qLR-@I`fGfZiyy*-T-lxrX$lG7=jiF=2Zd=_onjJyZ*u&W9>(u`B#Vc+n_frx z5quwQ65eJO8<+Mv{52-F6p^pAsWV;=X1Od91)qjZ>) zQP*64bEJ!}w{gDAwQf?!!csoPEgg>X2S*{lq=E-x`K*%d_T0$B*td5NpLlw&D#hMP2*z^lXPWW41v$_`!hx^PZ?hR$uUoqz|x3f}f>$bia#!sVRm|(@B52 zAio_m^t!2zv8$ei(y4S9mOQkE-}o9C^eUPE6rL@oKkeTa^g2PkHoW>UD#GL;DT|`% zmfW=AQC8Ve{Xntosu0>Wq>`W5rcMi^aYA{?iu-u*N#fOSQd}IUJ~}xiy;Yy0vJupK zIF_zigPg*$@ZrS{)t|EX2W-#+0BhR0z-ey)oD!Xsy@sAe1d$7 z8=wPYHnYL@im8+ID;O~x6>Nj@hiXC_6p+`xv47tlG;p)J{=i8*{>oZZ4Y;c87V1Pf z(rfYJ#liOSZM8*gW0C|~*)-TyHsWR9HB5AI2(~1h#-;EoZ`VyeSL8BHKF4+dzdKf@ zF>~=6Oyt;B#V6c-oNQ@q=6~|)-{k4~V z)UQoj*@V7O%-4}CN=s1jU=4DM%7b6tV$0@o%*o@^xzN6}UA~-NaPkBlIbP^Q0f$z~ z%12(l{%TSRrDY>gTFjFi4@^Qa#~N)q%-i&Rlpo&5c0Y_m-+au;rRu?ygnbw3=Ji3zlv0nTJ zg>0Xb&vxKFgw>SW4YX@wyTremxRG~(e`JB1J{)*c^wrR2U3_@Mei661(m8!saIAs% zJRbS~`os6+q{+Rf^Dxe|&d010wx`AtUOn`;WRrz?>Z0#b_4ZNMP#?zZuiYF6m`ws@ zg|elI`XuXBz;UgEr!9JU6e-w)4{Y=VT;pXQ7vjN|1NBz@SqM+Zu)nb_`}tHn9p0gk zjR+H7c2PN0!uK87R(OpFG(adPmx~$>gOtVlw}u4rdNac63a0XX86L+$r%)f#iN10f zUVUb$4cjlC5B`|XQzjZ4(p>z7MHgxF^>9it$Bkb4LEjB-NHEXOsSK3Kahi+J#XP-M zm0FIy|MU;oTe}C1v&LhTs-p6u@t@hiCmRcwo9<;B@l@RvJ_JaRVVvq~J%x9E`Z-#2 z%dvXXvzWqD${Z$Di-az&Ak(g+#u?edV|8d7;zPUfL$vC%y*$!dy6|x~d9!h5a593sN1os(BxtK}%e;NCKx~GM&+^BUVpMK1C?Hjls_ww6C@@tL=gL+6k z`A5?9^n+g7iLat0@;T;o@>Cwjk~IBO)h0C+;1hKX&6KZ_R41KMQLK8jpF4tP`b}yi zzYoR@?cfWgWyxHS^O1?U#T?hVapL3ugB_RiFq01iCQaa`(YY>;6Y|q!1CMHPoagu$ zoIW(j;FzmdWb42B1n24Z6@1lj<@kL1zUF`2;5+^)-u>nxPdF{Zyooiq(tLr2<*TS^ z&AC`t&N2Jwuwf1)BgtO0x9XC|le8KKIT8`9He@+l{t??Q=VKQ2oJc*Jsb?PhTxdhl z1wE7dk?v2E7thA-&raam_upZ;d04%6B7O4qlTo&n+h3NI?Lzz0e~lMhK{(BUQ#=v( z@MGh#o2Sjr?fw7<%U-}dZr*6DIognnHD9URfw3li>o7O{=3-8HKks=BY$ty9;LFW8 zLcMdC&H-N+KhuJ-)A-t1{W0_t)_mj(ymLsp=pF?eJ$@bw$4x^szeOc{i|~hK8;wD! zfM0YEPoy>SBqzTumVfI2K6-CIbrn7jZAVYx`l7L@;=|3Or!-bK;p@%s1|4;O$>}(Z zhGxDFH-aajREL0nhkj0e;W=KOZkdPKBWVNrS-SE*ytcj^@BQB`XgT~X8fJb6_wcn? zHH6wEpWh;ty=22+JKhvZMvcZq{-wy!X2dBNA2R$=TPPTw*j$Z!J1hYBBU$PPG-c>N zq9=1ea|8=xr{*!89Fx1bu_3v-!tGV*h&Z|;4xlT~u z<@kQ(N)zRB=S#)raWnP%n{Z?wzY})29@{@WjwAPO#D-bA7bo`w&Hr@&)7Z=s!u%mu z{p%>JXay|d!`=aOy>pAJh@ADq} z4Dar`fT~&COq;-ykbD(W^Y5T5@tPmy_VE)KTrbHlRhDpJj#5;GhaTh{Wn^ha`_o@o zdCgnWoO|@}bXXrBJW7Av3w3HtGBg+L8|agvQG!NE`^!#R@5J+U8 zH_>qA&11X^6V7s!b`Zbe;#FF~l~dk$!JSw7FaPo{2ftbLTfg;Nx8;BPw|^Ud@fUwF zh*w_p{-)9I{Lb$LT~($+9J>s~cM94$W~F%qv>)x9K&X=^`qJR+wR*avaZ{n7tOlhy z{4Nepn)H=a@vlpyaI>j}9WKS!UykEO;TSA>Xgw;ozlW_2x40nVfHs`(L&Govx1;1cSZ*x0$FQBlHg z2}~G{+@sAnRCfU*rt_rGv1^oH#HS+sKp#)#sLd)DtiklQZ?NOkxA^(~;do+k6)qk< zgxoPafwF!yir@MG$GW&+(p-e&w%f+`Q=JtAkNqTp-uYKm(i8ZGv(zX5GLAH9gR26= z_z}-;)?2cZ!IxDp9Km;GQ)q6lY7Qe?ck5_y528vKDKXP329R2aL;TCoT%a-_dvpH~0bAkwqOi zcAyobr{9YWV=D3P+gs6ciyI5nnY*fi*0r)NG(bN1;Dh0PUE?HEcwg=x!VBiubhe%7 zluigVfo6xM?X`d)Bg$&VBKL3`U&H7|!Msrz!4p}{d}`3kf&S{zdgP3rj0ZN4VUAitkeeigMXnv@OPAcNa; z5yZbPGoTUj`J|?l`1Ygx_Eyyz%qUCI*Liw~dgUBy#m(k!6wc)-3_j^>YUN);U50pvZgA36^)0R8asNXt9B){c zxsy?r+l}T{E`T`sxWqQd89R->F$zULdzXEh$GQ2+LYfN#^V?pMrAdNbjZz!LK{(qp z6CSrmjLS^3Wx|-59`Lh5_1iFJ@)S%7pCS%V#!O8f3sh%LU=&ntnjd4GP|EKE@#JQE zZwaRG$y@KuW_0nD1m4LssD=KbjX<5^Djm&NC;5FR^_QY~Q}{|p2Tx+CKl4>cjk#g9 z6S@{lus;^@#N2S?@KojYtq1YIl1a$p#+Js5QRDe)=h0he=eScjiKiBNZt@f-6&=Qp zqw?EPHT?d;dX5_(@KxkCZd~Zwa5|-7+lGn^{Ak>ejrE?tZ6`XVGlSr^y>P)618t!R zN`Qq~H}4hPNNDT06*fFYCtlyDBsn}t2r#Dec@N?E+H&h4wjLaY`=(UjR_iVH3;tE5 z0p9r!eFt4T`ReK3k5Mq}DJ&hEj1ju;={1B8Du<8aYe;HO-s`wgq4tz7 zFdD3jC$Xwu>-h#;8Fvr=D$t2g->TALZa}p%or{k8S{yGZ!M=kxn3uj92zVls<4z~aHPJZoiBP42VHm@EYco$t>^nUgGYc;d-ghcWxG_Z{l}l<>myDbs2F8Ib z(`qkYq77sbjoVYPZ6}+C2Le5Pp$)yDC@kZ*SaOf@8z1{{W}?Q1I$Y7jZfp(b0sM<{ zyic^&ZN>JUYFs{Y3O&qo>JjX&ML`~KBIo#8+m)sU9JxuG@?@3Pm}%~yXwG(=4~B{= zu3|s$#oi;s&2Xo+ur;dH~GDyVm_U(T17KtY8}`A1*E!`?~Y6?D4fY`O`1KPcaR&i~2v?rR@gVd-xa5#+RXo zV?j6jf4YR*n2FFYDvZ_)U1_2OAv;VH-#en0M; zqt`eL@h@4en9je5be`iH=OaAr-d{2o98!3n(Oj^fub1=TLhe17GNBSzPbVkkTe(4| z`B@0mQ9dt!SCIeMUv4(+!Z(*R_e^2Zs9v0GXrTXatmM5px1%jQbelGH9EM#!6YAL8 z&c$|N73Wd>@>u%;e6_y>%cfQGmGe#v8^xm>3bIMCJ=>0T%4IsuO~RWUd>}cXXX9y} zq9MGM^C5k|D6}E-8dH?+=k7uN*qNA|I*A6J0P3$<6;2fm3{NU0gv|C=y%Y>rTJnZs zrlk|-I{B5;@c2Xgi&|UH;xJ#UtlYE#BQBoc_f>ex@ujD38*AR+t3F3hUdEhRw{VD? z4vQXtk>8L@=6mV(di?l}t!U(Th1#b~z_Ft(C||SzPcKSNMx;_L*zx1H`HB%gn%!D~ z^TIFQh)o0dH2r_)Pu}G#L;PU%t!d~xbOgD4GvKA?7V>Li3jH|y^&9xS;UenK-sH!h zPw=(sDn4|58e{m%szQ7H*LZVV0}k^WQe!I`(8M}CK2QhYHD12K*T{vRvwRFqz=s*! zMCjpJueJA%!~1(LVaMLH*tBvYM>LN6?8l848ZeS|<(4rww?<<8Xl|15n?mKB3up?j zJE`rRw3%8jfhn)cerCErFz{nsLd#8ZwhOri+TZKMBtOuE!Drm(f*3U?`y8D*@M+9f zYbPgkloo$6D)?=$+@>4Y{^c%=%e{aTmpq5!CI-J%di;73rY>27u~j?q*4HQbpdh&q zstoBF#@zfu-t#pk=sv@5Sn*W5)=cULwdclQX8t7{WWzAhE0ebIMXRiKpRv+QMf#T(6{E3sKGWVd@aS|HyU0 zuo;{>9_9E>yK4@c)J3gwdx+cL7(M9Hd|ht?NS|L6Vi}1pLw#R)<0Z#=%QU^?xIEJe z=CMTSnAY@hY<$e`@=Rx%SYE83;JVZYEyptA*yFfiq7{$zHQaF~-1-PFUe7B;r?g_h zO=q}a&KoZ|N(=7TwAR%;q79oxN+_5>3?_0~_>vM%y11KL&yPuJk}G;`TIhR0vuDr7 z@ZrfTCP$7O34hs0uYrlbxLAL>lpmcWzm&25?!w?uI(Svl-RZqLQvmESHFb*3x zEXU`c?!cZ;-p6k0tyf3ZK05|Q?fiJ{SKnYeL7Kn~pRk-CmE^_^zp0=}4R=ezB26bq zGzjU*utLBU4#Tx?KSu)>G&!jeSn>G17{>8o@l)&2^~o1FwQ~!&Rlwtx6YzY5a|_RZ zcXIeR+|F;m<_%YybXB`rhF{(^s|#FRU-)N$FkK&34n?=Kssydv)nm zWO?2@eWtwk67miKLJ~+IKp?y=%68BD&V7G`nfU}Wm$T-6X04foXGuEs5o_tZB2yxDaT z&ZuSacW(|;+tA0Fw{A^7VC^m#3;`N(bISKA4`r11f58Xs`E-Im)Ie22UYnEh(r z=9?^^p71edYME0#G2VS^MXX!9CANL?hxk%Jz2F%y|8hd;*S*u}s!lx}FZ^Gp4^6%m zt)H&dFVn1#V_z|zSLjCWm!ThoQ&Kk4>tC1%o$>Em%W0Q~VvYQp#!{U|`js|xlI2ua zp9o=@s=Z_3L`+)oPArpux1Br~>poIHQ&_P2m$5|OK6$1?aaA|I6s0wJ+ddUia{({+wbJFYE<= z3d(n-2OCBGR8`emf4X!E@V(cfb=@a%{J@s@P*2q>Dn`XiKYvY|`v3H|BqP^<miVojn)d}@!kV)v%cQ~w{T?=`J> z_E|kBQU4!4C1z9{)VHk;#rC^;txPvk*IQZWFxM=P*Oqn07yFLIiCgnx*`nImEx#tc zwUc{Cr|ftor0v*eX?-DOW5KJxiYLbvTU^QKz0UtdJF$(7hfHqPINi*LcvXRDsh=M2 zy>KS}@5U2yj_T7{7f-(Pj@s**IQW&;1Y5CZWjyx!uVd8Uk+IT*X}G^E}hBI=pxModuUQ@a-kUR>8KMgU1(Xf!gbb zEB=8G$xn5@s7dBbTzdcZL?nfgRkM_#@GFEKNtJ&z$bO z@kgt%N?xVP6hu^T5}8}HwJF8k0_(Yc^E zCi3ofRbN&*j3!Ds?_LGknRxSqoGwhVe^LFi~i=C7{ zw+OiLF29~@0w%B~@JonHtIeF)GZb=!oVs?8ed%kj{>YA_;HVhf*V{7svTNO*MTPBy z??HiMKNWllNvelxkKTUa81+%Ei3Yvt_-q`oci_1_W8}F)T~7O3kJvfs?GW;mj+4&# z?M&>hXVw)}A`Vb-5n8@7Itb%lt?FyXEGj+THphZ`bE-F7!H(y%13#p+-ZAtczP3!d z3WoZz=>FK0_VFoxoL}JcW3aN&fc!K!1M_ul-tD~$SZ_@5!GM>IdQ2Ww1b`3 zjqtYXzlD^5$`ut>(H!KXNEiHEmm|JY3twR%!#X+Zw1?YQ#k8sJj|{ zV>J!zpgH*I*Lbuf1;tuGu>`wjkO3NY(a#M~R zVZKH2{zxIYH$ z8A@h+m&fIW?@?33FKBC*A>eJ zMtNZ-3KPU@okvh@zEyRW60afNpAk{tdy?z=6!i#Qs!4+M4Iy1%gQeq3rubN*`N#J<;X~+ z{Nhsx^M9$Pl4~e2mW{pO$Y!84i~Wgp4&cw6g0$qQ$~jvTi=s_@idE`*-@2M!1QuHu zzQa{UE4RLyU-Zoi6moEXY4ubMP>OukR5q%gWmuXnZe`mYpRbFI;!)v6;h$9wCtZ=l_iV|ntDlk+tF-jpsTKdwQ(uK8t3 zyIMh&vpYx2IOi**xPqfEm1KdW;$1R6J9$H2;{_XDW}m4if@yV<1!CAxpYQ8({d$?b16;HDS{9s| zlpA|y zuZ`KaxRoVZTLjMP39oGuEq>`|X!uMe8Aa@RR(z(U0dZp#e))B|$cmI-FG@pS$lD4! z1lvDxL)OlRTt!8y3bjFl3#oe2Rxj36A2vc5B|_HPVbf=W=R!2Dds~^ZRQ@c<@OWoc zG6zg~X|BV~|%Tk47P-8j-YhoDY#@YB`@yd|ty|vph1PnI2NuQeed9{O6U~W3@A)of&eHKaPG^6FPKjgVm{GFmtZs zerEN~l%vf+lYfxrLr=!i(Wm`ic-xFYOhy%utw8RM^A8}(QRSCk2D4hJEXjA~L?nJ* zIB)9*2PSe9(oJ-(T?HwMlBUZBSAF6Mx20Vn`{PqgPk?Zywrg=kZXw@#A+@eVcL<*D zz-xDZ)X0fzHRmU=+>UdN_+{$DlnQC(d0C56jhPnAabq;Cy+>y=(Rk4bT;|4W&M#0c z@HE>%vgUDr_ouDVqyoE23A?x+$)m~(83=}$Hc1T`p!myJ)P{#@vW9V)aV&k2SqQ0< zjc3O2|A6u^K}nVXLk5}u$Jb1uPr?iyXF-GwhL($jZyukSCCdm`&D9J>XYZ#um?;)E zYiTB^%!W)nT*~F`2uSj5*kbXY3OPFuE)7TjRbF=LZE&%}2&96&qArvt9x2Pm@902W zg!Q;H2kgs5J&HPR^A`QR1}zd2Kvfg$T4Eg<28j6WyON+ByF)uMj|+++&wrb|(G~#0`U}C1vRZHlDEX;Bv?!&0%!aN9YWTY{G7ev>ZK(Q>z2BK&mSS@OZr(BGl<($P@aEeLiH}?m2f zhfQMB`{2Ggea7@}#K6tem>}Yg??7VhB7EReEsCK+E7XDuTb;t)s-L0wq?0e)JGKjU zaoC0RGrok`fo;_#=A|xn^|$$+8njnb^_b471j){-(Afr0Q@hxY3hup_YMkC`-?-p7 zlTsnRXFfitWUOWEhkmxsJ|mcus_dGxaQUKWb}FCVy3F2|^9iVof?n+pPYYaDkdS?F zL5wCns7m9qeAaf$WE+K0$+UPPWRZjRR9d}}vAcgtFsu66zwimQ?OQ`_^)G#d{#j{} z?+zT|4m`117Kh8AWrXd`+Z(>nu*Z6c1{cM#a&0H2yHfPZX z(f*cMWk!de1@xsB=bISA8yAfS6dmFf3 zZy&Z~_G)JTFKGp6Ka^IqLD>CQYqyt{y*;cU(=I1;LLWbblbE>j&&`i9wre@d6YqR!0mt41|(JEiLO;F7lkM8hA1HuYKZ+-18 z`S$G;aM75@V=(v#QhDUlWv65#538@xZk%F_pEf;)SBKk&h%sW$hkP`T1iRO}LbBLM z$(=fIvPd>*QwD_xx-})`vlv0Md!1r4J9E+YFH&&$dc1w%9Y4N6iX1&N)inu|$tH~- zk8Va^)c*4vR$8*5lLI`hS_l${jwIDsO#>LsZ>?4>*^Gn1mDG(iM8cjkNH3m+%LK4sT77e3l28STxP+6Kjp`sYQ?F$ z4XUdUIrJnzkfw_hDplRn0r4GomZ6ScvOE8BJF>Jl#InrhHfIqM`dEmV6*FAW}eWnF9};_`tggV<4ISK|BgQ#kv)^H6B<640(AU%=o(KnF_NzJ+QWT-dgH4)|+$zRc-Wfd0TF`UB}6OEr(+%0GvkjP;I);665?`tuQ&&D<;rJ_AMI4RC!qyHh|4 zYT?R7QJOxvjpR6u_wB)q_RCAnNZX&?B@mlw*7S(XaWIFdd>_yazHE_#AyyZVt(yf2 zKzmN42CS2V1=YALg?s51z=>Wh4kw;ksEyfK+zQM{CH)f;?_j>5mpX4o04l02oV7MD zM|gf75e9t0IulidPMuP3$SRx(jS~jkWEuE$={`#2O51ZJf>?1VrDDHu8uu|_HR=LX zXKGhSv|t4A#sq}+XgDH3NAM@&oyx#^x} z{}lw-?o)>7y9p2B6;d)$DT`?`BL9#eszfbe^DtNCa6}WGx z*4Yk{IBd6IopIW}3xe!6NGQ$#+e_IG&+fJ=`J6Qp#AtqXx+|MwN7e-NW`j69*f9EU z&6(Y2q{t%fstf77zI;_*m5 z?avP;JRwFDuhgnUaB#iEhbS=|I8MHRw+QsY?3&0 zA&)?c8sY_TCp0LyNDJZWv&v(gx%b?~y`y=Tx1~%Hn52jlksy_YM1;DVZ-+Krtj8?i zX}GH%BTxxf&$vJ>zLab`oAfLzVW{)_BWM{$q^`mE;*L$ z<#BgQ=JzPm ze)($Xlq`pgmty+`s7v}nI;SA|^rp2^Z>+P*Ujf!uGJz$>{(mH(Q7|$HT5%DTgkyLK zCn+nq&P6E8Bf!i;5l$zMifAasubPB)39SfJ4gbQ*Buh>}hCDdmnWIGBPr{G?^4UWE08%{2K_UVUO zd#sj=ASMmrc~O**m$d+PB7YD;Rnp@-HpGpKn#moJF9rtp{@zb@FhBe%pWt;=C?|>T z*$E9Lo`M{HzyV|4oVo6qjt(X6Eq8dHN)W^LbrFQLdbDPut zCh{jqGvW_72Ysuu~Y?oby2uh*P?Q`Uv&JV`hU<`XJTLoC%yc zQt*G#qh1&(JyYrXFY{-7$kM0Kb(Bo{T2zKP*irL(AP~|JGTtGBCby$^LMK@Z7M=L? z5=C`A_<}B?SK|`DP*A&G7Eif_3mIRXTcXOuJiSa9W}Rh?miEI0-#!gAFiXmG7-lOD~kc zP*d3Y8;>mJ|32a5A;?>wX6~(Yn3lQ|)zQDxhdNwPu!z@AcZy5w^s;OhYWI~=sgz7L z%kk9FaCsj}^3j9PgxY(c%O@Q--FcxNLc211H+k#K)i8W+!ol4HmTZ!>If*?U!<m zox9*&wiC4lM)PdF5OL#UEv`1B?#Tjj5QDEzGSQ4@+5+jI!;fG%?wg-57>%}RzpyE} z?WI%%SYa?JGW_cEeoEcVI<+aD&}N(E4&T3Mub^J^bkXWXP(rIM`s0A>MEy9AV9~wb z7f}&-=rULAf1k~{&BT-a)Tceo`loMs;E1bU=DiPYqdQgE*bt?4*{6mqYgs z9lrkuN!t9zC;4x6xy`|$8go*+3rfrO%xj$I|BE9z^gkT0QP2IZ*0${y637Kd@F@f@ zHZ*5R3~FdgNj&FE!3C%KG*}Lp8Crqki1m_S@+$ivK6scVGR1lZkVk*^oo?)oibzF` zmq~(CQ!)4>Kzgnf1 zFrl>i+%GzoKk{nHsw-^`;2rd|3Ls#3a?r*lesX=DT$Gl3n7vQL-S_cM?KxS3e02FgMvj{!o*oX4)(a`ew6c1FuH@Amt z>1hdl!5vz8(->u=zuTyj8!5E}dE+_c>|3@V3U2>dg3Y|&$#I=j$R0N2lO^-H2*z>v zD~%iy+c1Een&)S1b5l7E*HGkZwTxOEfG)T_mOvCEl(;w1eF6W{rI8o!XtE+3+usrj`T^ExaJWh35e_!X0 z(}1U@kK>o0nQ=nN9|jHyHX&WmbTl8LK~x%oBEaW0^ixtZwG;(StvOSiEiSU58U^N= zj+-)cPhxGzaz9I}Vk^`{SXyeOpM`1K`gtfGraaA33ZB)k(DI0 zXq@;Kkv`a%k#KY+lS}EV7K*utCv{l^-nDkqmm19RWEf?+C$WjcNz;(icBJ*&zqHE4 z2ZAA^HfVnQJLNB&>dYuSza@db|RC)7)heCTV-}P3E_%}P!JVB5r%bYWaX~Qdw zho)`Yjlm-@)oOdoL9okeuVgr1i)*js zTN5=CF@xCVYvot;TK<5b<{}(Hhf%8bR&hege(grIA*0yfy&p~fTZMA0cDwCC23|>d zbQ#t>RQsXP44OhbmN|~Dng6L@G(sC2{i%;G^p)0$v@7_Jg_;H({+`v$B0g)%PiIrWH>ztZZo}1SPJ-quy5X(9B*RfGwkX?U&84Yv zbH4{tma}rKe;_OHwVoMS{Y;{_55M%UVkPiKR4IryHzsMlxhp(Q`@;r zU8cQjH|jo9-9`~37+4*~g~&-+Q6N@O-A8Tw#%5PZ)`)znS=%42O(U1}N=`vumSd~7 zJjf)31!u+B(BCTxqM=NKse7x^P9p_p9X2{M^1-~Dl$Vxzd>!_MAYH|Bv@T8>6;Oyi zdPR7zjJvEsdViOQru^Npc$+?8Ci=#!LzZj2=MZntyqlA~rVa@>Fn+vS3U`US7n+1q z+?v>1Ci_UREBJz$bI}?nzAt{{dw*rF__S!-$~?iTb^9Y1ITHQhrQVJHC*O0n@6N;O zeO6y(L{1i~b8SCJ1%`sX`moSm;jWn`!!AjP3 zKq_;}6G%Jyd$QpdgS$68+Kpg}PaEB*G}Ydk^`oko+QG`I!3yfayKTUrBnLm%nHT== z$)I(>7F-DDC>5t3@Lz#TyL0T7&?gbb48@DFuupfI$8Te;HqkQ)L6T@B36D-~0>unX z;%+;I*>ueyJRpQ)Nvzn-xAl7lY#6iJBW?|M^WBAS{`|rPp(ciwZ%s*dQ(lwHiyPKT zWD$`MII&0*LV^j56rM94SsiWzRUrfMg_~^y+S-qI=-(wucJSaUy6rdXAUJ_qT8%;_c;yQ=!pu4_yk8-WO+t{!wDT6(<$8 zsK?#Z*ULxHbm1r76HQWPGu|}rMcbRD;F_DW7?3jh${_bYZ2Xvw={o)V!kn{f9Kx-h zhd;--TVQJ;NCG&w8(^;Ukfn8v@Aiz^u{Qiol@`xQ1cI3eAv=T^n;x($CB_`qd8l_8LGhAoe==Jkw;EZ= z2zB+IEhT?{6#mU+`L}!c2{;K;?^Y-}V3T4eyq!No@mu%%vAe`Fe*NPu%`=)s_af63 z@n>;~@_in?GZ!w(3VU3QP?L@r^!%XAH7^(mZuS=3MS7ph^`B~-eA*rdCwm8fpb)A0 zpe+wV?RQJ_vkPvo%j-O0_bJuPu9DE>{?;FTPQB;LB|UK5ne$vGus28QlE-If>(3_% zxXp$pAGFbDM9L5(jk(%7*j?{NHR?ap+@*EFGXICL^2>^EnCC0TD3(q5HfxXpcoID= z=`>Z261JU=nZS*3NwXQVz2S@vrD2WSc-%y*0e{+gC)$t?5A2VftWQYr;QPM9w4FoL z1WE(Cd-j9~WV*Vb2hVyh;Gvy;?0lBwPPFrj&MS!{0IHnF{Bh%h)J3lV{Pv0EAD;#~ z(%*#^>)Zm?Y7h)!!ze+rNY)Bc7_}8DarZ&zuGf*Ca$(45S(Y&E1NU(i&3k5sGleZX z+_QtlP3`h~uoP#dXQ`1yW|cYH_M)>n`ShUu%A*Fn0Gv0gIrtPB%Qq&~n;vQ%!3>RD zTS-Xvmo=7uzSnsL=HaVSXk3q&eqH! z%jH3~7K+w&5X2}kq}CuT>JssH1_ZKwHLRvDq*1C`)jkE9!j608f4CLg8`Oa9{+U@Vff#{X{}k@j}a!>lN-iN>pECEktnDtyt(E~_v#<9q9zgjrb@7|@wlpH1pX*%z#~B6)NQGh z3;^^{y4EYS6Hm#qPrn|tE$Cuq8@BUHDRXHlx#^{>uGMOwR_eU)1DxmT>CI~tA719 zS&GAhWF0b~uSwHo7ZfCZbxk{hf<^bwsXAfQ?UZcUnC-3>+}@W1@JvBSI!%;$5Xbwb z{>ERv_6eP*;W)2_h|8TLauB>x)hMMqeq`HlSe}Q_hEJbtjSPInQzs<2 zFh=u6Ml0yxCv&a+!E24aezl|vI`2o<48E6-d{}8DoWw%bPg!|z+?LOozJ*r=j4ag8 z?8|X&x5Xe9Sj2<+$&1uAz4c=k3&Hx)nOU|%m1D~XnJ*r!xUlct{4Nm4$JqxRY3~te zYj=*PIjhBBWR9v1LWB}V_jK;6;X|GT55pJsccg;x(%XTwETGj`s>_C-E&OUN_DqEZ z&dkX5;>fMfGJodx4MH8%MDj-9?nJTR?Ir_|O>X8Hxtr^@ljDOM;msR{=(sA<3`)huy z;Ks&TemIldtT~-^BqN%4>wN&D7}H4^`(%9Ffvh*>2UHM?6~&f5p+wHreZD4?YKMla z#mSngxoqQrc``eU3~wAfPlbs7gL(@A2`-{^0_ddp0EY*UL&D zN{qB!fb@Pl*7el8+alI(Q>tYnL3PnT{il^@cOb}!XPM*;plA03t2 z#Kv8~SHy4J_Zb`bd@yGrNExLddnW1^OX^2nm1-|wq(UAwSM0u=1?{z|KFO{;=XW!E zP5-lg;T~$gB2JKbyUz5QzJ6sSslnYe{^$b(yKEwVXwFH{nA{u3~FLWd6wqe zq~vllkh`&4jb{cacic0~BS<#X6!vM`4FY*s5r1?DgTuc$wjW88;P*?_oU!F`gQ~|5 zRQ8OS2@K8DwUTFT32Jl&dAFG~`42fzLV5r`*=W;=1Qk+gopP(aAd`iR2##Z8;M-18 z3kG0^T#TFD^M&xxsQ&(WwMJZ!?Q3edd4TBv>?DC9O((nha zyX`?G$@490JPmkMlU6F^i8JK{65!a&0r8osc%=#H1@6Ao37!+7J`8jvJ;=qM%*qu= z>=q@h!RaJ9lV4f@@g^W|qD0YT~4`NQnU@08ob=_VksfvjP-WJ;X2!pc`R4{?mo z#8d}3+h674;A+R|IX_E~sQ^T?dyj}Sg6OV{qrp1b!hy%~#4!ijlSHPKrG|p4d@ylX z*iW>_;|oFs0JOeD;D4jo4t|y#a`YLgKuWeyM#viYI{PuQ)_)G)^>J&dWEAmB6SZXT zokt=xDEKV+m@C!F(mfX4PL?Q7UfyP8O740ysb}319sE)>vf1LatYoKmU~g#C2L7-> z=syf_#Ad2XNnX#+vrIUyS-8Daw(|Iz2im*A=6|@+>TaRjXghN9qcUhSmUqTix;CUr zZa{dJzX{pGt&KG5>VT-lp*O%=n>J4dpn=1a5c}dJF2q*&Kz2YAq%;)S6kK1U9N8K)YtChSKLoW{} zY3rPFGy673`X9y~SipwU+MN0arMH_e3jLji6m;OLLJC5a6Wj<|QzucnkQx8X#%luf z3JD3LvF?TF1k`8IBCTKtZ*wJIAiws3Gy%V#@}G>F7w*fA1e+PGU~WzwPFJiJ$4AD+ z+l#@YFN|Sv%aeaLJ&BGdJBiu+kt93n2#@V*(wf39p6I!-JACM<+w~qHu0sl0Uak^9 zI38m(9rrL(MO?B4n>fDIZDkGEjcj}VUHyQsUKURTcKAsP!icS>IU#Jj6z)`{fTVcr zz)ia=us4S?Irxke@ae#?ogOnb%yNAV4jz?iWzH+tiPA`3(ShhlK}NWK(;Ecew9xja zSKn)BB?!kc$M_cY=cihQD9!~R%|C5wT4D0WbBIe#)KJm)ooxuYK%O&J|_`)TxKf=7^ z&%a-tY;e;;Nx8gxPO|m02G7>NjnrX`-RkZgY0nq-=Cf@Q<3c5$KY6otR|Xg5J%M;S zsJ7hF%$mQf+}6Nt5H8a7yTpo_O&_RBq7F|ScIVWO+=Uu+E)6G_*e(WShy7K$u&XQ` zPmg2P84+SLxpf^F_u{KZFT~qEiB!Lg1>H-=ZxzueKA~@pS;dWj?|NtOrjKKHg*wBL zPlOrFP@xVRpnOJ@88ux6r?oAP-7Z8W-Rrb9rSu;bi4*fGD+92V_}<(%^Ch}fU)P&f z8h8?e#TwnZ=lV03wi}d(nNx@R6AtDBz!IBN*Mz2$O16}E04F%O9e&UDF?&R?CB;iTUy(HH7N*WFsyligfU#Gt8heaJYV@9(rFD zllYz8Updcj^ds+_r;3~5KrG10q#zMi=6QmStE7$Ayot|E1jO*~~$zlNo*D zLSJAYW0TdiA?3yJjXB=~9ha$U*@0P!kc^P+8J?vwQDl)9ZjZ-mQgmE&OB>36d%3Ym zsGj4?AUbjQIqZYJWyxmB)Z?O%(C=<9z%pAqj?R)UqsX)xsK0rNva%#;7=LB36Fk(*l zI;5=%jC68o39Oe6;lnHr=)Vfh~06WViDEmeEk!K#&)MnHJfGC?6O9^|=ziMjynHJN<3{ z?0I_P4u95{DBAw98|)^NwYow#MD1R5es?^6>wPj$`aOod{^W_OrXg3tIkB7=Em7cO z6kcU#F(O|&V0}4C%wZ`$=X`5hz3e!eD=wo`WR&&;V2Tiq?l(KQ?yAxJ`KVNeb5ntj z;!7F!V*n06!hnlH|7sv!EMvb`5r9`;LEWc6QfQuG82`UtFAsM0#wBX0n!7ss)pfb?70(&xKZC8US2z+=kR%8s zE=E}`dJr;>T7#?b~zi5o6cUkra?fO zAtd7eX(0$(P^1rf9KOvu@fanz#E3WPtx$Yc6M2mt)2cS*8=1kuBj6*iX43$qgR(R_Z#Az(a5{A;=I$B zb<@d$+$Dz4ByBP7#Dj!l!i@+hTX9VeTCD|ft#|MeQk-?=gkg$#`Ekm95 zcckyZN$b^4QMsXQEDG03C;dueBsncdP0J-jR_4~IM`qHrbFQuLaMk$UN3O_?cx_V_ z&9UtOmoapuBUlYM^xsg6c%eLP#DNnyD5#rU`Ox0A4uVP%kIb{#B=3ym+vVl$=mgOx zYYz!;J@=jeHjhm;<4+rEXH7NStBuhTBZ&t*fJt1}E5>HLF*@1DX-L0WyZzFiX1ua5 z9-(WIryoXc0v#4Zj?3I_OXS%jB?F}`)6`^`|3aLunIGztS?R+P+rBTu}dxO1b#?Ew_a^72N9OuH;c^Z6vcO@%G4 z@kE)C5RQiLbaY!%rz|!SOkECI)VfsaxYxy5kj*yi)M;_EGY;3hvp|$dii~GZ%l>Me zapArI7YYTVdwYOg`Wr1goAQQ=s(#7&Axr=$M6IJkpl@@ft((t`l0c^FoUnga$t$5o zRpuZM7Le_Dn3k<$uzl7{?afxV>`P=(&X_g74KFL#&uin}m2WpT>woG$aHpM=rKvp@ zy(u5Whs{f+rtURE7aavBYvnn;gJdGQFU^j4VWOJ9ZIG;5)1zEvMc>R&3ILZh{|_uKv^YsP7%k1Y6a;8}fb>*Dn>?MOWgP1&B-xWgRuNG+u%krqn-#*I? zRgQJ#2olqj#-G%c!^T11#fz8%eZV@n3TQ@Duh`br;Qh>9(=J2$gn5$7cO05LXz(wiMG@muItAoo4(~{^wl1Bfdo1-^a6S((kQ0xYku$=`+|L-?Wo? zU>Vb`{~6b-Nt~W)-Ru{Y_$>jQt6b4Ekg1U^{+&MsR9ie!Mq26gyVLY2l(1yk^u!Hz~CQYu`@))8Dx>HjIAx zvq)v@gle=iz9u@x^UwQQkkhk?@vCK1Lyk>MRj~!W-fw`x{Qy}-A9X4%^|i+BbpO=s z8Grnv?0CP)Xh{d31dJbd{JmdK^?;GDQI~P>>Hf~$Ya6-ht?Hb)&p|)s#cu{zS$dBv ztuDx5Q@`$XCm;f`V$?VrD_^!+|FQ`qCn600nQ1|D#-7>V&8exR9o7`XTOZ7gA}K?) z0+k2k1l-4nni#52dpx(%EzSOzF+|(tk`&1(r5ar-@rKH$^_7u~&s!^ZIhM=H3bz?B~Cp z%IWqwyzaB~sm#5|5PN`0YUHYzJoF1DWaFWWl9$oy1?gbh;Od!XK_P>&mmnLL(O+=? zt|4BvD8Qa$TvH(ZGzZT{WWR_ywqK+2=q^_n3RQY9TzjKNB|d29SOdoA$g@?qjI%Gcc;5YS(=odENwVHP$}*ev~r={d^6;0C$o{5 zEiSDPM4dxE#0pUXwkOWbP*G+*ah6GLg4&&?pJI2KZnx3?#2>nBtrn-Z$b{_df95Ua z80HY*`iYo{vj8Bp56op#TCN~Snr+89C8OhF6?`;<+GheV{fP&S+)Y@T1busQQvsIB zr4H)e$n1_I6u%4~VZA2r=vE%>#4T_oSYLmb)n$IBa6!q+(hab@&4w?UJBb!#LstTN z1PtR7JL9Yd+K%=LCxVQfYjZKa8Jj&(+St8piQqx)1HEgyMN9b!{wu1KuRd0Cb#%9N zle&8n&KvXe!yF*gG>xs~} zwEUWb`5!e0+XduF1pTU6f_XImP5>^s$j%r|>B9Zp(2MJsGX7QeIg_ZjdhPc)X(wY> zV2<)t9v`)Zz~OjxGlQ~5wI)w3J9YH4)nfy5*I#jWB-?}r--T~ed$M<$IEwV!PPaAF zYx$(*z3xJ$L%Pfl)?V!41l?3!c*~3{Z@nGJ;

    MzizmeR(LL(GCyZpG;E?4h(~< z!BkagdzdaB)!3IQ=Ojt44a*l6>SMvHjQx4K*~tNeK96Jiff#(9kzA0XG&+_+wc1gm zqZm=l2ZpmhBa(-w>O3=>3Sx`o4nuc{W_M1UEDD6TNB11}k_)mU>&VgRbYlr9Hm-W# z^kkQ3GVhX2yY9#EGTyGU#OMZ>*F|x53YAA+23C`X88$mnS&A0%nW|3J!ZRt$)#mXf zuD&l71Kb|u$f{}%7++L7Z+GD<;2Nw&yPrjeTS~Zpne=eKm?BZ~}p%c8> zk|tfOVpq(AHl_u5i(XWtb}|J z;@fFAvl8L>VqQSb*Q**n&y%T!?YZuH#enHIW{Em9i8Dy#1}N%myvlt2lb-ym23EJK?|7n(Nnp7lixBWYtTmrFL#;IG$&A<1L>8#TUbcwp!~S z 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�a06nz7~)!;Ns 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

    -UVCb;2lDhlB#vFXE7|dC=t1&YV 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ˤ$R6Xgd z4;c*&jPl!ug6jI)Az=a?1rb%!?i^_F>tBAFIcRe<3@voIj_ryyT5uJP|4`s^e-TKB z%Yr}nHQffwflyO*oL$t%O< z5&}T|U2B5w1Q5b2elu}91M|}roiT_EujU+PEoda3&3QXARnIPlvei8v{Jp(;rSZ{{ z1*!EO;PO56sI;o;jD2JXU{4jXdLREp()xfm1inDK;(!&_OsuTsa~c?L0ePwan35aSpzNjMA0r5Ac;Zzq@?Ur5-eSZFo>& zj898g5rl?6TK%c~JNij8$}#+33x4`HF|*isKFiA<7vh&V`#MEupBuy8_OQHs~uw}8xR!ZzA zfiv+mr2*H;D~sp`srInpSa3PYr71@ytF%>@b{o0fd~SOc`X(F8ONand-dIk5M%V5f z&)qOXs0l6Q&8|g)+%u0hatiloF)5jvb4fsaD5%=78+nmHN$^0nn^GJ|eWHKrP52=v zLJFQAK9=VUr}A(>%9ABVCm3eWX8k^DGYS=p$OFa`g?PWrN;!kW)Uw2?XBr|%5BGz5 zhS;K&;f!1~fLdY|K#lmLHpqQ7Cp9G)S@J`$25{u_sih!3R~gLYC#|pj5vpKLp9Dq> zAfDtRzRJuOSJaD;*LdM`6&tA1+^9KH!8%BM2NYrgzWdjk`7~xD7OH*n9`ke{ThYO2 z@(^d=x8%-SLuR!w(Onn>57OQS8Yr*=Ms4Jni70Ca2K*t^)EKS?A5YA? zNdzbT7W^iB4+kC4?&<^K=2dDz9Twl*Nqb)zX{v<9&dk^Kh5I8CRz-T@eY%AR$D7Mw+?cnNPY-!s%SYxAd(mHw z=t%TFdsZ=%LtL*r3WW_+W%BQtD>p+FTGtQaO50va80(|H%-uNe5w`QX&OOTUnhILiiWS0x8yy$OOqw&*R$JqlK) z^D!gt?_InCjpJB}v9xqC4E`}LwMlI}G@6FDaorx-`R2)98pr65Em*RSMCBR{E}PBd zkJwmaQ-%!=COJc2Oaw@ zKfP~!5#@lwfnr5^SQSJ(*%WK-5LssM8i>J`eb*UCJ*xYZ##X3RYZs#!HU*!6T(J@s zLWuBi8*z_9yen&LWgM+Z7uLZdkwlpoZQs-dVl>{Lr{8TS2G~v1WNqm@T}8YTJI=+H z;~Y%p3euSPE|ndvECeFB)S5vSNSsh151NA_;+B>I9#+hh6&OsCtzQTwUNu`$`1GNp z;If+2gOL^l?p5a;GPhn-$zb%o9I^S1dIE{i>1#Mr%RaOL4;Q|m>5#A(sbLJ+0*D$R zKl@m(MxCqBS~9xeSFKEb{H_qoHeF8obgU`|f&Fk%&{fpEzcgdN=(DR z1qj#BvEY~%?1W^C`{t%sV=!SbK!HVYlDJ|4!w^e3kT;Pg+$(oQz9N^}^o7ta?{fBE zq_&lTN2YxLxcn;(6LfhyUUilKb=P`P#=Y?> z^|E>(mhpBO@%-mNlWn4dfc+EUW=}czW5mY^xNvdXI7+C zr=6}j=V>KU>xX{adijSRSWgajBUZVrfE`igoJ0Fw$>25z-ztixF1xuy2q2FnC%s>U z>RFyc@m`%@LU}af^^jD5wJm@Em4-qU( zw*Gt~F;vM~lG@W`0+UBVypJ;z;FH;Ddp_N5)?Kg2kLp(gunk6ys>so?{iKokrxZ2J z00+mLcu66UEjtE^8^#~Q{Hp=1qu>@YAW_aqFO*;h1>Rd&MqUG=sKrz5aM`sP)^8IE zIGEP?j{Ix``ij3ke{?BHW*VA80F`h{#7)%jQW;PJc`msCQ9sOmaJTExMWSDH47KXugG3&OxXc73 z78@~TyeuobJjnb5qO>)9*XQhXR;301SNo$KigyFw)2qRmUIdEVuIseA(j)G2gdR_b zcsDD=^Yk(5XiJ_vOmj}Wn9p&!^m9(g5#5b^*-u+_AaR%qOPbg3I~<85RPx|r)Lg_v zw7y&ixESd?{e+r23~lLG+@rojoPrn2|H31N0@1p=F$7$3C)%x4h^Va4&PYW(I2=dS z%F}L)QoRkWU_7~sbS7%uKjgxl0L&AMD8DOpdAgd}cM1wF!=QYdhkvyB00SFBWlCeL zz%h8mfLTWRG9-hY$U9<4u>HNx?6(kUSsNzjN7B4e-xAZO+R8kXLm5$0S|Klrcni1S zXc$`USeT@++#BcPqk|H`n_#=qYwz`a ziChv&661V^LI%LvT33lW@f99#rt4;Afuu)wnKB6V$VG)Ge)ZHMmuiIr4Ht>!`pkd2~o7N$B$hb+`OlD#+fdMr(-zv&l z%8uDTbFsrmi<}RNpe*4(Q-^{fH)9Dg;O}xin*Y^-fdtryUR*czAJ;M?GrIxvKI~7i z7QRB8c9`~+e^xhaYK8?D4q_<^l4R#bUrpNO$$e<&CmPOo1PiOyanwby-0$DmpW9Q# zU2U+HFBAe68cU!3lnS1#l|K4%0>$x9Kb`!NWCCBmGO3FAA6QK8=C5?8&!FjxqzImi z)xoZrbtUQy3hgFJdzn>TEBtpu>WVNX3$RnHbTvOQej2H?e?TXV4AIId7rFWxgpeKL z5Q25noKhK_>0tfHBUULASng!s78hh)y>AHEFG{&U?xht!t@6X6x74l>2`=8iwsy;&A_@R=_Nbcy7|CXiS&$&w zyKIz2+e>I($?^3(tNXYjSV$;$8ty}I^quHrsu%Q#IOn#T0f8$%-$iC@g-&i zMXPntJQK^*=J0TMySd6~yY0VRAyebRSz|9anpQ z&l~ShFfBgPT;8faH2dsJ6qGM0E-8W*pZ%1E}`GO=QY|7`jAv0-fl zg=!{22B;%{eUW2CyMFe(~2gyw`20?)dr@CJGX6L`7e82Oh6(%yV9~S}(f%t4J zYZ;N*2%{nyiszhW>!m!+eLm+WQ4F~*Qkl93cScI;pFfz@*x&O`UjNFY(?Bu!E1asp zdf;N+bt5>rFZvJg35GH8*<0y5#zDa6inYl{bf<)GobnOaqd3ktU^Rqa-TuRmHwEvc zvvafe?Gt-p|MmABJ_b*KHGY6`N?_;l4TRa`Mx_j=oz*jbtO0rW%4?ZbRq$&I&TbZ; z^q<|=_EFPl)}y$OESor&0B7UPIzMw0b+F-;^#JI#GD#=uuO4#7D;4}T70VoSTGO)# zQA(fm4mqEyX4H`Z@DfQW#`*>#p0FP(kYtqX4Q>9${+lMx5{1A{U%8DMsni+G!-m9S z6v#7M>u}?fhTvtVS1oz&`OySu)%L3WysrS76yye$~uj5+PM{T8AYOm zYpk+3X1JC*r+RXDt?CV@f{QUqhzZrgSJJC6oriG=uQh{r#h-Oeu_n-&E}~M56Mjx6 z_@y;aJXA)0xwd|L7xy~=F6w%Az4KGS!oW2KVaok6Mb_)rl{cCjJd`CJs@R~_4BXI!(Rcjz9hd!U49>&|33YL z(q(~QkH=y_bpwa0JLKKVxgjtBtkY?re7im97KpK}>wHKPFPAblZTYigXa}RDr#w+} zoJN(%oK_b&!mm}?nacbb5W#^U6@?z%Y$RdEzDFSEJmp!V!GJIf?Yv?(7#N^h{}?6S!kwW~nB^9vUTlB7EkY;ad>o z_N?Mww|mB2N%Zi!SU$7bK0kmwQzppT z&`k^7K<4#G889k_|2_6^iPO5X2Sqjg_9QC8`N;wbXik7sg;}SuRER3&3`MigX=Clm zqyg?T(u=cFP=mwJl)2NNykgFrf^gcnv?xhmhM2IYg6>!y#2{)s89IlAb6M)FX~mXwBXIZ(%HQ| zqI4C1k@cz&o5u*6yIdr*-XL{sT?ne*BcG5jVsjnH#X0YMTCrwf9uIhAYx;=BE9|A- z6fH|dm!Ba1zI^(pWNhLsdP%yizEC4odFOt+MB0eq)Uoxen6itYE?=b}%~Xk5Z}W=%BmS>vzGR74wgwVlO_I|Fe|)pcFV z9BZ-Ctic8_1s{=0=arM#PNz*E+B;n5jCm$E$p0Tr-`G%D!-l)FZQFKDo{Y)1Z8vE* z+1A9#oNVpP$@av_wX;vpdC&O;>(jN?y)G7K;;n{%Q%hw=iIb}}NmbDV@z9HrVKW*o zA`vyuZm<28rBx=LX@S;~C2*6Hxda0UVJvfQRj}s=3xU3%4DuDxV}Nv;!sZj(cFkNW za<7xGfEHcIdV8bwsHtN!EfaO5gl>8^s&QLatlH>F$wrB#S5s1FT+8C=iG%N*oj`NC zS$^ER0F-(jqkW!m2Y${+@HcC+;31O~7lh+YEqSe{42JZBj z6R5WwMDKq^hTF-E0!dPCqpXck_;j3vB*(C&Y78mQYGG_LN3rgdvP7qpa_$a9mdyHL z-+PeJRHg!0Qun;z^{p7x*h^IUJ$^L*P>ad|VEDTg^MYzs9vPCi4~U$(WS%_mK?&t7 z&=LQdW<(v=gJ>fSo1~5ZJ!hoq7-xwcjQgKd zLE7e^(E4`2f~&kDa}>?K%&U?Qllom+(?G#aSgU#~WcV(ZYOo;v?r3l$0jQP3HA~3q zvB)z?{Thr&+fHpvz4+2BGm-;&YACb^>N5QrGi?a%SAYa5}U$hj!f zyd|=>hiWX^LtpFZYq)ua|@ti@An+G-7W#rK74^ z(dk(WZ1eCmJ8Z2>EB}J+3y^_quRFmx|003hf&;c(5K-9qxxx)pv=fJmhMWi$RD((O zY7m!@E@wOS#n5T2Cp{7Fah@X%{oC$>1<}ltf*ZKM-%b+`6+)Y{XLkd_xg7DpPn!)k zJcsIlY^f+*lNUi9EY)GF?+L%;R0F7`qY#K}h!<^-_1!&2rJPMRPGjnLM57S$&t$0p z{EMRKq@R%64pMKd_0&p{GyP$2_iMLeGViD+2zdYAi~QF`%V#HA)IUU5DH)b zkSG64cfYm`FG(pCiCv$Ryz)jk)CUB{n`X~!wy)k50acatrYXL zZOi8!T@8(-#|*J}#pZiqp^XvVGQWB5Kw7IQDzt18R+q#2GU&=2+xr(hMfb;H zpH?G>`&%rlvOK1%{cnxxQ?u85R-#F0#q>=yQ&N1{B<{(pG9R2TEx@d;w@IguuvH4i zjG#SDv(%%!PG~y>Spg+W-=Jzm5NV8??S@eaKi{^!7OhxWDZy!(A6sLi#$hkgL(b!` zRl{D?yN+wxMxMU@O{{*rq|!;RKgyHu_bsa;a0t|$(g~rYNI!bu)~PpZ8S2JLssb2i zBDYho%?^*Z=r{aAR*TROayquoa$T*ox6STT_wU?GaKes)>`R>;?h`@f-q7f|-+RPr zG|iY9Huq=r{G?nzvkuOyj;)(kM>$2qk^g)3F(DM2!G>Y}1%#%u_qf~?>Ni#nYa5*` zcCLtL5I(h6EbjyEV;aBSx=B;eh>TOQox+0XE25(~#_#fq=d;f{=88vu|FbS0!oV5-tV5=WHO6uzCFgbsxme z$fEzx0r0wmjeCbWo{25owA9R*1%a$mXmi`5s#v(nRT|l#dw^QarP{^~?r5k*re~8s zJz2DWwbwUt%7X&*VNhF1%P)wBlarAglirUh!F+qI92^vHnd!XFhsykcm_dP#Xh|$e zJDOcGl7wR=I+}a?1j8@EH-j3*Cow7kgKQl@^!8V8!D?e7`8+ENl5a3>2zxY3v$(3s zWY=U@L$yaTKGRxWJdeDw@U6rpVsQ$xMri1>^}zo36;({WeOi;clHea&rM$wxc_p!M z;tK0=x`dY~kT{(q6~cS6uA5wp+io|t}qIlvn84Pi-@+x#@BY-DJ}t(Y9d;El`76H28FICAhp z>QhSr44d)Ebhnnawvu6YRHFeb<1jWWt!?=%+Cjmpg>aH@h$_&lF^*-N^Q}H!CWsi6 zSL!SzshQIVB`=c`7JiTTQ8^4{nUS(9@oFh;Tt0-WXb)5S7mu5%kJnrpeKWH6l`MF(Mp(Aifk=vXVki42) zb{!JCZvl!Lk~yciwq051saPz(gq81A&Qv}!Yv(gZY4#bYRQFoSvR*UEV#*7AKF-VM zYSbVDH7b`Wdk^D-y$nLW%L7zbi+V8kN%p4#JrsWkWvH5DaM%}N-i#PH9#?;vQjk7f zI6{IBbOITu?u~LkWfe>Vxi2@l< zV!K4`$w{6oc(=T}Yv(I8T4)p&lmyAIwjSp)dZ@#78?&64Y(MU5gPJQD8S)X?@yLAl zF}6R)NDCEBcm%iNL3raquX|+cuGanv`qXtgrOP9ve$}ExgS{^oo#%p|uiA(aZC(Xi%&n0SnIG3sL6t?>35;?{(N!+ z%OdgY>8}^wy$T&nTbr|(I+UR?XqQkg{hO?CDf?uXd2wi?l>xeU!LzFMhwDOsVY;{WG_Oxz@M*naZbmKJ%H`2_h8U$g0X1iPQh0S1HUthE*asQ-beJ9#Y z)Dc&16oG=0bvsD-GlkREaMWjo_nI$86s#A6_b>OpdNocIb3z6{kAEZ#L@SVt06j07?w+F|KY&8s8zq-=Fj(xKER7yGGbEc>K=M zIA_(D*^C`|C4lI^F3B5DFZl$;EH~WQ(iGHf0+(OsZj<;1XCKU7n#EdT*!YOv4pj0s z(bxsm@u$p#Fw2`*2hG>2DpFW7D{zi+vq-$6b>yeBQMOnNwwHR_I!4pbX7}O+o%EgK z_C_!xX|9~p#XjQ-?9eK(swNQBDwA5~GnE*X>PO5e`X>6FjGH(P82B5ZP{ThKP#Lrz z5#|^zf6s)@Dy#ZqimyTe2aQgHInh;Mvw$wKY8Qt>YNg=LI~Q7o8bC2|mZRzY5cnU> z+Y8dlcnX+Qai$zjp`Qzc`J+G02?`FSMVHIEO~Q7Lgxe#L3!Au3Wi~2aE-}Msd37pF zSmDq*raDAN;W1x4%hF7;!2h?6y3qw}?p%8hnB7zN`Sd#M#_Yz)8N&H8(4Yvk;?-sQkM-%%*1in9PdY^CkT{df~;d`%IhAPf| zZ?je9t6yfsV{@~DMJ+pBa>VwdTh^Mmu6@BztiF0^G74}l(NZ5^)6{I%O2j1Rv6{rs zW|ej#8CeJGD?+(Vr^5raM5!t5@!-Eq9*DLtXl3 zv_=V?dpiu@fa-`r2p1$UQL=NzNge2Qq*QstSS$FJ@(e%+(3v=jfiy)0b4=1Fk4|wDZ4%1TwUk-Boae00qpDI`nk55n=*F6F>ReSHtla z1i!N$9|F^=Nk;@;<$|q}E|d=hPk0#o4EG04&%L)?hnzl}_q;CIf=nMa+!MNQrq+4y z|L|GPJz93|CtseB=3&JNewTK6&M94dKo$B&&Sb1}(o?3kaA}JMDt>-0-w?w6wSmo> zYTszaCm=2ojSs|3<07=jhhzU%g=jpYm;P3`b)&Jzo_d7n@N!4 z)aw4(Zu8l%bgtd|oTjL{zW)29$1nRV{9l6XwSIE2x^owY&inl7=hHDMXCV(w+2;c03`VdZs{oCFA z(O85#u%g;)MMyD=bEprLz3=_IN<`zDCMy9&hS)V!OTvG8E9fKObAWUCY$v4T4>cqR zy^3b*`)Lh0iElIy8~yE5$ym`=^MAb_IS{R#6eZrdx%_GW+ZA*-BY_s@l+Y@u0x1!W zT95F3JFoiM_SfO(NXgyYYiL5`B;GrexWo-@TG*w)XBkG*m>KYB-zo-YTgnOE?Euat zszwI~IFzgV1yty>v6h92=KCjmifI09$C>xf%g&ysl4$>{?awVcznSH?y1!^670VT5 z-z?)7zUSl(p|q~CLns;ZmtXU*W#2`KJTf-2kz(Ykezw7%P_Vo(+r=(|jUJT1-WoGL zaYL4t=ric--kqmPS=%UlM1_CxW@1|X+*_0fP*~0;^MkF*&;YHcbn4yvGs-5|Rpo#6 zkF$?r(r)WlWUQIUAk_97TY-(8`3TD?m-Z9yaeP}gue<09O3kMw%<{(bc;W3@m2CosUtXdenZx42yYig? z3INIdtUkxckGIC}CDKlsL`#@h^t(49=$O=dn)0uGgJH|K@h!_^y$aU)6p1iWjS;k_ zbqeG13Wl_%oUjLi6q<{oC|VKY^3NCOf=PA@h!`fR{F@dMy2Lwk=>e(MC%eo82|K2tL9Lr!yN&7|0_r)YS=EfmLSEyGbG*EEZCVSWWDSZ) z$d$DeNri$oLrK*&OmR zyt|rcgA<1F;-6fD7|B!bGi;iNUN3~3e;Dz36NUY0t zefBNbsJQj>>WaiznK$yeb_QE|bb-jSnktO@zwQbAid&zE`U0YJY?gNz#ppb<`<#i^ zYTllqgPlc4X+DX{VEnpVmI z#Q2YkQ;5Yt(|w;iUq`kiK0Co8(vl^4w21_V6O>Q?8Pb{zU59YCJ_=8-z1FF(&KjpX z2A(aJ@W_3z-|6Y@h5hcE2GBBCq#FS%(;4Psu#k?jepoJfT_5i+FE>;8WH4*#n*2qJ zj!OK0q5W=WW!^}_u>PtaK*iPnB#WIFa6go69bPA4hVW-L>;EHz<8Pof5sOFb0RM}` z+a+E9n^Ve4wm)|^J=PHp6I0Vq$M8F%75#&CYU8LhGuR9}2bsG~-{1$rNy|(r*Ohk6 zf3tl1d>4+5Y-H=)&SIz-1vL?+s<)BXm!mo7b;JC`?mg^D()zpHTbtlKAwr!R%pa>< zW|zbKWC7&3vysDlB+U;Koqu|~bxlZ;XsvA7x*B{>%C#^g%AXcr`&|x49!B$1#A;Z= zjv=Fezm*(1Le^C>L9%vL6)}=Zr)P$PU^Gz6|8?A zf3XtGRXHpfWvj9ns)QM~v##xWO)dj>(vh|ja9OQLLB=_~_v%CApI?mMef#iktc|^! z8Aw>kZQW+DbMh9jnp#}$SxnEOIXVDu&pGdqSK-*`QpxOZ`rR&M^g%K-lAQnD7P9-~ zSz9Rv!q?x>gy?CdWnOwx6~vk+SUWY2H(A$jBhI5n$QtwIF@{7T+(t%F4x>HQ_(>*J z1zWYZf8U*I_6$uXS)Q9F?c5T6sKanV6vsjAn}l5vlj}dzR>K)DDvk4iuxuz}=^tES zKvXg?eY+vls z>NP;7ad}dTziia~NmR9=yAj|fPuBT+F6L`{EwX83Hg#K6#E3;=>EocN>_*O!*x%R* zkPlUD`3-SZpvfDQ6q~$q%S(?`^?+w z(bIvzF?k~KRo&OBqJsl3jDjpjvV;%WWTeAdvbR%-m-mNWHtB_-o;6r2{!f#4>VKnG zC!O||Mh||Sw+)v_k=6D73_UX=R4Fmj-Q%V z79j9o5SDqK;tqXAAcByuf~Nhv@BWZo#3-NoG>>98H-xru@xl>e&YO3H=;s=RmXXng zl~wQCxpS^~zYm1YAYx7?KE!^3#dQdQ+l)Az0KMzy>(=kuB#}A<{+8?+ew?6GE|cQz zQ;>BbH+y}&4n!+;T{aHt&h@)!cPb1$rl)OiT@gWGhYbLa(V^Zqr$U+^f3{$s1C$h& zkB;|{93N|(1144_tA8IeOG#ZU*XBP2@9yr>wnC=Q%M^nA5W?xt<15xjlc?S>_n<+T zXGQ$4e$*-zQh+I;Q^kNm9jYt8n&EoS?_|HVtq4tcoYz)Oqb8f^6rXis#~ACQ+)99G z*b_G0EQUt3^ABM^a}X$G7ybO{U{j4iGglbabXLUH2V&E|{C*0Pd;Rfav$rc|jmla` zqno&#st^~W8JN6Zz6@U9|4azv%dZXwWp1*m^GvySv$)E}{bpl>5Lt%F{F{;a+s8_x z$Aq^jn^@e~{=Uz?Z}2>0IV+$+_WJgB0_20_gF7mDg!#8PLP%HcO}pft(x{&)e3JE) zC@BXg_Zu(A{8`njC#LWL-Acyc^H z&RrXsl#nMWG5s_^3p`~ps~R{fN}2g`jx$}2a$1feI|FEkV-9=&JO30QE3z*1B@i2= zDY3D|(6IS{R6t1VHWW3xWw|UPmUM|c?3kXPlMvk17(j@+9pheg?ti@W?q5v6JN1}i zFcJC)``g6qyO}rqA;a}7#z$Pm1zHo_BLqSK!HzsObt({$hm%jQ94Fnb>08ebw(K9-+eobuGybD;Qa?h+I!^0Z8cyHtzX%C0 z=5z*SfUy+4s%qG55c00amOT-Y{qr?BlyV5?UXJ~^Vp)5hQ2VD%%KO`A!Jza+vH~gq zpZ@rmQM5-1z-j^rOO+Lp=UU)xf}pVzFbVEQi^nE^W!S zQS66ei$ea^wJC37u2voCM#Qgb(U3_4x}dEWWO28?@h`p})f0Y5W*8EJ0qqU}EE(3uPQH=NIEy9=dTA%;OzLhNN9M<6(%1c2ZI!!g9Lj~XB z3t+vFzG9u}Ni4Pm@Cexj4<^W-f{?ETm+t#i_xpH4mygk=WCDluG+Qhkg8KX1ZCbTQ zkEQpC2~4|TGkBM(=*)VEf-GbXFlbd#f=6EpkBb>*+z%uB(2eR-ZktX(4lF z3Z>3wY?JstMM5sC*br|V9GnZNvXZu0fgm_re+ASoyp&*x%(~2$KJ+1HE#h}!%*SWG zo?l0{XdHEddfPn#xxeDF0mE~-?6D476$FiczE7m(3Kk&WjcH>O(pc^UeeFYDs$ z{=>9YoAg9kx%gJod5%LvLxLP5{8bhR8@C03pTEGm9>K3*WNyI+{1icyr;{hm$dcve z&1Zdqq6>4cwF*uQA_uQ$Td?o~U(V5Y{ap>#^wl)*(-w}^-r?A-0y&nbmSoHiqYtkm zb4X`s#$5NF)n9}^t-j&h98G{PZ#q^7L=idK={kD#ToXh^h{+0W0kPu>e|kK_b&nZq zD!nY)BGN{O$0yHA*P&y(v8Mu#>>9O=RJuL4b^8rqqq?E5B(`crNYdncQlP=9siVYB zK>~fGCEtyi$P_5yy`~UcodRVGlEi*H%X_^jh#0R;pUI7Ren>zG#^|V#IQDZlvRx8r zxe6MXB*hAz{cHS6xc=-d`iCMb|N8y^DIuRCu$(9gc_cP{>MErvFph8K zz6jYk#~EenKRXT^o$fLvF-)}fVVz~++&_gyvZm619avm~if>h6zj{oHEOXTKK|^5u zI)IE-q2zVTcRQgB>nKt@cuYJ6vUiyj}$rTkpZQp>!!79$@-)N!^or`vUwHA^>abgaDAP7>6=R;I$~l-Kh)L z+9{q&hQcU(H%^$!Hqw1GBEhp7#TCQ%k?;s(pX}G5=G*x)oGAG8Yjx@ zUra(bXo%+En2R^pD=viSe)Y~wEqa9RL*zhk|;sQ z#9U*^L@ycNuPd+XT;V@(y65w`LWk>TZ=6u+q*v7rAHzZap*1~mS=tK@(CFTHi}66e z+6Tp~WpS#^4Hg}4f;usBDQDTf)*`^sTQPt)_dvx?KVX)`EkCY`Trb!hmXnIk+V+%Z zmJjcKBlpL5UOb;VYzI7GP}v3N3{KaXN<{GM)O`hQd||*pr-1_f1WcLg;VF_5I3G@C z9#8x7H498ajgK{kcV)xXDilussih&qnht3hd$@Y#)Po?kDu08>6pWE-l|3lkE@`c5 zRbcHIeWA4CWFUlMhY5`f7cwORcXd7PZs(W|o`i3=?@+$Xvhewl=~J{M|5SG9NL!NI zAweBGz9eeiC7gwI2c6s+b5){OApBu42d|a#zT$~a)WzI)?8fhoV(9BjFXZc63Vssga zV()ObCf`kct2DJBgZEZdVOVoxf7d6ecdmqN{Ia(EO4YA4$vMR+2bmkHp5UufjTa!O z&w5kdUs?;B5Vf7JPnza_kLcv%Ofa&ThhmbFXo2OyS(>cQOuUQSKqq5&FK# z$Dd4^g8gy0{c|(NW5XYhZsX5Q$15vW;21<>$I-36TIH9!TU%f7L3qIAb>MRZbaurs zv%Z+B+vsf7^?jKIZMA(}G`M3T!)mXUIN^J);*1G~?Xv|=%mIB@hR75m@%k2M#3Zw@ zCV+Tj>vr$O3}Fy+B@m$)EQM+;LT~m@jouOf#UC&vgfxtb$U7OT^bGDqG?p$5dPp2o z@)lq*DwETH;{e;cgK<5gsO`WSwCI@y#SA zQBcY12AbFbJ;HsdI%|rz&m!U$@P$1~oMM0(+6x2XK)dxB8Y^O0y-Z2-HSXdC0E1c* zF2`UQEDi(wu{$XO0Hj!af-f@1ABvJ5iov>%7}11MHbO|ECr+O&yeuIZ89&tAJRN0( z4n3OJ_##pK;lhoF6$mAj<5Qvb{-`%qsg1BGn)C%T0gR~ql{GG?NX=!~TvnpwHwhLK zr>e}!c8^5q1C+nOV)VMaa5>ovzpar$3+V7qmgC3sPW}}3FP6{TqN=y#A3JS{2o(3y zv6W9g{ifKw*Ei?I=9pSbq6VLF5i(Y%u*XP5FMVueiu0+!Y>_JycOX2WZq@y8Elu0d zae5RDHt<*ZD%-`UMfWDI_O#0Cm#4}HbQ@EysJ02FqcM}1c>HSf90AkZtd}a$lAN4Z zyL{f1LsI{!yiVq#shT#GZ$?yBIMvC8lvExbr`W8tbWiQ8AVTP**3&hQL{Ncoa2>aN zNBxLj=V{=0WRd$b29U@>_}(6-W7h-UcYq$U8r+lq&l;ecqdd!bahJ{8=8J7IoH~|2 z8l+JIqzu-TUnk%kj}Y^PkTT6Zke3^g!7Nn;2m}k@?xNRnaHscN8?3mu#5}hP-fD>s zO3r9s=`}80ye$TpZ5TK@cU_l?N?6;aHO8>@=rpWYpozXFDq@xCNA-v$Y-mp9TP`71 zRcTG@x^9c0^5bIf3uaHPerL`0x*+bBW@Z5XturH4dKmB#i%NdzcKo?e#l;k>wh^F*@#_!SoT=%lI z&ht$N&KbkIFxUCsSXNfl;~c#_dP7+l)VxdQ0*1d-k}V=s_x%#uabAc3I32qR-6R=w zf%5;NA=eGXWbp5x0T3S*eb-75;_S|T=Tk(~Y=0ji@ot-U2L}H)021+dV`4xJGK&-_Ht3UESG6hYfBiZO73s5dg3=gWD6d+6x zhV8IToH>6xv0P2XfXPWOWkj_4MDz=;pBXuHbfe-LBmr|vb1}7!z0ik~*{9|t(Il55 zTKW3)%K(4iyrj(w*4C7uyPM^gF1^X!#e-*A>Idla!O(5`d47oN^E;=|iny%XDdf6! zpR&QfqD&CL*nV7K;l3IK`rS#dfJ#%1Yx176ZGPH(AqdlL#h_8kAOr|lag9Q{ z_^QNTiBb?@lQ;%hD6XVZNeD!#K{<~cQULZJQj|5aMH*MmKYlF03Qskf?uxHK~{1EiV3k99e$}7 zM=a#@Xw0K|Mm!&H&&a0PbH8h*P=8vo1NXU|^eLmP;dmaL1{H05MHRPG>uTPU?@@xn z*NB#aGy!~!{|T2>u#8GIyjKl$@$ZrYOSu444U8E}=MkTFDL&019y6l>?8ka>`ye}o z%sNv{95*VfM2ZJ0b?YAL{nN1dz(HC_F$r4V-CW+s6IH}tfB5(ZAa-ELM2q)!a^}MR zK(Wt@i+BPYuV{DzU-_S^AG>oBju5CjrY@e3b1(j-zC&`coKOWkF!EyMI)vRMBGcF0@*f@s!-R_0A|5i#Jz-4?s!fQ3p~6<^uv4 z88fP?IfLYviHt0ZMN(71(g7UA5#Y}l3GH`3kDHD$H z=fH`EjBz$v{pVH;F2`;93Xa;2iK8iFWQdDa+Q1nqd#M^|wy7fjyYW#wRU+T?MPw4y zfvjeJs|PavxbHX~Lr5x<-SQIcAvT#W<%}}e$n>1NqMMrfljU@Y9r_+TjneTO~fULi7wZpVK|?-^VHgV9Res6(t3 zNNn``HG4Mi9F&+yfM3)t!lSrZ*f6|Me;LZ5yz7b=!j1`XkmM{{uQ+oNX?>_ka=%dY za5H@b0v7Ek#I>a8U@ZO&tDUpfT&zE;)OEHqM81oK@Mm18_xAN>dj0C}z#GynRe}&D z@LsY0-GUAyBB&FZwd;zqhM#vxN${N8_^zq0E<&qh{zcDS9DiF-P=nQ&JmrdUJ+-iF zeG!p;u8lEbiG7Qw>vUuUI4$PAvWgRZ6GMZpu)`$>XgT@MB=RWykyVVpO{`E*0X?^& z9FLt@kXRu9O91+gQ4-~)4iUb3iwZ{uG0vgyE-c3~GbTo%xQ#WjA^9hJv*`hIcX>(V zmx4V+Yqy^i2aZof3|}{}&If$H%305K)KyRR#Ulrdjnpb07ZO~gnAh}(St&48suR$= zR}yP+Wl8BuMSb<1h0&gSzGu;TvoLGa>q)?6Y3b?q>)4eIT)-K^RA)+E)zH>5b&kAe z1_97%pt03VBGJp6Z`3@xzmDt0W83??SL4+EXb1<#oMj1_Gs4VEGMZ<)oRaD&6-ScM zq|)trEHCTgOZktTQxBs(sPkDXmsiJQ+k}|Ow-cWM#8iZ|86h+lv@ob(3m6rcBMKs+ zLc=;j^Uy)GYz~D=JxQV@kOATX0#$TU@|Wd3ool}$hzt9k1+uwae-Qs7WfrA4QkeaX zLseF^t3X=GAL!`@Ms%o~oGphtBh%^+BvN_U>C9jut^2ipCE=^NzNGcacY)VD6@@kY4d6;9RUd1m`Ued9 zA3U2jdDM1}A%|LJ7T_0RsI&dUgNaE6rN+g)t$c$iJFc;rV6qa~FSkj5BoZmw&5|{Z zdNer4Zr;OU0ozwE68W;~`la?^-2R+>TE`SvKTA%O>y{$di^_Z!Dxr+kIA(p0HiL9r zdoiusEEFzm&F1e?S7$jnZg5jsJhYTso=xe5nb<2$mS%eYVWE~XvRHgw1w^bLxA*zm z_5I)!))w%3A@N>Ql?nJ`5?vq5iyH2FHOW$zEUMW`9sxWypg1^L+1>d2M!pw6yH0I8x88 zy#X4$k1u1AR@%mn&Ju7>Kj-ifxm-g)TtTQj@6ft_aJK>DVFvJlEUQ)v)4XpIIscxl z{9}OJ7KrRH5*YV$1>zwjD-oKKI%TdA_1|S+wW{P%BS^e5O@9VcU47+HBlx)A@^j{x zCQZ-U?Lnn9?eLhD!lT(ftTOIffwVF6`y{Ym)K2RNWa;#NcDJ>yxcvC@26&B~t|LTv z)a)~*wNf%{f}}DhRvO={+oJ*a;6ccYRWw$TykV(Cra1uur@ovrUl!HD>Hc-Hhp@t! zq*%iPB?gk#6v95jp%0zdsG2l4ugKX^$B}eyN|8BPP3HWa?1HSPvlV@v>RZX-bAFHi zQ;kyLD8DF!6lZyNXSQrdjN}Y){Tg&Ah(JrAA5zJo}p#Kk6RTQpk;3sMwN5Qn*JlAkVMf*r{4(MBv+;{2D|e- zJ(!z6m3(~6BB|@CJppg(RKY(E5cR2ZK@Xa2HH`;cVvl+-Dfr7pU~;DbrTR4>aS@sP z<)9WrA!*_o*U}*QoG%=LJUv_F+cU*8QTx<>P(X+^Tir2gH@s;rvkz#5 z5hwpeq~)Oh3&hBz6j!$@VLa(~91SYT*#TQlt#SZ$)bdP6(BTS#{U9pK(XgyiNp)nA zirbRm9SC+)L;x72A^^`E<4!Fr?LfnwpC))c9T4LnD-$U;0D}J!f19KLjd3XU$w4P; z_P%Hm*NuuYhn|Mql;_mNiIpBZBWd71AE#W$pi4A@2_*W}Fp={kG}cgX2ZTdiiO5zf z=6RixNGX6Nkl!ly+q*?F3I;#7LdwG1KGe~geeJAT?m>$KLu^8`oqF2Wf}hZT9oLI< z0@2rapZp;;KDahWK|RDl_IjvnHA*xY-$PCe$c=RYLB-1XQ^~97%&dwW9g(x473AL}^ZPHc z-rG8Cnt6#Cy%Q;w3;{8?sc8Z}6XPC5UIZ6ASRk>IR}Kh~-KH*;L)l|928cXJ7yifs zej{bIWFZsE8dU+4@V~9L<=C)VU49Bo1;RIzjql8WbVK()i@cuW77(GvEljm-8!uGH zOGq2RhLT$gQB53Sm8oN<(l7B#&NC{O&{g5D78hlHR#i1gwjHD^PG%KZsStSx7RVE< zj|98d--LQmSdJkz$2?=aQX~MFDbtcKVqD`n=~wSEgmHX+#@bK#>R@Pm&kVc~wcxQK znz!>%EajGWD7e)G=eMZF2;$Fp$nE{Q^Gim}rq|04?Dgzh;+7k?`QQ6}C!U#eJ0_bW z*bp`pDyZ^>GdiK=oo-$+5be_B7}KZ)2)+e_H#tysJ9x40NTaBU(E6C{4MmyCjwqjs zrF+?|V;tE~h=3dc!3RCmNNmwMCgdZ`RhO@?98oDb!1)HmGrVj;xAtdma6}w(eZ6O$ zQgkgz0D??-jqu-mW;+M%$lpc<6Th`A9MWm@l$ap|pW3dEt(SMD_c3LsW;Dxa5z}1@ z!H?G)QNO=yiT$7Vjm--gt@Qj_TF;sVzJM>;)v>I;eVKP|x}6%oM?O-(i|-Sc^%Sx3 z+vSZ~UK{a$X`jLWoQS=2!P-W?QpG=BwV1Xp;4+N3Y3XI%Rl?row*X z13yzc#w|7V9Lu{iaiEG*?G{P0#JXP+9{dZlsNhEV>%+#x2vpMz6f93Y6rbB9wkjMKL3>?kQ?+Z zwlru8%*XmUgAuA=CL=M5x;QqYsmapDC&qLUvmT`m?)Fr$&QF+aa!#UOuie8ol0G>t zfFa2N+*mL_1THhlv^&t4eEirk3bMF`Iur-|<7|VWDMTu;;+TwP*HUe(?saZqc;Y~T zK_7_z6ye7=?qOa3;-HrWkZ(|F@F)^IPY0RgP|Q!6MXClWUYR&x+;6xm2Z_ib?IgV; z*TECT1?E)rz!UayNs~oFj&O^*4My?y{A3p>B10n-TFDD~hp`UWxy^DT_FPE%!rGkh zeiw|d!sL*-7PEMx!faw^YLrE{6ITzkc76ggLeMjH=g((A9Qoh^ggOzi2U1_>>EWU@RGzslOIg0!tVDH)dr*wF|E2eh@UvlRmXi2Nk^3*xE8-Uny)+rD z$LRUeW_S$B2qI9(IW+_vOZHLUXaiW&L2N0HT%2ku%v;+>Q~v0?-|`lPySPGH77ygH zTS(wwqP7R$2noP%jvx`rrx+ZTzU=>Llq}drPoz22W`c1;K`&U;1yUZ-BblH)0Cr4w z;WHPOfbH5%YdZRu6rXrA=MVlO{SsIh7nFFJenItzhp;79r+LhK?T3+`9^8NccCvE6Miv^}@@;XVHUfcc-Y`k7w&NQIuk zN_mrYsvti9{oeO5%@-;w|e*~#HWeo zv5(;#2SYvU2WLV!^+*TYnY;apbm9$dIXqb4kcZnD`jREXVvWO}r3fQMqb`5pX8a8W z02>aiuYDz3_4jD#Ry0QnBiv9zNHKLuzTF#Lc4VShwy5q2T5r6I@z@R41r&i=4R>;a zn(P_-!?;Q)iOEvZbto2z1{VONS)=kT68pYx1Bt`10tC=ED0aEt$9+)E$xx>z_&8i2 z|M1@+OVIun7&7feYUJYXiF zW@Pk+B5qv>mX<0(MA07TS(d%dF)n=nMz$9zqLg+0Eo_y*0d_wwmc&6-TjTPf1toy0 zuE>T=OSz~UU~{q*;gt}L?pWleQee^m``EPA#{Z1A4r zLg3fRlz<6U2MawBz?I(7CYRB~U#LQ+f%30-ANR?v`oDnU&v*YR&J*A7+qWB<8Trl% zEYlQfiuPd>;raX9#I_;n)sE(pn}<$9+>9=sZX6~y)I1GX6A_GMMmZE{BVt9z2ZK3& z@-WglN-Bhc0x7A_-AY$Yu_s!qWtV1JQ*@*P$&R_+Z9}S6+>ZD77p$wH*r{LcAr+3N zx6^`HCco+8zJHc&#$@Xr96!>Tk#)a6Ec2xA>&EY2f{KPAS^#o+k>CQ6*PE^YwzHQg zme*gKh4;Hz)@0jab+*w%EoaptKcE58@R|HpqkkWz>*>bGBEXI)>qQnVJm>sdK}L|S zFYia|Cf2F{fetl`Y+$4FdYI@easbVH{wwWI{^?$DG!rx>-nl_txsIYnH_^Zdy@*X% zf}VKbGk>#Hu5|bJ(`~=oDRkTHo5;RG-WbMs{Qn_M2l9g!p^1RGW49q@q~NoUk2_pe zKwLK-pGF+RdpHbxMOM|Gjs}}%J$Hr?B6Y&aO%W-(xUyqS7n(kZ{;O(b+*4Bk8$a^` zo;!ouyQM)iLtv1~M#p#)ZR#h`=8&5VI zXc}Is>om+1W_h@RB2hJs<@T@0k&xt#@}LoUmLL?BMAn0R&A;s4VtoSwu8)QJ%)Nh3 z!@h|&Nc{E8V*C;vc)q5mo#R?L;mISJ$Z`h_n8nSS6IsAf=eG|3x4|jKl!l;=sw35N z5`isxvdbh`!HP1GbZVqS07Op3?&Z^kgr6INhxlAE`CZJ|3(qdre#@!QqSO_or!s`> zxcZpkGa7uWnyUKwy~9ldSA}Fz8qWdn%cr}1-48}A`5ria)E43y`SclmKc;!8=dzgr z49!NnGcIdt8`_4zp)_Gog}1MgfmA%3K|BoSm5GzdO^o_w%wvko9Gth)F^XtdqG?sO zwgam40(_xjxrXn7^a#hI;DRn_Kw+dNZdUt_5Fwd3E87?e%w_-<#lRp}KMzgnBg3z9 z{wPN?cWQP!1l_{=U8wVS)yT%6W3#h7DXGs)}ZTwu2)!+I&B};_ZKsUDoW+ z>zfJ>Trr=Xy^wX8$`Nq-UJC2#QWhjv-#mZf$R7erf3iy(-xtLJj(z3Q;q)v02VE#H)zF7>ExEHoBmtF3TpT>y$8HwH&1Ty71W!i5I zpJghu@$YM@M)z)G)|(xRghl(3!ln)Q!XZZdY?Amv!UHZ1L%mG|dkB`~C_qX8OV9lg z(x^mKzXQh8{4{Ynt?gK=yyF6cVC#^F{+D)Pc`JqE!6T7;%*geJn^ji94vqEsDKw!g zAXgOZ?d9cAu+-~HWbxYm`i)YU!(*1zf*MO2lN^;?wgoN5|=Dy zfyzv>Y+45EGnTVqCTV5`wbsX6dqKJDw;pGM`darE_-J@V06sK*SQR(L)kDh#0)wyH z`Yl`-D$NK1nfwS2DMNH>T&*5}Oo3@XQ72Fg7KMNjChK6IZ#=YmX*e$51dhx<5>$n% zwNcjE2z1Foa;Gw6Ce@1mArR7!(iTc}=J8ESB^3%jwUEs=S6GCZ01QQK$3{b(F9k4V z=TV_-)e;3E1A(%AmSi)~jkp#EbK(q(%0DZXzb(#-h@~?qrHduo!6BM#05kxkzse!u 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

  • *}HtAb(( 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 SV1efxD{VXT@V9Lu?N+Q< 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%0D$X(eJ{;%&@Bd`trx8p1_s6ClM7 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

    6_v>_Q3^-V6HqLd$SZW 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�`2&s=8ZD-Jvf?5P`C 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

    Navigation

    Index

    - C + P | S - | T
    -

    C

    +

    P

    @@ -79,17 +78,7 @@

    S

    -
    center (built-in class), [1] +
    python (built-in class)
    -
    -
    small (built-in class), [1], [2], [3] -
    - -
    - -

    T

    - - diff --git a/html/index.html b/html/index.html index b00df1c8..e35aed04 100644 --- a/html/index.html +++ b/html/index.html @@ -86,6 +86,7 @@

    Internet Programming with PythonSession 04
  • Session 05
  • Session 06
  • +
  • Session 07
  • Supplementary Course Readings
      diff --git a/html/objects.inv b/html/objects.inv index dfc65ed9188eda157313bf671f59f5e7046f1aa1..1332a20d805ad21f82c0624f1c9496e0da0e6edb 100644 GIT binary patch delta 127 zcmV-_0D%9Q0+s@ho_JN<&JA1$f(MW|4V_Aw3{3^+_KvhJ1UGJ9-s2~0ND}A?R>Qz} zBL;tfdGWa)c2mu~fs=*@6CB^jMUo%UhxVeWMp(w_TWqXrmnNJslCzA=>-aD-n!)-< hAtR|+lZx%b9VO~DNiEvyEqFICbyE4adI7?BSK>ZXJKO*O delta 130 zcmV-|0Db?K0+|Ako_p1CCCm+62!bbwZI~&fsWcUw+uNaaA-I`c`2RhAV)8*ey+Ml~ z86U)8Pw-r9?8RX&k#}%S{>22BH8K;)AL*NRqoGQe-TVu-tYh~E+;AeJ5t-}w=onR@ k{*g&Z3YL&Wk4mcb7|u=IgEg+Uls73Q$g)ZJ0EdQU)7a-fumAu6 diff --git a/html/outline.html b/html/outline.html index fb7981b3..8b6db705 100644 --- a/html/outline.html +++ b/html/outline.html @@ -196,18 +196,21 @@

      Session 7 - APIs and Mashups

      References¶

      Preparation for Session 8¶

      Please walk through this tutorial before session 8 begins.

      @@ -218,7 +221,7 @@

      Session 8 - Basic Django

      We’ll be learning about the Django ORM and how Django Models can help shield developers from much of the complexity of SQL.

      -

      During the week leading up to this session, we’ll get started building a +

      During the week leading up to this session, we’ll get started building a blog app in Django. We’ll learn how to use the tools Django provides to explore and interact with your models while designing them. We’ll also get a brief introduction to the Django admin, Django’s killer feature.

      diff --git a/html/presentations/django_intro.html b/html/presentations/django_intro.html new file mode 100644 index 00000000..a597232d --- /dev/null +++ b/html/presentations/django_intro.html @@ -0,0 +1,978 @@ + + + + + + + + An Introduction To Django — Internet Programming with Python + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      +
      +
      + +
      +

      An Introduction To Django¶

      +

      In this tutorial, you’ll walk through creating a very simple microblog +application using Django.

      +
      +

      Practice Safe Development¶

      +

      We’ll install Django and any other packages we use with it in a virtualenv.

      +

      This will ensure that it is isolated from everything else we do in class +(and vice versa)

      +

      Remember the basic format for creating a virtualenv:

      +
      $ python virtualenv.py [options] <ENV>
      +<or>
      +$ virtualenv [options] <ENV>
      +
      +
      +
      +

      Set Up a VirtualEnv¶

      +

      Start by creating your virtualenv:

      +
      $ python virtualenv.py djangoenv
      +<or>
      +$ virtualenv djangoenv
      +...
      +
      +
      +

      Then, activate it:

      +
      $ source djangoenv/bin/activate
      +<or>
      +C:\> djangoenv\Scripts\activate
      +
      +
      +
      +
      +

      Install Django¶

      +

      Finally, install Django 1.7.4 using pip:

      +
      (djangoenv)$ pip install Django==1.7.4
      +Downloading/unpacking Django==1.7.4
      +  Downloading Django-1.7.4-py2.py3-none-any.whl (7.4MB): 7.4MB downloaded
      +Installing collected packages: django
      +Successfully installed django
      +Cleaning up...
      +(djangoenv)$
      +
      +
      +
      +
      +
      +

      Our Project¶

      +

      Everything in Django stems from the project. To get started learning, we’ll +create one. We’ll use a script installed by Django, django-admin.py:

      +
      (djangoenv)$ django-admin.py startproject mysite
      +
      +
      +

      This will create a folder called ‘mysite’. The folder contains the following +structure:

      +
      mysite
      +├── manage.py
      +└── mysite
      +    ├── __init__.py
      +    ├── settings.py
      +    ├── urls.py
      +    └── wsgi.py
      +
      +
      +

      If what you see doesn’t match that, you’re using an older version of Django. +Make sure you’ve installed 1.7.4

      +
      +

      What Got Created¶

      +
        +
      • outer *mysite* folder: this is just a container and can be renamed or +moved at will
      • +
      • inner *mysite* folder: this is your project directory. It should not be +renamed.
      • +
      • __init__.py: magic file that makes mysite a python package.
      • +
      • settings.py: file which holds configuration for your project, more soon.
      • +
      • urls.py: file which holds top-level URL configuration for your project, +more soon.
      • +
      • wsgi.py: binds a wsgi application created from your project to the +symbol application
      • +
      • manage.py: a management control script.
      • +
      +

      django-admin.py provides a hook for administrative tasks and abilities:

      +
        +
      • creating a new project or app
      • +
      • running the development server
      • +
      • executing tests
      • +
      • entering a python interpreter
      • +
      • entering a database shell session with your database
      • +
      • much much more (run django-admin.py without an argument)
      • +
      +

      manage.py wraps this functionality, adding the full environment of your +project.

      +
      +
      +

      How manage.py Works¶

      +

      Look in the manage.py script Django created for you. You’ll see this:

      +
      #!/usr/bin/env python
      +import os
      +import sys
      +
      +if __name__ == "__main__":
      +    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
      +
      +    from django.core.management import execute_from_command_line
      +
      +    execute_from_command_line(sys.argv)
      +
      +
      +

      The environmental var DJANGO_SETTINGS_MODULE is how the manage.py +script is made aware of your project’s environment. This is why you shouldn’t +rename the project package.

      +
      +
      +

      Development Server¶

      +

      At this point, you should be ready to use the development server:

      +
      (djangoenv)$ cd mysite
      +(djangoenv)$ python manage.py runserver
      +...
      +
      +
      +

      You’ll see a scary warning about unapplied migrations. Ignore it for a moment. +Instead, load http://localhost:8000 in your browser. You should see this:

      +
      +../_images/django-start.png +
      +

      Do you?

      +
      +
      +

      Connecting A Database¶

      +

      Django supplies its own ORM (Object-Relational Mapper). This ORM sits on top of +the DB-API implementation you choose. You must provide connection information +through Django configuration.

      +

      All Django configuration takes place in settings.py in your project +folder.

      +

      Edit your settings.py to match:

      +
      DATABASES = {
      +    'default': {
      +        'ENGINE': 'django.db.backends.sqlite3',
      +        'NAME': 'mysite.db',
      +    }
      +}
      +
      +
      +

      There are other database settings, but they are not used with sqlite3, we’ll +ignore them for now.

      +

      Django’s ORM provides a layer of abstraction between you and SQL. You write +Python classes called models describing the objects that make up your system. +The ORM handles converting data from these objects into SQL statements (and +back). We’ll learn much more about this in a bit.

      +

      The final step in preparing to work is to set up the database. You do this by +running migrations. These migrations create the tables needed to support the +models that are required by Django out of the box.

      +

      Run the following command:

      +
      (djangoenv)$ python manage.py migrate
      +Operations to perform:
      +  Apply all migrations: admin, contenttypes, auth, sessions
      +Running migrations:
      +  Applying contenttypes.0001_initial... OK
      +  Applying auth.0001_initial... OK
      +  Applying admin.0001_initial... OK
      +  Applying sessions.0001_initial... OK
      +
      +
      +

      Great! Now we can set up an initial user who’ll be able to do anything, a +superuser. Again, we’ll use manage.py:

      +
      (djangoenv)$ python manage.py createsuperuser
      +Username (leave blank to use 'cewing'):
      +Email address: cris@crisewing.com
      +Password:
      +Password (again):
      +Superuser created successfully.
      +
      +
      +

      Notice that as you type your password, it will not appear on the screen. Don’t +worry, it’s actually being recorded. You just can’t see it (and neither can +than snoopy git looking over your shoulder).

      +
      +
      +
      +

      Projects and Apps¶

      +

      We’ve created a Django project. In Django a project represents a whole +website:

      +
        +
      • global configuration settings
      • +
      • inclusion points for additional functionality
      • +
      • master list of URL endpoints
      • +
      +

      A Django app encapsulates a unit of functionality:

      +
        +
      • A blog section
      • +
      • A discussion forum
      • +
      • A content tagging system
      • +
      +
      +

      Important

      +

      One project can (and likely will) consist of many apps

      +
      +

      Django already includes some apps for you.

      +
      +

      They’re in settings.py in the INSTALLED_APPS setting:

      +
      INSTALLED_APPS = (
      +    'django.contrib.admin',
      +    'django.contrib.auth',
      +    'django.contrib.contenttypes',
      +    'django.contrib.sessions',
      +    'django.contrib.messages',
      +    'django.contrib.staticfiles',
      +)
      +
      +
      +
      +
      +

      Our Class App¶

      +

      We are going to build an app to add to our project. To start with our app +will be a simple blog. As stated above, an app represents a unit within a +system, the project. We have a project, we need to create an app

      +

      This is accomplished using manage.py. In your terminal, make sure you are +in the outer mysite directory, where the file manage.py is located. +Then:

      +
      (djangoenv)$ python manage.py startapp myblog
      +
      +
      +

      This should leave you with the following structure:

      +
      +
      +class small¶
      +
      + +
      mysite
      +├── db.sqlite3
      +├── manage.py
      +├── myblog
      +│   ├── __init__.py
      +│   ├── admin.py
      +│   ├── migrations
      +│   │   └── __init__.py
      +│   ├── models.py
      +│   ├── tests.py
      +│   └── views.py
      +└── mysite
      +    ├── __init__.py
      +    ├── settings.py
      +    ├── urls.py
      +    └── wsgi.py
      +
      +
      +

      Like our Pyramid site, Django divides up functionality by module. You’ll create +ORM model classes in the models.py file, view code in the views.py +file, and so on.

      +

      We’ll start by defining the main Python class for our blog system, a Post.

      +
      +
      +

      Django Models¶

      +

      Any Python class in Django that is meant to be persisted must inherit from +the Django Model class. This base class hooks in to the ORM functionality +converting Python code to SQL. You can override methods from the base Model +class to alter how this works or write new methods to add functionality.

      +

      Learn more about models

      +
      +
      +

      Our Post Model¶

      +

      Open the models.py file created in our myblog package. Add the +following:

      +
      from django.db import models #<-- This is already in the file
      +from django.contrib.auth.models import User
      +
      +class Post(models.Model):
      +    title = models.CharField(max_length=128)
      +    text = models.TextField(blank=True)
      +    author = models.ForeignKey(User)
      +    created_date = models.DateTimeField(auto_now_add=True)
      +    modified_date = models.DateTimeField(auto_now=True)
      +    published_date = models.DateTimeField(blank=True, null=True)
      +
      +
      +

      This code defines a subclass of the Django Model class and added a bunch of +attributes.

      +
        +
      • These attributes are all instances of Field classes defined in Django
      • +
      • Field attributes on a model map to columns in a database table
      • +
      • The arguments you provide to each Field customize how it works
          +
        • This means both how it operates in Django and how it is defined in SQL
        • +
        +
      • +
      • There are arguments shared by all Field types
      • +
      • There are also arguments specific to individual types
      • +
      +

      You can read much more about +Model Fields and options

      +

      There are some features of our fields worth mentioning in specific. Notice we +have no field that is designated as the primary key

      +
        +
      • You can make a field the primary key by adding primary_key=True in the +arguments
      • +
      • If you do not, Django will automatically create one. This field is always +called id
      • +
      • No matter what the primary key field is called, its value is always +available on a model instance as the pk attribute: instance.pk
      • +
      +
      +
      +

      Field Details¶

      +
      title = models.CharField(max_length=128)
      +
      +
      +
        +
      • The required max_length argument is specific to CharField fields.
      • +
      • It affects both the Python and SQL behavior of a field.
      • +
      • In python, it is used to validate supplied values during model validation
      • +
      • In SQL it is used in the column definition: VARCHAR(128)
      • +
      +
      author = models.ForeignKey(User)
      +
      +
      +
        +
      • Django also models SQL relationships as specific field types.
      • +
      • The required positional argument is the class of the related Model.
      • +
      • By default, the reverse relation is implemented as the attribute +<fieldname>_set.
      • +
      • You can override this by providing the related_name argument.
      • +
      +
      created_date = models.DateTimeField(auto_now_add=True)
      +modified_date = models.DateTimeField(auto_now=True)
      +
      +
      +
        +
      • auto_now_add is available on all date and time fields. It sets the value +of the field to now when an instance is first saved.
      • +
      • auto_now is similar, but sets the value anew each time an instance is +saved.
      • +
      • Setting either of these will cause the editable attribute of a field to +be set to False.
      • +
      • This does not mean you can’t update these values, only that they will not +show in forms by default.
      • +
      +
      text = models.TextField(blank=True)
      +# ...
      +published_date = models.DateTimeField(blank=True, null=True)
      +
      +
      +
        +
      • The argument blank is shared across all field types. The default is +False
      • +
      • This argument affects only the Python behavior of a field, determining if the +field is required
      • +
      • The related null argument affects the SQL definition of a field: is the +column NULL or NOT NULL
      • +
      +
      +
      +

      Installing Apps¶

      +

      In order to use our new model, we need Django to know about our app. This is +accomplished by configuration in the settings.py file. Open that file now, +in your editor, and find the INSTALLED_APPS setting.

      +

      You extend Django functionality by installing apps. This is pretty simple:

      +
      INSTALLED_APPS = (
      +    'django.contrib.admin',
      +    'django.contrib.auth',
      +    'django.contrib.contenttypes',
      +    'django.contrib.sessions',
      +    'django.contrib.messages',
      +    'django.contrib.staticfiles',
      +    'myblog', # <- YOU ADD THIS PART
      +)
      +
      +
      +

      Once Django is made aware of the existence of this new app, it can make a new +migration that will set up the tables for this new class automatically.

      +
      (djangoenv)$ python manage.py makemigrations myblog
      +Migrations for 'myblog':
      +  0001_initial.py:
      +    - Create model Post
      +
      +
      +

      And now you can run that migration to make the changes to your database:

      +
      (djangoenv)$ python manage.py migrate
      +Operations to perform:
      +  Apply all migrations: admin, myblog, contenttypes, auth, sessions
      +Running migrations:
      +  Applying myblog.0001_initial... OK
      +
      +
      +
      +
      +
      +

      The Django Shell¶

      +

      Django provides a management command shell:

      +
        +
      • Shares the same sys.path as your project, so all installed python +packages are present.
      • +
      • Imports the settings.py file from your project, and so shares all +installed apps and other settings.
      • +
      • Handles connections to your database, so you can interact with live data +directly.
      • +
      +

      Let’s explore the Model Instance API directly using this shell:

      +
      (djangoenv)$ python manage.py shell
      +
      +
      +

      Instances of our model can be created by simple instantiation:

      +
      >>> from myblog.models import Post
      +>>> p1 = Post(title="My first post",
      +...           text="This is the first post I've written")
      +>>> p1
      +<Post: Post object>
      +
      +
      +

      We can also validate that our new object is okay before we try to save it:

      +
      >>> p1.full_clean()
      +Traceback (most recent call last):
      +  ...
      +ValidationError: {'author': [u'This field cannot be null.']}
      +
      +
      +
      +

      Django Model Managers¶

      +

      We have to hook our Post to an author, which must be a User. To do +this, we need to have an instance of the User class. We can use the +User model manager to run table-level operations like SELECT.

      +

      All Django models have a manager. By default it is accessed through the +objects class attribute.

      +

      Let’s use the manager to get an instance of the User class:

      +
      >>> from django.contrib.auth.models import User
      +>>> all_users = User.objects.all()
      +>>> all_users
      +[<User: cewing>]
      +>>> u1 = all_users[0]
      +>>> p1.author = u1
      +
      +
      +

      And now our instance should validate properly:

      +
      >>> p1.full_clean()
      +>>>
      +
      +
      +
      +
      +

      Saving New Objects¶

      +

      Our model has three date fields, two of which are supposed to be +auto-populated:

      +
      +
      +class python¶
      +
      >>> print(p1.created_date)
      +None
      +>>> print(p1.modified_date)
      +None
      +
      +
      +
      + +

      Although we’ve instantiated a Post object, it doesn’t have these values yet. +That’s because a model is not created until it’s saved into the database. +When we save our post, these fields will get values assigned:

      +
      >>> p1.save()
      +>>> p1.created_date
      +datetime.datetime(2015, 2, 15, 9, 3, 13, 719381, tzinfo=<UTC>)
      +>>> p1.modified_date
      +datetime.datetime(2015, 2, 15, 9, 3, 13, 719932, tzinfo=<UTC>)
      +
      +
      +
      +
      +

      Updating An Instance¶

      +

      Models operate much like ‘normal’ python objects. To change the value of a +field, simply set the instance attribute to a new value. Call save() to +persist the change:

      +
      >>> p1.title = p1.title + " (updated)"
      +>>> p1.save()
      +>>> p1.title
      +'My first post (updated)'
      +
      +
      +
      +
      +

      Create a Few Posts¶

      +

      Let’s create a few more posts so we can explore the Django model manager query +API:

      +
      >>> p2 = Post(title="Another post",
      +...           text="The second one created",
      +...           author=u1).save()
      +>>> p3 = Post(title="The third one",
      +...           text="With the word 'heffalump'",
      +...           author=u1).save()
      +>>> p4 = Post(title="Posters are great decoration",
      +...           text="When you are a poor college student",
      +...           author=u1).save()
      +>>> Post.objects.count()
      +4
      +
      +
      +
      +
      +

      The Django Query API¶

      +

      The manager on each model class supports a full-featured query API. API +methods take keyword arguments, where the keywords are special constructions +combining field names with field lookups. The double-underscore character +separates the name of a field from the lookup value.

      +
        +
      • title__exact=”The exact title”
      • +
      • text__contains=”decoration”
      • +
      • id__in=range(1,4)
      • +
      • published_date__lte=datetime.datetime.now()
      • +
      +

      Each keyword argument adds to the query that will be used to find matching +objects.

      +
      +
      +

      QuerySets¶

      +

      A QuerySet is a special type of object that maintains a relationship to the +database. Query API methods can be divided into two basic groups: methods that +return QuerySets and those that do not.

      +

      The former may be chained without hitting the database:

      +
      >>> a = Post.objects.all() #<-- no query yet
      +>>> b = a.filter(title__icontains="post") #<-- not yet
      +>>> c = b.exclude(text__contains="created") #<-- nope
      +>>> [(p.title, p.text) for p in c] #<-- This will issue the query
      +
      +
      +

      Conversely, the latter will issue an SQL query when executed.

      +
      >>> a.count() # immediately executes an SQL query
      +
      +
      +
      +
      +

      QuerySets and SQL¶

      +

      If you are curious, you can see the SQL that a given QuerySet will use:

      +
      >>> print(c.query)
      +SELECT "myblog_post"."id", "myblog_post"."title",
      +    "myblog_post"."text", "myblog_post"."author_id",
      +    "myblog_post"."created_date", "myblog_post"."modified_date",
      +    "myblog_post"."published_date"
      +FROM "myblog_post"
      +WHERE ("myblog_post"."title" LIKE %post% ESCAPE '\'
      +       AND NOT ("myblog_post"."text" LIKE %created% ESCAPE '\' )
      +)
      +
      +
      +

      The SQL will vary depending on which DBAPI backend you use (yay ORM!!!)

      +
      +
      +

      Exploring the QuerySet API¶

      +

      See https://docs.djangoproject.com/en/1.7/ref/models/querysets

      +
      >>> [p.pk for p in Post.objects.all().order_by('created_date')]
      +[1, 2, 3, 4]
      +>>> [p.pk for p in Post.objects.all().order_by('-created_date')]
      +[4, 3, 2, 1]
      +>>> [p.pk for p in Post.objects.filter(title__contains='post')]
      +[1, 2, 4]
      +>>> [p.pk for p in Post.objects.exclude(title__contains='post')]
      +[3]
      +>>> qs = Post.objects.exclude(title__contains='post')
      +>>> qs = qs.exclude(id__exact=3)
      +>>> [p.pk for p in qs]
      +[]
      +>>> qs = Post.objects.exclude(title__contains='post', id__exact=3)
      +>>> [p.pk for p in qs]
      +[1, 2, 3, 4]
      +
      +
      +
      +
      +

      Updating via QuerySets¶

      +

      You can update all selected objects at the same time.

      +

      Changes are persisted without needing to call save.

      +
      >>> qs = Post.objects.all()
      +>>> [p.published_date for p in qs]
      +[None, None, None, None]
      +>>> from datetime import datetime
      +>>> from django.utils.timezone import UTC
      +>>> utc = UTC()
      +>>> now = datetime.now(utc)
      +>>> qs.update(published_date=now)
      +4
      +>>> [p.published_date for p in qs]
      +[datetime.datetime(2015, 2, 15, 9, 11, 32, 214189, tzinfo=<UTC>),
      + ...]
      +
      +
      +
      +
      +
      +

      Testing Our Model¶

      +

      As with any project, we want to test our work. Django provides a testing +framework to allow this. Django supports both unit tests and doctests. I +strongly suggest using unit tests. You add tests for your app to the file +tests.py, which should be at the same package level as models.py.

      +

      Locate and open this file in your editor.

      +
      +

      Django TestCase Classes¶

      +

      SimpleTestCase is for basic unit testing with no ORM requirements

      +

      TransactionTestCase is useful if you need to test transactional +actions (commit and rollback) in the ORM

      +

      TestCase is used when you require ORM access and a test client

      +

      LiveServerTestCase launches the django server during test runs for +front-end acceptance tests.

      +

      Sometimes testing requires base data to be present. We need a User for ours. +Django provides fixtures to handle this need. Create a directory called +fixtures inside your myblog app directory. This new folder should be +adjacent to the tests.py file.

      +

      Copy the file myblog_test_fixture.json from the resources/session08 +into this directory, it contains users for our tests.

      +

      Now that we have a fixture, we need to instruct our tests to use it.

      +

      Edit tests.py to look like this:

      +
      from django.test import TestCase
      +from django.contrib.auth.models import User
      +
      +class PostTestCase(TestCase):
      +    fixtures = ['myblog_test_fixture.json', ]
      +
      +    def setUp(self):
      +        self.user = User.objects.get(pk=1)
      +
      +
      +
      +
      +

      Our First Enhancement¶

      +

      Look at the way our Post represents itself in the Django shell:

      +
      >>> [p for p in Post.objects.all()]
      +[<Post: Post object>, <Post: Post object>,
      + <Post: Post object>, <Post: Post object>]
      +
      +
      +

      Wouldn’t it be nice if the posts showed their titles instead? In Django, the +__unicode__ method is used to determine how a Model instance represents +itself. Then, calling unicode(instance) gives the desired result.

      +

      Let’s write a test that demonstrates our desired outcome:

      +
      # add this import at the top
      +from myblog.models import Post
      +
      +# and this test method to the PostTestCase
      +def test_unicode(self):
      +    expected = "This is a title"
      +    p1 = Post(title=expected)
      +    actual = unicode(p1)
      +    self.assertEqual(expected, actual)
      +
      +
      +

      To run tests, use the test management command. Without arguments, it will +run all TestCases it finds in all installed apps. You can pass the name of a +single app to focus on those tests.

      +

      Quit your Django shell and in your terminal run the test we wrote:

      +
      (djangoenv)$ python manage.py test myblog
      +
      +
      +

      We have yet to implement this enhancement, so our test should fail:

      +
      Creating test database for alias 'default'...
      +F
      +======================================================================
      +FAIL: test_unicode (myblog.tests.PostTestCase)
      +----------------------------------------------------------------------
      +Traceback (most recent call last):
      +  File "/Users/cewing/projects/training/uw_pce/training.python_web/scripts/session07/mysite/myblog/tests.py", line 15, in test_unicode
      +    self.assertEqual(expected, actual)
      +AssertionError: 'This is a title' != u'Post object'
      +
      +----------------------------------------------------------------------
      +Ran 1 test in 0.007s
      +
      +FAILED (failures=1)
      +Destroying test database for alias 'default'...
      +
      +
      +

      Let’s add an appropriate __unicode__ method to our Post class.

      +
        +
      • It will take self as its only argument
      • +
      • And it should return its own title as the result
      • +
      • Go ahead and take a stab at this in models.py
      • +
      +
      class Post(models.Model):
      +    #...
      +
      +    def __unicode__(self):
      +        return self.title
      +
      +
      +

      Re-run the tests to see if that worked:

      +
      (djangoenv)$ python manage.py test myblog
      +Creating test database for alias 'default'...
      +.
      +----------------------------------------------------------------------
      +Ran 1 test in 0.007s
      +
      +OK
      +Destroying test database for alias 'default'...
      +
      +
      +

      YIPEEEE!

      +
      +
      +

      What to Test¶

      +

      In any framework, the question arises of what to test. Much of your app’s +functionality is provided by framework tools. Does that need testing? I +usually don’t write tests covering features provided directly by the +framework. I do write tests for functionality I add, and for places where I +make changes to how the default functionality works. This is largely a matter +of style and taste (and of budget).

      +

      We’ve only begun to test our blog app. We’ll be adding many more tests later. +In between, you might want to take a look at the Django testing documentation:

      +
      +
      +
      +

      The Django Admin¶

      +

      There are some who believe that Django has been Python’s killer app. And +without doubt the Django Admin is a killer feature for Django. To demonstrate +this, we are going to set up the admin for our blog

      +

      The Django Admin is, itself, an app, installed by default (as of 1.6). Open +the settings.py file from our mysite project package and verify that +you see it in the list:

      +
      INSTALLED_APPS = (
      +    'django.contrib.admin', # <- already present
      +    # ...
      +)
      +
      +
      +

      What we need now is to allow the admin to be seen through a web browser. To do +that, we’ll have to add some URLs to our project.

      +
      +

      Django URL Resolution¶

      +

      Like Pyramid, Django has a system for dispatching requests to code: the urlconf.

      +
        +
      • A urlconf is an iterable of calls to the django.conf.urls.url function
      • +
      • This function takes:
          +
        • a regexp rule, representing the URL
        • +
        • a callable to be invoked (or a name identifying one)
        • +
        • an optional name kwarg, used to reverse the URL
        • +
        • other optional arguments we will skip for now
        • +
        +
      • +
      • The function returns a resolver that matches the request path to the +callable
      • +
      +

      I said above that a urlconf is an iterable. That iterable is generally built by +calling the django.conf.urls.patterns function. It’s best to build it that +way, but in reality, any iterable will do.

      +

      However, the name you give this iterable is not flexible. Django will load +the urlconf named urlpatterns that it finds in the file named in +settings.ROOT_URLCONF.

      +

      Many Django add-on apps, like the Django Admin, come with their own urlconf. +It is standard to include these urlconfs by rooting them at some path in your +site.

      +

      You can do this by using the django.conf.urls.include function as the +callable in a url call:

      +
      url(r'^forum/', include('random.forum.app.urls'))
      +
      +
      +
      +
      +

      Including the Admin¶

      +

      We can use this to add all the URLs provided by the Django admin in one +stroke.

      +
      +

      verify the following lines in urls.py:

      +
      from django.contrib import admin # <- should be present already
      +
      +urlpatterns = patterns('',
      +    ...
      +    url(r'^admin/', include(admin.site.urls)), #<- this should be too
      +)
      +
      +
      +
      +

      We can now view the admin. We’ll use the Django development server.

      +

      In your terminal, use the runserver management command to start the +development server:

      +
      (djangoenv)$ python manage.py runserver
      +Validating models...
      +
      +0 errors found
      +Django version 1.4.3, using settings 'mysite.settings'
      +Development server is running at http://127.0.0.1:8000/
      +Quit the server with CONTROL-C.
      +
      +
      +
      +
      +

      Viewing the Admin¶

      +

      Load http://localhost:8000/admin/. You should see this:

      +
      +../_images/django-admin-login.png +
      +

      Login with the name and password you created before.

      +
      +
      +

      The Admin Index¶

      +

      The index will provide a list of all the installed apps and each model +registered. You should see this:

      +../_images/admin_index.png +

      Click on Users. Find yourself? Edit yourself, but don’t uncheck +superuser.

      +
      +
      +

      Add Posts to the Admin¶

      +

      Okay, let’s add our app model to the admin. Find the admin.py file in the +myblog package. Open it, add the following and save the file:

      +
      from django.contrib import admin # <- this is already there.
      +from myblog.models import Post
      +
      +admin.site.register(Post)
      +
      +
      +

      Reload the admin index page in your browser. You should now see a listing for +the Myblog app, and an entry for Posts.

      +

      Visit the admin page for Posts. You should see the posts we created earlier in +the Django shell. Look at the listing of Posts. Because of our __unicode__ +method we see a nice title.

      +

      Are there other fields you’d like to see listed? Click on a Post, note what is +and is not shown.

      +
      +
      +

      Next Steps¶

      +

      We’ve learned a great deal about Django’s ORM and Models. We’ve also spent some +time getting to know the Query API provided by model managers and QuerySets.

      +

      We’ve also hooked up the Django Admin and noted some shortcomings.

      +

      In class we’ll learn how to put a front end on this, add new models, and +customize the admin experience.

      +
      +
      +
      + + +
      +
      +
      + +
      +
      + + + + \ No newline at end of file diff --git a/html/presentations/index.html b/html/presentations/index.html index 1883dbf9..499677e7 100644 --- a/html/presentations/index.html +++ b/html/presentations/index.html @@ -113,6 +113,13 @@

      Course PresentationsHomework

  • +
  • Session 07 +
  • diff --git a/html/presentations/session06.html b/html/presentations/session06.html index 5355e291..59686ba4 100644 --- a/html/presentations/session06.html +++ b/html/presentations/session06.html @@ -25,7 +25,7 @@ - + @@ -50,7 +50,7 @@

    Navigation

    index
  • - next |
  • Previous topic

    Session 05

    Next topic

    -

    Supplementary Course Readings

    +

    Session 07

    This Page

  • -The items we are looking for are ``p`` tags which have the CSS class -``row``: -.. rst-class:: build +.. nextslide:: Filtering By Regular Expression -``find_all`` supports keyword arguments. If the keyword you use isn't one of -the listed arguments, it is treated as an ``attribute`` +The next job is to find the inspection data we can see when we click on the +restaurant names in our page. .. rst-class:: build +.. container:: -In Python, ``class`` is a reserved word, so we can't use it as a keyword, but -you can use ``class_``! - -.. rst-class:: build small + Do you notice a pattern in how that data is structured? -:: + For each restaurant in our results, there are *two* ``
    `` tags. - parsed.find_all('p', class_='row') + The first contains the content you see at first, the second the content + that displays when we click. + What can you see that identifies these items? -Try It Out ----------- + ``
    `` and ``
    `` -Let's fire up a python interpreter and get our hands dirty here:: + Each pair shares an ID, and the stuff we want is in the second one - (soupenv)$ python + Each number is different for each restaurant -.. code-block:: python + We can use a regular expression to help us here. - >>> html = open('craigslist_results.html', 'r').read() - >>> from bs4 import BeautifulSoup - >>> parsed = BeautifulSoup(html) - >>> listings = parsed.find_all('p', class_='row') - >>> len(listings) - 100 +.. nextslide:: Getting the Information Divs +Let's write a function in ``mashup.py`` that will find all the divs in our +column with the right kind of id: .. rst-class:: build +.. container:: -That sounds about right. Let's see if we can get only those with location -data. + .. rst-class:: build + * It should match ``
    `` tags only + * It should match ids that start with ``PR`` + * It should match ids that contain some number of *digits* after that + * It should match ids that end with a *tilde* (``~``) character -Filtering Tricks ----------------- + .. code-block:: python -Attribute filters given a ``True`` value match tags with that attribute + # add an import up top + import re -.. rst-class:: build + # and add this function + def restaurant_data_generator(html): + id_finder = re.compile(r'PR[\d]+~') + return html.find_all('div', id=id_finder) -Location data was in the ``data-latitude`` and ``data-longitude`` attributes. -.. code-block:: python +.. nextslide:: Verify It Works - >>> location_attrs = { - ... 'data-longitude': True, - ... 'data-latitude': True} - >>> locatable = parsed.find_all( - ... 'p', class_='row', attrs=location_attrs) - >>> len(locatable) - 43 +Let's add that step to the *main* block at the bottom of ``mashup.py`` (only +print the first of the many divs that match): .. rst-class:: build +.. container:: -Great. That worked nicely + .. code-block:: python + html, encoding = load_inspection_page('inspection_page.html') + parsed = parse_source(html, encoding) + content_col = parsed.find("td", id="contentcol") + data_list = restaurant_data_generator(content_col) + print data_list[0].prettify() -Parsing a Row -------------- -Now that we have the rows we want, we need to parse them. We want to preserve: + Finally, test it out: -.. rst-class:: build + .. code-block:: bash + + (soupenv)$ python mashup.py +
    +
    - -
    tiny (built-in class) +
    small (built-in class)
    + ... +
    + ... +
    + + + This code is available as ``/resources/session07/mashup_2.py`` -* Location data (latitude and longitude) -* Source link (to craiglist detailed listing) -* Description text -* Price and size data + +Parsing Restaurant Data +----------------------- + +Now that we have the records we want, we need to parse them. We want to preserve: .. rst-class:: build +.. container:: -Which parts of a single row contain each of these elements? + We'll start by parsing out the information about the restaurant themselves: + .. rst-class:: build -Extracting Location -------------------- + * Name + * Address + * Location + * ... -Location data is in the ``data-`` attributes we used to filter rows. + How is this information contained in our records? -.. container:: incremental - We can read the HTML attributes of a 'tag' easily, using ``attrs``: +.. nextslide:: Complex Filtering - .. code-block:: python +Each record consists of a table with a series of *rows* (``

    KYjES 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 Z{{S^e-PDKbPrm>F002ovPDHLkV1l$Y$HV{t literal 0 HcmV?d00001 diff --git a/html/genindex.html b/html/genindex.html index aff80480..428e0b3a 100644 --- a/html/genindex.html +++ b/html/genindex.html @@ -60,16 +60,15 @@

    y( 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 z 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

  • lZwn#0r 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 z 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≠Oh-6{`E}qwZqu;;{d236*Qg& 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 FCK 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

    `` elements - Our targets are in the first ``a`` tag in the ``pl`` span inside our row: + My solution: .. code-block:: python - >>> link = row1.find('span', class_='pl').find('a') + def has_two_tds(elem): + is_tr = elem.name == 'tr' + td_children = elem.find_all('td', recursive=False) + has_two = len(td_children) == 2 + return is_tr and has_two -.. container:: incremental +.. nextslide:: Test It Out - The link path will be in the attrs: +Let's try this out in an interpreter: - .. code-block:: python +.. code-block:: pycon - >>> path = link.attrs['href'] + >>> from mashup import load_inspection_page, parse_source + >>> from mashup import restaurant_data_generator, has_two_tds + >>> html, encoding = load_inspection_page('inspection_page.html') + >>> parsed = parse_source(html, encoding) + >>> content_col = parsed.find("td", id="contentcol") + >>> records = restaurant_data_generator(content_col) + >>> rec = records[4] -.. container:: incremental +.. nextslide:: Test It Out - Text contained *inside* tags is in the ``string`` property: +We'd like to find all table rows in that div that contain *two* cells - .. code-block:: python +.. rst-class:: build +.. container:: - >>> description = link.string.strip() + The table rows are all contained in a ``
    + - Business Name + + WORLD FRESH MARKET +
    `` children + * The text in the first cell contains the word "inspection" + * But the text does not *start* with the word "inspection" + + Let's try to write a filter function like the one above that will catch + these rows for us. -* Extracts all the locatable listings from our html page -* Iterates over each of them, and builds a dictionary of data - - * include ``location``, ``href``, ``description``, ``price`` and ``size`` +.. nextslide:: The filter -* Returns a list of these dictionaries +Add this new function ``is_inspection_data_row`` to ``mashup.py`` .. rst-class:: build +.. code-block:: python + + def is_inspection_data_row(elem): + is_tr = elem.name == 'tr' + if not is_tr: + return False + td_children = elem.find_all('td', recursive=False) + has_four = len(td_children) == 4 + this_text = clean_data(td_children[0]).lower() + contains_word = 'inspection' in this_text + does_not_start = not this_text.startswith('inspection') + return is_tr and has_four and contains_word and does_not_start -Call it ``extract_listings`` +.. nextslide:: Test It Out + +We can test this function by adding it into our script: + +.. code-block:: python + + for data_div in data_list: + metadata = extract_restaurant_metadata(data_div) + # UPDATE THIS BELOW HERE + inspection_rows = data_div.find_all(is_inspection_data_row) + print metadata + print len(inspection_rows) + print '*'*10 .. rst-class:: build +.. container:: -Put this new function into ``mashup.py`` and call it from ``__main__``, -printing the result + And try running the script in your terminal: + .. code-block:: bash + + (soupenv)$ python mashup.py + {u'Business Category': [u'Seating 0-12 - Risk Category III'], + u'Longitude': [u'122.3401786000'], u'Phone': [u'(206) 501-9554'], + u'Business Name': [u"ZACCAGNI'S"], u'Address': [u'97B PIKE ST', u'SEATTLE, WA 98101'], + u'Latitude': [u'47.6086651300']} + 0 + ********** -Break Time ----------- +.. nextslide:: Building Inspection Data -Once you have this working, take a break. +Now we can isolate a list of the rows that contain inspection data. .. rst-class:: build +.. container:: -When we return, we'll try a saner approach to getting data from online + Next we need to calculate the average score, total number and highest score + for each restaurant. -.. container:: incremental + Let's add a function to ``mashup.py`` that will: - While you have a moment, sign up for an API key from this service: + .. rst-class:: build - http://www.walkscore.com/professional/api.php + * Take a div containing a restaurant record + * Extract the rows containing inspection data + * Keep track of the highest score recorded + * Sum the total of all inspections + * Count the number of inspections made + * Calculate the average score for inspections + * Return the three calculated values in a dictionary +.. nextslide:: My Solution -My Solution ------------ +Try writing this routine yourself. .. code-block:: python - def extract_listings(doc): - location_attrs = {'data-latitude': True, - 'data-longitude': True} - for row in doc.find_all('p', class_='row', - attrs=location_attrs): - location = dict( - [(key, row.attrs.get(key)) for key in location_attrs]) - link = row.find('span', class_='pl').find('a') - price_span = row.find('span', class_='price') - listing = { - 'location': location, - 'href': link.attrs['href'], - 'description': link.string.strip(), - 'price': price_span.string.strip(), - 'size': price_span.next_sibling.strip(' \n-/') - } - yield listing + def get_score_data(elem): + inspection_rows = elem.find_all(is_inspection_data_row) + samples = len(inspection_rows) + total = high_score = average = 0 + for row in inspection_rows: + strval = clean_data(row.find_all('td')[2]) + try: + intval = int(strval) + except (ValueError, TypeError): + samples -= 1 + else: + total += intval + high_score = intval if intval > high_score else high_score + if samples: + average = total/float(samples) + return {u'Average Score': average, u'High Score': high_score, + u'Total Inspections': samples} + +.. nextslide:: Test It Out + +We can now incorporate this new routine into our ``mashup`` script. +.. rst-class:: build +.. container:: -My Solution ------------ + We'll want to add the data it produces to the metadata we've already + extracted. -.. code-block:: python + .. code-block:: python + + for data_div in data_list: + metadata = extract_restaurant_metadata(data_div) + inspection_data = get_score_data(data_div) + metadata.update(inspection_data) + print metadata + + And test it out at the command line: + + .. code-block:: bash + + (soupenv)$ python mashup.py + ... + {u'Business Category': [u'Seating 0-12 - Risk Category III'], + u'Longitude': [u'122.3401786000'], u'High Score': 0, + u'Phone': [u'(206) 501-9554'], u'Business Name': [u"ZACCAGNI'S"], + u'Total Inspections': 0, u'Address': [u'97B PIKE ST', u'SEATTLE, WA 98101'], + u'Latitude': [u'47.6086651300'], u'Average Score': 0} + +Break Time +---------- + +Once you have this working, take a break. + +When we return, we'll try a saner approach to getting data from online - if __name__ == '__main__': - html, encoding = fetch_search_results( - minAsk=500, maxAsk=1000, bedrooms=2 - ) - doc = parse_source(html, encoding) - for listing in extract_listings(doc): - print listing Another Approach ----------------- +================ -Scraping web pages is tedious and inherently brittle +.. rst-class:: left +.. container:: -.. rst-class:: build + Scraping web pages is tedious and inherently brittle -The owner of the website updates their layout, your code breaks + .. rst-class:: build + .. container:: -.. rst-class:: build + The owner of the website updates their layout, your code breaks -But there is another way to get information from the web in a more normalized -fashion + But there is another way to get information from the web in a more normalized + fashion -.. rst-class:: build center + .. rst-class:: centered -**Web Services** + **Web Services** Web Services @@ -852,35 +1127,33 @@ interaction over a network" - W3C * returns structured data -Early Web Services ------------------- +.. nextslide:: Early Web Services RSS is one of the earliest forms of Web Services -* First known as ``RDF Site Summary`` -* Became ``Really Simple Syndication`` -* More at http://www.rss-specification.com/rss-specifications.htm - .. rst-class:: build +.. container:: -A single web-based *endpoint* provides a dynamically updated listing of -content + .. rst-class:: build -.. rst-class:: build + * First known as ``RDF Site Summary`` + * Became ``Really Simple Syndication`` + * More at http://www.rss-specification.com/rss-specifications.htm -Implemented in pure HTTP. Returns XML + A single web-based *endpoint* provides a dynamically updated listing of + content -.. rst-class:: build + Implemented in pure HTTP. Returns XML -**Atom** is a competing, but similar standard + **Atom** is a competing, but similar standard + There's a solid Python library for consuming RSS: `feedparser`_. -RSS Document ------------- +.. _feedparser: https://pythonhosted.org/feedparser/ -.. class:: tiny +.. nextslide:: RSS Document -:: +.. code-block:: xml @@ -903,51 +1176,51 @@ RSS Document - -XML-RPC -------- +.. nextslide:: XML-RPC RSS provides a pre-defined data set, can we also allow *calling procedures* to get more dynamic data? .. rst-class:: build +.. container:: -We can! Enter XML-RPC (Remote Procedure Call) + We can! Enter XML-RPC (Remote Procedure Call) -.. rst-class:: build + .. rst-class:: build -* Provides a set of defined procedures which can take arguments -* Calls are made via HTTP GET, by passing an XML document -* Returns from a call are sent to the client in XML + * Provides a set of defined procedures which can take arguments + * Calls are made via HTTP GET, by passing an XML document + * Returns from a call are sent to the client in XML -.. rst-class:: build + In python, you can access XML-RPC services using `xmlrpclib`_ from the + standard library -There is an interactive example of this at the end of this session. We will -not go through it here, though. + We will not cover XML-RPC here, though. +.. _xmlrpclib: https://docs.python.org/2/library/xmlrpclib.html -Beyond XML-RPC --------------- +.. nextslide:: Beyond XML-RPC .. rst-class:: build +.. container:: -* XML-RPC allows introspection -* XML-RPC forces you to introspect to get information -* **Wouldn't it be nice to get that automatically?** -* XML-RPC provides data types -* XML-RPC provides only *certain* data types -* **Wouldn't it be nice to have an extensible system for types?** -* XML-RPC allows calling methods with parameters -* XML-RPC only allows calling methods, nothing else -* **wouldn't it be nice to have contextual data as well?** + .. rst-class:: build -.. rst-class:: build center + * XML-RPC allows introspection + * XML-RPC forces you to introspect to get information + * **Wouldn't it be nice to get that automatically?** + * XML-RPC provides data types + * XML-RPC provides only *certain* data types + * **Wouldn't it be nice to have an extensible system for types?** + * XML-RPC allows calling methods with parameters + * XML-RPC only allows calling methods, nothing else + * **wouldn't it be nice to have contextual data as well?** -**Enter SOAP: Simple Object Access Protocol** + .. rst-class:: centered + **Enter SOAP: Simple Object Access Protocol** -SOAP ----- +.. nextslide:: SOAP SOAP extends XML-RPC in a couple of useful ways: @@ -964,46 +1237,41 @@ SOAP extends XML-RPC in a couple of useful ways: by the application -SOAP in Python --------------- +.. nextslide:: SOAP in Python There is no standard library module that supports SOAP directly. .. rst-class:: build +.. container:: -* The best-known and best-supported module available is **Suds** -* The homepage is https://fedorahosted.org/suds/ -* It can be installed using ``easy_install`` or ``pip install`` - -.. rst-class:: build - -Again, there is a good example of using SOAP via the ``suds`` library at the -end of this session. - -.. rst-class:: build + .. rst-class:: build -But we're going to move on + * The best-known and best-supported module available is **Suds** + * The homepage is https://fedorahosted.org/suds/ + * It can be installed using ``easy_install`` or ``pip install`` + But we're going to move on -Afterword ---------- +.. nextslide:: Afterword SOAP (and XML-RPC) have some problems: .. rst-class:: build +.. container:: -* XML is pretty damned inefficient as a data transfer medium -* Why should I need to know method names? -* If I can discover method names at all, I have to read a WSDL to do it? + .. rst-class:: build -.. rst-class:: build + * XML is pretty damned inefficient as a data transfer medium + * Why should I need to know method names? + * If I can discover method names at all, I have to read a WSDL to do it? -Suds is the best we have, and it hasn't been updated since Sept. 2010. + Suds is the best we have, and it hasn't been updated since Sept. 2010. -If Not XML, Then What? ----------------------- + There appear to be maintenance forks of Suds, but they are sketchy. -.. rst-class:: large centered incremental +.. nextslide:: If Not XML, Then What? + +.. rst-class:: build large centered **JSON** @@ -1014,66 +1282,70 @@ JSON JavaScript Object Notation: .. rst-class:: build +.. container:: -* a lightweight data-interchange format -* easy for humans to read and write -* easy for machines to parse and generate - -.. rst-class:: build + .. rst-class:: build -Based on Two Structures: + * a lightweight data-interchange format + * easy for humans to read and write + * easy for machines to parse and generate -.. rst-class:: build + Based on Two Structures: -* object: ``{ string: value, ...}`` -* array: ``[value, value, ]`` + * object: ``{ string: value, ...}`` + * array: ``[value, value, ]`` -.. class:: center incremental + .. rst-class:: centered -pythonic, no? + pythonic, no? -JSON Data Types ---------------- +.. nextslide:: JSON Data Types JSON provides a few basic data types (see http://json.org/): .. rst-class:: build +.. container:: -* string: unicode, anything but ", \\ and control characters -* number: any number, but json does not use octal or hexadecimal -* object, array (we've seen these above) -* true -* false -* null + .. rst-class:: build -.. rst-class:: build center + * string: unicode, anything but ", \\ and control characters + * number: any number, but json does not use octal or hexadecimal + * object, array (we've seen these above) + * true + * false + * null -**No date type? OMGWTF??!!1!1** + .. rst-class:: centered + **No date type? OMGWTF??!!1!1** -Dates in JSON -------------- +.. nextslide:: Dates in JSON + +You have two options: .. rst-class:: build +.. container:: -Option 1 - Unix Epoch Time (number): + .. container:: -.. code-block:: python + Option 1 - Unix Epoch Time (number): - >>> import time - >>> time.time() - 1358212616.7691269 + .. code-block:: python -.. rst-class:: build + >>> import time + >>> time.time() + 1358212616.7691269 -Option 2 - ISO 8661 (string): + .. container:: -.. code-block:: python + Option 2 - ISO 8661 (string): - >>> import datetime - >>> datetime.datetime.now().isoformat() - '2013-01-14T17:18:10.727240' + .. code-block:: python + + >>> import datetime + >>> datetime.datetime.now().isoformat() + '2013-01-14T17:18:10.727240' JSON in Python @@ -1081,107 +1353,99 @@ JSON in Python You can encode python to json, and decode json back to python: -.. code-block:: python - - >>> import json - >>> array = [1,2,3] - >>> json.dumps(array) - >>> '[1, 2, 3]' - >>> orig = {'foo': [1,2,3], 'bar': u'my resumé', 'baz': True} - >>> encoded = json.dumps(orig) - >>> encoded - '{"baz": true, "foo": [1, 2, 3], "bar": "my resum\\u00e9"}' - >>> decoded = json.loads(encoded) - >>> decoded == orig - True - .. rst-class:: build +.. container:: -Customizing the encoder or decoder class allows for specialized serializations + .. code-block:: python + >>> import json + >>> array = [1,2,3] + >>> json.dumps(array) + >>> '[1, 2, 3]' + >>> orig = {'foo': [1,2,3], 'bar': u'my resumé', 'baz': True} + >>> encoded = json.dumps(orig) + >>> encoded + '{"baz": true, "foo": [1, 2, 3], "bar": "my resum\\u00e9"}' + >>> decoded = json.loads(encoded) + >>> decoded == orig + True -JSON in Python --------------- + Customizing the encoder or decoder class allows for specialized serializations -the json module also supports reading and writing to *file-like objects* via -``json.dump(fp)`` and ``json.load(fp)`` (note the missing 's') -.. rst-class:: build +.. nextslide:: -Remember duck-typing. Anything with a ``.write`` and a ``.read`` method is -*file-like* +the json module also supports reading and writing to *file-like objects* via +``json.dump(fp)`` and ``json.load(fp)`` (note the missing 's') .. rst-class:: build +.. container:: -This usage can be much more memory-friendly with large files/sources + Remember duck-typing. Anything with a ``.write`` and a ``.read`` method is + *file-like* + This usage can be much more memory-friendly with large files/sources -What about WSDL? ----------------- +.. nextslide:: What about WSDL? SOAP was invented in part to provide completely machine-readable interoperability. .. rst-class:: build +.. container:: -Does that really work in real life? - -.. rst-class:: build center - -Hardly ever - + *Does that really work in real life?* -What about WSDL? ----------------- + .. rst-class:: centered -Another reason was to provide extensibility via custom types + Hardly ever -.. rst-class:: build + Another reason was to provide extensibility via custom types -Does that really work in real life? + *Does that really work in real life?* -.. rst-class:: build center + .. rst-class:: centered -Hardly ever + Hardly ever - -Why Do All The Work? --------------------- +.. nextslide:: Why Do All The Work? So, if neither of these goals is really achieved by using SOAP, why pay all the overhead required to use the protocol? .. rst-class:: build +.. container:: -Enter REST + Is there another way we could consider approaching the problem? + + .. rst-class:: centered + + **Enter REST** REST ---- -.. class:: center +.. rst-class:: centered -Representational State Transfer +**Representational State Transfer** .. rst-class:: build +.. container:: -* Originally described by Roy T. Fielding (worth reading) -* Use HTTP for what it can do -* Read more in `this book - `_\* - -.. class:: image-credit incremental + .. rst-class:: build -\* Seriously. Buy it and read -(`_\* + \* Seriously. Buy it and read it -A Comparison ------------- +.. nextslide:: A Comparison The XML-RCP/SOAP way: -.. rst-class:: build small +.. rst-class:: build * POST /getComment HTTP/1.1 * POST /getComments HTTP/1.1 @@ -1190,446 +1454,506 @@ The XML-RCP/SOAP way: * POST /deleteComment HTTP/1.1 .. rst-class:: build +.. container:: -The RESTful way: + The RESTful way: -.. rst-class:: build small + .. rst-class:: build -* GET /comment/ HTTP/1.1 -* GET /comment HTTP/1.1 -* POST /comment HTTP/1.1 -* PUT /comment/ HTTP/1.1 -* DELETE /comment/ HTTP/1.1 + * GET /comment/ HTTP/1.1 + * GET /comment HTTP/1.1 + * POST /comment HTTP/1.1 + * PUT /comment/ HTTP/1.1 + * DELETE /comment/ HTTP/1.1 -ROA ---- +.. nextslide:: ROA -This is **Resource Oriented Architecture** +REST is a **Resource Oriented Architecture** .. rst-class:: build +.. container:: -The URL represents the *resource* we are working with + The URL represents the *resource* we are working with -.. rst-class:: build + The HTTP Method indicates the ``action`` to be taken -The HTTP Method represents the ``action`` to be taken + The HTTP Code returned tells us the ``result`` (whether success or failure) + +.. nextslide:: HTTP Codes Revisited .. rst-class:: build +.. container:: -The HTTP Code returned tells us the ``result`` (whether success or failure) + POST /comment HTTP/1.1 (creating a new comment): + .. rst-class:: build -HTTP Codes Revisited --------------------- + * Success: ``HTTP/1.1 201 Created`` + * Failure (unauthorized): ``HTTP/1.1 401 Unauthorized`` + * Failure (NotImplemented): ``HTTP/1.1 405 Not Allowed`` + * Failure (ValueError): ``HTTP/1.1 406 Not Acceptable`` -.. class:: small + PUT /comment/ HTTP/1.1 (edit comment): -POST /comment HTTP/1.1 (creating a new comment): + .. rst-class:: build -.. rst-class:: build small + * Success: ``HTTP/1.1 200 OK`` + * Failure: ``HTTP/1.1 409 Conflict`` -* Success: ``HTTP/1.1 201 Created`` -* Failure (unauthorized): ``HTTP/1.1 401 Unauthorized`` -* Failure (NotImplemented): ``HTTP/1.1 405 Not Allowed`` -* Failure (ValueError): ``HTTP/1.1 406 Not Acceptable`` + DELETE /comment/ HTTP/1.1 (delete comment): -.. class:: small incremental + .. rst-class:: build -PUT /comment/ HTTP/1.1 (edit comment): + * Success: ``HTTP/1.1 204 No Content`` -.. rst-class:: build small -* Success: ``HTTP/1.1 200 OK`` -* Failure: ``HTTP/1.1 409 Conflict`` +Playing With REST +----------------- -.. class:: small incremental +Let's take a moment to play with REST. -DELETE /comment/ HTTP/1.1 (delete comment): +.. rst-class:: build +.. container:: -.. rst-class:: build small + We'll use a common, public API provided by Google. -* Success: ``HTTP/1.1 204 No Content`` + .. rst-class:: centered + **Geocoding** -HTTP Is Stateless ------------------ +.. nextslide:: Geocoding with Google APIs -No individual request may be assumed to know anything about any other request. +https://developers.google.com/maps/documentation/geocoding .. rst-class:: build +.. container:: -All the required information representing the possible actions to take *should -be present in every response*. - -.. rst-class:: build big-centered + Open a python interpreter using our virtualenv:: -Thus: HATEOAS + (soupenv)$ python + .. code-block:: pycon -HATEOAS -------- + >>> import requests + >>> import json + >>> from pprint import pprint + >>> url = 'http://maps.googleapis.com/maps/api/geocode/json' + >>> addr = '1325 4th Ave, Seattle, 98101' + >>> parameters = {'address': addr, 'sensor': 'false' } + >>> resp = requests.get(url, params=parameters) + >>> data = json.loads(resp.text) + >>> if data['status'] == 'OK': + ... pprint(data) -.. rst-class:: large centered -Hypermedia As The Engine Of Application State +.. nextslide:: Reverse Geocoding +You can do the same thing in reverse, supply latitude and longitude and get +back address information: -Applications are State Engines ------------------------------- +.. rst-class:: build +.. container:: -A State Engine is a machine that provides *states* for a resource to be in and -*transitions* to move resources between states. A Restful api should: + .. code-block:: pycon -.. rst-class:: build + >>> location = data['results'][0]['geometry']['location'] + >>> latlng="{lat},{lng}".format(**location) + >>> parameters = {'latlng': latlng, 'sensor': 'false'} + >>> resp = requests.get(url, params=paramters) + >>> data = json.loads(resp.text) + >>> if data['status'] == 'OK': + ... pprint(data) -* provide information about the current state of a resource -* provide information about available transitions for that resource (URIs) -* provide all this in *each* HTTP response + Notice that there are a number of results returned, ordered from most specific + to least. -Playing With REST ------------------ +Mashing It Up +------------- -Let's take a moment to play with REST. +Google's geocoding data is quite nice. .. rst-class:: build +.. container:: -We'll use a common, public API provided by Google. + But it's not in a format we can use directly to create a map -.. rst-class:: build center + For that we need `geojson` -**Geocoding** + Moreover, formatting the data for all those requests is going to get + tedious. + Luckily, people create *wrappers* for popular REST apis like google's + geocoding service. -Geocoding with Google APIs --------------------------- + Once such wrapper is `geocoder`_, which provides not only google's service, + but many others under a single umbrella. -https://developers.google.com/maps/documentation/geocoding +.. _geocoder: http://geocoder.readthedocs.org/en/latest/ +.. _geojson: http://geojson.org -.. container:: incremental +.. nextslide:: Install ``geocoder`` - Open a python interpreter using our virtualenv: +Install geocoder into your ``soupenv`` so that it's available to use: - .. class:: small +.. code-block:: bash - :: + (soupenv)$ pip install geocoder - (soupenv)$ python +.. rst-class:: build +.. container:: -.. code-block:: python + Our final step for tonight will be to geocode the results we have scraped + from the inspection site. - >>> import requests - >>> import json - >>> from pprint import pprint - >>> url = 'http://maps.googleapis.com/maps/api/geocode/json' - >>> addr = '1325 4th Ave, Seattle, 98101' - >>> parameters = {'address': addr, 'sensor': 'false' } - >>> resp = requests.get(url, params=parameters) - >>> data = json.loads(resp.text) - >>> if data['status'] == 'OK': - ... pprint(data) - + We'll then convert that to ``geojson``, insert our own properties and map + the results. + Let's begin by converting our script so that what we have so far is + contained in a generator function -Reverse Geocoding ------------------ + We'll eventually sort our results and generate the top 10 or so for + geocoding. -You can do the same thing in reverse, supply latitude and longitude and get -back address information: + Open up ``mashup.py`` and copy everthing in the ``main`` block. -.. code-block:: python +.. nextslide:: Make a Generator Function - >>> location = data['results'][0]['geometry']['location'] - >>> latlng="{lat},{lng}".format(**location) - >>> parameters = {'latlng': latlng, 'sensor': 'false'} - >>> resp = requests.get(url, params=paramters) - >>> data = json.loads(resp.text) - >>> if data['status'] == 'OK': - ... pprint(data) +Add a new function ``result_generator`` to the ``mashup.py`` script. Paste the +code you copied from the ``main`` block and then update it a bit: .. rst-class:: build +.. code-block:: python -Notice that there are a number of results returned, ordered from most specific -to least. - - -Mash It Up ----------- + def result_generator(count): + use_params = { + 'Inspection_Start': '2/1/2013', + 'Inspection_End': '2/1/2015', + 'Zip_Code': '98101' + } + # html, encoding = get_inspection_page(**use_params) + html, encoding = load_inspection_page('inspection_page.html') + parsed = parse_source(html, encoding) + content_col = parsed.find("td", id="contentcol") + data_list = restaurant_data_generator(content_col) + for data_div in data_list[:count]: + metadata = extract_restaurant_metadata(data_div) + inspection_data = get_score_data(data_div) + metadata.update(inspection_data) + yield metadata -Let's add a new function to ``mashup.py``. It will: -.. rst-class:: build +.. nextslide:: Test It Out -* take a single listing from our craiglist work -* format the location data provided in that listing properly -* make a reverse geocoding lookup using the google api above -* add the best available address to the listing -* return the updated listing +Update the ``main`` block of your ``mashup.py`` script to use the new function: .. rst-class:: build +.. container:: -Call it ``add_address`` + .. code-block:: python + if __name__ == '__main__': + for result in result_generator(10): + print result -My Solution ------------ + Then run your script and verify that the only thing that has changed is the + number of results that print. -.. code-block:: python + .. code-block:: bash - # add an import - import json - - # and a function - def add_address(listing): - api_url = 'http://maps.googleapis.com/maps/api/geocode/json' - loc = listing['location'] - latlng_tmpl = "{data-latitude},{data-longitude}" - parameters = { - 'sensor': 'false', - 'latlng': latlng_tmpl.format(**loc), - } - resp = requests.get(api_url, params=parameters) - data = json.loads(resp.text) - if data['status'] == 'OK': - best = data['results'][0] - listing['address'] = best['formatted_address'] - else: - listing['address'] = 'unavailable' - return listing - + (soupenv)$ python mashup.py + # you should see 10 dictionaries print here. -Add Address to Output ---------------------- +Add Geocoding +------------- -Go ahead and bolt the new function into our ``__main__`` block: +The API for geocoding with ``geocoder`` is the same for all providers. -.. code-block:: python +.. rst-class:: build +.. container:: - import pprint - if __name__ == '__main__': - params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2} - html, encoding = fetch_search_results(**params) - doc = parse_source(html, encoding) - for listing in extract_listings(doc): - listing = add_address(listing) - pprint.pprint(listing) + You give an address, it returns geocoded data. -.. container:: incremental + You provide latitude and longitude, it provides address data - And give the result a whirl: + .. code-block:: python + + >>> response = geocoder.google(
    ) + >>> response.json + # json result data + >>> response.geojson + # geojson result data - .. class:: small +.. nextslide:: Adding The Function - :: +Let's add a new function ``get_geojson`` to ``mashup.py`` - (soupenv)$ python mashup.py - {'address': u'123 Some Street, Chapel Hill, NC ...', - 'description': u'3 bedroom 2 bathroom unit is move in ready!' - ... - } +.. rst-class:: build +.. container:: + It will -One More Step -------------- + .. rst-class:: build -I'm a big fan of walking places. + * Take a result from our search as it's input + * Get geocoding data from google using the address of the restaurant + * Return the geojson representation of that data -.. rst-class:: build + Try to write this function on your own -So I'd like to find an apartment that is located somewhere 'walkable' + .. code-block:: python + + def get_geojson(result): + address = " ".join(result.get('Address', '')) + if not address: + return None + geocoded = geocoder.google(address) + return geocoded.geojson -.. rst-class:: build +.. nextslide:: Testing It Out -There's an API for that! +Next, update our ``main`` block to get the geojson for each result and print +it: .. rst-class:: build +.. container:: -http://www.walkscore.com/professional/api.php + .. code-block:: python -.. rst-class:: build + if __name__ == '__main__': + for result in result_generator(10): + geojson = get_geojson(result) + print geojson -If you haven't already, sign up for an API key now. + Then test your results by running your script: + .. code-block:: bash + + (soupenv)$ python mashup.py + {'geometry': {'type': 'Point', 'coordinates': [-122.3393005, 47.6134378]}, + 'type': 'Feature', 'properties': {'neighborhood': 'Belltown', + 'encoding': 'utf-8', 'county': 'King County', 'city_long': 'Seattle', + 'lng': -122.3393005, 'quality': u'street_address', 'city': 'Seattle', + 'confidence': 9, 'state': 'WA', 'location': u'1933 5TH AVE SEATTLE, WA 98101', + 'provider': 'google', 'housenumber': '1933', 'accuracy': 'ROOFTOP', + 'status': 'OK', 'state_long': 'Washington', + 'address': '1933 5th Avenue, Seattle, WA 98101, USA', 'lat': 47.6134378, + 'postal': '98101', 'ok': True, 'road_long': '5th Avenue', 'country': 'US', + 'country_long': 'United States', 'street': '5th Ave'}, + 'bbox': [-122.3406494802915, 47.6120888197085, -122.3379515197085, 47.6147867802915]} -Getting a Walk Score --------------------- +.. nextslide:: Update Geojson Properties -The API documentation tells us we have to provide lat, lon and address to get -a walk score, along with our API key. +The ``properties`` of our geojson records are filled with data we don't really +care about. .. rst-class:: build +.. container:: -It also tells us we have a choice of XML or JSON output. Let's use JSON + Let's replace that information with some of the metadata from our + inspection results. -.. rst-class:: build + We'll update our ``get_geojson`` function so that it: -Let's poke at it and see what we get back + .. rst-class:: build -.. rst-class:: build + * Builds a dictionary containing only the values we want from our + inspection record. + * Converts list values to strings (geojson requires this) + * Replaces the 'properties' of our geojson with this new data + * Returns the modified geojson record -Fire up your virtualenv Python interpreter again +.. nextslide:: Write the Function +See if you can make the updates on your own. -Making an API Call ------------------- +.. rst-class:: build +.. code-block:: python -:: + def get_geojson(result): + # ... + geocoded = geocoder.google(address) + geojson = geocoded.geojson + inspection_data = {} + use_keys = ( + 'Business Name', 'Average Score', 'Total Inspections', 'High Score' + ) + for key, val in result.items(): + if key not in use_keys: + continue + if isinstance(val, list): + val = " ".join(val) + inspection_data[key] = val + geojson['properties'] = inspection_data + return geojson - (soupenv)$ python +.. nextslide:: Making Mappable Data -.. code-block:: python +We are now generating a series of ``geojson`` *Feature* objects. - >>> import requests - >>> import json - >>> from pprint import pprint - >>> api_url = 'http://api.walkscore.com/score' - >>> lat, lon = 35.9108986, -79.053783 - >>> addr = '120 E. Cameron Avenue Chapel Hill, NC 27599' - >>> params = {'lat': lat, 'lon', lon, 'address': addr} - >>> params['wsapikey'] = '' - >>> params['format'] = 'json' - >>> resp = requests.get(api_url, params=params) - >>> data = json.loads(resp.text) - >>> if data['status'] == 1: - ... pprint(data) - - -Mash It Up ----------- +.. rst-class:: build +.. container:: -Add a function to ``mashup.py`` that: + To map these objects, we'll need to create a file which contains a + ``geojson`` *FeatureCollection*. -.. rst-class:: build + The structure of such a collection looks like this: -* takes a single listing from our craigslist search -* uses the location and address to make a walkscore api call -* adds the description, walkscore and ws_link parameters to the listing -* returns the updated listing + .. code-block:: json + + {'type': 'FeatureCollection', 'features': [...]} -.. rst-class:: build + Let's update our ``main`` function to append each feature to such a + structure. + + Then we can dump the structure as ``json`` to a file. -Call the function ``add_walkscore`` +.. nextslide:: Update the Script + +In ``mashup.py`` update the ``main`` block like so: .. rst-class:: build +.. container:: -Bolt it into our script's ``__main__`` block where it fits best + .. code-block:: python + # add an import at the top: + import json -My Solution ------------ + if __name__ == '__main__': + total_result = {'type': 'FeatureCollection', 'features': []} + for result in result_generator(10): + geojson = get_geojson(result) + total_result['features'].append(geojson) + with open('my_map.json', 'w') as fh: + json.dump(total_result, fh) -.. code-block:: python + When you run the script nothing will print, but the new file will appear. - def add_walkscore(listing): - api_url = 'http://api.walkscore.com/score' - apikey = '' - loc = listing['location'] - if listing['address'] == 'unavailable': - return listing - parameters = { - 'lat': loc['data-latitude'], 'lon': loc['data-longitude'], - 'address': listing['address'], 'wsapikey': apikey, - 'format': 'json' - } - resp = requests.get(api_url, params=parameters) - data = json.loads(resp.text) - if data['status'] == 1: - listing['ws_description'] = data['description'] - listing['ws_score'] = data['walkscore'] - listing['ws_link'] = data['ws_link'] - return listing + .. code-block:: bash + (soupenv)$ python mashup.py -My Results ----------- + This script is available as ``resources/session07/mashup_5.py`` -.. code-block:: python +Display the Results +------------------- - if __name__ == '__main__': - params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2} - html, encoding = fetch_search_results(**params) - doc = parse_source(html, encoding) - for listing in extract_listings(doc): - listing = add_address(listing) - listing = add_walkscore(listing) - pprint.pprint(listing) +Once the new file is written you are ready to display your results. -.. container:: incremental +.. rst-class:: build +.. container:: - Let's try it out:: + Open your web browser and go to http://geojson.io - (soupenv)$ python mashup.py + Then drag and drop the new file you wrote onto the map you see there. + .. figure:: /_static/geojson-io.png + :align: center + :width: 75% Wrap Up ------- -We've built a simple mashup combining data from three different sources. +We've built a simple mashup combining data from different sources. .. rst-class:: build +.. container:: -As a result we can now make a listing of apartments ranked by the walkability -of their neighborhood. + We scraped health inspection data from the King County government site. -.. rst-class:: build + We geocoded that data. -What other data sources might we use? Check out -http://www.programmableweb.com/apis/directory to see some of the possibilities + And we've displayed the results on a map. + What other sources of data might we choose to combine? -Addenda -------- - -Altough we do not have class time to do walkthrough examples of using XML-RPC -and SOAP, I have provided exercises in each as an addenda to this session. If -you have the time and the interest, please try them out. + Check out `programmable web `_ + to see some of the possibilities -.. class:: center -`Web Service API Addenda `_ Homework --------- +======== -For your homework this week, you'll be creating a mashup of your own. +.. rst-class:: left +.. container:: -.. rst-class:: build + For your homework this week, you'll be polishing this mashup. -Use the programmable web api directory from above as a source of inspiration. + .. rst-class:: build + .. container:: -.. rst-class:: build + Begin by sorting the results of our search by the average score. + + Then, update your script to allow the user to choose how to sort, by + average, high score or most inspections:: -Your mashup should combine at least two sources of data in some way that -tickles your fancy. + (soupenv)$ python mashup.py highscore + + Next, allow the user to choose how many results to map:: + + (soupenv)$ python mashup.py highscore 25 + + Or allow them to reverse the results, showing the lowest scores first:: + + (soupenv)$ python mashup.py highscore 25 reverse + + If you're feeling particularly adventurous, see if you can use the + `argparse`_ module from the standard library to handle command line + arguments + +.. _argparse: https://docs.python.org/2/library/argparse.html#module-argparse + +More Fun +-------- + +Next, try adding a bit of information to your map by setting the +``marker-color`` property. This will display a marker with the provided +css-style color (``#FF0000``) .. rst-class:: build +.. container:: -Your results need not look pretty. Focus on data acquisition and processing. + See if you can make the color change according to the values used for the + sorting of the list. Either vary the intensity of the color, or the hue. + Finally, if you are feeling particularly frisky, you can update your script + to automatically open a browser window with your map loaded on + *geojson.io*. -Submitting Your Homework ------------------------- + To do this, you'll want to read about the `webbrowser`_ module from the + standard library. -To submit your homework: + In addition, you'll want to read up on using the URL parameters API for + *geojson.io*. Click on the **help** tab in the sidebar to view the + information. -* Create a new python script in ``assignments/session03``. It should be - something I can run with:: + You will also need to learn about how to properly quote special characters + for a URL, using the `urllib`_ ``quote`` function. - $ python your_script.py +.. _urllib: https://docs.python.org/2/library/urllib.html#urllib.quote +.. _webbrowser: https://docs.python.org/2/library/webbrowser.html -* Provide me with a text file describing what you did. Tell me about the - sources you use, how you combine them, what you hoped to achieve. +Submitting Your Work +-------------------- -* Include any instruction I might need to successfully run your script. +Create a github repository to contain your mashup work. Start by populating it +with the script as we finished it today (mashup_5.py). -* Commit your changes to your fork of the repo in github, then open a pull - request. +As you implement the above features, commit early and commit often. +When you're ready for us to look it over, email a link to your repository to +Maria and I. -Extra Credit ------------- +Final Thoughts +-------------- + +In preparation for our work next week, I'd like you to get started a bit ahead +of time. -Bonus points if you write unit tests for the elements of your mashup. +Please read and follow along with this `basic intro to Django`_. +.. _basic intro to Django: django_intro.html diff --git a/slides/_sources/readings.txt b/slides/_sources/readings.txt index efe1bc80..7e555bad 100644 --- a/slides/_sources/readings.txt +++ b/slides/_sources/readings.txt @@ -167,7 +167,40 @@ remain unchanged) over time, skim these specifications for HTTP and SMTP: * `RFC 5321 - SMTP (latest) `_ -Session 6 - APIs and Mashups +Session 6 - CGI and WSGI +------------------------ + +* `CGI tutorial`_ - Read the following sections: Hello World, Debugging, Form. + Other sections optional. Follow along using CGIHTTPServer. +* `WSGI tutorial`_ - Follow along using wsgiref. +* `CGI module`_ - utilities for CGI scripts, mostly form and query string + parsing +* `Parse URLS into components + `_ +* `CGIHTTPServer`_ - python -m CGIHTTPServer +* `WSGI Utilities and Reference implementation + `_ +* `WSGI 1.0 specification `_ +* `WSGI 1.0.1 (Python 3 support) `_ +* `test WSGI server, like cgi.test() + `_ + +.. _CGI tutorial: http://webpython.codepoint.net/cgi_tutorial +.. _WSGI tutorial: http://webpython.codepoint.net/wsgi_tutorial +.. _CGI module: http://docs.python.org/release/2.6.5/library/cgi.html +.. _CGIHTTPServer: http://docs.python.org/release/2.6.5/library/cgihttpserver.html + +For alternative introductions to WSGI, try these two sources. They are a bit +more minimal and may be easier to comprehend off the bat. + +* `Getting Started with WSGI`_ - by Armin Ronacher (really solid and quick!) +* `very minimal introduction to WSGI + `_ + +.. _Getting Started with WSGI: http://lucumr.pocoo.org/2007/5/21/getting-started-with-wsgi/ + + +Session 7 - APIs and Mashups ---------------------------- * `Introduction to HTML (from the Mozilla Developer Network) @@ -212,39 +245,6 @@ both from the side of production and consumption: .. _restkit: https://github.com/benoitc/restkit/ -Session 7 - CGI and WSGI ------------------------- - -* `CGI tutorial`_ - Read the following sections: Hello World, Debugging, Form. - Other sections optional. Follow along using CGIHTTPServer. -* `WSGI tutorial`_ - Follow along using wsgiref. -* `CGI module`_ - utilities for CGI scripts, mostly form and query string - parsing -* `Parse URLS into components - `_ -* `CGIHTTPServer`_ - python -m CGIHTTPServer -* `WSGI Utilities and Reference implementation - `_ -* `WSGI 1.0 specification `_ -* `WSGI 1.0.1 (Python 3 support) `_ -* `test WSGI server, like cgi.test() - `_ - -.. _CGI tutorial: http://webpython.codepoint.net/cgi_tutorial -.. _WSGI tutorial: http://webpython.codepoint.net/wsgi_tutorial -.. _CGI module: http://docs.python.org/release/2.6.5/library/cgi.html -.. _CGIHTTPServer: http://docs.python.org/release/2.6.5/library/cgihttpserver.html - -For alternative introductions to WSGI, try these two sources. They are a bit -more minimal and may be easier to comprehend off the bat. - -* `Getting Started with WSGI`_ - by Armin Ronacher (really solid and quick!) -* `very minimal introduction to WSGI - `_ - -.. _Getting Started with WSGI: http://lucumr.pocoo.org/2007/5/21/getting-started-with-wsgi/ - - Sessions 8, 9, & 10 - Django ---------------------------- diff --git a/slides/_static/geojson-io.png b/slides/_static/geojson-io.png new file mode 100644 index 0000000000000000000000000000000000000000..cc437c5865b6c32b19160fac0405d66aeec73903 GIT binary patch literal 1302253 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

    MzizmeR(LL(GCyZpG;E?4h(~< z!BkagdzdaB)!3IQ=Ojt44a*l6>SMvHjQx4K*~tNeK96Jiff#(9kzA0XG&+_+wc1gm zqZm=l2ZpmhBa(-w>O3=>3Sx`o4nuc{W_M1UEDD6TNB11}k_)mU>&VgRbYlr9Hm-W# z^kkQ3GVhX2yY9#EGTyGU#OMZ>*F|x53YAA+23C`X88$mnS&A0%nW|3J!ZRt$)#mXf zuD&l71Kb|u$f{}%7++L7Z+GD<;2Nw&yPrjeTS~Zpne=eKm?BZ~}p%c8> zk|tfOVpq(AHl_u5i(XWtb}|J z;@fFAvl8L>VqQSb*Q**n&y%T!?YZuH#enHIW{Em9i8Dy#1}N%myvlt2lb-ym23EJK?|7n(Nnp7lixBWYtTmrFL#;IG$&A<1L>8#TUbcwp!~S z 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�a06nz7~)!;Ns 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

    -UVCb;2lDhlB#vFXE7|dC=t1&YV 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ˤ$R6Xgd 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%0DZXzb(#-h@~?qrHduo!6BM#05kxkzse!u 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

  • *}HtAb(( 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 SV1efxD{VXT@V9Lu?N+Q< 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%0D$X(eJ{;%&@Bd`trx8p1_s6ClM7 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

    6_v>_Q3^-V6HqLd$SZW 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�`2&s=8ZD-Jvf?5P`C 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

    Index

    - C + P | S - | T
    -

    C

    +

    P

    @@ -92,17 +91,7 @@

    S

    -
    center (built-in class), [1] +
    python (built-in class)
    -
    -
    small (built-in class), [1], [2], [3] -
    - -
    - -

    T

    - - diff --git a/slides/objects.inv b/slides/objects.inv index 0428f3c1..1332a20d 100644 --- a/slides/objects.inv +++ b/slides/objects.inv @@ -2,5 +2,5 @@ # Project: Internet Programming with Python # Version: 2.0 # The remainder of this file is compressed using zlib. -xÚ•ŽK -1 @÷=EÀÙÖÏJ˜¸OÛ0SHSi:àÜÞJëbÀ»ðòIL>ˆ§hñ#ãƒì ž«}±ŸKä\“_˜àòAf"ù}i/šª„ÙÍ[±±®Ý›pÉŒ#)”ëõÑ1ªB}$“Vˆ%$у’jŽçÖ`M ²þ¼9BTF \ No newline at end of file +xÚ•ŽA +1 E÷=E@·UÜÎ \‚8 Jš MçöŽ´.7n_Þã'kHè VÃÀx#€yñ¹vSͼ“†ßÈE’чö¢©FXÆé[l¬k—&œ1’³ŒÌëø02šÁúG!#©X“ŠíÃ%ê5I-Úê-x7/uRù·zÂwWâ \ No newline at end of file diff --git a/slides/presentations/django_intro.html b/slides/presentations/django_intro.html new file mode 100644 index 00000000..ebc0d394 --- /dev/null +++ b/slides/presentations/django_intro.html @@ -0,0 +1,105 @@ + + + + + + An Introduction To Django — Internet Programming with Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    +

    +

    +
    +
    + + + +
    +

    Internet Programming with Python

    +
    +
    +

    This document contains no slides.

    + + + + +
    +
    + + + + +
    +

    <Thank You!>

    +

     

    +
    +

    + +

    +
    + + + +
    + + + + \ No newline at end of file diff --git a/slides/presentations/session06.html b/slides/presentations/session06.html index 612ff42f..c166e672 100644 --- a/slides/presentations/session06.html +++ b/slides/presentations/session06.html @@ -53,7 +53,7 @@ - + diff --git a/slides/presentations/session07.html b/slides/presentations/session07.html index 8caaac66..9eee2567 100644 --- a/slides/presentations/session07.html +++ b/slides/presentations/session07.html @@ -51,7 +51,10 @@ - + + + + @@ -140,7 +143,7 @@

    Mashups

    a web page, or web application, that uses and combines data, presentation
     or functionality from two or more sources to create new services.
     
    --- `wikipedia <http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)>`_
    +-- wikipedia (http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid))
     
    @@ -188,7 +191,7 @@

    Web Scraping

    -

    HTML, Ideally

    +

    HTML

    <!DOCTYPE html>
    @@ -230,7 +233,7 @@ 

    HTML... IRL

    -

    FFFFFFFFFUUUUUUUUUUUUU

    +

    FFFFFFFFFUUUUUUUUUUUUU!!!!

    @@ -283,9 +286,7 @@

    Install BeautifulSoup

    Once the virtualenv is activated, you can simply use pip or easy_install to install the libraries you want:

    -
    source
    -
    -(soupenv)$ pip install beautifulsoup4
    +
    (soupenv)$ pip install beautifulsoup4
     
    @@ -359,11 +360,11 @@

    Our Class Mashup

    We're going to explore some tools for making a mashup today

    -

    We'll be starting by scraping ZIP codes for Seattle

    -

    Then we'll choose one of them and look up restaurant health code data for -that ZIP code

    +

    We'll be starting by scraping restaurant health code data for +a given ZIP code

    Then, we'll look up the geographic location of those zipcodes using Google

    -

    Open a new file in your editor: mashup.py.

    +

    Finally, we'll display the results of our work on a map

    +

    Start by opening a new file in your editor: mashup.py.

    @@ -372,19 +373,19 @@

    Our Class Mashup

    -

    Examine the Source

    +

    Getting Some HTML

    -

    Craigslist doesn't have an api, just a website, so we'll need to dig a bit

    -

    By going to the website and playing with the form there, we can derive a -formula for a search URL

    -
      -
    • Base URL: http://seattle.craigslist.org/search/apa
    • -
    • keywords: query=keyword+values+here
    • -
    • price: minAsk=NNN maxAsk=NNN
    • -
    • bedrooms: bedrooms=N (N in range 1-8)
    • -
    -

    We'll make an HTTP request with these parameters

    +

    The source for the data we'll be displaying is a search tool provided by King +County.

    +
    +

    It's supposed to have a web service, but the service is broken.

    +

    Luckily, the HTML search works just fine.

    +

    Open the search form in your browser.

    +

    Fill in a ZIP code (perhaps 98101).

    +

    Add a start and end date (perhaps about 1 or 2 years apart).

    +

    Submit the form, and take a look at what you get.

    +
    @@ -392,22 +393,76 @@

    Examine the Source

    -

    Opening URLs with Requests

    +

    Repeat, But Automate

    -

    In requests, each HTTP method has a module-level function:

    +

    Next we want to automate the process.

    +
    +

    Copy the domain and path of the url into your new mashup.py file like +so:

    +
    INSPECTION_DOMAIN = "http://info.kingcounty.gov"
    +INSPECTION_PATH = "/health/ehs/foodsafety/inspections/Results.aspx"
    +
    +
    +
    + + + + +
    +
    +
    +

    Repeat, But Automate

    +
    +
    +

    Next, copy the query parameters from the URL and convert them to a dictionary:

    +
    INSPECTION_PARAMS = {
    +    'Output': 'W',
    +    'Business_Name': '',
    +    'Business_Address': '',
    +    'Longitude': '',
    +    'Latitude': '',
    +    'City': '',
    +    'Zip_Code': '',
    +    'Inspection_Type': 'All',
    +    'Inspection_Start': '',
    +    'Inspection_End': '',
    +    'Inspection_Closed_Business': 'A',
    +    'Violation_Points': '',
    +    'Violation_Red_Points': '',
    +    'Violation_Descr': '',
    +    'Fuzzy_Search': 'N',
    +    'Sort': 'H'
    +}
    +
    +
    + + + + +
    +
    +
    +

    Fetching Search Results

    +
    +
    +

    Next we'll use the requests library to write a function to fetch these +results on demand.

    +
    +

    In requests, each HTTP method has a module-level function:

    • GET == requests.get(url, **kwargs)
    • POST == requests.post(url, **kwargs)
    • ...
    -

    kwargs represent other parts of an HTTP request:

    +

    kwargs represent other parts of an HTTP request:

    • params: a dict of url parameters (?foo=bar&baz=bim)
    • headers: a dict of headers to send with the request
    • data: the body of the request, if any (form data for POST goes here)
    • ...
    +
    @@ -415,10 +470,12 @@

    Opening URLs with Requests

    -

    Getting Responses with Requests

    +

    Handling Requests Responses

    -

    The return value from one of these functions is a response which provides:

    +

    The return value from one of these functions is a response object which +provides:

    +
    • response.status_code: see the HTTP Status Code returned
    • response.ok: True if response.status_code is not an error
    • @@ -428,7 +485,8 @@

      Getting Responses with Requests

    • response.encoding: The encoding used to decode
    • response.content: The original encoded response body as bytes
    -

    requests documentation: http://docs.python-requests.org/en/latest/

    +

    requests documentation: http://docs.python-requests.org/en/latest/

    +
    @@ -439,15 +497,18 @@

    Getting Responses with Requests

    Fetch Search Results

    -

    We'll start by writing a function fetch_search_results

    +

    We'll start by writing a function get_inspection_page

    +
      -
    • It will accept one keyword argument for each of the possible query values
    • -
    • It will build a dictionary of request query parameters from incoming keywords
    • -
    • It will make a request to the craigslist server using this query
    • -
    • It will return the body of the response if there is no error
    • -
    • It will raise an error if there is a problem with the response
    • +
    • It will accept keyword arguments for each of the possible query values
    • +
    • It will build a dictionary of request query parameters from incoming +keywords
    • +
    • It will make a request to the inspection service search page using this +query
    • +
    • It will return the encoded content and the encoding used as a tuple
    -

    Try writing this function. Put it in mashup.py

    +

    Try writing this function. Put it in mashup.py

    +
    @@ -459,21 +520,16 @@

    My Solution

    Here's the one I created:

    -
    import requests
    -
    -def fetch_search_results(
    -    query=None, minAsk=None, maxAsk=None, bedrooms=None
    -):
    -    incoming = locals().copy()
    -    base = 'http://seattle.craigslist.org/search/apa'
    -    search_params = dict(
    -        [(key, val) for key, val in incoming.items()
    -                    if val is not None])
    -    if not search_params:
    -        raise ValueError("No valid keywords")
    -
    -    resp = requests.get(base, params=search_params, timeout=3)
    -    resp.raise_for_status() #<- no-op if status==200
    +
    import requests
    +
    +def get_inspection_page(**kwargs):
    +    url = INSPECTION_DOMAIN + INSPECTION_PATH
    +    params = INSPECTION_PARAMS.copy()
    +    for key, val in kwargs.items():
    +        if key in INSPECTION_PARAMS:
    +            params[key] = val
    +    resp = requests.get(url, params=params)
    +    resp.raise_for_status()
         return resp.content, resp.encoding
     
    @@ -487,14 +543,8 @@

    My Solution

    Parse the Results

    -

    Next, we need a function parse_source to set up HTML for scraping. It will -need to:

    -
      -
    • Take the response body from the previous method (or some other source)
    • -
    • Parse it using BeautifulSoup
    • -
    • Return the parsed object for further processing
    • -
    -

    Before you start, a word about parsing HTML with BeautifulSoup

    +

    Next, we'll need to parse the results we get when we call that function

    +

    But before we start, a word about parsing HTML with BeautifulSoup

    @@ -507,6 +557,7 @@

    Parsing HTML with BeautifulSoup

    The BeautifulSoup object can be instantiated with a string or a file-like object as the sole argument:

    +
    from bs4 import BeautifulSoup
     parsed = BeautifulSoup('<h1>Some HTML</h1>')
     
    @@ -517,8 +568,9 @@ 

    Parsing HTML with BeautifulSoup

    parsed = BeautifulSoup(page)
    -

    You might want to open the documentation as reference +

    You might want to open the documentation as reference (http://www.crummy.com/software/BeautifulSoup/bs4/doc)

    +
    @@ -554,17 +606,19 @@

    Put It Together

    # do something
    +
    • Fetch a search results page
    • Parse the resulting HTML
    • For now, print out the results so we can see what we get
    -
    +

    Use the prettify method on a BeautifulSoup object:

    print parsed.prettify()
     
    +
    @@ -576,12 +630,15 @@

    My Solution

    Try to come up with the proper code on your own. Add it to mashup.py

    -
    if __name__ == '__main__':
    -    html, encoding = fetch_search_results(
    -        minAsk=500, maxAsk=1000, bedrooms=2
    -    )
    -    doc = parse_source(html, encoding)
    -    print doc.prettify(encoding=encoding)
    +
    if __name__ == '__main__':
    +    use_params = {
    +        'Inspection_Start': '2/1/2013',
    +        'Inspection_End': '2/1/2015',
    +        'Zip_Code': '98101'
    +    }
    +    html, encoding = get_inspection_page(**use_params)
    +    parsed = parse_source(html, encoding)
    +    print parsed.prettify(encoding=encoding)
     
    @@ -591,21 +648,32 @@

    My Solution

    -

    Test Your Work

    +

    Test The Results

    Assuming your virtualenv is still active, you should be able to execute the script.

    -
    (soupenv)$ python mashup.py
    -<!DOCTYPE html>
    -<html class="nojs">
    - <head>
    -  <title>
    -   seattle apts/housing for rent classifieds  - craigslist
    -  </title>
    +
    +
    (soupenv)$ python mashup.py
     ...
    +   <script src="http://www.kingcounty.gov/kcscripts/kcPageAnalytics.js" type="text/javascript">
    +   </script>
    +   <script type="text/javascript">
    +     //<![CDATA[
    +     var usasearch_config = { siteHandle:"kingcounty" };
    +     var script = document.createElement("script");
    +     script.type = "text/javascript";
    +     script.src = "http://search.usa.gov/javascripts/remote.loader.js";
    +     document.getElementsByTagName("head")[0].appendChild(script);
    +     //]]>
    +   </script>
    +  </form>
    + </body>
    +</html>
     
    +

    This script is available as resources/session07/mashup_1.py

    +
    @@ -617,10 +685,25 @@

    Preserve the Results

    Try it again, this time redirect the output to a local file, so we can use -it without needing to hit the craiglist servers each time:

    -
    (soupenv)$ python mashup.py > craigslist_results.html
    +it without needing to hit the King County servers each time:

    +
    (soupenv)$ python mashup.py > inspection_page.html
    +
    +
    +
    +

    Then add a quick function to our script that will use these saved results:

    +
    def load_inspection_page(name):
    +    with open(name, 'r') as fh:
    +        content = fh.read()
    +        return content, 'utf-8'
     
    +

    Finally, bolt that in to your script to use it:

    +
    # COMMENT OUT THIS LINE AND REPLACE IT
    +# html, encoding = get_inspection_page(**use_params)
    +html, encoding = load_inspection_page('inspection_page.html')
    +
    +
    +
    @@ -628,19 +711,17 @@

    Preserve the Results

    -

    Finding The Needle

    +

    Extracting Data

    Next we find the bits of this pile of HTML that matter to us.

    -

    Open your html file in a browser and take a look (w/ dev tools).

    -

    We'll want to find:

    -
      -
    • The HTML element that contains a single listing
    • -
    • The source of location data, listings without location should be abandoned
    • -
    • The description of a listing
    • -
    • The link to a full listing page on craigslist
    • -
    • Relevant price or size data.
    • -
    +
    +

    Open the page you just wrote to disk in your web browser and open the +developer tools to inspect the page source.

    +

    You'll want to start by finding the element in the page that contains all +our search results.

    +

    Look at the source and identify the single element we are looking for.

    +
    @@ -648,27 +729,26 @@

    Finding The Needle

    -

    Pulling it Out

    +

    Tags and Searching

    -

    We can extract this information now. In BeautifulSoup:

    +

    Having found it visually, we can now search for it automatically. In +BeautifulSoup:

    +
    • All HTML elements (including the parsed document itself) are tags
    • -
    • A tag can be searched using its find_all method
    • +
    • A tag can be searched using its find or find_all methods
    • This searches the descendents of the tag on which it is called.
    • It takes arguments which act as filters on the search results
    -
    +

    like so:

    -
    -
    -class small
    -
    - -
    tag.find_all(name, attrs, recursive, text, limit, **kwargs)
    +
    tag.find(name, attrs, recursive, text, **kwargs)
    +tag.find_all(name, attrs, recursive, text, limit, **kwargs)
     
    +
    @@ -676,18 +756,31 @@

    Pulling it Out

    -

    Searching by CSS Class

    +

    Searching by Attribute

    -

    The items we are looking for are p tags which have the CSS class -row:

    -

    find_all supports keyword arguments. If the keyword you use isn't one of -the listed arguments, it is treated as an attribute

    -

    In Python, class is a reserved word, so we can't use it as a keyword, but -you can use class_!

    -
    parsed.find_all('p', class_='row')
    +      

    The find method allows us to pass kwargs.

    +
    +

    Keywords that are not among the named parameters will be considered an HTML +attribute.

    +

    We can use this to find the column that holds our search results:

    +
    content_col = parsed.find('td', id="contentcol")
    +
    +
    +

    Add that line to our mashup script and try it out:

    +
    #...
    +parsed = parse_source(html, encoding)
    +content_col = parsed.find("td", id="contentcol")
    +print content_col.prettify(encoding=encoding)
    +
    +
    +
    (soupenv)$ python mashup.py
    +<td id="contentcol">
    +    ...
    +</td>
     
    +
    @@ -695,23 +788,51 @@

    Searching by CSS Class

    -

    Try It Out

    +

    Filtering By Regular Expression

    -

    Let's fire up a python interpreter and get our hands dirty here:

    -
    (soupenv)$ python
    -
    +

    The next job is to find the inspection data we can see when we click on the +restaurant names in our page.

    +
    +

    Do you notice a pattern in how that data is structured?

    +

    For each restaurant in our results, there are two <div> tags.

    +

    The first contains the content you see at first, the second the content +that displays when we click.

    +

    What can you see that identifies these items?

    +

    <div id="PR0084952"...> and <div id="PR0084952~"...>

    +

    Each pair shares an ID, and the stuff we want is in the second one

    +

    Each number is different for each restaurant

    +

    We can use a regular expression to help us here.

    -
    >>> html = open('craigslist_results.html', 'r').read()
    ->>> from bs4 import BeautifulSoup
    ->>> parsed = BeautifulSoup(html)
    ->>> listings = parsed.find_all('p', class_='row')
    ->>> len(listings)
    -100
    +
    +
    +
    +
    +    
    +
    +
    +

    Getting the Information Divs

    +
    +
    +

    Let's write a function in mashup.py that will find all the divs in our +column with the right kind of id:

    +
    +
      +
    • It should match <div> tags only
    • +
    • It should match ids that start with PR
    • +
    • It should match ids that contain some number of digits after that
    • +
    • It should match ids that end with a tilde (~) character
    • +
    +
    # add an import up top
    +import re
    +
    +# and add this function
    +def restaurant_data_generator(html):
    +    id_finder = re.compile(r'PR[\d]+~')
    +    return html.find_all('div', id=id_finder)
     
    -

    That sounds about right. Let's see if we can get only those with location -data.

    +
    @@ -719,21 +840,30 @@

    Try It Out

    -

    Filtering Tricks

    +

    Verify It Works

    -

    Attribute filters given a True value match tags with that attribute

    -

    Location data was in the data-latitude and data-longitude attributes.

    -
    >>> location_attrs = {
    -...     'data-longitude': True,
    -...     'data-latitude': True}
    ->>> locatable = parsed.find_all(
    -...     'p', class_='row', attrs=location_attrs)
    ->>> len(locatable)
    -43
    +      

    Let's add that step to the main block at the bottom of mashup.py (only +print the first of the many divs that match):

    +
    +
    html, encoding = load_inspection_page('inspection_page.html')
    +parsed = parse_source(html, encoding)
    +content_col = parsed.find("td", id="contentcol")
    +data_list = restaurant_data_generator(content_col)
    +print data_list[0].prettify()
    +
    +
    +

    Finally, test it out:

    +
    (soupenv)$ python mashup.py
    +<div id="PR0001203~" name="PR0001203~" onclick="toggleShow(this.id);"...>
    + <table style="width: 635px;">
    + ...
    + </table>
    +</div>
     
    -

    Great. That worked nicely

    +

    This code is available as /resources/session07/mashup_2.py

    +
    @@ -741,17 +871,20 @@

    Filtering Tricks

    -

    Parsing a Row

    +

    Parsing Restaurant Data

    -

    Now that we have the rows we want, we need to parse them. We want to preserve:

    +

    Now that we have the records we want, we need to parse them. We want to preserve:

    +
    +

    We'll start by parsing out the information about the restaurant themselves:

      -
    • Location data (latitude and longitude)
    • -
    • Source link (to craiglist detailed listing)
    • -
    • Description text
    • -
    • Price and size data
    • +
    • Name
    • +
    • Address
    • +
    • Location
    • +
    • ...
    -

    Which parts of a single row contain each of these elements?

    +

    How is this information contained in our records?

    +
    @@ -759,20 +892,25 @@

    Parsing a Row

    -

    Extracting Location

    +

    Complex Filtering

    -

    Location data is in the data- attributes we used to filter rows.

    -
    -

    We can read the HTML attributes of a 'tag' easily, using attrs:

    -
    >>> row1 = locatable[0]
    ->>> row1.attrs
    -{u'data-pid': u'3949023084', u'data-latitude': u'35.8625743108992',
    - u'class': [u'row'], u'data-longitude': u'-78.6232739959049'}
    ->>> lat = row1.attrs.get('data-latitude', None)
    ->>> lon = row1.attrs.get('data-longitude', None)
    ->>> print lat, lon
    -46.9989830869194 -122.847250593816
    +      

    Each record consists of a table with a series of rows (<tr>).

    +
    +

    The rows we want at this time all have two cells inside them.

    +

    The first contains the label of the data, the second contains the value

    +

    We'll need a function in mashup.py that:

    +
      +
    • takes an HTML element as an argument
    • +
    • verifies that it is a <tr> element
    • +
    • verifies that it has two immediate children that are <td> elements
    • +
    +

    My solution:

    +
    def has_two_tds(elem):
    +    is_tr = elem.name == 'tr'
    +    td_children = elem.find_all('td', recursive=False)
    +    has_two = len(td_children) == 2
    +    return is_tr and has_two
     
    @@ -783,28 +921,76 @@

    Extracting Location

    -

    Extracting Description and Link

    +

    Test It Out

    -

    Where find_all will find many elements, find will only find the first -that matches the filters you provide.

    -
    -

    Our targets are in the first a tag in the pl span inside our row:

    -
    >>> link = row1.find('span', class_='pl').find('a')
    +      

    Let's try this out in an interpreter:

    +
    >>> from mashup import load_inspection_page, parse_source
    +>>> from mashup import restaurant_data_generator, has_two_tds
    +>>> html, encoding = load_inspection_page('inspection_page.html')
    +>>> parsed = parse_source(html, encoding)
    +>>> content_col = parsed.find("td", id="contentcol")
    +>>> records = restaurant_data_generator(content_col)
    +>>> rec = records[4]
     
    -
    -
    -

    The link path will be in the attrs:

    -
    >>> path = link.attrs['href']
    +
    +
    +
    +
    +    
    +
    +
    +

    Test It Out

    +
    +
    +

    We'd like to find all table rows in that div that contain two cells

    +
    +

    The table rows are all contained in a <tbody> tag.

    +

    We only want the ones at the top of that tag (ones nested more deeply +contain other data)

    +
    >>> data_rows = rec.find('tbody').find_all(has_two_tds, recursive=False)
    +>>> len(data_rows)
    +7
    +>>> data_rows[0]
    +<tr>
    + <td class="promptTextBox" style="width: 125px; font-weight: bold">
    +  - Business Name
    + </td>
    + <td class="promptTextBox" style="width: 520px; font-weight: bold">
    +  WORLD FRESH MARKET
    + </td>
    +</tr>
     
    -
    -

    Text contained inside tags is in the string property:

    -
    >>> description = link.string.strip()
    +
    +
    +
    +
    +    
    +
    +
    +

    Extracting Labels and Values

    +
    +
    +

    Now we have a list of the rows that contain our data.

    +
    +

    Next we have to collect the data they contain

    +

    The label/value structure of this data should suggest the right container +to store the information.

    +

    Let's start by trying to get at the first label

    +
    >>> row1 = data_rows[0]
    +>>> cells = row1.find_all('td')
    +>>> cell1 = cells[0]
    +>>> cell1.text
    +u'\n            - Business Name\n           '
     
    +

    That works well enough, but all that extra stuff is nasty

    +

    We need a method to clean up the text we get from these cells

    +

    It should strip extra whitespace, and characters like - and : we +don't want.

    @@ -813,22 +999,26 @@

    Extracting Description and Link

    -

    Extracting Price and Size

    +

    My Solution

    -

    Both price and size are held in the l2 span:

    -
    >>> l2 = row1.find('span', class_='l2')
    +      

    Try writing such a function for yourself now in mashup.py

    +
    +
    def clean_data(td):
    +    return unicode(td.text).strip(" \n:-")
     
    -
    -

    Price, conveniently, is in it's own container:

    -
    >>> price_span = l2.find('span', class_='price')
    ->>> price = price_span.string.strip()
    +

    Add it to your interpreter and test it out:

    +
    >>> def clean_data(td):
    +...     return unicode(td.text).strip(" \n:-")
    +...
    +>>> clean_data(cell1)
    +u'Business Name'
    +>>>
     
    +

    Ahhh, much better

    -

    But the size element is not. It is a standalone text node.

    -

    Try finding it by reading the string property of our l2 tag.

    @@ -836,22 +1026,42 @@

    Extracting Price and Size

    -

    Simple Navigation and Text

    +

    The Complete Function

    -

    We can get to a simple text node by navigating there.

    -

    You can navigate up, down and across document nodes.

    -
    -

    We already have the price span, the size text node is next at the same -level:

    -
    >>> size = price_span.next_sibling.strip(' \n-/')
    ->>> size
    -u'2br - 912ft\xb2'
    -
    +

    So we can get a list of the rows that contain label/value pairs.

    +
    +

    And we can extract clean values from the cells in these rows

    +

    Now we need a function in mashup.py that will iterate through the rows +we find and build a dictionary of the pairs.

    +

    We have to be cautious because some rows don't have a label.

    +

    The values in these rows should go with the label from the previous row.

    + + + + +
    +
    +
    +

    My Solution

    +
    +
    +

    Here's the version I came up with:

    +
    def extract_restaurant_metadata(elem):
    +    restaurant_data_rows = elem.find('tbody').find_all(
    +        has_two_tds, recursive=False
    +    )
    +    rdata = {}
    +    current_label = ''
    +    for data_row in restaurant_data_rows:
    +        key_cell, val_cell = data_row.find_all('td', recursive=False)
    +        new_label = clean_data(key_cell)
    +        current_label = new_label if new_label else current_label
    +        rdata.setdefault(current_label, []).append(clean_data(val_cell))
    +    return rdata
    +
    -

    You may have noticed that we keep using strip. There are two reasons for -this.

    @@ -859,20 +1069,29 @@

    Simple Navigation and Text

    -

    The NavigableString Element

    +

    Testing It Out

    -

    The most obvious reason is that we don't want extra whitespace.

    -

    The second reason is more subtle. The values returned by string are -not simple unicode strings

    -
    -

    They are actually instances of a class called NavigableString:

    -
    >>> price_span.next_sibling.__class__
    -<class 'bs4.element.NavigableString'>
    +      

    Add it to our script:

    +
    +
    # ...
    +data_list = restaurant_data_generator(content_col)
    +for data_div in data_list:
    +    metadata = extract_restaurant_metadata(data_div)
    +    print metadata
    +
    +
    +

    And then try it out:

    +
    (soupenv)$ python mashup.py
    +...
    +{u'Business Category': [u'Seating 0-12 - Risk Category III'],
    + u'Longitude': [u'122.3401786000'], u'Phone': [u'(206) 501-9554'],
    + u'Business Name': [u"ZACCAGNI'S"], u'Address': [u'97B PIKE ST', u'SEATTLE, WA 98101'],
    + u'Latitude': [u'47.6086651300']}
     
    +

    This script is available as resources/session07/mashup_3.py

    -

    Calling strip or casting them to unicode converts them, saving memory

    @@ -880,21 +1099,45 @@

    The NavigableString Element

    -

    Put It All Together

    +

    Extracting Inspection Data

    -

    Okay, a challenge. Combine everything we've done into a function that:

    +

    The final step is to extract the inspection data for each restaurant.

    +
    +

    We want to capture only the score from each inspection, details we can +leave behind.

    +

    We'd like to calculate the average score for all known inspections.

    +

    We'd also like to know how many inspections there were in total.

    +

    Finally, we'd like to preserve the highest score of all inspections for a +restaurant.

    +

    We'll add this information to our metadata about the restaurant.

    +
    + + + + +
    +
    +
    +

    Finding the Data

    +
    +
    +

    Let's start by getting our bearings. Return to viewing the +inspection_page.html you saved in a browser.

    +
    +

    Find a restaurant that has had an inspection or two.

    +

    What can you say about the HTML that contains the scores for these +inspections?

    +

    I notice four characteristics that let us isolate the information we want:

      -
    • Extracts all the locatable listings from our html page
    • -
    • Iterates over each of them, and builds a dictionary of data
        -
      • include location, href, description, price and size
      • +
      • Inspection data is containd in <tr> elements
      • +
      • Rows with inspection data in them have four <td> children
      • +
      • The text in the first cell contains the word "inspection"
      • +
      • But the text does not start with the word "inspection"
      -
    • -
    • Returns a list of these dictionaries
    • -
    -

    Call it extract_listings

    -

    Put this new function into mashup.py and call it from __main__, -printing the result

    +

    Let's try to write a filter function like the one above that will catch +these rows for us.

    +
    @@ -902,14 +1145,21 @@

    Put It All Together

    -

    Break Time

    +

    The filter

    -

    Once you have this working, take a break.

    -

    When we return, we'll try a saner approach to getting data from online

    -
    -

    While you have a moment, sign up for an API key from this service:

    -

    http://www.walkscore.com/professional/api.php

    +

    Add this new function is_inspection_data_row to mashup.py

    +
    def is_inspection_data_row(elem):
    +    is_tr = elem.name == 'tr'
    +    if not is_tr:
    +        return False
    +    td_children = elem.find_all('td', recursive=False)
    +    has_four = len(td_children) == 4
    +    this_text = clean_data(td_children[0]).lower()
    +    contains_word = 'inspection' in this_text
    +    does_not_start = not this_text.startswith('inspection')
    +    return is_tr and has_four and contains_word and does_not_start
    +
    @@ -918,28 +1168,56 @@

    Break Time

    -

    My Solution

    +

    Test It Out

    -
    def extract_listings(doc):
    -    location_attrs = {'data-latitude': True,
    -                      'data-longitude': True}
    -    for row in doc.find_all('p', class_='row',
    -                            attrs=location_attrs):
    -        location = dict(
    -            [(key, row.attrs.get(key)) for key in location_attrs])
    -        link = row.find('span', class_='pl').find('a')
    -        price_span = row.find('span', class_='price')
    -        listing = {
    -            'location': location,
    -            'href': link.attrs['href'],
    -            'description': link.string.strip(),
    -            'price': price_span.string.strip(),
    -            'size': price_span.next_sibling.strip(' \n-/')
    -        }
    -        yield listing
    +      

    We can test this function by adding it into our script:

    +
    for data_div in data_list:
    +    metadata = extract_restaurant_metadata(data_div)
    +    # UPDATE THIS BELOW HERE
    +    inspection_rows = data_div.find_all(is_inspection_data_row)
    +    print metadata
    +    print len(inspection_rows)
    +    print '*'*10
     
    +
    +

    And try running the script in your terminal:

    +
    (soupenv)$ python mashup.py
    +{u'Business Category': [u'Seating 0-12 - Risk Category III'],
    + u'Longitude': [u'122.3401786000'], u'Phone': [u'(206) 501-9554'],
    + u'Business Name': [u"ZACCAGNI'S"], u'Address': [u'97B PIKE ST', u'SEATTLE, WA 98101'],
    + u'Latitude': [u'47.6086651300']}
    +0
    +**********
    +
    +
    +
    + + + + +
    +
    +
    +

    Building Inspection Data

    +
    +
    +

    Now we can isolate a list of the rows that contain inspection data.

    +
    +

    Next we need to calculate the average score, total number and highest score +for each restaurant.

    +

    Let's add a function to mashup.py that will:

    +
      +
    • Take a div containing a restaurant record
    • +
    • Extract the rows containing inspection data
    • +
    • Keep track of the highest score recorded
    • +
    • Sum the total of all inspections
    • +
    • Count the number of inspections made
    • +
    • Calculate the average score for inspections
    • +
    • Return the three calculated values in a dictionary
    • +
    +
    @@ -950,13 +1228,24 @@

    My Solution

    My Solution

    -
    if __name__ == '__main__':
    -    html, encoding = fetch_search_results(
    -        minAsk=500, maxAsk=1000, bedrooms=2
    -    )
    -    doc = parse_source(html, encoding)
    -    for listing in extract_listings(doc):
    -        print listing
    +      

    Try writing this routine yourself.

    +
    def get_score_data(elem):
    +    inspection_rows = elem.find_all(is_inspection_data_row)
    +    samples = len(inspection_rows)
    +    total = high_score = average = 0
    +    for row in inspection_rows:
    +        strval = clean_data(row.find_all('td')[2])
    +        try:
    +            intval = int(strval)
    +        except (ValueError, TypeError):
    +            samples -= 1
    +        else:
    +            total += intval
    +            high_score = intval if intval > high_score else high_score
    +    if samples:
    +        average = total/float(samples)
    +    return {u'Average Score': average, u'High Score': high_score,
    +            u'Total Inspections': samples}
     
    @@ -966,14 +1255,62 @@

    My Solution

    -

    Another Approach

    +

    Test It Out

    +
    +
    +

    We can now incorporate this new routine into our mashup script.

    +
    +

    We'll want to add the data it produces to the metadata we've already +extracted.

    +
    for data_div in data_list:
    +    metadata = extract_restaurant_metadata(data_div)
    +    inspection_data = get_score_data(data_div)
    +    metadata.update(inspection_data)
    +    print metadata
    +
    +
    +

    And test it out at the command line:

    +
    (soupenv)$ python mashup.py
    +...
    +{u'Business Category': [u'Seating 0-12 - Risk Category III'],
    + u'Longitude': [u'122.3401786000'], u'High Score': 0,
    + u'Phone': [u'(206) 501-9554'], u'Business Name': [u"ZACCAGNI'S"],
    + u'Total Inspections': 0, u'Address': [u'97B PIKE ST', u'SEATTLE, WA 98101'],
    + u'Latitude': [u'47.6086651300'], u'Average Score': 0}
    +
    +
    +
    + + + + +
    +
    +
    +

    Break Time

    +
    +
    +

    Once you have this working, take a break.

    +

    When we return, we'll try a saner approach to getting data from online

    + + + + +
    +
    +
    +

    Another Approach

    -

    Scraping web pages is tedious and inherently brittle

    -

    The owner of the website updates their layout, your code breaks

    -

    But there is another way to get information from the web in a more normalized +

    +

    Scraping web pages is tedious and inherently brittle

    +
    +

    The owner of the website updates their layout, your code breaks

    +

    But there is another way to get information from the web in a more normalized fashion

    -

    Web Services

    +

    Web Services

    +
    +
    @@ -1001,15 +1338,18 @@

    Early Web Services

    RSS is one of the earliest forms of Web Services

    -
      +
      + -

      A single web-based endpoint provides a dynamically updated listing of +

      A single web-based endpoint provides a dynamically updated listing of content

      -

      Implemented in pure HTTP. Returns XML

      -

      Atom is a competing, but similar standard

      +

      Implemented in pure HTTP. Returns XML

      +

      Atom is a competing, but similar standard

      +

      There's a solid Python library for consuming RSS: feedparser.

      +
      @@ -1020,31 +1360,26 @@

      Early Web Services

      RSS Document

      -
      -
      -class tiny
      -
      - -
      <?xml version="1.0" encoding="UTF-8" ?>
      -<rss version="2.0">
      -<channel>
      -  <title>RSS Title</title>
      -  <description>This is an example of an RSS feed</description>
      -  <link>http://www.someexamplerssdomain.com/main.html</link>
      -  <lastBuildDate>Mon, 06 Sep 2010 00:01:00 +0000 </lastBuildDate>
      -  <pubDate>Mon, 06 Sep 2009 16:45:00 +0000 </pubDate>
      -  <ttl>1800</ttl>
      -
      -  <item>
      -    <title>Example entry</title>
      -    <description>Here is some text containing an interesting description.</description>
      -    <link>http://www.wikipedia.org/</link>
      -    <guid>unique string per item</guid>
      -    <pubDate>Mon, 06 Sep 2009 16:45:00 +0000 </pubDate>
      -  </item>
      +      
      <?xml version="1.0" encoding="UTF-8" ?>
      +<rss version="2.0">
      +<channel>
      +  <title>RSS Title</title>
      +  <description>This is an example of an RSS feed</description>
      +  <link>http://www.someexamplerssdomain.com/main.html</link>
      +  <lastBuildDate>Mon, 06 Sep 2010 00:01:00 +0000 </lastBuildDate>
      +  <pubDate>Mon, 06 Sep 2009 16:45:00 +0000 </pubDate>
      +  <ttl>1800</ttl>
      +
      +  <item>
      +    <title>Example entry</title>
      +    <description>Here is some text containing an interesting description.</description>
      +    <link>http://www.wikipedia.org/</link>
      +    <guid>unique string per item</guid>
      +    <pubDate>Mon, 06 Sep 2009 16:45:00 +0000 </pubDate>
      +  </item>
         ...
      -</channel>
      -</rss>
      +</channel>
      +</rss>
       
      @@ -1059,14 +1394,17 @@

      XML-RPC

      RSS provides a pre-defined data set, can we also allow calling procedures to get more dynamic data?

      -

      We can! Enter XML-RPC (Remote Procedure Call)

      +
      +

      We can! Enter XML-RPC (Remote Procedure Call)

      • Provides a set of defined procedures which can take arguments
      • Calls are made via HTTP GET, by passing an XML document
      • Returns from a call are sent to the client in XML
      -

      There is an interactive example of this at the end of this session. We will -not go through it here, though.

      +

      In python, you can access XML-RPC services using xmlrpclib from the +standard library

      +

      We will not cover XML-RPC here, though.

      +
      @@ -1077,7 +1415,8 @@

      XML-RPC

      Beyond XML-RPC

      -
        +
        +
        • XML-RPC allows introspection
        • XML-RPC forces you to introspect to get information
        • Wouldn't it be nice to get that automatically?
        • @@ -1088,7 +1427,8 @@

          Beyond XML-RPC

        • XML-RPC only allows calling methods, nothing else
        • wouldn't it be nice to have contextual data as well?
        -

        Enter SOAP: Simple Object Access Protocol

        +

        Enter SOAP: Simple Object Access Protocol

        +
        @@ -1120,14 +1460,14 @@

        SOAP in Python

        There is no standard library module that supports SOAP directly.

        +
        • The best-known and best-supported module available is Suds
        • The homepage is https://fedorahosted.org/suds/
        • It can be installed using easy_install or pip install
        -

        Again, there is a good example of using SOAP via the suds library at the -end of this session.

        -

        But we're going to move on

        +

        But we're going to move on

        +
        @@ -1139,12 +1479,15 @@

        Afterword

        SOAP (and XML-RPC) have some problems:

        +
        • XML is pretty damned inefficient as a data transfer medium
        • Why should I need to know method names?
        • If I can discover method names at all, I have to read a WSDL to do it?
        -

        Suds is the best we have, and it hasn't been updated since Sept. 2010.

        +

        Suds is the best we have, and it hasn't been updated since Sept. 2010.

        +

        There appear to be maintenance forks of Suds, but they are sketchy.

        +
        @@ -1155,7 +1498,7 @@

        Afterword

        If Not XML, Then What?

        -

        JSON

        +

        JSON

        @@ -1167,22 +1510,19 @@

        JSON

        JavaScript Object Notation:

        +
        • a lightweight data-interchange format
        • easy for humans to read and write
        • easy for machines to parse and generate
        -

        Based on Two Structures:

        -
          +

          Based on Two Structures:

          +
          • object: { string: value, ...}
          • array: [value, value, ]
          -
          -
          -center incremental
          -
          - -

          pythonic, no?

          +

          pythonic, no?

          +
        @@ -1194,6 +1534,7 @@

        JSON Data Types

        JSON provides a few basic data types (see http://json.org/):

        +
        • string: unicode, anything but ", \ and control characters
        • number: any number, but json does not use octal or hexadecimal
        • @@ -1202,7 +1543,8 @@

          JSON Data Types

        • false
        • null
        -

        No date type? OMGWTF??!!1!1

        +

        No date type? OMGWTF??!!1!1

        +
        @@ -1213,18 +1555,25 @@

        JSON Data Types

        Dates in JSON

        -

        Option 1 - Unix Epoch Time (number):

        +

        You have two options:

        +
        +
        +

        Option 1 - Unix Epoch Time (number):

        >>> import time
         >>> time.time()
         1358212616.7691269
         
        -

        Option 2 - ISO 8661 (string):

        +
        +
        +

        Option 2 - ISO 8661 (string):

        >>> import datetime
         >>> datetime.datetime.now().isoformat()
         '2013-01-14T17:18:10.727240'
         
        +
        +
        @@ -1236,6 +1585,7 @@

        JSON in Python

        You can encode python to json, and decode json back to python:

        +
        >>> import json
         >>> array = [1,2,3]
         >>> json.dumps(array)
        @@ -1249,7 +1599,8 @@ 

        JSON in Python

        True
        -

        Customizing the encoder or decoder class allows for specialized serializations

        +

        Customizing the encoder or decoder class allows for specialized serializations

        +
        @@ -1262,9 +1613,11 @@

        JSON in Python

        the json module also supports reading and writing to file-like objects via json.dump(fp) and json.load(fp) (note the missing 's')

        -

        Remember duck-typing. Anything with a .write and a .read method is +

        +

        Remember duck-typing. Anything with a .write and a .read method is file-like

        -

        This usage can be much more memory-friendly with large files/sources

        +

        This usage can be much more memory-friendly with large files/sources

        +
        @@ -1277,21 +1630,13 @@

        What about WSDL?

        SOAP was invented in part to provide completely machine-readable interoperability.

        -

        Does that really work in real life?

        -

        Hardly ever

        - - - - -
        - -
        -

        What about WSDL?

        -
        -
        -

        Another reason was to provide extensibility via custom types

        -

        Does that really work in real life?

        -

        Hardly ever

        +
        +

        Does that really work in real life?

        +

        Hardly ever

        +

        Another reason was to provide extensibility via custom types

        +

        Does that really work in real life?

        +

        Hardly ever

        +
        @@ -1304,7 +1649,10 @@

        Why Do All The Work?

        So, if neither of these goals is really achieved by using SOAP, why pay all the overhead required to use the protocol?

        -

        Enter REST

        +
        +

        Is there another way we could consider approaching the problem?

        +

        Enter REST

        +
        @@ -1315,24 +1663,15 @@

        Why Do All The Work?

        REST

        -
        -
        -class center
        -
        - -

        Representational State Transfer

        +

        Representational State Transfer

        +
        • Originally described by Roy T. Fielding (worth reading)
        • Use HTTP for what it can do
        • -
        • Read more in this book*
        • +
        • Read more in RESTful Web Services*
        -
        -
        -image-credit incremental
        -
        - -

        * Seriously. Buy it and read -(<http://www.crummy.com/writing/RESTful-Web-Services/)

        +

        * Seriously. Buy it and read it

        +
        @@ -1344,21 +1683,23 @@

        A Comparison

        The XML-RCP/SOAP way:

        -
          +
          • POST /getComment HTTP/1.1
          • POST /getComments HTTP/1.1
          • POST /addComment HTTP/1.1
          • POST /editComment HTTP/1.1
          • POST /deleteComment HTTP/1.1
          -

          The RESTful way:

          -
            +
            +

            The RESTful way:

            +
            • GET /comment/<id> HTTP/1.1
            • GET /comment HTTP/1.1
            • POST /comment HTTP/1.1
            • PUT /comment/<id> HTTP/1.1
            • DELETE /comment/<id> HTTP/1.1
            +
            @@ -1369,10 +1710,12 @@

            A Comparison

            ROA

            -

            This is Resource Oriented Architecture

            -

            The URL represents the resource we are working with

            -

            The HTTP Method represents the action to be taken

            -

            The HTTP Code returned tells us the result (whether success or failure)

            +

            REST is a Resource Oriented Architecture

            +
            +

            The URL represents the resource we are working with

            +

            The HTTP Method indicates the action to be taken

            +

            The HTTP Code returned tells us the result (whether success or failure)

            +
            @@ -1383,79 +1726,24 @@

            ROA

            HTTP Codes Revisited

            -
            -
            -class small
            -
            - +

            POST /comment HTTP/1.1 (creating a new comment):

            -
              +
              • Success: HTTP/1.1 201 Created
              • Failure (unauthorized): HTTP/1.1 401 Unauthorized
              • Failure (NotImplemented): HTTP/1.1 405 Not Allowed
              • Failure (ValueError): HTTP/1.1 406 Not Acceptable
              -
              -
              -small incremental
              -
              -

              PUT /comment/<id> HTTP/1.1 (edit comment):

              -
                +
                • Success: HTTP/1.1 200 OK
                • Failure: HTTP/1.1 409 Conflict
                -
                -
                -small incremental
                -
                -

                DELETE /comment/<id> HTTP/1.1 (delete comment):

                -
                  -
                • Success: HTTP/1.1 204 No Content
                • -
                - - - - -
            - -
            -

            HTTP Is Stateless

            -
            -
            -

            No individual request may be assumed to know anything about any other request.

            -

            All the required information representing the possible actions to take should -be present in every response.

            -

            Thus: HATEOAS

            - - - - -
            -
            -
            -

            HATEOAS

            -
            -
            -

            Hypermedia As The Engine Of Application State

            - - - - -
            -
            -
            -

            Applications are State Engines

            -
            -
            -

            A State Engine is a machine that provides states for a resource to be in and -transitions to move resources between states. A Restful api should:

              -
            • provide information about the current state of a resource
            • -
            • provide information about available transitions for that resource (URIs)
            • -
            • provide all this in each HTTP response
            • +
            • Success: HTTP/1.1 204 No Content
            +
      @@ -1467,8 +1755,10 @@

      Playing With REST

      Let's take a moment to play with REST.

      -

      We'll use a common, public API provided by Google.

      -

      Geocoding

      +
      +

      We'll use a common, public API provided by Google.

      +

      Geocoding

      +
      @@ -1480,18 +1770,12 @@

      Geocoding with Google APIs

      https://developers.google.com/maps/documentation/geocoding

      -
      +

      Open a python interpreter using our virtualenv:

      -
      -
      -class small
      -
      -
      (soupenv)$ python
       
      -
      -
      >>> import requests
      +
      >>> import requests
       >>> import json
       >>> from pprint import pprint
       >>> url = 'http://maps.googleapis.com/maps/api/geocode/json'
      @@ -1503,6 +1787,7 @@ 

      Geocoding with Google APIs

      ... pprint(data)
      +
      @@ -1515,7 +1800,8 @@

      Reverse Geocoding

      You can do the same thing in reverse, supply latitude and longitude and get back address information:

      -
      >>> location = data['results'][0]['geometry']['location']
      +
      +
      >>> location = data['results'][0]['geometry']['location']
       >>> latlng="{lat},{lng}".format(**location)
       >>> parameters = {'latlng': latlng, 'sensor': 'false'}
       >>> resp = requests.get(url, params=paramters)
      @@ -1524,8 +1810,9 @@ 

      Reverse Geocoding

      ... pprint(data)
      -

      Notice that there are a number of results returned, ordered from most specific +

      Notice that there are a number of results returned, ordered from most specific to least.

      +
      @@ -1533,18 +1820,20 @@

      Reverse Geocoding

      -

      Mash It Up

      +

      Mashing It Up

      -

      Let's add a new function to mashup.py. It will:

      -
        -
      • take a single listing from our craiglist work
      • -
      • format the location data provided in that listing properly
      • -
      • make a reverse geocoding lookup using the google api above
      • -
      • add the best available address to the listing
      • -
      • return the updated listing
      • -
      -

      Call it add_address

      +

      Google's geocoding data is quite nice.

      +
      +

      But it's not in a format we can use directly to create a map

      +

      For that we need geojson

      +

      Moreover, formatting the data for all those requests is going to get +tedious.

      +

      Luckily, people create wrappers for popular REST apis like google's +geocoding service.

      +

      Once such wrapper is geocoder, which provides not only google's service, +but many others under a single umbrella.

      +
      @@ -1552,29 +1841,52 @@

      Mash It Up

      -

      My Solution

      +

      Install geocoder

      -
      # add an import
      -import json
      +      

      Install geocoder into your soupenv so that it's available to use:

      +
      (soupenv)$ pip install geocoder
      +
      +
      +
      +

      Our final step for tonight will be to geocode the results we have scraped +from the inspection site.

      +

      We'll then convert that to geojson, insert our own properties and map +the results.

      +

      Let's begin by converting our script so that what we have so far is +contained in a generator function

      +

      We'll eventually sort our results and generate the top 10 or so for +geocoding.

      +

      Open up mashup.py and copy everthing in the main block.

      +
      + -# and a function -def add_address(listing): - api_url = 'http://maps.googleapis.com/maps/api/geocode/json' - loc = listing['location'] - latlng_tmpl = "{data-latitude},{data-longitude}" - parameters = { - 'sensor': 'false', - 'latlng': latlng_tmpl.format(**loc), + + +
      +
      +
      +

      Make a Generator Function

      +
      +
      +

      Add a new function result_generator to the mashup.py script. Paste the +code you copied from the main block and then update it a bit:

      +
      def result_generator(count):
      +    use_params = {
      +        'Inspection_Start': '2/1/2013',
      +        'Inspection_End': '2/1/2015',
      +        'Zip_Code': '98101'
           }
      -    resp = requests.get(api_url, params=parameters)
      -    data = json.loads(resp.text)
      -    if data['status'] == 'OK':
      -        best = data['results'][0]
      -        listing['address'] = best['formatted_address']
      -    else:
      -        listing['address'] = 'unavailable'
      -    return listing
      +    # html, encoding = get_inspection_page(**use_params)
      +    html, encoding = load_inspection_page('inspection_page.html')
      +    parsed = parse_source(html, encoding)
      +    content_col = parsed.find("td", id="contentcol")
      +    data_list = restaurant_data_generator(content_col)
      +    for data_div in data_list[:count]:
      +        metadata = extract_restaurant_metadata(data_div)
      +        inspection_data = get_score_data(data_div)
      +        metadata.update(inspection_data)
      +        yield metadata
       
      @@ -1584,32 +1896,20 @@

      My Solution

      -

      Add Address to Output

      +

      Test It Out

      -

      Go ahead and bolt the new function into our __main__ block:

      -
      import pprint
      -if __name__ == '__main__':
      -    params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2}
      -    html, encoding = fetch_search_results(**params)
      -    doc = parse_source(html, encoding)
      -    for listing in extract_listings(doc):
      -        listing = add_address(listing)
      -        pprint.pprint(listing)
      +      

      Update the main block of your mashup.py script to use the new function:

      +
      +
      if __name__ == '__main__':
      +    for result in result_generator(10):
      +        print result
       
      -
      -

      And give the result a whirl:

      -
      -
      -class small
      -
      - -
      (soupenv)$ python mashup.py
      -{'address': u'123 Some Street, Chapel Hill, NC ...',
      - 'description': u'3 bedroom 2 bathroom unit is move in ready!'
      - ...
      -}
      +

      Then run your script and verify that the only thing that has changed is the +number of results that print.

      +
      (soupenv)$ python mashup.py
      +# you should see 10 dictionaries print here.
       
      @@ -1620,14 +1920,21 @@

      Add Address to Output

      -

      One More Step

      +

      Add Geocoding

      -

      I'm a big fan of walking places.

      -

      So I'd like to find an apartment that is located somewhere 'walkable'

      -

      There's an API for that!

      -

      http://www.walkscore.com/professional/api.php

      -

      If you haven't already, sign up for an API key now.

      +

      The API for geocoding with geocoder is the same for all providers.

      +
      +

      You give an address, it returns geocoded data.

      +

      You provide latitude and longitude, it provides address data

      +
      >>> response = geocoder.google(<address>)
      +>>> response.json
      +# json result data
      +>>> response.geojson
      +# geojson result data
      +
      +
      +
      @@ -1635,14 +1942,27 @@

      One More Step

      -

      Getting a Walk Score

      +

      Adding The Function

      -

      The API documentation tells us we have to provide lat, lon and address to get -a walk score, along with our API key.

      -

      It also tells us we have a choice of XML or JSON output. Let's use JSON

      -

      Let's poke at it and see what we get back

      -

      Fire up your virtualenv Python interpreter again

      +

      Let's add a new function get_geojson to mashup.py

      +
      +

      It will

      +
        +
      • Take a result from our search as it's input
      • +
      • Get geocoding data from google using the address of the restaurant
      • +
      • Return the geojson representation of that data
      • +
      +

      Try to write this function on your own

      +
      def get_geojson(result):
      +    address = " ".join(result.get('Address', ''))
      +    if not address:
      +        return None
      +    geocoded = geocoder.google(address)
      +    return geocoded.geojson
      +
      +
      +
      @@ -1650,27 +1970,34 @@

      Getting a Walk Score

      -

      Making an API Call

      +

      Testing It Out

      -
      (soupenv)$ python
      +      

      Next, update our main block to get the geojson for each result and print +it:

      +
      +
      if __name__ == '__main__':
      +    for result in result_generator(10):
      +        geojson = get_geojson(result)
      +        print geojson
       
      -
      >>> import requests
      ->>> import json
      ->>> from pprint import pprint
      ->>> api_url = 'http://api.walkscore.com/score'
      ->>> lat, lon = 35.9108986, -79.053783
      ->>> addr = '120 E. Cameron Avenue Chapel Hill, NC 27599'
      ->>> params = {'lat': lat, 'lon', lon, 'address': addr}
      ->>> params['wsapikey'] = '<type your api key here>'
      ->>> params['format'] = 'json'
      ->>> resp = requests.get(api_url, params=params)
      ->>> data = json.loads(resp.text)
      ->>> if data['status'] == 1:
      -...     pprint(data)
      +

      Then test your results by running your script:

      +
      (soupenv)$ python mashup.py
      +{'geometry': {'type': 'Point', 'coordinates': [-122.3393005, 47.6134378]},
      + 'type': 'Feature', 'properties': {'neighborhood': 'Belltown',
      + 'encoding': 'utf-8', 'county': 'King County', 'city_long': 'Seattle',
      + 'lng': -122.3393005, 'quality': u'street_address', 'city': 'Seattle',
      + 'confidence': 9, 'state': 'WA', 'location': u'1933 5TH AVE SEATTLE, WA 98101',
      + 'provider': 'google', 'housenumber': '1933', 'accuracy': 'ROOFTOP',
      + 'status': 'OK', 'state_long': 'Washington',
      + 'address': '1933 5th Avenue, Seattle, WA 98101, USA', 'lat': 47.6134378,
      + 'postal': '98101', 'ok': True, 'road_long': '5th Avenue', 'country': 'US',
      + 'country_long': 'United States', 'street': '5th Ave'},
      + 'bbox': [-122.3406494802915, 47.6120888197085, -122.3379515197085, 47.6147867802915]}
       
      +
      @@ -1678,18 +2005,23 @@

      Making an API Call

      -

      Mash It Up

      +

      Update Geojson Properties

      -

      Add a function to mashup.py that:

      +

      The properties of our geojson records are filled with data we don't really +care about.

      +
      +

      Let's replace that information with some of the metadata from our +inspection results.

      +

      We'll update our get_geojson function so that it:

        -
      • takes a single listing from our craigslist search
      • -
      • uses the location and address to make a walkscore api call
      • -
      • adds the description, walkscore and ws_link parameters to the listing
      • -
      • returns the updated listing
      • +
      • Builds a dictionary containing only the values we want from our +inspection record.
      • +
      • Converts list values to strings (geojson requires this)
      • +
      • Replaces the 'properties' of our geojson with this new data
      • +
      • Returns the modified geojson record
      -

      Call the function add_walkscore

      -

      Bolt it into our script's __main__ block where it fits best

      +
      @@ -1697,29 +2029,50 @@

      Mash It Up

      -

      My Solution

      +

      Write the Function

      -
      def add_walkscore(listing):
      -    api_url = 'http://api.walkscore.com/score'
      -    apikey = '<your api key goes here>'
      -    loc = listing['location']
      -    if listing['address'] == 'unavailable':
      -        return listing
      -    parameters = {
      -        'lat': loc['data-latitude'], 'lon': loc['data-longitude'],
      -        'address': listing['address'], 'wsapikey': apikey,
      -        'format': 'json'
      -    }
      -    resp = requests.get(api_url, params=parameters)
      -    data = json.loads(resp.text)
      -    if data['status'] == 1:
      -        listing['ws_description'] = data['description']
      -        listing['ws_score'] = data['walkscore']
      -        listing['ws_link'] = data['ws_link']
      -    return listing
      +      

      See if you can make the updates on your own.

      +
      def get_geojson(result):
      +    # ...
      +    geocoded = geocoder.google(address)
      +    geojson = geocoded.geojson
      +    inspection_data = {}
      +    use_keys = (
      +        'Business Name', 'Average Score', 'Total Inspections', 'High Score'
      +    )
      +    for key, val in result.items():
      +        if key not in use_keys:
      +            continue
      +        if isinstance(val, list):
      +            val = " ".join(val)
      +        inspection_data[key] = val
      +    geojson['properties'] = inspection_data
      +    return geojson
      +
      +
      + + + + +
      +
      +
      +

      Making Mappable Data

      +
      +
      +

      We are now generating a series of geojson Feature objects.

      +
      +

      To map these objects, we'll need to create a file which contains a +geojson FeatureCollection.

      +

      The structure of such a collection looks like this:

      +
      {'type': 'FeatureCollection', 'features': [...]}
       
      +

      Let's update our main function to append each feature to such a +structure.

      +

      Then we can dump the structure as json to a file.

      +
      @@ -1727,24 +2080,28 @@

      My Solution

      -

      My Results

      +

      Update the Script

      -
      if __name__ == '__main__':
      -    params = {'minAsk': 500, 'maxAsk': 1000, 'bedrooms': 2}
      -    html, encoding = fetch_search_results(**params)
      -    doc = parse_source(html, encoding)
      -    for listing in extract_listings(doc):
      -        listing = add_address(listing)
      -        listing = add_walkscore(listing)
      -        pprint.pprint(listing)
      +      

      In mashup.py update the main block like so:

      +
      +
      # add an import at the top:
      +import json
      +
      +if __name__ == '__main__':
      +    total_result = {'type': 'FeatureCollection', 'features': []}
      +    for result in result_generator(10):
      +        geojson = get_geojson(result)
      +        total_result['features'].append(geojson)
      +    with open('my_map.json', 'w') as fh:
      +        json.dump(total_result, fh)
       
      -
      -

      Let's try it out:

      -
      (soupenv)$ python mashup.py
      +

      When you run the script nothing will print, but the new file will appear.

      +
      (soupenv)$ python mashup.py
       
      +

      This script is available as resources/session07/mashup_5.py

      @@ -1753,14 +2110,17 @@

      My Results

      -

      Wrap Up

      +

      Display the Results

      -

      We've built a simple mashup combining data from three different sources.

      -

      As a result we can now make a listing of apartments ranked by the walkability -of their neighborhood.

      -

      What other data sources might we use? Check out -http://www.programmableweb.com/apis/directory to see some of the possibilities

      +

      Once the new file is written you are ready to display your results.

      +
      +

      Open your web browser and go to http://geojson.io

      +

      Then drag and drop the new file you wrote onto the map you see there.

      +
      +../_images/geojson-io.png +
      +
      @@ -1768,18 +2128,50 @@

      Wrap Up

      -

      Addenda

      +

      Wrap Up

      -

      Altough we do not have class time to do walkthrough examples of using XML-RPC -and SOAP, I have provided exercises in each as an addenda to this session. If -you have the time and the interest, please try them out.

      -
      -
      -class center
      -
      +

      We've built a simple mashup combining data from different sources.

      +
      +

      We scraped health inspection data from the King County government site.

      +

      We geocoded that data.

      +

      And we've displayed the results on a map.

      +

      What other sources of data might we choose to combine?

      +

      Check out programmable web +to see some of the possibilities

      +
      + + -

      Web Service API Addenda

      + +
      +
      +
      +

      Homework

      +
      +
      +
      +

      For your homework this week, you'll be polishing this mashup.

      +
      +

      Begin by sorting the results of our search by the average score.

      +

      Then, update your script to allow the user to choose how to sort, by +average, high score or most inspections:

      +
      (soupenv)$ python mashup.py highscore
      +
      +
      +

      Next, allow the user to choose how many results to map:

      +
      (soupenv)$ python mashup.py highscore 25
      +
      +
      +

      Or allow them to reverse the results, showing the lowest scores first:

      +
      (soupenv)$ python mashup.py highscore 25 reverse
      +
      +
      +

      If you're feeling particularly adventurous, see if you can use the +argparse module from the standard library to handle command line +arguments

      +
      +
      @@ -1787,14 +2179,26 @@

      Addenda

      -

      Homework

      +

      More Fun

      -

      For your homework this week, you'll be creating a mashup of your own.

      -

      Use the programmable web api directory from above as a source of inspiration.

      -

      Your mashup should combine at least two sources of data in some way that -tickles your fancy.

      -

      Your results need not look pretty. Focus on data acquisition and processing.

      +

      Next, try adding a bit of information to your map by setting the +marker-color property. This will display a marker with the provided +css-style color (#FF0000)

      +
      +

      See if you can make the color change according to the values used for the +sorting of the list. Either vary the intensity of the color, or the hue.

      +

      Finally, if you are feeling particularly frisky, you can update your script +to automatically open a browser window with your map loaded on +geojson.io.

      +

      To do this, you'll want to read about the webbrowser module from the +standard library.

      +

      In addition, you'll want to read up on using the URL parameters API for +geojson.io. Click on the help tab in the sidebar to view the +information.

      +

      You will also need to learn about how to properly quote special characters +for a URL, using the urllib quote function.

      +
      @@ -1802,26 +2206,14 @@

      Homework

      -

      Submitting Your Homework

      +

      Submitting Your Work

      -

      To submit your homework:

      -
        -
      • Create a new python script in assignments/session03. It should be -something I can run with:

        -
        $ python your_script.py
        -
        -
        -
      • -
      • Provide me with a text file describing what you did. Tell me about the -sources you use, how you combine them, what you hoped to achieve.

        -
      • -
      • Include any instruction I might need to successfully run your script.

        -
      • -
      • Commit your changes to your fork of the repo in github, then open a pull -request.

        -
      • -
      +

      Create a github repository to contain your mashup work. Start by populating it +with the script as we finished it today (mashup_5.py).

      +

      As you implement the above features, commit early and commit often.

      +

      When you're ready for us to look it over, email a link to your repository to +Maria and I.

      @@ -1829,10 +2221,12 @@

      Submitting Your Homework

      -

      Extra Credit

      +

      Final Thoughts

      -

      Bonus points if you write unit tests for the elements of your mashup.

      +

      In preparation for our work next week, I'd like you to get started a bit ahead +of time.

      +

      Please read and follow along with this basic intro to Django.

      diff --git a/slides/searchindex.js b/slides/searchindex.js index 2f1eba8e..c5837a0c 100644 --- a/slides/searchindex.js +++ b/slides/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:42,terms:{content_length:3,interchang:[2,4],four:0,database_url:6,prefix:[0,7],af_rout:7,skeleton:[7,4],whose:3,aug:4,sorri:4,ipproto_raw:7,crisew:7,concret:4,swap:3,under:3,dest_dir:4,spec:3,formatd:0,digit:[0,8],everi:[0,2,3,4],govern:0,vast:2,chapel:2,location_attr:2,fetch_search_result:2,cmd:0,herbert:8,imaplib:0,verif:6,direct:[0,4],second:[0,7,2,3,4,6,8],street:2,nthi:8,even:[0,3,4],introspect:2,list_of_tcp_and_udp_port_numb:7,net:0,ever:[2,3],told:6,ipproto_tcp:7,behavior:[7,4,8],never:[7,3,4],here:[0,7,2,3,4,6,8],"4xx":0,path:[],redeploi:6,credit:[],webfact:0,permit:0,portabl:3,golden:8,pprint:[2,3],heroku_postgresql_maroon_url:6,wikimedia:[4,8],avenu:2,txt:[0,7,4,6],unit:2,yore:8,describ:[7,2,3],would:[0,2,3,4,6,8],init:4,dnt:0,call:[],admin_password:6,typo:4,recommend:6,calc:3,strip_filt:8,tell:[0,7,2,3,4,6],fastcgi:3,relat:4,panach:8,notic:[0,7,2,3,4,6,8],phone:8,unpack:4,must:[0,7,3,4,6,8],af_unix:7,join:[0,3],flaskenv:[],restor:[4,6],worth:[2,4,8],conceptu:8,introduc:[4,8],root:[3,6],defer:6,bookapp:3,give:[7,2,3,4,6],smtp:[],indic:0,unavail:2,want:[0,2,3,4,6,8],dele:0,end:[0,7,2,3,6,8],learning_journ:[],frobozz:0,classifi:2,how:[],sever:[2,3,6],env:[3,4],interview:0,verifi:[],config:[],updat:[],anon_1:4,after:[3,4,8],superus:4,diagram:4,befor:[0,7,2,3,4,6,8],wrong:4,lat:2,beautifulsoup4:2,demonstr:[0,4],domin:4,third:3,classmethod:[4,6,8],ipproto_icmp:7,wsapikei:2,greet:0,imposs:4,alias:7,scoped_sess:4,verb:0,green:0,incorpor:[3,6],enter:[0,2,3,8],mechan:6,engine_from_config:[4,6,8],order:[2,4,6,8],hob7v7guwir4n1v:6,origin:[2,3,4],belong:[0,7,6],over:[7,2,4,8],fall:4,becaus:[0,4,6,8],jpeg:0,privileg:[3,4],keyboard:0,flexibl:4,vari:[0,7],fit:2,fix:[0,3,4,8],simple_cli:0,toolbelt:[6,8],better:[7,2,4,6],offic:0,"1xx":0,easier:[4,8],descend:2,them:[0,7,2,3,4,6,8],thei:[0,7,2,3,4,6,8],id73:3,safe:[],sqlite3:4,bang:3,promis:7,initializedb:[],rental:[],choic:[7,2,4],walkthrough:2,bonu:2,getvalu:3,rocki:6,timeout:2,each:[0,7,2,3,4,6],debug:[],went:[0,8],utmcmd:0,bone:8,mean:[0,7,2,3,4,6,8],resum:2,logo:8,network:[7,2,8],goe:[2,4,8],god:4,content:[],got:[0,3,4,6,8],forth:[0,3],rail:0,nightmar:4,situat:[0,4],free:[6,8],ineffici:2,hand:[2,6,8],getservbynam:7,uiuc:3,puzzl:3,traceback:3,static_url:8,filter:[],iso:2,isn:[0,2,3,8],subtl:2,confus:[7,8],"__or__":7,rang:[0,2,8],render:[],independ:[0,4],rank:2,hook:[3,4],instruct:[7,2,3,4],alreadi:[0,7,2,4,6,8],wrapper:[7,2],agre:3,fantast:4,primari:[4,8],top:[2,4,6,8],"0x1103e38d0":4,sometim:[0,4],imap4rev1:0,necessarili:3,master:[4,6],too:[0,7,2,3,4,8],tom:4,logged_in:6,namespac:2,pubdat:2,lighttpd:3,took:4,incur:6,next_sibl:2,target:[2,3],keyword:[2,6,8],provid:[],tree:[4,6],matter:[2,6],arriv:8,minut:[0,7,8],latitud:2,rad:7,fashion:[2,3],bs4:2,walkscor:2,modern:4,mine:0,raw:0,af_sna:7,pylon:4,increment:2,"__main__":[2,3,6],seen:[0,7,2,3,4,6,8],seem:[3,6],seek:[4,6],latter:4,thorough:8,"0x1103e3fd0":4,shelf:4,transmit:4,hypertext_transfer_protocol:0,simplifi:[],endfor:[6,8],sock_dgram:7,though:[0,2,6],usernam:[0,6,8],guess_typ:0,minask:2,regular:4,alan:[4,8],bsd:7,models_id:4,typ:7,maria:[7,3],tradit:8,don:[0,7,2,3,4,6,8],doc:[0,2,4,6],doe:[],declar:[3,4,8],passwordfield:6,section:[0,3,4,8],dot:8,asid:[],opposit:8,random:6,syntax:[],radio:8,protocol:[],involv:6,absolut:8,exactli:[0,7,8],menu:[0,3],explain:[3,4],response_head:3,apach:[],restaur:2,scgi:3,folder:[7,3,4,6,8],resolve_uri:0,patter:8,stop:[],reconstruct:3,bar:[0,7,2,8],ietf:[0,3],baz:[0,2],buffsiz:7,reload:[0,3,6],metadata:4,steal:[4,6],title_info:3,respond:[],get_const:7,serve_forev:3,result:[],respons:[],fail:[0,7,6],best:[2,4,6],awar:6,pythoncert:[4,8],wikipedia:[0,7,2,4],urllib:2,yet:[0,7,4,6,8],figur:[7,3,4],score:[],outstand:8,awai:[],approach:[],attribut:[2,4,6,8],extend:[2,6,8],extens:[0,2,6],html5:8,toler:2,pull:[],protect:0,accident:7,expos:3,howev:[3,4,8],against:[0,3,6,8],logic:[4,6,8],browser:[],com:[0,7,2,3,4,6,8],get_appset:[4,6,8],assur:7,trunk:8,trust:4,assum:[7,2,4],speak:[],bathroom:2,chrome:0,add_rout:[4,6,8],been:[2,3,4,6,8],much:[0,7,2,3,4,8],interpret:[0,7,2,3,4,8],interest:2,futur:7,raise_for_statu:2,tini:2,quickli:[0,4],life:[0,2],xxx:3,setup_log:[4,8],telnet:7,ani:[0,7,2,3,4,6,8],matchpath:3,"catch":0,build_env:3,ugli:0,ident:6,servic:[],properti:[7,2,3,6],commerci:4,calcul:3,apikei:2,neat:0,seven:0,af_appletalk:7,shebang:3,toolkit:0,kwarg:2,fnhg:0,tediou:[2,4],fedorahost:2,conn:[0,7],datetim:2,perform:[3,4,8],suggest:[0,6],couchdb:4,craigslist:2,complex:[],split:0,version_str:3,complet:[],rfc822:0,nic:7,hang:0,xyzzi:0,nix:3,rais:[0,7,2,3],editcom:2,"548kb":4,thu:[7,2,3],hypothet:4,inherit:[3,4,8],client:[],thi:[0,1,2,3,4,5,6,7,8,9,10],endif:[6,8],gzip:0,programm:2,everyth:[0,2,4,6,8],moreov:0,left:[4,6],identifi:[0,3,8],just:[0,7,2,3,4,6,8],photo:[2,3],human:[0,2,8],mysql_length:4,languag:[],alchemi:4,easi:[2,4,6,8],shout:8,"8bitmim":0,httpfound:[6,8],els:[0,2,4,6,8],hat:0,gave:4,opt:0,race:[6,8],mayb:3,preserv:[],parse_var:4,render_markdown:6,elabor:6,apart:[2,8],imap4_port:0,response_method_not_allow:0,specif:[7,2,3,4,6,8],deprec:4,reload_templ:4,arbitrari:[7,4,6],manual:4,hung:0,install_requir:4,underli:7,www:[0,7,2,3],right:[0,2,3,6,8],old:4,"0db8":7,nfrom:4,intern:[0,3],successfulli:[2,3,4],craiglist:2,transmiss:[0,7],total:[3,6],bottom:7,multipli:3,exectut:4,overcom:3,condit:[0,3],foo:[0,7,2,6,8],fieldstorag:3,localhost:[0,3,6,8],mailgat:0,oracl:4,bolt:2,repositori:[7,3,4,6,8],post:[0,2,3,6,8],"super":0,plug:0,obj:[4,8],surround:8,dinner:0,sept:2,produc:7,encod:[0,2,6],bound:[7,4],down:[2,6,8],creativ:[4,8],bufsiz:3,storag:[0,4],git:[4,6],deal:7,utmcsr:0,support:[0,2,3,4,6,8],hypermedia:2,"class":[],avail:[7,2,4,6,8],reli:6,request_method:[3,6],editor:[2,3],overhead:2,get_address_info:7,rcpt:0,fork:[0,2],head:[0,7,2,6,8],medium:[7,2],offer:[3,4,8],forc:2,hear:7,icmp:7,"true":[0,7,2,4,6,8],absent:3,attr:[2,8],type:[],maximum:7,until:[7,4],absenc:3,emit:3,nnn:2,featur:[3,4,6],af_decnet:7,"abstract":4,decrypt:0,proven:4,exist:[0,3,4,6,8],check:[],assembl:8,when:[0,7,2,3,4,6,8],role:8,jone:0,test:[],webob:4,roll:6,realiti:2,node:2,intend:[7,4],af_unspec:7,urllib2:2,iterm:3,receiv:[],longer:7,bullet:6,anywher:3,pbkdf2:6,regexp:[3,8],wtttzy:6,push:[0,4,6],serious:2,osx:[0,6],concept:[7,4,6],skip:4,jsonp:8,invent:[2,4],row:[],depend:[],flask:4,graph:8,readabl:[0,2,3,8],unpython:4,a0004:0,a0005:0,certainli:8,a0001:0,a0002:0,a0003:0,addon:6,query_str:3,sourc:[],string:[],congest:7,price_span:2,lru:4,kitten:4,ydood:8,my_index:4,brows:8,administr:3,level:[2,4,6],did:[],dig:[2,8],ipproto_udp:7,item:[2,3,4,8],team:4,quick:[],imap4:0,dir:[0,7],declarative_bas:4,upper:8,slower:7,thin:7,lstrip:3,htm:2,sign:[0,2,6],cost:6,port:[0,7,3,6],appear:[6,8],scaffold:4,current:[7,2,3,4],rst2xml:4,"3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4":6,response_bodi:3,deriv:[2,3],urlopen:2,gener:[0,7,2,3,4,6,8],unauthor:2,explicitli:[3,4],address:[],wait:[],shift:0,queue:7,bob:[0,4],commonli:7,ourselv:[0,6],ipc:7,semant:7,session1:7,extra:[],modul:[0,7,2,3,4,6],prefer:[0,3],repoz:4,seattl:2,marker:8,http_:3,smallish:7,market:4,types_map:0,prove:6,visit:[6,8],todai:[0,7,2,6,8],live:[],criteria:[0,4],msg:7,tightli:3,chapter:4,maxask:2,walkabl:2,visual:0,appendix:0,accept:[],postgresql:[],effort:2,content_typ:3,prepar:[],pretend:0,uniqu:[2,4,6,8],whatev:[7,8],purpos:[0,3,4,6,8],boilerpl:4,input1:2,stream:[7,4],predict:0,agent:[0,3],topic:8,app_factori:4,occur:7,entryeditform:6,alwai:[0,7,2,3,4,6],lxml:2,multipl:[3,4],charset:[0,8],write:[],anyon:[3,6,8],pure:2,xhtml:0,map:[],product:[4,6],max:[0,6,8],clone:[7,4,8],mac:0,"4th":2,mai:[0,7,2,3,4,6],data:[],classroom:4,gethostnam:7,practic:0,bookdb:3,explicit:8,predic:6,mangl:0,inform:[],"switch":4,tailor:0,combin:[2,3,4,6,8],printenv:3,callabl:[3,8],talk:[0,7,4,8],log_buff:0,ydwoh:8,ttl:2,gitignor:4,still:[0,2,4,8],dynam:[0,2,3,8],config_uri:[4,6,8],group:[7,3,4],"4z6rvnhte21mpljw5veive0eg57gn":6,authorization_polici:6,sec10:0,platform:6,window:[0,2,3,4,6],curli:8,mail:0,main:[0,2,4,6,8],non:0,noj:2,profession:2,initi:[0,3,4,6],answer:[],safari:0,half:7,now:[0,7,2,3,4,6,8],discuss:[7,3,4,8],term:[3,4],name:[0,7,2,3,4,6,8],simpl:[],interpr:4,server_softwar:3,magazin:8,path_transl:3,compil:6,domain:[],"0x105849b90":8,replac:[6,8],individu:[7,2,4,8],continu:[0,7,3,4,6],wsgi_1:3,protocol_vers:3,operand:3,accomplish:0,space:0,profil:7,formula:2,sensor:2,correct:[0,7,8],she:6,tmpl:8,myproject:6,earlier:[0,4,6],pseudocod:0,state:[],ch05s03:0,envelop:2,argv:[4,6],argn:6,org:[0,7,2,3],"byte":[7,2],search_param:2,care:[0,7,3],sign_in:6,wai:[0,2,3,4,6,8],question:[],default_permiss:6,syndic:2,refus:7,thing:[0,2,4,6,8],place:[7,2,3,4,6,8],router:3,think:[7,3,4,6,8],frequent:4,lambda:8,oper:[7,3,6,8],info:[7,3,4,6],directli:[7,2,4,8],onc:[0,7,2,3,4,6,8],arrai:2,yourself:0,acquisit:2,fast:4,open:[],size:[],urin:0,given:[0,7,2,4,8],sheet:8,convent:0,imap4_ssl_port:0,eachoth:4,paramt:2,lognam:3,conveni:[2,4],friend:6,prettier:8,grant:[3,6],especi:[2,3],memo:3,copi:[0,2,3,6,8],huh:0,artifact:4,github:[0,7,2,3,4,6,8],mostli:[0,7],attempt:7,than:[0,7,3,4,6,8],png:0,serv:[],were:[7,2,4],posit:7,seri:4,pre:2,internet_protocol_suit:7,sai:[0,3,4,6],angel:3,pro:7,argument:[0,7,2,3,4,6,8],larri:4,rent:2,notimplementederror:0,saw:4,shtml:0,engin:[],ipproto_:7,note:[0,7,2,3,4,6,8],wretch:3,take:[0,7,2,3,4,6,8],bcrypt:6,noth:[2,3,4,6,8],channel:[0,2,4],begin:[0,7,3,4,6,8],sure:[7,2,4,6,8],pain:[4,6],trace:4,normal:[2,4],buffer:[0,7],price:[],pair:[4,8],homepag:2,run_cgi:3,utmccn:0,later:0,"8mb":4,quantiti:2,create_al:4,link:[],shortnam:6,preambl:3,gracefulli:0,shot:2,show:[],subprocess:3,checkbox:8,xml:[],onli:[0,2,4,6,8],slow:7,codehilit:6,transact:[7,4,6],enough:[0,4,6],dict:[7,2,4],analyt:6,startswith:7,nearli:4,variou:[4,8],mung:0,clang:4,repo:2,ssl:0,cannot:[7,3,8],ssh:7,requir:[],reveal:3,entryfactori:6,yield:2,authenticated_userid:6,draft:0,where:[],summari:2,wiki:[0,7,2],n10:8,lng:2,web_application_hybrid:2,detect:6,review:[0,7,3,4,6,8],enumer:6,label:[6,8],getattr:7,between:[0,7,2,3,4],"import":[0,7,2,3,4,6,8],across:[7,2],parent:[3,4],elladan:7,tut:0,cycl:[4,8],portion:[3,8],come:[0,2,3,4,6,8],img:0,tutori:8,wherin:4,improv:[0,3,4,6],among:[7,4,8],intitalizedb:4,color:6,inspir:2,"__class__":2,exploit:3,imad1:0,artu:0,coupl:[7,2,3,4],hardli:2,mark:6,evangelista:[4,8],valueerror:[2,3],extract_list:2,avian:7,doesn:[0,7,2,3,4,6,8],howdi:8,standard:[0,7,2,3,4,6],"case":[0,3,4,8],interoper:2,cast:[2,4],outcom:[],scum:3,python_web:[4,8],ehlo:0,zipcod:2,advantag:[4,6],ctrl:0,canon:[7,3],worri:[7,6],blah:0,reqeuest:3,smalltalk:4,develop:[0,2,3,4,6,8],author:[3,6],cc0:[4,8],same:[0,7,2,3,4,6,8],epoch:2,html:[],pai:[2,6],eventu:4,week:[0,7,2,3,4,6,8],someexamplerssdomain:2,finish:[],assist:[3,4],someon:6,driven:[0,8],capabl:3,http_host:3,add_rount:6,mani:[0,7,2,3,4,6,8],appropri:[7,3,6,8],"__acl__":6,markup:6,without:[7,2,3,4,8],execut:[],excel:8,resp:[0,2],googleapi:2,interrupt:0,kill:[0,4],aspect:[4,6,8],flavor:2,nam:7,heffalump:7,hint:0,except:[0,7,3,4],param:[2,6],blog:0,ws_score:2,pile:2,blob:6,exercis:[],vulner:0,real:[],tranmiss:7,around:[7,2,3,6,8],read:[],psd:2,makin:8,traffic:0,mon:[0,2],redqueen:0,socket_tool:7,intel:0,whitespac:[0,2],integ:[7,4,6],server:[],benefit:[0,7],either:[0,8],cascad:8,output:[],manag:[7,4,6],fulfil:6,ipproto_ip:7,definit:8,"2xx":0,exit:4,posgresql:6,notabl:0,refer:[7,2,3,4,8],af_inet6:7,power:[7,4,6,8],broken:0,"__name__":[2,3,6],src:8,deflat:0,central:4,acl:6,microframework:4,srv:3,"19t01":6,act:[2,3],mytempl:[4,8],consid:[0,4,8],status_cod:2,console_script:4,isoformat:2,inbox:0,strip:[2,8],igmp:7,loc:2,buffer_s:7,httpnotfound:[6,8],her:6,set_authorization_polici:6,aren:[4,6],lon:2,strict:2,interfac:[0,7,3,4,6],ipv4:7,lot:[0,4,8],ipv6:7,"0x10b075ed0":4,hei:7,svn:8,handle_request:3,tupl:7,categor:0,congratul:[],freddi:8,notat:[2,8],dirti:[2,4],possibl:[7,2,3,8],"default":[7,3,4,6,8],start_respons:3,connect:[],gone:4,uid:0,certain:[0,7,2,4],deep:6,strongli:6,omgwtf:2,fill:[3,6,8],again:[0,7,2,3,4,6,8],models_valu:4,googl:[],compel:4,field:[2,3,4,6,8],valid:[0,2,6,8],compet:2,pathnam:[0,7],juic:8,sequenc:0,symbol:[7,8],briefli:8,transceiv:7,reduc:4,json_output:[],"1b6":0,directori:[0,2,3,4,6,8],descript:[],potenti:6,escap:6,unset:3,represent:[7,2,4],forget:6,roi:2,forbidden:6,scalar:4,abil:[0,4],cameron:2,follow:[0,7,3,4,6,8],disk:0,dsn:0,script_nam:3,af_inet:7,articl:[4,6,8],tail:6,those:[0,2,3,4],norm:0,hill:2,sound:2,liter:4,chameleon:8,far:[7,4],faq:0,util:[],candid:2,fan:2,fam:7,veri:[0,7,3,4,6,8],ticket:6,simple_app:3,webmast:0,list:[],last_nam:8,adjust:[],stderr:[0,3],small:[2,3],neighborhood:2,your_script:2,past:[4,6],design:[7,2,3,4,6,8],pass:[],further:[],by_nam:6,sud:2,sum:8,abl:[0,2,3,4,6,8],delet:[0,2,6],version:[0,2,3,4,6],tickl:2,primary_kei:[4,6],intersect:8,"public":[2,6,8],craigslist_result:2,hasn:2,full:[2,3,4],hash:[3,6],inher:2,goodby:0,strong:[6,8],modifi:0,rfc3875:3,valu:[],search:[],ahead:[7,2,3,6,8],popen:3,prior:6,action:[7,2,4,6,8],add_static_view:[4,8],via:[],transit:2,filenam:0,href:[2,3,6,8],famili:[],establish:[7,2],select:[0,4],hexadecim:2,distinct:0,stdout:[7,3,4],two:[0,7,2,3,4,6,8],taken:[2,6],flaw:8,octal:2,mozilla:[0,8],flag:[0,7,6],addcom:2,particular:[4,6,8],known:[7,2,6],cach:[0,4],none:[0,7,2,3,4,6,8],endpoint:[0,7,2],s3cr3t:6,hour:[0,7,8],hous:2,dev:[2,3,6],venusian:4,remain:6,paragraph:2,learn:[],abandon:2,rst2html:4,def:[0,7,2,3,4,6,8],ndate:7,prompt:[7,3,4],scan:[4,8],challeng:[0,2,6],registr:6,share:[],templat:[],explor:[7,2,4],phrase:[4,8],login_form:6,goal:[2,4],first_nam:8,secur:[],rather:0,anoth:[],comfort:8,divis:3,"__init__":[4,6,8],csv:[4,8],loginform:6,css:[],unabl:6,"545kb":4,resourc:[],referenc:8,okai:[0,2,4],"short":3,footer:8,proto:7,django:4,caus:4,egg:4,constitu:8,help:[0,7,2,4,8],"912ft":2,mainthread:[4,6],stackoverflow:0,soon:[7,8],listval:3,held:2,through:[0,2,4,6,8],pane:0,paramet:2,style:[],psycopg2:[4,6],relev:[2,4],pserv:[6,8],might:[0,7,2,3,4,8],pce:8,tri:8,good:[0,2,3,4,6],pollut:4,cew:4,framework:[4,6,8],maildrop:0,gethostbynam:7,msg_part:7,document:[],authent:[0,6],easili:[2,4,8],achiev:2,http_server:0,compris:4,found:[0,3,4,8],unicod:[2,4,6,8],button:8,hard:[4,6],idea:[0,7,2,4],procedur:2,realli:[0,7,2,6,8],expect:[0,3,4,8],beyond:[],orient:[],some_valu:3,ftp:7,publish:[3,4],research:4,bubbl:8,etag:0,health:2,authnpolici:6,print:[0,7,2,3,4,6,8],uwpc:[4,8],some_appl:3,"__utmz":0,postgr:6,proxi:[],uncommit:4,advanc:0,new_model:4,differ:[],cooki:[0,6],reason:[0,2,3,8],ask:[0,7,4],"__utma":0,earliest:2,recv:[0,7],bash:[3,6],applict:3,by_id:[4,6,8],perhap:[0,8],find_al:2,assign:[0,7,2,4,6,8],request_protocol:3,"85a3":7,feed:2,oserror:3,set_authentication_polici:6,obviou:[0,2],prevent:[3,6],feel:8,number:[0,7,2,4,6,8],placehold:[0,8],done:[],construct:[],blank:[0,3],miss:[2,3,4],fanci:2,guess:0,pbkdf2passwordmanag:6,least:[2,3,4,8],getservbyport:7,statement:4,store:[4,6],luckili:[0,2,4,6,8],parc:4,option:[],relationship:7,behind:4,echo_socket:7,doctyp:[0,2,8],part:[],pars:[],my_view:8,fenced_cod:6,fred:4,kind:[0,7,3,6,8],grew:0,remot:[7,2,4,6],remov:[7,4,6],str:[3,4],relative_to:6,aclauthorizationpolici:6,payload:0,"_socketobject":7,expir:6,"null":2,imagin:[6,8],built:[0,2,3,4,6,8],lib:[0,3,4],remote_addr:3,self:[3,6],click:[3,8],also:[0,7,2,3,4,6,8],build:[],cgi_1:3,textareafield:8,brace:8,tool:[0,7,2,3,4,6],http_user_ag:3,distribut:4,setuptool:4,kai:4,previou:[0,2],reach:7,chart:[4,8],most:[0,7,2,3,4,6,8],plai:[],wahoo:0,plan:6,addr:[0,7,2],mymodel:[4,6,8],cover:[0,4,6],http_server_at_hom:0,usual:[7,4],wsgi:[],hyper:0,latlng_tmpl:2,v12:0,getcom:2,particularli:[6,8],fine:[0,8],find:[],giant:3,nosql:4,pretti:[0,2,4],solut:[],"172kb":4,factor:4,darwin:4,hit:2,unus:4,"__file__":3,resent:7,famous:3,rest:[],"3xx":0,restart:[0,3,6,8],rfc:[0,3],common:[],cri:[0,8],wrote:6,certif:8,set:[],dump:2,sep:2,overwhelm:4,"0x1103e3f50":4,af_ipx:7,see:[0,7,2,3,4,6,8],bare:8,arg:[3,4],reserv:[0,7,2],someth:[0,2,3,4,6,8],topmost:7,won:0,subscript:8,pastedeploi:4,javascript:[2,8],isol:4,mailbox:0,"31m":6,cgi_sum:3,both:[0,7,2,3,4,6,8],hiddenfield:6,delimit:0,unstag:4,load:[0,2,3,6,8],simpli:[0,2,3,4,6,8],point:[],instanti:[2,4],header:[],route_url:[6,8],littl:[3,6,8],suppli:[2,3,6],batteri:2,comput:[],xkcd:0,backend:3,damp:3,empti:[0,7,3,4,6,8],sinc:[7,2,3,4,8],retr:0,secret:[3,6],damn:2,rstpep2html:4,"55c0287d4ef21f15b97eb1f107451b88b479bff":6,fire:[0,2,3,4,6,8],imag:[0,2,8],cryptacular:6,append:[0,3,4,6],coordin:4,understand:[0,6],func:3,educ:3,remote_us:3,look:[],solid:6,add_walkscor:2,batch:4,"while":[0,7,2,3,4],"54f7e4d":6,abov:[0,7,2,3,4,6],error:[],fun:8,everyon:6,loop:0,readi:[0,7,2,4,6,8],unintuit:2,readm:[3,4],itself:[2,3,4],spong:3,"3f80f":0,decor:8,minim:0,remote_id:3,wherein:[2,3,8],decod:2,zope:4,conflict:[2,4],b59b7c3:6,communc:7,moment:[7,2,4,6,8],temporari:8,user:[],robust:6,stack:[],recent:[0,4],lower:[7,2,8],task:[],find_packag:4,entri:[],spent:7,doodi:8,pickl:4,person:[7,6,8],expens:[7,3,6],elev:0,connnect:7,cedar:6,macintosh:0,spend:[7,8],explan:0,make_wsgi_app:4,"__path__":4,mysql:4,session05:0,session04:7,session01:7,session03:2,session02:[0,8],a0006:0,restructuredtext:4,global_config:[4,6,8],populate_obj:[6,8],appli:[6,8],input:[],cgi_2:3,bin:[2,3,4,6,8],bim:2,varchar:4,format:[],response_ok:0,folk:3,server_socket:7,formal:[0,3,4],httpexcept:8,docutil:4,altough:2,manifest:4,collect:[4,8],princip:6,popular:[3,6],often:[0,7,4],some:[],back:[0,7,2,3,4,6,8],understood:7,uidnext:0,sampl:[6,8],ljenv:[4,6,8],formatted_address:2,cgihttpserv:3,pep:3,id3:3,per:[0,7,2,6],larg:[2,3],slash:3,machin:[],intial:0,run:[],authtktauthenticationpolici:6,simple_serv:3,viabl:4,step:[],crlf:0,subtract:3,"resum\u00e9":2,memori:2,"0x100563c90":7,exc_info:3,path_info:3,miracl:0,within:3,ensur:[0,7,4,6],html5shiv:8,inclus:2,span:[2,6],errno:3,sock:[0,7],stylesheet:8,"long":[0,7,2,3,4,6],heroku:[],includ:[0,7,2,3,4,6,8],term_program:3,properli:[0,2,8],repeatedli:[7,4],great:[0,2,3,4,8],pwd:4,game:8,atol:6,atom:2,line:[0,3,4,6,8],translationstr:4,row1:2,utf:[0,2,8],consist:[0,3],latlng:2,similar:[0,2,3,4],clear:[0,7],sesson:0,constant:7,parser:2,chao:[2,6],ws_descript:2,repres:[0,2,4,8],gecko:0,response_not_found:0,titl:[0,2,3,4,8],xb2:2,nav:8,librari:[0,7,2,3,4,6,8],nice:[0,2,3,6,8],llvm:4,mongodb:4,meaning:4,csrftoken:0,longitud:2,esr:0,index_pag:[],algorithm:6,mimetyp:0,rst2latex:4,parse_sourc:2,sign_in_out:6,came:6,hello:[0,3,8],oop:4,getaddrinfo:7,sqlserver:4,edu:[7,3],a_pag:2,bathtim:8,elsewher:[7,6],friendli:2,send:[],becam:2,aris:4,sent:[0,7,2,3,4,6,8],charlesproxi:0,rollback:4,spool:0,add_address:2,runnabl:3,recip:6,magic:8,joel:6,geograph:2,hive:3,"try":[],rfc5321:0,book_id:3,entry_point:4,hasnochildren:0,pleas:[2,4],impli:3,smaller:7,natur:8,focu:2,download:[4,8],odd:8,html5lib:2,client_address:7,compat:[3,4],index:[0,3,4,6,8],poke:[2,3],resembl:8,cell:2,can:[],len:[0,7,2,3,4],bodi:[0,2,3,4,6,8],loadapp:6,intercept:6,let:[0,7,2,3,4,6,8],myhost:3,becom:[2,4],pgbackup:6,convert:[2,4,6,8],didn:4,copyright:4,technolog:[7,6],stringval:3,rdf:2,typic:[3,4],purplemattfish:2,maker:8,firefox:0,ago:[7,6],parse_request:0,win:0,gatewai:3,apt:2,ran:[0,4],api:[],duck:2,apa:2,from:2,zip:2,commun:[],upgrad:6,next:[0,7,2,3,4,6,8],websit:[2,4,6,8],few:[],usr:[3,4],remaind:3,sudo:4,ipoac:7,babi:8,trail:3,train:[4,8],somesecret:6,account:8,retriev:[3,8],scalabl:4,alic:6,annot:[],tag:[0,2,6,8],universal_newlin:3,fetch:[],aliv:[0,7],control:[],sqlite:[4,6],tar:4,process:[],lock:6,preformat:6,high:4,af_:7,tab:0,onlin:[],serial:2,cache_max_ag:[4,8],gcc:4,cewing_socket:7,client_socket:7,pyramid_jinja2:8,instead:[0,4,6,8],stand:[4,8],delai:4,initialzedb:6,other_sess:4,"6mb":4,class_:2,attent:6,tier:6,physic:[7,8],add_al:4,bind:[],correspond:[7,3],element:[],webroot:0,chief:6,prettifi:2,allow:[0,7,2,3,4,6,8],sendal:[0,7],elif:8,move:[0,7,2,4],bunch:7,uiqj579igrbrebhmjqnth8pffaz2qrj:0,verify_password:6,"0x10046cec0":7,infrastructur:6,bye:0,recept:7,handl:[],demoenv:4,spell:8,dai:[0,8],auth:6,close_fd:3,"8a2e":7,mashup_:2,all_book:3,somewher:[2,6,8],anyth:[2,4,6],edit:[],entrycreateform:[6,8],nameerror:[0,3],soupenv:2,slide:[10,1,5,9],mode:4,autoincr:6,beneath:6,pygment:6,item_templ:3,bump:0,sessionmak:[4,8],consum:7,meta:[],"static":[],brittl:2,wander:3,special:[2,4,6,8],out:[],variabl:[],facto:2,categori:4,suitabl:6,rel:8,cwd:3,red:0,clarifi:4,insid:[0,7,2,3,4],frank:8,manipul:[3,4],sock_:7,standalon:2,zodb:4,downei:2,auth_secret:6,first_lin:0,complianc:6,nowher:4,"0x1103d9f10":4,could:[0,3,4,6],lexer:6,put:[],keep:[0,7,2,3,4],length:[0,3,4,6,8],outsid:[3,4,6],geometri:2,waitress:6,softwar:[0,7,2,4,6,8],isbn:3,pygments_styl:6,echo:[],exact:8,date:[],match_param:[6,8],owner:[2,8],intention:0,licens:4,mkdir:4,messag:[],attach:6,imap4_ssl:0,termin:[0,7,3,4,6],"final":[0,7,3,4,8],udp:7,shell:[],fnhg5:0,fnhg2:0,fnhg3:0,"8d3":7,dyno:6,textfield:[6,8],nobodi:3,haven:2,route_nam:[6,8],embodi:[4,6],dive:6,roberto:8,charact:[2,4,6,8],sens:8,sensit:[0,6],f12:0,stdin:3,favorit:0,py2:4,py3:4,requri:6,close:[0,7,8],need:[0,7,2,3,4,6,8],turn:[0,4,6,8],villaini:3,afraid:[0,4],lightweight:2,min:[6,8],rout:[],which:[0,7,2,3,4,6,8],from_encod:2,authentication_polici:6,ncsa:3,singl:[0,7,2,3,4,6,8],unless:7,ds_store:4,whl:4,who:[6,8],wandering_angel:3,discov:[0,2,3],deploi:[],pyc:4,segment:8,payment:6,url:[],request:[],face:8,pipe:8,build_db:6,deni:[3,6],determin:[],fact:[7,3,6,8],jkorpela:0,text:[],bring:[0,8],server_nam:3,bedroom:2,rough:4,identityset:4,redirect:[0,2],locat:[],auth_typ:3,"2br":2,should:[0,7,2,3,4,6,8],jan:[0,7],"3e1cb03b":0,"__tablename__":[4,6],local:[7,2,4,6,8],hope:2,satisfact:6,familiar:[0,3],pypi:4,db8:7,notimpl:2,smash:8,authzpolici:6,enabl:[0,3,6],rage:0,"0x10e7d6b90":8,stuff:[3,8],"0x1005b8b40":7,contain:[0,1,2,3,4,5,6,7,8,9,10],programmableweb:2,paster:[4,8],view:[],dbsession:[4,6,8],knowledg:4,packet:7,closer:4,statu:[2,3,4,6],wire:[7,6,8],correctli:[0,8],uidvalid:0,pattern:[4,8],make_serv:3,creationflag:3,tend:4,written:[3,8],limit:[7,2],neither:2,flickr:[2,3,6],email:[0,7,3,4],mysite1:0,sole:[0,7,2],kei:[2,3,4,6,8],gethead:3,job:[0,4,6,8],entir:[2,4],permanentflag:0,egg_info:4,addit:[],revers:[],dobb:0,startupinfo:3,equal:3,configpars:4,etc:[0,7,4,8],instanc:[2,4,6],equat:7,wear:0,comment:[0,7,2,8],typifi:4,lang:8,this_id:8,rfc2616:0,chmod:[3,6],admin:6,orig:2,quit:[0,7,3,4,6,8],divid:[7,3,4],addition:4,card:7,insuffici:0,json:[],treat:[2,3],immedi:7,presenc:3,sock_stream:7,tranform:2,bulk:4,untrack:4,saner:2,behalf:8,togeth:[],preexec_fn:3,ingredi:4,multi:[0,3],"14t17":2,plain:[0,3,4,6,8],harder:2,contextu:2,defin:[],wild:2,dbapi2:4,endblock:[6,8],layer:[0,7,4],site:[2,4,6,8],server_protocol:3,incom:[],whirl:[7,2,6],pyramid_chameleon:[4,8],welcom:4,parti:0,matthew:2,failur:[0,7,2,3],difficult:3,http:[],hostnam:7,denot:3,absorb:4,upon:3,"5xx":0,php:[2,3],api_url:2,off:[0,4,6,8],center:[0,2],well:[0,7,2,3,4,6],exampl:[],command:[0,3,4,6,8],filesystem:[0,8],undefin:8,latest:2,deletecom:2,distanc:7,less:[0,7,3],kramer:6,paul:2,emtpi:4,wed:0,nullabl:[6,8],smith:0,book:2,polici:6,logger:4,gmt:0,branch:4,agnost:[7,8],crud:0,piec:[3,8],five:0,know:[7,2,3,4,6,8],unseen:0,password:[],recurs:2,lastbuildd:2,python2:[3,4],insert:6,like:[],success:[],echo_serv:7,lose:4,architectur:2,page:[],backlog:7,drop:[7,8],specifi:[2,3,8],captur:[4,8],linux:[0,6],"export":3,mistak:4,proper:[0,7,2,3,8],home:[0,3,4,6,8],transport:[],tmp:7,guid:2,gethostbyname_ex:7,programdata:3,lead:[3,8],octet:0,leav:[4,8],settl:3,server_port:3,u00e9:2,investig:[0,8],journal:[],usag:[2,4],host:[0,7,3,4,6],although:[0,4,8],actual:[0,7,2,3,4,6,8],world:[3,4,8],herokuapp:6,datagram:7,carrier:7,constructor:7,fals:[7,2,3,6],remote_host:3,own:[],washington:7,easy_instal:[2,4],automat:[7,2,4,8],guard:3,hoohoo:3,leverag:6,w3c:2,mod_python:3,val:[2,4,8],allusersprofil:3,transfer:[0,2,6],rcp:2,spread:2,appl:4,wouldn:2,arg1:6,"var":[0,6],"function":[0,7,2,3,4,6,8],respositori:0,getlist:3,versioner_python_prefer_32_bit:3,xerox:4,bui:2,gain:[4,6],bookshelf:3,inlin:[7,4],count:4,gateway_interfac:3,made:[0,7,2,3,4,6,8],view_config:[6,8],whether:[0,2],wish:[3,4,6],googlecod:8,displai:[3,6,8],below:[7,3,6],pcreat:[4,8],problem:[],"int":[3,4,6],blabber:4,pid:[2,6,8],ephemer:[7,4],implement:[],ini:[4,6,8],pip:[2,4],duru:4,probabl:[3,6,8],sharabl:3,crummi:2,detail:[],virtual:[0,3,4],new_valu:3,other:[],lookup:[7,2,8],ws_link:2,rememb:[0,7,2,3,4,6,8],stat:0,repeat:3,allowedvers:0,dewei:0,echo_cli:7,log:[0,4,6,8],fiddler2:0,"_queri":6,syllabu:4,reliabl:7,rule:[0,7,4],bcryptpasswordmanag:6,models_nam:4,cgi_bin:3,htmlparser:2},objtypes:{"0":"py:class"},objnames:{"0":["py","class","Python class"]},filenames:["presentations/session05","index","presentations/session07","presentations/session06","presentations/session01","outline","presentations/session03","presentations/session04","presentations/session02","readings","presentations/index"],titles:["Session 05","Internet Programming with Python","Session 07","Session 06","Session 01","Course Outline","Session 03","Session 04","Session 02","Supplementary Course Readings","Course Presentations"],objects:{"":{center:[2,0,1,""],tiny:[2,0,1,""]}},titleterms:{all:[7,2,4],code:[0,2,4],chain:4,queri:4,ljshell:8,implement:[0,6],row:2,content:0,depend:6,send:7,environment:3,program:1,roa:2,deactiv:4,sourc:2,string:8,util:7,did:3,list:[3,6,8],iter:4,"try":[2,6,8],adjust:6,quick:[0,7],prepar:[3,6,8],machin:7,outlin:5,pass:0,further:[0,7,3],what:[0,2,3,4,6,8],hide:6,compar:6,repli:7,asid:0,beautifulsoup:2,navigablestr:2,"new":4,method:[0,7,4],outcom:8,logout:6,address:[7,2],path:[3,8],along:0,valu:8,wait:[],search:2,credit:2,orm:4,pick:8,chang:[4,6,8],via:6,extra:2,apach:3,app:[3,4,6],unix:7,api:[2,8],famili:7,instal:[2,4,6,8],middlewar:3,from:3,commun:7,regist:6,few:[0,3],live:3,call:2,asset:8,handl:0,type:[0,7,2],more:[2,4],idempot:0,share:8,templat:8,examin:2,iii:3,socket:7,word:[4,6],setup:4,work:[2,3,4,6],can:0,learn:[0,3],fetch:2,control:8,process:3,smtp:0,accept:7,onlin:3,cours:[10,5,9],secur:6,anoth:2,revisit:2,write:3,how:6,answer:2,verifi:6,config:6,needl:2,css:[2,6],updat:[0,3,6],map:0,resourc:0,mess:2,resolve_path:3,date:2,law:2,data:[2,3,8],bind:7,learning_journ:6,element:2,inform:7,runapp:6,environ:[3,4],style:8,complex:[],persist:4,alter:[3,4],"return":[0,4],python:[0,1,2,3,4,7],safe:0,"break":[0,7,2,3,4,6],hateoa:2,jinja2:[6,8],recap:3,introduct:4,addenda:2,edit:[6,8],simpl:[2,3],troubleshoot:6,revers:2,separ:4,debug:0,side:[7,4],domain:7,meta:3,"static":8,connect:[7,8],our:[0,2,4,6,8],happen:4,beyond:2,extract:2,orient:3,out:[2,6,8],variabl:3,stub:8,internet:[1,2,7],factori:6,proxi:3,navig:2,base:4,mime:0,dictionari:8,put:[7,2],geocod:2,filter:[2,6,8],mvc:[4,8],perman:4,first:[0,3,4,6,8],render:[6,8],echo:0,done:6,construct:7,tame:2,open:2,size:2,differ:0,script:[3,4,8],interact:[0,4,8],system:[4,8],messag:7,order_bi:4,listen:7,shell:6,consol:4,option:0,part:8,pars:[0,2],virtuelenv:4,matchdict:8,rss:2,serv:0,provid:[6,8],structur:[4,8],project:4,browser:0,comput:[0,7],packag:4,have:[0,4],tabl:4,ponder:3,engin:2,advic:4,rout:8,ideal:2,exampl:[0,6,8],build:[3,6],soap:2,simplifi:3,deploy:[6,8],price:2,object:[4,8],procfil:6,cgitb:3,plai:2,deploi:6,"class":[2,3],url:[2,8],flow:[7,3,8],uri:0,doe:[0,8],determin:0,wsgi:3,show:3,text:2,syntax:6,session:[0,7,2,3,4,6,8],permiss:6,sqla:4,find:2,xml:2,access:8,locat:2,configur:[4,6,8],activ:4,get:[7,2,3,4,8],express:8,stop:0,pop3:0,tcp:7,requir:6,layout:8,bad:0,common:0,where:6,view:[0,3,6,8],respond:7,set:[3,6],result:[2,3,6],respons:[0,2,8],concern:4,databas:[4,6],state:2,score:2,irl:[0,2],awai:3,approach:2,altern:[3,4],addit:6,last:4,wsgiref:3,context:[6,8],modif:0,login:6,whole:[],markdown:6,point:[],dispatch:3,walk:2,header:0,rpc:2,speak:0,authz:6,cryptactular:6,rebuild:6,three:4,compon:4,json:2,authn:6,basic:[0,4,8],togeth:[7,2],input:8,repetit:[],imap:0,present:[10,8],look:0,servic:2,trick:2,defin:8,homework:[0,7,2,3,4,8],error:[0,3],anonym:6,real:0,pyramid:[4,6,8],engag:6,demo:[0,8],incom:7,irrelev:4,receiv:7,make:[2,4,6,8],preserv:2,html:2,document:2,mod_wsgi:3,complet:8,finish:7,http:[0,2,8],effect:4,solut:[0,2,3],user:[3,6,8],stack:[7,3],stateless:2,task:7,entri:6,client:7,choos:[2,4],model:[4,6,8],protocol:[0,7],execut:[3,6],rest:2,initializedb:6,polish:6,skill:7,languag:0,previous:3,web:[2,3,4],characterist:0,add:[2,4,6,8],book:3,exercis:3,enchilada:[],flowchart:[],save:4,match:8,earli:2,applic:[7,2,3,4,6],format:[0,6],read:9,big:2,bit:4,password:6,like:0,success:3,resolv:0,server:[0,7,3],output:[2,3],page:8,some:3,revel:[3,6],transport:7,virtualenv:4,afterword:2,cgi:3,core:0,run:[0,7,3,6],journal:6,tdd:0,step:[0,2,3],wsdl:2,unsaf:0,comparison:2,about:[0,2,4,6],postgresql:6,fffffffffuuuuuuuuuuuuu:2,column:4,commit:4,other:0,block:8,repair:3,own:7,dilemma:2,terminolog:4,wrap:[2,3,6],lesson:3,your:[0,7,2,3,4,6,8],question:[2,3],submit:[0,7,2,3,4],custom:7,start:4,heroku:6,form:[3,6,8],sqlalchemi:4,link:[7,2,6],congratul:7,pull:2,glori:6,highlight:6,problem:3,creat:[7,4,6],request:[0,2,8],wtform:8,file:4,check:6,encrypt:6,googl:2,mashup:2,tip:3,detail:[3,8],scrape:2,cleanup:4,test:[0,7,2,3,6,8],you:4,clean:[7,4],why:[2,4],scale:6,sql:4,index_pag:6,initialize_learning_journal_db:4,descript:2,mash:2,ignor:4,time:[0,7,2,3,4,6]}}) \ No newline at end of file +Search.setIndex({envversion:42,terms:{content_length:3,current_label:2,interchang:[2,4],four:[0,2],database_url:6,prefix:[0,7],af_rout:7,forget:6,whose:3,typeerror:2,aug:4,sorri:4,ipproto_raw:7,crisew:7,key_cel:2,concret:4,swap:3,under:[2,3],dest_dir:4,spec:3,remote_us:3,digit:[0,2,8],everi:[0,3,4],risk:2,posttestcas:[],govern:[0,2],affect:[],vast:2,chapel:[],location_attr:[],fetch_search_result:[],cmd:0,herbert:8,imaplib:0,verif:6,auth_group:[],direct:[0,4],batch:4,second:[0,7,2,3,4,6,8],street:2,nthi:8,even:[0,3,4],asid:[],list_of_tcp_and_udp_port_numb:7,net:0,ever:[2,3],metadata:[2,4],ipproto_tcp:7,abov:[0,7,2,3,4,6],never:[7,3,4],here:[],"4xx":0,path:[],redeploi:6,forum:[],credit:[],webfact:0,permit:0,portabl:3,counti:2,golden:8,pprint:[2,3],heroku_postgresql_maroon_url:6,wikimedia:[4,8],avenu:2,txt:[0,7,4,6],unit:2,first_lin:0,describ:[7,2,3],would:[0,2,3,4,6,8],tail:6,new_label:2,dnt:0,call:[],admin_password:6,typo:4,recommend:6,calc:3,strip_filt:8,tell:[0,7,2,3,4,6],fastcgi:3,relat:[],panach:8,notic:[0,7,2,3,4,6,8],phone:[2,8],hold:2,unpack:4,addon:6,af_unix:7,webbrows:2,join:[0,2,3],flaskenv:[],restor:[4,6],worth:[2,4,8],conceptu:8,city_long:2,norm:0,root:[3,6],overrid:[],defer:6,repoz:4,give:[7,2,3,4,6],smtp:[],indic:[0,2],cautiou:2,unavail:[],want:[0,2,3,4,6,8],dele:0,end:[0,7,2,3,6,8],learning_journ:[],frobozz:0,classifi:[],how:[],sever:[2,3,6],env:[3,4],interview:0,verifi:[],config:[],updat:[],anon_1:4,recogn:[],after:[2,3,4,8],superus:4,diagram:4,befor:[0,7,2,3,4,6,8],wrong:4,charfield:[],lat:2,beautifulsoup4:2,demonstr:[0,4],domin:4,third:3,classmethod:[4,6,8],authzpolici:6,wsapikei:[],greet:0,think:[7,3,4,6,8],alias:7,scoped_sess:4,candid:2,green:0,waitress:6,incorpor:[2,3,6],enter:[0,2,3,8],fan:[],engine_from_config:[4,6,8],order:[2,4,6,8],hob7v7guwir4n1v:6,origin:[2,3,4],remote_id:3,softwar:[0,7,2,4,6,8],over:[7,2,4,8],fam:7,becaus:[0,2,4,6,8],jpeg:0,privileg:[3,4],keyboard:0,flexibl:4,vari:[0,7,2],fit:[],fix:[0,3,4,8],simple_cli:0,toolbelt:[6,8],better:[7,2,4,6],offic:0,friski:2,"1xx":0,easier:[4,8],descend:2,them:[0,7,2,3,4,6,8],thei:[0,7,2,3,4,6,8],id73:3,safe:[],sqlite3:4,bang:3,promis:7,initializedb:[],rental:[],choic:[7,2,4],acquisit:[],bonu:[],getvalu:3,rocki:6,timeout:[],each:[0,7,2,3,4,6],debug:[],went:[0,8],utmcmd:0,bone:8,mean:[0,7,2,3,4,6,8],createel:2,resum:2,logo:8,network:[7,2,8],goe:[2,4,8],god:4,content:[],got:[],gov:2,forth:[0,3],written:[2,3,8],rail:0,nightmar:4,situat:[0,4],free:[6,8],standard:[0,7,2,3,4,6],contentcol:2,hand:[6,8],uiuc:3,s3cr3t:6,traceback:3,static_url:8,filter:[],iso:2,isn:[0,3,8],subtl:[],confus:[7,8],user:[],rang:[0,8],render:[],independ:[0,4],rank:[],hook:[],instruct:[7,3,4],alreadi:[0,7,2,4,6,8],messag:[],agre:3,fantast:4,primari:[4,8],top:[2,4,6,8],"0x1103e38d0":4,sometim:[0,4],imap4rev1:0,necessarili:3,master:[4,6],too:[0,7,2,3,4,8],tom:4,logged_in:6,namespac:2,tool:[0,7,2,3,4,6],setuptool:4,took:4,auth_permiss:[],incur:6,cdata:2,next_sibl:[],inspection_data:2,val_cel:2,target:3,keyword:[2,6,8],provid:[],tree:[4,6],matter:[2,6],rfc2616:0,minut:[0,7,8],latitud:2,rad:7,fashion:[2,3],bs4:2,walkscor:[],modern:4,mine:0,spent:7,raw:0,af_sna:7,pylon:4,increment:[],"__main__":[2,3,6],seen:[0,7,2,3,4,6,8],seem:[3,6],seek:[4,6],latter:4,thorough:8,"0x1103e3fd0":4,fnhg5:0,transmit:4,hypertext_transfer_protocol:0,simplifi:[],elev:0,sock_dgram:7,though:[0,2,6],usernam:[0,6,8],guess_typ:0,id__in:[],minask:[],regular:[],artifact:4,bsd:7,fnhg3:0,typ:7,maria:[7,2,3],tradit:8,don:[0,7,2,3,4,6,8],doc:[0,2,4,6],doe:[],declar:[3,4,8],passwordfield:6,sum:[2,8],dot:8,introspect:2,opposit:8,random:6,syntax:[],radio:8,protocol:[],involv:6,absolut:8,nobodi:3,menu:[0,3],explain:[3,4],response_head:3,apach:[],restaur:[],busi:2,scgi:3,folder:[7,3,4,6,8],resolve_uri:0,patter:8,nasti:2,stop:[],reconstruct:3,bar:[0,7,2,8],ietf:[0,3],baz:[0,2],buffsiz:7,reload:[0,3,6],told:6,steal:[4,6],title_info:3,respond:[],get_const:7,get_inspection_pag:2,serve_forev:3,result:[],respons:[],fail:[0,7,6],hash:[3,6],best:[2,4,6],awar:6,said:[],pythoncert:[4,8],wikipedia:[0,7,2,4],urllib:2,yet:[0,7,4,6,8],figur:[7,3,4],score:[],outstand:8,awai:[],approach:[],attribut:[],accord:2,extend:[2,6,8],extens:[0,2,6],html5:8,toler:2,"__unicode__":[],pull:[],protect:0,accident:7,expos:3,howev:[3,4,8],against:[0,3,6,8],logic:[4,6,8],countri:2,seri:[2,4],com:[0,7,2,3,4,6,8],get_appset:[4,6,8],assur:7,trunk:8,loader:2,trust:4,assum:[7,2,4],speak:[],bathroom:[],strong:[6,8],chrome:0,add_rout:[4,6,8],"125px":2,been:[2,3,4,6,8],much:[0,7,2,3,4,8],interpret:[0,7,2,3,4,8],interest:2,raise_for_statu:2,tini:[],quickli:[0,4],life:[0,2],rfc5321:0,xxx:3,setup_log:[4,8],telnet:7,ani:[0,7,2,3,4,6,8],matchpath:3,"catch":[0,2],build_env:3,ugli:0,ident:6,servic:[],properti:[],commerci:4,calcul:[2,3],apikei:[],neat:0,content_col:2,"_set":[],seven:0,af_appletalk:7,shebang:3,toolkit:0,kwarg:2,conf:[],fnhg:0,tediou:[2,4],fedorahost:2,conn:[0,7],"635px":2,datetim:2,perform:[3,4,8],suggest:[0,2,6],couchdb:4,contains_word:2,craigslist:[],complex:[],split:0,version_str:3,complet:[],rfc822:0,nic:7,hang:0,xyzzi:0,nix:3,rais:[0,7,2,3],kcscript:2,howdi:8,editcom:2,"548kb":4,thu:[7,3],hypothet:4,inherit:[3,4,8],client:[],thi:[0,1,2,3,4,5,6,7,8,9,10,11],endif:[6,8],gzip:0,programm:2,everyth:[0,4,6,8],moreov:[0,2],left:[4,6],identifi:[0,2,3,8],just:[0,7,2,3,4,6,8],photo:[2,3],spread:2,human:[0,2,8],mysql_length:4,languag:[],alchemi:4,easi:[2,4,6,8],had:2,shout:8,"8bitmim":0,httpfound:[6,8],els:[0,2,4,6,8],hat:0,gave:4,opt:0,mayb:3,preserv:[],parse_var:4,render_markdown:6,bbox:2,elabor:6,apart:[2,8],imap4_port:0,response_method_not_allow:0,specif:[7,2,3,4,6,8],filenam:0,bcrypt:6,arbitrari:[7,4,6],manual:4,hung:0,install_requir:4,underli:7,www:[0,7,2,3],right:[0,2,3,6,8],old:4,"0db8":7,universal_newlin:3,nfrom:4,intern:[0,3],successfulli:[3,4],craiglist:[],transmiss:[0,7],total:[2,3,6],djangoproject:[],bottom:[7,2],subclass:[],multipli:3,exectut:4,overcom:3,condit:[0,3],foo:[],fieldstorag:3,localhost:[0,3,6,8],mailgat:0,particular:[4,6,8],bold:2,wandering_angel:3,bolt:2,repositori:[7,2,3,4,6,8],post:[],"super":0,chapter:4,postgresql:[],startapp:[],surround:8,dinner:0,done:[],sept:2,produc:[7,2],curiou:[],"float":2,encod:[0,2,6],bound:[7,4],down:[2,6,8],creativ:[4,8],bufsiz:3,storag:[0,4],git:[4,6],deal:7,wai:[0,2,3,4,6,8],segment:8,support:[0,2,3,4,6,8],hypermedia:[],business_address:2,avail:[7,2,4,6,8],width:2,reli:6,request_method:[3,6],editor:[2,3],overhead:2,get_address_info:7,rcpt:0,fork:[0,2],head:[0,7,2,6,8],medium:[7,2],offer:[3,4,8],forc:2,hear:7,icmp:7,codehilit:6,ws_link:[],absent:3,attr:[2,8],type:[],maximum:7,until:[7,4],url:[],anew:[],absenc:3,emit:3,intitalizedb:4,featur:[2,3,4,6],af_decnet:7,mashup_5:2,"abstract":4,decrypt:0,proven:4,exist:[0,3,4,6,8],check:[],assembl:8,excel:8,role:8,jone:0,test:[],webob:4,roll:6,realiti:2,node:[],intend:[7,4],af_unspec:7,urllib2:2,intens:2,consid:[0,2,4,8],receiv:[],longer:7,bullet:6,sock:[0,7],anywher:3,pbkdf2:6,pathnam:[0,7],push:[0,4,6],serious:2,osx:[0,6],concept:[7,4,6],skip:4,consum:[7,2],invent:[2,4],restaurant_data_gener:2,row:[],depend:[],flask:4,graph:8,readabl:[0,2,3,8],unpython:4,a0004:0,a0005:0,certainli:8,a0001:0,a0002:0,a0003:0,must:[0,7,3,4,6,8],aspx:2,query_str:3,isinst:2,sourc:[],string:[],congest:7,price_span:[],lru:4,"0mb":[],kitten:4,ydood:8,subprocess:3,brows:8,administr:3,level:[2,4,6],did:[],dig:8,ipproto_udp:7,assertequ:[],item:[2,3,4,8],team:4,quick:[],imap4:0,dir:[0,7],declarative_bas:4,upper:8,slower:7,lstrip:3,htm:2,sign:[0,6],cost:6,port:[0,7,3,6],appear:[2,6,8],scaffold:4,current:[7,3,4],rst2xml:4,"3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4":6,response_bodi:3,deriv:3,urlopen:2,gener:[],unauthor:2,explicitli:[3,4],address:[],viabl:4,wait:[],mysit:[],shift:0,queue:7,related_nam:[],bob:[0,4],commonli:7,ourselv:[0,6],ipc:7,semant:7,session1:7,extra:[],modul:[0,7,2,3,4,6],prefer:[0,3],bookapp:3,seattl:2,marker:[2,8],http_:3,smallish:7,market:[2,4],types_map:0,prove:6,visit:[6,8],todai:[0,7,2,6,8],live:[],criteria:[0,4],msg:7,tightli:3,simpletestcas:[],minim:0,maxask:[],peopl:2,claus:[],walkabl:[],visual:[0,2],appendix:0,templat:[],obj:[4,8],effort:2,content_typ:3,prepar:[],pretend:0,uniqu:[2,4,6,8],inspection_typ:2,whatev:[7,8],purpos:[0,3,4,6,8],boilerpl:4,input1:2,encapsul:[],stream:[7,4],predict:0,agent:[0,3],topic:8,stroke:[],app_factori:4,occur:7,entryeditform:6,alwai:[0,7,2,3,4,6],lxml:2,multipl:[3,4],charset:[0,8],write:[],anyon:[3,6,8],pure:2,tild:2,xhtml:0,tbodi:2,map:[],product:[4,6],max:[0,6,8],clone:[7,4,8],mac:0,"4th":2,date:[],data:[],classroom:4,inspection_end:2,gethostnam:7,practic:[],bookdb:3,explicit:8,predic:6,mangl:0,inform:[],"switch":4,tailor:0,combin:[2,3,4,6,8],printenv:3,callabl:[3,8],talk:[0,7,4,8],notimpl:2,ydwoh:8,geojson:[],ttl:2,gitignor:4,still:[0,2,4,8],dynam:[0,2,3,8],config_uri:[4,6,8],group:[7,3,4],"4z6rvnhte21mpljw5veive0eg57gn":6,authorization_polici:6,sec10:0,platform:6,window:[0,2,3,4,6],curli:8,mail:0,main:[0,2,4,6,8],non:0,noj:[],mapper:[],profession:[],killer:[],initi:[0,3,4,6],answer:[],safari:0,some_appl:3,now:[0,7,2,3,4,6,8],discuss:[7,3,4,8],term:[3,4],name:[0,7,2,3,4,6,8],simpl:[],interpr:4,server_softwar:3,magazin:8,path_transl:3,confid:2,compil:[2,6],domain:[],"0x105849b90":8,replac:[2,6,8],individu:[7,4,8],continu:[0,7,2,3,4,6],wsgi_1:3,ensur:[0,7,4,6],begun:[],year:2,operand:3,shown:[],accomplish:0,kingcounti:2,space:0,profil:7,utmcsr:0,formula:[],sensor:2,correct:[0,7,8],"0x1005b8b40":7,tmpl:8,earlier:[0,4,6],pseudocod:0,ch05s03:0,envelop:2,argv:[4,6],myblog_test_fixtur:[],argn:6,org:[0,7,2,3],"byte":[7,2],toggleshow:2,search_param:[],care:[0,7,2,3],sign_in:6,setdefault:2,where:[],syndic:2,refus:7,thing:[0,2,4,6,8],place:[7,3,4,6,8],router:3,imposs:4,frequent:4,lambda:8,oper:[7,3,6,8],directli:[7,2,4,8],onc:[0,7,2,3,4,6,8],arrai:2,yourself:[0,2],walkthrough:[],"long":[0,7,2,3,4,6],open:[],size:[],urin:0,given:[0,7,2,4,8],sheet:8,convent:0,imap4_ssl_port:0,eachoth:4,citi:2,paramt:2,lognam:3,averag:2,conveni:4,friend:6,includ:[],hue:2,especi:[2,3],memo:3,copi:[0,2,3,6,8],huh:0,alan:[4,8],"short":3,mostli:[0,7],attempt:7,than:[0,7,3,4,6,8],png:0,serv:[],were:[7,2,4],posit:7,"5xx":0,browser:[],pre:2,internet_protocol_suit:7,sai:[0,2,3,4,6],angel:3,pro:7,argument:[0,7,2,3,4,6,8],doctyp:[0,2,8],rent:[],notimplementederror:0,country_long:2,saw:4,dbapi:[],shtml:0,engin:[],destroi:[],ipproto_:7,note:[0,7,2,3,4,6,8],data_list:2,wretch:3,take:[0,7,2,3,4,6,8],reload_templ:4,noth:[2,3,4,6,8],channel:[0,2,4],begin:[0,7,2,3,4,6,8],sure:[7,2,4,6,8],pain:[4,6],trace:4,normal:[2,4],buffer:[0,7],price:[],pair:[2,4,8],homepag:2,run_cgi:3,renam:[],utmccn:0,later:[],"8mb":4,quantiti:2,create_al:4,link:[],shortnam:6,preambl:3,gracefulli:0,shot:2,show:[],my_index:4,checkbox:8,xml:[],onli:[0,2,4,6,8],slow:7,"true":[0,7,2,4,6,8],transact:[7,4,6],enough:[0,2,4,6],dict:[7,2,4],analyt:6,crummi:2,startswith:[7,2],nearli:4,variou:[4,8],mung:0,clang:4,this_text:2,repo:[],ssl:0,cannot:[7,3,8],ssh:7,requir:[],reveal:3,entryfactori:6,yield:2,authenticated_userid:6,draft:0,default_permiss:6,summari:2,wiki:[0,7,2],n10:8,seat:2,lng:2,web_application_hybrid:2,detect:6,review:[0,7,3,4,6,8],enumer:6,label:[],getattr:7,between:[0,7,3,4],"import":[0,7,2,3,4,6,8],across:[7,2],pretti:[0,2,4],parent:[3,4],elladan:7,tut:0,cycl:[4,8],come:[0,2,3,4,6,8],sketchi:2,img:0,tutori:8,wherin:4,improv:[0,3,4,6],among:[7,2,4,8],nnn:[],color:[2,6],inspir:[],"__class__":[],exploit:3,imad1:0,artu:0,coupl:[7,2,3,4],hardli:2,mark:6,evangelista:[4,8],valueerror:[2,3],extract_list:[],avian:7,zope:4,intval:2,state_long:2,ws_descript:[],former:[],those:[0,2,3,4],"case":[0,3,4,8],interoper:2,cast:4,invok:[],inspection_pag:2,scum:3,python_web:[4,8],ehlo:0,zipcod:2,advantag:[4,6],ctrl:0,canon:[7,3],worri:[7,6],blah:0,reqeuest:3,smalltalk:4,data_div:2,develop:[],proto:7,cc0:[4,8],same:[0,7,2,3,4,6,8],epoch:2,html:[],strval:2,pai:[2,6],document:[],week:[0,7,2,3,4,6,8],finish:[],nest:2,assist:[3,4],someon:6,driven:[0,8],capabl:3,http_host:3,add_rount:6,mani:[0,7,2,3,4,6,8],appropri:[7,3,6,8],"__acl__":6,markup:6,without:[7,2,3,4,8],execut:[],when:[0,7,2,3,4,6,8],resp:[0,2],googleapi:2,interrupt:0,kill:[0,4],aspect:[4,6,8],flavor:2,xb2:[],heffalump:7,getlist:3,hint:0,except:[0,7,2,3,4],param:[2,6],blog:0,ws_score:[],pile:2,blob:6,exercis:[],vulner:0,gethostbynam:7,real:[],requri:6,tranmiss:7,around:[7,2,3,6,8],read:[],psd:2,makin:8,violation_point:2,traffic:0,mon:[0,2],redqueen:0,postal:2,socket_tool:7,intel:0,whitespac:[0,2],integ:[7,4,6],server:[],benefit:[0,7],either:[0,2,8],cascad:8,django_settings_modul:[],output:[],manag:[],fulfil:6,ipproto_ip:7,assertionerror:[],definit:8,"2xx":0,exit:4,posgresql:6,notabl:0,refer:[7,2,3,4,8],af_inet6:7,power:[7,4,6,8],inspect:[],broken:[0,2],"__name__":[2,3,6],src:[2,8],deflat:0,central:4,drag:2,acl:6,microframework:4,srv:3,someexamplerssdomain:2,act:[2,3],mytempl:[4,8],routin:2,iterm:3,status_cod:2,console_script:4,isoformat:2,inbox:0,strip:[2,8],igmp:7,loc:[],buffer_s:7,httpnotfound:[6,8],her:6,set_authorization_polici:6,aren:[4,6],lon:[],strict:2,interfac:[0,7,3,4,6],ipv4:7,lot:[0,4,8],ipv6:7,"0x10b075ed0":4,machin:[],hei:7,index_pag:[],handle_request:3,tupl:[7,2],client_address:7,categor:0,congratul:[],freddi:8,notat:[2,8],dirti:4,possibl:[7,2,3,8],"default":[7,3,4,6,8],start_respons:3,expect:[0,3,4,8],gone:4,"520px":2,uid:0,certain:[0,7,2,4],deep:6,strongli:6,intro:2,omgwtf:2,fill:[2,3,6,8],again:[0,7,2,3,4,6,8],models_valu:4,googl:[],compel:4,field:[],valid:[0,6,8],compet:2,wtttzy:6,juic:8,zip_cod:2,sequenc:0,symbol:[7,8],pr0084952:2,briefli:8,track:2,transceiv:7,reduc:4,json_output:[],"1b6":0,directori:[0,3,4,6,8],descript:[],potenti:6,escap:6,unset:3,represent:[7,2,4],skeleton:[7,4],roi:2,forbidden:6,scalar:4,runserv:[],abil:[0,4],cameron:[],follow:[0,7,2,3,4,6,8],disk:[0,2],children:2,dsn:0,script_nam:3,af_inet:7,articl:[4,6,8],init:4,introduc:[4,8],hill:[],sound:[],liter:4,chameleon:8,far:[7,2,4],faq:0,util:[],verb:0,mechan:6,fall:4,veri:[0,7,3,4,6,8],ticket:6,simple_app:3,webmast:0,list:[],last_nam:8,adjust:[],featurecollect:2,stderr:[0,3],small:3,everth:2,neighborhood:2,your_script:[],past:[2,4,6],design:[7,2,3,4,6,8],pass:[],further:[],by_nam:6,sud:2,section:[0,3,4,8],abl:[0,2,3,4,6,8],delet:[0,2,6],version:[0,2,3,4,6],tickl:[],primary_kei:[4,6],intersect:8,deepli:2,"public":[2,6,8],outcom:[],craigslist_result:[],hasn:2,full:[3,4],themselv:2,shouldn:[],inher:2,goodby:0,ineffici:2,modifi:[0,2],rfc3875:3,valu:[],search:[],ahead:[7,2,3,6,8],popen:3,prior:6,doctest:[],action:[7,2,4,6,8],add_static_view:[4,8],via:[],transit:[],deprec:4,href:[3,6,8],famili:[],establish:[7,2],cgi_bin:3,select:[0,4],hexadecim:2,has_two:2,distinct:0,stdout:[7,3,4],two:[0,7,2,3,4,6,8],taken:[2,6],satisfact:6,id_find:2,flaw:8,desir:[],load_inspection_pag:2,mozilla:[0,8],flag:[0,7,6],addcom:2,jsonp:8,known:[7,2,6],max_length:[],cach:[0,4],none:[0,7,2,3,4,6,8],endpoint:[0,7,2],puzzl:3,hour:[0,7,8],hous:[],dev:[3,6],venusian:4,remain:6,paragraph:2,learn:[],abandon:[],rst2html:4,def:[0,7,2,3,4,6,8],ndate:7,prompt:[7,3,4],scan:[4,8],challeng:[0,6],registr:6,share:[],accept:[],explor:[],phrase:[4,8],login_form:6,uncheck:[],mai:[0,7,3,4,6],goal:[2,4],first_nam:8,secur:[],rather:0,anoth:[],comfort:8,divis:3,yipeee:[],"__init__":[4,6,8],csv:[4,8],loginform:6,css:[],unabl:6,"545kb":4,resourc:[],referenc:8,ff0000:2,okai:[0,4],data_row:2,github:[0,7,2,3,4,6,8],footer:8,onto:2,author:[3,6],django:[],caus:4,egg:4,translationstr:4,constitu:8,help:[0,7,2,4,8],"912ft":[],mainthread:[4,6],add_address:[],soon:[7,8],held:[],through:[0,2,4,6,8],pane:0,inspection_row:2,paramet:2,style:[],myblog:[],psycopg2:[4,6],runnabl:3,pserv:[6,8],highscor:2,might:[0,7,2,3,4,8],pce:8,recip:6,good:[0,2,3,4,6],pollut:4,cew:4,framework:[4,6,8],maildrop:0,adventur:2,inspection_path:2,msg_part:7,eventu:[2,4],authent:[0,6],test_unicod:[],easili:[4,8],achiev:2,http_server:0,compris:4,found:[0,2,3,4,8],unicod:[2,4,6,8],joel:6,weight:2,hard:[4,6],idea:[0,7,2,4],procedur:2,realli:[0,7,2,6,8],connect:[],beyond:[],orient:[],some_valu:3,ftp:7,installed_app:[],shortcom:[],publish:[3,4],research:4,bubbl:8,etag:0,health:2,authnpolici:6,print:[0,7,2,3,4,6,8],zaccagni:2,uwpc:[4,8],"__utmz":0,postgr:6,proxi:[],uncommit:4,advanc:0,new_model:4,guess:0,cooki:[0,6],reason:[0,2,3,8],believ:[],ask:[0,7,4],"__utma":0,earliest:2,recv:[0,7],"19t01":6,bash:[3,6],applict:3,launch:[],by_id:[4,6,8],perhap:[0,2,8],root_urlconf:[],getelementsbytagnam:2,find_al:2,assign:[0,7,4,6,8],request_protocol:3,feed:2,oserror:3,set_authentication_polici:6,obviou:0,prevent:[3,6],feel:[2,8],has_two_td:2,number:[0,7,2,4,6,8],placehold:[0,8],is_tr:2,least:[2,3,4,8],blank:[],miss:[2,3,4],fanci:[],differ:[],"5th":2,pbkdf2passwordmanag:6,construct:[],getservbyport:7,auth_group_permiss:[],statement:4,store:[2,4,6],luckili:[0,2,4,6,8],parc:4,option:[],relationship:7,behind:[2,4],echo_socket:7,part:[],pars:[],my_view:8,off:[0,4,6,8],fred:4,king:2,kind:[0,7,2,3,6,8],grew:0,remot:[7,2,4,6],remov:[7,4,6],violation_red_point:2,"97b":2,str:[3,4],relative_to:6,aclauthorizationpolici:6,payload:0,"_socketobject":7,expir:6,larri:4,"null":2,imagin:[6,8],built:[0,2,3,4,6,8],lib:[0,3,4],remote_addr:3,self:[3,6],html5lib:2,also:[0,7,2,3,4,6,8],build:[],cgi_1:3,textareafield:8,brace:8,pubdat:2,http_user_ag:3,distribut:4,index:[],lighttpd:3,kai:4,previou:[0,2],reach:7,chart:[4,8],most:[0,7,2,3,4,6,8],plai:[],poke:3,plan:6,addr:[0,7,2],mymodel:[4,6,8],cover:[0,2,4,6],latest:2,wsgi:[],hyper:0,latlng_tmpl:[],v12:0,getcom:2,particularli:[2,6,8],font:2,fine:[0,2,8],find:[],use_param:2,giant:3,nosql:4,copyright:4,solut:[],"172kb":4,factor:4,darwin:4,hit:2,unus:4,"__file__":3,resent:7,famous:3,mainten:2,rest:[],"3xx":0,restart:[0,3,6,8],rfc:[0,3],common:[],cri:[0,8],wrote:[2,6],certif:8,set:[],dump:2,sep:2,overwhelm:4,"0x1103e3f50":4,af_ipx:7,see:[0,7,2,3,4,6,8],bare:8,arg:[3,4],reserv:[0,7],uw_pc:[],someth:[0,2,3,4,6,8],topmost:7,won:0,subscript:8,experi:[],javascript:[2,8],isol:[2,4],mailbox:0,"31m":6,cgi_sum:3,popul:2,both:[0,7,3,4,6,8],hiddenfield:6,delimit:0,unstag:4,collect:[2,4,8],load:[0,2,3,6,8],simpli:[0,2,3,4,6,8],point:[],instanti:[2,4],header:[],route_url:[6,8],littl:[3,6,8],suppli:[2,3,6],batteri:2,comput:[],xkcd:0,backend:3,damp:3,get_geojson:2,empti:[0,7,3,4,6,8],pgbackup:6,retr:0,secret:[3,6],damn:2,rstpep2html:4,"55c0287d4ef21f15b97eb1f107451b88b479bff":6,inspection_closed_busi:2,versa:[],fire:[0,3,4,6,8],imag:[0,8],cryptacular:6,coordin:[2,4],understand:[0,6],func:3,demand:2,educ:3,formatd:0,look:[],road_long:2,solid:[2,6],add_walkscor:[],budget:[],"while":[0,7,3,4],"54f7e4d":6,behavior:[7,4,8],error:[],fun:[],fixtur:[],everyon:6,loop:0,readi:[0,7,2,4,6,8],unintuit:2,readm:[3,4],itself:[2,3,4],spong:3,"3f80f":0,decor:8,grant:[3,6],belong:[0,7,6],wherein:[2,3,8],decod:2,onclick:2,octal:2,conflict:[2,4],b59b7c3:6,communc:7,argpars:2,piec:[3,8],moment:[7,2,4,6,8],temporari:8,"__or__":7,robust:6,stack:[],recent:[0,4],lower:[7,2,8],task:[],older:[],find_packag:4,entri:[],elem:2,doodi:8,pickl:4,person:[7,6,8],expens:[7,3,6],endfor:[6,8],connnect:7,five:0,macintosh:0,tast:[],spend:[7,8],total_result:2,explan:0,make_wsgi_app:4,"__path__":4,mysql:4,session05:0,session04:7,session07:2,sidebar:2,session01:7,session03:[],session02:[0,8],a0006:0,restructuredtext:4,global_config:[4,6,8],populate_obj:[6,8],win:0,input:[],cgi_2:3,bin:[2,3,4,6,8],bim:2,varchar:4,format:[],response_ok:0,folk:3,server_socket:7,formal:[0,3,4],httpexcept:8,ipproto_icmp:7,docutil:4,altough:[],manifest:4,http_server_at_hom:0,princip:6,popular:[2,3,6],extract_restaurant_metadata:2,often:[0,7,2,4],duck:2,some:[],back:[0,7,2,3,4,6,8],global:[],understood:7,uidnext:0,sampl:[2,6,8],ljenv:[4,6,8],formatted_address:[],cgihttpserv:3,pep:3,id3:3,per:[0,7,2,6],larg:[2,3],slash:3,lowest:2,intial:0,run:[],authtktauthenticationpolici:6,simple_serv:3,stem:[],step:[],crlf:0,subtract:3,"resum\u00e9":2,zip:2,memori:2,"0x100563c90":7,business_nam:2,exc_info:3,path_info:3,miracl:0,within:3,protocol_vers:3,html5shiv:8,inclus:2,span:6,errno:3,question:[],stylesheet:8,fast:4,heroku:[],prettier:8,inspection_start:2,term_program:3,properli:[0,2,8],repeatedli:[7,4],great:[0,2,3,4,8],ahhh:2,pwd:4,game:8,atol:6,atom:2,line:[0,2,3,4,6,8],info:[7,2,3,4,6],row1:2,utf:[0,2,8],consist:[0,2,3],latlng:2,similar:[0,2,3,4],clear:[0,7],sesson:0,constant:7,parser:2,chao:[2,6],doesn:[0,7,3,4,6,8],repres:[0,2,4,8],home:[0,3,4,6,8],gecko:0,response_not_found:0,titl:[0,2,3,4,8],nam:7,nav:8,transport:[],nice:[0,2,3,6,8],llvm:4,mongodb:4,meaning:4,csrftoken:0,longitud:2,svn:8,algorithm:6,vice:[],mimetyp:0,rst2latex:4,parse_sourc:2,sign_in_out:6,server_protocol:3,came:[2,6],fresh:2,hello:[0,3,8],oop:4,getaddrinfo:7,sqlserver:4,edu:[7,3],feedpars:2,a_pag:2,bathtim:8,elsewher:[7,6],friendli:2,send:[],becam:2,aris:4,sent:[0,7,2,3,4,6,8],charlesproxi:0,rollback:4,liveservertestcas:[],spool:0,text__contain:[],stackoverflow:0,relev:4,tri:8,magic:8,button:8,geograph:2,hive:3,"try":[],race:[6,8],book_id:3,entry_point:4,prompttextbox:2,hasnochildren:0,pleas:[2,4],impli:3,smaller:7,natur:8,focu:[],download:[4,8],odd:8,click:[2,3,8],append:[0,2,3,4,6],compat:[3,4],appendchild:2,wahoo:0,resembl:8,cell:2,py2:4,can:[],len:[0,7,2,3,4],bodi:[0,2,3,4,6,8],loadapp:6,intercept:6,let:[0,7,2,3,4,6,8],myhost:3,becom:[2,4],sinc:[7,2,3,4,8],convert:[2,4,6,8],convers:[],technolog:[7,6],fetch:[],stringval:3,rdf:2,typic:[3,4],purplemattfish:2,maker:8,firefox:0,ago:[7,6],parse_request:0,appli:[6,8],gatewai:3,apt:[],ran:[0,4],api:[],regexp:[3,8],usasearch_config:2,apa:[],from:[],usa:2,commun:[],upgrad:6,next:[],websit:[2,4,6,8],few:[],doubt:[],usr:[3,4],remaind:3,sort:2,my_map:2,ipoac:7,babi:8,trail:3,train:[4,8],somesecret:6,account:8,retriev:[3,8],scalabl:4,alia:[],alic:6,annot:[],housenumb:2,af_:7,thin:7,inspection_domain:2,plug:0,aliv:[0,7],control:[],sqlite:[4,6],tar:4,process:[],lock:6,sudo:4,high:[2,4],tag:[],tab:[0,2],onlin:[],serial:2,cache_max_ag:[4,8],gcc:4,cewing_socket:7,sit:[],client_socket:7,pyramid_jinja2:8,preformat:6,instead:[0,4,6,8],stand:[4,8],delai:4,initialzedb:6,other_sess:4,"6mb":4,class_:[],attent:6,tier:6,physic:[7,8],drop:[7,2,8],add_al:4,bind:[],correspond:[7,3],element:[],issu:[],webroot:0,chief:6,prettifi:2,allow:[0,7,2,3,4,6,8],sendal:[0,7],elif:8,move:[0,7,2,4],belltown:2,bunch:7,outer:[],verify_password:6,"0x10046cec0":7,infrastructur:6,pr0001203:2,bye:0,recept:7,handl:[],demoenv:4,spell:8,dai:[0,8],auth:6,mention:[],close_fd:3,front:[],"8a2e":7,is_inspection_data_row:2,mashup_:2,all_book:3,somewher:[6,8],anyth:[2,4,6],edit:[],entrycreateform:[6,8],nameerror:[0,3],soupenv:2,slide:[11,1,9,5,10],mode:4,autoincr:6,beneath:6,street_address:2,pygment:6,item_templ:3,bump:0,sessionmak:[4,8],violation_descr:2,meta:[],"static":[],brittl:2,wander:3,special:[2,4,6,8],out:[],variabl:[],facto:2,categori:[2,4],suitabl:6,rel:8,rec:2,leverag:6,ref:[],cwd:3,red:0,clarifi:4,umbrella:2,insid:[0,7,2,3,4],frank:8,manipul:[3,4],w3c:2,standalon:[],zodb:4,rdata:2,downei:2,auth_secret:6,yore:8,complianc:6,nowher:4,"0x1103d9f10":4,could:[0,2,3,4,6],lexer:6,put:[],keep:[0,7,2,3,4],length:[0,3,4,6,8],outsid:[3,4,6],geometri:2,title__exact:[],urlconf:[],fieldnam:[],isbn:3,pygments_styl:6,qualiti:2,echo:[],exact:8,getservbynam:7,match_param:[6,8],owner:[2,8],licens:4,mkdir:4,wrapper:[7,2],attach:6,imap4_ssl:0,termin:[0,7,2,3,4,6],"final":[],udp:7,shell:[],shelf:4,fnhg2:0,models_id:4,"8d3":7,dyno:6,textfield:[6,8],exactli:[0,7,8],haven:[],route_nam:[6,8],embodi:[4,6],dive:6,roberto:8,charact:[2,4,6,8],sens:8,sensit:[0,6],f12:0,stdin:3,favorit:0,listval:3,py3:4,myproject:6,close:[0,7,8],need:[0,7,2,3,4,6,8],turn:[0,4,6,8],villaini:3,programdata:3,afraid:[0,4],min:[6,8],rout:[],restaurant_data_row:2,accuraci:2,which:[0,7,2,3,4,6,8],from_encod:2,authentication_polici:6,ncsa:3,singl:[0,7,2,3,4,6,8],tonight:2,unless:7,ds_store:4,whl:4,who:[6,8],oracl:4,discov:[0,2,3],deploi:[],pyc:4,clean_data:2,payment:6,mashup_1:2,mashup_3:2,mashup_2:2,request:[],face:8,pipe:8,build_db:6,deni:[3,6],determin:[],fact:[7,3,6,8],jkorpela:0,text:[],bring:[0,8],server_nam:3,bedroom:[],rough:4,identityset:4,redirect:[0,2],highest:2,locat:[],auth_typ:3,"2br":[],should:[0,7,2,3,4,6,8],jan:[0,7],result_gener:2,suppos:2,"3e1cb03b":0,"__tablename__":[4,6],local:[7,2,4,6,8],hope:[],meant:[],sitehandl:2,familiar:[0,3],pypi:4,bear:2,db8:7,log_buff:0,smash:8,pastedeploi:4,enabl:[0,3,6],rage:0,"0x10e7d6b90":8,stuff:[2,3,8],she:6,contain:[0,1,2,3,4,5,6,7,8,9,10,11],programmableweb:[],paster:[4,8],view:[],dbsession:[4,6,8],knowledg:4,packet:7,mistak:4,closer:4,statu:[2,3,4,6],wire:[7,6,8],correctli:[0,8],pattern:[2,4,8],make_serv:3,creationflag:3,tend:4,state:[],limit:[7,2],neither:2,flickr:[2,3,6],email:[0,7,2,3,4],mysite1:0,sole:[0,7,2],kei:[2,3,4,6,8],gethead:3,job:[0,2,4,6,8],entir:[2,4],rooftop:2,permanentflag:0,egg_info:4,addit:[],revers:[],dobb:0,startupinfo:3,equal:3,configpars:4,etc:[0,7,4,8],instanc:[],equat:7,wear:0,comment:[0,7,2,8],typifi:4,high_scor:2,lang:8,this_id:8,arriv:8,chmod:[3,6],admin:[],orig:2,quit:[0,7,2,3,4,6,8],divid:[7,3,4],addition:4,card:7,insuffici:0,json:[],yai:[],treat:3,immedi:[7,2],containd:2,presenc:3,sock_stream:7,tranform:2,bulk:4,untrack:4,saner:2,behalf:8,togeth:[],preexec_fn:3,ingredi:4,multi:[0,3],"14t17":2,plain:[0,3,4,6,8],harder:2,contextu:2,defin:[],wild:2,dbapi2:4,endblock:[6,8],layer:[0,7,4],use_kei:2,site:[2,4,6,8],lightweight:2,incom:[],whirl:[7,6],pyramid_chameleon:[4,8],welcom:4,parti:0,matthew:2,auto:[],failur:[0,7,2,3],difficult:3,http:[],hostnam:7,denot:3,absorb:4,upon:3,"85a3":7,auto_now_add:[],php:3,api_url:[],fenced_cod:6,center:0,well:[0,7,2,3,4,6],exampl:[],command:[0,2,3,4,6,8],filesystem:[0,8],undefin:8,usual:[7,4],deletecom:2,distanc:7,less:[0,7,3],foodsafeti:2,kramer:6,half:7,djangoenv:[],paul:2,emtpi:4,kcpageanalyt:2,wed:0,nullabl:[6,8],smith:0,other:[],polici:6,logger:4,gmt:0,rememb:[0,7,2,3,4,6,8],auto_now:[],agnost:[7,8],crud:0,td_children:2,cedar:6,know:[7,2,3,4,6,8],unseen:0,password:[],recurs:2,lastbuildd:2,python2:[3,4],insert:[2,6],like:[],success:[],microblog:[],echo_serv:7,lose:4,architectur:2,page:[],backlog:7,didn:4,specifi:[2,3,8],captur:[2,4,8],linux:[0,6],"export":3,uidvalid:0,proper:[0,7,2,3,8],syncdb:[],librari:[0,7,2,3,4,6,8],tmp:7,guid:2,gethostbyname_ex:7,esr:0,lead:[3,8],octet:0,leav:[2,4,8],settl:3,server_port:3,u00e9:2,investig:[0,8],published_date__lt:[],journal:[],usag:[2,4],host:[0,7,3,4,6],although:[0,4,8],pike:2,actual:[0,7,3,4,6,8],world:[2,3,4,8],herokuapp:6,datagram:7,carrier:7,constructor:7,fals:[7,2,3,6],echo_cli:7,remote_host:3,own:[],washington:[7,2],easy_instal:[2,4],automat:[7,2,4,8],uiqj579igrbrebhmjqnth8pffaz2qrj:0,guard:3,hoohoo:3,transactiontestcas:[],sock_:7,mod_python:3,val:[2,4,8],allusersprofil:3,cell1:2,transfer:[0,2,6],rcp:2,intention:0,appl:4,inner:[],wouldn:2,arg1:6,"var":[0,2,6],"function":[],respositori:0,fuzzy_search:2,versioner_python_prefer_32_bit:3,xerox:4,bui:2,gain:[4,6],bookshelf:3,inlin:[7,4],count:[2,4],gateway_interfac:3,made:[0,7,2,3,4,6,8],view_config:[6,8],whether:[0,2],wish:[3,4,6],googlecod:8,displai:[],has_four:2,record:2,below:[7,2,3,6],pcreat:[4,8],problem:[],does_not_start:2,"int":[2,3,4,6],blabber:4,dure:[],pid:[6,8],ephemer:[7,4],implement:[],ini:[4,6,8],pip:[2,4],duru:4,probabl:[3,6,8],sharabl:3,quot:2,detail:[],virtual:[0,3,4],new_valu:3,book:[],lookup:[7,8],futur:7,branch:4,inspection_param:2,stat:0,repeat:[],"class":[],allowedvers:0,dewei:0,stab:[],log:[0,4,6,8],fiddler2:0,"_queri":6,get_score_data:2,syllabu:4,reliabl:7,xmlrpclib:2,rule:[0,7,4],bcryptpasswordmanag:6,models_nam:4,portion:[3,8],htmlparser:2},objtypes:{"0":"py:class"},objnames:{"0":["py","class","Python class"]},filenames:["presentations/session05","index","presentations/session07","presentations/session06","presentations/session01","outline","presentations/session03","presentations/session04","presentations/session02","presentations/django_intro","readings","presentations/index"],titles:["Session 05","Internet Programming with Python","Session 07","Session 06","Session 01","Course Outline","Session 03","Session 04","Session 02","An Introduction To Django","Supplementary Course Readings","Course Presentations"],objects:{"":{small:[9,0,1,""],python:[9,0,1,""]}},titleterms:{all:[7,2,4],code:[0,2,4],chain:4,queri:4,ljshell:8,implement:[0,6],row:[],stub:8,depend:6,send:7,environment:3,program:[1,9],roa:2,deactiv:4,sourc:2,string:8,util:7,did:3,list:[3,6,8],iter:4,"try":[6,8],adjust:6,quick:[0,7],div:2,prepar:[3,6,8],cgi:3,work:[2,3,4,6],pass:0,further:[0,7,3],proxi:3,index:[],what:[0,2,3,4,6,8],hide:6,compar:6,repli:7,asid:0,beautifulsoup:2,navigablestr:[],"new":4,method:[0,7,4],gener:2,here:[],logout:6,address:7,path:[3,8],along:0,valu:[2,8],wait:[],search:2,credit:[],base:4,pick:8,chang:[4,6,8],via:6,extra:[],activ:4,app:[3,4,6],unix:7,api:[2,8],famili:7,instal:[2,4,6,8],wsdl:2,middlewar:3,from:3,commun:7,regist:6,next:[],few:[0,3],live:3,call:[],asset:8,type:[0,7,2],more:[2,4],idempot:0,share:8,relat:[],enhanc:[],templat:8,examin:[],iii:3,fffffffffuuuuuuuuuuuuu:2,word:[4,6],setup:4,outlin:5,can:0,learn:[0,3],fetch:2,control:8,process:3,smtp:0,accept:7,tag:2,explor:[],onlin:3,cours:[11,5,10],secur:6,anoth:2,geojson:2,revisit:2,write:[2,3],how:6,answer:2,verifi:[2,6],simpl:3,needl:[],css:6,updat:[0,2,3,6],map:0,resourc:0,mess:2,resolve_path:3,date:2,develop:[],law:2,data:[2,3,8],practic:[],read:10,bind:7,learning_journ:6,django:[],inform:[7,2],runapp:6,environ:[3,4],style:8,html:2,persist:4,alter:[3,4],"return":[0,4],handl:[0,2],slate:[],safe:0,"break":[0,7,2,3,4,6],hateoa:[],jinja2:[6,8],recap:3,introduct:4,addenda:[],edit:[6,8],config:6,troubleshoot:6,revers:2,separ:4,debug:0,side:[7,4],domain:7,meta:3,"static":8,connect:[7,8],our:[0,2,4,6,8],happen:4,beyond:2,extract:2,orient:3,out:[2,6,8],variabl:3,content:0,internet:[1,2,9,7],got:[],factori:6,urlpattern:[],navig:[],fixm:[],orm:4,mime:0,dictionari:8,put:[7,2],geocod:2,filter:[2,6,8],mvc:[4,8],perman:4,first:[0,3,4,6,8],render:[6,8],echo:0,hook:[],done:6,construct:7,blank:[],custom:7,open:[],size:[],differ:0,script:[2,3,4,8],interact:[0,4,8],system:[4,8],messag:7,order_bi:4,"final":2,listen:7,shell:6,consol:4,option:0,part:8,pars:[0,2],virtuelenv:4,matchdict:8,rss:2,serv:0,provid:[6,8],mappabl:2,structur:[4,8],project:4,browser:0,comput:[0,7],queryset:[],packag:4,have:[0,4],tabl:4,element:[],ponder:3,engin:2,advic:4,rout:8,ideal:[],exampl:[0,6,8],build:[2,3,6],soap:2,simplifi:3,deploy:[6,8],price:[],object:[4,8],procfil:6,cgitb:3,plai:2,regular:2,deploi:6,"class":[2,3],url:8,later:[],flow:[7,3,8],uri:0,doe:[0,8],determin:0,wsgi:3,show:3,text:[],syntax:6,session:[0,7,2,3,4,6,8],permiss:6,sqla:4,find:2,xml:2,access:8,locat:[],configur:[4,6,8],apach:3,restaur:2,get:[7,2,3,4,8],express:[2,8],stop:0,autom:2,pop3:0,rest:2,requir:6,layout:8,organ:[],bad:0,common:0,where:6,view:[0,3,6,8],respond:7,set:[3,6],result:[2,3,6],respons:[0,2,8],testcas:[],concern:4,databas:[4,6],label:2,state:[],score:[],irl:[0,2],awai:3,approach:2,attribut:2,altern:[3,4],addit:6,last:4,admin:[],wsgiref:3,instanc:[],context:[6,8],modif:0,login:6,whole:[],markdown:6,point:[],dispatch:3,walk:[],header:0,rpc:2,speak:0,authz:6,cryptactular:6,rebuild:6,three:4,compon:4,json:2,authn:6,basic:[0,4,8],resolut:[],togeth:[7,2],flowchart:[],repetit:[],imap:0,present:[11,8],look:0,servic:2,properti:2,trick:[],defin:8,outcom:8,error:[0,3],fun:2,anonym:6,cleanup:4,earli:2,pyramid:[4,6,8],engag:6,demo:[0,8],incom:7,irrelev:4,receiv:7,make:[2,4,6,8],python:[0,1,2,3,4,7,9],complex:2,document:2,mod_wsgi:3,complet:[2,8],finish:7,http:[0,2,8],effect:4,solut:[0,2,3],user:[3,6,8],stack:[7,3],stateless:[],task:7,entri:6,thought:2,client:7,choos:[2,4],model:[4,6,8],protocol:[0,7],execut:[3,6],tcp:7,initializedb:6,polish:6,skill:7,languag:0,previous:3,web:[2,3,4],password:6,add:[2,4,6,8],other:0,exercis:3,enchilada:[],input:8,save:4,homework:[0,7,2,3,4,8],real:0,applic:[7,3,4,6],format:[0,6],preserv:2,big:2,bit:4,characterist:0,like:0,success:3,resolv:0,server:[0,7,3],output:3,page:8,some:[2,3],revel:[3,6],transport:7,virtualenv:4,afterword:2,foo:[],machin:7,core:0,run:[0,7,3,6],journal:6,inspect:2,tdd:0,step:[0,3],post:[],unsaf:0,comparison:2,about:[0,2,4,6],postgresql:6,socket:7,column:4,manag:[],commit:4,block:8,match:8,repair:3,own:7,dilemma:2,terminolog:4,wrap:[2,3,6],lesson:3,your:[0,7,2,3,4,6,8],question:[2,3],submit:[0,7,2,3,4],tame:2,start:4,heroku:6,includ:[],"function":2,form:[3,6,8],sqlalchemi:4,link:[7,6],congratul:7,pull:[],displai:2,glori:6,foreignkei:[],highlight:6,problem:3,creat:[7,4,6],request:[0,2,8],wtform:8,file:4,check:6,encrypt:6,googl:2,mashup:2,tip:3,detail:[3,8],scrape:2,field:[],book:3,test:[0,7,2,3,6,8],you:4,repeat:2,clean:[7,4],why:[2,4],scale:6,sql:4,index_pag:6,initialize_learning_journal_db:4,descript:[],mash:2,ignor:4,time:[0,7,2,3,4,6]}}) \ No newline at end of file From 68371690c011b818fdd8e2769de9da28222cbf3d Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 22 Feb 2015 01:20:57 -0800 Subject: [PATCH 088/114] updates to existing materials --- html/_sources/presentations/django_intro.txt | 42 +++++++++++--------- html/_sources/presentations/index.txt | 2 + html/index.html | 2 + html/presentations/django_intro.html | 6 ++- html/presentations/index.html | 10 +++++ html/presentations/session07.html | 10 ++--- html/readings.html | 10 ++--- html/searchindex.js | 2 +- 8 files changed, 54 insertions(+), 30 deletions(-) diff --git a/html/_sources/presentations/django_intro.txt b/html/_sources/presentations/django_intro.txt index d1325e96..0e3f7ef2 100644 --- a/html/_sources/presentations/django_intro.txt +++ b/html/_sources/presentations/django_intro.txt @@ -69,6 +69,12 @@ create one. We'll use a script installed by Django, ``django-admin.py``: (djangoenv)$ django-admin.py startproject mysite +If you're on windows, that command is slightly different: + +.. code-block:: bash + + django-admin.exe startproject mysite + This will create a folder called 'mysite'. The folder contains the following structure:: @@ -169,8 +175,8 @@ folder. Edit your ``settings.py`` to match: .. code-block:: python - - + + DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', @@ -217,7 +223,7 @@ Great! Now we can set up an initial user who'll be able to do anything, a Notice that as you type your password, it will not appear on the screen. Don't worry, it's actually being recorded. You just can't see it (and neither can -than snoopy git looking over your shoulder). +that snoopy git looking over your shoulder). Projects and Apps ================= @@ -244,8 +250,8 @@ Django already includes some *apps* for you. They're in ``settings.py`` in the ``INSTALLED_APPS`` setting: .. code-block:: python - - + + INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', @@ -322,7 +328,7 @@ following: from django.db import models #<-- This is already in the file from django.contrib.auth.models import User - + class Post(models.Model): title = models.CharField(max_length=128) text = models.TextField(blank=True) @@ -417,7 +423,7 @@ in your editor, and find the INSTALLED_APPS setting. You extend Django functionality by *installing apps*. This is pretty simple: .. code-block:: python - + INSTALLED_APPS = ( 'django.contrib.admin', @@ -515,7 +521,7 @@ And now our instance should validate properly: .. code-block:: python >>> p1.full_clean() - >>> + >>> Saving New Objects @@ -525,7 +531,7 @@ Our model has three date fields, two of which are supposed to be auto-populated: .. class:: python - + >>> print(p1.created_date) None >>> print(p1.modified_date) @@ -630,11 +636,11 @@ If you are curious, you can see the SQL that a given QuerySet will use: .. code-block:: pycon >>> print(c.query) - SELECT "myblog_post"."id", "myblog_post"."title", - "myblog_post"."text", "myblog_post"."author_id", - "myblog_post"."created_date", "myblog_post"."modified_date", - "myblog_post"."published_date" - FROM "myblog_post" + SELECT "myblog_post"."id", "myblog_post"."title", + "myblog_post"."text", "myblog_post"."author_id", + "myblog_post"."created_date", "myblog_post"."modified_date", + "myblog_post"."published_date" + FROM "myblog_post" WHERE ("myblog_post"."title" LIKE %post% ESCAPE '\' AND NOT ("myblog_post"."text" LIKE %created% ESCAPE '\' ) ) @@ -731,7 +737,7 @@ Now that we have a fixture, we need to instruct our tests to use it. Edit ``tests.py`` to look like this: .. code-block:: python - + from django.test import TestCase from django.contrib.auth.models import User @@ -775,7 +781,7 @@ Let's write a test that demonstrates our desired outcome: To run tests, use the ``test`` management command. Without arguments, it will run all TestCases it finds in all installed *apps*. You can pass the name of a -single app to focus on those tests. +single app to focus on those tests. Quit your Django shell and in your terminal run the test we wrote: @@ -812,7 +818,7 @@ Let's add an appropriate ``__unicode__`` method to our Post class. .. code-block:: python class Post(models.Model): - #... + #... def __unicode__(self): return self.title @@ -916,7 +922,7 @@ stroke. verify the following lines in ``urls.py``: .. code-block:: python - + from django.contrib import admin # <- should be present already diff --git a/html/_sources/presentations/index.txt b/html/_sources/presentations/index.txt index 62b26d7d..b0fc6b31 100644 --- a/html/_sources/presentations/index.txt +++ b/html/_sources/presentations/index.txt @@ -22,3 +22,5 @@ course. session05 session06 session07 + session08 + session09 diff --git a/html/index.html b/html/index.html index e35aed04..fc30ce05 100644 --- a/html/index.html +++ b/html/index.html @@ -87,6 +87,8 @@

      Internet Programming with PythonSession 05
    • Session 06
    • Session 07
    • +
    • Session 08
    • +
    • Session 09
  • Supplementary Course Readings
      diff --git a/html/presentations/django_intro.html b/html/presentations/django_intro.html index a597232d..0fbc2471 100644 --- a/html/presentations/django_intro.html +++ b/html/presentations/django_intro.html @@ -107,6 +107,10 @@

      Our Project
      (djangoenv)$ django-admin.py startproject mysite
       

  • +

    If you’re on windows, that command is slightly different:

    +
    django-admin.exe startproject mysite
    +
    +

    This will create a folder called ‘mysite’. The folder contains the following structure:

    diff --git a/html/presentations/session07.html b/html/presentations/session07.html index 807bc1d4..28631b7a 100644 --- a/html/presentations/session07.html +++ b/html/presentations/session07.html @@ -25,7 +25,7 @@ - + @@ -50,7 +50,7 @@

    Navigation

    index
  • - next |
  • Previous topic

    Session 06

    Next topic

    -

    Supplementary Course Readings

    +

    Session 08

    This Page

    • Navigation index
    • - next |
    • - + + + + +.. nextslide:: View Your Results + +Reload http://localhost:8000/ and view the results of your work + +.. rst-class:: build +.. container:: + + We now have a reasonable view of the posts of our blog on the front end + + And we have a way to create and categorize posts using the admin + + However, we lack a way to move between the two. + + Let's add that ability next. + + +Global Navigation +----------------- + +We'll start by adding a control bar to our ``base.html`` template: + +.. code-block:: jinja + + + ... + +
      + ... + + +.. nextslide:: Request Context Revisited + +When we set up our views, we used the ``render`` shortcut, which provides a +``RequestContext`` + +.. rst-class:: build +.. container:: + + This gives us access to ``user`` in our templates + + It provides access to methods about the state and rights of that user + + We can use these to conditionally display links or UI elements. Like only + showing the admin link to staff members. + + +.. nextslide:: Login/Logout + +Django also provides a reasonable set of views for login/logout. + +.. rst-class:: build +.. container:: + + The first step to using them is to hook them into a urlconf. + + .. container:: + + Add the following to ``mysite/urls.py``: + + .. code-block:: python + + url(r'^', include('myblog.urls')), #<- already there + url(r'^login/$', + 'django.contrib.auth.views.login', + {'template_name': 'login.html'}, + name="login"), + url(r'^logout/$', + 'django.contrib.auth.views.logout', + {'next_page': '/'}, + name="logout"), + + +.. nextslide:: Login Template + +We need to create a new ``login.html`` template in ``mysite/templates``: + +.. code-block:: jinja + + {% extends "base.html" %} + + {% block content %} +

      My Blog Login

      +
      {% csrf_token %} + {{ form.as_p }} +

      + + {% endblock %} + + +.. nextslide:: Submitting Forms + +In a web application, submitting forms is potentially hazardous + +.. rst-class:: build +.. container:: + + Data is being sent to our application from some remote place + + If that data is going to alter the state of our application, we **must** + use POST + + Even so, we are vulnerable to Cross-Site Request Forgery, a common attack + vector. + + +.. nextslide:: Danger: CSRF + +Django provides a convenient system to fight this. + +.. rst-class:: build +.. container:: + + In fact, for POST requests, it *requires* that you use it. + + The Django middleware that does this is enabled by default. + + All you need to do is include the ``{% csrf_token %}`` tag in your form. + + +.. nextslide:: Hooking It Up + +In ``base.html`` make the following updates: + +.. rst-class:: build +.. container:: + + .. code-block:: jinja + + +
      admin + + logout + + login + + .. container:: + + Finally, in ``settings.py`` add the following: + + .. code-block:: python + + + LOGIN_URL = '/login/' + LOGIN_REDIRECT_URL = '/' + + +.. nextslide:: Forms In Django + +In adding a login view, we've gotten a sneak peak at how forms work in Django. + +.. rst-class:: build +.. container:: + + However, learning more about them is beyond what we can achieve in this + session. + + The form system in Django is quite nice, however. I urge you to + `read more about it`_ + + In particular, you might want to pay attention to the documentation on + `Model Forms`_ + + +.. _read more about it: https://docs.djangoproject.com/en/1.6/topics/forms/ +.. _Model Forms: https://docs.djangoproject.com/en/1.6/topics/forms/modelforms/ + + +Ta-Daaaaaa! +----------- + +So, that's it. We've created a workable, simple blog app in Django. + +.. rst-class:: build +.. container:: + + If you fell behind at some point, the app as it now stands is in our class + resources as ``mysite_stage_3``. + + There's much more we could do with this app. And for homework, you'll do + some of it. + + Then next session, we'll work together as pairs to implement a simple + feature to extend the blog + + +Homework +======== + +.. rst-class:: left + +For your homework this week, we'll fix one glaring problem with our blog admin. + +.. rst-class:: build left +.. container:: + + As you created new categories and posts, and related them to each-other, + how did you feel about that work? + + Although from a data perspective, the category model is the right place for + the ManytoMany relationship to posts, this leads to awkward usage in the + admin. + + It would be much easier if we could designate a category for a post *from + the Post admin*. + + +Your Assignment +--------------- + +You'll be reversing that relationship so that you can only add categories to +posts + +.. rst-class:: build +.. container:: + + Take the following steps: + + 1. Read the documentation about the `Django admin.`_ + 2. You'll need to create a customized `ModelAdmin`_ class for the ``Post`` + and ``Category`` models. + 3. And you'll need to create an `InlineModelAdmin`_ to represent Categories + on the Post admin view. + 4. Finally, you'll need to `suppress the display`_ of the 'posts' field on + your ``Category`` admin view. + + +.. _Django admin.: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/ +.. _ModelAdmin: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#modeladmin-objects +.. _InlineModelAdmin: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#inlinemodeladmin-objects +.. _suppress the display: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#modeladmin-options + + +.. nextslide:: Pushing Further + +All told, those changes should not require more than about 15 total lines of +code. + +.. rst-class:: build +.. container:: + + The trick of course is reading and finding out which fifteen lines to + write. + + If you complete that task in less than 3-4 hours of work, consider looking + into other ways of customizing the admin. + + +.. nextslide:: Tasks you might consider + +.. rst-class:: build + +* Change the admin index to say 'Categories' instead of 'Categorys'. +* Add columns for the date fields to the list display of Posts. +* Display the created and modified dates for your posts when viewing them in + the admin. +* Add a column to the list display of Posts that shows the author. For more + fun, make this a link that takes you to the admin page for that user. +* For the biggest challenge, look into `admin actions`_ and add an action to + the Post admin that allows you to bulk publish posts from the Post list + display + +.. _admin actions: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/actions/ diff --git a/html/_sources/presentations/session09.txt b/html/_sources/presentations/session09.txt new file mode 100644 index 00000000..0b7fbd8c --- /dev/null +++ b/html/_sources/presentations/session09.txt @@ -0,0 +1,107 @@ +********** +Session 09 +********** + +.. figure:: /_static/django-pony.png + :align: center + :width: 60% + + image: http://djangopony.com/ + +Extending Django +================ + +.. rst-class:: large + +Wherein we extend our Django blog app. + + +Last Week +--------- + +Last week, we created a nice, simple Django microblog application. + +.. rst-class:: build +.. container:: + + Over the week, as your homework, you made some modifications to improve how + it works. + + There's still quite a bit more we can do to improve this application. + + And today, that's what we are going to do. + + +Preparation +----------- + +In order for this to work properly, we'll need to have a few things in place. + +.. rst-class:: build +.. container:: + + First, we'll start from a canonical copy of the microblog. Make a fork of + the following repository to your github account:: + + https://github.com/cewing/django-microblog + + Then, clone that repository to your local machine: + + .. code-block:: bash + + $ git clone https://github.com//django-microblog.git + + +Connect to Your Partner +----------------------- + +Finally, you'll want to connect to your partner's repository, so that you can +each work on your own laptop and still share the changes you make. + +.. rst-class:: build +.. container:: + + First, add your partner's repository as ``upstream`` to yours: + + .. code-block:: bash + + $ git remote add upstream https://github.com//django-microblog.git + + Then, fetch their copy so that you can easily merge their changes later: + + .. code-block:: bash + + $ git fetch --all + + +While You Work +-------------- + +Now, when you switch roles during your work, here's the workflow you can use: + +.. rst-class:: build +.. container:: + + .. container:: + + 1. The current driver commits all changes and pushes to their repository: + + .. code-block:: bash + + $ git commit -a -m "Time to switch roles" + $ git push origin master + + .. container:: + + 2. The new driver fetches and merges changes made upstream: + + .. code-block:: bash + + $ git fetch --all + $ git branch -a + * master + remotes/origin/master + remotes/upstream/master + $ git merge upstream/master + + 3. The new driver continues working from where their partner left off. diff --git a/html/presentations/session08.html b/html/presentations/session08.html new file mode 100644 index 00000000..25564428 --- /dev/null +++ b/html/presentations/session08.html @@ -0,0 +1,1095 @@ + + + + + + + + Session 08 — Internet Programming with Python + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      +
      +
      + +
      +

      Session 08¶

      + +
      +

      Building a Django Application¶

      +

      Wherein we build a simple blogging app.

      +
      +

      A Full Stack Framework¶

      +

      Django comes with:

      +
      +
        +
      • Persistence via the Django ORM
      • +
      • CRUD content editing via the automatic Django Admin
      • +
      • URL Mapping via urlpatterns
      • +
      • Templating via the Django Template Language
      • +
      • Caching with levels of configurability
      • +
      • Internationalization via i18n hooks
      • +
      • Form rendering and handling
      • +
      • User authentication and authorization
      • +
      +

      Pretty much everything you need to make a solid website quickly

      +
      +

      Lots of frameworks offer some of these features, if not all.

      +
      +

      What is Django’s killer feature

      +

      The Django Admin

      +
      +

      Works in concert with the Django ORM to provide automatic CRUD functionality

      +
      +

      You write the models, it provides the UI

      +

      You’ve seen this in action. Pretty neat, eh?

      +
      +

      The Django Admin is a great example of the Pareto Priciple, a.k.a. the 80/20 +rule:

      +
      +

      80% of the problems can be solved by 20% of the effort

      +

      The converse also holds true:

      +

      Fixing the last 20% of the problems will take the remaining 80% of the +effort.

      +
      +

      Other Django Advantages

      +

      Clearly the most popular full-stack Python web framework at this time

      +
      +

      Popularity translates into:

      +
        +
      • Active, present community
      • +
      • Plethora of good examples to be found online
      • +
      • Rich ecosystem of apps (encapsulated add-on functionality)
      • +
      +

      Jobs

      +
      +

      Django releases in the last 12+ months (a short list):

      +
        +
      • 1.7.4 (January 2015)
      • +
      • 1.6.9 (January 2015)
      • +
      • 1.7.1 (October 2014)
      • +
      • 1.6.7 (September 2014)
      • +
      • 1.7 (September 2014)
      • +
      • 1.6.5 (May 2014)
      • +
      • 1.6.2 (February 2014)
      • +
      • 1.6 (November 2013)
      • +
      +

      Thorough, readable, and discoverable.

      +
      +

      Led the way to better documentation for all Python

      +

      Read The Docs - built in connection with +Django, sponsored by the Django Software Foundation.

      +

      Write documentation as part of your python package.

      +

      Render new versions of that documentation for every commit.

      +

      this is awesome

      +
      +
      +
      +

      Where We Stand¶

      +

      For your homework this week, you created a Post model to serve as the heart +of our blogging app.

      +
      +

      You also took some time to get familiar with the basic workings of the +Django ORM.

      +

      You made a minor modification to our model class and wrote a test for it.

      +

      And you installed the Django Admin site and added your app to it.

      +
      +
      +
      +

      Going Further¶

      +

      One of the most common features in a blog is the ability to categorize posts.

      +
      +

      Let’s add this feature to our blog!

      +

      To do so, we’ll be adding a new model, and making some changes to existing +code.

      +

      This means that we’ll need to change our database schema.

      +
      +

      You’ve seen how to add new tables to a database using the migrate command.

      +
      +

      And you’ve created your first migration in setting up the Post model.

      +

      This is an example of altering the database schema using Python code.

      +

      Starting in Django 1.7, this ability is available built-in to Django.

      +

      Before verson 1.7 it was available in an add-on called South.

      +
      +

      We want to add a new model to represent the categories our blog posts might +fall into.

      +
      +

      This model will need to have:

      +
        +
      • a name for the category
      • +
      • a longer description
      • +
      • a relationship to the Post model
      • +
      +
      +
      # in models.py
      +class Category(models.Model):
      +    name = models.CharField(max_length=128)
      +    description = models.TextField(blank=True)
      +    posts = models.ManyToManyField(Post, blank=True, null=True,
      +                                   related_name='categories')
      +
      +
      +

      In our Post model, we used a ForeignKeyField field to match an author +to her posts.

      +
      +

      This models the situation in which a single author can have many posts, +while each post has only one author.

      +

      We call this a Many to One relationship.

      +

      But any given Post might belong in more than one Category.

      +

      And it would be a waste to allow only one Post for each Category.

      +

      Enter the ManyToManyField

      +
      +

      To get these changes set up, we now add a new migration.

      +
      +

      We use the makemigrations management command to do so:

      +
      (djangoenv)$ python manage.py makemigrations
      +Migrations for 'myblog':
      +  0002_category.py:
      +    - Create model Category
      +
      +
      +
      +

      Once the migration has been created, we can apply it with the migrate +management command.

      +
      +
      (djangoenv)$ python manage.py migrate
      +Operations to perform:
      +  Apply all migrations: admin, myblog, contenttypes, auth, sessions
      +Running migrations:
      +  Applying myblog.0002_category... OK
      +
      +
      +

      You can even look at the migration file you just applied, +myblog/migrations/0002_category.py to see what happened.

      +
      +

      Let’s make Category object look nice the same way we did with Post. +Start with a test:

      +
      +

      add this to tests.py:

      +
      # another import
      +from myblog.models import Category
      +
      +# and the test case and test
      +class CategoryTestCase(TestCase):
      +
      +    def test_unicode(self):
      +        expected = "A Category"
      +        c1 = Category(name=expected)
      +        actual = unicode(c1)
      +        self.assertEqual(expected, actual)
      +
      +
      +
      +

      When you run your tests, you now have two, and one is failing because the +Category object doesn’t look right.

      +
      +
      (djangoenv)$ python manage.py test myblog
      +Creating test database for alias 'default'...
      +...
      +
      +Ran 2 tests in 0.011s
      +
      +FAILED (failures=1)
      +
      +
      +

      Do you remember how you made that change for a Post?

      +
      class Category(models.Model):
      +    #...
      +
      +    def __unicode__(self):
      +        return self.name
      +
      +
      +
      +

      Adding our new model to the Django admin is equally simple.

      +
      +

      Simply add the following line to myblog/admin.py

      +
      # a new import
      +from myblog.models import Category
      +
      +# and a new admin registration
      +admin.site.register(Category)
      +
      +
      +
      +

      Fire up the Django development server and see what you have in the admin:

      +
      (djangoenv)$ python manage.py runserver
      +Validating models...
      +...
      +Starting development server at http://127.0.0.1:8000/
      +Quit the server with CONTROL-C.
      +
      +
      +
      +

      Point your browser at http://localhost:8000/admin/, log in and play.

      +

      Add a few categories, put some posts in them. Visit your posts, add new +ones and then categorize them.

      +
      +
      +
      +

      BREAK TIME¶

      +

      We’ve completed a data model for our application.

      +

      And thanks to Django’s easy-to-use admin, we have a reasonable CRUD application +where we can manage blog posts and the categories we put them in.

      +

      When we return, we’ll put a public face on our new creation.

      +

      If you’ve fallen behind, the app as it stands now is in our class resources as +mysite_stage_1

      +
      +
      +
      +

      A Public Face¶

      +

      Point your browser at http://localhost:8000/

      +
      +

      What do you see?

      +

      Why?

      +

      We need to add some public pages for our blog.

      +

      In Django, the code that builds a page that you can see is called a view.

      +
      +
      +

      Django Views¶

      +

      A view can be defined as a callable that takes a request and returns a +response.

      +
      +

      This should sound pretty familiar to you.

      +

      Classically, Django views were functions.

      +

      Version 1.3 added support for Class-based Views (a class with a +__call__ method is a callable)

      +
      +

      Let’s add a really simple view to our app.

      +
      +

      It will be a stub for our public UI. Add this to views.py in +myblog

      +
      from django.http import HttpResponse, HttpResponseRedirect, Http404
      +
      +def stub_view(request, *args, **kwargs):
      +    body = "Stub View\n\n"
      +    if args:
      +        body += "Args:\n"
      +        body += "\n".join(["\t%s" % a for a in args])
      +    if kwargs:
      +        body += "Kwargs:\n"
      +        body += "\n".join(["\t%s: %s" % i for i in kwargs.items()])
      +    return HttpResponse(body, content_type="text/plain")
      +
      +
      +
      +

      In your homework tutorial, you learned about Django urlconfs

      +
      +

      We used our project urlconf to hook the Django admin into our project.

      +

      We want to do the same thing for our new app.

      +

      In general, an app that serves any sort of views should contain its own +urlconf.

      +

      The project urlconf should mainly include these where possible.

      +
      +

      Create a new file urls.py inside the myblog app package.

      +
      +

      Open it in your editor and add the following code:

      +
      from django.conf.urls import patterns, url
      +
      +urlpatterns = patterns('myblog.views',
      +    url(r'^$',
      +        'stub_view',
      +        name="blog_index"),
      +)
      +
      +
      +
      +

      The patterns function takes a first argument called the prefix

      +
      +

      When it is not empty, it is added to any view names in url() calls in +the same patterns.

      +

      In a root urlconf like the one in mysite, this isn’t too useful.

      +

      But in myblog.urls it lets us refer to views by simple function name.

      +

      No need to import every view.

      +

      Nor do we need to reference each by the app and module name where it +appears.

      +

      This is a convenience.

      +
      +

      In order for our new urls to load, we’ll need to include them in our project +urlconf

      +
      +

      Open urls.py from the mysite project package and add this:

      +
      urlpatterns = patterns('',
      +    url(r'^', include('myblog.urls')), #<- add this
      +    #... other included urls
      +)
      +
      +
      +

      Try reloading http://localhost:8000/

      +

      You should see some output now.

      +
      +
      +
      +

      Project URL Space¶

      +

      A project is defined by the urls a user can visit.

      +
      +

      What should our users be able to see when they visit our blog?

      +
        +
      • A list view that shows blog posts, most recent first.
      • +
      • An individual post view, showing a single post (a permalink).
      • +
      +

      Let’s add urls for each of these.

      +

      For now, we’ll use the stub view we’ve created so we can concentrate on the +url routing.

      +
      +

      We’ve already got a good url for the list page: blog_index at ‘/’

      +
      +

      For the view of a single post, we’ll need to capture the id of the post. +Add this to urlpatterns in myblog/urls.py:

      +
      url(r'^posts/(\d+)/$',
      +    'stub_view',
      +    name="blog_detail"),
      +
      +
      +

      (\d+) captures one or more digits as the post_id.

      +

      Load http://localhost:8000/posts/1234/ and see what you get.

      +
      +

      When you load the above url, you should see 1234 listed as an arg

      +
      +

      Try changing the route like so:

      +
      r'^posts/(?P<post_id>\d+)/$'
      +
      +
      +

      Reload the same url.

      +

      Notice the change.

      +

      What’s going on there?

      +
      +

      Like Pyramid, Django uses Python regular expressions to build routes.

      +
      +

      Unlike Pyramid, Django requires regular expressions to capture segments +in a route.

      +

      When we built our WSGI book app, we used this same appraoch.

      +

      There we learned about regular expression capture groups. We just changed +an unnamed capture group to a named one.

      +

      How you declare a capture group in your url pattern regexp influences how +it will be passed to the view callable.

      +
      +
      from django.conf.urls import patterns, url
      +
      +urlpatterns = patterns('myblog.views',
      +    url(r'^$',
      +        'stub_view',
      +        name="blog_index"),
      +    url(r'^posts/(?P<post_id>\d+)/$',
      +        'stub_view',
      +        name="blog_detail"),
      +)
      +
      +
      +

      Before we begin writing real views, we need to add some tests for the views we +are about to create.

      +
      +

      We’ll need tests for a list view and a detail view

      +

      add the following imports at the top of myblog/tests.py:

      +
      import datetime
      +from django.utils.timezone import utc
      +
      +
      +
      +
      class FrontEndTestCase(TestCase):
      +    """test views provided in the front-end"""
      +    fixtures = ['myblog_test_fixture.json', ]
      +
      +    def setUp(self):
      +        self.now = datetime.datetime.utcnow().replace(tzinfo=utc)
      +        self.timedelta = datetime.timedelta(15)
      +        author = User.objects.get(pk=1)
      +        for count in range(1, 11):
      +            post = Post(title="Post %d Title" % count,
      +                        text="foo",
      +                        author=author)
      +            if count < 6:
      +                # publish the first five posts
      +                pubdate = self.now - self.timedelta * count
      +                post.published_date = pubdate
      +            post.save()
      +
      +
      +
      +
      +

      Our List View¶

      +

      We’d like our list view to show our posts.

      +
      +

      But in this blog, we have the ability to publish posts.

      +

      Unpublished posts should not be seen in the front-end views.

      +

      We set up our tests to have 5 published, and 5 unpublished posts

      +

      Let’s add a test to demonstrate that the right ones show up.

      +
      +
      Class FrontEndTestCase(TestCase): # already here
      +    # ...
      +    def test_list_only_published(self):
      +        resp = self.client.get('/')
      +        self.assertTrue("Recent Posts" in resp.content)
      +        for count in range(1, 11):
      +            title = "Post %d Title" % count
      +            if count < 6:
      +                self.assertContains(resp, title, count=1)
      +            else:
      +                self.assertNotContains(resp, title)
      +
      +
      +
      +

      We test first to ensure that each published post is visible in our view.

      +

      Note that we also test to ensure that the unpublished posts are not visible.

      +
      +
      (djangoenv)$ python manage.py test myblog
      +Creating test database for alias 'default'...
      +.F.
      +======================================================================
      +FAIL: test_list_only_published (myblog.tests.FrontEndTestCase)
      +...
      +Ran 3 tests in 0.024s
      +
      +FAILED (failures=1)
      +Destroying test database for alias 'default'...
      +
      +
      +

      Add the view for listing blog posts to views.py.

      +
      # add these imports
      +from django.template import RequestContext, loader
      +from myblog.models import Post
      +
      +# and this view
      +def list_view(request):
      +    published = Post.objects.exclude(published_date__exact=None)
      +    posts = published.order_by('-published_date')
      +    template = loader.get_template('list.html')
      +    context = RequestContext(request, {
      +        'posts': posts,
      +    })
      +    body = template.render(context)
      +    return HttpResponse(body, content_type="text/html")
      +
      +
      +
      published = Post.objects.exclude(published_date__exact=None)
      +posts = published.order_by('-published_date')
      +
      +
      +
      +

      We begin by using the QuerySet API to fetch all the posts that have +published_date set

      +

      Using the chaining nature of the API we order these posts by +published_date

      +

      Remember, at this point, no query has actually been issued to the database.

      +
      +
      template = loader.get_template('list.html')
      +
      +
      +
      +

      Django uses configuration to determine how to find templates.

      +

      By default, Django looks in installed apps for a templates directory

      +

      It also provides a place to list specific directories.

      +

      Let’s set that up in settings.py

      +
      +

      Notice that settings.py already contains a BASE_DIR value which points +to the root of our project (where both the project and app packages are +located).

      +
      +

      In that same file add a tuple bound to TEMPLATE_DIRS and add a path to +it:

      +
      TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'mysite/templates'), )
      +
      +
      +

      Then add a templates directory to your mysite project package

      +

      Finally, in that directory add a new file base.html and populate it +with the following:

      +
      +
      <!DOCTYPE html>
      +<html>
      +  <head>
      +    <title>My Django Blog</title>
      +  </head>
      +  <body>
      +    <div id="container">
      +      <div id="content">
      +      {% block content %}
      +       [content will go here]
      +      {% endblock %}
      +      </div>
      +    </div>
      +  </body>
      +</html>
      +
      +
      +
      +
      +

      Templates in Django¶

      +

      Before we move on, a quick word about Django templates.

      +
      +

      We’ve seen Jinja2 which was “inspired by Django’s templating system”.

      +

      Basically, you already know how to write Django templates.

      +

      Django templates do not allow any python expressions.

      +

      https://docs.djangoproject.com/en/1.7/ref/templates/builtins/

      +
      +

      Our view tries to load list.html.

      +
      +

      This template is probably specific to the blog functionality of our site

      +

      It is common to keep shared templates in your project directory and +specialized ones in app directories.

      +

      Add a templates directory to your myblog app, too.

      +

      In it, create a new file list.html and add this:

      +
      +
      {% extends "base.html" %}
      +
      +{% block content %}
      +  <h1>Recent Posts</h1>
      +
      +  {% comment %} here is where the query happens {% endcomment %}
      +  {% for post in posts %}
      +  <div class="post">
      +    <h2>{{ post }}</h2>
      +    <p class="byline">
      +      Posted by {{ post.author_name }} &mdash; {{ post.published_date }}
      +    </p>
      +    <div class="post-body">
      +      {{ post.text }}
      +    </div>
      +    <ul class="categories">
      +      {% for category in post.categories.all %}
      +        <li>{{ category }}</li>
      +      {% endfor %}
      +    </ul>
      +  </div>
      +  {% endfor %}
      +{% endblock %}
      +
      +
      +
      context = RequestContext(request, {
      +    'posts': posts,
      +})
      +body = template.render(context)
      +
      +
      +
      +

      Like Jinja2, django templates are rendered by passing in a context

      +

      Django’s RequestContext provides common bits, similar to the global context +in Flask

      +

      We add our posts to that context so they can be used by the template.

      +
      +
      return HttpResponse(body, content_type="text/html")
      +
      +
      +
      +

      Finally, we build an HttpResponse and return it.

      +

      This is, fundamentally, no different from the stub_view just above.

      +
      +

      We need to fix the url for our blog index page

      +
      +

      Update urls.py in myblog:

      +
      url(r'^$',
      +    'list_view',
      +    name="blog_index"),
      +
      +
      +

      Then run your tests again:

      +
      (djangoenv)$ python manage.py test myblog
      +...
      +Ran 3 tests in 0.033s
      +
      +OK
      +
      +
      +
      +

      This is a common pattern in Django views:

      +
        +
      • get a template from the loader
      • +
      • build a context, usually using a RequestContext
      • +
      • render the template
      • +
      • return an HttpResponse
      • +
      +
      +

      So common in fact that Django provides two shortcuts for us to use:

      +
        +
      • render(request, template[, ctx][, ctx_instance])
      • +
      • render_to_response(template[, ctx][, ctx_instance])
      • +
      +
      +

      Let’s replace most of our view with the render shortcut

      +
      from django.shortcuts import render # <- already there
      +
      +# rewrite our view
      +def list_view(request):
      +    published = Post.objects.exclude(published_date__exact=None)
      +    posts = published.order_by('-published_date')
      +    context = {'posts': posts}
      +    return render(request, 'list.html', context)
      +
      +
      +

      Remember though, all we did manually before is still happening

      +
      +
      +

      BREAK TIME¶

      +

      We’ve got the front page for our application working great.

      +

      Next, we’ll need to provide a view of a detail page for a single post.

      +

      Then we’ll provide a way to log in and to navigate between the public part of +our application and the admin behind it.

      +

      If you’ve fallen behind, the app as it stands now is in our class resources as +mysite_stage_2

      +
      +
      +

      Our Detail View¶

      +

      Next, let’s add a view function for the detail view of a post

      +
      +

      It will need to get the id of the post to show as an argument

      +

      Like the list view, it should only show published posts

      +

      But unlike the list view, it will need to return something if an +unpublished post is requested.

      +

      Let’s start with the tests in views.py

      +
      +

      Add the following test to our FrontEndTestCase in myblog/tests.py:

      +
      def test_details_only_published(self):
      +    for count in range(1, 11):
      +        title = "Post %d Title" % count
      +        post = Post.objects.get(title=title)
      +        resp = self.client.get('/posts/%d/' % post.pk)
      +        if count < 6:
      +            self.assertEqual(resp.status_code, 200)
      +            self.assertContains(resp, title)
      +        else:
      +            self.assertEqual(resp.status_code, 404)
      +
      +
      +
      (djangoenv)$ python manage.py test myblog
      +Creating test database for alias 'default'...
      +.F..
      +======================================================================
      +FAIL: test_details_only_published (myblog.tests.FrontEndTestCase)
      +...
      +Ran 4 tests in 0.043s
      +
      +FAILED (failures=1)
      +Destroying test database for alias 'default'...
      +
      +
      +

      Now, add a new view to myblog/views.py:

      +
      def detail_view(request, post_id):
      +    published = Post.objects.exclude(published_date__exact=None)
      +    try:
      +        post = published.get(pk=post_id)
      +    except Post.DoesNotExist:
      +        raise Http404
      +    context = {'post': post}
      +    return render(request, 'detail.html', context)
      +
      +
      +

      One of the features of the Django ORM is that all models raise a DoesNotExist +exception if get returns nothing.

      +
      +

      This exception is actually an attribute of the Model you look for.

      +

      There’s also an ObjectDoesNotExist for when you don’t know which model +you have.

      +

      We can use that fact to raise a Not Found exception.

      +

      Django will handle the rest for us.

      +
      +

      We also need to add detail.html to myblog/templates:

      +
      {% extends "base.html" %}
      +
      +{% block content %}
      +<a class="backlink" href="/">Home</a>
      +<h1>{{ post }}</h1>
      +<p class="byline">
      +  Posted by {{ post.author_name }} &mdash; {{ post.published_date }}
      +</p>
      +<div class="post-body">
      +  {{ post.text }}
      +</div>
      +<ul class="categories">
      +  {% for category in post.categories.all %}
      +    <li>{{ category }}</li>
      +  {% endfor %}
      +</ul>
      +{% endblock %}
      +
      +
      +

      In order to view a single post, we’ll need a link from the list view

      +
      +

      We can use the url template tag (like Pyramid’s request.route_url):

      +
      {% url '<view_name>' arg1 arg2 %}
      +
      +
      +

      In our list.html template, let’s link the post titles:

      +
      {% for post in posts %}
      +<div class="post">
      +  <h2>
      +    <a href="{% url 'blog_detail' post.pk %}">{{ post }}</a>
      +  </h2>
      +  ...
      +
      +
      +
      +

      Again, we need to insert our new view into the existing myblog/urls.py in +myblog:

      +
      url(r'^posts/(?P<post_id>\d+)/$',
      +    'detail_view',
      +    name="blog_detail"),
      +
      +
      +
      (djangoenv)$ python manage.py test myblog
      +...
      +Ran 4 tests in 0.077s
      +
      +OK
      +
      +
      +

      We’ve got some good stuff to look at now. Fire up the server

      +
      +

      Reload your blog index page and click around a bit.

      +

      You can now move back and forth between list and detail view.

      +

      Try loading the detail view for a post that doesn’t exist

      +
      +

      You’ve got a functional Blog

      +
      +

      It’s not very pretty, though.

      +

      We can fix that by adding some css

      +

      This gives us a chance to learn about Django’s handling of static files

      +
      +
      +
      +

      Static Files¶

      +

      Like templates, Django expects to find static files in particular locations

      +
      +

      It will look for them in a directory named static in any installed +apps.

      +

      They will be served from the url path in the STATIC_URL setting.

      +

      By default, this is /static/

      +

      To allow Django to automatically build the correct urls for your static +files, you use a special template tag:

      +
      {% static <filename> %}
      +
      +
      +
      +

      I’ve prepared a css file for us to use. You can find it in the class resources

      +
      +

      Create a new directory static in the myblog app.

      +

      Copy the django_blog.css file into that new directory.

      +
      +

      Next, load the static files template tag into base.html (this must +be on the first line of the template):

      +
      {% load staticfiles %}
      +
      +
      +

      Finally, add a link to the stylesheet using the special template tag:

      +
      <title>My Django Blog</title> <!-- This is already present -->
      +<link type="text/css" rel="stylesheet" href="{% static 'django_blog.css' %}">
      +
      +
      +
      +
      +

      Reload http://localhost:8000/ and view the results of your work

      +
      +

      We now have a reasonable view of the posts of our blog on the front end

      +

      And we have a way to create and categorize posts using the admin

      +

      However, we lack a way to move between the two.

      +

      Let’s add that ability next.

      +
      +
      + +
      +

      Ta-Daaaaaa!¶

      +

      So, that’s it. We’ve created a workable, simple blog app in Django.

      +
      +

      If you fell behind at some point, the app as it now stands is in our class +resources as mysite_stage_3.

      +

      There’s much more we could do with this app. And for homework, you’ll do +some of it.

      +

      Then next session, we’ll work together as pairs to implement a simple +feature to extend the blog

      +
      +
      +
      +
      +

      Homework¶

      +

      For your homework this week, we’ll fix one glaring problem with our blog admin.

      +
      +

      As you created new categories and posts, and related them to each-other, +how did you feel about that work?

      +

      Although from a data perspective, the category model is the right place for +the ManytoMany relationship to posts, this leads to awkward usage in the +admin.

      +

      It would be much easier if we could designate a category for a post from +the Post admin.

      +
      +
      +

      Your Assignment¶

      +

      You’ll be reversing that relationship so that you can only add categories to +posts

      +
      +

      Take the following steps:

      +
        +
      1. Read the documentation about the Django admin.
      2. +
      3. You’ll need to create a customized ModelAdmin class for the Post +and Category models.
      4. +
      5. And you’ll need to create an InlineModelAdmin to represent Categories +on the Post admin view.
      6. +
      7. Finally, you’ll need to suppress the display of the ‘posts’ field on +your Category admin view.
      8. +
      +
      +

      All told, those changes should not require more than about 15 total lines of +code.

      +
      +

      The trick of course is reading and finding out which fifteen lines to +write.

      +

      If you complete that task in less than 3-4 hours of work, consider looking +into other ways of customizing the admin.

      +
      +
        +
      • Change the admin index to say ‘Categories’ instead of ‘Categorys’.
      • +
      • Add columns for the date fields to the list display of Posts.
      • +
      • Display the created and modified dates for your posts when viewing them in +the admin.
      • +
      • Add a column to the list display of Posts that shows the author. For more +fun, make this a link that takes you to the admin page for that user.
      • +
      • For the biggest challenge, look into admin actions and add an action to +the Post admin that allows you to bulk publish posts from the Post list +display
      • +
      +
      +
      +
      + + +
      +
      +
      +
      +
      +

      Table Of Contents

      + + +

      Previous topic

      +

      Session 07

      +

      Next topic

      +

      Session 09

      +

      This Page

      + +

      Slides

      + + + +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/html/presentations/session09.html b/html/presentations/session09.html new file mode 100644 index 00000000..5413a2c1 --- /dev/null +++ b/html/presentations/session09.html @@ -0,0 +1,202 @@ + + + + + + + + Session 09 — Internet Programming with Python + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      +
      +
      + +
      +

      Session 09¶

      + +
      +

      Extending Django¶

      +

      Wherein we extend our Django blog app.

      +
      +

      Last Week¶

      +

      Last week, we created a nice, simple Django microblog application.

      +
      +

      Over the week, as your homework, you made some modifications to improve how +it works.

      +

      There’s still quite a bit more we can do to improve this application.

      +

      And today, that’s what we are going to do.

      +
      +
      +
      +

      Preparation¶

      +

      In order for this to work properly, we’ll need to have a few things in place.

      +
      +

      First, we’ll start from a canonical copy of the microblog. Make a fork of +the following repository to your github account:

      +
      https://github.com/cewing/django-microblog
      +
      +
      +

      Then, clone that repository to your local machine:

      +
      $ git clone https://github.com/<your_name>/django-microblog.git
      +
      +
      +
      +
      +
      +

      Connect to Your Partner¶

      +

      Finally, you’ll want to connect to your partner’s repository, so that you can +each work on your own laptop and still share the changes you make.

      +
      +

      First, add your partner’s repository as upstream to yours:

      +
      $ git remote add upstream https://github.com/<partner>/django-microblog.git
      +
      +
      +

      Then, fetch their copy so that you can easily merge their changes later:

      +
      $ git fetch --all
      +
      +
      +
      +
      +
      +

      While You Work¶

      +

      Now, when you switch roles during your work, here’s the workflow you can use:

      +
      +
      +
        +
      1. The current driver commits all changes and pushes to their repository:
      2. +
      +
      $ git commit -a -m "Time to switch roles"
      +$ git push origin master
      +
      +
      +
      +
      +
        +
      1. The new driver fetches and merges changes made upstream:
      2. +
      +
      +
      $ git fetch --all
      +$ git branch -a
      +* master
      +  remotes/origin/master
      +  remotes/upstream/master
      +$ git merge upstream/master
      +
      +
      +
        +
      1. The new driver continues working from where their partner left off.
      2. +
      +
      +
      +
      +
      + + +
      +
      +
      +
      +
      +

      Table Of Contents

      + + +

      This Page

      + +

      Slides

      + + + +
      +
      +
      +
      + + + + \ No newline at end of file From 6a763800afb5d16b7bee04f5a0b6690fca9d895b Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 22 Feb 2015 01:25:10 -0800 Subject: [PATCH 090/114] slides changes for session 8 & 9 --- slides/_images/admin_index.png | Bin 0 -> 27949 bytes slides/_images/django-admin-login.png | Bin 0 -> 7749 bytes slides/_images/django-pony.png | Bin 0 -> 63811 bytes slides/_images/django-start.png | Bin 0 -> 31371 bytes .../_sources/presentations/django_intro.txt | 42 +- slides/_sources/presentations/index.txt | 2 + slides/_sources/presentations/session08.txt | 1502 ++++++++++++++ slides/_sources/presentations/session09.txt | 107 + slides/_static/dialog-note.png | Bin 0 -> 1582 bytes slides/_static/dialog-seealso.png | Bin 0 -> 1502 bytes slides/_static/dialog-todo.png | Bin 0 -> 1334 bytes slides/_static/dialog-topic.png | Bin 0 -> 1910 bytes slides/_static/dialog-warning.png | Bin 0 -> 1391 bytes slides/_static/epub.css | 310 +++ slides/_static/footerbg.png | Bin 0 -> 333 bytes slides/_static/headerbg.png | Bin 0 -> 203 bytes slides/_static/ie6.css | 7 + slides/_static/middlebg.png | Bin 0 -> 2797 bytes slides/_static/pyramid.css | 369 ++++ slides/_static/transparent.gif | Bin 0 -> 49 bytes slides/presentations/session07.html | 2 +- slides/presentations/session08.html | 1758 +++++++++++++++++ slides/presentations/session09.html | 218 ++ slides/readings.html | 2 +- slides/searchindex.js | 2 +- 25 files changed, 4300 insertions(+), 21 deletions(-) create mode 100644 slides/_images/admin_index.png create mode 100644 slides/_images/django-admin-login.png create mode 100644 slides/_images/django-pony.png create mode 100644 slides/_images/django-start.png create mode 100644 slides/_sources/presentations/session08.txt create mode 100644 slides/_sources/presentations/session09.txt create mode 100644 slides/_static/dialog-note.png create mode 100644 slides/_static/dialog-seealso.png create mode 100644 slides/_static/dialog-todo.png create mode 100644 slides/_static/dialog-topic.png create mode 100644 slides/_static/dialog-warning.png create mode 100644 slides/_static/epub.css create mode 100644 slides/_static/footerbg.png create mode 100644 slides/_static/headerbg.png create mode 100644 slides/_static/ie6.css create mode 100644 slides/_static/middlebg.png create mode 100644 slides/_static/pyramid.css create mode 100644 slides/_static/transparent.gif create mode 100644 slides/presentations/session08.html create mode 100644 slides/presentations/session09.html diff --git a/slides/_images/admin_index.png b/slides/_images/admin_index.png new file mode 100644 index 0000000000000000000000000000000000000000..ae7a19f986880cac0b47c2ea4cb48a722851c260 GIT binary patch literal 27949 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 literal 0 HcmV?d00001 diff --git a/slides/_images/django-admin-login.png b/slides/_images/django-admin-login.png new file mode 100644 index 0000000000000000000000000000000000000000..4ceb5f54b92922f5f82b8896c8dccfbcd1ad6bdf GIT binary patch literal 7749 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

      QOERmOdXqT_+)d282e2c1WG)twCD*o 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

    • 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 literal 0 HcmV?d00001 diff --git a/slides/_sources/presentations/django_intro.txt b/slides/_sources/presentations/django_intro.txt index d1325e96..0e3f7ef2 100644 --- a/slides/_sources/presentations/django_intro.txt +++ b/slides/_sources/presentations/django_intro.txt @@ -69,6 +69,12 @@ create one. We'll use a script installed by Django, ``django-admin.py``: (djangoenv)$ django-admin.py startproject mysite +If you're on windows, that command is slightly different: + +.. code-block:: bash + + django-admin.exe startproject mysite + This will create a folder called 'mysite'. The folder contains the following structure:: @@ -169,8 +175,8 @@ folder. Edit your ``settings.py`` to match: .. code-block:: python - - + + DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', @@ -217,7 +223,7 @@ Great! Now we can set up an initial user who'll be able to do anything, a Notice that as you type your password, it will not appear on the screen. Don't worry, it's actually being recorded. You just can't see it (and neither can -than snoopy git looking over your shoulder). +that snoopy git looking over your shoulder). Projects and Apps ================= @@ -244,8 +250,8 @@ Django already includes some *apps* for you. They're in ``settings.py`` in the ``INSTALLED_APPS`` setting: .. code-block:: python - - + + INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', @@ -322,7 +328,7 @@ following: from django.db import models #<-- This is already in the file from django.contrib.auth.models import User - + class Post(models.Model): title = models.CharField(max_length=128) text = models.TextField(blank=True) @@ -417,7 +423,7 @@ in your editor, and find the INSTALLED_APPS setting. You extend Django functionality by *installing apps*. This is pretty simple: .. code-block:: python - + INSTALLED_APPS = ( 'django.contrib.admin', @@ -515,7 +521,7 @@ And now our instance should validate properly: .. code-block:: python >>> p1.full_clean() - >>> + >>> Saving New Objects @@ -525,7 +531,7 @@ Our model has three date fields, two of which are supposed to be auto-populated: .. class:: python - + >>> print(p1.created_date) None >>> print(p1.modified_date) @@ -630,11 +636,11 @@ If you are curious, you can see the SQL that a given QuerySet will use: .. code-block:: pycon >>> print(c.query) - SELECT "myblog_post"."id", "myblog_post"."title", - "myblog_post"."text", "myblog_post"."author_id", - "myblog_post"."created_date", "myblog_post"."modified_date", - "myblog_post"."published_date" - FROM "myblog_post" + SELECT "myblog_post"."id", "myblog_post"."title", + "myblog_post"."text", "myblog_post"."author_id", + "myblog_post"."created_date", "myblog_post"."modified_date", + "myblog_post"."published_date" + FROM "myblog_post" WHERE ("myblog_post"."title" LIKE %post% ESCAPE '\' AND NOT ("myblog_post"."text" LIKE %created% ESCAPE '\' ) ) @@ -731,7 +737,7 @@ Now that we have a fixture, we need to instruct our tests to use it. Edit ``tests.py`` to look like this: .. code-block:: python - + from django.test import TestCase from django.contrib.auth.models import User @@ -775,7 +781,7 @@ Let's write a test that demonstrates our desired outcome: To run tests, use the ``test`` management command. Without arguments, it will run all TestCases it finds in all installed *apps*. You can pass the name of a -single app to focus on those tests. +single app to focus on those tests. Quit your Django shell and in your terminal run the test we wrote: @@ -812,7 +818,7 @@ Let's add an appropriate ``__unicode__`` method to our Post class. .. code-block:: python class Post(models.Model): - #... + #... def __unicode__(self): return self.title @@ -916,7 +922,7 @@ stroke. verify the following lines in ``urls.py``: .. code-block:: python - + from django.contrib import admin # <- should be present already diff --git a/slides/_sources/presentations/index.txt b/slides/_sources/presentations/index.txt index 62b26d7d..b0fc6b31 100644 --- a/slides/_sources/presentations/index.txt +++ b/slides/_sources/presentations/index.txt @@ -22,3 +22,5 @@ course. session05 session06 session07 + session08 + session09 diff --git a/slides/_sources/presentations/session08.txt b/slides/_sources/presentations/session08.txt new file mode 100644 index 00000000..b8cfef58 --- /dev/null +++ b/slides/_sources/presentations/session08.txt @@ -0,0 +1,1502 @@ +********** +Session 08 +********** + +.. figure:: /_static/django-pony.png + :align: center + :width: 60% + + image: http://djangopony.com/ + +Building a Django Application +============================= + +.. rst-class:: large + +Wherein we build a simple blogging app. + + +A Full Stack Framework +---------------------- + +Django comes with: + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * Persistence via the *Django ORM* + * CRUD content editing via the automatic *Django Admin* + * URL Mapping via *urlpatterns* + * Templating via the *Django Template Language* + * Caching with levels of configurability + * Internationalization via i18n hooks + * Form rendering and handling + * User authentication and authorization + + Pretty much everything you need to make a solid website quickly + +.. nextslide:: What Sets it Apart? + +Lots of frameworks offer some of these features, if not all. + +.. rst-class:: build +.. container:: + + What is Django's *killer feature* + + .. rst-class:: centered + + **The Django Admin** + +.. nextslide:: The Django Admin + +Works in concert with the Django ORM to provide automatic CRUD functionality + +.. rst-class:: build +.. container:: + + You write the models, it provides the UI + + You've seen this in action. Pretty neat, eh? + +.. nextslide:: The Pareto Principle + +The Django Admin is a great example of the Pareto Priciple, a.k.a. the 80/20 +rule: + +.. rst-class:: build +.. container:: + + .. rst-class:: centered + + **80% of the problems can be solved by 20% of the effort** + + The converse also holds true: + + .. rst-class:: centered + + **Fixing the last 20% of the problems will take the remaining 80% of the + effort.** + +.. nextslide:: Other Django Advantages + +.. ifnotslides:: + + **Other Django Advantages** + +Clearly the most popular full-stack Python web framework at this time + +.. rst-class:: build +.. container:: + + Popularity translates into: + + .. rst-class:: build + + * Active, present community + * Plethora of good examples to be found online + * Rich ecosystem of *apps* (encapsulated add-on functionality) + + .. rst-class:: centered + + **Jobs** + +.. nextslide:: Active Development + +Django releases in the last 12+ months (a short list): + +.. rst-class:: build + +* 1.7.4 (January 2015) +* 1.6.9 (January 2015) +* 1.7.1 (October 2014) +* 1.6.7 (September 2014) +* 1.7 (September 2014) +* 1.6.5 (May 2014) +* 1.6.2 (February 2014) +* 1.6 (November 2013) + +.. nextslide:: Great Documentation + +Thorough, readable, and discoverable. + +.. rst-class:: build +.. container:: + + Led the way to better documentation for all Python + + `Read The Docs `_ - built in connection with + Django, sponsored by the Django Software Foundation. + + Write documentation as part of your python package. + + Render new versions of that documentation for every commit. + + .. rst-class:: centered + + **this is awesome** + + +Where We Stand +-------------- + +For your homework this week, you created a ``Post`` model to serve as the heart +of our blogging app. + +.. rst-class:: build +.. container:: + + You also took some time to get familiar with the basic workings of the + Django ORM. + + You made a minor modification to our model class and wrote a test for it. + + And you installed the Django Admin site and added your app to it. + + +Going Further +------------- + +One of the most common features in a blog is the ability to categorize posts. + +.. rst-class:: build +.. container:: + + Let's add this feature to our blog! + + To do so, we'll be adding a new model, and making some changes to existing + code. + + .. rst-class:: build + + This means that we'll need to *change our database schema*. + + +.. nextslide:: Changing a Database + +You've seen how to add new tables to a database using the ``migrate`` command. + +.. rst-class:: build +.. container:: + + And you've created your first migration in setting up the ``Post`` model. + + This is an example of altering the *database schema* using Python code. + + Starting in Django 1.7, this ability is available built-in to Django. + + Before verson 1.7 it was available in an add-on called `South`_. + +.. _South: http://south.readthedocs.org/en/latest + + +.. nextslide:: Adding a Model + +We want to add a new model to represent the categories our blog posts might +fall into. + +.. rst-class:: build +.. container:: + + This model will need to have: + + .. rst-class:: build + + * a name for the category + * a longer description + * a relationship to the Post model + +.. code-block:: python + + # in models.py + class Category(models.Model): + name = models.CharField(max_length=128) + description = models.TextField(blank=True) + posts = models.ManyToManyField(Post, blank=True, null=True, + related_name='categories') + + +.. nextslide:: Strange Relationships + +In our ``Post`` model, we used a ``ForeignKeyField`` field to match an author +to her posts. + +.. rst-class:: build +.. container:: + + This models the situation in which a single author can have many posts, + while each post has only one author. + + We call this a *Many to One* relationship. + + But any given ``Post`` might belong in more than one ``Category``. + + And it would be a waste to allow only one ``Post`` for each ``Category``. + + Enter the ``ManyToManyField`` + +.. nextslide:: Add a Migration + +To get these changes set up, we now add a new migration. + +.. rst-class:: build +.. container:: + + We use the ``makemigrations`` management command to do so: + + .. code-block:: bash + + (djangoenv)$ python manage.py makemigrations + Migrations for 'myblog': + 0002_category.py: + - Create model Category + +.. nextslide:: Apply A Migration + +Once the migration has been created, we can apply it with the ``migrate`` +management command. + +.. rst-class:: build +.. container:: + + .. code-block:: bash + + (djangoenv)$ python manage.py migrate + Operations to perform: + Apply all migrations: admin, myblog, contenttypes, auth, sessions + Running migrations: + Applying myblog.0002_category... OK + + You can even look at the migration file you just applied, + ``myblog/migrations/0002_category.py`` to see what happened. + + +.. nextslide:: Make Categories Look Nice + +Let's make ``Category`` object look nice the same way we did with ``Post``. +Start with a test: + +.. rst-class:: build +.. container:: + + add this to ``tests.py``: + + .. code-block:: python + + # another import + from myblog.models import Category + + # and the test case and test + class CategoryTestCase(TestCase): + + def test_unicode(self): + expected = "A Category" + c1 = Category(name=expected) + actual = unicode(c1) + self.assertEqual(expected, actual) + +.. nextslide:: Make it Pass + +When you run your tests, you now have two, and one is failing because the +``Category`` object doesn't look right. + +.. rst-class:: build +.. container:: + + .. code-block:: bash + + (djangoenv)$ python manage.py test myblog + Creating test database for alias 'default'... + ... + + Ran 2 tests in 0.011s + + FAILED (failures=1) + + Do you remember how you made that change for a ``Post``? + + .. code-block:: python + + class Category(models.Model): + #... + + def __unicode__(self): + return self.name + + +.. nextslide:: Admin for Categories + +Adding our new model to the Django admin is equally simple. + +.. rst-class:: build +.. container:: + + Simply add the following line to ``myblog/admin.py`` + + .. code-block:: python + + # a new import + from myblog.models import Category + + # and a new admin registration + admin.site.register(Category) + + +.. nextslide:: Test It Out + +Fire up the Django development server and see what you have in the admin: + +.. code-block:: bash + + (djangoenv)$ python manage.py runserver + Validating models... + ... + Starting development server at http://127.0.0.1:8000/ + Quit the server with CONTROL-C. + +.. rst-class:: build +.. container:: + + Point your browser at ``http://localhost:8000/admin/``, log in and play. + + Add a few categories, put some posts in them. Visit your posts, add new + ones and then categorize them. + + +BREAK TIME +---------- + +We've completed a data model for our application. + +And thanks to Django's easy-to-use admin, we have a reasonable CRUD application +where we can manage blog posts and the categories we put them in. + +When we return, we'll put a public face on our new creation. + +If you've fallen behind, the app as it stands now is in our class resources as +``mysite_stage_1`` + + +A Public Face +============= + +.. rst-class:: left + +Point your browser at http://localhost:8000/ + +.. rst-class:: build left +.. container:: + + What do you see? + + Why? + + We need to add some public pages for our blog. + + In Django, the code that builds a page that you can see is called a *view*. + + +Django Views +------------ + +A *view* can be defined as a *callable* that takes a request and returns a +response. + +.. rst-class:: build +.. container:: + + This should sound pretty familiar to you. + + Classically, Django views were functions. + + Version 1.3 added support for Class-based Views (a class with a + ``__call__`` method is a callable) + + +.. nextslide:: A Basic View + +Let's add a really simple view to our app. + +.. rst-class:: build +.. container:: + + It will be a stub for our public UI. Add this to ``views.py`` in + ``myblog`` + + .. code-block:: python + + from django.http import HttpResponse, HttpResponseRedirect, Http404 + + def stub_view(request, *args, **kwargs): + body = "Stub View\n\n" + if args: + body += "Args:\n" + body += "\n".join(["\t%s" % a for a in args]) + if kwargs: + body += "Kwargs:\n" + body += "\n".join(["\t%s: %s" % i for i in kwargs.items()]) + return HttpResponse(body, content_type="text/plain") + +.. nextslide:: Hooking It Up + +In your homework tutorial, you learned about Django **urlconfs** + +.. rst-class:: build +.. container:: + + We used our project urlconf to hook the Django admin into our project. + + We want to do the same thing for our new app. + + In general, an *app* that serves any sort of views should contain its own + urlconf. + + The project urlconf should mainly *include* these where possible. + + +.. nextslide:: Adding A Urlconf + +Create a new file ``urls.py`` inside the ``myblog`` app package. + +.. rst-class:: build +.. container:: + + Open it in your editor and add the following code: + + .. code-block:: python + + + from django.conf.urls import patterns, url + + urlpatterns = patterns('myblog.views', + url(r'^$', + 'stub_view', + name="blog_index"), + ) + + +.. nextslide:: A Word On Prefixes + +The ``patterns`` function takes a first argument called the *prefix* + +.. rst-class:: build +.. container:: + + When it is not empty, it is added to any view names in ``url()`` calls in + the same ``patterns``. + + In a root urlconf like the one in ``mysite``, this isn't too useful. + + But in ``myblog.urls`` it lets us refer to views by simple function name. + + No need to import every view. + + Nor do we need to reference each by the app and module name where it + appears. + + This is a convenience. + + +.. nextslide:: Include Blog Urls + +In order for our new urls to load, we'll need to include them in our project +urlconf + +.. rst-class:: build +.. container:: + + Open ``urls.py`` from the ``mysite`` project package and add this: + + .. code-block:: python + + + urlpatterns = patterns('', + url(r'^', include('myblog.urls')), #<- add this + #... other included urls + ) + + Try reloading http://localhost:8000/ + + You should see some output now. + + +Project URL Space +----------------- + +A project is defined by the urls a user can visit. + +.. rst-class:: build +.. container:: + + What should our users be able to see when they visit our blog? + + .. rst-class:: build + + * A list view that shows blog posts, most recent first. + * An individual post view, showing a single post (a permalink). + + Let's add urls for each of these. + + For now, we'll use the stub view we've created so we can concentrate on the + url routing. + +.. nextslide:: Our URLs + +We've already got a good url for the list page: ``blog_index`` at '/' + +.. rst-class:: build +.. container:: + + For the view of a single post, we'll need to capture the id of the post. + Add this to ``urlpatterns`` in ``myblog/urls.py``: + + .. code-block:: python + + url(r'^posts/(\d+)/$', + 'stub_view', + name="blog_detail"), + + ``(\d+)`` captures one or more digits as the post_id. + + Load http://localhost:8000/posts/1234/ and see what you get. + +.. nextslide:: A Word on Capture in URLs + +When you load the above url, you should see ``1234`` listed as an *arg* + +.. rst-class:: build +.. container:: + + Try changing the route like so: + + .. code-block:: python + + r'^posts/(?P\d+)/$' + + Reload the same url. + + Notice the change. + + What's going on there? + +.. nextslide:: Regular Expression URLS + +Like Pyramid, Django uses Python regular expressions to build routes. + +.. rst-class:: build +.. container:: + + Unlike Pyramid, Django *requires* regular expressions to capture segments + in a route. + + When we built our WSGI book app, we used this same appraoch. + + There we learned about regular expression *capture groups*. We just changed + an unnamed *capture group* to a named one. + + How you declare a capture group in your url pattern regexp influences how + it will be passed to the view callable. + + +.. nextslide:: Full Urlconf + +.. code-block:: python + + + from django.conf.urls import patterns, url + + urlpatterns = patterns('myblog.views', + url(r'^$', + 'stub_view', + name="blog_index"), + url(r'^posts/(?P\d+)/$', + 'stub_view', + name="blog_detail"), + ) + + +.. nextslide:: Testing Views + +Before we begin writing real views, we need to add some tests for the views we +are about to create. + +.. rst-class:: build +.. container:: + + We'll need tests for a list view and a detail view + + add the following *imports* at the top of ``myblog/tests.py``: + + .. code-block:: python + + import datetime + from django.utils.timezone import utc + + +.. nextslide:: Add a Test Case + +.. code-block:: python + + class FrontEndTestCase(TestCase): + """test views provided in the front-end""" + fixtures = ['myblog_test_fixture.json', ] + + def setUp(self): + self.now = datetime.datetime.utcnow().replace(tzinfo=utc) + self.timedelta = datetime.timedelta(15) + author = User.objects.get(pk=1) + for count in range(1, 11): + post = Post(title="Post %d Title" % count, + text="foo", + author=author) + if count < 6: + # publish the first five posts + pubdate = self.now - self.timedelta * count + post.published_date = pubdate + post.save() + + +Our List View +------------- + +We'd like our list view to show our posts. + +.. rst-class:: build +.. container:: + + But in this blog, we have the ability to publish posts. + + Unpublished posts should not be seen in the front-end views. + + We set up our tests to have 5 published, and 5 unpublished posts + + Let's add a test to demonstrate that the right ones show up. + +.. nextslide:: Testing the List View + +.. code-block:: python + + Class FrontEndTestCase(TestCase): # already here + # ... + def test_list_only_published(self): + resp = self.client.get('/') + self.assertTrue("Recent Posts" in resp.content) + for count in range(1, 11): + title = "Post %d Title" % count + if count < 6: + self.assertContains(resp, title, count=1) + else: + self.assertNotContains(resp, title) + +.. rst-class:: build +.. container:: + + We test first to ensure that each published post is visible in our view. + + Note that we also test to ensure that the unpublished posts are *not* visible. + + +.. nextslide:: Run Your Tests + +.. code-block:: bash + + (djangoenv)$ python manage.py test myblog + Creating test database for alias 'default'... + .F. + ====================================================================== + FAIL: test_list_only_published (myblog.tests.FrontEndTestCase) + ... + Ran 3 tests in 0.024s + + FAILED (failures=1) + Destroying test database for alias 'default'... + + +.. nextslide:: Now Fix That Test! + +Add the view for listing blog posts to ``views.py``. + +.. code-block:: python + + # add these imports + from django.template import RequestContext, loader + from myblog.models import Post + + # and this view + def list_view(request): + published = Post.objects.exclude(published_date__exact=None) + posts = published.order_by('-published_date') + template = loader.get_template('list.html') + context = RequestContext(request, { + 'posts': posts, + }) + body = template.render(context) + return HttpResponse(body, content_type="text/html") + + +.. nextslide:: Getting Posts + +.. code-block:: python + + published = Post.objects.exclude(published_date__exact=None) + posts = published.order_by('-published_date') + +.. rst-class:: build +.. container:: + + We begin by using the QuerySet API to fetch all the posts that have + ``published_date`` set + + Using the chaining nature of the API we order these posts by + ``published_date`` + + Remember, at this point, no query has actually been issued to the database. + + +.. nextslide:: Getting a Template + +.. code-block:: python + + template = loader.get_template('list.html') + +.. rst-class:: build +.. container:: + + Django uses configuration to determine how to find templates. + + By default, Django looks in installed *apps* for a ``templates`` directory + + It also provides a place to list specific directories. + + Let's set that up in ``settings.py`` + + +.. nextslide:: Project Templates + +Notice that ``settings.py`` already contains a ``BASE_DIR`` value which points +to the root of our project (where both the project and app packages are +located). + +.. rst-class:: build +.. container:: + + In that same file add a tuple bound to ``TEMPLATE_DIRS`` and add a path to + it: + + .. code-block:: python + + TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'mysite/templates'), ) + + Then add a ``templates`` directory to your ``mysite`` project package + + Finally, in that directory add a new file ``base.html`` and populate it + with the following: + + +.. nextslide:: ``base.html`` + +.. code-block:: jinja + + + + + My Django Blog + + +

      +
      + {% block content %} + [content will go here] + {% endblock %} +
      +
      + + + + +Templates in Django +------------------- + +Before we move on, a quick word about Django templates. + +.. rst-class:: build +.. container:: + + We've seen Jinja2 which was "inspired by Django's templating system". + + Basically, you already know how to write Django templates. + + Django templates **do not** allow any python expressions. + + https://docs.djangoproject.com/en/1.7/ref/templates/builtins/ + + +.. nextslide:: Blog Templates + +Our view tries to load ``list.html``. + +.. rst-class:: build +.. container:: + + This template is probably specific to the blog functionality of our site + + It is common to keep shared templates in your project directory and + specialized ones in app directories. + + Add a ``templates`` directory to your ``myblog`` app, too. + + In it, create a new file ``list.html`` and add this: + + +.. nextslide:: ``list.html`` + +.. code-block:: jinja + + {% extends "base.html" %} + + {% block content %} +

      Recent Posts

      + + {% comment %} here is where the query happens {% endcomment %} + {% for post in posts %} +
      +

      {{ post }}

      + +
      + {{ post.text }} +
      +
        + {% for category in post.categories.all %} +
      • {{ category }}
      • + {% endfor %} +
      +
      + {% endfor %} + {% endblock %} + + +.. nextslide:: Template Context + +.. code-block:: python + + context = RequestContext(request, { + 'posts': posts, + }) + body = template.render(context) + +.. rst-class:: build +.. container:: + + Like Jinja2, django templates are rendered by passing in a *context* + + Django's RequestContext provides common bits, similar to the global context + in Flask + + We add our posts to that context so they can be used by the template. + + +.. nextslide:: Return a Response + +.. code-block:: python + + return HttpResponse(body, content_type="text/html") + +.. rst-class:: build +.. container:: + + Finally, we build an HttpResponse and return it. + + This is, fundamentally, no different from the ``stub_view`` just above. + +.. nextslide:: Fix URLs + +We need to fix the url for our blog index page + +.. rst-class:: build +.. container:: + + Update ``urls.py`` in ``myblog``: + + .. code-block:: python + + url(r'^$', + 'list_view', + name="blog_index"), + + Then run your tests again: + + .. code-block:: bash + + (djangoenv)$ python manage.py test myblog + ... + Ran 3 tests in 0.033s + + OK + + +.. nextslide:: Common Patterns + +This is a common pattern in Django views: + +.. rst-class:: build + +* get a template from the loader +* build a context, usually using a RequestContext +* render the template +* return an HttpResponse + +.. rst-class:: build +.. container:: + + So common in fact that Django provides two shortcuts for us to use: + + .. rst-class:: build + + * ``render(request, template[, ctx][, ctx_instance])`` + * ``render_to_response(template[, ctx][, ctx_instance])`` + + +.. nextslide:: Shorten Our View + +Let's replace most of our view with the ``render`` shortcut + +.. code-block:: python + + from django.shortcuts import render # <- already there + + # rewrite our view + def list_view(request): + published = Post.objects.exclude(published_date__exact=None) + posts = published.order_by('-published_date') + context = {'posts': posts} + return render(request, 'list.html', context) + +.. rst-class:: build + +Remember though, all we did manually before is still happening + + +BREAK TIME +---------- + +We've got the front page for our application working great. + +Next, we'll need to provide a view of a detail page for a single post. + +Then we'll provide a way to log in and to navigate between the public part of +our application and the admin behind it. + +If you've fallen behind, the app as it stands now is in our class resources as +``mysite_stage_2`` + + +Our Detail View +--------------- + +Next, let's add a view function for the detail view of a post + +.. rst-class:: build +.. container:: + + It will need to get the ``id`` of the post to show as an argument + + Like the list view, it should only show published posts + + But unlike the list view, it will need to return *something* if an + unpublished post is requested. + + Let's start with the tests in ``views.py`` + + +.. nextslide:: Testing the Details + +Add the following test to our ``FrontEndTestCase`` in ``myblog/tests.py``: + +.. code-block:: python + + def test_details_only_published(self): + for count in range(1, 11): + title = "Post %d Title" % count + post = Post.objects.get(title=title) + resp = self.client.get('/posts/%d/' % post.pk) + if count < 6: + self.assertEqual(resp.status_code, 200) + self.assertContains(resp, title) + else: + self.assertEqual(resp.status_code, 404) + + +.. nextslide:: Run Your Tests + +.. code-block:: bash + + (djangoenv)$ python manage.py test myblog + Creating test database for alias 'default'... + .F.. + ====================================================================== + FAIL: test_details_only_published (myblog.tests.FrontEndTestCase) + ... + Ran 4 tests in 0.043s + + FAILED (failures=1) + Destroying test database for alias 'default'... + + +.. nextslide:: Let's Fix That Test + +Now, add a new view to ``myblog/views.py``: + +.. code-block:: python + + def detail_view(request, post_id): + published = Post.objects.exclude(published_date__exact=None) + try: + post = published.get(pk=post_id) + except Post.DoesNotExist: + raise Http404 + context = {'post': post} + return render(request, 'detail.html', context) + + +.. nextslide:: Missing Content + +One of the features of the Django ORM is that all models raise a DoesNotExist +exception if ``get`` returns nothing. + +.. rst-class:: build +.. container:: + + This exception is actually an attribute of the Model you look for. + + There's also an ``ObjectDoesNotExist`` for when you don't know which model + you have. + + We can use that fact to raise a Not Found exception. + + Django will handle the rest for us. + + +.. nextslide:: Add the Template + +We also need to add ``detail.html`` to ``myblog/templates``: + +.. code-block:: jinja + + {% extends "base.html" %} + + {% block content %} + Home +

      {{ post }}

      + +
      + {{ post.text }} +
      +
        + {% for category in post.categories.all %} +
      • {{ category }}
      • + {% endfor %} +
      + {% endblock %} + + +.. nextslide:: Hook it Up + +In order to view a single post, we'll need a link from the list view + +.. rst-class:: build +.. container:: + + We can use the ``url`` template tag (like Pyramid's ``request.route_url``): + + .. code-block:: jinja + + {% url '' arg1 arg2 %} + + In our ``list.html`` template, let's link the post titles: + + .. code-block:: jinja + + {% for post in posts %} +
      +

      + {{ post }} +

      + ... + + +.. nextslide:: Fix URLs + +Again, we need to insert our new view into the existing ``myblog/urls.py`` in +``myblog``: + +.. code-block:: python + + url(r'^posts/(?P\d+)/$', + 'detail_view', + name="blog_detail"), + +.. rst-class:: build small + +:: + + (djangoenv)$ python manage.py test myblog + ... + Ran 4 tests in 0.077s + + OK + + +.. nextslide:: A Moment To Play + +We've got some good stuff to look at now. Fire up the server + +.. rst-class:: build +.. container:: + + Reload your blog index page and click around a bit. + + You can now move back and forth between list and detail view. + + Try loading the detail view for a post that doesn't exist + + +.. nextslide:: Congratulations + +You've got a functional Blog + +.. rst-class:: build +.. container:: + + It's not very pretty, though. + + We can fix that by adding some css + + This gives us a chance to learn about Django's handling of *static files* + + +Static Files +------------ + +Like templates, Django expects to find static files in particular locations + +.. rst-class:: build +.. container:: + + It will look for them in a directory named ``static`` in any installed + apps. + + They will be served from the url path in the STATIC_URL setting. + + By default, this is ``/static/`` + + To allow Django to automatically build the correct urls for your static + files, you use a special *template tag*:: + + {% static %} + + +.. nextslide:: Add CSS + +I've prepared a css file for us to use. You can find it in the class resources + +.. rst-class:: build +.. container:: + + Create a new directory ``static`` in the ``myblog`` app. + + Copy the ``django_blog.css`` file into that new directory. + + .. container:: + + Next, load the static files template tag into ``base.html`` (this must + be on the first line of the template): + + .. code-block:: jinja + + {% load staticfiles %} + + Finally, add a link to the stylesheet using the special template tag: + + .. code-block:: html + + My Django Blog + + + +.. nextslide:: View Your Results + +Reload http://localhost:8000/ and view the results of your work + +.. rst-class:: build +.. container:: + + We now have a reasonable view of the posts of our blog on the front end + + And we have a way to create and categorize posts using the admin + + However, we lack a way to move between the two. + + Let's add that ability next. + + +Global Navigation +----------------- + +We'll start by adding a control bar to our ``base.html`` template: + +.. code-block:: jinja + + + ... + +
      + ... + + +.. nextslide:: Request Context Revisited + +When we set up our views, we used the ``render`` shortcut, which provides a +``RequestContext`` + +.. rst-class:: build +.. container:: + + This gives us access to ``user`` in our templates + + It provides access to methods about the state and rights of that user + + We can use these to conditionally display links or UI elements. Like only + showing the admin link to staff members. + + +.. nextslide:: Login/Logout + +Django also provides a reasonable set of views for login/logout. + +.. rst-class:: build +.. container:: + + The first step to using them is to hook them into a urlconf. + + .. container:: + + Add the following to ``mysite/urls.py``: + + .. code-block:: python + + url(r'^', include('myblog.urls')), #<- already there + url(r'^login/$', + 'django.contrib.auth.views.login', + {'template_name': 'login.html'}, + name="login"), + url(r'^logout/$', + 'django.contrib.auth.views.logout', + {'next_page': '/'}, + name="logout"), + + +.. nextslide:: Login Template + +We need to create a new ``login.html`` template in ``mysite/templates``: + +.. code-block:: jinja + + {% extends "base.html" %} + + {% block content %} +

      My Blog Login

      +
      {% csrf_token %} + {{ form.as_p }} +

      + + {% endblock %} + + +.. nextslide:: Submitting Forms + +In a web application, submitting forms is potentially hazardous + +.. rst-class:: build +.. container:: + + Data is being sent to our application from some remote place + + If that data is going to alter the state of our application, we **must** + use POST + + Even so, we are vulnerable to Cross-Site Request Forgery, a common attack + vector. + + +.. nextslide:: Danger: CSRF + +Django provides a convenient system to fight this. + +.. rst-class:: build +.. container:: + + In fact, for POST requests, it *requires* that you use it. + + The Django middleware that does this is enabled by default. + + All you need to do is include the ``{% csrf_token %}`` tag in your form. + + +.. nextslide:: Hooking It Up + +In ``base.html`` make the following updates: + +.. rst-class:: build +.. container:: + + .. code-block:: jinja + + + admin + + logout + + login + + .. container:: + + Finally, in ``settings.py`` add the following: + + .. code-block:: python + + + LOGIN_URL = '/login/' + LOGIN_REDIRECT_URL = '/' + + +.. nextslide:: Forms In Django + +In adding a login view, we've gotten a sneak peak at how forms work in Django. + +.. rst-class:: build +.. container:: + + However, learning more about them is beyond what we can achieve in this + session. + + The form system in Django is quite nice, however. I urge you to + `read more about it`_ + + In particular, you might want to pay attention to the documentation on + `Model Forms`_ + + +.. _read more about it: https://docs.djangoproject.com/en/1.6/topics/forms/ +.. _Model Forms: https://docs.djangoproject.com/en/1.6/topics/forms/modelforms/ + + +Ta-Daaaaaa! +----------- + +So, that's it. We've created a workable, simple blog app in Django. + +.. rst-class:: build +.. container:: + + If you fell behind at some point, the app as it now stands is in our class + resources as ``mysite_stage_3``. + + There's much more we could do with this app. And for homework, you'll do + some of it. + + Then next session, we'll work together as pairs to implement a simple + feature to extend the blog + + +Homework +======== + +.. rst-class:: left + +For your homework this week, we'll fix one glaring problem with our blog admin. + +.. rst-class:: build left +.. container:: + + As you created new categories and posts, and related them to each-other, + how did you feel about that work? + + Although from a data perspective, the category model is the right place for + the ManytoMany relationship to posts, this leads to awkward usage in the + admin. + + It would be much easier if we could designate a category for a post *from + the Post admin*. + + +Your Assignment +--------------- + +You'll be reversing that relationship so that you can only add categories to +posts + +.. rst-class:: build +.. container:: + + Take the following steps: + + 1. Read the documentation about the `Django admin.`_ + 2. You'll need to create a customized `ModelAdmin`_ class for the ``Post`` + and ``Category`` models. + 3. And you'll need to create an `InlineModelAdmin`_ to represent Categories + on the Post admin view. + 4. Finally, you'll need to `suppress the display`_ of the 'posts' field on + your ``Category`` admin view. + + +.. _Django admin.: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/ +.. _ModelAdmin: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#modeladmin-objects +.. _InlineModelAdmin: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#inlinemodeladmin-objects +.. _suppress the display: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#modeladmin-options + + +.. nextslide:: Pushing Further + +All told, those changes should not require more than about 15 total lines of +code. + +.. rst-class:: build +.. container:: + + The trick of course is reading and finding out which fifteen lines to + write. + + If you complete that task in less than 3-4 hours of work, consider looking + into other ways of customizing the admin. + + +.. nextslide:: Tasks you might consider + +.. rst-class:: build + +* Change the admin index to say 'Categories' instead of 'Categorys'. +* Add columns for the date fields to the list display of Posts. +* Display the created and modified dates for your posts when viewing them in + the admin. +* Add a column to the list display of Posts that shows the author. For more + fun, make this a link that takes you to the admin page for that user. +* For the biggest challenge, look into `admin actions`_ and add an action to + the Post admin that allows you to bulk publish posts from the Post list + display + +.. _admin actions: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/actions/ diff --git a/slides/_sources/presentations/session09.txt b/slides/_sources/presentations/session09.txt new file mode 100644 index 00000000..0b7fbd8c --- /dev/null +++ b/slides/_sources/presentations/session09.txt @@ -0,0 +1,107 @@ +********** +Session 09 +********** + +.. figure:: /_static/django-pony.png + :align: center + :width: 60% + + image: http://djangopony.com/ + +Extending Django +================ + +.. rst-class:: large + +Wherein we extend our Django blog app. + + +Last Week +--------- + +Last week, we created a nice, simple Django microblog application. + +.. rst-class:: build +.. container:: + + Over the week, as your homework, you made some modifications to improve how + it works. + + There's still quite a bit more we can do to improve this application. + + And today, that's what we are going to do. + + +Preparation +----------- + +In order for this to work properly, we'll need to have a few things in place. + +.. rst-class:: build +.. container:: + + First, we'll start from a canonical copy of the microblog. Make a fork of + the following repository to your github account:: + + https://github.com/cewing/django-microblog + + Then, clone that repository to your local machine: + + .. code-block:: bash + + $ git clone https://github.com//django-microblog.git + + +Connect to Your Partner +----------------------- + +Finally, you'll want to connect to your partner's repository, so that you can +each work on your own laptop and still share the changes you make. + +.. rst-class:: build +.. container:: + + First, add your partner's repository as ``upstream`` to yours: + + .. code-block:: bash + + $ git remote add upstream https://github.com//django-microblog.git + + Then, fetch their copy so that you can easily merge their changes later: + + .. code-block:: bash + + $ git fetch --all + + +While You Work +-------------- + +Now, when you switch roles during your work, here's the workflow you can use: + +.. rst-class:: build +.. container:: + + .. container:: + + 1. The current driver commits all changes and pushes to their repository: + + .. code-block:: bash + + $ git commit -a -m "Time to switch roles" + $ git push origin master + + .. container:: + + 2. The new driver fetches and merges changes made upstream: + + .. code-block:: bash + + $ git fetch --all + $ git branch -a + * master + remotes/origin/master + remotes/upstream/master + $ git merge upstream/master + + 3. The new driver continues working from where their partner left off. diff --git a/slides/_static/dialog-note.png b/slides/_static/dialog-note.png new file mode 100644 index 0000000000000000000000000000000000000000..263fbd5866aef1ce3645d768fbf55def9a091905 GIT binary patch literal 1582 zcmV+}2GRM6P)k@WH7pQF=3=faW zkFSqR=8AIgXBSA;Hc`EO&K^N)42Y`_9UkcY+JOPZzW)_SXY=A^lj%j;c6NwBgJ_tV zm_2r=oma1nQ4OegJG6y4*V7pt+<)-viajx2cgoi@dv1pQz5%6oPs>nSm~*w?TqQVv zob8dII{c&Oe%S1c$Jb4}_O0hohn`**8Ge(}Coiu}Aq2|y9sKoAe_L3{Is>OKFbSRv z1pSn5A0ELYKmLQ6BwuOzH&f_kC zpw7uXeVu-psxJ`U5$EUY>gJ?Py7zS&L7kH>03>~lEiK4GzOF#Bu=x@I$Wn<&a}!AV z0JO@7l0!?lsTn6_uHD-u=x*nv?jh4tOM8aU5Jm$S4XgGI1^n1jw1Qj)a0G^`sW^46 z`zk{v@<5WOf#ro&h@# znjak7C0?~s9=SM_n9NYjv(wK7=2M5YtS{PKY$ zvq{93_SMB}%_$-0$B^l1M4*|BZ#$YIXIuaXZY|uu(-Vrempj=|${=$lGCK?Q%G0#? z`m+#hhFpCs04oQ|EN0RVf?FVz z;UBke#-&y%!v?064Rok zOzr0t(XWi*Ji3QBXXf%JRoe>fIM6Q~a~|x{=CxG~y=Q>o+w;yR!_$*li|?MfjH_0w z4(~z?Yj=n@ipBh~`I%&-^WdPS`V7dV>N~21K#jH|clB`PgWJ~4*uv-kzRU4neaIZ( zs_AL~J|J*?3i;mzZ}f)kj*(jv-9BB_qC@+I5-iVl$9ByRp&N*X5L#OY%C2rk literal 0 HcmV?d00001 diff --git a/slides/_static/dialog-seealso.png b/slides/_static/dialog-seealso.png new file mode 100644 index 0000000000000000000000000000000000000000..3eb7b05c84809454c095bcb61b27d83585540bb2 GIT binary patch literal 1502 zcmV<41tI#0P)HR%3`p(HB`no_vu~6N}ZlRFC*?c+Y%$zyD-}&au z&JZ)>K^AeZ6L@^ummZ&X*Yn)70D$d6!LJ^l=6+BDv~c!{RYJijk54Ok5CT{{e~oil z-TFEbX!ZECIrm*akb>H(dS&g?FP4)K%^sh&_`V4c2m&fb&2G#rtri=XzfzzG^{B_E zHQpZqA_x*72n38CJd|Gu&#E_aHK*$b&n|7-ZLgos|A5D*S!OO3tj^fh z_!0W`3$WRQ%?5InVvwcc=cez&6S48H4!ouBxMu;6Pg_j_`(_qbYqix+<`vH*0k)O-56 zud&1uzgHhmFx075FBE*UbpHBBSI%oxLe?+@Zf!Q;*6vT#lyW3w4JY9MkgFEMG%bvd zj938nr^2Tc@c6W~RmHXIm(1Ou1kFAG0Fw%UlRqSTi54)VcO>U1an?Yy3vuG~@rZ85 z-uG|Ozewj~6o}vV-Rqv(Ci;8JElAxFv;gud8$jGKcnWCQ?Erp*KC zIXKaBJYt&WcE4BOor#q#1Dk6q78K>?<|1J9K#&Rskgt}(!EXFJ*vh>lSE3{1Loyf| z&3UuoJ;5w7Y;*zuDqMB2!UCtx{28%r>ovbu_h-v=W&y&2n({i=gf#-m76=0Q&NB3m zb>eW#zGx^K*vpKg0NMp9e=$o8=`Dj;l=Lz_SWyF}Y_f*liLBCL1t~h-HRlkcb2k zDMX|u0swmZd)fkBa>Y+ujj{N7B|et!O2BRM{{EheXKZP~kP#GW?m+0WbOJ~ZO^HPi?D-I-Z@Rh)4kw5h(x^0Lp=##*zNcjveFS!C+x=g(!SP+wgD|a?&Pu zP7Fa!$fU164o-xU8bl<3l(%90fD)HVwznQAX`EZL=V6*OcF^rX8}#?vph{K*-aJ52Fh0c1LTj{`F zLp(@87A+DHl?YYoCn~E-l`1NAUDn-Xf%*qncGGkLS(YF2?gcA@-FO$pxf<+GaygyG>LlMM6p;3_XL$EPez^sK@%p{Xo{*S0TiSP zCTKeMo(jal0l+j(n5LOaVy_31er|k zB;TX`;OPY~R$bf%N~}j!>$(mpC8U(lbsbOE|3S4}MWs}QE();w4vK{$gy-z9fKR~h z0e^Vp%gs3tt4?2rQN~~}M6cIFr_;t(w}tj*2Z!e;u^{%a$XbA~$@0JfU^pDWaYoqQ z-p13-r)alZaO@El7mq;gZcM5G0P?GpQij!Y&J)Kg{@Zazu7z{qXYQ+z~Lmwn=t7x02mT|+fx9wGX&O4TR+^m z&o2S|BrztzxbO%Pj0++r7~_HfL5vF!1i&;faH2pcav8`aKr!+Z2nx(|7?A>z0wcx9 za{yYMIo0|JSK?Z}Bvw{d3QBbh$6;lqyo!{p=(<#5%$1xA-F00qgytwk4r6QtXnmzd sgV|ZW`~3Nf{^7$rgNqk`QG4b8AJ1kijg{QDxBvhE07*qoM6N<$f+(VJjQ{`u literal 0 HcmV?d00001 diff --git a/slides/_static/dialog-topic.png b/slides/_static/dialog-topic.png new file mode 100644 index 0000000000000000000000000000000000000000..2ac57475c3b36e46ff4c4ea0506892e2fe884fd7 GIT binary patch literal 1910 zcmV-+2Z{KJP)W~QdMmlr4dytt0lBR3q?&; zsf}7ieW{ceqQ0~w%0ngR(l(+>6RT|+k)U#E5K0IT8=Mf^q}b(RJRV=>K69@7oZW{E z6%PeG5mk@0w56kc*8i=4U(N#l&kxlzdElw1LXir#G9KKfp!(p+CIA4}as(RoJ?ph< z1O7I&f4_Oh0lvTIXM4f;uUc2F*Hc}+k+#-Wgu^;CM({lsi;Ii6bn(1#X=2n?p8Ult zFa3J(jsOe{JflYw)=*=zShA`mbU-k=^sX0S3bG^fyY9h&Y0*p?-h1EjYvd&-0xsN}5e{ec8zp`u9n(Vo=?+@1vuxr;( zdmq{sySgZ`X-yEFtvWOgk1=u?K@veSA{RswfCnfq-Vjh%=E~LCoS`1w+!r}> z`egsc4Sj>7qo=I@ro(Oqz;w2~xpQOK_66FLgqDN`0whSeMC33|HYc(f!R7=@<79G1 zR#?~UctgM_n@*u@OS`XsbC~ID`%QIj>OTwYZ0%eZ%2h0^Y}4Vx_lPN%Kn_7UM6fv{ zi!o+0P8Ja?jWdIDG6RBDf;y{S&XkIM_uZ#~={xJ+gud6+5RKznriy?F03ZoPF5|En zk;92O#FS(p7l7|GQp#7bUC(1g#h|W*3RRm{G^d)Oyw!CBDCI>pp}|u&OviJALUW1W z5XfPSY{p=J20;=aPXl~c`BbR53&8+ajL0`#54zx_d_P(@05PouWhWVvm|mz_@rdpL z%pro!h%5%OI3t@Fa~VM@U-?0l0G~0c*1ZRa_*l7=MN?FF77CV; zEm~y&Hi2x;$YdNQ=VWLM6-Ror^Ck1VCFRVT6^W*xu2q7Jnai8PTCP~O7}F-}2Jk%d zx7RL?mRB}6dR!yt@?tf=@vcNFq!Z7Tt#q;MPAyjKiMhNvTru2n!C5w9&wr&dH~DBl zXojvc;|pzxI6l^@7iZ|Y^bJcm^55Je(FYX)}8FA}7hJYg1-a35r zueOloU{^~#GCY|bHykfJezouxm?|xcg}XZ2k`E^1(H;)UgKOs^&36r^nqq64qWZ=c zo_~(p(%U&WIB0zCpV5vzKj{tWp?`dH$8JN3$mEKqfFjN_hUtt&LRvl?;3b_4Ly)_H zc+f9d648MEqka3H6{TYF$yZ+d&7W_TpWP1N)t8?C*mbS%o_zO+NH&HNnVfaiHVO$w zN(#;#oeP7QYhS!Lk#s%h(}sZPo){lDi-q#w?ZlS^0089E>ACc^SXl6oRGyWdnJs7M z(n(@WGF`dv9Xr~do}Hc4HBsTj+OAxgCIxwRDY=&f@bb(1b5i;r&s>|KWevgAhEs`s z^x?6uUHa#H+b(``bm!Rk$tPB?jOqkRaAG~DPJIy589rD_Zf&U@k?op$|ML2Q6W`mj zV^yjpsV__mICk-FrhqlwD-exEzvwzub@1)O*BsXwdU5c%**o47Zr}0v!C0c_v4^*8 zK~K+GG)5!fTmvH@n_Iv;Zy(0^_{8P;jK1#Bp%?5s>Hq+=Hs>GOve|~O7~Xi}PslEm z;7Sh-4FL$vK|VL-<*a9NcX#vCnx=$dOrcyhK}f5*DU#?W3N0#5)c%sGQnK9pimif5HF z4xc%b`Q`k4vHV$+3KxK^jqc}hKnD=0MR0n$WKK?IhdVoaWpi_P-|pQ%*EVf>1k=-H zJDsi^IC5m<)oRriweP65#MgsrP)i1&8>;`03jjjtbb7j@qvM{jv9Z?C(NRC2&yO8H ze*BM~=Xn79n$UFzRPCK#bEB>$pqi*&8$}I72M}m)Z*TT}pJy_eVoksWVAn#{!U162 wYzgYQ39nnK)ttN0UffXS^-8b1am$VPZ%s-(_>=>Px# literal 0 HcmV?d00001 diff --git a/slides/_static/dialog-warning.png b/slides/_static/dialog-warning.png new file mode 100644 index 0000000000000000000000000000000000000000..7233d45d8e6e41ef8fcb318c76303a9b6f23997e GIT binary patch literal 1391 zcmV-#1(5oQP)}piCG~<@Tj_&{ee%V|SZW{gB8?y>5~HGEkRU`Q5xgR16NK8$#%7av&gnyv zB_>9ji%*39&LbK3qFu zI7(%ZZ%;}2Gqh=wf?-g1;X+qD8r}8{{PEcV%0X!tqH%6yq(DC>&`hf#DjvXW3(1702fiEY= zF5vsm0&oGwD!P6+uzb1JdigTStXXLJ`Pjl?)VXtsUA;>7;>9+ps^67D`lthR!lCrM zJiGbuAzhIO`u_b0*{$vea+<+#n+u)TG0)=^W&Y8i0fonJZU{&O3K7Vlni6`w*i02KV;P{rfRu zG0etBGUm-QC7c=+fU_{mF@F3e|CA|e+x6?%3JOrCPscC}T3cI*Mx&UfiIS0lW6Kua z*4E+=1XR`QT~P`vMhu|BsqFlGD_&EBWm!0O?*~ty__PKSBsxE>~io%jH4{flNukRa8X# z{rjXQCrg{pH?0i59u|NFLJ0B8)HQ2(TUCW{yU};B)sYgKfwF=i#fQ*|T%prYYO&>#^_Jg-l9HIC3}~D2jrjDCoMLxDnFn#I<)X9Z#O% zl~TASP4c~kT|)vm3aV6;lT*TB*>>d$((gwvEKE2_WWLjh)9HL~UI>A6!v?geQ)#cO zBP%CIQ>6UickujYfDG8-Td-iF{q<|n@$@N&XN+4a)1MXii!#xt%)zy89UYGz zG12e0NnI~2gPDT@C~$aEUY=^+y^GP-hO?w((CCB^XqtxXDMlUN#ETcC z1p+4hp6CQXDP-AvzM{13Y_09qE$nO8qUGca8odyL^73*nUc5M{b0Gw_%uGDnx6}FT z856u-Rdc(;WsuwJSM3x1@yun*tghR)G2?Oc_3NRv6|2V>LcBLlv~F)$efs`;+#5F% zJ#z;0`E&f~>DJ4JhLgbjz5vpKd|!698oPE4fasPj{qtqSV!U}nQhK`b970DyKML_) z0Ovbsj@-OC=8MgnrPMUAEG)wS)5J22?y+HDnPzw2Z#-bF|D0)J#^W@
      +

      In our Post model, we used a ForeignKeyField field to match an author to her posts.

      diff --git a/html/presentations/session09.html b/html/presentations/session09.html index 5413a2c1..ec41afd3 100644 --- a/html/presentations/session09.html +++ b/html/presentations/session09.html @@ -24,6 +24,9 @@ + + + + + + + + + + +
      +
      +
      +
      + +
      +

      Session 09¶

      + +
      +

      Deploying Django¶

      +
      +

      Over the last two sessions you’ve built and extended a simple Django +application.

      +
      +

      Now it is time to deploy that application to a server so the world can +see it.

      +

      Previously, we used Heroku to deploy a simple Pyramid application.

      +

      We could do the same with Django, but we won’t.

      +

      Instead, we’ll deploy to Amazon Web Services (AWS)

      +
      +
      +
      +

      Choosing a Deployment Strategy¶

      +

      There are many many different ways to deploy a web application.

      +
      +

      And there are many many services offering platforms for deployment.

      +

      How do you choose the right one for you?

      +

      In general there are a few rules of thumb to consider:

      +
        +
      • The more convenient the service, the less configurable it is.
      • +
      • The less you pay for a service, the more work you have to do yourself.
      • +
      • With great power comes great responsibility.
      • +
      +
      +

      In choosing a service and a strategy, you’ll want to ask yourself a few +questions:

      +
      +
        +
      • What are the basic software components of my project?
      • +
      • How much control or customization of each component do I require?
      • +
      • What service supports all of my required components?
      • +
      • What service allows my required customizations?
      • +
      • If no single service does everything I need, which could be wired +together?
      • +
      +

      The answers to these questions will help to determine the correct choice +for you.

      +
      +

      We are going to ignore all these questions, and simply ask one question.

      +
      +

      Which service will allow us to set up each layer in a full web application +stack so that we can learn how the stack works from front to back?

      +

      The simplest answer to that question is AWS.

      +

      Therefore, that’s the service we will use today.

      +
      +
      +
      +

      Preparing for AWS Deployment¶

      +

      You’ve started out this week by signing up for AWS.

      +
      +

      You’ve created a security group and a key pair to help with accessing any +servers we create.

      +

      You’ve also set up an IAM user and configured security credentials for that +user.

      +

      If we were to be automating our work today, we’d use those credentials to +allow the boto library to connect to AWS as that IAM user.

      +

      Then you could create or destroy resources using that library.

      +

      Issues surrounding using that library on Windows prevent us from trying +that path tonight.

      +
      +

      Instead we’ll be making a manual deployment using AWS.

      +
      +

      This is always the first step to automation anyway, so this is an important +first step.

      +

      We’ll begin by converting some aspects of our application to better provide +for security

      +

      In preparation for that we will need to add a new package to our django +virtual environment.

      +
      (djangoenv)$ pip install dj-database-url
      +
      +
      +
      +

      This new package is an attempt to help Django get in line with a principle +called 12-factor.

      +
      +

      The basic idea is that any data that your app uses for configuration that +is external to the app itself, should be separated from the app.

      +

      The link about contains much more effective explanations, read it.

      +

      We’ve already done this to some degree with our Pyramid application, by +putting some configuration values into environment variables

      +

      dj-database-url allows us to do that with the configuration for our +database.

      +
      +

      Open settings.py and replace the current DATABASES dictionary with this:

      +
      DATABASES = {
      +    'default': dj_database_url.config(
      +        default='sqlite:///' + os.path.join(BASE_DIR, 'db.sqlite3')
      +    )
      +}
      +
      +
      +
      +

      The default behavior of dj-database-url is to look for a +DATABASE_URL variable in the environment.

      +

      If it doesn’t find that, it uses the value you provide for default.

      +

      It converts a url-style database connection string to the dictionary +Django expects.

      +

      Here, we’ve set the default to be the same as what we had previously.

      +
      +

      Another principle of the 12-factor philosophy is to keep the differences +between production and development to a minimum.

      +
      +

      Again, in our Pyramid app we handled this with a requirements.txt file.

      +

      Here we will do the same.

      +

      At your command line, with the virtualenv active, run the following +command:

      +
      (djangoenv)$ pip freeze > requirements.txt
      +
      +
      +

      Then, add that file to your repository and commit the changes.

      +

      At this point, we’re about ready to begin working directly with AWS

      +
      +
      +
      +

      Setting up An EC2 Instance¶

      +

      Our first step is to create an EC2 (Elastic Compute Cloud) instance for our +application.

      +
      +

      Begin by opening the AWS homepage (http://aws.amazon.com)

      +

      Then click on the big yellow “Sign in to the Console” button

      +

      Fill in your email, check “I am a returning user...” and supply your +password.

      +

      When the page loads, you are viewing the AWS Console.

      +

      If you don’t see a big list of services in that first page, click on +‘Services’ in the black header.

      +

      From the list of services, click on EC2.

      +
      +

      The page that loads is the management console for EC2 resources. You used it +to create your security group and key pair.

      +
      +

      Click the large blue “Launch Instance” button to start a new instance.

      +

      You should see a list of types of operating system listed.

      +

      If you don’t click on quick start at the left.

      +

      In the list, find “Ubuntu Server 14.04 LTS”.

      +

      Click on ‘Select’ to begin building an instance using that operating +system.

      +
      +

      The next page of the launch wizard allows you to choose how much CPU power and +RAM your machine will have.

      +
      +

      There are only two types of instance that are in the free tier, and one is +now deprecated.

      +

      Select the t2.micro instance by clicking the checkbox to the left of that +row (it may already be selected for you).

      +

      Below the table of instance types, find and click on “Next: configure +instance details”

      +
      +

      Click through the next two steps until you reach “Configure Security Group”

      +
      +

      Here, click the “select an existing security group” button, and pick your +ssh-access group.

      +

      This group acts as a control for a firewall which restricts network +access to your new instance.

      +

      You’ve configured that firewall to allow any machine to talk to your +instance, but only on port 22 (SSH).

      +

      Finish by clicking “Review and Launch”

      +

      Then click on “Launch” to start the instance.

      +
      +

      When you click “Launch” you are required to choose a key pair to control ssh +access to your new machine.

      +
      +

      Without this key pair, you have no way to access the server, and you must +destroy it and create a new one.

      +

      Select your pk-aws pair from the list of existing key pairs.

      +

      Then, check the box that indicates you have the private key and click +“Launch Instance”.

      +

      It will take a few minutes for the new machine to initialize and be ready.

      +
      +
      +
      +

      Accessing Your Instance¶

      +

      Once the machine indicates it is “running” you are ready to access that +machine.

      +
      +

      ssh into that machine:

      +
      ssh -i ~/.ssh/pk-aws.pem ubuntu@<your-public-dns-name.com>
      +
      +
      +

      You will need to indicate that you trust this connection.

      +

      You are now logged in to the server as the default user.

      +

      AWS sets this user up with the ability to run commands using sudo

      +

      You’ll begin by updating the OS package manager so you are ensured of +having the latest versions of any software you install:

      +
      sudo apt-get update
      +
      +
      +
      +
      +
      +

      Deployment Layer 1: Web Server¶

      +

      In our deployment stack, the frontmost facing layer is the Web Server.

      +
      +

      This software is responsible for receiving requests from clients’ browsers.

      +

      It will also handle serving static resources in order to relieve Django of +that burden.

      +

      If you are using https, it’s also a good place to handle terminating an +SSL connection.

      +

      Begin by using the Ubuntu package manager to install nginx:

      +
      sudo apt-get install nginx
      +
      +
      +
      +

      Like many other packages installed by apt-get, nginx is set up as a +service

      +

      You can check the status of the service:

      +
      sudo service nginx status
      +
      +
      +

      You can start and stop the server:

      +
      sudo service nginx stop
      +sudo service nginx start
      +
      +
      +

      Default configuration for nginx lives in /etc/nginx. Let’s look at three +files there in particular:

      +
        +
      • /etc/nginx/nginx.conf (controls behavior of the whole server)
      • +
      • /etc/nginx/sites-available/default (controls a single ‘site’)
      • +
      • /etc/nginx/sites-enabled/default (activates a single ‘site’)
      • +
      +

      Check your results by loading your public DNS name in a browser

      +
      +

      you should see this, do you?

      +
      +../_images/nginx_hello.png +
      +

      Add port 80 to your security group. Then reload.

      +
      +
      +
      +

      Deployment Layer 3: Database¶

      +

      In order to deploy our database, we’ll need to install some more software

      +
      +

      Use apt-get istall to add each of the following packages:

      +
        +
      • build-essential
      • +
      • python-dev
      • +
      • python-pip
      • +
      • python-psycopg2
      • +
      • postgresql-client
      • +
      • git
      • +
      +
      +

      You can set up postgres directly on the machine you just built, but that’s no fun.

      +
      +

      Let’s use RDS, the AWS service for providing databases.

      +

      From ‘services’ in the header, select RDS.

      +

      In the page that appears, click on ‘Launch a DB Instance’

      +

      From the selection of database types, choose PostgreSQL.

      +

      Click no to indicate that you don’t need a multi-AZ database.

      +
      +

      On the database details page, You have a bit of work to do.

      +
      +

      First, select db.t2.micro as the instance type.

      +

      Then, for multi-AZ deployment, select no (again)

      +

      Finally, provide values for the last four inputs

      +

      The database identifier must be unique to your account and region, use +“uwpce”.

      +

      For the master username, use “awsuser”

      +

      Provide a password and repeat it to prove you can

      +
      +

      For Advanced Settings, make sure your DB is in the same availability zone as +your EC2 instance.

      +
      +

      Also ensure that you select the same security group you used for your EC2 +instance from the list of VPC security groups.

      +

      Enter a database name, use “djangodb”

      +

      Finally, click “Launch DB Instance”

      +

      While the database launches, let’s return to setting up our application on +EC2

      +
      +
      +
      +

      Deployment Layer 2: Application¶

      +

      Back on the EC2 instance, in your ssh terminal, clone your django application:

      +
      git clone <your-app-repo-url>
      +
      +
      +
      +

      pip install the requirements for your app:

      +
      +
      cd djangoblog_uwpce +pip install -r requirements.txt
      +

      Finally, export a system environment variable called DATABASE_URL with the +following format:

      +
      postgres://username:password@host:port/dbname
      +
      +
      +
      export DATABASE_URL=<that string>
      +
      +
      +

      You can now test access with dbshell:

      +
      python manage.py dbshell
      +
      +
      +

      Work through any issues in getting that to work

      +
      +

      Once working, we can point nginx at the instance:

      +
      +
      sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
      +sudo vi /etc/nginx/sites-available/default
      +
      +
      +

      Add the following content:

      +
      server {
      +    listen 80;
      +    server_name <your-ec2-public-dns-name>;
      +    access_log /var/log/nginx/django.log;
      +
      +    location / {
      +        proxy_pass http://127.0.0.1:8000;
      +        proxy_set_header Host $host;
      +        proxy_set_header X-Real-IP $remote_addr;
      +        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      +    }
      +}
      +
      +
      +
      +

      Save that file and restart nginx:

      +
      sudo service nginx restart
      +
      +
      +

      Then reload your aws instance in a web browser, you should see a BAD GATEWAY +error

      +

      now start django and then reload:

      +
      python manage.py runserver
      +
      +
      +

      This works, but as soon as you exit your ssh terminal, django will quit. We +want a long-running process we can leave behind.

      +
      +
      +

      Deployment Layer 4: Permanence¶

      +

      Install gunicorn on the server

      +
      pip install gunicorn
      +
      +
      +

      Back on your own machine, create mysite/production.py and add the following +content:

      +
      from settings import *
      +
      +DEBUG = False
      +TEMPLATE_DEBUG = False
      +ALLOWED_HOSTS = ['<your instance public dns>', 'localhost']
      +STATIC_ROOT = os.path.join(BASE_DIR, 'static')
      +
      +
      +

      Add the file to your repository and commit your changes.

      +

      Then pull the changes back on your EC2 instance

      +

      Update nginx config (/etc/nginx/sites-available/default) to serve static files:

      +
      server {
      +    # ...
      +
      +    location /static/ {
      +        root /home/ubuntu/djangoblog_uwpce;
      +    }
      +
      +}
      +
      +
      +

      Then set an environment variable to point at production settings:

      +
      export DJANGO_SETTINGS_MODULE=mysite.production
      +
      +
      +

      Now, run the site using gunicorn:

      +
      gunicorn -b 127.0.0.1:8000 -w 4 -D mysite.wsgi
      +
      +
      +

      Wahooo!

      +

      But still not great, because nothing is monitoring this process.

      +

      There’s no way to keep track of how it is doing.

      +

      We can use a process manager to run the gunicorn command, and track the results.

      +

      Kill the processes that spawned:

      +
      killall gunicorn
      +
      +
      +

      Using linux upstart is nice and easy.

      +

      Put the following in /etc/init/djangoblog.conf

      +
      description "djangoblog"
      +
      +start on (filesystem)
      +stop on runlevel [016]
      +
      +respawn
      +setuid nobody
      +setgid nogroup
      +chdir /home/ubuntu/djangoblog_uwpce
      +env DJANGO_SETTINGS_MODULE=mysite.production
      +env DATABASE_URL=postgres://awsuser:secret123@uwpcedb.c5zwspzpwwsq.us-west-2.rds.amazonaws.com:5432/djangoblog
      +exec gunicorn -b 127.0.0.1:8000 -w 4 mysite.wsgi
      +
      +
      +

      And that’s it!

      +
      +
      +
      + + +
      +
      +
      +
      +
      +

      Table Of Contents

      + + +

      Previous topic

      +

      Session 09

      +

      Next topic

      +

      Supplementary Course Readings

      +

      This Page

      + +

      Slides

      + + + +
      +
      +
      +
      + + + + \ No newline at end of file From 38d01fd5510189db8ca3e02b64fc6cd634f5ed3b Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 10 Mar 2015 17:35:08 -0700 Subject: [PATCH 097/114] updates --- slides/searchindex.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slides/searchindex.js b/slides/searchindex.js index 9e2db61d..09c79dee 100644 --- a/slides/searchindex.js +++ b/slides/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:42,terms:{content_length:3,current_label:2,yellow:9,interchang:[2,4],four:[0,2],database_url:6,prefix:[],ronach:[],af_rout:7,skeleton:[7,4],whose:3,typeerror:2,aug:4,sorri:4,ipproto_raw:7,crisew:7,key_cel:2,concret:4,swap:3,under:[2,3],dest_dir:4,spec:3,formatd:0,digit:[0,2,11,8],everi:[0,3,4,11],risk:2,posttestcas:[],upstream:[],affect:[],vast:2,chapel:[],location_attr:[],fetch_search_result:[],cmd:0,herbert:8,imaplib:0,vector:11,get_templ:11,verif:6,auth_group:[],direct:[0,4],budget:[],second:[0,7,2,3,4,6,8],street:2,nthi:8,even:[0,3,4,11],introspect:2,next_pag:11,list_of_tcp_and_udp_port_numb:7,net:0,ever:[2,3],metadata:[2,4],ipproto_tcp:7,behavior:[7,4,8],never:[7,3,4],here:[],created_d:[],multipli:3,"4xx":0,path:[],redeploi:6,forum:[],transactiontestcas:[],credit:[],webfact:0,permit:0,studi:[],portabl:3,counti:2,golden:8,pprint:[2,3],heroku_postgresql_maroon_url:6,wikimedia:[4,8],avenu:2,org:[0,7,2,3],txt:[0,7,4,6],unit:2,highli:[],yore:8,describ:[7,2,3],would:[0,2,3,4,6,8,11],init:4,new_label:2,dnt:0,call:[],admin_password:6,typo:4,recommend:6,sitehandl:2,calc:3,strip_filt:8,tell:[0,7,2,3,4,6],fastcgi:3,relat:[],panach:8,notic:[0,7,2,3,4,6,8,11],warn:[],phone:[2,8],hold:[2,11],unpack:4,must:[0,7,3,4,6,8,11],af_unix:7,webbrows:2,join:[0,2,3,11],flaskenv:[],restor:[4,6],worth:[2,4,8],conceptu:8,city_long:2,introduc:[4,8],root:[3,11,6],could:[0,2,3,4,6,11],overrid:[],defer:6,bookapp:3,give:[7,2,3,4,6,11],inlinemodeladmin:11,smtp:[],indic:[0,2],cautiou:2,unavail:[],want:[0,2,3,4,6,8,11],dele:0,end:[0,7,2,3,6,8,11],learning_journ:[],frobozz:0,classifi:[],how:[],sever:[2,3,6],env:[3,4],interview:0,verifi:[],perspect:11,updat:[],anon_1:4,recogn:[],timedelta:11,after:[2,3,4,8],superus:4,diagram:4,befor:[0,7,2,3,4,6,8,9,11],wrong:4,charfield:11,lat:2,beautifulsoup4:2,parallel:[],demonstr:[0,4,11],domin:4,third:3,classmethod:[4,6,8],authzpolici:6,wsapikei:[],credenti:9,greet:0,exclud:11,alias:7,scoped_sess:4,dispar:[],green:0,urlconf:[],incorpor:[2,3,6],enter:[0,2,3,8,9,11],mechan:6,engine_from_config:[4,6,8],order:[2,4,6,8,9,11],hob7v7guwir4n1v:6,origin:[9,2,3,4],belong:[0,7,11,6],over:[7,2,4,9,8],govern:[0,2],becaus:[0,2,4,6,8,11],jpeg:0,privileg:[3,4],keyboard:0,flexibl:4,vari:[0,7,2],digest:[],fit:[],fix:[],simple_cli:0,toolbelt:[6,8],comprehend:[],better:[7,2,4,11,6],offic:0,drawback:[],friski:2,comprehens:[],"1xx":0,easier:[4,11,8],descend:2,them:[0,7,2,3,4,6,8,9,11],thei:[0,7,2,3,4,6,8,11],lowest:2,id73:3,safe:[],trail:3,octal:2,bang:3,promis:7,initializedb:[],rental:[],choic:[7,2,4],villaini:3,walkthrough:[],bonu:[],getvalu:3,rocki:6,timeout:[],each:[0,7,2,3,4,6,11],debug:[],went:[0,8],webmast:0,someexamplerssdomain:2,mean:[0,7,2,3,4,6,8,11],createel:2,resum:2,doug:[],logo:8,network:[7,2,8],goe:[2,4,8],god:4,content:[],rewrit:11,got:[],gov:2,forth:[0,3,11],rail:0,nightmar:4,situat:[0,4,11],free:[9,6,8],ineffici:2,contentcol:2,kit:[],getservbynam:7,uiuc:3,s3cr3t:6,traceback:3,static_url:[11,8],filter:[],iso:2,isn:[0,3,11,8],subtl:[],confus:[7,8],"__or__":7,rang:[0,11,8],render:[],independ:[0,4],wast:11,rank:[],hook:[],instruct:[7,3,4],alreadi:[0,7,2,4,6,8,11],wrapper:[7,2],agre:3,fantast:4,primari:[4,8],top:[2,4,11,6,8],"0x1103e38d0":4,sometim:[0,4],imap4rev1:0,necessarili:3,master:[9,4,6],too:[0,7,2,3,4,8,9,11],tom:4,my_view:8,namespac:2,tool:[0,7,2,3,4,6,9],setuptool:4,took:[4,11],auth_permiss:[],incur:[9,6],cdata:2,next_sibl:[],inspection_data:2,val_cel:2,target:3,keyword:[2,6,8],provid:[],tree:[4,6],matter:[2,6],arriv:8,minut:[0,7,8],latitud:2,rad:7,fashion:[2,3],bs4:2,walkscor:[],modern:4,mind:[],mine:0,elem:2,raw:0,af_sna:7,pylon:4,increment:[],"__main__":[2,3,6],seen:[0,7,2,3,4,6,8,11],seem:[3,6],django_blog:11,seek:[4,6],strength:[],herokuapp:6,latter:4,thorough:[11,8],"0x1103e3fd0":4,shelf:4,transmit:4,hypertext_transfer_protocol:0,simplifi:[],endfor:[11,6,8],sock_dgram:7,though:[0,2,11,6],usernam:[0,9,6,8],guess_typ:0,id__in:[],minask:[],regular:[],alan:[4,8],bsd:7,models_id:4,typ:7,maria:[7,2,3],tradit:8,don:[0,7,2,3,4,6,8,11],doc:[0,2,4,11,6],doe:[],declar:[3,4,11,8],unchang:[],passwordfield:6,section:[0,3,4,8],dot:8,asid:[],opposit:8,random:6,syntax:[],dyno:6,radio:[9,8],protocol:[],involv:6,absolut:8,exactli:[0,7,8],menu:[0,3],explain:[3,4],response_head:3,apach:[],restaur:[],kessler:[],disert:[],busi:2,title__icontain:[],scgi:3,tzinfo:11,folder:[7,3,4,6,8],resolve_uri:0,patter:8,nasti:2,stop:[],amazon:9,reconstruct:3,bat:[],bar:[],ietf:[0,3],baz:[0,2],buffsiz:7,reload:[0,3,11,6],told:[11,6],steal:[4,6],title_info:3,respond:[],get_const:7,get_inspection_pag:2,disucss:[],serve_forev:3,result:[],respons:[],fail:[0,7,11,6],hash:[3,6],best:[2,4,6],awar:6,said:[],pythoncert:[4,8],wikipedia:[0,7,2,4],urllib:2,yet:[0,7,4,6,8],figur:[7,3,4],score:[],outstand:8,downei:2,awai:[],approach:[],attribut:[],accord:2,extend:[],overboard:9,weak:[],logged_in:6,extens:[0,2,6],html5:8,toler:2,"__unicode__":11,pull:[],protect:0,accident:7,expos:3,howev:[3,4,11,8],against:[0,3,6,8],logic:[4,6,8],countri:2,browser:[],com:[0,7,2,3,4,6,8,9,11],compromis:[],get_appset:[4,6,8],assur:7,can:[],inher:2,loader:[2,11],trust:4,assum:[7,2,4],test_details_only_publish:11,speak:[],bathroom:[],chrome:0,add_rout:[4,6,8],"125px":2,been:[2,3,4,6,8,11],much:[0,7,2,3,4,8,11],interpret:[0,7,2,3,4,8],interest:2,futur:7,raise_for_statu:2,tini:[],quickli:[0,4,11],life:[0,2],suppress:11,xxx:3,setup_log:[4,8],telnet:7,ani:[0,7,2,3,4,6,8,9,11],matchpath:3,"catch":[0,2],build_env:3,ugli:0,ident:6,servic:[],properti:[],commerci:4,manytomanyfield:11,calcul:[2,3],apikei:[],neat:[0,11],content_col:2,"_set":[],seven:0,af_appletalk:7,shebang:3,toolkit:0,kwarg:[2,11],conf:11,fnhg:0,varchar:4,tediou:[2,4],fedorahost:2,conn:[0,7],datetim:[2,11],perform:[3,4,11,8],suggest:[0,2,6],couchdb:4,contains_word:2,craigslist:[],complex:[],split:0,version_str:3,complet:[],rfc822:0,nic:7,hang:[],xyzzi:0,nix:3,rais:[0,7,2,3,11],kcscript:2,howdi:8,editcom:2,"548kb":4,thu:[7,3],hypothet:4,inherit:[3,4,8],client:[],thi:[],endif:[11,6,8],gzip:0,programm:2,everyth:[0,4,11,6,8],moreov:[0,2],left:[9,4,6],powerus:9,identifi:[0,2,3,8],just:[],photo:[2,3],laptop:[],human:[0,2,8],mysql_length:4,languag:[],enlighten:[],alchemi:4,easi:[2,4,11,6,8],had:2,shout:8,"8bitmim":0,httpfound:[6,8],els:[0,2,4,6,8,11],hat:0,gave:4,opt:0,book:[],race:[6,8],mayb:3,preserv:[],parse_var:4,render_markdown:6,bbox:2,elabor:6,httprespons:11,apart:[],shoulder:[],imap4_port:0,response_method_not_allow:0,specif:[7,2,3,4,6,8,11],arbitrari:[7,4,6],reload_templ:4,manual:[4,11],hung:0,install_requir:4,underli:7,www:[0,7,2,3],right:[0,2,3,6,8,11],old:4,"0db8":7,nfrom:4,intern:[0,3],successfulli:[3,4],craiglist:[],transmiss:[0,7],total:[2,3,11,6],djangoproject:11,bottom:[7,2],subclass:[],track:2,ssh2:[],exectut:4,overcom:3,condit:[0,3],foo:[],fieldstorag:3,localhost:[0,3,11,6,8],mailgat:0,jsonp:8,bold:2,oracl:4,confer:[],colleg:[],bolt:2,repositori:[7,2,3,4,6,8,9],post:[],"super":0,simpletestcas:[],obj:[4,8],startapp:[],surround:8,distinct:0,dinner:0,log_buff:0,done:[],sept:2,produc:[7,2],curiou:[],"float":2,encod:[0,2,6],bound:[7,4,11],curios:[],down:[2,6,8],creativ:[4,8],bufsiz:3,contrib:11,storag:[0,4],git:[9,4,6],deal:7,utmcsr:0,clean_data:2,support:[0,2,3,4,6,8,11],hypermedia:[],fight:11,avail:[7,2,4,6,8,11],width:2,reli:6,request_method:[3,6],editor:[2,3,11],overhead:2,get_address_info:7,rcpt:0,internet_protocol_suit:7,head:[0,7,2,6,8,11],medium:[7,2],offer:[3,4,11,8],forc:2,hear:7,icmp:7,"true":[0,7,2,4,6,8,11],absent:3,attr:[2,8],type:[],maximum:7,until:[7,4],mashup_1:2,anew:[],absenc:3,fundament:11,emit:3,nnn:[],situatin:[],classic:11,af_decnet:7,request:[],"abstract":4,decrypt:0,proven:4,exist:[0,3,4,6,8,11],glanc:[],check:[],assembl:8,when:[0,7,2,3,4,6,8,9,11],role:[9,8],jone:0,test:[],webob:4,roll:6,realiti:2,node:[],intend:[7,4],af_unspec:7,urllib2:2,djangocon:[],intens:2,intent:[],iterm:3,receiv:[],longer:[7,11],bullet:6,anywher:3,pbkdf2:6,wtttzy:6,push:[],serious:2,backward:[],osx:[0,6],concept:[7,4,6],skip:4,consum:[7,2],focus:[],invent:[2,4],restaurant_data_gener:2,supplement:[],skim:[],row:[],depend:[],flask:[4,11],graph:8,readabl:[0,2,3,11,8],unpython:4,a0004:0,a0005:0,certainli:8,a0001:0,a0002:0,a0003:0,addon:6,aspx:2,query_str:3,isinst:2,sourc:[],string:[],congest:7,price_span:[],lru:4,"0mb":[],kitten:4,octob:11,ydood:8,subprocess:3,brows:8,contenttyp:11,administr:3,level:[2,4,11,6],did:[],dig:8,ipproto_udp:7,assertequ:11,item:[2,3,4,11,8],team:4,quick:[],imap4:0,dir:[0,7],declarative_bas:4,upper:8,slower:7,thin:7,lstrip:3,htm:2,discover:11,sign:[],restkit:[],cost:6,port:[0,7,3,9,6],appear:[2,9,11,6,8],scaffold:4,current:[7,3,4,9],rst2xml:4,"3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4":6,response_bodi:3,redirect:[0,2],deriv:3,urlopen:2,gener:[],unauthor:2,explicitli:[3,4],address:[],stem:[],wait:[],box:[],mysit:11,shift:0,queue:7,related_nam:11,bob:[0,4],commonli:7,ourselv:[0,6],ipc:7,semant:7,session1:7,extra:[],modul:[0,7,2,3,4,6,11],prefer:[0,3],repoz:4,seattl:2,visibl:11,marker:[2,8],http_:3,smallish:7,market:[2,4],types_map:0,prove:6,univers:[],visit:[11,6,8],todai:[0,7,2,6,8,9],live:[],criteria:[0,4],msg:7,tightli:3,chapter:4,maxask:[],peopl:2,claus:[],asserttru:11,walkabl:[],oregon:9,visual:[0,2],appendix:0,accept:[],postgresql:[],effort:[2,11],content_typ:[3,11],appraoch:11,prepar:[],pretend:0,uniqu:[2,4,6,8],inspection_typ:2,"0002_auto__add_categori":[],purpos:[0,3,4,6,8],boilerpl:4,heart:11,input1:2,encapsul:11,stream:[7,4],predict:0,agent:[0,3],topic:8,critic:[],app_factori:4,loginform:6,occur:7,entryeditform:6,alwai:[0,7,2,3,4,6],lxml:2,multipl:[3,4],winter:[],charset:[0,8],write:[],anyon:[3,6,8],pure:2,tild:2,xhtml:0,tbodi:2,map:[],product:[4,6],max:[0,6,8],clone:[7,4,9,8],appnam:[],mac:0,"4th":2,all_us:[],date:[],underscor:[],data:[],classroom:4,inspection_end:2,gethostnam:7,practic:[],secur:[],explicit:8,predic:6,mangl:0,inform:[],"switch":[9,4],cannot:[7,3,8],combin:[2,3,4,6,8],printenv:3,callabl:[3,11,8],talk:[0,7,4,8],shield:[],ydwoh:8,objectdoesnotexist:11,geojson:[],ttl:2,gitignor:4,still:[0,2,4,8,9,11],mainli:11,dynam:[0,2,3,8],config_uri:[4,6,8],group:[7,3,4,9,11],thank:11,"4z6rvnhte21mpljw5veive0eg57gn":6,concis:[],authorization_polici:6,sec10:0,platform:6,window:[0,2,3,4,6,9],curli:8,mail:0,main:[0,2,4,6,8],non:[0,9],noj:[],mapper:[],profession:[],killer:11,initi:[0,3,4,6],answer:[],safari:0,some_appl:3,now:[],discuss:[7,3,4,8],nor:11,term:[3,4],name:[0,7,2,3,4,6,8,9,11],config:[],interpr:4,server_softwar:3,magazin:8,path_transl:3,januari:11,confid:2,compil:[2,6],domain:[],"0x105849b90":8,replac:[2,11,6,8],individu:[7,4,11,8],continu:[0,7,2,3,4,6,9],wsgi_1:3,protocol_vers:3,keypair:9,sponsor:11,begun:[],year:2,operand:3,dispos:9,shown:[],accomplish:[0,9],kingcounti:2,space:[],profit:9,profil:7,formula:[],sensor:2,correct:[0,7,11,8],"0x1005b8b40":7,tmpl:8,myproject:6,earlier:[0,4,6],pseudocod:0,state:[],migrat:[],ch05s03:0,envelop:2,argv:[4,6],unpublish:11,myblog_test_fixtur:11,argn:6,brower:[],"byte":[7,2],toggleshow:2,search_param:[],care:[0,7,2,3],sign_in:6,setdefault:2,question:[],default_permiss:6,syndic:2,refus:7,thing:[0,2,4,6,8,9,11],place:[7,3,4,6,8,9,11],router:3,principl:[],think:[7,3,4,6,8],frequent:4,lambda:8,oper:[7,3,11,6,8],info:[7,2,3,4,6],directli:[7,2,4,8],template_nam:11,onc:[0,7,2,3,4,6,8,9,11],arrai:2,yourself:[0,2],acquisit:[],fast:4,business_address:2,open:[],size:[],urin:0,given:[0,7,2,4,8,11],sheet:8,convent:0,bookmark:[],imap4_ssl_port:0,eachoth:4,citi:2,paramt:2,lognam:3,averag:2,conveni:[4,11],friend:6,prettier:8,hue:2,grant:[3,6],especi:[2,3],memo:3,copi:[0,2,3,6,8,9,11],huh:0,artifact:4,github:[0,7,2,3,4,6,8,9],mostli:[0,7],attempt:7,than:[0,7,3,4,6,8,11],png:0,serv:[],were:[7,2,4,11],posit:7,seri:[2,4],pre:2,fork:[0,2,9],sai:[0,2,3,4,6,11],angel:3,pro:7,argument:[0,7,2,3,4,6,8,11],doctyp:[0,2,11,8],rent:[],notimplementederror:0,django:[],saw:4,dbapi:[],shtml:0,engin:[],destroi:11,ipproto_:7,note:[0,7,2,3,4,6,8,11],data_list:2,wretch:3,take:[0,7,2,3,4,6,8,9,11],breadth:[],bcrypt:6,noth:[2,3,4,6,8,11],channel:[0,2,4],begin:[0,7,2,3,4,6,8,9,11],sure:[7,2,4,6,8,9],pain:[4,6],trace:4,normal:[2,4],buffer:[0,7],price:[],pair:[2,4,11,8],homepag:[2,9],run_cgi:3,renam:[],egg:4,utmccn:0,later:[],drive:[],"8mb":4,quantiti:2,create_al:4,link:[],shortnam:6,preambl:3,gracefulli:0,shot:2,show:[],my_index:4,constitu:8,ground:[],xml:[],onli:[0,2,4,6,8,9,11],slow:7,codehilit:6,transact:[7,4,6],enough:[0,2,4,6],dict:[7,2,4],test_list_only_publish:11,analyt:6,startswith:[7,2],nearli:4,variou:[4,8],row1:2,mung:0,clang:4,this_text:2,repo:[],ssl:0,tailor:0,ssh:[7,9],"0002_categori":11,utf:[0,2,8],requir:[],reveal:3,entryfactori:6,yield:2,authenticated_userid:6,draft:0,where:[],summari:2,wiki:[0,7,2],n10:8,concert:11,seat:2,is_staff:11,lng:2,web_application_hybrid:2,detect:6,review:[0,7,3,4,6,8],enumer:6,label:[],getattr:7,between:[0,7,3,4,11],"import":[0,7,2,3,4,6,8,11],across:[7,2],parent:[3,4],elladan:7,screen:[],tut:0,cycl:[4,8],portion:[3,8],come:[0,2,3,4,6,8,11],sketchi:2,img:0,region:9,tutori:[11,8],wherin:4,improv:[0,9,3,4,6],among:[7,2,4,8],execute_from_command_lin:[],intitalizedb:4,color:[2,6],unittest:[],inspir:11,"__class__":[],exploit:3,imad1:0,artu:0,fallen:11,coupl:[7,2,3,4],west:9,hardli:2,mark:6,evangelista:[4,8],workshop:[],valueerror:[2,3],extract_list:[],avian:7,intval:2,emphas:[],state_long:2,doesn:[0,7,3,4,6,8,11],docxmlrpcserv:[],i18n:11,repres:[0,2,4,11,8],former:[],those:[0,2,3,4,11],"case":[],interoper:2,cast:4,invok:[],outcom:[],scum:3,python_web:[4,8],ehlo:0,zipcod:2,advantag:[],ctrl:0,canon:[7,3,9],worri:[7,6],blah:0,reqeuest:3,smalltalk:4,data_div:2,develop:[],proto:7,cc0:[4,8],same:[0,7,2,3,4,6,8,11],epoch:2,html:[],pai:[2,11,6],document:[],helpfulli:[],week:[],finish:[],closest:9,nest:2,assist:[3,4],driver:9,someon:6,driven:[0,8],capabl:3,http_host:3,add_rount:6,mani:[0,7,2,3,4,6,8,11],extern:[],title__contain:[],appropri:[7,3,6,8],"__acl__":6,markup:6,without:[7,2,3,4,8],execut:[],excel:8,resp:[0,2,11],googleapi:2,interrupt:0,full_clean:[],kill:[0,4],aspect:[4,6,8],flavor:2,nam:7,concentr:11,heffalump:7,versu:[],blog_detail:11,getlist:3,hint:0,except:[0,7,2,3,4,11],param:[2,6],apache2:[],blog:[],ws_score:[],pile:2,blob:6,exercis:[],vulner:[0,11],inspection_path:2,real:[],tranmiss:7,around:[7,2,3,6,8,11],read:[],psd:2,makin:8,violation_point:2,traffic:0,mon:[0,2],redqueen:0,postal:2,socket_tool:7,intel:0,whitespac:[0,2],integ:[7,4,6],server:[],benefit:[0,7],either:[0,2,8],cascad:8,django_settings_modul:[],output:[],manag:[],fulfil:6,ctx_instanc:11,ipproto_ip:7,assertionerror:[],definit:8,"2xx":0,exit:4,posgresql:6,notabl:0,backlink:11,refer:[],af_inet6:7,httpresponseredirect:11,power:[7,4,9,6,8],imposs:4,inspect:[],broken:[0,2],great:[],"__name__":[2,3,6],src:[2,8],deflat:0,central:4,meaning:4,acl:6,microframework:4,fell:11,srv:3,bone:8,act:[2,3],schemamigr:[],mytempl:[4,8],routin:2,effici:[],consid:[],status_cod:[2,11],console_script:4,isoformat:2,inbox:0,strip:[2,8],insuffici:0,igmp:7,loc:[],buffer_s:7,httpnotfound:[6,8],her:[11,6],set_authorization_polici:6,aren:[4,6],lon:[],strict:2,interfac:[0,7,3,4,6],ipv4:7,lot:[0,4,11,8],ipv6:7,"0x10b075ed0":4,hei:7,svn:8,handle_request:3,tupl:[7,2,11],categor:[0,11],congratul:[],freddi:8,notat:[2,8],dirti:4,possibl:[7,2,3,11,8],"default":[7,3,4,6,8,11],start_respons:3,connect:[],gone:4,"520px":2,uid:0,certain:[0,7,2,4],deep:6,strongli:6,intro:2,omgwtf:2,fill:[2,3,9,6,8],again:[0,7,2,3,4,6,8,11],api_url:[],compel:4,field:[],wai:[0,2,3,4,6,8,11],compet:2,copiou:[],pathnam:[0,7],juic:8,poor:[],zip_cod:2,sequenc:0,symbol:[7,8],pr0084952:2,briefli:8,peak:11,transceiv:7,pool:[],reduc:4,json_output:[],"1b6":0,wife:[],directori:[0,3,4,6,8,11],descript:[],potenti:[11,6],south_migrationhistori:[],escap:6,unset:3,represent:[7,2,4],forget:6,roi:2,illustr:9,forbidden:6,lack:11,month:11,scalar:4,runserv:11,abil:[0,4,11],cameron:[],follow:[0,7,2,3,4,6,8,9,11],disk:[0,2],children:2,dsn:0,laboratori:[],script_nam:3,af_inet:7,articl:[4,6,8],tail:6,norm:0,hill:[],sound:11,liter:4,chameleon:8,far:[7,2,4],faq:0,mcdonough:[],util:[],candid:2,fan:[],fam:7,veri:[0,7,3,4,6,8,11],ticket:6,condition:11,simple_app:3,utmcmd:0,list:[],last_nam:8,adjust:[],featurecollect:2,stderr:[0,3],small:3,everth:2,neighborhood:2,your_script:[],sync:[],past:[2,4,6],design:[7,2,3,4,6,8,11],pass:[],further:[],by_nam:6,sud:2,sum:[2,8],abl:[0,2,3,4,6,8,11],brief:[],delet:[0,2,6],version:[0,2,3,4,6,11],tickl:[],primary_kei:[4,6],intersect:8,deepli:2,"public":[],contrast:[],inspection_pag:2,craigslist_result:[],hasn:2,full:[],themselv:2,berkelei:[],shouldn:[],"0001_initi":[],trunk:8,goodby:0,strong:[6,8],modifi:[0,2,11],rfc3875:3,valu:[],search:[],ahead:[7,2,3,6,8],post_id:11,popen:3,prior:6,doctest:[],action:[7,2,4,6,8,9,11],add_static_view:[4,8],via:[],requestcontext:11,transit:[],is_authent:11,filenam:[0,11],href:[3,11,6,8],famili:[],establish:[7,2],select:[0,9,4],hexadecim:2,has_two:2,use_kei:2,internation:11,stdout:[7,3,4],two:[0,7,2,3,4,6,8,11],taken:[2,9,6],id_find:2,minor:11,assertcontain:11,flaw:8,desir:[],load_inspection_pag:2,mozilla:[0,8],flag:[0,7,6],addcom:2,particular:[4,11,6,8],known:[7,2,6],max_length:11,cach:[0,4,11],none:[0,7,2,3,4,6,8,11],endpoint:[0,7,2],puzzl:3,hour:[0,7,11,8],hous:[],dev:[3,6],venusian:4,remain:[11,6],paragraph:2,learn:[],abandon:[],rst2html:4,def:[0,7,2,3,4,6,8,11],ndate:7,assertnotcontain:11,prompt:[7,3,4],useabl:9,scan:[4,8],challeng:[0,11,6],registr:[11,6],share:[],templat:[],explor:[],phrase:[4,8],login_form:6,heroku:[],uncheck:[],mai:[0,7,3,4,6,11],goal:[2,4],awkward:11,bookdb:3,rather:0,anoth:[],comfort:8,divis:3,yipeee:[],"__init__":[4,6,8],csv:[4,8],simpl:[],css:[],unabl:6,"545kb":4,resourc:[],referenc:8,sneak:11,ff0000:2,okai:[0,4],associ:[],data_row:2,"short":[3,11],footer:8,onto:2,author:[3,11,6],country_long:2,caus:4,doesnotexist:11,sesstion:[],checkbox:8,help:[0,7,2,4,8,9],"912ft":[],mainthread:[4,6],hypertext:[],stackoverflow:0,soon:[7,8],listval:3,held:[],through:[0,2,4,6,8,9],pane:0,inspection_row:2,paramet:2,style:[],makemigr:11,myblog:11,psycopg2:[4,6],relev:4,pserv:[6,8],highscor:2,mysite_stage_2:11,might:[],pce:8,tri:[11,8],good:[0,2,3,4,6,11],pollut:4,cew:[9,4],framework:[],maildrop:0,mysite_stage_1:11,adventur:2,gethostbynam:7,msg_part:7,httplib:[],eventu:[2,4],unlik:11,authent:[],test_unicod:11,easili:[4,8],achiev:[2,11],http_server:0,compris:4,found:[0,2,3,4,8,11],unicod:[2,4,11,6,8],button:[9,8],base_dir:11,weight:2,hard:[4,6],idea:[0,7,2,4],procedur:2,realli:[0,7,2,6,8,11],expect:[],beyond:[],orient:[],standard:[0,7,2,3,4,6],some_valu:3,ftp:7,installed_app:[],shortcom:[],author_nam:11,publish:[3,4,11],research:4,bubbl:8,etag:0,health:2,authnpolici:6,print:[0,7,2,3,4,6,8],zaccagni:2,uwpc:[4,8],"__utmz":0,postgr:6,proxi:[],uncommit:4,advanc:0,new_model:4,differ:[],cooki:[0,6],reason:[0,2,3,11,8],fieldnam:[],believ:[],ask:[0,7,4],"__utma":0,earliest:2,recv:[0,7],"19t01":6,bash:[3,6],render_to_respons:11,applict:3,launch:[],by_id:[4,6,8],perhap:[0,2,8],root_urlconf:[],as_p:11,getelementsbytagnam:2,find_al:2,assign:[],request_protocol:3,"85a3":7,feed:2,oserror:3,set_authentication_polici:6,obviou:0,prevent:[3,6],feel:[2,11,8],has_two_td:2,number:[0,7,2,4,6,8],placehold:[0,8],is_tr:2,construct:[],blank:[],miss:[],fanci:[],guess:0,"5th":2,pbkdf2passwordmanag:6,least:[2,3,4,8],getservbyport:7,auth_group_permiss:[],statement:4,zeromq:[],foreignkeyfield:11,store:[2,4,6],schema:11,luckili:[0,2,4,6,8],parc:4,option:[],relationship:[],behind:[2,4,11],echo_socket:7,part:[],pars:[],fall:[4,11],fenced_cod:6,login_redirect_url:11,fred:4,king:2,kind:[0,7,2,3,6,8],grew:0,remot:[7,2,4,11,6],gotten:11,remov:[7,4,6],violation_red_point:2,"97b":2,str:[3,4],relative_to:6,consumpt:[],aclauthorizationpolici:6,payload:0,"_socketobject":7,expir:6,published_date__exact:11,larri:4,"null":[2,11],verson:11,imagin:[6,8],built:[0,2,3,4,6,8,11],lib:[0,3,4],remote_addr:3,self:[3,11,6],click:[2,3,9,11,8],also:[0,7,2,3,4,6,8,11],build:[],cgi_1:3,textareafield:8,brace:8,pubdat:[2,11],http_user_ag:3,distribut:4,appendchild:2,lighttpd:3,kai:4,previou:[0,2],reach:7,chart:[4,8],unappli:[],most:[0,7,2,3,4,6,8,11],plai:[],wahoo:0,plan:6,charg:9,addr:[0,7,2],mymodel:[4,6,8],cover:[0,2,4,6],http_server_at_hom:0,usual:[7,4,11],awesom:11,wsgi:[],hyper:0,latlng_tmpl:[],v12:0,getcom:2,particularli:[2,6,8],font:2,fine:[0,2,8],find:[],use_param:2,giant:3,nosql:4,pretti:[0,2,4,11],solut:[],"172kb":4,factor:4,smtplib:[],darwin:4,hit:2,unus:4,"__file__":3,resent:7,famous:3,mainten:2,rest:[],"3xx":0,restart:[0,3,6,8],template_dir:11,rfc:[0,3],common:[],nowher:4,wrote:[2,11,6],certif:8,set:[],dump:2,sep:2,overwhelm:4,"0x1103e3f50":4,af_ipx:7,see:[0,7,2,3,4,6,8,11],bare:8,sea:[],arg:[3,4,11],reserv:[0,7],uw_pc:[],someth:[0,2,3,4,6,8,11],particip:[],topmost:7,won:0,frontendtestcas:11,subscript:8,experi:[],nope:[],modeladmin:11,javascript:[2,8],isol:[2,4],mailbox:0,"31m":6,cgi_sum:3,popul:[2,11],both:[0,7,3,4,6,8,11],hiddenfield:6,delimit:0,lignt:[],unstag:4,author_id:[],load:[0,2,3,6,8,11],simpli:[0,2,3,4,6,8,11],point:[],instanti:[2,4],header:[],route_url:[11,6,8],littl:[3,6,8],suppli:[2,3,6],batteri:2,comput:[],desktop:9,xkcd:0,backend:3,list_view:11,damp:3,get_geojson:2,hoohoo:3,sinc:[7,2,3,4,8,9],retr:0,secret:[3,6],damn:2,wherein:[2,3,9,11,8],rstpep2html:4,"55c0287d4ef21f15b97eb1f107451b88b479bff":6,inspection_closed_busi:2,wish:[3,4,6],versa:[],fire:[0,3,4,6,8,11],imag:[0,9,11,8],cryptacular:6,append:[0,2,3,4,6],coordin:[2,4],understand:[0,6],func:3,demand:2,educ:3,remote_us:3,look:[],road_long:2,solid:[2,11,6],add_walkscor:[],histor:[],"while":[],"54f7e4d":6,abov:[0,7,2,3,4,6,11],error:[],fun:[],fixtur:11,everyon:6,loop:0,readi:[0,7,2,4,6,8],technolog:[7,6],unintuit:2,readm:[3,4],itself:[2,3,4],spong:3,limit:[7,2],"3f80f":0,decor:8,minim:0,remote_id:3,id__exact:[],decod:2,onclick:2,zope:4,conflict:[2,4],b59b7c3:6,communc:7,argpars:2,td_children:2,moment:[],temporari:8,user:[],robust:6,stack:[],recent:[0,4,11],lower:[7,2,8],task:[],older:[],find_packag:4,entri:[],spent:7,doodi:8,pickl:4,person:[7,6,8],expens:[7,3,6],elev:0,connnect:7,cedar:6,macintosh:0,tast:[],spend:[7,8],total_result:2,propos:[],explan:0,first_nam:8,csrf_token:11,make_wsgi_app:4,collabor:9,"__path__":4,shape:[],session08:[],mysql:4,session05:0,session04:7,session07:2,sidebar:2,session01:7,session03:[],session02:[0,8],a0006:0,restructuredtext:4,shortcut:11,global_config:[4,6,8],populate_obj:[6,8],armin:[],appli:[],input:[],cgi_2:3,bin:[2,3,4,6,8],bim:2,march:[],format:[],response_ok:0,folk:3,server_socket:7,formal:[0,3,4],httpexcept:8,leisur:[],ipproto_icmp:7,docutil:4,altough:[],manifest:4,collect:[2,4,8],princip:6,popular:[2,3,11,6],extract_restaurant_metadata:2,often:[0,7,2,4],fake:[],some:[],back:[0,7,2,3,4,6,8,11],global:[],understood:7,uidnext:0,sampl:[2,6,8],staticfil:11,ljenv:[4,6,8],formatted_address:[],djangoblog_uwpc:9,cgihttpserv:3,plenti:[],quot:2,pep:3,id3:3,per:[0,7,2,6],pem:9,larg:[2,3,9],slash:3,machin:[],intial:0,run:[],authtktauthenticationpolici:6,simple_serv:3,viabl:4,step:[],crlf:0,detail_view:11,subtract:3,"resum\u00e9":2,usa:2,constraint:[],materi:[],memori:2,"0x100563c90":7,business_nam:2,exc_info:3,path_info:3,supplementari:[],miracl:0,plethora:11,within:3,url:[],ensur:[0,7,4,11,6],html5shiv:8,inclus:2,span:6,errno:3,sock:[0,7],stylesheet:[11,8],"long":[0,7,2,3,4,6],adjac:[],includ:[],suit:[],forward:[],inspection_start:2,term_program:3,properli:[0,2,9,8],login_url:11,repeatedli:[7,4],poster:[],ahhh:2,verb:0,pwd:4,game:8,translat:11,atol:6,atom:2,line:[0,2,3,4,6,8,11],translationstr:4,utc:11,url_for:[],consist:[0,2,3],latlng:2,http404:11,similar:[0,2,3,4,11],clear:[0,7],sesson:0,constant:7,parser:2,chao:[2,6],ws_descript:[],lectur:[],syncdb:[],gecko:0,response_not_found:0,titl:[0,2,3,4,8,11],xb2:[],sqlclear:[],nav:8,librari:[0,7,2,3,4,6,8],nice:[],llvm:4,mongodb:4,plug:0,drag:2,csrftoken:0,longitud:2,esr:0,index_pag:[],algorithm:6,vice:[],mimetyp:0,rst2latex:4,parse_sourc:2,sign_in_out:6,depth:[],stub_view:11,fresh:2,hello:[0,3,8],oop:4,getaddrinfo:7,sqlserver:4,edu:[7,3],feedpars:2,privat:9,a_pag:2,bathtim:8,elsewher:[7,6],friendli:2,send:[],becam:2,aris:4,sent:[0,7,2,3,4,6,8,11],charlesproxi:0,rollback:4,liveservertestcas:[],spool:0,text__contain:[],add_address:[],createsuperus:[],runnabl:3,recip:6,magic:8,joel:6,geograph:[2,9],hive:3,"try":[],rfc5321:0,book_id:3,entry_point:4,prompttextbox:2,hasnochildren:0,pleas:[2,4],impli:3,smaller:7,natur:[11,8],focu:[],video:[],download:[9,4,8],odd:8,html5lib:2,client_address:7,compat:[3,4],index:[],turn:[0,4,6,8],poke:3,resembl:8,cell:2,whatev:[7,8],led:11,bylin:11,len:[0,7,2,3,4],bodi:[0,2,3,4,6,8,11],loadapp:6,intercept:6,let:[],myhost:3,becom:[2,4],fifteen:11,pgbackup:6,convert:[2,4,6,8],didn:4,convers:11,ctx:11,stringval:3,rdf:2,aliv:[0,7],typic:[3,4],purplemattfish:2,maker:8,chanc:11,firefox:0,ago:[7,6],parse_request:0,win:0,foundat:11,gatewai:3,apt:[],ran:[0,4,11],api:[],regexp:[3,11,8],usasearch_config:2,apa:[],cloud:9,from:[],zip:2,commun:[],doubl:[],upgrad:6,next:[],websit:[2,4,11,6,8],few:[],doubt:[],usr:[3,4],lock:6,manytomani:11,remaind:3,sort:[2,11],my_map:2,rich:11,validationerror:[],ipoac:7,babi:8,"__call__":11,train:[4,8],somesecret:6,categorytestcas:11,account:[9,8],retriev:[3,8],scalabl:4,alia:11,alic:6,stroke:[],housenumb:2,tag:[],universal_newlin:3,inspection_domain:2,meet:[],fetch:[],thie:[],control:[],sqlite:[4,6],tar:4,process:[],mdash:11,sudo:4,high:[2,4],af_:7,tab:[0,2,9],onlin:[],serial:2,cache_max_ag:[4,8],gcc:4,cewing_socket:7,sit:[],client_socket:7,pyramid_jinja2:8,copyright:4,preformat:6,instead:[0,4,11,6,8],chri:[],stand:[],delai:4,initialzedb:6,attend:[],other_sess:4,"6mb":4,hazard:11,class_:[],attent:[11,6],tier:[9,6],philosophi:[],physic:[7,8],add_al:4,bind:[],correspond:[7,3],element:[],issu:11,webroot:0,chief:6,prettifi:2,allow:[0,7,2,3,4,6,8,9,11],sendal:[0,7],elif:8,elig:9,creation:11,move:[0,7,2,4,11],utcnow:11,belltown:2,bunch:7,outer:[],verify_password:6,"0x10046cec0":7,infrastructur:6,pr0001203:2,bye:0,recept:7,greater:[],snoopi:[],handl:[],demoenv:4,spell:8,dai:[0,8],auth:[11,6],mention:[],httplib2:[],close_fd:3,front:11,"8a2e":7,is_inspection_data_row:2,mashup_:2,all_book:3,blog_index:11,somewher:[6,8],anyth:[2,4,6],edit:[],entrycreateform:[6,8],nameerror:[0,3],soupenv:2,slide:[1,10,13,5,12],mode:4,batch:4,beneath:6,street_address:2,pygment:6,item_templ:3,view_nam:11,bump:0,sessionmak:[4,8],violation_descr:2,meta:[],"static":[],brittl:2,annot:[],wander:3,ws_link:[],out:[],variabl:[],influenc:11,defend:[],facto:2,categori:[],m2m:[],suitabl:6,rel:[11,8],rec:2,leverag:6,ref:11,cwd:3,red:0,clarifi:4,umbrella:2,insid:[0,7,2,3,4,11],workflow:9,frank:8,manipul:[3,4],sock_:7,standalon:[],zodb:4,rdata:2,releas:11,strval:2,auth_secret:6,first_lin:0,complianc:6,septemb:11,"0x1103d9f10":4,unnam:11,lexer:6,put:[],keep:[0,7,2,3,4,11],datetimefield:[],scari:[],length:[0,3,4,6,8],enforc:[],outsid:[3,4,6],geometri:2,title__exact:[],timezon:11,waitress:6,softwar:[0,7,2,4,6,8,11],isbn:3,pygments_styl:6,qualiti:2,echo:[],exact:8,models_valu:4,match_param:[6,8],owner:[2,8],myblog_post:[],forgeri:11,intention:0,licens:4,creator:[],mkdir:4,messag:[],attach:6,attack:11,imap4_ssl:0,termin:[0,7,2,3,4,6],"final":[],low:[],tomayko:[],udp:7,shell:[],fnhg5:0,permalink:11,fnhg2:0,fnhg3:0,"var":[0,2,6],"8d3":7,rst:[],textfield:[11,6,8],nobodi:3,haven:[],route_nam:[6,8],embodi:[4,6],dive:6,roberto:8,charact:[2,4,6,8],sens:8,sensit:[0,6],f12:0,stdin:3,favorit:0,py2:4,py3:4,deprec:4,clearli:11,requri:6,close:[0,7,8],need:[0,7,2,3,4,6,8,9,11],"635px":2,featur:[2,3,4,11,6],paramiko:[],she:6,afraid:[0,4],lightweight:2,min:[6,8],rout:[],restaurant_data_row:2,accuraci:2,builtin:11,which:[0,7,2,3,4,6,8,11],from_encod:2,authentication_polici:6,ncsa:3,singl:[0,7,2,3,4,6,8,11],tonight:2,unless:7,ds_store:4,whl:4,who:[6,8],wandering_angel:3,discov:[0,2,3],deploi:[],pyc:4,segment:[11,8],payment:6,urg:11,dens:[],mashup_3:2,mashup_2:2,mashup_5:2,face:[],pipe:8,build_db:6,deni:[3,6],modified_d:[],determin:[],fact:[7,3,11,6,8],jkorpela:0,text:[],bring:[0,8],server_nam:3,bedroom:[],rough:4,identityset:4,staff:11,your_nam:9,inlin:[7,4],locat:[],auth_typ:3,"2br":[],should:[0,7,2,3,4,6,8,9,11],jan:[0,7],result_gener:2,suppos:2,"3e1cb03b":0,"__tablename__":[4,6],local:[7,2,4,6,8,9],hope:[],meant:[],insight:[],satisfact:6,familiar:[0,3,11],pypi:4,bear:2,db8:7,notimpl:2,increas:[],smash:8,pastedeploi:4,enabl:[0,3,11,6],rage:0,"0x10e7d6b90":8,stuff:[2,3,11,8],maintain:[],integr:[],contain:[0,1,2,3,4,5,6,7,8,10,11,12,13],programmableweb:[],paster:[4,8],view:[],dbsession:[4,6,8],knowledg:4,packet:7,closer:4,statu:[2,3,4,6],wire:[7,6,8],correctli:[0,8],uidvalid:0,pattern:[],make_serv:3,creationflag:3,tend:4,written:[2,3,8],progress:[],neither:2,flickr:[2,3,6],email:[0,7,2,3,4,9],mysite1:0,sole:[0,7,2],kei:[2,3,4,6,8,9],gethead:3,job:[0,2,4,6,8,11],entir:[2,4],jog:[],rooftop:2,permanentflag:0,egg_info:4,addit:[],revers:[],dobb:0,startupinfo:3,trove:[],equal:[3,11],configpars:4,etc:[0,7,4,8],instanc:[],equat:7,wear:0,comment:[0,7,2,11,8],typifi:4,high_scor:2,lang:8,this_id:8,rfc2616:0,chmod:[3,9,6],solv:11,tuesdai:[],admin:[],orig:2,quit:[0,7,2,3,4,6,8,9,11],divid:[7,3,4],addition:4,novermb:[],card:[7,9],djangoponi:[9,11],json:[],yai:[],treat:3,rpclib:[],immedi:[7,2],containd:2,treasur:[],presenc:3,sock_stream:7,tranform:2,bulk:[4,11],untrack:4,saner:2,behalf:8,togeth:[],preexec_fn:3,ingredi:4,multi:[0,3],"14t17":2,plain:[0,3,4,6,8,11],harder:2,contextu:2,defin:[],wild:2,dbapi2:4,endblock:[11,6,8],layer:[0,7,4],ripe:[],site:[2,4,11,6,8],server_protocol:3,incom:[],whirl:[7,6],pyramid_chameleon:[4,8],welcom:4,parti:0,cross:11,member:11,matthew:2,auto:[],failur:[0,7,2,3,11],ansibl:[],difficult:3,published_d:11,http:[],hostnam:7,denot:3,absorb:4,upon:3,"5xx":0,student:[],auto_now_add:[],php:3,googl:[],off:[0,9,4,6,8],center:0,djagnoenv:[],well:[0,7,2,3,4,6],exampl:[],command:[0,2,3,4,6,8,9,11],filesystem:[0,8],undefin:8,latest:2,deletecom:2,distanc:7,less:[0,7,3,11],foodsafeti:2,kramer:6,half:7,djangoenv:11,paul:2,emtpi:4,tilkov:[],kcpageanalyt:2,wed:0,nullabl:[6,8],smith:0,valid:[0,11,6,8],polici:[9,6],mysite_stage_3:11,logger:4,gmt:0,branch:4,xmlrpc:[],auto_now:[],agnost:[7,8],crud:[0,11],piec:[3,8],arguabl:[],five:[0,11],know:[7,2,3,4,6,8,11],unseen:0,guid:2,password:[],recurs:2,lastbuildd:2,python2:[3,4],insert:[2,11,6],like:[],success:[],microblog:9,echo_serv:7,"4mb":[],lose:4,architectur:2,page:[],backlog:7,drop:[7,2,8],glare:11,captur:[],linux:[0,6],"export":3,mistak:4,proper:[0,7,2,3,8],home:[0,3,4,6,8,11],convert_to_south:[],transport:[],tmp:7,throughout:[],gethostbyname_ex:7,programdata:3,lead:[3,11,8],broad:[],octet:0,februari:11,leav:[2,4,8],settl:3,server_port:3,u00e9:2,investig:[0,8],published_date__lt:[],journal:[],autoincr:6,usag:[2,4,11],facilit:[],host:[0,7,3,4,6],although:[0,4,11,8],pike:2,actual:[0,7,3,4,6,8,11],world:[2,3,4,8],endcom:11,datagram:7,carrier:7,constructor:7,fals:[7,2,3,6],stab:[],remote_host:3,own:[],washington:[7,2],easy_instal:[2,4],automat:[7,2,4,11,8],uiqj579igrbrebhmjqnth8pffaz2qrj:0,guard:3,cri:[0,8],empti:[0,7,3,4,6,8,11],hellmann:[],merg:[],w3c:2,mod_python:3,val:[2,4,8],allusersprofil:3,cell1:2,transfer:[0,2,6],sqlite3:4,rcp:2,spread:2,appl:4,inner:[],wouldn:2,arg1:[11,6],biggest:11,arg2:11,"function":[],respositori:0,fuzzy_search:2,versioner_python_prefer_32_bit:3,xerox:4,bui:2,gain:[4,6],startproject:[],bookshelf:3,highest:2,count:[2,4,11],gateway_interfac:3,made:[0,7,2,3,4,6,8,9,11],view_config:[6,8],whether:[0,2],ecosystem:11,googlecod:8,displai:[],troubl:[],has_four:2,record:2,below:[7,2,3,6],pcreat:[4,8],hand:[6,8],syllabu:4,problem:[],does_not_start:2,"int":[2,3,4,6],blabber:4,dure:9,pid:[6,8],novemb:11,ephemer:[7,4],implement:[],ini:[4,6,8],pip:[2,4],workabl:11,duru:4,probabl:[3,11,6,8],sharabl:3,crummi:2,detail:[],virtual:[0,3,4],new_valu:3,other:[],lookup:[7,8],special:[2,4,11,6,8],rememb:[0,7,2,3,4,6,8,11],inspection_param:2,pricipl:11,stat:0,repeat:[],duck:2,"class":[],allowedvers:0,dewei:0,echo_cli:7,log:[0,4,11,6,8],fiddler2:0,"_queri":6,get_score_data:2,came:[2,6],reliabl:7,xmlrpclib:2,rule:[0,7,4,9,11],specifi:[2,3,8],bcryptpasswordmanag:6,models_nam:4,cgi_bin:3,htmlparser:2,decemb:[]},objtypes:{"0":"py:class"},objnames:{"0":["py","class","Python class"]},filenames:["presentations/session05","index","presentations/session07","presentations/session06","presentations/session01","outline","presentations/session03","presentations/session04","presentations/session02","presentations/session09","presentations/django_intro","presentations/session08","presentations/index","readings"],titles:["Session 05","Internet Programming with Python","Session 07","Session 06","Session 01","Course Outline","Session 03","Session 04","Session 02","Session 09","An Introduction To Django","Session 08","Course Presentations","Supplementary Course Readings"],objects:{"":{small:[10,0,1,""],python:[10,0,1,""]}},titleterms:{all:[7,2,4],code:[0,2,4],chain:4,queri:4,global:11,prefix:11,ljshell:8,row:[],categori:11,depend:6,send:7,environment:3,program:[1,10],roa:2,deactiv:4,sourc:2,string:8,util:7,strang:11,did:3,list:[3,11,6,8],iter:4,"try":[6,8],adjust:6,quick:[0,7],div:2,prepar:[3,9,6,8],machin:7,work:[9,2,3,4,6],sign:9,pass:[0,11],further:[0,7,3,11],urlpattern:[],index:[],what:[0,2,3,4,6,8,11],hide:6,compar:6,preserv:2,repli:7,asid:0,beautifulsoup:2,navigablestr:[],"new":4,"public":11,full:11,gener:2,preprar:[],here:[],logout:[11,6],address:7,path:[3,8],along:0,valu:[2,8],wait:[],search:2,credit:[],orm:4,pick:8,chang:[4,11,6,8],via:6,extra:[],apach:3,app:[3,4,6],unix:7,api:[2,8],famili:7,instal:[2,4,6,8],post:11,middlewar:3,from:3,commun:7,regist:6,next:[],few:[0,3],live:3,call:[],asset:8,type:[0,7,2],more:[2,4],idempot:0,share:8,relat:[],enhanc:[],templat:[11,8],examin:[],iii:3,socket:7,word:[4,11,6],setup:4,outlin:5,column:4,can:0,learn:[0,3],fetch:2,control:8,process:3,smtp:0,accept:7,tag:2,explor:[],incom:7,onlin:3,cours:[12,5,13],secur:6,anoth:2,geojson:2,revisit:[2,11],write:[2,3],how:6,answer:2,verifi:[2,6],config:6,needl:[],css:[11,6],updat:[0,2,3,6],map:0,resourc:0,mess:2,resolve_path:3,date:2,irrelev:4,law:2,data:[2,3,8],practic:[],bind:7,learning_journ:6,element:[],inform:[7,2],runapp:6,environ:[3,4],south:[],sesstion:[],style:8,fix:11,complex:2,persist:4,might:11,alter:[3,4],"return":[0,4,11],handl:[0,2],slate:[],safe:0,"break":[0,7,2,3,4,6,11],framework:11,hateoa:[],jinja2:[6,8],recap:3,now:11,introduct:4,addenda:[],edit:[6,8],simpl:3,troubleshoot:6,revers:2,authent:[],separ:4,debug:0,side:[7,4],domain:7,meta:3,"static":[11,8],connect:[7,9,8],our:[0,2,4,6,8,11],happen:4,beyond:2,extract:2,orient:3,out:[2,11,6,8],variabl:3,space:11,open:[],stub:8,internet:[1,2,10,7],got:[],factori:6,proxi:3,navig:11,migrat:11,fixm:[],base:[4,11],mime:0,dictionari:8,put:[7,2],geocod:2,filter:[2,6,8],mvc:[4,8],perman:4,principl:11,assign:11,urlconf:11,first:[0,3,4,6,8],render:[6,8],echo:0,hook:11,done:6,construct:7,blank:[],tame:2,miss:11,size:[],iam:9,differ:0,script:[2,3,4,8],interact:[0,4,8],system:[4,8],messag:7,stack:[7,3,11],order_bi:4,"final":2,listen:7,shell:6,consol:4,option:0,relationship:11,part:8,pars:[0,2],virtuelenv:4,matchdict:8,rss:2,serv:0,provid:[6,8],mappabl:2,structur:[4,8],project:[4,11],browser:0,comput:[0,7],queryset:[],packag:4,have:[0,4],tabl:4,django:[9,11],ponder:3,engin:2,advic:4,rout:8,ideal:[],client:7,build:[2,3,11,6],soap:2,simplifi:3,deploy:[6,8],price:[],object:[4,8],procfil:6,cgitb:3,plai:[2,11],regular:[2,11],deploi:6,"class":[2,3],url:[11,8],later:[],flow:[7,3,8],uri:0,doe:[0,8],determin:0,pattern:11,wsgi:3,show:3,text:[],syntax:6,session:[0,7,2,3,4,6,8,9,11],permiss:6,sqla:4,find:2,xml:2,access:8,locat:[],execut:[3,6],configur:[4,6,8],activ:[4,11],restaur:2,get:[7,2,3,4,8,11],express:[2,11,8],stop:0,autom:2,pop3:0,tcp:7,csrf:11,requir:6,layout:8,bar:[],organ:[],method:[0,7,4],bad:0,common:[0,11],where:[11,6],view:[0,3,11,6,8],respond:7,set:[3,9,11,6],result:[2,3,11,6],respons:[0,2,11,8],testcas:[],concern:4,databas:[4,11,6],label:2,state:[],score:[],irl:[0,2],awai:3,approach:2,attribut:2,altern:[3,4],extend:9,addit:6,last:[9,4],admin:11,wsgiref:3,instanc:[],context:[11,6,8],let:11,login:[9,11,6],whole:[],markdown:6,point:[],overview:[],dispatch:3,walk:[],modif:0,header:0,rpc:2,speak:0,authz:6,cryptactular:6,rebuild:6,three:4,compon:4,json:2,authn:6,basic:[0,4,11,8],resolut:[],great:11,togeth:[7,2],input:8,repetit:[],imap:0,present:[12,8],"case":11,look:[0,11],servic:2,properti:2,trick:[],defin:8,"while":9,outcom:8,error:[0,3],fun:2,anonym:6,real:0,pyramid:[4,6,8],engag:6,advantag:11,demo:[0,8],partner:9,develop:11,receiv:7,make:[2,4,11,6,8],shorten:11,python:[0,1,2,3,4,7,10],html:[2,11],document:[2,11],mod_wsgi:3,complet:[2,8],week:9,finish:7,http:[0,2,8],hang:[],effect:4,solut:[0,2,3],moment:11,user:[3,9,6,8],implement:[0,6],stateless:[],task:[7,11],entri:6,thought:2,exampl:[0,6,8],thi:[],choos:[2,4],model:[4,11,6,8],protocol:[0,7],just:[],rest:2,initializedb:6,polish:6,skill:7,languag:0,previous:3,web:[2,3,4],characterist:0,danger:11,blog:11,add:[2,4,11,6,8],other:[0,11],exercis:3,appli:11,enchilada:[],flowchart:[],save:4,homework:[0,7,2,3,4,8,9,11],earli:2,applic:[7,3,4,11,6],format:[0,6],read:13,big:2,bit:4,password:6,apart:11,like:0,success:3,resolv:0,server:[0,7,3],output:3,page:8,supplementari:[],captur:11,some:[2,3],revel:[3,6],transport:7,virtualenv:4,afterword:2,foo:[],refer:[],cgi:3,core:0,run:[0,7,3,11,6],journal:6,inspect:2,tdd:0,step:[0,3],prerequisit:[],wsdl:2,unsaf:0,comparison:2,about:[0,2,4,6],postgresql:6,fffffffffuuuuuuuuuuuuu:2,ack:[],manag:[],stand:11,commit:4,book:3,block:8,match:8,repair:3,own:7,dilemma:2,terminolog:4,wrap:[2,3,6],lesson:3,your:[0,7,2,3,4,6,8,9,11],question:[2,3],submit:[0,7,2,3,4,11],custom:7,start:4,heroku:6,includ:11,"function":2,form:[3,11,6,8],content:[0,11],sqlalchemi:4,link:[7,6],congratul:[7,11],pull:[],displai:2,glori:6,foreignkei:[],highlight:6,problem:3,expect:[],creat:[7,4,6],request:[0,2,11,8],wtform:8,file:[4,11],face:11,check:6,pareto:11,encrypt:6,googl:2,mashup:2,tip:3,detail:[3,11,8],scrape:2,field:[],cleanup:4,test:[0,7,2,3,6,8,11],you:[9,4,11],nice:11,repeat:2,clean:[7,4],why:[2,4],scale:6,consid:11,sql:4,index_pag:6,initialize_learning_journal_db:4,descript:[],mash:2,ignor:4,time:[0,7,2,3,4,6,11],push:11,daaaaaa:11}}) \ No newline at end of file +Search.setIndex({envversion:42,terms:{content_length:3,current_label:9,yellow:[11,8],interchang:[9,4],four:[0,9,11],database_url:[11,6],prefix:[],ronach:[],af_rout:12,skeleton:[12,4],whose:3,typeerror:9,aug:4,sorri:4,ipproto_raw:12,crisew:12,key_cel:9,concret:4,swap:3,under:[9,3],dest_dir:4,spec:3,formatd:0,digit:[0,9,10,7],everi:[0,3,4,10],risk:9,posttestcas:[],upstream:[],affect:[],vast:9,chapel:[],location_attr:[],fetch_search_result:[],cmd:0,herbert:7,imaplib:0,vector:10,get_templ:10,verif:6,auth_group:[],direct:[0,4],budget:[],second:[0,12,9,3,4,6,7],street:9,nthi:7,even:[0,3,4,10],introspect:9,next_pag:10,list_of_tcp_and_udp_port_numb:12,dbshell:11,net:0,ever:[9,3],metadata:[9,4],ipproto_tcp:12,behavior:[12,11,4,7],never:[12,3,4],here:[],created_d:[],multipli:3,"4xx":0,path:[],redeploi:6,forum:[],credit:[],webfact:0,permit:0,studi:[],portabl:3,counti:9,golden:7,pprint:[9,3],heroku_postgresql_maroon_url:6,wikimedia:[4,7],avenu:9,org:[0,12,9,3],txt:[0,12,11,4,6],unit:9,highli:[],yore:7,describ:[12,9,3],would:[0,9,3,4,6,7,10],init:[11,4],new_label:9,dnt:0,call:[],admin_password:6,typo:4,recommend:6,sitehandl:9,calc:3,strip_filt:7,tell:[0,12,9,3,4,6],fastcgi:3,relat:[],panach:7,notic:[0,12,9,3,4,6,7,10],warn:[],phone:[9,7],vpc:11,killal:11,hold:[9,10],unpack:4,must:[0,12,11,3,4,6,7,10],af_unix:12,webbrows:9,join:[0,9,3,11,10],flaskenv:[],restor:[4,6],worth:[9,4,7],conceptu:7,city_long:9,introduc:[4,7],root:[11,3,10,6],could:[0,9,3,4,6,10,11],overrid:[],defer:6,bookapp:3,give:[12,9,3,4,6,10],inlinemodeladmin:10,smtp:[],indic:[0,9,11],cautiou:9,unavail:[],want:[0,9,3,4,6,7,10,11],dele:0,end:[0,12,9,3,6,7,10],learning_journ:[],frobozz:0,classifi:[],how:[],sever:[9,3,6],env:[3,4],interview:0,verifi:[],perspect:10,updat:[],anon_1:4,recogn:[],timedelta:10,after:[9,3,4,7],superus:4,diagram:4,befor:[0,12,9,3,4,6,7,8,10],wrong:4,access_log:11,lat:9,beautifulsoup4:9,parallel:[],demonstr:[0,4,10],domin:4,third:3,classmethod:[4,6,7],authzpolici:6,wsapikei:[],credenti:[11,8],greet:0,exclud:10,alias:12,scoped_sess:4,dispar:[],green:0,urlconf:[],incorpor:[9,3,6],enter:[0,9,3,7,8,10,11],mechan:6,engine_from_config:[4,6,7],order:[9,4,6,7,8,10,11],hob7v7guwir4n1v:6,origin:[8,9,3,4],belong:[0,12,10,6],over:[12,9,4,7,8,11],govern:[0,9],becaus:[0,9,4,6,7,10,11],jpeg:0,privileg:[3,4],keyboard:0,flexibl:4,vari:[0,12,9],digest:[],fit:[],fix:[],simple_cli:0,toolbelt:[6,7],comprehend:[],better:[12,11,4,6,9,10],offic:0,drawback:[],friski:9,comprehens:[],"1xx":0,easier:[4,10,7],descend:9,them:[0,12,9,3,4,6,7,8,10],thei:[0,12,9,3,4,6,7,10],lowest:9,id73:3,safe:[],trail:3,octal:9,bang:3,promis:12,initializedb:[],rental:[],choic:[],villaini:3,walkthrough:[],bonu:[],getvalu:3,rocki:6,timeout:[],each:[0,12,9,3,4,6,10,11],debug:[],went:[0,7],webmast:0,someexamplerssdomain:9,mean:[0,12,9,3,4,6,7,10],createel:9,resum:9,doug:[],logo:7,network:[12,9,11,7],goe:[9,4,7],god:4,content:[],rewrit:10,got:[],gov:9,forth:[0,3,10],rail:0,nightmar:4,situat:[0,4,10],free:[11,8,6,7],ineffici:9,contentcol:9,kit:[],getservbynam:12,uiuc:3,proxy_set_head:11,s3cr3t:6,traceback:3,static_url:[10,7],filter:[],iso:9,isn:[0,3,10,7],subtl:[],confus:[12,7],"__or__":12,rang:[0,10,7],render:[],independ:[0,4],wast:10,rank:[],restrict:11,hook:[],instruct:[12,3,4],alreadi:[0,12,9,4,6,7,10,11],wrapper:[12,9],agre:3,fantast:4,primari:[4,7],top:[9,4,10,6,7],"0x1103e38d0":4,sometim:[0,4],imap4rev1:0,necessarili:3,master:[8,11,4,6],too:[0,12,9,3,4,7,8,10],tom:4,my_view:7,namespac:9,tool:[0,12,9,3,4,6,8],setuptool:4,took:[4,10],auth_permiss:[],incur:[8,6],cdata:9,next_sibl:[],inspection_data:9,val_cel:9,target:3,keyword:[9,6,7],provid:[],tree:[4,6],matter:[9,6],arriv:7,minut:[0,12,11,7],latitud:9,rad:12,fashion:[9,3],bs4:9,walkscor:[],modern:4,mind:[],mine:0,elem:9,raw:0,af_sna:12,pylon:4,increment:[],"__main__":[9,3,6],seen:[0,12,9,3,4,6,7,10],seem:[3,6],django_blog:10,seek:[4,6],strength:[],herokuapp:6,latter:4,thorough:[10,7],"0x1103e3fd0":4,shelf:4,transmit:4,hypertext_transfer_protocol:0,simplifi:[],endfor:[10,6,7],sock_dgram:12,though:[0,9,10,6],usernam:[0,11,8,6,7],guess_typ:0,id__in:[],minask:[],regular:[],alan:[4,7],bsd:12,models_id:4,typ:12,maria:[12,9,3],tradit:7,don:[0,12,9,3,4,6,7,10,11],doc:[0,9,4,10,6],doe:[],declar:[3,4,10,7],unchang:[],passwordfield:6,section:[0,3,4,7],dot:7,asid:[],opposit:7,random:6,syntax:[],dyno:6,radio:[8,7],protocol:[],involv:6,absolut:7,exactli:[0,12,7],menu:[0,3],explain:[3,4],response_head:3,apach:[],restaur:[],kessler:[],disert:[],busi:9,title__icontain:[],scgi:3,tzinfo:10,folder:[12,3,4,6,7],resolve_uri:0,patter:7,nasti:9,stop:[],amazon:[11,8],reconstruct:3,bat:[],bar:[],ietf:[0,3],baz:[0,9],buffsiz:12,reload:[0,11,3,10,6],told:[10,6],steal:[4,6],bak:11,title_info:3,respond:[],get_const:12,get_inspection_pag:9,charfield:10,disucss:[],serve_forev:3,result:[],respons:[],fail:[0,12,10,6],hash:[3,6],best:[9,4,6],awar:6,said:[],pythoncert:[4,7],wikipedia:[0,12,9,4],urllib:9,yet:[0,12,4,6,7],figur:[12,3,4],score:[],outstand:7,simplest:11,awai:[],approach:[],attribut:[],accord:9,extend:[],weak:[],logged_in:6,extens:[0,9,6],html5:7,toler:9,"__unicode__":10,pull:[],protect:0,accident:12,expos:3,howev:[3,4,10,7],against:[0,3,6,7],logic:[4,6,7],countri:9,browser:[],com:[0,12,9,3,4,6,7,8,10,11],compromis:[],get_appset:[4,6,7],assur:12,can:[],inher:9,loader:[9,10],trust:[11,4],assum:[12,9,4],test_details_only_publish:10,speak:[],bathroom:[],chrome:0,add_rout:[4,6,7],"125px":9,been:[9,3,4,6,7,10],much:[0,12,9,3,4,7,10,11],interpret:[0,12,9,3,4,7],interest:9,futur:12,raise_for_statu:9,tini:[],quickli:[0,4,10],life:[0,9],suppress:10,xxx:3,setup_log:[4,7],telnet:12,ani:[0,12,9,3,4,6,7,8,10,11],matchpath:3,"catch":[0,9],build_env:3,ugli:0,ident:6,servic:[],properti:[],commerci:4,manytomanyfield:10,calcul:[9,3],apikei:[],neat:[0,10],content_col:9,"_set":[],spawn:11,seven:0,af_appletalk:12,shebang:3,toolkit:0,kwarg:[9,10],conf:[11,10],fnhg:0,varchar:4,tediou:[9,4],fedorahost:9,conn:[0,12],datetim:[9,10],perform:[3,4,10,7],suggest:[0,9,6],couchdb:4,contains_word:9,craigslist:[],complex:[],split:0,version_str:3,complet:[],rfc822:0,nic:12,blue:11,hang:[],xyzzi:0,ervic:11,nix:3,rais:[0,12,9,3,10],kcscript:9,howdi:7,editcom:9,"548kb":4,thu:[12,3],hypothet:4,inherit:[3,4,7],client:[],thi:[],endif:[10,6,7],gzip:0,programm:9,everyth:[0,11,4,6,7,10],moreov:[0,9],left:[8,11,4,6],powerus:8,identifi:[0,9,3,11,7],just:[],photo:[9,3],laptop:[],human:[0,9,7],mysql_length:4,languag:[],enlighten:[],alchemi:4,easi:[11,4,6,7,9,10],had:[9,11],shout:7,"8bitmim":0,httpfound:[6,7],els:[0,9,4,6,7,10],hat:0,gave:4,opt:0,book:[],race:[6,7],istal:11,mayb:3,preserv:[],parse_var:4,render_markdown:6,bbox:9,elabor:6,httprespons:10,apart:[],shoulder:[],imap4_port:0,response_method_not_allow:0,specif:[12,9,3,4,6,7,10],arbitrari:[12,4,6],reload_templ:4,manual:[11,4,10],hung:0,install_requir:4,underli:12,www:[0,12,9,3],right:[0,9,3,6,7,10,11],old:4,"0db8":12,feel:[9,10,7],nfrom:4,intern:[0,3],successfulli:[3,4],craiglist:[],transmiss:[0,12],total:[9,3,10,6],djangoproject:10,bottom:[12,9],subclass:[],track:[9,11],ssh2:[],exectut:4,overcom:3,condit:[0,3],foo:[],fieldstorag:3,localhost:[0,11,3,6,7,10],mailgat:0,jsonp:7,bold:9,oracl:4,confer:[],colleg:[],bolt:9,repositori:[12,9,3,4,6,7,8,11],post:[],"super":0,simpletestcas:[],postgresql:[],startapp:[],surround:[11,7],"0x105849b90":7,distinct:0,dinner:0,log_buff:0,extract_restaurant_metadata:9,done:[],sept:9,produc:[12,9],curiou:[],"float":9,encod:[0,9,6],bound:[12,4,10],curios:[],down:[9,6,7],creativ:[4,7],bufsiz:3,contrib:10,storag:[0,4],git:[8,11,4,6],deal:12,utmcsr:0,clean_data:9,support:[0,9,3,4,6,7,10,11],hypermedia:[],fight:10,avail:[12,11,4,6,7,9,10],width:9,reli:6,request_method:[3,6],editor:[9,3,10],overhead:9,get_address_info:12,rcpt:0,fork:[0,9,8],head:[0,12,9,6,7,10],medium:[12,9],offer:[11,3,4,10,7],forc:9,hear:12,icmp:12,"true":[0,12,9,4,6,7,10],absent:3,attr:[9,7],type:[],maximum:12,until:[12,11,4],url:[],anew:[],absenc:3,fundament:10,emit:3,nnn:[],situatin:[],classic:10,af_decnet:12,request:[],"abstract":4,decrypt:0,proven:4,exist:[0,11,3,4,6,7,10],glanc:[],check:[],assembl:7,when:[0,12,9,3,4,6,7,8,10,11],role:[8,7],jone:0,test:[],webob:4,roll:6,realiti:9,node:[],intend:[12,4],af_unspec:12,urllib2:9,djangocon:[],intens:9,intent:[],iterm:3,receiv:[],longer:[12,10],bullet:6,anywher:3,pbkdf2:6,wtttzy:6,push:[],serious:9,backward:[],osx:[0,6],concept:[12,4,6],skip:4,consum:[12,9],focus:[],invent:[9,4],restaurant_data_gener:9,supplement:[],skim:[],row:[],depend:[],zone:11,flask:[4,10],graph:7,readabl:[0,9,3,10,7],unpython:4,a0004:0,a0005:0,certainli:7,a0001:0,a0002:0,a0003:0,addon:6,aspx:9,query_str:3,isinst:9,sourc:[],string:[],congest:12,price_span:[],lru:4,"0mb":[],kitten:4,octob:10,ydood:7,subprocess:3,brows:7,contenttyp:10,administr:3,level:[9,4,10,6],did:[],dig:7,ipproto_udp:12,assertequ:10,item:[9,3,4,10,7],team:4,quick:[],imap4:0,dir:[0,12],declarative_bas:4,upper:7,slower:12,thin:12,lstrip:3,htm:9,discover:10,sign:[],restkit:[],cost:6,port:[0,12,11,3,6,8],appear:[11,6,7,8,9,10],scaffold:4,hellmann:[],identityset:4,current:[8,11,3,4,12],rst2xml:4,"3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4":6,response_bodi:3,redirect:[0,9],deriv:3,urlopen:9,gener:[],unauthor:9,explicitli:[3,4],address:[],stem:[],wait:[],box:11,mysit:[11,10],shift:0,queue:12,related_nam:10,bob:[0,4],commonli:12,ourselv:[0,6],ipc:12,semant:12,session1:12,extra:[],modul:[0,12,9,3,4,6,10],prefer:[0,3],repoz:4,seattl:9,visibl:10,marker:[9,7],http_:3,smallish:12,market:[9,4],types_map:0,prove:[11,6],univers:[],visit:[10,6,7],todai:[],live:[],criteria:[0,4],msg:12,black:11,tightli:3,chapter:4,maxask:[],peopl:9,claus:[],asserttru:10,walkabl:[],oregon:8,visual:[0,9],appendix:0,accept:[],obj:[4,7],effort:[9,10],content_typ:[3,10],appraoch:10,prepar:[],pretend:0,uniqu:[9,4,11,6,7],inspection_typ:9,"0002_auto__add_categori":[],purpos:[0,3,4,6,7],boilerpl:4,heart:10,input1:9,encapsul:10,stream:[12,4],predict:0,agent:[0,3],topic:7,critic:[],app_factori:4,loginform:6,occur:12,entryeditform:6,alwai:[0,12,9,3,4,6,11],lxml:9,multipl:[3,4],winter:[],charset:[0,7],write:[],anyon:[3,6,7],pure:9,tild:9,xhtml:0,tbodi:9,map:[],product:[11,4,6],max:[0,6,7],clone:[8,11,12,4,7],appnam:[],mac:0,"4th":9,all_us:[],date:[],underscor:[],data:[],goal:[9,4],classroom:4,allowed_host:11,inspection_end:9,gethostnam:12,practic:[],secur:[],explicit:7,predic:6,mangl:0,inform:[],"switch":[8,4],cannot:[12,3,7],combin:[9,3,4,6,7],printenv:3,callabl:[3,10,7],talk:[0,12,11,4,7],shield:[],ydwoh:7,objectdoesnotexist:10,geojson:[],ttl:9,gitignor:4,still:[0,9,4,7,8,10,11],mainli:10,dynam:[0,9,3,7],config_uri:[4,6,7],group:[12,11,3,4,8,10],monitor:11,"4z6rvnhte21mpljw5veive0eg57gn":6,concis:[],authorization_polici:6,sec10:0,platform:[11,6],window:[0,9,3,4,6,8,11],curli:7,mail:0,main:[0,9,4,6,7],non:[0,8],noj:[],mapper:[],profession:[],killer:10,initi:[0,11,3,4,6],answer:[],safari:0,some_appl:3,now:[],discuss:[12,3,4,7],nor:10,term:[3,4],name:[0,12,9,3,4,6,7,8,10,11],config:[],interpr:4,server_softwar:3,magazin:7,path_transl:3,januari:10,confid:9,compil:[9,6],domain:[],transactiontestcas:[],replac:[9,11,10,6,7],individu:[12,4,10,7],continu:[0,12,9,3,4,6,8],protocol_vers:3,wsgi_1:3,proxy_add_x_forwarded_for:11,keypair:8,sponsor:10,begun:[],year:9,operand:3,dispos:8,shown:[],accomplish:[0,8],kingcounti:9,space:[],profit:8,profil:12,formula:[],sensor:9,correct:[0,12,11,10,7],integr:[],tmpl:7,myproject:6,earlier:[0,4,6],pseudocod:0,state:[],migrat:[],ch05s03:0,envelop:9,argv:[4,6],unpublish:10,myblog_test_fixtur:10,argn:6,brower:[],"byte":[12,9],toggleshow:9,search_param:[],care:[0,12,9,3],sign_in:6,setdefault:9,question:[],default_permiss:6,syndic:9,refus:12,thing:[0,9,4,6,7,8,10],place:[12,11,3,4,6,7,8,10],djangodb:11,router:3,principl:[],think:[12,3,4,6,7],frequent:4,lambda:7,oper:[12,11,3,6,7,10],info:[12,9,3,4,6],directli:[12,9,4,11,7],template_nam:10,onc:[0,12,9,3,4,6,7,8,10,11],arrai:9,yourself:[0,9,11],acquisit:[],fast:4,business_address:9,open:[],size:[],urin:0,given:[0,12,9,4,7,10],sheet:7,convent:0,bookmark:[],imap4_ssl_port:0,eachoth:4,citi:9,paramt:9,lognam:3,averag:9,conveni:[11,4,10],friend:6,prettier:7,hue:9,grant:[3,6],especi:[9,3],memo:3,copi:[0,9,3,6,7,8,10],huh:0,artifact:4,github:[0,12,9,3,4,6,7,8],mostli:[0,12],attempt:[12,11],than:[0,12,3,4,6,7,10],png:0,serv:[],were:[11,9,4,10,12],posit:12,supplementari:[],seri:[9,4],pre:9,internet_protocol_suit:12,sai:[0,9,3,4,6,10],angel:3,downei:9,pro:12,argument:[0,12,9,3,4,6,7,10],doctyp:[0,9,10,7],rent:[],notimplementederror:0,django:[],saw:4,dbapi:[],shtml:0,engin:[],destroi:[11,10],ipproto_:12,note:[0,12,9,3,4,6,7,10],data_list:9,wretch:3,take:[0,12,9,3,4,6,7,8,10,11],breadth:[],bcrypt:6,noth:[9,3,4,6,7,10,11],channel:[0,9,4],begin:[0,12,9,3,4,6,7,8,10,11],sure:[12,9,4,6,7,8,11],pain:[4,6],trace:4,normal:[9,4],buffer:[0,12],price:[],pair:[11,9,4,10,7],homepag:[9,8,11],run_cgi:3,renam:[],egg:4,utmccn:0,later:[],drive:[],"8mb":4,quantiti:9,create_al:4,link:[],shortnam:6,preambl:3,gracefulli:0,shot:9,show:[],my_index:4,constitu:7,ground:[],xml:[],onli:[0,9,4,6,7,8,10,11],slow:12,codehilit:6,transact:[12,4,6],enough:[0,9,4,6],dict:[12,9,4],test_list_only_publish:10,analyt:6,startswith:[12,9],nearli:4,variou:[4,7],row1:9,mung:0,clang:4,this_text:9,repo:11,ssl:[0,11],tailor:0,ssh:[12,11,8],"0002_categori":10,utf:[0,9,7],requir:[],reveal:3,entryfactori:6,yield:9,authenticated_userid:6,draft:0,where:[],summari:9,wiki:[0,12,9],n10:7,concert:10,seat:9,is_staff:10,lng:9,web_application_hybrid:9,detect:6,review:[0,12,11,3,4,6,7],enumer:6,label:[],getattr:12,between:[0,12,11,3,4,10],"import":[0,12,9,3,4,6,7,10,11],across:[12,9],parent:[3,4],elladan:12,screen:[],tut:0,cycl:[4,7],portion:[3,7],come:[0,9,3,4,6,7,10,11],sketchi:9,img:0,region:[11,8],tutori:[10,7],wherin:4,improv:[0,8,3,4,6],among:[12,9,4,7],execute_from_command_lin:[],intitalizedb:4,color:[9,6],unittest:[],inspir:10,"__class__":[],exploit:3,imad1:0,artu:0,fallen:10,coupl:[12,9,3,4],west:[11,8],hardli:9,mark:6,evangelista:[4,7],workshop:[],addit:[],valueerror:[9,3],extract_list:[],avian:12,setgid:11,intval:9,emphas:[],state_long:9,doesn:[0,12,11,3,4,6,7,10],docxmlrpcserv:[],i18n:10,repres:[0,9,4,10,7],former:[],those:[0,11,3,4,9,10],"case":[],interoper:9,cast:4,invok:[],inspection_pag:9,scum:3,python_web:[4,7],ehlo:0,zipcod:9,advantag:[],ctrl:0,canon:[12,3,8],worri:[12,6],blah:0,reqeuest:3,smalltalk:4,data_div:9,develop:[],proto:12,cc0:[4,7],same:[0,12,9,3,4,6,7,10,11],epoch:9,html:[],pai:[9,11,10,6],document:[],helpfulli:[],week:[],finish:[],closest:8,nest:9,assist:[3,4],driver:8,someon:6,driven:[0,7],capabl:3,http_host:3,add_rount:6,mani:[0,12,9,3,4,6,7,10,11],extern:11,title__contain:[],appropri:[12,3,6,7],reliev:11,"__acl__":6,markup:6,without:[12,9,3,4,7,11],execut:[],excel:7,resp:[0,9,10],googleapi:9,interrupt:0,full_clean:[],kill:[0,11,4],aspect:[11,4,6,7],flavor:9,nam:12,concentr:10,heffalump:12,versu:[],blog_detail:10,getlist:3,hint:0,except:[0,12,9,3,4,10],param:[9,6],apache2:[],blog:[],ws_score:[],pile:9,blob:6,exercis:[],vulner:[0,10],inspection_path:9,real:[],tranmiss:12,around:[12,9,3,6,7,10],read:[],psd:9,makin:7,violation_point:9,traffic:0,mon:[0,9],redqueen:0,postal:9,socket_tool:12,intel:0,whitespac:[0,9],integ:[12,4,6],server:[],benefit:[0,12],either:[0,9,7],cascad:7,django_settings_modul:11,output:[],manag:[],fulfil:6,ctx_instanc:10,ipproto_ip:12,assertionerror:[],freez:11,easili:[4,7],definit:7,"2xx":0,exit:[11,4],posgresql:6,notabl:0,backlink:10,refer:[],af_inet6:12,httpresponseredirect:10,power:[12,11,4,6,7,8],imposs:4,inspect:[],broken:[0,9],great:[],"__name__":[9,3,6],src:[9,7],deflat:0,central:4,meaning:4,acl:6,microframework:4,fell:10,srv:3,bone:7,act:[9,3,11],schemamigr:[],mytempl:[4,7],routin:9,effici:[],consid:[],status_cod:[9,10],console_script:4,isoformat:9,inbox:0,strip:[9,7],insuffici:0,igmp:12,loc:[],buffer_s:12,httpnotfound:[6,7],her:[10,6],set_authorization_polici:6,aren:[4,6],lon:[],strict:9,interfac:[0,12,3,4,6],ipv4:12,lot:[0,4,10,7],ipv6:12,"0x10b075ed0":4,hei:12,svn:7,handle_request:3,tupl:[12,9,10],categor:[0,10],congratul:[],freddi:7,notat:[9,7],dirti:4,possibl:[12,9,3,10,7],"default":[12,11,3,4,6,7,10],start_respons:3,connect:[],gone:4,"520px":9,uid:0,certain:[0,12,9,4],deep:6,strongli:6,intro:9,omgwtf:9,fill:[9,3,6,7,8,11],again:[0,12,9,3,4,6,7,10,11],api_url:[],compel:4,field:[],wai:[0,9,3,4,6,7,10,11],compet:9,copiou:[],pathnam:[0,12],juic:7,poor:[],zip_cod:9,sequenc:0,symbol:[12,7],pr0084952:9,briefli:7,peak:10,transceiv:12,pool:[],reduc:4,json_output:[],"1b6":0,wife:[],directori:[0,3,4,6,7,10],descript:[],potenti:[10,6],south_migrationhistori:[],escap:6,cpu:11,unset:3,represent:[12,9,4],forget:6,roi:9,illustr:8,forbidden:6,lack:10,month:10,scalar:4,runserv:[11,10],abil:[0,11,4,10],cameron:[],follow:[0,12,9,3,4,6,7,8,10,11],disk:[0,9],children:9,dsn:0,wish:[3,4,6],laboratori:[],script_nam:3,af_inet:12,articl:[4,6,7],tail:6,norm:0,hill:[],sound:10,liter:4,chameleon:7,far:[12,9,4],faq:0,mcdonough:[],util:[],candid:9,fan:[],fam:12,veri:[0,12,3,4,6,7,10],ticket:6,condition:10,simple_app:3,utmcmd:0,list:[],last_nam:7,adjust:[],featurecollect:9,stderr:[0,3],small:3,everth:9,neighborhood:9,your_script:[],sync:[],past:[9,4,6],design:[12,9,3,4,6,7,10],pass:[],further:[],by_nam:6,sud:9,sum:[9,7],abl:[0,9,3,4,6,7,10],brief:[],delet:[0,9,6],version:[0,9,3,4,6,10,11],tickl:[],primary_kei:[4,6],intersect:7,deepli:9,"public":[],contrast:[],outcom:[],craigslist_result:[],hasn:9,full:[],themselv:9,berkelei:[],arg:[3,4,10],shouldn:[],"0001_initi":[],trunk:7,goodby:0,strong:[6,7],modifi:[0,9,10],rfc3875:3,valu:[],search:[],ahead:[12,9,3,6,7],post_id:10,"0x1005b8b40":12,popen:3,prior:6,doctest:[],action:[12,9,4,6,7,8,10],add_static_view:[4,7],via:[],requestcontext:10,transit:[],is_authent:10,dj_database_url:11,filenam:[0,10],href:[3,10,6,7],famili:[],establish:[12,9],select:[0,8,11,4],hexadecim:9,has_two:9,use_kei:9,internation:10,stdout:[12,3,4],frontmost:11,taken:[9,8,6],id_find:9,minor:10,assertcontain:10,flaw:7,desir:[],load_inspection_pag:9,mozilla:[0,7],flag:[0,12,6],addcom:9,particular:[11,4,10,6,7],known:[12,9,6],max_length:10,cach:[0,4,10],none:[0,12,9,3,4,6,7,10],endpoint:[0,12,9],puzzl:3,hour:[0,12,10,7],hous:[],dev:[11,3,6],venusian:4,remain:[10,6],paragraph:9,learn:[],abandon:[],rst2html:4,def:[0,12,9,3,4,6,7,10],ndate:12,assertnotcontain:10,prompt:[12,3,4],useabl:8,scan:[4,7],challeng:[0,10,6],registr:[10,6],share:[],templat:[],minimum:11,explor:[],phrase:[4,7],login_form:6,heroku:[],uncheck:[],mai:[0,12,11,3,4,6,10],secret123:11,awkward:10,bookdb:3,rather:0,anoth:[],comfort:7,divis:3,yipeee:[],"__init__":[4,6,7],csv:[4,7],simpl:[],css:[],unabl:6,"545kb":4,resourc:[],referenc:7,sneak:10,ff0000:9,okai:[0,4],associ:[],data_row:9,"short":[3,10],footer:7,onto:9,author:[3,10,6],country_long:9,caus:4,doesnotexist:10,sesstion:[],checkbox:[11,7],help:[0,12,9,4,7,8,11],"912ft":[],mainthread:[4,6],hypertext:[],stackoverflow:0,soon:[12,11,7],listval:3,held:[],through:[0,9,4,6,7,8,11],pane:0,inspection_row:9,paramet:9,style:[],makemigr:10,myblog:10,psycopg2:[11,4,6],dbname:11,pserv:[6,7],highscor:9,mysite_stage_2:10,might:[],pce:7,tri:[10,7],good:[0,9,3,4,6,10,11],pollut:4,cew:[8,4],framework:[],maildrop:0,mysite_stage_1:10,adventur:9,gethostbynam:12,msg_part:12,httplib:[],eventu:[9,4],unlik:10,authent:[],test_unicod:10,micro:11,achiev:[9,10],http_server:0,compris:4,found:[0,9,3,4,7,10],unicod:[9,4,10,6,7],button:[11,8,7],base_dir:[11,10],weight:9,hard:[4,6],idea:[0,12,9,4,11],procedur:9,realli:[0,12,9,6,7,10],expect:[],beyond:[],orient:[],standard:[0,12,9,3,4,6],some_valu:3,ftp:12,installed_app:[],shortcom:[],author_nam:10,publish:[3,4,10],research:4,bubbl:7,etag:0,health:9,authnpolici:6,print:[0,12,9,3,4,6,7],zaccagni:9,uwpc:[11,4,7],"__utmz":0,postgr:[11,6],proxi:[],uncommit:4,advanc:[0,11],new_model:4,differ:[],cooki:[0,6],reason:[0,9,3,10,7],fieldnam:[],believ:[],ask:[0,12,11,4],"__utma":0,earliest:9,recv:[0,12],"19t01":6,bash:[3,6],render_to_respons:10,applict:3,launch:11,by_id:[4,6,7],perhap:[0,9,7],root_urlconf:[],as_p:10,getelementsbytagnam:9,find_al:9,assign:[],request_protocol:3,"85a3":12,feed:9,oserror:3,set_authentication_polici:6,obviou:0,prevent:[11,3,6],c5zwspzpwwsq:11,has_two_td:9,number:[0,12,9,4,6,7],placehold:[0,7],is_tr:9,construct:[],blank:[],miss:[],fanci:[],guess:0,"5th":9,pbkdf2passwordmanag:6,least:[9,3,4,7],getservbyport:12,proxy_pass:11,auth_group_permiss:[],statement:4,zeromq:[],foreignkeyfield:10,store:[9,4,6],schema:10,luckili:[0,9,4,6,7],parc:4,option:[],relationship:[],behind:[11,9,4,10],echo_socket:12,part:[],pars:[],fall:[4,10],fenced_cod:6,login_redirect_url:10,fred:4,king:9,kind:[0,12,9,3,6,7],grew:0,remot:[12,9,4,10,6],gotten:10,remov:[12,4,6],violation_red_point:9,"97b":9,str:[3,4],relative_to:6,consumpt:[],aclauthorizationpolici:6,payload:0,"_socketobject":12,expir:6,published_date__exact:10,larri:4,"null":[9,10],verson:10,imagin:[6,7],built:[0,9,3,4,6,7,10,11],lib:[0,3,4],remote_addr:[11,3],self:[3,10,6],click:[11,3,7,8,9,10],also:[0,12,9,3,4,6,7,10,11],build:[],cgi_1:3,textareafield:7,brace:7,pubdat:[9,10],http_user_ag:3,distribut:4,exec:11,lighttpd:3,kai:4,previou:[0,9],reach:[12,11],chart:[4,7],unappli:[],most:[0,12,9,3,4,6,7,10],plai:[],wahoo:0,plan:6,charg:8,addr:[0,12,9],mymodel:[4,6,7],cover:[0,9,4,6],http_server_at_hom:0,usual:[12,4,10],awesom:10,wsgi:[],hyper:0,latlng_tmpl:[],v12:0,getcom:9,particularli:[9,6,7],font:9,fine:[0,9,7],find:[],use_param:9,giant:3,firewal:11,nosql:4,pretti:[0,9,4,10],solut:[],"172kb":4,factor:4,smtplib:[],darwin:4,hit:9,unus:4,"__file__":3,resent:12,famous:3,mainten:9,rest:[],"3xx":0,restart:[0,11,3,6,7],template_dir:10,rfc:[0,3],common:[],nowher:4,wrote:[9,10,6],certif:7,set:[],dump:9,sep:9,overwhelm:4,"0x1103e3f50":4,af_ipx:12,see:[0,12,9,3,4,6,7,10,11],bare:7,sea:[],overboard:8,reserv:[0,12],uw_pc:[],someth:[0,9,3,4,6,7,10],particip:[],topmost:12,won:[0,11],frontendtestcas:10,subscript:7,experi:[],nope:[],modeladmin:10,relev:4,javascript:[9,7],isol:[9,4],mailbox:0,"31m":6,cgi_sum:3,popul:[9,10],both:[0,12,3,4,6,7,10],hiddenfield:6,delimit:0,boto:11,lignt:[],respawn:11,unstag:4,author_id:[],load:[0,9,3,6,7,10,11],simpli:[0,9,3,4,6,7,10,11],point:[],instanti:[9,4],header:[],route_url:[10,6,7],littl:[3,6,7],suppli:[9,3,11,6],batteri:9,comput:[],desktop:8,xkcd:0,backend:3,list_view:10,damp:3,get_geojson:9,hoohoo:3,sinc:[12,9,3,4,7,8],retr:0,secret:[3,6],damn:9,wherein:[9,3,8,10,7],rstpep2html:4,"55c0287d4ef21f15b97eb1f107451b88b479bff":6,inspection_closed_busi:9,ram:11,versa:[],fire:[0,3,4,6,7,10],imag:[0,11,8,10,7],cryptacular:6,append:[0,9,3,4,6],coordin:[9,4],understand:[0,6],func:3,demand:9,educ:3,remote_us:3,look:[],road_long:9,solid:[9,10,6],add_walkscor:[],histor:[],"while":[],"54f7e4d":6,abov:[0,12,9,3,4,6,10],error:[],fun:[],fixtur:10,everyon:6,loop:0,readi:[0,12,9,4,6,7,11],technolog:[12,6],unintuit:9,readm:[3,4],itself:[9,3,4,11],spong:3,limit:[12,9],"3f80f":0,decor:7,minim:0,remote_id:3,id__exact:[],decod:9,onclick:9,zope:4,conflict:[9,4],b59b7c3:6,communc:12,argpars:9,td_children:9,moment:[],temporari:7,user:[],robust:6,stack:[],recent:[0,4,10],lower:[12,9,7],task:[],older:[],find_packag:4,entri:[],spent:12,doodi:7,pickl:4,person:[12,6,7],expens:[12,3,6],elev:0,connnect:12,cedar:6,macintosh:0,tast:[],spend:[12,7],total_result:9,propos:[],explan:[0,11],unseen:0,first_nam:7,csrf_token:10,make_wsgi_app:4,collabor:8,"__path__":4,shape:[],session08:[],mysql:4,session05:0,session04:12,session07:9,sidebar:9,session01:12,session03:[],session02:[0,7],a0006:0,restructuredtext:4,shortcut:10,global_config:[4,6,7],populate_obj:[6,7],armin:[],appli:[],input:[],cgi_2:3,bin:[9,3,4,6,7],bim:9,march:[],format:[],response_ok:0,folk:3,server_socket:12,mazon:11,formal:[0,3,4],httpexcept:7,leisur:[],ipproto_icmp:12,docutil:4,altough:[],manifest:4,collect:[9,4,7],princip:6,popular:[9,3,10,6],awsus:11,often:[0,12,9,4],fake:[],some:[],back:[0,12,9,3,4,6,7,10,11],global:[],understood:12,uidnext:0,sampl:[9,6,7],staticfil:10,ljenv:[4,6,7],formatted_address:[],djangoblog_uwpc:[11,8],cgihttpserv:3,plenti:[],quot:9,pep:3,id3:3,per:[0,12,9,6],pem:[11,8],larg:[9,3,8,11],slash:3,machin:[],intial:0,run:[],authtktauthenticationpolici:6,simple_serv:3,viabl:4,step:[],crlf:0,detail_view:10,subtract:3,"resum\u00e9":9,usa:9,constraint:[],materi:[],memori:9,"0x100563c90":12,business_nam:9,exc_info:3,path_info:3,two:[0,12,9,3,4,6,7,10,11],miracl:0,plethora:10,within:3,ensur:[0,12,11,4,6,10],html5shiv:7,inclus:9,span:6,errno:3,sock:[0,12],stylesheet:[10,7],"long":[0,12,9,3,4,6,11],adjac:[],includ:[],suit:[],forward:11,inspection_start:9,term_program:3,properli:[0,9,8,7],login_url:10,repeatedli:[12,4],poster:[],ahhh:9,verb:0,pwd:4,game:7,translat:10,atol:6,atom:9,line:[0,9,3,4,6,7,10,11],translationstr:4,utc:10,url_for:[],consist:[0,9,3],latlng:9,http404:10,similar:[0,9,3,4,10],clear:[0,12],sesson:0,constant:12,parser:9,chao:[9,6],ws_descript:[],lectur:[],syncdb:[],gecko:0,response_not_found:0,titl:[0,9,3,4,7,10],xb2:[],sqlclear:[],nav:7,librari:[0,12,9,3,4,6,7,11],nice:[],llvm:4,mongodb:4,plug:0,elsewher:[12,6],drag:9,csrftoken:0,longitud:9,esr:0,index_pag:[],algorithm:6,vice:[],mimetyp:0,rst2latex:4,parse_sourc:9,sign_in_out:6,depth:[],stub_view:10,fresh:9,hello:[0,3,7],oop:4,getaddrinfo:12,sqlserver:4,edu:[12,3],feedpars:9,privat:[11,8],a_pag:9,bathtim:7,wizard:11,friendli:9,send:[],becam:9,runlevel:11,aris:4,sent:[0,12,9,3,4,6,7,10],charlesproxi:0,rollback:4,liveservertestcas:[],spool:0,text__contain:[],add_address:[],createsuperus:[],runnabl:3,recip:6,magic:7,joel:6,geograph:[9,8],hive:3,"try":[],rfc5321:0,book_id:3,entry_point:4,prompttextbox:9,hasnochildren:0,pleas:[9,4],impli:3,smaller:12,natur:[10,7],focu:[],video:[],download:[8,4,7],odd:7,html5lib:9,client_address:12,compat:[3,4],index:[],turn:[0,4,6,7],poke:3,resembl:7,cell:9,whatev:[12,7],led:10,bylin:10,len:[0,12,9,3,4],bodi:[0,9,3,4,6,7,10],loadapp:6,intercept:6,let:[],ubuntu:11,myhost:3,becom:[9,4],fifteen:10,pgbackup:6,convert:[9,4,11,6,7],didn:4,convers:10,ctx:10,stringval:3,rdf:9,aliv:[0,12],typic:[3,4],purplemattfish:9,maker:7,chanc:10,firefox:0,ago:[12,6],parse_request:0,win:0,foundat:10,gatewai:[11,3],apt:11,ran:[0,4,10],api:[],mashup_1:9,regexp:[3,10,7],usasearch_config:9,apa:[],cloud:[11,8],djangoblog:11,from:[],zip:9,commun:[],doubl:[],upgrad:6,next:[],websit:[9,4,10,6,7],few:[],doubt:[],usr:[3,4],lock:6,manytomani:10,remaind:3,sort:[9,10],my_map:9,rich:10,validationerror:[],ipoac:12,babi:7,"__call__":10,train:[4,7],somesecret:6,categorytestcas:10,account:[11,8,7],chdir:11,retriev:[3,7],scalabl:4,alia:10,alic:6,stroke:[],housenumb:9,setuid:11,tag:[],universal_newlin:3,inspection_domain:9,meet:[],fetch:[],thie:[],control:[],sqlite:[11,4,6],tar:4,process:[],mdash:10,sudo:[11,4],uwpcedb:11,high:[9,4],af_:12,tab:[0,9,8],onlin:[],serial:9,cache_max_ag:[4,7],gcc:4,cewing_socket:12,sit:[],appendchild:9,degre:11,client_socket:12,pyramid_jinja2:7,copyright:4,preformat:6,instead:[0,11,4,6,7,10],chri:[],stand:[],delai:4,initialzedb:6,attend:[],other_sess:4,"6mb":4,hazard:10,class_:[],attent:[10,6],tier:[11,8,6],philosophi:11,physic:[12,7],essenti:11,add_al:4,bind:[],correspond:[12,3],element:[],issu:[11,10],webroot:0,chief:6,prettifi:9,allow:[0,12,9,3,4,6,7,8,10,11],sendal:[0,12],elif:7,elig:8,creation:10,move:[0,12,9,4,10],utcnow:10,belltown:9,bunch:12,outer:[],verify_password:6,"0x10046cec0":12,infrastructur:6,pr0001203:9,bye:0,recept:12,greater:[],snoopi:[],handl:[],demoenv:4,spell:7,dai:[0,7],auth:[10,6],mention:[],httplib2:[],close_fd:3,front:[11,10],"8a2e":12,is_inspection_data_row:9,mashup_:9,all_book:3,blog_index:10,somewher:[6,7],anyth:[9,4,6],edit:[],entrycreateform:[6,7],nameerror:[0,3],soupenv:9,februari:10,mode:4,batch:4,beneath:6,street_address:9,pygment:6,item_templ:3,view_nam:10,bump:0,sessionmak:[4,7],violation_descr:9,meta:[],"static":[],brittl:9,annot:[],wander:3,special:[9,4,10,6,7],out:[],variabl:[],influenc:10,defend:[],facto:9,categori:[],m2m:[],suitabl:6,rel:[10,7],rec:9,leverag:6,ref:10,cwd:3,red:0,clarifi:4,umbrella:9,insid:[0,12,9,3,4,10],workflow:8,frank:7,manipul:[3,4],sock_:12,standalon:[],zodb:4,rdata:9,releas:10,strval:9,auth_secret:6,first_lin:0,complianc:6,septemb:10,"0x1103d9f10":4,unnam:10,lexer:6,put:[],keep:[0,12,11,3,4,9,10],datetimefield:[],scari:[],length:[0,3,4,6,7],enforc:[],outsid:[3,4,6],geometri:9,title__exact:[],timezon:10,waitress:6,softwar:[0,12,9,4,6,7,10,11],isbn:3,pygments_styl:6,qualiti:9,echo:[],exact:7,models_valu:4,match_param:[6,7],owner:[9,7],myblog_post:[],forgeri:10,intention:0,licens:4,creator:[],mkdir:4,messag:[],attach:6,attack:10,imap4_ssl:0,slide:[1,2,14,5,13],termin:[0,12,9,3,4,6,11],"final":[],low:[],tomayko:[],udp:12,shell:[],fnhg5:0,permalink:10,fnhg2:0,fnhg3:0,"var":[0,9,11,6],"8d3":12,rst:[],textfield:[10,6,7],nobodi:[11,3],haven:[],route_nam:[6,7],embodi:[4,6],dive:6,roberto:7,charact:[9,4,6,7],sens:7,sensit:[0,6],f12:0,stdin:3,favorit:0,py2:4,py3:4,deprec:[11,4],clearli:10,requri:6,close:[0,12,7],need:[0,12,9,3,4,6,7,8,10,11],"635px":9,featur:[9,3,4,10,6],paramiko:[],afraid:[0,4],lightweight:9,min:[6,7],rout:[],restaurant_data_row:9,accuraci:9,builtin:10,which:[0,12,9,3,4,6,7,10,11],from_encod:9,authentication_polici:6,ncsa:3,singl:[0,12,9,3,4,6,7,10,11],tonight:[9,11],unless:12,ds_store:4,whl:4,who:[6,7],wandering_angel:3,discov:[0,9,3],deploi:[],pyc:4,segment:[10,7],payment:6,urg:10,dens:[],mashup_3:9,mashup_2:9,mashup_5:9,face:[],pipe:7,build_db:6,deni:[3,6],modified_d:[],determin:[],fact:[12,3,10,6,7],jkorpela:0,text:[],bring:[0,7],server_nam:[11,3],bedroom:[],rough:4,anywai:11,staff:10,your_nam:8,inlin:[12,4],locat:[],auth_typ:3,"2br":[],should:[0,12,9,3,4,6,7,8,10,11],jan:[0,12],result_gener:9,suppos:9,"3e1cb03b":0,"__tablename__":[4,6],local:[12,9,4,6,7,8],hope:[],meant:[],insight:[],satisfact:6,familiar:[0,3,10],pypi:4,bear:9,db8:12,notimpl:9,increas:[],smash:7,pastedeploi:4,enabl:[0,11,3,10,6],rage:0,"0x10e7d6b90":7,stuff:[9,3,10,7],maintain:[],she:6,contain:[0,1,2,3,4,5,6,7,9,10,11,12,13,14],programmableweb:[],paster:[4,7],view:[],dbsession:[4,6,7],knowledg:4,packet:12,elast:11,closer:4,statu:[9,3,4,11,6],wire:[12,6,7],correctli:[0,7],uidvalid:0,pattern:[],make_serv:3,creationflag:3,tend:4,written:[9,3,7],progress:[],neither:9,flickr:[9,3,6],email:[0,12,9,3,4,8,11],mysite1:0,sole:[0,12,9],kei:[9,3,4,6,7,8,11],gethead:3,job:[0,9,4,6,7,10],entir:[9,4],jog:[],rooftop:9,permanentflag:0,egg_info:4,thumb:11,revers:[],dobb:0,startupinfo:3,trove:[],equal:[3,10],configpars:4,etc:[0,12,11,4,7],instanc:[],equat:12,wear:0,comment:[0,12,9,10,7],typifi:4,high_scor:9,lang:7,this_id:7,rfc2616:0,chmod:[3,8,6],solv:10,tuesdai:[],admin:[],orig:9,quit:[0,12,9,3,4,6,7,8,10,11],divid:[12,3,4],addition:4,novermb:[],card:[12,8],djangoponi:[11,8,10],json:[],yai:[],treat:3,rpclib:[],immedi:[12,9],containd:9,treasur:[],presenc:3,sock_stream:12,tranform:9,bulk:[4,10],untrack:4,saner:9,behalf:7,togeth:[],preexec_fn:3,ingredi:4,multi:[0,11,3],therefor:11,"14t17":9,plain:[0,3,4,6,7,10],harder:9,contextu:9,defin:[],wild:9,dbapi2:4,endblock:[10,6,7],layer:[0,12,4],ripe:[],site:[11,4,6,7,9,10],server_protocol:3,incom:[],whirl:[12,6],pyramid_chameleon:[4,7],welcom:4,parti:0,cross:10,member:10,matthew:9,auto:[],failur:[0,12,9,3,10],ansibl:[],difficult:3,published_d:10,http:[],hostnam:12,denot:3,absorb:4,upon:3,"5xx":0,student:[],auto_now_add:[],php:3,googl:[],off:[0,8,4,6,7],center:0,djagnoenv:[],well:[0,12,9,3,4,6],exampl:[],command:[0,9,3,4,6,7,8,10,11],filesystem:[0,11,7],undefin:7,latest:[9,11],deletecom:9,distanc:12,less:[0,12,11,3,10],foodsafeti:9,kramer:6,half:12,djangoenv:[11,10],paul:9,emtpi:4,tilkov:[],kcpageanalyt:9,wed:0,nullabl:[6,7],smith:0,valid:[0,10,6,7],polici:[8,6],mysite_stage_3:10,logger:4,gmt:0,branch:4,xmlrpc:[],auto_now:[],agnost:[12,7],crud:[0,10],piec:[3,7],arguabl:[],five:[0,10],know:[12,9,3,4,6,7,10],burden:11,password:[],recurs:9,lastbuildd:9,python2:[3,4],insert:[9,10,6],like:[],success:[],amazonaw:11,microblog:8,echo_serv:12,"4mb":[],lose:4,architectur:9,page:[],backlog:12,drop:[12,9,7],glare:10,captur:[],linux:[0,11,6],"export":[11,3],mistak:4,proper:[0,12,9,3,7],home:[0,11,3,4,6,7,10],convert_to_south:[],transport:[],tmp:12,guid:9,gethostbyname_ex:12,programdata:3,lead:[3,10,7],broad:[],octet:0,thank:10,leav:[9,4,11,7],settl:3,server_port:3,u00e9:9,investig:[0,7],published_date__lt:[],journal:[],autoincr:6,usag:[9,4,10],facilit:[],host:[0,12,11,3,4,6],although:[0,4,10,7],pike:9,actual:[0,12,3,4,6,7,10],world:[9,3,4,11,7],endcom:10,datagram:12,carrier:12,constructor:12,fals:[12,9,3,11,6],stab:[],remote_host:3,own:[],washington:[12,9],easy_instal:[9,4],automat:[12,9,4,10,7],uiqj579igrbrebhmjqnth8pffaz2qrj:0,guard:3,cri:[0,7],empti:[0,12,3,4,6,7,10],wahooo:11,merg:[],w3c:9,mod_python:3,val:[9,4,7],allusersprofil:3,cell1:9,transfer:[0,9,6],sqlite3:[11,4],rcp:9,spread:9,appl:4,inner:[],wouldn:9,arg1:[10,6],biggest:10,arg2:10,"function":[],respositori:0,fuzzy_search:9,versioner_python_prefer_32_bit:3,xerox:4,bui:9,gain:[4,6],startproject:[],bookshelf:3,highest:9,count:[9,4,10],gateway_interfac:3,made:[0,12,9,3,4,6,7,8,10],static_root:11,view_config:[6,7],whether:[0,9],ecosystem:10,googlecod:7,displai:[],troubl:[],has_four:9,record:9,below:[12,9,3,11,6],pcreat:[4,7],hand:[6,7],syllabu:4,template_debug:11,problem:[],does_not_start:9,"int":[9,3,4,6],blabber:4,dure:8,pid:[6,7],novemb:10,ephemer:[12,4],implement:[],ini:[4,6,7],pip:[9,4,11],workabl:10,duru:4,probabl:[3,10,6,7],sharabl:3,crummi:9,detail:[],virtual:[0,11,3,4],new_valu:3,other:[],lookup:[12,7],ws_link:[],rememb:[0,12,9,3,4,6,7,10],inspection_param:9,upstart:11,pricipl:10,stat:0,repeat:[],duck:9,"class":[],allowedvers:0,dewei:0,echo_cli:12,log:[0,11,4,6,7,10],fiddler2:0,throughout:[],"_queri":6,get_score_data:9,nogroup:11,came:[9,6],reliabl:12,xmlrpclib:9,rule:[0,12,11,4,8,10],specifi:[9,3,7],bcryptpasswordmanag:6,models_nam:4,cgi_bin:3,htmlparser:9,decemb:[]},objtypes:{"0":"py:class"},objnames:{"0":["py","class","Python class"]},filenames:["presentations/session05","index","presentations/django_intro","presentations/session06","presentations/session01","outline","presentations/session03","presentations/session02","presentations/session09","presentations/session07","presentations/session08","presentations/session10","presentations/session04","presentations/index","readings"],titles:["Session 05","Internet Programming with Python","An Introduction To Django","Session 06","Session 01","Course Outline","Session 03","Session 02","Session 09","Session 07","Session 08","Session 09","Session 04","Course Presentations","Supplementary Course Readings"],objects:{"":{small:[2,0,1,""],python:[2,0,1,""]}},titleterms:{all:[12,9,4],code:[0,9,4],chain:4,queri:4,global:10,prefix:10,ljshell:7,row:[],categori:10,depend:6,send:12,environment:3,program:[1,2],roa:9,deactiv:4,sourc:9,string:7,util:12,strang:10,did:3,list:[3,10,6,7],iter:4,"try":[6,7],adjust:6,quick:[0,12],div:9,prepar:[11,3,8,6,7],machin:12,work:[8,9,3,4,6],sign:8,pass:[0,10],further:[0,12,3,10],urlpattern:[],index:[],what:[0,9,3,4,6,7,10],hide:6,compar:6,preserv:9,repli:12,asid:0,beautifulsoup:9,navigablestr:[],"new":4,"public":10,full:10,gener:9,preprar:[],here:[],logout:[10,6],address:12,path:[3,7],along:0,valu:[9,7],wait:[],search:9,credit:[],orm:4,pick:7,chang:[11,4,10,6,7],via:6,extra:[],apach:3,app:[3,4,6],expect:[],unix:12,api:[9,7],famili:12,instal:[9,4,6,7],post:10,middlewar:3,from:3,commun:12,regist:6,todai:11,next:[],few:[0,3],live:3,call:[],asset:7,type:[0,12,9],more:[9,4],idempot:0,share:7,relat:[],enhanc:[],templat:[10,7],examin:[],iii:3,socket:12,word:[4,10,6],setup:4,outlin:5,column:4,can:0,learn:[0,3],fetch:9,control:[11,7],process:3,smtp:0,accept:12,tag:9,explor:[],incom:12,onlin:3,heroku:6,cours:[13,5,14],secur:6,anoth:9,geojson:9,revisit:[9,10],write:[9,3],how:6,env:11,answer:9,verifi:[9,6],config:6,needl:[],css:[10,6],updat:[0,9,3,11,6],map:0,resourc:0,mess:9,resolve_path:3,date:9,irrelev:4,law:9,data:[9,3,7],practic:[],bind:12,learning_journ:6,element:[],inform:[12,9],runapp:6,environ:[3,4],south:[],sesstion:[],style:7,fix:10,complex:9,persist:4,might:10,alter:[3,4],"return":[0,4,10],handl:[0,9],slate:[],safe:0,"break":[0,12,9,3,4,6,10],framework:10,hateoa:[],jinja2:[6,7],recap:3,now:10,introduct:4,choic:11,addenda:[],edit:[6,7],simpl:3,troubleshoot:6,revers:9,authent:[],separ:4,debug:0,side:[12,4],domain:12,meta:3,"static":[10,7],ec2:11,our:[0,9,4,6,7,10,11],happen:4,beyond:9,extract:9,orient:3,out:[9,10,6,7],variabl:3,space:10,open:[],stub:7,internet:[1,2,9,12],got:[],factori:6,proxi:3,navig:10,migrat:10,fixm:[],base:[4,10],mime:0,dictionari:7,put:[12,9],geocod:9,filter:[9,6,7],mvc:[4,7],perman:[11,4],principl:10,assign:10,urlconf:10,first:[0,3,4,6,7],render:[6,7],echo:0,hook:10,done:6,messag:12,blank:[],tame:9,miss:10,size:[],iam:8,differ:0,script:[9,3,4,7],interact:[0,4,7],system:[4,7],construct:12,stack:[12,3,10],order_bi:4,"final":9,listen:12,shell:6,consol:4,option:0,relationship:10,part:7,pars:[0,9],virtuelenv:4,matchdict:7,rss:9,serv:0,provid:[6,7],mappabl:9,structur:[4,7],project:[4,10],browser:0,comput:[0,12],queryset:[],packag:4,have:[0,4],tabl:4,django:[11,8,10],ponder:3,engin:9,advic:4,rout:7,ideal:[],client:12,build:[9,3,10,6],soap:9,simplifi:3,deploy:[11,6,7],price:[],object:[4,7],procfil:6,cgitb:3,plai:[9,10],regular:[9,10],deploi:[11,6],"class":[9,3],url:[10,7],later:[],flow:[12,3,7],uri:0,doe:[0,7],determin:0,pattern:10,wsgi:3,show:3,text:[],syntax:6,session:[0,12,9,3,4,6,7,8,10,11],permiss:6,sqla:4,find:9,xml:9,access:[11,7],locat:[],execut:[3,6],configur:[11,4,6,7],activ:[4,10],restaur:9,factor:11,get:[12,9,3,4,7,10],express:[9,10,7],stop:0,autom:9,pop3:0,tcp:12,csrf:10,requir:6,layout:7,bar:[],organ:[],method:[0,12,4],bad:0,common:[0,10],where:[10,6],view:[0,3,10,6,7],respond:12,set:[11,3,8,10,6],result:[9,3,11,10,6],respons:[0,9,10,7],testcas:[],concern:4,wire:11,databas:[11,4,10,6],label:9,state:[],score:[],irl:[0,9],awai:3,approach:9,attribut:9,altern:[3,4],extend:8,addit:6,last:[8,4],admin:10,wsgiref:3,instanc:11,context:[10,6,7],let:10,login:[8,10,6],whole:[],markdown:6,point:[],overview:[],dispatch:3,walk:[],modif:0,header:0,rpc:9,speak:0,authz:6,cryptactular:6,rebuild:6,three:4,compon:4,json:9,authn:6,basic:[0,4,10,7],strategi:11,resolut:[],great:10,togeth:[12,9],input:7,repetit:[],imap:0,present:[13,7],"case":10,look:[0,10],servic:9,properti:9,trick:[],defin:7,"while":8,outcom:7,error:[0,3],fun:9,anonym:6,real:0,layer:11,pyramid:[4,6,7],engag:6,advantag:10,demo:[0,7],partner:8,develop:10,receiv:12,make:[9,4,10,6,7],shorten:10,python:[0,1,2,3,4,12,9],html:[9,10],document:[9,10],mod_wsgi:3,complet:[9,7],week:8,finish:12,http:[0,9,7],hang:[],effect:4,solut:[0,9,3],moment:10,user:[3,8,6,7],implement:[0,6],stateless:[],task:[12,10],entri:6,thought:9,exampl:[0,6,7],thi:[],choos:[9,4,11],model:[4,10,6,7],protocol:[0,12],just:[],rest:9,initializedb:6,polish:6,skill:12,languag:0,previous:3,web:[9,3,4,11],characterist:0,danger:10,blog:10,add:[9,4,10,6,7],book:3,exercis:3,appli:10,enchilada:[],flowchart:[],save:4,homework:[0,12,9,3,4,7,8,10],earli:9,applic:[12,11,3,4,6,10],format:[0,6],read:14,big:9,nginx:11,bit:4,password:6,apart:10,like:0,success:3,resolv:0,server:[0,12,11,3],output:3,page:7,supplementari:[],captur:10,some:[9,3],revel:[3,6],transport:12,virtualenv:4,afterword:9,foo:[],refer:[],cgi:3,core:0,run:[0,12,11,3,6,10],journal:6,inspect:9,tdd:0,step:[0,3],prerequisit:[],wsdl:9,unsaf:0,comparison:9,about:[0,9,4,6],postgresql:6,fffffffffuuuuuuuuuuuuu:9,ack:[],manag:11,stand:10,commit:4,other:[0,10],block:7,match:7,repair:3,own:12,dilemma:9,terminolog:4,wrap:[9,3,6],lesson:3,your:[0,12,9,3,4,6,7,8,10,11],question:[9,3],submit:[0,12,9,3,4,10],custom:12,start:4,gunicorn:11,includ:10,"function":9,form:[3,10,6,7],content:[0,10],sqlalchemi:4,link:[12,6],congratul:[12,10],pull:[],displai:9,glori:6,foreignkei:[],highlight:6,problem:3,connect:[12,8,7],creat:[12,4,6],request:[0,9,10,7],wtform:7,file:[4,10],face:10,check:[11,6],pareto:10,encrypt:6,googl:9,mashup:9,tip:3,detail:[3,10,7],scrape:9,field:[],cleanup:4,test:[0,12,9,3,6,7,10],you:[8,4,10],nice:10,repeat:[9,11],clean:[12,4],why:[9,4],scale:6,consid:10,sql:4,index_pag:6,initialize_learning_journal_db:4,descript:[],mash:9,ignor:4,time:[0,12,9,3,4,6,10],push:10,daaaaaa:10}}) \ No newline at end of file From 966b80a64420491cf9b2bfcbd8f0ec9b72e6174e Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 10 Mar 2015 17:35:35 -0700 Subject: [PATCH 098/114] new stuff for session 10 slides --- slides/_images/nginx_hello.png | Bin 0 -> 67685 bytes slides/_sources/presentations/session10.txt | 638 ++++++++++++++++ slides/_static/nginx_hello.png | Bin 0 -> 67685 bytes slides/presentations/session10.html | 779 ++++++++++++++++++++ 4 files changed, 1417 insertions(+) create mode 100644 slides/_images/nginx_hello.png create mode 100644 slides/_sources/presentations/session10.txt create mode 100644 slides/_static/nginx_hello.png create mode 100644 slides/presentations/session10.html diff --git a/slides/_images/nginx_hello.png b/slides/_images/nginx_hello.png new file mode 100644 index 0000000000000000000000000000000000000000..f2db39d9aee19f3c76e93170b9999cfaef4d146f GIT binary patch literal 67685 zcmeFZWmJ{l-Zn}pARyh{9gC3e?rx;JyHi5CTT&XNmF`%Cbfa`5UDEL0=zl+Zzx#~y z?Tqv3aSVp6d(C_H{Ka)$lL#dRNu)P;Zy+Ebkff!=R3IQ=v>+g$=-{A$C%L*-FaJTh zs7Q)HRE-hr10UcWrL>z-#%4^Oc8)-4 z2naq;9^h9yGgl)LPdi(C7amW3vOgtwfZtypGn0}0DdK9wPo^cWL?Y_oY(~Pt#LmP* zCh&%YgoMx8)SO2}OyZx{flvHomaeXjJj~1<9v(~{Y)lT$7R(@SZf<54R%TXKMxX?v zim=Wlr>O9xj6U>2OM zOr-5y&72*bff@PpHtRoc|G$^`@4B>A%v>C7-Tt=C&d&U=_W$$wf4?K@U{M2A5g7aXc$)tr613!}`7SKpx z4Z$UfCq^bx&?q~KPW2 zR^%7#e-!@nCL$q}N=R7Mkh;;|8vb2fAzT^qzv}(hQx;b^DO9``D$UUUZXlklP~cA& z{#6wC&^19yB5t{tsfUU6pPhUu5gC8?|LCFU$3Tqyd>dzVt^XO%Ka~L;hyLG=|JQ{5 z?~MQdy;ahMP~d{-VD$a2W`P6P`0L<)<+{VFIHUMi#m1lWzzsJu&gOX21uMWZtEReL zgBJ78@eGPZ@id4j{E14A8pj4h}+&i%5q!QKr$~}Z zjL<=DZoe4gWq9T|;CZ!qAciiVtli)r@3c0J+^|9WVkE-h_qSrsdeIcv!Wx zxFT=*aImnkV&SQ9#_4^&RQJ3z6U2my(>T3dKQ6%gouQunv&&gOc6GuDC7I9YL+RniEo2?%* zzTHpfKCxenuyLXh`&~}{v~RT|&w%?ga1jU?a3vZ0vg@?pFV)<;Ug9UE)sa#r?#PL0 zMZx9LR|%7k*Q>b&a0ym^WjB#4DFHgOgYqyUhDsU7=UPU8X|Oe!iH zHj)jMtP7pr1m%#NRtG%Ne^i|98j_~Rd$Ds}HKZ)|nE4UZIiCHPnzm{o_RZT^w(!

      1a7*KV>=@&B>uJV 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 dD8dYRhax=Th_zFCLj(o requirements.txt + + Then, add that file to your repository and commit the changes. + + At this point, we're about ready to begin working directly with AWS + +Setting up An EC2 Instance +-------------------------- + +Our first step is to create an EC2 (Elastic Compute Cloud) instance for our +application. + +.. rst-class:: build +.. container:: + + Begin by opening the AWS homepage (http://aws.amazon.com) + + Then click on the big yellow "Sign in to the Console" button + + Fill in your email, check "I am a returning user..." and supply your + password. + + When the page loads, you are viewing the AWS Console. + + If you don't see a big list of services in that first page, click on + 'Services' in the black header. + + From the list of services, click on ``EC2``. + +.. nextslide:: + +The page that loads is the management console for EC2 resources. You used it +to create your security group and key pair. + +.. rst-class:: build +.. container:: + + Click the large blue "Launch Instance" button to start a new instance. + + You should see a list of types of operating system listed. + + If you don't click on *quick start* at the left. + + In the list, find "Ubuntu Server 14.04 LTS". + + Click on 'Select' to begin building an instance using that operating + system. + +.. nextslide:: + +The next page of the launch wizard allows you to choose how much CPU power and +RAM your machine will have. + +.. rst-class:: build +.. container:: + + There are only two types of instance that are in the free tier, and one is + now deprecated. + + Select the *t2.micro* instance by clicking the checkbox to the left of that + row (it may already be selected for you). + + Below the table of instance types, find and click on "Next: configure + instance details" + +.. nextslide:: + +Click through the next two steps until you reach "Configure Security Group" + +.. rst-class:: build +.. container:: + + Here, click the "select an existing security group" button, and pick your + ssh-access group. + + This group acts as a control for a *firewall* which restricts network + access to your new instance. + + You've configured that firewall to allow any machine to talk to your + instance, but only on port 22 (SSH). + + Finish by clicking "Review and Launch" + + Then click on "Launch" to start the instance. + +.. nextslide:: + +When you click "Launch" you are required to choose a key pair to control ssh +access to your new machine. + +.. rst-class:: build +.. container:: + + Without this key pair, you have no way to access the server, and you must + destroy it and create a new one. + + Select your ``pk-aws`` pair from the list of existing key pairs. + + Then, check the box that indicates you have the private key and click + "Launch Instance". + + It will take a few minutes for the new machine to initialize and be ready. + +Accessing Your Instance +----------------------- + +Once the machine indicates it is "running" you are ready to access that +machine. + +.. rst-class:: build +.. container:: + + ssh into that machine: + + .. code-block:: bash + + ssh -i ~/.ssh/pk-aws.pem ubuntu@ + + You will need to indicate that you trust this connection. + + You are now logged in to the server as the default user. + + AWS sets this user up with the ability to run commands using *sudo* + + You'll begin by updating the OS package manager so you are ensured of + having the latest versions of any software you install: + + .. code-block:: bash + + sudo apt-get update + +Deployment Layer 1: Web Server +------------------------------ + +In our deployment stack, the frontmost facing layer is the Web Server. + +.. rst-class:: build +.. container:: + + This software is responsible for receiving requests from clients' browsers. + + It will also handle serving static resources in order to relieve Django of + that burden. + + If you are using ``https``, it's also a good place to handle terminating an + SSL connection. + + Begin by using the Ubuntu package manager to install ``nginx``: + + .. code-block:: bash + + sudo apt-get install nginx + +.. nextslide:: Controlling ``nginx`` + +Like many other packages installed by ``apt-get``, nginx is set up as a +*service* + +You can check the status of the service: + +.. code-block:: bash + + sudo service nginx status + +You can start and stop the server: + +.. code-block:: bash + + sudo service nginx stop + sudo service nginx start + +.. nextslide:: Configuring Nginx + +Default configuration for nginx lives in ``/etc/nginx``. Let's look at three +files there in particular: + +* /etc/nginx/nginx.conf (controls behavior of the whole server) +* /etc/nginx/sites-available/default (controls a single 'site') +* /etc/nginx/sites-enabled/default (activates a single 'site') + + +.. nextslide:: Check Your results + +Check your results by loading your public DNS name in a browser + +.. rst-class:: build +.. container:: + + you should see this, do you? + + .. figure:: /_static/nginx_hello.png + :align: center + :width: 40% + + Add port 80 to your security group. Then reload. + +Deployment Layer 3: Database +---------------------------- + +In order to deploy our database, we'll need to install some more software + +.. rst-class:: build +.. container:: + + Use ``apt-get istall`` to add each of the following packages: + + * build-essential + * python-dev + * python-pip + * python-psycopg2 + * postgresql-client + * git + +.. nextslide:: RDS + +You *can* set up postgres directly on the machine you just built, but that's no fun. + +.. rst-class:: build +.. container:: + + Let's use RDS, the AWS service for providing databases. + + From 'services' in the header, select RDS. + + In the page that appears, click on 'Launch a DB Instance' + + From the selection of database types, choose PostgreSQL. + + Click **no** to indicate that you don't need a multi-AZ database. + +.. nextslide:: + +On the database details page, You have a bit of work to do. + +.. rst-class:: build +.. container:: + + First, select ``db.t2.micro`` as the instance type. + + Then, for multi-AZ deployment, select **no** (again) + + Finally, provide values for the last four inputs + + The database identifier must be unique to your account and region, use + "uwpce". + + For the master username, use "awsuser" + + Provide a password and repeat it to prove you can + +.. nextslide:: + +For Advanced Settings, make sure your DB is in the same availability zone as +your EC2 instance. + +.. rst-class:: build +.. container:: + + Also ensure that you select the same security group you used for your EC2 + instance from the list of VPC security groups. + + Enter a database name, use "djangodb" + + Finally, click "Launch DB Instance" + + While the database launches, let's return to setting up our application on + EC2 + +Deployment Layer 2: Application +------------------------------- + +Back on the EC2 instance, in your ssh terminal, clone your django application: + +.. code-block:: bash + + git clone + +.. rst-class:: build +.. container:: + + pip install the requirements for your app: + + cd djangoblog_uwpce + pip install -r requirements.txt + + Finally, export a system environment variable called DATABASE_URL with the + following format:: + + postgres://username:password@host:port/dbname + + .. code-block:: bash + + export DATABASE_URL= + + You can now test access with dbshell: + + .. code-block:: bash + + python manage.py dbshell + + Work through any issues in getting that to work + +.. nextslide:: Wiring It Up + +Once working, we can point nginx at the instance: + +.. rst-class:: build +.. container:: + + .. code-block:: bash + + sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak + sudo vi /etc/nginx/sites-available/default + + Add the following content: + + .. code-block:: nginx + + server { + listen 80; + server_name ; + access_log /var/log/nginx/django.log; + + location / { + proxy_pass http://127.0.0.1:8000; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } + +.. nextslide:: + +Save that file and restart nginx: + +.. code-block:: bash + + sudo service nginx restart + +Then reload your aws instance in a web browser, you should see a BAD GATEWAY +error + +now start django and then reload: + +.. code-block:: bash + + python manage.py runserver + +This works, but as soon as you exit your ssh terminal, django will quit. We +want a long-running process we can leave behind. + + +Deployment Layer 4: Permanence +------------------------------ + +Install gunicorn on the server + +.. code-block:: bash + + pip install gunicorn + +Back on your own machine, create ``mysite/production.py`` and add the following +content: + +.. code-block:: python + + from settings import * + + DEBUG = False + TEMPLATE_DEBUG = False + ALLOWED_HOSTS = ['', 'localhost'] + STATIC_ROOT = os.path.join(BASE_DIR, 'static') + +Add the file to your repository and commit your changes. + +Then pull the changes back on your EC2 instance + +.. nextslide:: Configuration Changes for Nginx + +Update nginx config (/etc/nginx/sites-available/default) to serve static files: + +.. code-block:: nginx + + server { + # ... + + location /static/ { + root /home/ubuntu/djangoblog_uwpce; + } + + } + +.. nextslide:: Running with Gunicorn + +Then set an environment variable to point at production settings:: + + export DJANGO_SETTINGS_MODULE=mysite.production + +Now, run the site using gunicorn:: + + gunicorn -b 127.0.0.1:8000 -w 4 -D mysite.wsgi + +Wahooo! + +But still not great, because nothing is monitoring this process. + +There's no way to keep track of how it is doing. + +.. nextslide:: Managing Gunicorn + +We can use a process manager to run the gunicorn command, and track the results. + +Kill the processes that spawned:: + + killall gunicorn + +Using linux upstart is nice and easy. + +Put the following in ``/etc/init/djangoblog.conf`` + +.. code-block:: upstart + + description "djangoblog" + + start on (filesystem) + stop on runlevel [016] + + respawn + setuid nobody + setgid nogroup + chdir /home/ubuntu/djangoblog_uwpce + env DJANGO_SETTINGS_MODULE=mysite.production + env DATABASE_URL=postgres://awsuser:secret123@uwpcedb.c5zwspzpwwsq.us-west-2.rds.amazonaws.com:5432/djangoblog + exec gunicorn -b 127.0.0.1:8000 -w 4 mysite.wsgi + + +And that's it! diff --git a/slides/_static/nginx_hello.png b/slides/_static/nginx_hello.png new file mode 100644 index 0000000000000000000000000000000000000000..f2db39d9aee19f3c76e93170b9999cfaef4d146f GIT binary patch literal 67685 zcmeFZWmJ{l-Zn}pARyh{9gC3e?rx;JyHi5CTT&XNmF`%Cbfa`5UDEL0=zl+Zzx#~y z?Tqv3aSVp6d(C_H{Ka)$lL#dRNu)P;Zy+Ebkff!=R3IQ=v>+g$=-{A$C%L*-FaJTh zs7Q)HRE-hr10UcWrL>z-#%4^Oc8)-4 z2naq;9^h9yGgl)LPdi(C7amW3vOgtwfZtypGn0}0DdK9wPo^cWL?Y_oY(~Pt#LmP* zCh&%YgoMx8)SO2}OyZx{flvHomaeXjJj~1<9v(~{Y)lT$7R(@SZf<54R%TXKMxX?v zim=Wlr>O9xj6U>2OM zOr-5y&72*bff@PpHtRoc|G$^`@4B>A%v>C7-Tt=C&d&U=_W$$wf4?K@U{M2A5g7aXc$)tr613!}`7SKpx z4Z$UfCq^bx&?q~KPW2 zR^%7#e-!@nCL$q}N=R7Mkh;;|8vb2fAzT^qzv}(hQx;b^DO9``D$UUUZXlklP~cA& z{#6wC&^19yB5t{tsfUU6pPhUu5gC8?|LCFU$3Tqyd>dzVt^XO%Ka~L;hyLG=|JQ{5 z?~MQdy;ahMP~d{-VD$a2W`P6P`0L<)<+{VFIHUMi#m1lWzzsJu&gOX21uMWZtEReL zgBJ78@eGPZ@id4j{E14A8pj4h}+&i%5q!QKr$~}Z zjL<=DZoe4gWq9T|;CZ!qAciiVtli)r@3c0J+^|9WVkE-h_qSrsdeIcv!Wx zxFT=*aImnkV&SQ9#_4^&RQJ3z6U2my(>T3dKQ6%gouQunv&&gOc6GuDC7I9YL+RniEo2?%* zzTHpfKCxenuyLXh`&~}{v~RT|&w%?ga1jU?a3vZ0vg@?pFV)<;Ug9UE)sa#r?#PL0 zMZx9LR|%7k*Q>b&a0ym^WjB#4DFHgOgYqyUhDsU7=UPU8X|Oe!iH zHj)jMtP7pr1m%#NRtG%Ne^i|98j_~Rd$Ds}HKZ)|nE4UZIiCHPnzm{o_RZT^w(!

      1a7*KV>=@&B>uJV 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 dD8dYRhax=Th_zFCLj(o + Luke Mahé + +URL: https://code.google.com/p/io-2012-slides +--> + + + + + Session 09 — Internet Programming with Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      + +
      +

      +

      +

      +
      + + + + +
      +

      Session 09

      +
      + +
      +
      +

      Deploying Django

      +
      +
      +
      +

      Over the last two sessions you've built and extended a simple Django +application.

      +
      +

      Now it is time to deploy that application to a server so the world can +see it.

      +

      Previously, we used Heroku to deploy a simple Pyramid application.

      +

      We could do the same with Django, but we won't.

      +

      Instead, we'll deploy to Amazon Web Services (AWS)

      +
      +
      + + + + +
      +
      +
      +

      Choosing a Deployment Strategy

      +
      +
      +

      There are many many different ways to deploy a web application.

      +
      +

      And there are many many services offering platforms for deployment.

      +

      How do you choose the right one for you?

      +

      In general there are a few rules of thumb to consider:

      +
        +
      • The more convenient the service, the less configurable it is.
      • +
      • The less you pay for a service, the more work you have to do yourself.
      • +
      • With great power comes great responsibility.
      • +
      +
      + + + + +
      +
      +
      +

      Choosing a Deployment Strategy

      +
      +
      +

      In choosing a service and a strategy, you'll want to ask yourself a few +questions:

      +
      +
        +
      • What are the basic software components of my project?
      • +
      • How much control or customization of each component do I require?
      • +
      • What service supports all of my required components?
      • +
      • What service allows my required customizations?
      • +
      • If no single service does everything I need, which could be wired +together?
      • +
      +

      The answers to these questions will help to determine the correct choice +for you.

      +
      + + + + +
      +
      +
      +

      Our Choice for Today

      +
      +
      +

      We are going to ignore all these questions, and simply ask one question.

      +
      +

      Which service will allow us to set up each layer in a full web application +stack so that we can learn how the stack works from front to back?

      +

      The simplest answer to that question is AWS.

      +

      Therefore, that's the service we will use today.

      +
      + + + + +
      +
      +
      +

      Preparing for AWS Deployment

      +
      +
      +

      You've started out this week by signing up for AWS.

      +
      +

      You've created a security group and a key pair to help with accessing any +servers we create.

      +

      You've also set up an IAM user and configured security credentials for that +user.

      +

      If we were to be automating our work today, we'd use those credentials to +allow the boto library to connect to AWS as that IAM user.

      +

      Then you could create or destroy resources using that library.

      +

      Issues surrounding using that library on Windows prevent us from trying +that path tonight.

      +
      + + + + +
      +
      +
      +

      Preparing for AWS Deployment

      +
      +
      +

      Instead we'll be making a manual deployment using AWS.

      +
      +

      This is always the first step to automation anyway, so this is an important +first step.

      +

      We'll begin by converting some aspects of our application to better provide +for security

      +

      In preparation for that we will need to add a new package to our django +virtual environment.

      +
      (djangoenv)$ pip install dj-database-url
      +
      +
      +
      + + + + +
      +
      +
      +

      12-Factor

      +
      +
      +

      This new package is an attempt to help Django get in line with a principle +called 12-factor.

      +
      +

      The basic idea is that any data that your app uses for configuration that +is external to the app itself, should be separated from the app.

      +

      The link about contains much more effective explanations, read it.

      +

      We've already done this to some degree with our Pyramid application, by +putting some configuration values into environment variables

      +

      dj-database-url allows us to do that with the configuration for our +database.

      +
      + + + + +
      +
      +
      +

      Updating Settings

      +
      +
      +

      Open settings.py and replace the current DATABASES dictionary with this:

      +
      DATABASES = {
      +    'default': dj_database_url.config(
      +        default='sqlite:///' + os.path.join(BASE_DIR, 'db.sqlite3')
      +    )
      +}
      +
      +
      +
      +

      The default behavior of dj-database-url is to look for a +DATABASE_URL variable in the environment.

      +

      If it doesn't find that, it uses the value you provide for default.

      +

      It converts a url-style database connection string to the dictionary +Django expects.

      +

      Here, we've set the default to be the same as what we had previously.

      +
      + + + + +
      +
      +
      +

      Repeatable Envs

      +
      +
      +

      Another principle of the 12-factor philosophy is to keep the differences +between production and development to a minimum.

      +
      +

      Again, in our Pyramid app we handled this with a requirements.txt file.

      +

      Here we will do the same.

      +

      At your command line, with the virtualenv active, run the following +command:

      +
      (djangoenv)$ pip freeze > requirements.txt
      +
      +
      +

      Then, add that file to your repository and commit the changes.

      +

      At this point, we're about ready to begin working directly with AWS

      +
      + + + + +
      +
      +
      +

      Setting up An EC2 Instance

      +
      +
      +

      Our first step is to create an EC2 (Elastic Compute Cloud) instance for our +application.

      +
      +

      Begin by opening the AWS homepage (http://aws.amazon.com)

      +

      Then click on the big yellow "Sign in to the Console" button

      +

      Fill in your email, check "I am a returning user..." and supply your +password.

      +

      When the page loads, you are viewing the AWS Console.

      +

      If you don't see a big list of services in that first page, click on +'Services' in the black header.

      +

      From the list of services, click on EC2.

      +
      + + + + +
      +
      +
      +

      Setting up An EC2 Instance

      +
      +
      +

      The page that loads is the management console for EC2 resources. You used it +to create your security group and key pair.

      +
      +

      Click the large blue "Launch Instance" button to start a new instance.

      +

      You should see a list of types of operating system listed.

      +

      If you don't click on quick start at the left.

      +

      In the list, find "Ubuntu Server 14.04 LTS".

      +

      Click on 'Select' to begin building an instance using that operating +system.

      +
      + + + + +
      +
      +
      +

      Setting up An EC2 Instance

      +
      +
      +

      The next page of the launch wizard allows you to choose how much CPU power and +RAM your machine will have.

      +
      +

      There are only two types of instance that are in the free tier, and one is +now deprecated.

      +

      Select the t2.micro instance by clicking the checkbox to the left of that +row (it may already be selected for you).

      +

      Below the table of instance types, find and click on "Next: configure +instance details"

      +
      + + + + +
      +
      +
      +

      Setting up An EC2 Instance

      +
      +
      +

      Click through the next two steps until you reach "Configure Security Group"

      +
      +

      Here, click the "select an existing security group" button, and pick your +ssh-access group.

      +

      This group acts as a control for a firewall which restricts network +access to your new instance.

      +

      You've configured that firewall to allow any machine to talk to your +instance, but only on port 22 (SSH).

      +

      Finish by clicking "Review and Launch"

      +

      Then click on "Launch" to start the instance.

      +
      + + + + +
      +
      +
      +

      Setting up An EC2 Instance

      +
      +
      +

      When you click "Launch" you are required to choose a key pair to control ssh +access to your new machine.

      +
      +

      Without this key pair, you have no way to access the server, and you must +destroy it and create a new one.

      +

      Select your pk-aws pair from the list of existing key pairs.

      +

      Then, check the box that indicates you have the private key and click +"Launch Instance".

      +

      It will take a few minutes for the new machine to initialize and be ready.

      +
      + + + + +
      +
      +
      +

      Accessing Your Instance

      +
      +
      +

      Once the machine indicates it is "running" you are ready to access that +machine.

      +
      +

      ssh into that machine:

      +
      ssh -i ~/.ssh/pk-aws.pem ubuntu@<your-public-dns-name.com>
      +
      +
      +

      You will need to indicate that you trust this connection.

      +

      You are now logged in to the server as the default user.

      +

      AWS sets this user up with the ability to run commands using sudo

      +

      You'll begin by updating the OS package manager so you are ensured of +having the latest versions of any software you install:

      +
      sudo apt-get update
      +
      +
      +
      + + + + +
      +
      +
      +

      Deployment Layer 1: Web Server

      +
      +
      +

      In our deployment stack, the frontmost facing layer is the Web Server.

      +
      +

      This software is responsible for receiving requests from clients' browsers.

      +

      It will also handle serving static resources in order to relieve Django of +that burden.

      +

      If you are using https, it's also a good place to handle terminating an +SSL connection.

      +

      Begin by using the Ubuntu package manager to install nginx:

      +
      sudo apt-get install nginx
      +
      +
      +
      + + + + +
      +
      +
      +

      Controlling nginx

      +
      +
      +

      Like many other packages installed by apt-get, nginx is set up as a +service

      +

      You can check the status of the service:

      +
      sudo service nginx status
      +
      +
      +

      You can start and stop the server:

      +
      sudo service nginx stop
      +sudo service nginx start
      +
      +
      + + + + +
      +
      +
      +

      Configuring Nginx

      +
      +
      +

      Default configuration for nginx lives in /etc/nginx. Let's look at three +files there in particular:

      +
        +
      • /etc/nginx/nginx.conf (controls behavior of the whole server)
      • +
      • /etc/nginx/sites-available/default (controls a single 'site')
      • +
      • /etc/nginx/sites-enabled/default (activates a single 'site')
      • +
      + + + + +
      +
      +
      +

      Check Your results

      +
      +
      +

      Check your results by loading your public DNS name in a browser

      +
      +

      you should see this, do you?

      +
      +../_images/nginx_hello.png +
      +

      Add port 80 to your security group. Then reload.

      +
      + + + + +
      +
      +
      +

      Deployment Layer 3: Database

      +
      +
      +

      In order to deploy our database, we'll need to install some more software

      +
      +

      Use apt-get istall to add each of the following packages:

      +
        +
      • build-essential
      • +
      • python-dev
      • +
      • python-pip
      • +
      • python-psycopg2
      • +
      • postgresql-client
      • +
      • git
      • +
      +
      + + + + +
      +
      +
      +

      RDS

      +
      +
      +

      You can set up postgres directly on the machine you just built, but that's no fun.

      +
      +

      Let's use RDS, the AWS service for providing databases.

      +

      From 'services' in the header, select RDS.

      +

      In the page that appears, click on 'Launch a DB Instance'

      +

      From the selection of database types, choose PostgreSQL.

      +

      Click no to indicate that you don't need a multi-AZ database.

      +
      + + + + +
      +
      +
      +

      Deployment Layer 3: Database

      +
      +
      +

      On the database details page, You have a bit of work to do.

      +
      +

      First, select db.t2.micro as the instance type.

      +

      Then, for multi-AZ deployment, select no (again)

      +

      Finally, provide values for the last four inputs

      +

      The database identifier must be unique to your account and region, use +"uwpce".

      +

      For the master username, use "awsuser"

      +

      Provide a password and repeat it to prove you can

      +
      + + + + +
      +
      +
      +

      Deployment Layer 3: Database

      +
      +
      +

      For Advanced Settings, make sure your DB is in the same availability zone as +your EC2 instance.

      +
      +

      Also ensure that you select the same security group you used for your EC2 +instance from the list of VPC security groups.

      +

      Enter a database name, use "djangodb"

      +

      Finally, click "Launch DB Instance"

      +

      While the database launches, let's return to setting up our application on +EC2

      +
      + + + + +
      +
      +
      +

      Deployment Layer 2: Application

      +
      +
      +

      Back on the EC2 instance, in your ssh terminal, clone your django application:

      +
      git clone <your-app-repo-url>
      +
      +
      +
      +

      pip install the requirements for your app:

      + +cd djangoblog_uwpce +pip install -r requirements.txt +

      Finally, export a system environment variable called DATABASE_URL with the +following format:

      +
      postgres://username:password@host:port/dbname
      +
      +
      +
      export DATABASE_URL=<that string>
      +
      +
      +

      You can now test access with dbshell:

      +
      python manage.py dbshell
      +
      +
      +

      Work through any issues in getting that to work

      +
      + + + + +
      +
      +
      +

      Wiring It Up

      +
      +
      +

      Once working, we can point nginx at the instance:

      +
      +
      sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
      +sudo vi /etc/nginx/sites-available/default
      +
      +
      +

      Add the following content:

      +
      server {
      +    listen 80;
      +    server_name <your-ec2-public-dns-name>;
      +    access_log /var/log/nginx/django.log;
      +
      +    location / {
      +        proxy_pass http://127.0.0.1:8000;
      +        proxy_set_header Host $host;
      +        proxy_set_header X-Real-IP $remote_addr;
      +        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      +    }
      +}
      +
      +
      +
      + + + + +
      +
      +
      +

      Deployment Layer 2: Application

      +
      +
      +

      Save that file and restart nginx:

      +
      sudo service nginx restart
      +
      +
      +

      Then reload your aws instance in a web browser, you should see a BAD GATEWAY +error

      +

      now start django and then reload:

      +
      python manage.py runserver
      +
      +
      +

      This works, but as soon as you exit your ssh terminal, django will quit. We +want a long-running process we can leave behind.

      + + + + +
      +
      +
      +

      Deployment Layer 4: Permanence

      +
      +
      +

      Install gunicorn on the server

      +
      pip install gunicorn
      +
      +
      +

      Back on your own machine, create mysite/production.py and add the following +content:

      +
      from settings import *
      +
      +DEBUG = False
      +TEMPLATE_DEBUG = False
      +ALLOWED_HOSTS = ['<your instance public dns>', 'localhost']
      +STATIC_ROOT = os.path.join(BASE_DIR, 'static')
      +
      +
      +

      Add the file to your repository and commit your changes.

      +

      Then pull the changes back on your EC2 instance

      + + + + +
      +
      +
      +

      Configuration Changes for Nginx

      +
      +
      +

      Update nginx config (/etc/nginx/sites-available/default) to serve static files:

      +
      server {
      +    # ...
      +
      +    location /static/ {
      +        root /home/ubuntu/djangoblog_uwpce;
      +    }
      +
      +}
      +
      +
      + + + + +
      +
      +
      +

      Running with Gunicorn

      +
      +
      +

      Then set an environment variable to point at production settings:

      +
      export DJANGO_SETTINGS_MODULE=mysite.production
      +
      +
      +

      Now, run the site using gunicorn:

      +
      gunicorn -b 127.0.0.1:8000 -w 4 -D mysite.wsgi
      +
      +
      +

      Wahooo!

      +

      But still not great, because nothing is monitoring this process.

      +

      There's no way to keep track of how it is doing.

      + + + + +
      +
      +
      +

      Managing Gunicorn

      +
      +
      +

      We can use a process manager to run the gunicorn command, and track the results.

      +

      Kill the processes that spawned:

      +
      killall gunicorn
      +
      +
      +

      Using linux upstart is nice and easy.

      +

      Put the following in /etc/init/djangoblog.conf

      +
      description "djangoblog"
      +
      +start on (filesystem)
      +stop on runlevel [016]
      +
      +respawn
      +setuid nobody
      +setgid nogroup
      +chdir /home/ubuntu/djangoblog_uwpce
      +env DJANGO_SETTINGS_MODULE=mysite.production
      +env DATABASE_URL=postgres://awsuser:secret123@uwpcedb.c5zwspzpwwsq.us-west-2.rds.amazonaws.com:5432/djangoblog
      +exec gunicorn -b 127.0.0.1:8000 -w 4 mysite.wsgi
      +
      +
      +

      And that's it!

      + + + + +
      +
      + + + + +
      +

      <Thank You!>

      +

       

      +
      +

      + +

      +
      + + + + + + + + \ No newline at end of file From d7094ff4e5a7da0144ae04fd2138526633ca80f8 Mon Sep 17 00:00:00 2001 From: cewing Date: Thu, 31 Dec 2015 18:07:42 -0800 Subject: [PATCH 099/114] massive updates for py3 compatibility --- html/_images/admin_index.png | Bin 27949 -> 38103 bytes html/_images/django-admin-login.png | Bin 7749 -> 12153 bytes html/_images/django-start.png | Bin 31371 -> 37490 bytes html/_sources/index.txt | 58 +- html/_sources/outline.txt | 147 +- html/_sources/presentations/django_intro.txt | 312 +- html/_sources/presentations/session01.txt | 1851 +-- html/_sources/presentations/session02.txt | 1994 +-- html/_sources/presentations/session03.txt | 2049 ++- html/_sources/presentations/session04.txt | 1949 ++- html/_sources/presentations/session05.txt | 1891 ++- html/_sources/presentations/session06.txt | 1800 +-- html/_sources/presentations/session07.txt | 2313 ++-- html/_sources/presentations/session08.txt | 230 +- html/_sources/presentations/session10.txt | 58 +- html/_sources/presentations/venv_intro.txt | 338 + html/_sources/readings.txt | 153 +- html/_static/admin_index.png | Bin 27949 -> 38103 bytes html/_static/basic.css | 74 +- html/_static/custom.css | 19 +- html/_static/django-admin-login.png | Bin 7749 -> 12153 bytes html/_static/django-start.png | Bin 31371 -> 37490 bytes html/_static/doctools.js | 29 +- html/_static/down-pressed.png | Bin 368 -> 347 bytes html/_static/down.png | Bin 363 -> 347 bytes html/_static/file.png | Bin 392 -> 358 bytes html/_static/jquery-1.11.1.js | 10308 ++++++++++++++++ html/_static/jquery.js | 6 +- html/_static/minus.png | Bin 199 -> 173 bytes html/_static/plus.png | Bin 199 -> 173 bytes html/_static/pygments.css | 1 + html/_static/searchtools.js | 4 +- html/_static/underscore-1.3.1.js | 999 ++ html/_static/up-pressed.png | Bin 372 -> 345 bytes html/_static/up.png | Bin 363 -> 345 bytes html/_static/websupport.js | 30 +- html/genindex.html | 37 +- html/index.html | 115 +- html/objects.inv | Bin 278 -> 271 bytes html/outline.html | 202 +- html/presentations/django_intro.html | 461 +- html/presentations/index.html | 91 +- html/presentations/session01.html | 1747 ++- html/presentations/session02.html | 1848 +-- html/presentations/session03.html | 1873 ++- html/presentations/session04.html | 1765 ++- html/presentations/session05.html | 1781 ++- html/presentations/session06.html | 1716 +-- html/presentations/session07.html | 2145 ++-- html/presentations/session08.html | 379 +- html/presentations/session09.html | 56 +- html/presentations/session10.html | 118 +- html/presentations/venv_intro.html | 377 + html/readings.html | 165 +- html/search.html | 22 +- html/searchindex.js | 2 +- slides/_sources/index.txt | 58 +- slides/_sources/outline.txt | 147 +- .../_sources/presentations/django_intro.txt | 312 +- slides/_sources/presentations/index.txt | 1 + slides/_sources/presentations/session01.txt | 1851 +-- slides/_sources/presentations/session02.txt | 1994 +-- slides/_sources/presentations/session03.txt | 2049 ++- slides/_sources/presentations/session04.txt | 1949 ++- slides/_sources/presentations/session05.txt | 1889 ++- slides/_sources/presentations/session06.txt | 1800 +-- slides/_sources/presentations/session07.txt | 2313 ++-- slides/_sources/presentations/session08.txt | 230 +- slides/_sources/presentations/session10.txt | 58 +- slides/_sources/presentations/venv_intro.txt | 338 + slides/_sources/readings.txt | 153 +- slides/_static/admin_index.png | Bin 27949 -> 38103 bytes slides/_static/basic.css | 74 +- slides/_static/config.rb | 2 +- slides/_static/custom.css | 19 +- slides/_static/django-admin-login.png | Bin 7749 -> 12153 bytes slides/_static/django-start.png | Bin 31371 -> 37490 bytes slides/_static/doctools.js | 29 +- slides/_static/down-pressed.png | Bin 368 -> 347 bytes slides/_static/down.png | Bin 363 -> 347 bytes slides/_static/file.png | Bin 392 -> 358 bytes slides/_static/jquery-1.11.1.js | 10308 ++++++++++++++++ slides/_static/jquery.js | 6 +- slides/_static/js/slide-deck.js | 40 + slides/_static/minus.png | Bin 199 -> 173 bytes slides/_static/plus.png | Bin 199 -> 173 bytes slides/_static/pygments.css | 1 + slides/_static/searchtools.js | 4 +- slides/_static/slide_config.js | 2 +- slides/_static/theme/css/default.css | 249 +- slides/_static/theme/css/hieroglyph.css | 85 +- slides/_static/theme/css/io2013.css | 2 +- slides/_static/theme/css/phone.css | 27 +- slides/_static/theme/scss/default.scss | 4 +- slides/_static/theme/scss/hieroglyph.scss | 70 + slides/_static/underscore-1.3.1.js | 999 ++ slides/_static/up-pressed.png | Bin 372 -> 345 bytes slides/_static/up.png | Bin 363 -> 345 bytes slides/_static/websupport.js | 30 +- slides/genindex.html | 18 +- slides/index.html | 12 +- slides/objects.inv | Bin 278 -> 271 bytes slides/outline.html | 9 +- slides/presentations/django_intro.html | 9 +- slides/presentations/index.html | 9 +- slides/presentations/session01.html | 2076 ++-- slides/presentations/session02.html | 2366 ++-- slides/presentations/session03.html | 2219 ++-- slides/presentations/session04.html | 2336 ++-- slides/presentations/session05.html | 2196 ++-- slides/presentations/session06.html | 2033 +-- slides/presentations/session07.html | 2547 ++-- slides/presentations/session08.html | 668 +- slides/presentations/session09.html | 53 +- slides/presentations/session10.html | 240 +- slides/presentations/venv_intro.html | 108 + slides/readings.html | 11 +- slides/search.html | 5 +- slides/searchindex.js | 2 +- 119 files changed, 55669 insertions(+), 29854 deletions(-) create mode 100644 html/_sources/presentations/venv_intro.txt create mode 100644 html/_static/jquery-1.11.1.js create mode 100644 html/_static/underscore-1.3.1.js create mode 100644 html/presentations/venv_intro.html create mode 100644 slides/_sources/presentations/venv_intro.txt create mode 100644 slides/_static/jquery-1.11.1.js create mode 100644 slides/_static/underscore-1.3.1.js create mode 100644 slides/presentations/venv_intro.html diff --git a/html/_images/admin_index.png b/html/_images/admin_index.png index ae7a19f986880cac0b47c2ea4cb48a722851c260..f42d6e389b31b1e2a40bb3fe040fdec2009b2603 100644 GIT binary patch literal 38103 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 VPnK2hx+2B^1fH&bF6*2UngAAW=?MS; literal 27949 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 diff --git a/html/_images/django-admin-login.png b/html/_images/django-admin-login.png index 4ceb5f54b92922f5f82b8896c8dccfbcd1ad6bdf..499384a805ee789a6309024e266a286aad21eb5d 100644 GIT binary patch literal 12153 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 d(iPw-+KT6 literal 31371 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 diff --git a/html/_sources/index.txt b/html/_sources/index.txt index e79dd8db..94bee2d8 100644 --- a/html/_sources/index.txt +++ b/html/_sources/index.txt @@ -14,7 +14,10 @@ Internet Programming with Python .. slide:: Internet Programming with Python :level: 1 - This document contains no slides. + .. rst-class:: large center + .. container:: + + No Content .. sidebar:: In This Class @@ -27,27 +30,27 @@ Internet Programming with Python Winter Term, 2015 (10 sessions) -Tuesdays, 6-9 pm, January 6 - March 10 +Tuesdays, 6-9 pm, January 5 - March 8 Overview ======== -This course emphasizes network-based programming and Web -applications, how they work and how to program them in Python. Explore the -underlying principles and their expression in the Python libraries. Learn -contrasting approaches in creating applications: programming with the -low-level libraries versus using highly integrated frameworks +This course emphasizes network-based programming and Web applications, how they +work and how to program them in Python. Explore the underlying principles and +their expression in the Python libraries. Learn contrasting approaches in +creating applications: programming with the low-level libraries versus using +highly integrated frameworks Prerequisites ============= -To attend this course you should have a working knowledge of the basic -syntax and structures of the Python programming language. You will also need -to be comfortable working at the command line to navigate a file system, -create and delete files, and execute commands. Finally, you should have some -basic knowledge of HTML. +To attend this course you should have a working knowledge of the basic syntax +and structures of the Python programming language. You will also need to be +comfortable working at the command line to navigate a file system, create and +delete files, and execute commands. Finally, you should have some basic +knowledge of HTML. Requirements @@ -57,14 +60,15 @@ This workshop does not provide a computer laboratory. You will have to have a portable computer in order to participate. Network access is provided, but you will need to know how to operate the network settings for your computer. -Your computer must have Python version 2.6 or 2.7 installed. No additional +Your computer must have Python version 3.4 or later installed. No additional libraries will be required, but we will be installing some as the workshop progresses. -You will want to familiarize yourself with `virtualenv -`_. We will use it extensively in class -in order to keep our development environments clean and separate. +To keep clean and isolated development environments, we will make use in class +of the `venv`_ module, a standard library module used to create and maintain +lightweight sandbox environments. +.. _venv: https://docs.python.org/3/library/venv.html What to Expect ============== @@ -96,20 +100,24 @@ frameworks covered as well as the choices and compromises that shape them. References ========== -`Python 2 Documentation `_: Complete +`Python 3 Documentation `_: Complete documentation of the language. -`Python 2.7 Quick Reference `_: -Dense and complete. Good for jogging your memory, but don't start here. +`Python 3 Language Reference `_: Terse +and complete reference to the language structures of Python 3. -`Python Standard Library - Internet Protocols and Support -`_: All the supported internet -protocols as implemented in Python. +Python Standard Library - +`Internet Protocols and Support `_: +All the supported internet protocols as implemented in Python. -`Python Module of the Week `_: A fantastic reference for -any module in python. Examples and usage are provided throughout. +Python Module of the Week (`py2`_, `py3`_): A fantastic reference for many +modules in Python 2 and 3. Examples and usage are provided throughout. Don't be +shy about trying the Python 2 docs in Python 3, often they will work still. -`Lecture Presentations `_: Slides from the workshop +.. _py2: https://pymotw.com/2/contents.html +.. _py3: https://pymotw.com/3/ + +`Lecture Presentations `_: Slides from the course presentations. diff --git a/html/_sources/outline.txt b/html/_sources/outline.txt index f89cec66..13e5f514 100644 --- a/html/_sources/outline.txt +++ b/html/_sources/outline.txt @@ -15,78 +15,10 @@ prompt. Each session has associated assignments which you will complete between sessions. -Session 1 - MVC Applications and Data Persistence -------------------------------------------------- - -In this session we will begin by introducing the idea of an MVC (*Model View -Controller*) application. We'll discuss this popular application design -pattern and talk about the ways in which it does and does not apply to the -world of web applications. - -We'll get started with our first application, a learning journal written in the -lignt but powerful *Pyramid* web framework. We'll set up a development -environment and install the framework and dependencies. We'll create our first -*models* and experiment with persisting data to a database. - -References -********** - - -Preparation for Session 2 -************************* - -In preparation for session 2, please read the following materials: - -* `Jinja2 Template Tutorial - `_ -* `HTML5 Site Layout Tutorial - `_ - -Session 2 - Pyramid Views, Renderers and Forms ----------------------------------------------- - -In this session we extend our understanding of the MVC design pattern by -learning how Pyramid implements the *view* and *controller* aspects. - -Pyramid *views* represent the *controller* part of the MVC pattern, and we'll -create a number of them. We'll also learn how Pyramid uses *routes* to properly -connect the *path* requested by a client to the *views* run by a server. - -We'll meet with Pyramid's *renderers*, the *view* in MVC. We'll start by using -a built-in renderer that simply turns view data into strings sent back to the -client as plain text responses. We'll then install a template-based renderer -and use the *jinja2* template language to create visible HTML pages the brower -can load to show our learning journal entries. - -Prepraration for Session 3 -************************** - -In preparation for session 3, please read up on getting started with `Heroku -and Python`_. We'll be deploying our learning journal to Heroku by the end of -that session. - -.. _Heroku and Python: https://devcenter.heroku.com/articles/getting-started-with-python#introduction - -Sesstion 3 - Pyramid Authentication and Deployment --------------------------------------------------- - -In this session we will learn the basic elements of access control: -authentication and authorization. We'll learn how Pyramid implements these two -aspects of security, and will implement a basic security policy for our -learning journal. - -Once complete, we will deploy our application to Heroku. We'll make a few -changes to how our app is configured to fit with the Heroku model and will be -able to see our application in action by the end of the session. - -Time permitting, we will enhance our application with a few special features -such as Markdown formatting, and code highlighting. A list of potential future -enhancements will give you plenty to think about for the rest of the week. - -Session 4 - TCP/IP and Sockets +Session 1 - TCP/IP and Sockets ------------------------------ -We will continue with a disucssion of the fundamental concepts and structures +We will begin with a disucssion of the fundamental concepts and structures that underly the internet and networked computing. We'll learn about the TCP/IP stack (Internet Protocol Suite) and gain some insights into how that model manifests in real life. We will then dive into sockets and learn how to @@ -105,7 +37,7 @@ References * `Python Module of the Week - socket `_ -Session 5 - Web Protocols +Session 2 - Web Protocols ------------------------- Protocols are the languages of the Internet. They govern how machines speak to @@ -134,7 +66,7 @@ clear and concise and have some great code examples. .. _Internet Protocols and Support: http://pymotw.com/2/internet_protocols.html -Session 6 - CGI and WSGI +Session 3 - CGI and WSGI ------------------------ In this class we will explore ways of moving data from HTTP requests into the @@ -149,7 +81,7 @@ CGI, and look at the ways in which it differs. We'll create a simple interaction using WSGI and see what benefits and drawbacks it confers. -Session 7 - APIs and Mashups +Session 4 - APIs and Mashups ---------------------------- The internet is a treasure trove of information. But meaning can be hard to @@ -179,6 +111,75 @@ References * `DocXMLRPCServer `_ +Session 5 - MVC Applications and Data Persistence +------------------------------------------------- + +In this session we will begin by introducing the idea of an MVC (*Model View +Controller*) application. We'll discuss this popular application design +pattern and talk about the ways in which it does and does not apply to the +world of web applications. + +We'll get started with our first application, a learning journal written in the +lignt but powerful *Pyramid* web framework. We'll set up a development +environment and install the framework and dependencies. We'll create our first +*models* and experiment with persisting data to a database. + +References +********** + + +Preparation for Session 6 +************************* + +In preparation for session 6, please read the following materials: + +* `Jinja2 Template Tutorial + `_ +* `HTML5 Site Layout Tutorial + `_ + +Session 6 - Pyramid Views, Renderers and Forms +---------------------------------------------- + +In this session we extend our understanding of the MVC design pattern by +learning how Pyramid implements the *view* and *controller* aspects. + +Pyramid *views* represent the *controller* part of the MVC pattern, and we'll +create a number of them. We'll also learn how Pyramid uses *routes* to properly +connect the *path* requested by a client to the *views* run by a server. + +We'll meet with Pyramid's *renderers*, the *view* in MVC. We'll start by using +a built-in renderer that simply turns view data into strings sent back to the +client as plain text responses. We'll then install a template-based renderer +and use the *jinja2* template language to create visible HTML pages the brower +can load to show our learning journal entries. + +Prepraration for Session 7 +************************** + +In preparation for session 7, please read up on getting started with `Heroku +and Python`_. We'll be deploying our learning journal to Heroku by the end of +that session. + +.. _Heroku and Python: https://devcenter.heroku.com/articles/getting-started-with-python#introduction + +Sesstion 7 - Pyramid Authentication and Deployment +-------------------------------------------------- + +In this session we will learn the basic elements of access control: +authentication and authorization. We'll learn how Pyramid implements these two +aspects of security, and will implement a basic security policy for our +learning journal. + +Once complete, we will deploy our application to Heroku. We'll make a few +changes to how our app is configured to fit with the Heroku model and will be +able to see our application in action by the end of the session. + +Time permitting, we will enhance our application with a few special features +such as Markdown formatting, and code highlighting. A list of potential future +enhancements will give you plenty to think about for the rest of the week. + + Preparation for Session 8 ************************* diff --git a/html/_sources/presentations/django_intro.txt b/html/_sources/presentations/django_intro.txt index 0e3f7ef2..c0ee5100 100644 --- a/html/_sources/presentations/django_intro.txt +++ b/html/_sources/presentations/django_intro.txt @@ -23,9 +23,9 @@ This will ensure that it is isolated from everything else we do in class Remember the basic format for creating a virtualenv:: - $ python virtualenv.py [options] + $ python -m venv [options] - $ virtualenv [options] + $ pyvenv [options] Set Up a VirtualEnv @@ -33,16 +33,16 @@ Set Up a VirtualEnv Start by creating your virtualenv:: - $ python virtualenv.py djangoenv + $ python -m venv djangoenv - $ virtualenv djangoenv + $ pyvenv djangoenv ... Then, activate it:: $ source djangoenv/bin/activate - C:\> djangoenv\Scripts\activate + C:\> djangoenv\Scripts\activate.bat Install Django @@ -50,12 +50,12 @@ Install Django Finally, install Django 1.7.4 using ``pip``:: - (djangoenv)$ pip install Django==1.7.4 - Downloading/unpacking Django==1.7.4 - Downloading Django-1.7.4-py2.py3-none-any.whl (7.4MB): 7.4MB downloaded - Installing collected packages: django - Successfully installed django - Cleaning up... + (djangoenv)$ pip install Django==1.9 + Collecting Django==1.9 + Downloading Django-1.9-py2.py3-none-any.whl (6.6MB) + 100% |████████████████████████████████| 6.6MB 47kB/s + Installing collected packages: Django + Successfully installed Django-1.9 (djangoenv)$ @@ -67,7 +67,7 @@ create one. We'll use a script installed by Django, ``django-admin.py``: .. code-block:: bash - (djangoenv)$ django-admin.py startproject mysite + (djangoenv)$ django-admin startproject mysite If you're on windows, that command is slightly different: @@ -75,6 +75,14 @@ If you're on windows, that command is slightly different: django-admin.exe startproject mysite +.. note:: If you run into trouble at this stage, please consult the + `installation documentation`_. For windows users, see also + `this guide to installation on Windows`_ + +.. _installation documentation: https://docs.djangoproject.com/en/1.9/intro/install/ +.. _this guide to installation on Windows: https://docs.djangoproject.com/en/1.9/howto/windows/ + + This will create a folder called 'mysite'. The folder contains the following structure:: @@ -105,14 +113,14 @@ What Got Created symbol ``application`` * **manage.py**: a management control script. -*django-admin.py* provides a hook for administrative tasks and abilities: +*django-admin* provides a hook for administrative tasks and abilities: * creating a new project or app * running the development server * executing tests * entering a python interpreter * entering a database shell session with your database -* much much more (run ``django-admin.py`` without an argument) +* much much more (run ``django-admin`` without an argument) *manage.py* wraps this functionality, adding the full environment of your project. @@ -147,7 +155,7 @@ Development Server At this point, you should be ready to use the development server:: (djangoenv)$ cd mysite - (djangoenv)$ python manage.py runserver + (djangoenv)$ ./manage.py runserver ... You'll see a scary warning about unapplied migrations. Ignore it for a moment. @@ -200,7 +208,7 @@ Run the following command: .. code-block:: bash - (djangoenv)$ python manage.py migrate + (djangoenv)$ ./manage.py migrate Operations to perform: Apply all migrations: admin, contenttypes, auth, sessions Running migrations: @@ -214,7 +222,7 @@ Great! Now we can set up an initial user who'll be able to do anything, a .. code-block:: bash - (djangoenv)$ python manage.py createsuperuser + (djangoenv)$ ./manage.py createsuperuser Username (leave blank to use 'cewing'): Email address: cris@crisewing.com Password: @@ -275,7 +283,7 @@ Then: .. code-block:: bash - (djangoenv)$ python manage.py startapp myblog + (djangoenv)$ ./manage.py startapp myblog This should leave you with the following structure: @@ -315,7 +323,7 @@ the Django ``Model`` class. This base class hooks in to the ORM functionality converting Python code to SQL. You can override methods from the base ``Model`` class to alter how this works or write new methods to add functionality. -Learn more about `models `_ +Learn more about `models `_ Our Post Model @@ -350,7 +358,7 @@ attributes. * There are also arguments specific to individual types You can read much more about -`Model Fields and options `_ +`Model Fields and options `_ There are some features of our fields worth mentioning in specific. Notice we have no field that is designated as the *primary key* @@ -411,6 +419,9 @@ Field Details field is *required* * The related ``null`` argument affects the SQL definition of a field: is the column NULL or NOT NULL +* Django recommends that you **not** use the ``null`` option for text fields. + It will automatically insert an empty string into the database if the field + is left blank. Installing Apps @@ -440,7 +451,7 @@ Once Django is made aware of the existence of this new app, it can make a new .. code-block:: bash - (djangoenv)$ python manage.py makemigrations myblog + (djangoenv)$ ./manage.py makemigrations myblog Migrations for 'myblog': 0001_initial.py: - Create model Post @@ -449,10 +460,11 @@ And now you can run that migration to make the changes to your database: .. code-block:: bash - (djangoenv)$ python manage.py migrate + (djangoenv)$ ./manage.py migrate Operations to perform: - Apply all migrations: admin, myblog, contenttypes, auth, sessions + Apply all migrations: sessions, myblog, contenttypes, auth, admin Running migrations: + Rendering model states... DONE Applying myblog.0001_initial... OK @@ -468,30 +480,39 @@ Django provides a management command ``shell``: * Handles connections to your database, so you can interact with live data directly. +The Django ``shell`` will use more advanced Python interpreters such as +``iPython`` if they are available. Let's go ahead and install iPython in our +``djangoenv`` to get this advantage: + +.. code-block:: bash + + (djangoenv)$ pip install ipython + ... + Let's explore the Model Instance API directly using this shell: :: - (djangoenv)$ python manage.py shell + (djangoenv)$ ./manage.py shell Instances of our model can be created by simple instantiation: -.. code-block:: python +.. code-block:: ipython - >>> from myblog.models import Post - >>> p1 = Post(title="My first post", - ... text="This is the first post I've written") - >>> p1 - + In [1]: from myblog.models import Post + In [2]: p1 = Post(title='My First Post', + ...: text='This is the first post I\'ve written') + In [3]: p1 + Out[3]: We can also validate that our new object is okay before we try to save it: -.. code-block:: python +.. code-block:: ipython - >>> p1.full_clean() - Traceback (most recent call last): - ... - ValidationError: {'author': [u'This field cannot be null.']} + In [4]: p1.full_clean() + ... + + ValidationError: {'author': ['This field cannot be null.']} Django Model Managers @@ -507,21 +528,20 @@ All Django models have a *manager*. By default it is accessed through the Let's use the *manager* to get an instance of the ``User`` class: -.. code-block:: python +.. code-block:: ipython - >>> from django.contrib.auth.models import User - >>> all_users = User.objects.all() - >>> all_users - [] - >>> u1 = all_users[0] - >>> p1.author = u1 + In [5]: from django.contrib.auth.models import User + In [6]: all_users = User.objects.all() + In [7]: all_users + Out[7]: [] + In [8]: p1.author = all_users[0] And now our instance should validate properly: -.. code-block:: python +.. code-block:: ipython - >>> p1.full_clean() - >>> + In [9]: p1.full_clean() + In [10]: Saving New Objects @@ -530,24 +550,24 @@ Saving New Objects Our model has three date fields, two of which are supposed to be auto-populated: -.. class:: python +.. code-block:: ipython - >>> print(p1.created_date) + In [11]: print(p1.created_date) None - >>> print(p1.modified_date) + In [12]: print(p1.modified_date) None Although we've instantiated a Post object, it doesn't have these values yet. That's because a model is not *created* until it's saved into the database. When we save our post, these fields will get values assigned: -.. code-block:: python +.. code-block:: ipython - >>> p1.save() - >>> p1.created_date - datetime.datetime(2015, 2, 15, 9, 3, 13, 719381, tzinfo=) - >>> p1.modified_date - datetime.datetime(2015, 2, 15, 9, 3, 13, 719932, tzinfo=) + In [13]: p1.save() + In [14]: print(p1.created_date) + 2015-12-31 19:24:29.019293+00:00 + In [15]: print(p1.modified_date) + 2015-12-31 19:24:29.019532+00:00 Updating An Instance @@ -557,12 +577,12 @@ Models operate much like 'normal' python objects. To change the value of a field, simply set the instance attribute to a new value. Call ``save()`` to persist the change: -.. code-block:: python +.. code-block:: ipython - >>> p1.title = p1.title + " (updated)" - >>> p1.save() - >>> p1.title - 'My first post (updated)' + In [16]: p1.title = p1.title + " (updated)" + In [17]: p1.save() + In [18]: p1.title + Out[18]: 'My First Post (updated)' Create a Few Posts @@ -571,19 +591,19 @@ Create a Few Posts Let's create a few more posts so we can explore the Django model manager query API: -.. code-block:: python +.. code-block:: ipython - >>> p2 = Post(title="Another post", - ... text="The second one created", - ... author=u1).save() - >>> p3 = Post(title="The third one", - ... text="With the word 'heffalump'", - ... author=u1).save() - >>> p4 = Post(title="Posters are great decoration", - ... text="When you are a poor college student", - ... author=u1).save() - >>> Post.objects.count() - 4 + In [20]: p2 = Post(title="Another post", + ....: text="The second one created", + ....: author=all_users[0]).save() + In [21]: p3 = Post(title="The third one", + ....: text="With the word 'heffalump'", + ....: author=all_users[0]).save() + In [22]: p4 = Post(title="Posters are a great decoration", + ....: text="When you are a poor college student", + ....: author=all_users[0]).save() + ....: Post.objects.count() + Out[22]: 4 The Django Query API @@ -614,18 +634,22 @@ return ``QuerySets`` and those that do not. The former may be chained without hitting the database: -.. code-block:: pycon +.. code-block:: ipython - >>> a = Post.objects.all() #<-- no query yet - >>> b = a.filter(title__icontains="post") #<-- not yet - >>> c = b.exclude(text__contains="created") #<-- nope - >>> [(p.title, p.text) for p in c] #<-- This will issue the query + In [24]: a = Post.objects.all() #<-- no query yet + In [25]: b = a.filter(title__icontains="post") #<- not yet + In [26]: c = b.exclude(text__contains="created") #<-- nope + In [27]: [(p.title, p.text) for p in c] #<-- This will issue the query + Out[27]: + [('My First Post (updated)', "This is the first post I've written"), + ('Posters are a great decoration', 'When you are a poor college student')] Conversely, the latter will issue an SQL query when executed. -.. code-block:: python +.. code-block:: ipython - >>> a.count() # immediately executes an SQL query + In [28]: a.count() #<-- immediately executes an SQL query + Out[28]: 4 QuerySets and SQL @@ -633,69 +657,74 @@ QuerySets and SQL If you are curious, you can see the SQL that a given QuerySet will use: -.. code-block:: pycon +.. code-block:: ipython - >>> print(c.query) - SELECT "myblog_post"."id", "myblog_post"."title", - "myblog_post"."text", "myblog_post"."author_id", - "myblog_post"."created_date", "myblog_post"."modified_date", - "myblog_post"."published_date" - FROM "myblog_post" - WHERE ("myblog_post"."title" LIKE %post% ESCAPE '\' - AND NOT ("myblog_post"."text" LIKE %created% ESCAPE '\' ) + In [29]: print(c.query) + SELECT "myblog_post"."id", "myblog_post"."title", "myblog_post"."text", + "myblog_post"."author_id", "myblog_post"."created_date", + "myblog_post"."modified_date", "myblog_post"."published_date" + FROM "myblog_post" + WHERE ( + "myblog_post"."title" LIKE %post% ESCAPE '\' + AND NOT ("myblog_post"."text" LIKE %created% ESCAPE '\') ) The SQL will vary depending on which DBAPI backend you use (yay ORM!!!) +.. note:: Incidentally, using this as a way to learn SQL is not a bad idea. + Exploring the QuerySet API -------------------------- -See https://docs.djangoproject.com/en/1.7/ref/models/querysets +See https://docs.djangoproject.com/en/1.9/ref/models/querysets -.. code-block:: python +.. code-block:: ipython - >>> [p.pk for p in Post.objects.all().order_by('created_date')] - [1, 2, 3, 4] - >>> [p.pk for p in Post.objects.all().order_by('-created_date')] - [4, 3, 2, 1] - >>> [p.pk for p in Post.objects.filter(title__contains='post')] - [1, 2, 4] - >>> [p.pk for p in Post.objects.exclude(title__contains='post')] - [3] - >>> qs = Post.objects.exclude(title__contains='post') - >>> qs = qs.exclude(id__exact=3) - >>> [p.pk for p in qs] - [] - >>> qs = Post.objects.exclude(title__contains='post', id__exact=3) - >>> [p.pk for p in qs] - [1, 2, 3, 4] + In [3]: [p.pk for p in Post.objects.all().order_by('created_date')] + Out[3]: [1, 2, 3, 4] + In [4]: [p.pk for p in Post.objects.all().order_by('-created_date')] + Out[4]: [4, 3, 2, 1] + In [5]: [p.pk for p in Post.objects.filter(title__contains='post')] + Out[5]: [1, 2, 4] + In [6]: [p.pk for p in Post.objects.exclude(title__contains='post')] + Out[6]: [3] + In [7]: qs = Post.objects.exclude(title__contains='post') + In [8]: qs = qs.exclude(id__exact=3) + In [9]: [p.pk for p in qs] + Out[9]: [] + In [10]: qs = Post.objects.exclude(title__contains='post', id__exact=3) + In [11]: [p.pk for p in qs] + Out[11]: [1, 2, 3, 4] + +Do all of those make sense to you? Especially consider the difference between +those last two results? Can you explain that? Updating via QuerySets ---------------------- -You can update all selected objects at the same time. - -.. rst-class:: build - -Changes are persisted without needing to call ``save``. +You can update all the objects in a QuerySet at the same time. Changes are persisted +without calling the ``save`` instance method: -.. code-block:: python +.. code-block:: ipython - >>> qs = Post.objects.all() - >>> [p.published_date for p in qs] - [None, None, None, None] - >>> from datetime import datetime - >>> from django.utils.timezone import UTC - >>> utc = UTC() - >>> now = datetime.now(utc) - >>> qs.update(published_date=now) - 4 - >>> [p.published_date for p in qs] - [datetime.datetime(2015, 2, 15, 9, 11, 32, 214189, tzinfo=), - ...] + In [12]: qs = Post.objects.all() + In [13]: [p.published_date for p in qs] + Out[13]: [None, None, None, None] + In [14]: from datetime import datetime + In [15]: from django.utils.timezone import UTC + In [16]: utc = UTC() + In [17]: now = datetime.now(utc) + In [18]: qs.update(published_date=now) + Out[18]: 4 + In [19]: [p.published_date for p in qs] + Out[19]: + [datetime.datetime(2015, 12, 31, 19, 50, 4, 99980, tzinfo=), + datetime.datetime(2015, 12, 31, 19, 50, 4, 99980, tzinfo=), + datetime.datetime(2015, 12, 31, 19, 50, 4, 99980, tzinfo=), + datetime.datetime(2015, 12, 31, 19, 50, 4, 99980, tzinfo=)] Testing Our Model @@ -756,13 +785,16 @@ Look at the way our Post represents itself in the Django shell: .. code-block:: python - >>> [p for p in Post.objects.all()] - [, , - , ] + In [2]: [p for p in Post.objects.all()] + Out[2]: + [, + , + , + ] Wouldn't it be nice if the posts showed their titles instead? In Django, the -``__unicode__`` method is used to determine how a Model instance represents -itself. Then, calling ``unicode(instance)`` gives the desired result. +``__str__`` method is used to determine how a Model instance represents +itself. Then, calling ``str(instance)`` gives the desired result. Let's write a test that demonstrates our desired outcome: @@ -772,10 +804,10 @@ Let's write a test that demonstrates our desired outcome: from myblog.models import Post # and this test method to the PostTestCase - def test_unicode(self): + def test_string_representation(self): expected = "This is a title" p1 = Post(title=expected) - actual = unicode(p1) + actual = str(p1) self.assertEqual(expected, actual) @@ -787,7 +819,7 @@ Quit your Django shell and in your terminal run the test we wrote: .. code-block:: bash - (djangoenv)$ python manage.py test myblog + (djangoenv)$ ./manage.py test myblog We have yet to implement this enhancement, so our test should fail: @@ -796,10 +828,10 @@ We have yet to implement this enhancement, so our test should fail: Creating test database for alias 'default'... F ====================================================================== - FAIL: test_unicode (myblog.tests.PostTestCase) + FAIL: test_string_representation (myblog.tests.PostTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): - File "/Users/cewing/projects/training/uw_pce/training.python_web/scripts/session07/mysite/myblog/tests.py", line 15, in test_unicode + File "/Users/cewing/projects/training/uw_pce/training.python_web/scripts/session07/mysite/myblog/tests.py", line 15, in test_string_representation self.assertEqual(expected, actual) AssertionError: 'This is a title' != u'Post object' @@ -809,7 +841,7 @@ We have yet to implement this enhancement, so our test should fail: FAILED (failures=1) Destroying test database for alias 'default'... -Let's add an appropriate ``__unicode__`` method to our Post class. +Let's add an appropriate ``__str__`` method to our Post class. * It will take ``self`` as its only argument * And it should return its own title as the result @@ -820,12 +852,12 @@ Let's add an appropriate ``__unicode__`` method to our Post class. class Post(models.Model): #... - def __unicode__(self): + def __str__(self): return self.title Re-run the tests to see if that worked:: - (djangoenv)$ python manage.py test myblog + (djangoenv)$ ./manage.py test myblog Creating test database for alias 'default'... . ---------------------------------------------------------------------- @@ -852,7 +884,7 @@ of style and taste (and of budget). We've only begun to test our blog app. We'll be adding many more tests later. In between, you might want to take a look at the `Django testing documentation`_: -.. _Django testing documentation: https://docs.djangoproject.com/en/1.7/topics/testing/ +.. _Django testing documentation: https://docs.djangoproject.com/en/1.9/topics/testing/ The Django Admin @@ -926,10 +958,10 @@ stroke. from django.contrib import admin # <- should be present already - urlpatterns = patterns('', + urlpatterns = [ ... url(r'^admin/', include(admin.site.urls)), #<- this should be too - ) + ] We can now view the admin. We'll use the Django development server. @@ -942,7 +974,7 @@ development server: :: - (djangoenv)$ python manage.py runserver + (djangoenv)$ ./manage.py runserver Validating models... 0 errors found @@ -998,7 +1030,7 @@ Reload the admin index page in your browser. You should now see a listing for the Myblog app, and an entry for Posts. Visit the admin page for Posts. You should see the posts we created earlier in -the Django shell. Look at the listing of Posts. Because of our ``__unicode__`` +the Django shell. Look at the listing of Posts. Because of our ``__str__`` method we see a nice title. Are there other fields you'd like to see listed? Click on a Post, note what is diff --git a/html/_sources/presentations/session01.txt b/html/_sources/presentations/session01.txt index b6aa18e9..98dbe9f9 100644 --- a/html/_sources/presentations/session01.txt +++ b/html/_sources/presentations/session01.txt @@ -1,22 +1,19 @@ -.. slideconf:: - :autoslides: True - ********** Session 01 ********** -.. image:: /_static/python.png +.. figure:: /_static/python.png :align: center - :width: 43% + :width: 50% + **Networking and Sockets** -Introductions -============= +Computer Communications +======================= .. rst-class:: large centered -Wherin we learn about the Model View Controller approach to app design and -explore data persistence in Python. +Wherein we learn about how computers speak to each-other over a network. But First --------- @@ -94,1711 +91,1207 @@ Please check frequently. I will update with great regularity Introductions -Working with Virtualenv -======================= - -.. rst-class:: large +TCP/IP +------ -| For every -| add-on package installed -| in a system Python, -| the gods kill a kitten -| -| - me +.. figure:: /_static/network_topology.png + :align: left -Why Virtualenv? ---------------- + http://en.wikipedia.org/wiki/Internet_Protocol_Suite .. rst-class:: build -* You will need to install packages that aren't in the Python standard - Library -* You often need to install *different* versions of the *same* library for - different projects -* Conflicts arising from having the wrong version of a dependency installed can - cause long-term nightmares -* Use `virtualenv`_ ... -* **Always** - -.. _virtualenv: http://www.virtualenv.org/ - -Installing Virtualenv ---------------------- - -The best way is to install directly in your system Python (one exception to the -rule). +* processes can communicate +* inside one machine +* between two machines +* among many machines -.. rst-class:: build -.. container:: - To do so you will have to have `pip`_ installed. +.. nextslide:: - Try the following command: +.. figure:: /_static/data_in_tcpip_stack.png + :align: left + :width: 100% - .. code-block:: bash + http://en.wikipedia.org/wiki/Internet_Protocol_Suite - $ which pip - /usr/local/bin/pip +.. rst-class:: build - If the ``which`` command returns no value for you, then ``pip`` is not - installed in your system. To fix this, follow `the instructions here`_. +* Process divided into 'layers' +* 'Layers' are mostly arbitrary +* Different descriptions have different layers +* Most common is the 'TCP/IP Stack' -.. _pip: https://pip.pypa.io/en/latest/index.html -.. _the instructions here: https://pip.pypa.io/en/latest/installing.html -.. nextslide:: +The TCP/IP Stack - Link +----------------------- -Once you have ``pip`` installed in your system, you can use it to install -`virtualenv`_. +The bottom layer is the 'Link Layer' .. rst-class:: build -.. container:: - Because you are installing it into your system python, you will most likely - need ``superuser`` privileges to do so: +* Deals with the physical connections between machines, 'the wire' - .. code-block:: bash +* Packages data for physical transport - $ sudo pip install virtualenv - Downloading/unpacking virtualenv - Downloading virtualenv-1.11.2-py2.py3-none-any.whl (2.8MB): 2.8MB downloaded - Installing collected packages: virtualenv - Successfully installed virtualenv - Cleaning up... +* Executes transmission over a physical medium -.. nextslide:: + .. rst-class:: build -Great. Once that's done, you should find that you have a ``virtualenv`` -command available to you from your shell: + * what that medium is is arbitrary -.. code-block:: bash +* Implemented in the Network Interface Card(s) (NIC) in your computer - $ virtualenv --help - Usage: virtualenv [OPTIONS] DEST_DIR - Options: - --version show program's version number and exit - -h, --help ... +The TCP/IP Stack - Internet +--------------------------- -Using Virtuelenv ----------------- - -Creating a new virtualenv is very very simple: +Moving up, we have the 'Internet Layer' .. rst-class:: build -.. container:: - - .. code-block:: bash - - $ virtualenv [options] +* Deals with addressing and routing - ```` is just the name of the environment you want to create. + .. rst-class:: build - It's arbitrary, so name them to be easily remembered. + * Where are we going and how do we get there? -.. nextslide:: - -Let's make one for demonstration purposes: +* Agnostic as to physical medium (IP over Avian Carrier - IPoAC) -.. code-block:: bash +* Makes no promises of reliability - $ virtualenv demoenv - New python executable in demoenv/bin/python - Installing setuptools, pip...done. +* Two addressing systems + .. rst-class:: build -.. nextslide:: What Happened? + * IPv4 (current, limited '192.168.1.100') -When you ran that command, a couple of things took place: + * IPv6 (future, 3.4 x 10^38 addresses, '2001:0db8:85a3:0042:0000:8a2e:0370:7334') -.. rst-class:: build -* A new directory with your requested name was created -* A new Python executable was created in /bin (/Scripts on Windows) -* The new Python was cloned from your system Python (where virtualenv was - installed) -* The new Python was isolated from any libraries installed in the old Python -* Setuptools was installed so you have ``easy_install`` for this new python -* Pip was installed so you have ``pip`` for this new python - -Activation ----------- - -Every virtualenv you create contains an executable Python command. - -.. rst-class:: build -.. container:: - - If you do a quick check to see which Python executable is found by your - terminal, you'll see that it is not the one: - - .. code-block:: bash - - $ which python - /usr/bin/python +.. nextslide:: - You can execute the new Python by explicitly pointing to it: +.. rst-class:: large center - .. code-block:: bash +That's 4.3 x 10^28 addresses *per person alive today* - $ ./demoenv/bin/python -V - Python 2.7.5 -.. nextslide:: +The TCP/IP Stack - Transport +---------------------------- -But that's tedious and hard to remember. +Next up is the 'Transport Layer' .. rst-class:: build -.. container:: - Instead, ``activate`` your virtualenv using the ``source`` shell command: +* Deals with transmission and reception of data - .. code-block:: bash - - $ source demoenv/bin/activate - (demoenv)$ which python - /Users/cewing/demoenv/bin/python + * error correction, flow control, congestion management - Notice that when a virtualenv is *active* you can see it in your command - prompt. +* Common protocols include TCP & UDP - So long as the virtualenv is *active* the ``python`` executable that will - be used will be the new one in your ``demoenv``. + * TCP: Tranmission Control Protocol -Installing Packages -------------------- + * UDP: User Datagram Protocol -Since ``pip`` is also installed, the ``pip`` that is used to install new -software will also be the one in ``demoenv``. +* Not all Transport Protocols are 'reliable' -.. code-block:: bash + .. rst-class:: build - (demoenv)$ which pip - /Users/cewing/demoenv/bin/pip + * TCP ensures that dropped packets are resent -.. rst-class:: build -.. container:: + * UDP makes no such assurance - This means that using these tools to install packages will install them - *into your virtual environment only* + * Reliability is slow and expensive - The are not installed into the system Python. - - Let's see this in action. .. nextslide:: -We'll install a package called ``docutils`` +The 'Transport Layer' also establishes the concept of a **port** .. rst-class:: build .. container:: - It provides tools for creating documentation using ReStructuredText - - Install it using pip (while your virtualenv is active): - - .. code-block:: bash - - (demoenv)$ pip install docutils - Downloading/unpacking docutils - Downloading docutils-0.11.tar.gz (1.6MB): 1.6MB downloaded - Running setup.py (path:/Users/cewing/demoenv/build/docutils/setup.py) egg_info for package docutils - ... - changing mode of /Users/cewing/demoenv/bin/rst2xml.py to 755 - changing mode of /Users/cewing/demoenv/bin/rstpep2html.py to 755 - Successfully installed docutils - Cleaning up... - -.. nextslide:: - -And now, when we fire up our Python interpreter, the docutils package is -available to us: - -.. code-block:: pycon - - (demoenv)$ python - Python 2.7.5 (default, Aug 25 2013, 00:04:04) - [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin - Type "help", "copyright", "credits" or "license" for more information. - >>> import docutils - >>> docutils.__path__ - ['/Users/cewing/demoenv/lib/python2.7/site-packages/docutils'] - >>> ^d - (demoenv)$ - -.. nextslide:: Side Effects - -Like some other Python libraries, the ``docutils`` package provides a number of -executable scripts when it is installed. + .. rst-class:: build -.. rst-class:: build -.. container:: + * IP Addresses designate a specific *machine* on the network - You can see these in the ``bin`` directory inside your virtualenv: + * A **port** provides addressing for individual *applications* in a single + host - .. code-block:: bash + * 192.168.1.100:80 (the *:80* part is the **port**) - (demoenv)$ ls ./demoenv/bin - ... - python - rst2html.py - rst2latex.py - ... + * [2001:db8:85a3:8d3:1319:8a2e:370:7348]:443 (*:443* is the **port**) - These scripts are set up to execute using the Python with which they were - built. + This means that you don't have to worry about information intended for your + web browser being accidentally read by your email client. - Running these scripts will use the Python executable in your virtualenv, - *even if that virtualenv is not active*! -Deactivation ------------- +.. nextslide:: -So you've got a virtual environment created and activated so you can work with -it. +There are certain **ports** which are commonly understood to belong to given +applications or protocols: .. rst-class:: build .. container:: - Eventually you'll need to stop working with this ``virtualenv`` and switch - to another - - It's a good idea to keep a separate ``virtualenv`` for every project you - work on. + .. rst-class:: build - When a ``virtualenv`` is active, all you have to do is use the - ``deactivate`` command: + * 80/443 - HTTP/HTTPS + * 20 - FTP + * 22 - SSH + * 23 - Telnet + * 25 - SMTP + * ... - .. code-block:: bash + These ports are often referred to as **well-known ports** - (demoenv)$ deactivate - $ which python - /usr/bin/python + .. rst-class:: small - Note that your shell prompt returns to normal, and now the executable - Python found when you check ``python`` is the system one again. + (see http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers) -Cleaning Up ------------ +.. nextslide:: -The final advantage that ``virtualenv`` offers you as a developer is -the ability to easily remove a batch of installed Python software from your -system. +Ports are grouped into a few different classes .. rst-class:: build -.. container:: - Consider a situation where you installed a library that breaks your Python - (it happens) +* Ports numbered 0 - 1023 are *reserved* - If you are working in your system Python, you now have to figure out what - that package installed +* Ports numbered 1024 - 65535 are *open* - You have to figure out where it is +* Ports numbered 1024 - 49151 may be *registered* - And you have to go clean it out manually. +* Ports numbered 49152 - 65535 are called *ephemeral* - With ``virtualenv`` you simply remove the directory ``virtualenv`` created - when you started out. -.. nextslide:: +The TCP/IP Stack - Application +------------------------------ -Let's do that with our ``demoenv``: +The topmost layer is the 'Application Layer' .. rst-class:: build .. container:: - .. code-block:: bash - - $ rm -rf demoenv - - And that's it. - - The entire environment and all the packages you installed into it are now - gone. + .. rst-class:: build - There are no traces left to pollute your world. + * Deals directly with data produced or consumed by an application -.. nextslide:: Break Time + * Reads or writes data using a set of understood, well-defined **protocols** -Let's take a moment to rest up and absorb what we've learned. + * HTTP, SMTP, FTP etc. -When we return, we'll begin talking about a particular approach to thinking -about application design: + * Does not know (or need to know) about lower layer functionality -.. rst-class:: centered + * The exception to this rule is **endpoint** data (or IP:Port) -**Model View Controller** + .. rst-class:: centered -MVC Applications -================ + **this is where we live and work** -.. figure:: http://upload.wikimedia.org/wikipedia/commons/4/40/MVC_passive_view.png - :align: center - :width: 50% - By Alan Evangelista (Own work) [CC0], via Wikimedia Commons +Sockets +------- -Separation of Concerns ----------------------- +Think back for a second to what we just finished discussing, the TCP/IP stack. .. rst-class:: build .. container:: - In the first part of this course, you were introduced to the concept of - *Object Oriented Programming* - - OOP was `first formalized`_ in the 1970s in *Smalltalk*, invented by Alan - Kay at *Xerox PARC* - - *Smalltalk* was also the first language which utilized the - `Model View Controller`_ design pattern. - - This pattern (like all `design patterns`_) seeks to provide a way of - thinking that helps to make software design easier. - - In this case, the goal is to help clarify the high-level *separation of - concerns* in a system. - -.. _first formalized: http://en.wikipedia.org/wiki/Object-oriented_programming#History -.. _Model View Controller: http://en.wikipedia.org/wiki/Model–view–controller -.. _design patterns: http://en.wikipedia.org/wiki/Software_design_pattern - -Three Components ----------------- - -The pattern divides the elements of a system into three parts: + .. rst-class:: build -.. rst-class:: build + * The *Internet* layer gives us an **IP Address** -Model: - This component represents the *data* that comprises the system, and the - *logic* used to manipulate that data. + * The *Transport* layer establishes the idea of a **port**. -View: - This component can be any *representation* of the data to the outside world: - a chart, diagram, table, user interface, etc. + * The *Application* layer doesn't care about what happens below... - It also includes representations of the *actions* available in the system. + * *Except for* **endpoint data** (IP:Port) -Controller: - This component coordinates the Model and the View in a system. + A **Socket** is the software representation of that endpoint. - It accepts input from a user and channels that input into the Model. + Opening a **socket** creates a kind of transceiver that can send and/or + receive *bytes* at a given IP address and Port. - It accepts information about the current state of the Model and transmits - that information to the View. -On the Web ----------- +Sockets in Python +----------------- -This pattern has proven useful for thinking about the applications we build for -the web. +Python provides a standard library module which provides socket functionality. +It is called **socket**. .. rst-class:: build .. container:: - A web browser provides a convenient container for *views* of data. + The library is really just a very thin wrapper around the system + implementation of *BSD Sockets* - These *views* are created by *controller* software hosted on a server. + Let's spend a few minutes getting to know this module. - This *controller* software accepts input from users via *HTTP requests*, - channeling it into a *data model* usually stored in some database. + We're going to do this next part together, so open up a terminal and start + an iPython interpreter - The *controller* returns information about the state of the *data model* to - the user via *HTTP responses* .. nextslide:: -This approach is so common, that it has been formalized into any number of *web -frameworks* +The Python sockets library allows us to find out what port a *service* uses: .. rst-class:: build .. container:: - *Web frameworks* abstract away the specifics of the *HTTP request/response - cycle*, leaving simple MVC components for the developer to use. - - *Web frameworks* exist in nearly all modern languages. - - Python has scores of them. - - Over the weeks to come, we'll learn about two of them, `Pyramid`_ and - `Django`_. + .. code-block:: ipython -.. _Pyramid: http://www.pylonsproject.org/projects/pyramid/about -.. _Django: https://www.djangoproject.com/ - -A Word About Terminology ------------------------- - -Although the MVC pattern is a useful abstraction, there are a few differences -in how things are named in Python web frameworks - -.. rst-class:: build centered -.. container:: + In [1]: import socket - model <--> model + In [2]: socket.getservbyname('ssh') + Out[2]: 22 - controller <--> view + You can also do a *reverse lookup*, finding what service uses a given *port*: - view <--> template (or even HTTP response) + .. code-block:: ipython - .. rst-class:: left + In [3]: socket.getservbyport(80) + Out[3]: 'http' - For more on this difference, you can `read this`_ from the Pyramid design - documentation. -.. _read this: http://docs.pylonsproject.org/projects/pyramid/en/latest/designdefense.html#pyramid-gets-its-terminology-wrong-mvc - -Our First Application -===================== - -.. rst-class:: left +.. nextslide:: -But enough abstract blabbering. +The sockets library also provides tools for finding out information about +*hosts*. For example, you can find out about the hostname and IP address of +the machine you are currently using: -.. rst-class:: build left -.. container:: +.. code-block:: ipython - There's no better way to make concepts like these concrete than to build - something using them. + In [4]: socket.gethostname() + Out[4]: 'Banks' - Let's make an application! + In [5]: socket.gethostbyname(socket.gethostname()) + Out[5]: '127.0.0.1' - We're going to build a Learning Journal. +.. nextslide:: - When we're done, you'll have a live, online application you can use to keep - note of the things you are learning about Python development. +You can also find out about machines that are located elsewhere, assuming you +know their hostname. For example: - We'll use one of our Python web framework to do this: `Pyramid`_ +.. code-block:: ipython -Pyramid -------- + In [6]: socket.gethostbyname('google.com') + Out[6]: '173.194.33.100' -First published in 2010, `Pyramid`_ is a powerful, flexible web framework. + In [7]: socket.gethostbyname('uw.edu') + Out[7]: '128.95.155.134' -.. rst-class:: build -.. container:: + In [8]: socket.gethostbyname('crisewing.com') + Out[8]: '108.168.213.86' - You can create compelling one-page applications, much like in - microframeworks like Flask - You can also create powerful, scalable applications using the full - power of Python +.. nextslide:: - Created by the combined powers of the teams behind Pylons and Zope +The ``gethostbyname_ex`` method of the ``socket`` library provides more +information about the machines we are exploring: - It represents the first true second-generation web framework in - existence. +.. code-block:: ipython -Starting the Project --------------------- + In [9]: socket.gethostbyname_ex('crisewing.com') + Out[9]: ('crisewing.com', [], ['108.168.213.86']) -The first step is to prepare for the project. + In [10]: socket.gethostbyname_ex('google.com') + Out[10]: + ('google.com', + [], + ['173.194.33.100', '173.194.33.103', + ... + '173.194.33.97', '173.194.33.104']) -.. rst-class:: build -.. container:: +.. nextslide:: - Begin by creating a location where you'll do your work. +To create a socket, you use the **socket** method of the ``socket`` library. +It takes up to three optional positional arguments (here we use none to get +the default behavior): - I generally put all my work in a folder called ``projects`` in my home - directory: +.. code-block:: ipython - .. code-block:: bash + In [11]: foo = socket.socket() - $ cd - $ mkdir projects - $ cd projects - $ mkdir learning-journal - $ cd learning-journal - $ pwd - /Users/cewing/project/learning-journal + In [12]: foo + Out[12]: -.. nextslide:: Creating an Environment +.. nextslide:: -We continue our preparations by creating a virtualenv we will use for it. +A socket has some properties that are immediately important to us. These +include the *family*, *type* and *protocol* of the socket: .. rst-class:: build .. container:: - Again, this will help us to keep our work here isolated from anything else - we do. + .. code-block:: ipython - Remember how to make a new virtualenv? + In [13]: foo.family + Out[13]: - .. code-block:: bash + In [14]: foo.type + Out[14]: - $ virtualenv ljenv - New python executable in ljenv/bin/python - Installing setuptools, pip...done. + In [15]: foo.proto + Out[15]: 0 - And then, how to activate it? + You might notice that the values for these properties are integers. In + fact, these integers are **constants** defined in the socket library. - .. code-block:: bash - $ source ljenv/bin/activate - (ljenv)$ +.. nextslide:: A quick utility method -.. nextslide:: Installing Pyramid - -Next, we install the Pyramid web framework into our new virtualenv. +Let's define a method in place to help us see these constants. It will take a +single argument, the shared prefix for a defined set of constants: .. rst-class:: build .. container:: - We can do this with the ``pip`` in our active ``ljenv``: + (you can also find this in ``resources/session01/socket_tools.py``) - .. code-block:: bash + .. code-block:: ipython - (ljenv)$ pip install pyramid - Collecting pyramid - Downloading pyramid-1.5.2-py2.py3-none-any.whl (545kB) - 100% |################################| 548kB 172kB/s - ... - Successfully installed PasteDeploy-1.5.2 WebOb-1.4 - pyramid-1.5.2 repoze.lru-0.6 translationstring-1.3 - venusian-1.0 zope.deprecation-4.1.1 zope.interface-4.1.2 + In [37]: def get_constants(prefix): + ....: """mapping of socket module constants to their names""" + ....: return {getattr(socket, n): n + ....: for n in dir(socket) + ....: if n.startswith(prefix) + ....: } + ....: - Once that is complete, we are ready to create a *scaffold* for our project. -Working with Pyramid --------------------- +Socket Families +--------------- -Many web frameworks require at least a bit of *boilerplate* code to get -started. +Think back a moment to our discussion of the *Internet* layer of the TCP/IP +stack. There were a couple of different types of IP addresses: .. rst-class:: build .. container:: - Pyramid does not. + .. rst-class:: build - However, our application will require a database and handling that does - require some. + * IPv4 ('192.168.1.100') - Pyramid provides a system for creating boilerplate called ``pcreate``. + * IPv6 ('2001:0db8:85a3:0042:0000:8a2e:0370:7334') - You use it to generate the skeleton for a project based on some pattern: - .. code-block:: bash + The **family** of a socket corresponds to the *addressing system* it uses + for connecting. + +.. nextslide:: - (ljenv)$ pcreate -s alchemy learning_journal - Creating directory /Users/cewing/projects/learning-journal/learning_journal - ... - Welcome to Pyramid. Sorry for the convenience. - =============================================================================== - - Let's take a quick look at what that did - -.. nextslide:: What You Get - -.. code-block:: bash - - (ljenv)$ tree learning_journal/ - learning_journal/ - ... - ├── development.ini - ├── learning_journal - │   ├── __init__.py - │   ├── models.py - │   ├── scripts - │   │   ├── __init__.py - │   │   └── initializedb.py - │   ├── static - ... - │   ├── templates - │   │   └── mytemplate.pt - │   ├── tests.py - │   └── views.py - ├── production.ini - └── setup.py - -.. nextslide:: Saving Your Work - -You've now created something worth saving. +Families defined in the ``socket`` library are prefixed by ``AF_``: .. rst-class:: build .. container:: - Start by initializing a new git repository in the `learning_journal` folder - you just created: - - .. code-block:: bash - - (ljenv)$ cd learning_journal - (ljenv)$ git init - Initialized empty Git repository in - /Users/cewing/projects/learning-journal/learning_journal/.git/ - -.. nextslide:: Saving Your Work + .. code-block:: ipython -Check ``git status`` to see where things stand: + In [39]: families = get_constants('AF_') -.. code-block:: bash + In [40]: families + Out[40]: + {: 'AF_UNSPEC', + : 'AF_UNIX', + : 'AF_INET', + ... + : 'AF_INET6', + : 'AF_SYSTEM'} - (ljenv)$ git status - On branch master + *Your results may vary* - Initial commit + Of all of these, the ones we care most about are ``2`` (IPv4) and ``30`` + (IPv6). - Untracked files: - (use "git add ..." to include in what will be committed) - CHANGES.txt - MANIFEST.in - README.txt - development.ini - learning_journal/ - production.ini - setup.py +.. nextslide:: Unix Domain Sockets -.. nextslide:: Add the Project Code -Add your work to this new repository: - -.. code-block:: bash - - (ljenv)$ git add . - (ljenv)$ git status - ... - Changes to be committed: - (use "git rm --cached ..." to unstage) - - new file: CHANGES.txt - new file: MANIFEST.in - ... - new file: production.ini - new file: setup.py - -.. nextslide:: Ignore Irrelevant Files - -Python creates ``.pyc`` files when it executes your code. +When you are on a machine with an operating system that is Unix-like, you will +find another generally useful socket family: ``AF_UNIX``, or Unix Domain +Sockets. Sockets in this family: .. rst-class:: build -.. container:: - - There are many other files you don't want or need in your repository - - You can ignore this in ``git`` with the ``.gitignore`` file. - Create one now, in this same directory, and add the following basic lines:: +* connect processes **on the same machine** - *.pyc - .DS_Store +* are generally a bit slower than IPC connnections - Finally, add this new file to your repository, too. +* have the benefit of allowing the same API for programs that might run on one + machine __or__ across the network -.. nextslide:: Make It Permanent +* use an 'address' that looks like a pathname ('/tmp/foo.sock') -To preserve all these changes, you'll need to commit what you've done: -.. code-block:: bash +.. nextslide:: Test your skills - (ljenv)$ git commit -m "initial commit of the Pyramid learning journal" +What is the *default* family for the socket we created just a moment ago? .. rst-class:: build .. container:: - This will make a first commit here in this local repository. + (remember we bound the socket to the symbol ``foo``) - For homework, you'll put this into GitHub, but this is enough for now. + How did you figure this out? - Let's move on to learning about what we've built so far. -.. nextslide:: Project Structure +Socket Types +------------ -When you ran the ``pcreate`` command, a new folder was created: -``learning_journal``. +The socket *type* determines the semantics of socket communications. .. rst-class:: build .. container:: - This folder contains your *project*. + Look up socket type constants with the ``SOCK_`` prefix: - At the top level, you have *configuration* (.ini files) + .. code-block:: ipython - You also have a file called ``setup.py`` + In [42]: types = get_constants('SOCK_') - This file turns this collection of Python code and configuration into an - *installable Python distribution* + In [43]: types + Out[43]: + {: 'SOCK_STREAM', + : 'SOCK_DGRAM', + : 'SOCK_RAW', + : 'SOCK_RDM', + : 'SOCK_SEQPACKET'} - Let's take a moment to look over the code in that file + The most common are ``1`` (Stream communication (TCP)) and ``2`` (Datagram + communication (UDP)). -.. nextslide:: ``setup.py`` -.. code-block:: python +.. nextslide:: Test your skills - from setuptools import setup, find_packages - ... - requires = [ - 'pyramid', - ... # packages on which this software depends (dependencies) - ] - setup(name='learning_journal', - version='0.0', - ... # package metadata (used by PyPI) - install_requires=requires, - # Entry points are ways that we can run our code once installed - entry_points="""\ - [paste.app_factory] - main = learning_journal:main - [console_scripts] - initialize_learning_journal_db = learning_journal.scripts.initializedb:main - """, - ) - -Pyramid is Python ------------------ - -In the ``__init__.py`` file of your app *package*, you'll find a ``main`` -function: - -.. code-block:: python - - def main(global_config, **settings): - """ This function returns a Pyramid WSGI application. - """ - engine = engine_from_config(settings, 'sqlalchemy.') - DBSession.configure(bind=engine) - Base.metadata.bind = engine - config = Configurator(settings=settings) - config.include('pyramid_chameleon') - config.add_static_view('static', 'static', cache_max_age=3600) - config.add_route('home', '/') - config.scan() - return config.make_wsgi_app() +What is the *default* type for our generic socket, ``foo``? -Let's take a closer look at this, line by line. -.. nextslide:: System Configuration - -.. code-block:: python - - def main(global_config, **settings): +Socket Protocols +---------------- -Configuration is passed in to an application after being read from the -``.ini`` file we saw above. +A socket also has a designated *protocol*. The constants for these are +prefixed by ``IPPROTO_``: .. rst-class:: build .. container:: - These files contain sections (``[app:main]``) containing ``name = value`` - pairs of *configuration data* + .. code-block:: ipython - This data is parsed with the Python - `ConfigParser `_ module. + In [45]: protocols = get_constants('IPPROTO_') - The result is a dict of values: + In [46]: protocols + Out[46]: + {0: 'IPPROTO_IP', + ... + 6: 'IPPROTO_TCP', + ... + 17: 'IPPROTO_UDP', + ...} - .. code-block:: python + The choice of which protocol to use for a socket is determined by the + *internet layer* protocol you intend to use. ``TCP``? ``UDP``? ``ICMP``? + ``IGMP``? - {'app:main': {'pyramid.reload_templates': True, ...}, ...} - The default section of the file is passed in as ``global_config``, the - section for *this app* as ``settings``. +.. nextslide:: Test your skills -.. nextslide:: Database Configuration +What is the *default* protocol used by our generic socket, ``foo``? -.. code-block:: python - from sqlalchemy import engine_from_config - from .models import DBSession, Base - ... - engine = engine_from_config(settings, 'sqlalchemy.') - DBSession.configure(bind=engine) - Base.metadata.bind = engine +Customizing Sockets +------------------- -We will use a package called ``SQLAlchemy`` to interact with our database. +These three properties of a socket correspond to the three positional +arguments you may pass to the socket constructor. .. rst-class:: build .. container:: - Our connection is set up using settings read from the ``.ini`` file. - - Can you find the settings for the database? + Using them allows you to create sockets with specific communications + profiles: - The ``DBSession`` ensures that each *database transaction* is tied to HTTP - requests. + .. code-block:: ipython - The ``Base`` provides a parent class that will hook our *models* to the - database. + In [3]: socket.socket(socket.AF_INET, + ...: socket.SOCK_DGRAM, + ...: socket.IPPROTO_UDP) + Out[3]: -.. nextslide:: App Configuration - -.. code-block:: python - config = Configurator(settings=settings) - config.include('pyramid_chameleon') - config.add_static_view('static', 'static', cache_max_age=3600) - config.add_route('home', '/') - config.scan() +Break Time +---------- -Pyramid controlls application-level configuration using a ``Configurator`` class. +So far we have: .. rst-class:: build .. container:: - It uses app-specific settings passed in from the ``.ini`` file + .. rst-class:: build - We can also ``include`` configuration from other add-on packages + * learned about the "layers" of the TCP/IP Stack + * discussed *families*, *types* and *protocols* in sockets + * learned how to create sockets with a specific communications profile. - Additionally, we can configure *routes* and *views* needed to connect our - application to the outside world here (more on this next week). + When we return we'll learn how to find the communcations profiles of remote + sockets, how to connect to them, and how to send and receive messages. - Finally, the ``Configurator`` instance performs a ``scan`` to ensure there - are no problems with what we've created. + Take a few minutes now to clear your head (do not quit your python + interpreter). -.. nextslide:: A Last Word on Configuration -We will return to the configuration of our application repeatedly over the next -sessions. +Address Information +------------------- + +When you are creating a socket to communicate with a remote service, the +remote socket will have a specific communications profile. .. rst-class:: build .. container:: - Pyramid configuration is powerful and flexible. - - We'll use a few of its features + The local socket you create must match that communications profile. - But there's a lot more you could (and should) learn. + How can you determine the *correct* values to use? - Read about it in the `configuration chapter`_ of the Pyramid documentation. + .. rst-class:: centered -.. _configuration chapter: http://docs.pylonsproject.org/projects/pyramid/en/latest/api/config.html + **You ask.** -.. nextslide:: Break Time - -Let's take a moment to rest up and absorb what we've learned. - -When we return, we'll see how we can create *models* that will embody the data -for our Learning Journal application. - -.. rst-class:: centered +.. nextslide:: -**Pyramid Models** +The function ``socket.getaddrinfo`` provides information about available +connections on a given host. +.. code-block:: python -Models in Pyramid -================= + socket.getaddrinfo('127.0.0.1', 80) -.. rst-class:: left +.. rst-class:: build .. container:: - The central component of MVC, the model, captures the behavior of the - application in terms of its problem domain, independent of the user - interface. The model directly manages the data, logic and rules of the - application + This provides all you need to make a proper connection to a socket on a + remote host. The value returned is a tuple of: - -- from the Wikipedia article on `Model-view-controller`_ + .. rst-class:: build -.. _Model-view-controller: http://en.wikipedia.org/wiki/Model–view–controller + * socket family + * socket type + * socket protocol + * canonical name (usually empty, unless requested by flag) + * socket address (tuple of IP and Port) -Models and ORMs ---------------- -In an MVC application, we define the *problem domain* by creating one or more -*Models*. +.. nextslide:: A quick utility method -.. rst-class:: build -.. container:: - - These capture relevant details about the information we want to preserve - and how we want to interact with it. +Again, let's create a utility method in-place so we can see this in action: - In Python-based MVC applications, these *Models* are implemented as Python - classes. +.. code-block:: ipython - The individual bits of data we want to know about are *attributes* of our - classes. + In [10]: def get_address_info(host, port): + ....: for response in socket.getaddrinfo(host, port): + ....: fam, typ, pro, nam, add = response + ....: print('family: {}'.format(families[fam])) + ....: print('type: {}'.format(types[typ])) + ....: print('protocol: {}'.format(protocols[pro])) + ....: print('canonical name: {}'.format(nam)) + ....: print('socket address: {}'.format(add)) + ....: print('') + ....: - The actions we want to take using that data are *methods* of our classes. +(you can also find this in ``resources/session01/socket_tools.py``) - Together, we can refer to this as the *API* of our system. -.. nextslide:: Persistence +.. nextslide:: On Your Own Machine -It's all well and good to have a set of Python classes that represent your -system. +Now, ask your own machine what possible connections are available for 'http': .. rst-class:: build .. container:: - But what happens when you want to *save* information. - - What happens to a instance of a Python class when you quit the interprer? + .. code-block:: ipython - When your script stops running? + In [11]: get_address_info(socket.gethostname(), 'http') + family: AF_INET + type: SOCK_DGRAM + protocol: IPPROTO_UDP + canonical name: + socket address: ('127.0.0.1', 80) - The code in a website runs when an HTTP request comes in from a client. + family: AF_INET + type: SOCK_STREAM + protocol: IPPROTO_TCP + canonical name: + socket address: ('127.0.0.1', 80) - It stops running when an HTTP response goes back out to the client. + What answers do you get? - So what happens to the data in your system in-between these moments? - The data must be *persisted* +.. nextslide:: On the Internet -.. nextslide:: Alternatives +.. code-block:: ipython -In the last class from part one of this series, you explored a number of -alternatives for persistence - -.. rst-class:: build + In [12]: get_address_info('crisewing.com', 'http') + family: AF_INET + type: SOCK_DGRAM + protocol: IPPROTO_UDP + canonical name: + socket address: ('108.168.213.86', 80) -* Python Literals -* Pickle/Shelf -* Interchange Files (CSV, XML, INI) -* Object Stores (ZODB, Durus) -* NoSQL Databases (MongoDB, CouchDB) -* SQL Databases (sqlite, MySQL, PostgreSQL, Oracle, SQLServer) + family: AF_INET + type: SOCK_STREAM + protocol: IPPROTO_TCP + canonical name: + socket address: ('108.168.213.86', 80) .. rst-class:: build .. container:: - Any of these might be useful for certain types of applications. + Try a few other servers you know about. - On the web, you tend to see two used the most: - .. rst-class:: build - - * NoSQL - * SQL - -.. nextslide:: Choosing One - -How do you choose one over the other? +Client Side +=========== .. rst-class:: build .. container:: - In general, the telling factor is going to be how you intend to use your - data. + .. rst-class:: large - In systems where the dominant feature is viewing/interacting with - individual objects, a NoSQL storage solution might be the best way to go. + Let's put this to use - In systems with objects that are related to eachother, SQL-based Relational - Databases are a better choice. + We'll communicate with a remote server as a *client* - Our system is more like this latter type (trust me on that one for now). - We'll be using SQL (sqlite to start with). +Construct a Socket +------------------ +We've already made a socket ``foo`` using the generic constructor without any +arguments. We can make a better one now by using real address information from +a real server online [**do not type this yet**]: -.. nextslide:: Objects and Tables +.. code-block:: ipython -So we have a system where our data is captured in Python *objects* + In [13]: streams = [info + ....: for info in socket.getaddrinfo('crisewing.com', 'http') + ....: if info[1] == socket.SOCK_STREAM] + ....: + In [14]: streams + Out[14]: + [(, + , + 6, + '', + ('108.168.213.86', 80))] + In [15]: info = streams[0] + In [16]: cewing_socket = socket.socket(*info[:3]) -.. rst-class:: build -.. container:: - And a storage system where our data must be rendered as database *tables* +Connecting a Socket +------------------- - Python provides a specification for interacting directly with databases: - `dbapi2`_ +Once the socket is constructed with the appropriate *family*, *type* and +*protocol*, we can connect it to the address of our remote server: - And there are multiple Python packages that implement this specification - for various databases: +.. code-block:: ipython - .. rst-class:: build + In [18]: cewing_socket.connect(info[-1]) - * sqlite3 - * python-mysql - * psycopg2 - * ... +.. rst-class:: build - With these, you can write SQL to save your Python objects into your - database. +* a successful connection returns ``None`` -.. _dbapi2: https://www.python.org/dev/peps/pep-0249/ +* a failed connection raises an error -.. nextslide:: ORMs +* you can use the *type* of error returned to tell why the connection failed. -But that's a pain. -.. rst-class:: build -.. container:: +Sending a Message +----------------- - SQL, while not impossible, is yet another language to learn. +Send a message to the server on the other end of our connection (we'll +learn in session 2 about the message we are sending): - And there is a viable alternative in using an *Object Relational Manager* - (ORM) +.. code-block:: ipython - An ORM provides a layer of *abstraction* between you and SQL + In [19]: msg = "GET / HTTP/1.1\r\n" + In [20]: msg += "Host: crisewing.com\r\n\r\n" + In [21]: msg = msg.encode('utf8') + In [22]: msg + Out[22]: b'GET / HTTP/1.1\r\nHost: crisewing.com\r\n\r\n' + In [23]: cewing_socket.sendall(msg) - You instantiate Python objects and set attributes on them +.. rst-class:: build small - The ORM handles converting data from these objects into SQL statements (and - back) +* the transmission continues until all data is sent or an error occurs +* success returns ``None`` +* failure to send raises an error +* the type of error can tell you why the transmission failed +* but you **cannot** know how much, if any, of your data was sent -SQLAlchemy ----------- -In our project we will be using the `SQLAlchemy`_ ORM. +Messages Are Bytes +------------------ -.. rst-class:: build -.. container:: +One detail from the previous code should stand out: - You can find SQLAlchemy among the packages in ``requires`` in ``setup.py`` - in our new ``learning_journal`` package. +.. code-block:: ipython - However, we don't yet have that code installed. + In [21]: msg = msg.encode('utf8') + In [22]: msg + Out[22]: b'GET / HTTP/1.1\r\nHost: crisewing.com\r\n\r\n' - To do so, we will need to "install" our own package +You can **only** send bytes through a socket, **never** unicode - Make sure your ``ljenv`` virtualenv is active and then type the following: +.. code-block:: ipython - .. code-block:: bash + In [35]: cewing_socket.sendall(msg.decode('utf8')) + --------------------------------------------------------------------------- + TypeError Traceback (most recent call last) + in () + ----> 1 cewing_socket.sendall(msg.decode('utf8')) - (ljenv)$ python setup.py develop - running develop - running egg_info - creating learning_journal.egg-info - ... - Finished processing dependencies for learning-journal==0.0 + TypeError: 'str' does not support the buffer interface -.. nextslide:: -Once that is complete, all the *dependencies* listed in our ``setup.py`` will -be installed. +Receiving a Reply +----------------- -.. rst-class:: build -.. container:: +Whatever reply we get is received by the socket we created. We can read it +back out (again, **do not type this yet**): - You can also install the package using ``python setup.py install`` +.. code-block:: ipython - But using ``develop`` allows us to continue developing our package without - needing to re-install it every time we change something. + In [24]: response = cewing_socket.recv(4096) + In [25]: response[:60] + Out[25]: b'HTTP/1.1 200 OK\r\nServer: nginx\r\nDate: Sun, 20 Sep 2015 03:38' - It is very similar to using the ``-e`` option to ``pip`` +.. rst-class:: build - Now, we'll only need to re-run this command if we change ``setup.py`` - itself. +* The sole required argument is ``buffer_size`` (an integer). It should be a + power of 2 and smallish (~4096) +* It returns a byte string of ``buffer_size`` (or smaller if less data was + received) +* If the response is longer than ``buffer size``, you can call the method + repeatedly. The last bunch will be less than ``buffer size``. -.. nextslide:: -We also need to adjust our ``.gitignore`` file: +Cleaning Up +----------- -.. rst-class:: build -.. code-block:: bash +When you are finished with a connection, you should always close it:: - (ljenv)$ git status - ... - Untracked files: - (use "git add ..." to include in what will be committed) + cewing_socket.close() - learning_journal.egg-info/ -.. rst-class:: build -.. container:: +Putting it all together +----------------------- - The ``egg-info`` directory that was just created is an artifact of - installing a Python egg. +First, connect and send a message: - It should never be committed to a repository. +.. code-block:: ipython - Let's add ``*.egg-info`` to our ``.gitignore`` file and then commit that - change + In [55]: info = socket.getaddrinfo('crisewing.com', 'http') + In [56]: streams = [i for i in info if i[1] == socket.SOCK_STREAM] + In [57]: sock_info = streams[0] + In [58]: msg = "GET / HTTP/1.1\r\n" + In [59]: msg += "Host: crisewing.com\r\n\r\n" + In [60]: msg = msg.encode('utf8') + In [61]: cewing_socket = socket.socket(*sock_info[:3]) + In [62]: cewing_socket.connect(sock_info[-1]) + In [63]: cewing_socket.sendall(msg) - Remember how? -.. nextslide:: Our First Model +.. nextslide:: -Our project skeleton contains up a first, basic model created for us: +Then, receive a reply, iterating until it is complete: -.. code-block:: python +.. code-block:: ipython - # in models.py - Base = declarative_base() + In [65]: buffsize = 4096 + In [66]: response = b'' + In [67]: done = False + In [68]: while not done: + ....: msg_part = cewing_socket.recv(buffsize) + ....: if len(msg_part) < buffsize: + ....: done = True + ....: cewing_socket.close() + ....: response += msg_part + ....: + In [69]: len(response) + Out[69]: 19464 - class MyModel(Base): - __tablename__ = 'models' - id = Column(Integer, primary_key=True) - name = Column(Text) - value = Column(Integer) - Index('my_index', MyModel.name, unique=True, mysql_length=255) -.. _SQLAlchemy: http://docs.sqlalchemy.org/en/rel_0_9/ +Server Side +=========== .. rst-class:: build .. container:: - Our class inherits from ``Base`` + .. rst-class:: large - We ran into ``Base`` earlier when discussing configuration. + What about the other half of the equation? - We were binding it to the database we wanted to use (the ``engine``) + Let's build a server and see how that part works. -.. nextslide:: ``Base`` +Construct a Socket +------------------ -Any class we create that inherits from this ``Base`` becomes a *model* +**For the moment, stop typing this into your interpreter.** .. rst-class:: build .. container:: - It will be connected through the ORM to a table in our database. - - The name of the table is determined by the ``__tablename__`` special - attribute. + Again, we begin by constructing a socket. Since we are actually the server + this time, we get to choose family, type and protocol: - Other aspects of table configuration can also be controlled through special - attributes + .. code-block:: ipython - Instances of the class, once saved, will become rows in the table. + In [70]: server_socket = socket.socket( + ....: socket.AF_INET, + ....: socket.SOCK_STREAM, + ....: socket.IPPROTO_TCP) - Attributes of the model that are instances of ``Column`` will become - columns in the table. + In [71]: server_socket + Out[71]: - You can learn much more in the `Declarative`_ chapter of the SQLAlchemy docs -.. _Declarative: http://docs.sqlalchemy.org/en/rel_0_9/orm/extensions/declarative/ - -.. nextslide:: Columns +Bind the Socket +--------------- -Each attribute of your model that will be persisted must be an instance of -`Column`_. +Our server socket needs to be **bound** to an address. This is the IP Address +and Port to which clients must connect: .. rst-class:: build .. container:: - Each instance requires *at least* a specific `data type`_ (such as - Integer). + .. code-block:: ipython - Additionally, you can control other aspects of the column such as it being - a primary key. + In [72]: address = ('127.0.0.1', 50000) + In [73]: server_socket.bind(address) - In the *declarative* style we are using, the name of the column in the - database will default to the attribute name you assigned. + **Terminology Note**: In a server/client relationship, the server *binds* + to an address and port. The client *connects* - If you wish, you may provide a name specifically. It must be the first - argument and must be a string. +Listen for Connections +---------------------- -.. _Column: http://docs.sqlalchemy.org/en/rel_0_9/core/metadata.html#sqlalchemy.schema.Column -.. _data type: http://docs.sqlalchemy.org/en/rel_0_9/core/types.html +Once our socket is bound to an address, we can listen for attempted +connections: -Creating The Database ---------------------- +.. code-block:: ipython -We have a *model* which allows us to persist Python objects to an SQL database. + In [74]: server_socket.listen(1) .. rst-class:: build -.. container:: - - But we're still missing one ingredient here. - - We need to create our database, or there will be nowhere for our data to - go. - - Luckily, our ``pcreate`` scaffold also gave us a convenient way to handle - this: - .. code-block:: python +* The argument to ``listen`` is the *backlog* +* The *backlog* is the **maximum** number of connection requests that the + socket will queue +* Once the limit is reached, the socket refuses new connections. - # in setup.py - entry_points="""\ - [paste.app_factory] - main = learning_journal:main - [console_scripts] - initialize_learning_journal_db = learning_journal.scripts.initializedb:main - """, - The ``console_script`` set up as an entry point will help us. - -.. nextslide:: ``initialize_learning_journal_db`` +Accept A Connection +------------------- -Let's look at that code for a moment. +When a socket is listening, it can receive incoming connection requests: -.. code-block:: python +.. code-block:: ipython - # in scripts/intitalizedb.py - from ..models import DBSession, MyModel, Base - # ... - def main(argv=sys.argv): - if len(argv) < 2: - usage(argv) - config_uri = argv[1] - options = parse_vars(argv[2:]) - setup_logging(config_uri) - settings = get_appsettings(config_uri, options=options) - engine = engine_from_config(settings, 'sqlalchemy.') - DBSession.configure(bind=engine) - Base.metadata.create_all(engine) - with transaction.manager: - model = MyModel(name='one', value=1) - DBSession.add(model) - -.. nextslide:: Console Scripts - -By connecting this function as a ``console script``, our Python package makes -this command available to us. + In [75]: connection, client_address = server_socket.accept() .. rst-class:: build -.. container:: - - When we exectute ``initialize_learning_journal_db`` at the command line, we - will be running this function. - Let's try it out. +* The call to ``socket.accept()`` is a *blocking* call. It will not return + values until a client *connects* +* The ``connection`` returned by a call to ``accept`` is a **new socket**. + This new socket is used to communicate with the client +* The ``client_address`` is a two-tuple of IP Address and Port for the client + socket +* When a connection request is 'accepted', it is removed from the backlog + queue. - We'll need to provide a configuration file name, let's use - ``development.ini``: - .. code-block:: bash +Communicate +----------- - (ljenv)$ initialize_learning_journal_db development.ini - 2015-01-05 18:59:55,426 INFO [sqlalchemy.engine.base.Engine][MainThread] SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1 - ... - 2015-01-05 18:59:55,434 INFO [sqlalchemy.engine.base.Engine][MainThread] COMMIT +The ``connection`` socket can now be used to receive messages from the client +which made the connection: - The ``[loggers]`` configuration in our ``.ini`` file sends a stream of - INFO-level logging to sys.stdout as the console script runs. +.. code-block:: ipython -.. nextslide:: A Bit More Cleanup + In [76]: connection.recv(buffsize) -So what was the outcome of running that script? +It may also be used to return a reply: -.. rst-class:: build -.. container:: +.. code-block:: ipython - .. code-block:: bash + In [77]: connection.sendall("message received") - (ljenv)$ ls - ... - learning_journal.sqlite - ... - We've now created an sqlite database. - - You'll need to add ``*.sqlite`` to ``.gitignore`` so you don't add that - file to your repository. - - Once you've done so, commit the change to your repository - -Interacting with SQLA Models ----------------------------- +Clean Up +-------- -It's pretty easy to play with your models from in an interpreter. +Once a transaction between the client and server is complete, the +``connection`` socket should be closed: .. rst-class:: build .. container:: - Let's try that out and see what we have. Start up an interpreter: + .. code-block:: ipython - .. code-block:: pycon + In [78]: connection.close() - >>> config = 'development.ini' - >>> from pyramid.paster import get_appsettings - >>> settings = get_appsettings(config) - >>> from sqlalchemy import engine_from_config - >>> engine = engine_from_config(settings, 'sqlalchemy.') - >>> from sqlalchemy.orm import sessionmaker - >>> Session = sessionmaker(bind=engine) - >>> session = Session() - >>> from learning_journal.models import MyModel - >>> session.query(MyModel).all() - [] + At this point, the ``server_socket`` can again accept a new client + connection. - We are basically stealing the important bits from ``initializedb.py`` + Note that the ``server_socket`` is *never* closed as long as the server + continues to run. -.. nextslide:: Basic Interactions -Any interaction with the database requires a ``session``. +Getting the Flow +================ -.. rst-class:: build +.. rst-class:: left .. container:: - This object represents the connection to the database. - - All database queries are phrased as methods of the session. + The flow of this interaction can be a bit confusing. Let's see it in + action step-by-step. + .. rst-class:: build .. container:: - .. code-block:: pycon + .. container:: - >>> query = session.query(MyModel) - >>> type(query) - + Open a second iPython interpreter and place it next to your first so + you can see both of them at the same time. - The ``query`` method of the session object returns a ``Query`` object - Arguments to the ``query`` method can be a *model* class or *columns* from - a model class. - -.. nextslide:: Queries are Iterators +Create a Server +--------------- -You can iterate over a query object. The result depends on the args you -passed. +In your first python interpreter, create a server socket and prepare it for +connections: .. rst-class:: build .. container:: - .. code-block:: pycon - - >>> q1 = session.query(MyModel) - >>> for row in q1: - ... print row - ... type(row) - ... - - + .. code-block:: ipython - .. code-block:: pycon + In [81]: server_socket = socket.socket( + ....: socket.AF_INET, + ....: socket.SOCK_STREAM, + ....: socket.IPPROTO_IP) + In [82]: server_socket.bind(('127.0.0.1', 50000)) + In [83]: server_socket.listen(1) + In [84]: conn, addr = server_socket.accept() - >>> q2 = session.query(MyModel.name, MyModel.id, MyModel.value) - >>> for name, id, val in q2: - ... print name, type(name) - ... print id, type(id) - ... print val, type(val) - ... - one - 1 - 1 -.. nextslide:: Queries have SQL + At this point, you should **not** get back a prompt. The server socket is + waiting for a connection to be made. -You can view the SQL that your query will use: -.. rst-class:: build -.. container:: - - .. code-block:: pycon - - >>> str(q1) - 'SELECT models.id AS models_id, models.name AS models_name, models.value AS models_value \nFROM models' - >>> str(q2) - 'SELECT models.name AS models_name, models.id AS models_id, models.value AS models_value \nFROM models' - - You can use this to check that the query the ORM is constructing looks like - you expect. - - It can be helpful in debugging. - -.. nextslide:: Methods of the Query Object +Create a Client +--------------- -The methods of the ``Query`` object fall into two rough categories +In your second interpreter, create a client socket and prepare to send a +message: .. rst-class:: build .. container:: - .. rst-class:: build - - 1. Methods that return a new ``Query`` object - 2. Methods that return *scalar* values or *model* instances - - Let's start by looking quickly at a few methods from the second category + .. code-block:: ipython -.. nextslide:: ``query.get()`` + In [1]: import socket + In [2]: client_socket = socket.socket( + ...: socket.AF_INET, + ...: socket.SOCK_STREAM, + ...: socket.IPPROTO_IP) -A good example of this category of methods is ``get``, which returns one -instance only. + Before connecting, keep your eye on the server interpreter: -.. rst-class:: build -.. container:: - - It takes a primary key as an argument: + .. code-block:: ipython - .. code-block:: pycon + In [3]: client_socket.connect(('127.0.0.1', 50000)) - >>> session.query(MyModel).get(1) - - >>> session.query(MyModel).get(10) - >>> - If no item with that primary key is present, then the method returns - ``None`` +Send a Message Client->Server +----------------------------- -.. nextslide:: ``query.all()`` - -Another example is one we've already seen. +As soon as you made the connection above, you should have seen the prompt +return in your server interpreter. The ``accept`` method finally returned a +new connection socket. .. rst-class:: build .. container:: - ``query.all()`` returns a list of all rows returned by the database: - - .. code-block:: pycon + When you're ready, type the following in the *client* interpreter: - >>> q1.all() - [] - >>> type(q1.all()) - + .. code-block:: ipython - ``query.count()`` returns the number of rows that would have been returned - by the query: + In [4]: client_socket.sendall('Hey, can you hear me?'.encode('utf8')) - .. code-block:: pycon - >>> q1.count() - 1 - -.. nextslide:: Creating New Objects +Receive and Respond +------------------- -Before getting into the other category, let's learn how to create new objects. +Back in your server interpreter, go ahead and receive the message from your +client: .. rst-class:: build .. container:: - .. container:: + .. code-block:: ipython - We can create new instances of our *model* just like normal Python - objects: + In [87]: msg = conn.recv(4096) + In [88]: msg + Out[88]: b'Hey, can you hear me?' - .. code-block:: pycon + Send a message back, and then close up your connection: - >>> new_model = MyModel(name='fred', value=3) - >>> new_model - - - .. container:: + .. code-block:: ipython - In this state, the instance is *ephemeral*, our ``session`` knows - nothing about it: + In [89]: conn.sendall('Yes, I can hear you.'.encode('utf8')) + In [90]: conn.close() - .. code-block:: pycon - - >>> session.new - IdentitySet([]) - -.. nextslide:: Adding Objects to the Session +Finish Up +--------- -For the database to know about our new object, we must ``add`` it to the -session: +Back in your client interpreter, take a look at the response to your message, +then be sure to close your client socket too: .. rst-class:: build .. container:: - .. code-block:: pycon - - >>> session.add(new_model) - >>> session.new - IdentitySet([]) - - We can even bulk-add new objects: + .. code-block:: ipython - .. code-block:: pycon + In [5]: from_server = client_socket.recv(4096) + In [6]: from_server + Out[6]: b'Yes, I can hear you.' + In [7]: client_socket.close() - >>> new = [] - >>> for name, val in [('bob', 34), ('tom', 13)]: - ... new.append(MyModel(name=name, value=val)) - ... - >>> session.add_all(new) - >>> session.new - IdentitySet([, - , - ]) + And now that we're done, we can close up the server socket too (back in the + server interpreter): -.. nextslide:: Committing Changes - -Up until now, the changes you've made are not permanent. - -.. rst-class:: build -.. container:: + .. code-block:: ipython - In order for these new objects to be saved to the database, the session - must be ``committed``: + In [91]: server_socket.close() - .. code-block:: pycon - >>> other_session = Session() - >>> other_session.query(MyModel).count() - 1 - >>> session.commit() - >>> other_session.query(MyModel).count() +.. nextslide:: Congratulations! - When you are using a ``scoped_session`` in Pyramid, this action is - automatically handled for you. +.. rst-class:: large center - The session that is bound to a particular HTTP request is committed when a - response is sent back. +You've run your first client-server interaction -.. nextslide:: Altering Objects -You can edit objects that are already part of a session, or that are fetched by -a query. +Homework +======== -.. rst-class:: build +.. rst-class:: left .. container:: - Simply change the values of a persisted attribute, the session will know - it's been updated: + Your homework assignment for this week is to take what you've learned here + and build a simple "echo" server. - .. code-block:: pycon - - >>> new_model - - >>> new_model.name - u'fred' - >>> new_model.name = 'larry' - >>> session.dirty - IdentitySet([]) - - Commit the session to persist the changes: + .. rst-class:: build + .. container:: - .. code-block:: pycon - - >>> session.commit() + The server should automatically return to any client that connects *exactly* + what it receives (it should **echo** all messages). -.. nextslide:: Methods Returning Queries + You will also write a python script that, when run, will send a message to the + server and receive the reply, printing it to ``stdout``. -Returning to queries, the second category is typified by the ``filter`` method + Finally, you'll do all of this so that it can be tested. -.. rst-class:: build -.. container:: - This method allows you to reduce the number of results, based on criteria: - - .. code-block:: pycon - - >>> for obj in session.query(MyModel).filter(MyModel.value < 20): - ... print obj.name, obj.value - ... - one 1 - larry 3 - tom 13 - -.. nextslide:: ``order_by`` +Your Task +--------- -Another typical method in this category is ``order_by``: +In our class repository, there is a folder ``resources/session01``. .. rst-class:: build .. container:: - .. code-block:: pycon - - >>> for obj in session.query(MyModel).order_by(MyModel.value): - ... print obj.name, obj.value - ... - one 1 - larry 3 - tom 13 - bob 34 - - .. code-block:: pycon - - >>> for obj in session.query(MyModel).order_by(MyModel.name): - ... print obj.name, obj.value - ... - bob 34 - larry 3 - one 1 - tom 13 + Inside that folder, you should find: -.. nextslide:: Method Chaining - -Since methods in this category return ``Query`` objects, they can be safely -*chained* to build more complex queries: + .. rst-class:: build -.. rst-class:: build -.. container:: + * A file ``tasks.txt`` that contains these instructions - .. code-block:: pycon + * A skeleton for your server in ``echo_server.py`` - >>> q1 = session.query(MyModel).filter(MyModel.value < 20) - >>> q1 = q1.order_by(MyModel.name) - >>> for obj in q1: - ... print obj.name, obj.value - ... - larry 3 - one 1 - tom 13 + * A skeleton for your client script in ``echo_client.py`` - Note that you can do this inline as well - (``s.query(Model).filter().order_by()``) + * Some simple tests in ``tests.py`` - Also note that when using chained queries like this, no query is actually - sent to the database until you require a result. + Your task is to make the tests pass. -Homework -======== -.. rst-class:: left +Running the Tests +----------------- -Okay, that's enough for the moment. +To run the tests, you'll have to set the server running in one terminal: -.. rst-class:: build left +.. rst-class:: build .. container:: - You've learned quite a bit about how *models* work in SQLAlchemy - - It's time to put that knowledge to good use. - - For the first part of your assignment this week you will begin to define - the data model for our learning journal application. - - I'll provide a specification, you define the model required to do the job. + .. code-block:: bash - I'll also ask you to define a few methods to complete the first part of our - API. + $ python echo_server.py -The Model ---------- + Then, in a second terminal, you will execute the tests: -Our model will be called an ``Entry``. Here's what you need to know: + .. code-block:: bash -* It should be stored in a database table called ``entries`` -* It should have a primary key field called ``id`` -* It should have a ``title`` field which accepts unicode text up to 255 characters in length -* The ``title`` should be unique and it should be impossible to save an - ``entry`` without a ``title``. -* It should have a ``body`` field which accepts unicode text of any length - (including none) -* It should have a ``created`` field which stores the date and time the object - was created. -* It should have an ``edited`` field which stores the date and time the object - was last edited. -* Both the ``created`` and ``edited`` field should default to ``now`` if not - provided when a new instance is constructed. -* The ``entry`` class should support a classmethod ``all`` that returns all the - entries in the database, ordered so that the most recent entry is first. -* The ``entry`` class should support a classmethod ``by_id`` that returns a - single entry, given an ``id``. + $ python tests.py -.. nextslide:: Words of Advice + You should see output like this: -Use the documentation linked in this presentation to assist you. SQLAlchemy -has fantastic documentation, but it can be a bit overwhelming. Everything you -require for this assignment is on one or more of the pages linked above. + .. code-block:: bash -As you define this new model for our application, make frequent commits to your -github repository. Remember to write meaningful commit messages. + [...] + FAILED (failures=2) -Don't be afraid to start up a Python interpreter and play with your model. Try -things out. Learn how this all works by making mistakes. -Errors at the SQL level can sometimes leave your session unusable. To restore -it, use the ``session.rollback()`` method. You'll lose uncommitted changes, -but you'll gain a session that can be used again. +Submitting Your Homework +------------------------ -.. nextslide:: Submitting Your Work +To submit your homework: -I want to be able to review your code (and you want to be able to share it). +.. rst-class:: build +.. container:: -To submit this assignment, you'll need to add this learning_journal repository -to GitHub. + .. rst-class:: build -On the GitHub website you can create a new repository. Set it up to be -completely empty. Name it ``learning_journal`` and give it any description you -like. + * Create a new repository in GitHub. Call it ``echo_sockets``. -When you've created an empty repository in GitHub, you should see a set of -directions for connecting it to a repository that you've already built. Follow -those instructions to connect your emtpy GitHub repository as the ``origin`` -remote to your ``learning_journal`` repository on your machine. + * Put the ``echo_server.py``, ``echo_client.py`` and ``tests.py`` files in + this repository. -Finally, push your ``master`` branch to your new ``origin`` remote on GitHub. + * Send us an email with a link to your repository when you are + done. -When you are done, send me an email with the URL for your new repository. + We will clone your repository and run the tests as described above. -.. nextslide:: + And we'll make comments inline on your repository. -**Our work next week will assume that you have completed this assignment** -Do not delay working on this until the last moment. +Going Further +------------- -Do not skip this assignment. +In ``assignments/session01/tasks.txt`` you'll find a few extra problems to try. -Do ask questions frequently via email (use the `class google group`_). +.. rst-class:: build +.. container:: -See you next week! + If you finish the first part of the homework in less than 3-4 hours give + one or more of these a whirl. -.. _class google group: https://groups.google.com/forum/#!forum/programming-in-python + They are not required, but if you include solutions in your repository, + we'll review your work. diff --git a/html/_sources/presentations/session02.txt b/html/_sources/presentations/session02.txt index f141f8a8..1e222995 100644 --- a/html/_sources/presentations/session02.txt +++ b/html/_sources/presentations/session02.txt @@ -1,1576 +1,1672 @@ -.. slideconf:: - :autoslides: True +.. |br| raw:: html + +
      ********** Session 02 ********** -.. image:: /_static/lj_entry.png - :width: 65% +.. figure:: /_static/protocol.png :align: center + :width: 40% + + Web Protocols + +The Languages Computers Speak +============================= + +.. rst-class:: build left +.. container:: -Interacting with Data -===================== + Programming languages like Python are the languages we speak to computers. -**Wherein we learn to display our data, and to create and edit it too!** + *Protocols* are the languages that computers speak to each-other. + + This sesson we'll look at a few of them and + + .. rst-class:: build + + * Learn what makes them similar + * Learn what makes them different + * Learn about Python's tools for speaking them + * Learn how to speak one (HTTP) ourselves But First ---------- +---------- -Last week we discussed the **model** part of the *MVC* application design -pattern. +.. rst-class:: large centered -.. rst-class:: build +Questions from the Homework? + + +.. nextslide:: + +.. rst-class:: large centered + +Examples of an echo server using ``select`` + + +What is a Protocol? +------------------- + +.. rst-class:: build large centered .. container:: - We set up a project using the `Pyramid`_ web framework and the `SQLAlchemy`_ - library for persisting our data to a database. + **a set of rules or conventions** - We looked at how to define a simple model by investigating the demo model - created on our behalf. + **governing communications** - And we went over, briefly, the way we can interact with this model at the - command line to make sure we've got it right. - Finally, we defined what attributes a learning journal entry would have, - and a pair of methods we think we will need to make the model complete. +.. nextslide:: Protocols IRL -.. _Pyramid: http://www.pylonsproject.org/projects/pyramid/about -.. _SQLAlchemy: http://docs.sqlalchemy.org/en/rel_0_9/ +Life has lots of sets of rules for how to do things. -Our Data Model --------------- +.. rst-class:: build + +* What do you say when you get on the elevator? + +* What do you do on a first date? + +* What do you wear to a job interview? + +* What do (and don't) you talk about at a dinner party? + +* ...? + + +.. nextslide:: Protocols IRL + +.. figure:: /_static/icup.png + :align: center + :width: 65% + + http://blog.xkcd.com/2009/09/02/urinal-protocol-vulnerability/ + + +.. nextslide:: Protocols In Computers -Over the last week, your assignment was to create the new model. +Digital life has lots of rules too: .. rst-class:: build -.. container:: - Did you get that done? +* how to say hello + +* how to identify yourself - If not, what stopped you? +* how to ask for information - Let's take a few minutes here to answer questions about this task so you - are more comfortable. +* how to provide answers - Questions? +* how to say goodbye -.. nextslide:: A Complete Example -I have added a new folder to our `class repository`_, ``resources``. +Real Protocol Examples +---------------------- -.. _class repository: https://github.com/UWPCE-PythonCert/training.python_web/ +What does this look like in practice? .. rst-class:: build -.. container:: - If you clone the repository to your local machine you can get to it. +* SMTP (Simple Message Transfer Protocol) |br| + http://tools.ietf.org/html/rfc5321#appendix-D - You can also just browse the repository in github to view it. +* POP3 (Post Office Protocol) |br| + http://www.faqs.org/docs/artu/ch05s03.html - In this folder, I added a ``session02`` folder that contains resources for - today. +* IMAP (Internet Message Access Protocol) |br| + http://www.faqs.org/docs/artu/ch05s03.html - Among these resources is the completed ``models.py`` file with this new - model added. +* HTTP (Hyper-Text Transfer Protocol) |br| + http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol - Let's review how it works. -.. nextslide:: Demo Interaction +.. nextslide:: A Word on Typography -Another resource I've added is the ``ljshell.py`` script. +Over the next few slides we'll be looking at server/client interactions. .. rst-class:: build .. container:: - That script will allow you to interact with a db session just like I showed - in class last week: + Each interaction is line-based, each line represents one message. - .. code-block:: python + Messages from the Server to the Client are prefaced with ``S (<--)`` - # the script - from pyramid.paster import get_appsettings, setup_logging - from sqlalchemy import engine_from_config - from sqlalchemy.orm import sessionmaker + Messages from the Client to the Server are prefaced with ``C (-->)`` - config_uri = 'development.ini' - setup_logging(config_uri) - settings = get_appsettings(config_uri) - engine = engine_from_config(settings, 'sqlalchemy.') - Session = sessionmaker(bind=engine) + **All** lines end with the character sequence ```` (``\r\n``) - Just copy the file into your learning_journal Pyramid project folder (where - ``setup.py`` is) -.. nextslide:: Using the ``ljshell.py`` script +SMTP +---- -Here's a demo interaction using the script to set up a session maker +What does SMTP look like? .. rst-class:: build .. container:: - First ``cd`` to your project code, fire up your project virtualenv and - start python: + SMTP (Say hello and identify yourself):: - .. code-block:: bash + S (<--): 220 foo.com Simple Mail Transfer Service Ready + C (-->): EHLO bar.com + S (<--): 250-foo.com greets bar.com + S (<--): 250-8BITMIME + S (<--): 250-SIZE + S (<--): 250-DSN + S (<--): 250 HELP - $ cd projects/learning-journal/learning_journal - $ source ../ljenv/bin/activate - (ljenv)$ python - >>> - Then, you can import the ``Session`` symbol from ``ljshell`` and you're off - to the races: +.. nextslide:: - .. code-block:: pycon +.. ifslides:: - >>> from ljshell import Session - >>> from learning_journal.models import MyModel - >>> session = Session() - >>> session.query(MyModel).all() - [] - ... + What does SMTP look like? - [demo] +SMTP (Ask for information, provide answers):: -The MVC Controller -================== + C (-->): MAIL FROM: + S (<--): 250 OK + C (-->): RCPT TO: + S (<--): 250 OK + C (-->): RCPT TO: + S (<--): 550 No such user here + C (-->): DATA + S (<--): 354 Start mail input; end with . + C (-->): Blah blah blah... + C (-->): ...etc. etc. etc. + C (-->): . + S (<--): 250 OK -.. rst-class:: left -.. container:: +.. nextslide:: - Let's go back to thinking for a bit about the *Model-View-Controller* - pattern. +.. ifslides:: - .. figure:: http://upload.wikimedia.org/wikipedia/commons/4/40/MVC_passive_view.png - :align: center - :width: 25% + What does SMTP look like? - By Alan Evangelista (Own work) [CC0], via Wikimedia Commons +SMTP (Say goodbye):: + + C (-->): QUIT + S (<--): 221 foo.com Service closing transmission channel - .. rst-class:: build - .. container:: - We talked last week (and today) about the *model* +.. nextslide:: SMTP Characteristics - Today, we'll dig into *controllers* and *views* +.. rst-class:: build - or as we will know them in Pyramid: *views* and *renderers* +* Interaction consists of commands and replies +* Each command or reply is *one line* terminated by |br| + (there are exceptions, see the ``250`` reply to ``EHLO`` above) +* The exception is message payload, terminated by . +* Each command has a *verb* and one or more *arguments* +* Each reply has a formal *code* and an informal *explanation* -HTTP Request/Response ---------------------- +POP3 +---- -Internet software is driven by the HTTP Request/Response cycle. +What does POP3 look like? .. rst-class:: build .. container:: - A *client* (perhaps a user with a web browser) makes a **request** + POP3 (Say hello and identify yourself):: + + C (-->): + S (<--): +OK POP3 server ready <1896.6971@mailgate.dobbs.org> + C (-->): USER bob + S (<--): +OK bob + C (-->): PASS redqueen + S (<--): +OK bob's maildrop has 2 messages (320 octets) + + +.. nextslide:: + +.. ifslides:: + + What does POP3 look like? + +POP3 (Ask for information, provide answers):: + + C (-->): STAT + S (<--): +OK 2 320 + C (-->): LIST + S (<--): +OK 1 messages (120 octets) + S (<--): 1 120 + S (<--): . - A *server* receives and handles that request and returns a **response** - The *client* receives the response and views it, perhaps making a new - **request** +.. nextslide:: + +.. ifslides:: + + What does POP3 look like? + +POP3 (Ask for information, provide answers):: + + C (-->): RETR 1 + S (<--): +OK 120 octets + S (<--): + S (<--): . + C (-->): DELE 1 + S (<--): +OK message 1 deleted - And around and around it goes. -.. nextslide:: URLs +.. nextslide:: + +.. ifslides:: + + What does POP3 look like? -An HTTP request arrives at a server through the magic of a **URL** +POP3 (Say goodbye):: -.. code-block:: bash + C (-->): QUIT + S (<--): +OK dewey POP3 server signing off (maildrop empty) + C (-->): - http://uwpce-pythoncert.github.io/training.python_web/html/index.html + +.. nextslide:: POP3 Characteristics .. rst-class:: build .. container:: - Let's break that up into its constituent parts: - .. rst-class:: build - \http://: - This part is the *protocol*, it determines how the request will be sent + * Interaction consists of commands and replies + * Each command or reply is *one line* terminated by + * The exception is message payload, terminated by . + * Each command has a *verb* and one or more *arguments* + * Each reply has a formal *code* and an informal *explanation* - uwpce-pythoncert.github.io: - This is a *domain name*. It's the human-facing address for a server - somewhere. + The codes don't really look the same, though, do they? - /training.python_web/html/index.html: - This part is the *path*. It serves as a locator for a resource *on the - server* -.. nextslide:: Paths +.. nextslide:: One Other Difference -In a static website (like our documentation) the *path* identifies a **physical -location** in the server's filesystem. +The exception to the one-line-per-message rule is *payload* .. rst-class:: build .. container:: - Some directory on the server is the *home* for the web process, and the - *path* is looked up there. + In both SMTP and POP3 this is terminated by . - Whatever resource (a file, an image, whatever) is located there is returned - to the user as a response. + In SMTP, the *client* has this ability - If the path leads to a location that doesn't exist, the server responds - with a **404 Not Found** error. + But in POP3, it belongs to the *server*. - In the golden days of yore, this was the only way content was served via - HTTP. + .. rst-class:: large centered -.. nextslide:: Paths in an MVC System + Why? -In todays world we have dynamic systems, server-side web frameworks like -Pyramid. +IMAP +---- + +What does IMAP look like? .. rst-class:: build .. container:: - The requests that you send to a server are handled by a software process - that assembles a response instead of looking up a physical location. + IMAP (Say hello and identify yourself):: - But we still have URLs, with *protocol*, *domain* and *path*. + C (-->): + S (<--): * OK example.com IMAP4rev1 v12.264 server ready + C (-->): A0001 USER "frobozz" "xyzzy" + S (<--): * OK User frobozz authenticated - What is the role for a path in a process that doesn't refer to a physical - file system? - Most web frameworks now call the *path* a **route**. +.. nextslide:: - They provide a way of matching *routes* to the code that will be run to - handle requests. +.. ifslides:: -Routes in Pyramid ------------------ + What does IMAP look like? -In Pyramid, routes are handled as *configuration* and are set up in the *main* -function in ``__init__.py``: +IMAP (Ask for information, provide answers [connect to an inbox]):: -.. code-block:: python + C (-->): A0002 SELECT INBOX + S (<--): * 1 EXISTS + S (<--): * 1 RECENT + S (<--): * FLAGS (\Answered \Flagged \Deleted \Draft \Seen) + S (<--): * OK [UNSEEN 1] first unseen message in /var/spool/mail/esr + S (<--): A0002 OK [READ-WRITE] SELECT completed - # learning_journal/__init__.py - def main(global_config, **settings): - # ... - config.add_route('home', '/') - # ... -.. rst-class:: build -.. container:: +.. nextslide:: + +.. ifslides:: - Our code template created a sample route for us, using the ``add_route`` - method of the ``Configurator`` class. + What does IMAP look like? - The ``add_route`` method has two required arguments: a *name* and a - *pattern* +IMAP (Ask for information, provide answers [Get message sizes]):: - In our sample route, the *name* is ``'home'`` + C (-->): A0003 FETCH 1 RFC822.SIZE + S (<--): * 1 FETCH (RFC822.SIZE 2545) + S (<--): A0003 OK FETCH completed - In our sample route, the *pattern* is ``'/'`` .. nextslide:: -When a request comes in to a Pyramid application, the framework looks at all -the *routes* that have been configured. +.. ifslides:: -.. rst-class:: build -.. container:: + What does IMAP look like? - One by one, in order, it tries to match the *path* of the incoming request - against the *pattern* of the route. +IMAP (Ask for information, provide answers [Get first message header]):: - As soon as a *pattern* matches the *path* from the incoming request, that - route is used and no further matching is performed. + C (-->): A0004 FETCH 1 BODY[HEADER] + S (<--): * 1 FETCH (RFC822.HEADER {1425} + + S (<--): ) + S (<--): A0004 OK FETCH completed - If no route is found that matches, then the request will automatically get - a **404 Not Found** error response. - In our sample app, we have one sample *route* named ``'home'``, with a - pattern of ``/``. +.. nextslide:: - This means that any request that comes in for ``/`` will be matched to this - route, and any other request will be **404**. +.. ifslides:: -.. nextslide:: Routes as API + What does IMAP look like? -In a very real sense, the *routes* defined in an application *are* the public -API. +IMAP (Ask for information, provide answers [Get first message body]):: -.. rst-class:: build -.. container:: + C (-->): A0005 FETCH 1 BODY[TEXT] + S (<--): * 1 FETCH (BODY[TEXT] {1120} + + S (<--): ) + S (<--): * 1 FETCH (FLAGS (\Recent \Seen)) + S (<--): A0005 OK FETCH completed - Any route that is present represents something the user can do. +.. nextslide:: - Any route that is not present is something the user cannot do. +.. ifslides:: - You can use the proper definition of routes to help conceptualize what your - app will do. + What does IMAP look like? - What routes might we want for a learning journal application? +IMAP (Say goodbye):: - What will our application do? + C (-->): A0006 LOGOUT + S (<--): * BYE example.com IMAP4rev1 server terminating connection + S (<--): A0006 OK LOGOUT completed + C (-->): -.. nextslide:: Defining our Routes -Let's add routes for our application. +.. nextslide:: IMAP Characteristics .. rst-class:: build -.. container:: - Open ``learning_journal/__init__.py``. +* Interaction consists of commands and replies +* Each command or reply is *one line* terminated by +* Each command has a *verb* and one or more *arguments* +* Each reply has a formal *code* and an informal *explanation* - For our list page, the existing ``'home'`` route will do fine, leave it. - Add the following two routes: +.. nextslide:: IMAP Differences - .. code-block:: python +.. rst-class:: build +.. container:: - config.add_route('home', '/') # already there - config.add_route('detail', '/journal/{id:\d+}') - config.add_route('action', '/journal/{action}') + .. rst-class:: build - The ``'detail'`` route will serve a single journal entry, identified by an - ``id``. + * Commands and replies are prefixed by 'sequence identifier' + * Payloads are prefixed by message size, rather than terminated by reserved + sequence - The ``action`` route will serve ``create`` and ``edit`` views, depending on - the ``action`` specified. + Compared with POP3, what do these differences suggest? - In both cases, we want to capture a portion of the matched path to use - information it provides. -.. nextslide:: Matching an ID +Using IMAP in Python +-------------------- -In a pattern, you can capture a ``path segment`` *replacement -marker*, a valid Python symbol surrounded by curly braces: +Let's try this out for ourselves! .. rst-class:: build .. container:: - :: + .. container:: - /home/{foo}/ + Fire up your python interpreters and prepare to type. - If you want to match a particular pattern, like digits only, add a - *regexp*:: - /journal/{id:\d+} +.. nextslide:: - Matched path segments are captured in a ``matchdict``:: +Begin by importing the ``imaplib`` module from the Python Standard Library: - # pattern # actual url # matchdict - /journal/{id:\d+} /journal/27 {'id': '27'} +.. rst-class:: build +.. container:: + + .. code-block:: ipython + + In [1]: import imaplib + In [2]: dir(imaplib) + Out[2]: + ['AllowedVersions', + 'CRLF', + 'Commands', + ... + 'timedelta', + 'timezone'] + In [3]: imaplib.Debug = 4 - The ``matchdict`` is made available as an attribute of the *request* + Setting ``imap.Debug`` shows us what is sent and received -.. nextslide:: Connecting Routes to Views +.. nextslide:: -In Pyramid, a *route* is connected by configuration to a *view*. +I've prepared a server for us to use, but we'll need to set up a client to +speak to it. .. rst-class:: build .. container:: - In our app, a sample view has been created for us, in ``views.py``: + Our server requires SSL (Secure Socket Layer) for connecting to IMAP + servers, so let's initialize an IMAP4_SSL client and authenticate: + + .. code-block:: ipython + + In [4]: conn = imaplib.IMAP4_SSL('mail.webfaction.com') + 22:40.32 imaplib version 2.58 + 22:40.32 new IMAP4 connection, tag=b'IMKC' + 22:40.38 < b'* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN] Dovecot ready.' + 22:40.38 > b'IMKC0 CAPABILITY' + 22:40.45 < b'* CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN' + 22:40.45 < b'IMKC0 OK Capability completed.' + 22:40.45 CAPABILITIES: ('IMAP4REV1', 'LITERAL+', 'SASL-IR', 'LOGIN-REFERRALS', 'ID', 'ENABLE', 'IDLE', 'AUTH=PLAIN') + In [5]: conn.login('crisewing_demobox', 's00p3rs3cr3t') + 22:59.92 > b'IMKC1 LOGIN crisewing_demobox "s00p3rs3cr3t"' + 23:01.79 < b'* CAPABILITY IMAP4rev1 SASL-IR SORT THREAD=REFERENCES MULTIAPPEND UNSELECT LITERAL+ IDLE CHILDREN NAMESPACE LOGIN-REFERRALS STARTTLS AUTH=PLAIN' + 23:01.79 < b'IMKC1 OK Logged in.' + Out[5]: ('OK', [b'Logged in.']) - .. code-block:: python +.. nextslide:: - @view_config(route_name='home', renderer='templates/mytemplate.pt') - def my_view(request): - # ... +We can start by listing the mailboxes we have on the server: - The order in which *routes* are configured *is important*, so that must be - done in ``__init__.py``. +.. code-block:: ipython - The order in which views are connected to routes *is not important*, so the - *declarative* ``@view_config`` decorator can be used. + In [6]: conn.list() + 26:30.64 > b'IMKC2 LIST "" *' + 26:30.72 < b'* LIST (\\HasNoChildren) "." "Trash"' + 26:30.72 < b'* LIST (\\HasNoChildren) "." "Drafts"' + 26:30.72 < b'* LIST (\\HasNoChildren) "." "Sent"' + 26:30.72 < b'* LIST (\\HasNoChildren) "." "Junk"' + 26:30.72 < b'* LIST (\\HasNoChildren) "." "INBOX"' + 26:30.72 < b'IMKC2 OK List completed.' + Out[6]: + ('OK', + [b'(\\HasNoChildren) "." "Trash"', + b'(\\HasNoChildren) "." "Drafts"', + b'(\\HasNoChildren) "." "Sent"', + b'(\\HasNoChildren) "." "Junk"', + b'(\\HasNoChildren) "." "INBOX"']) - When ``config.scan`` is called, all files in our application are searched - for such *declarative configuration* and it is added. -The Pyramid View ----------------- +.. nextslide:: -Let's imagine that a *request* has come to our application for the path -``'/'``. +To interact with our email, we must select a mailbox from the list we received +earlier: -.. rst-class:: build -.. container:: +.. code-block:: ipython - The framework made a match of that path to a *route* with the pattern ``'/'``. + In [7]: conn.select('INBOX') + 27:20.96 > b'IMKC3 SELECT INBOX' + 27:21.04 < b'* FLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft)' + 27:21.04 < b'* OK [PERMANENTFLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft \\*)] Flags permitted.' + 27:21.04 < b'* 1 EXISTS' + 27:21.04 < b'* 0 RECENT' + 27:21.04 < b'* OK [UNSEEN 1] First unseen.' + 27:21.04 < b'* OK [UIDVALIDITY 1357449499] UIDs valid' + 27:21.04 < b'* OK [UIDNEXT 24] Predicted next UID' + 27:21.04 < b'IMKC3 OK [READ-WRITE] Select completed.' + Out[7]: ('OK', [b'1']) - Configuration connected that route to a *view* in our application. - Now, the view that was connected will be *called*, which brings us to the - nature of *views* +.. nextslide:: - .. rst-class:: centered +We can search our selected mailbox for messages matching one or more criteria. + +.. rst-class:: build +.. container:: + + The return value is a list of bytestrings containing the UIDs of messages + that match our search: - --A Pyramid view is a *callable* that takes *request* as an argument-- + .. code-block:: ipython - Remember what a *callable* is? + In [8]: conn.search(None, '(FROM "cris")') + 28:43.02 > b'IMKC4 SEARCH (FROM "cris")' + 28:43.09 < b'* SEARCH 1' + 28:43.09 < b'IMKC4 OK Search completed.' + Out[8]: ('OK', [b'1']) -.. nextslide:: What the View Does +.. nextslide:: -So, a *view* is a callable that takes the *request* as an argument. +Once we've found a message we want to look at, we can use the ``fetch`` +command to read it from the server. .. rst-class:: build .. container:: - It can then use information from that request to build appropriate data, - perhaps using the application's *models*. + IMAP allows fetching each part of a message independently: - Then, it returns the data it assembled, passing it on to a `renderer`_. + .. code-block:: ipython - Which *renderer* to use is determined, again, by configuration: + In [9]: conn.fetch('1', 'BODY[HEADER]') + ... + Out[9]: ('OK', ...) - .. code-block:: python + In [10]: conn.fetch('1', 'FLAGS') + ... + Out[10]: ('OK', [b'1 (FLAGS (\\Seen))']) - @view_config(route_name='home', renderer='templates/mytemplate.pt') - def my_view(request): - # ... + In [11]: conn.fetch('1', 'BODY[TEXT]') + ... + Out[11]: ('OK', ...) - More about this in a moment. + What does the message say? - The *view* stands at the intersection of *input data*, the application - *model* and *renderers* that offer rendering of the results. +.. nextslide:: Batteries Included - It is the *Controller* in our MVC application. +Python even includes an *email* library that would allow us to interact with +this message in an *OO* style. -.. _renderer: http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/renderers.html +.. rst-class:: build +.. container:: -.. nextslide:: Adding Stub Views + *Neat, Huh?* -Add temporary views to our application in ``views.py`` (and comment out the -sample view): +What Have We Learned? +--------------------- -.. code-block:: python +.. rst-class:: build +.. container:: - @view_config(route_name='home', renderer='string') - def index_page(request): - return 'list page' + .. rst-class:: build - @view_config(route_name='detail', renderer='string') - def view(request): - return 'detail page' + * Protocols are just a set of rules for how to communicate - @view_config(route_name='action', match_param='action=create', renderer='string') - def create(request): - return 'create page' + * Protocols tell us how to parse and delimit messages - @view_config(route_name='action', match_param='action=edit', renderer='string') - def update(request): - return 'edit page' + * Protocols tell us what messages are valid -.. nextslide:: Testing Our Views + * If we properly format request messages to a server, we can get response + messages -Now we can verify that our view configuration has worked. + * Python supports a number of these protocols -.. rst-class:: build -.. container:: + * So we don't have to remember how to format the commands ourselves - Make sure your virtualenv is properly activated, and start the web server: + But in every case we've seen, we could do the same thing with a socket and + some strings - .. code-block:: bash - (ljenv)$ pserve development.ini - Starting server in PID 84467. - serving on http://0.0.0.0:6543 +Break Time +---------- - Then try viewing some of the expected application urls: +Let's take a few minutes here to clear our heads. - .. rst-class:: build +.. rst-class:: build +.. container:: - * http://localhost:6543/ - * http://localhost:6543/journal/1 - * http://localhost:6543/journal/create - * http://localhost:6543/journal/edit + When we return, we'll learn about the king of protocols, - What happens if you visit a URL that *isn't* in our configuration? + .. rst-class:: large centered -.. nextslide:: Interacting With the Model + HTTP -Now that we've got temporary views that work, we can fix them to get -information from our database -.. rst-class:: build +HTTP +==== + +.. rst-class:: left .. container:: - We'll begin with the list view. + HTTP is no different - We need some code that will fetch all the journal entries we've written, in - reverse order, and hand that collection back for rendering. + .. rst-class:: build + .. container:: - .. code-block:: python + HTTP is also message-centered, with two-way communications: - from .models import ( - DBSession, - MyModel, - Entry, # <- Add this import - ) + .. rst-class:: build - # and update this view function - def index_page(request): - entries = Entry.all() - return {'entries': entries} + * Requests (Asking for information) + * Responses (Providing answers) -.. nextslide:: Using the ``matchdict`` -Next, we want to write the view for a single entry. +What does HTTP look like? +------------------------- -.. rst-class:: build -.. container:: +HTTP (Ask for information): - We'll need to use the ``id`` value our route captures into the - ``matchdict``. +.. code-block:: http - Remember that the ``matchdict`` is an attribute of the request. + GET /index.html HTTP/1.1 + Host: www.example.com + - We'll get the ``id`` from there, and use it to get the correct entry. +.. ifnotslides:: - .. code-block:: python + .. note:: the ```` you see here is a visualization of the ``\r\n`` + character sequence. - # add this import at the top - from pyramid.httpexceptions import HTTPNotFound +.. ifslides:: - # and update this view function: - def view(request): - this_id = request.matchdict.get('id', -1) - entry = Entry.by_id(this_id) - if not entry: - return HTTPNotFound() - return {'entry': entry} + **note**: the ```` you see here is a visualization of the ``\r\n`` + character sequence. -.. nextslide:: Testing Our Views -We can now verify that these views work correctly. +.. nextslide:: -.. rst-class:: build -.. container:: +HTTP (Provide answers): - Make sure your virtualenv is properly activated, and start the web server: +.. code-block:: http - .. code-block:: bash + HTTP/1.1 200 OK + Date: Mon, 23 May 2005 22:38:34 GMT + Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux) + Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT + Etag: "3f80f-1b6-3e1cb03b" + Accept-Ranges: none + Content-Length: 438 + Connection: close + Content-Type: text/html; charset=UTF-8 + + \n\n \n This is a .... </html> - (ljenv)$ pserve development.ini - Starting server in PID 84467. - serving on http://0.0.0.0:6543 +Pay particular attention to the ``<CRLF>`` on a line by itself. - Then try viewing the list page and an entry page: - * http://localhost:6543 - * http://localhost:6543/journal/1 +.. nextslide:: HTTP Core Format - What happens when you request an entry with an id that isn't in the - database? +In HTTP, both *request* and *response* share a common basic format: - * http://localhost:6543/journal/100 +.. rst-class:: build -The MVC View -============ +* Line separators are <CRLF> (familiar, no?) +* A required initial line (a command or a response code) +* A (mostly) optional set of headers, one per line +* A blank line +* An optional body -.. rst-class:: left -.. container:: - Again, back to the *Model-View-Controller* pattern. +Implementing HTTP +----------------- - .. figure:: http://upload.wikimedia.org/wikipedia/commons/4/40/MVC_passive_view.png - :align: center - :width: 25% +Let's investigate the HTTP protocol a bit in real life. - By Alan Evangelista (Own work) [CC0], via Wikimedia Commons +.. rst-class:: build +.. container:: - .. rst-class:: build - .. container:: + We'll do so by building a simplified HTTP server, one step at a time. - We've built a *model* and we've created some *controllers* that use it. + There is a copy of the echo server from last time in + ``resources/session02``. It's called ``http_server.py``. - In Pyramid, we call *controllers* **views** and they are callables that - take *request* as an argument. + In a terminal, move into that directory. We'll be doing our work here for + the rest of the session - Let's turn to the last piece of the *MVC* patter, the *view* -Presenting Data ---------------- +.. nextslide:: TDD IRL (a quick aside) -The job of the *view* in the *MVC* pattern is to present data in a format that -is readable to the user of the system. +Test Driven Development (TDD) is all the rage these days. .. rst-class:: build .. container:: - There are many ways to present data. + It means that before you write code, you first write tests demonstrating + what you want your code to do. - Some are readable by humans (tables, charts, graphs, HTML pages, text - files). + When all your tests pass, you are finished. You did this for your last + assignment. - Some are more for machines (xml files, csv, json). + We'll be doing it again today. - Which of these formats is the *right one* depends on your purpose. - What is the purpose of our learning journal? +.. nextslide:: Run the Tests -Pyramid Renderers ------------------ - -In Pyramid, the job of presenting data is performed by a *renderer*. +From inside ``resources/session02`` start a second python interpreter and run +``$ python http_server.py`` .. rst-class:: build .. container:: - So we can consider the Pyramid **renderer** to be the *view* in our *MVC* - app. + In your first interpreter run the tests. You should see similar output: - We've already seen how we can connect a *renderer* to a Pyramid *view* with - configuration. + .. code-block:: bash - In fact, we have already done so, using a built-in renderer called - ``'string'``. + $ python tests.py + [...] + Ran 10 tests in 0.054s - This renderer converts the return value of its *view* to a string and sends - that back to the client as an HTTP response. + FAILED (failures=3, errors=7) - But the result isn't so nice looking. + Let's take a few minutes here to look at these tests and understand them. -.. nextslide:: Template Renderers -The `built-in renderers` (``'string'``, ``'json'``, ``'jsonp'``) in Pyramid are -not the only ones available. +.. nextslide:: Viewing an HTTP Request -.. _built-in renderers: http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/renderers.html#built-in-renderers +Our job is to make all those tests pass. .. rst-class:: build .. container:: - There are add-ons to Pyramid that support using various *template - languages* as renderers. + First, though, let's pretend this server really is a functional HTTP + server. - In fact, one of these was installed by default when you created this - project. + This time, instead of using the echo client to make a connection to the + server, let's use a web browser! -.. nextslide:: Configuring a Template Renderer + Point your favorite browser at ``http://localhost:10000`` -.. code-block:: python - # in setup.py - requires = [ - # ... - 'pyramid_chameleon', - # ... - ] +.. nextslide:: A Bad Interaction - # in learning_journal/__init__.py - def main(global_config, **settings): - # ... - config.include('pyramid_chameleon') +First, look at the printed output from your echo server. .. rst-class:: build .. container:: - The `pyramid_chameleon` package supports using the `chameleon` template - language. + Second, note that your browser is still waiting to finish loading the page - The language is quite nice and powerful, but not so easy to learn. + Moreover, your server should also be hung, waiting for more from the + 'client' - Let's use a different one, *jinja2* + This is because the server is waiting for the browser to respond -.. nextslide:: Changing Template Renderers + And at the same time, the browser is waiting for the server to indicate it + is done. -Change ``pyramid_chameleon`` to ``pyramid_jinja2`` in both of these files: + Our server does not yet speak the HTTP protocol, but the browser is + expecting it. -.. code-block:: python +.. nextslide:: Echoing A Request - # in setup.py - requires = [ - # ... - 'pyramid_jinja2', - # ... - ] +Kill your server with ``ctrl-c`` (the keyboard interrupt) and you should see +some printed content in your browser: - # in learning_journal/__init__.py - def main(global_config, **settings): - # ... - config.include('pyramid_jinja2') +.. rst-class:: build +.. container:: + + .. code-block:: http + + GET / HTTP/1.1 + Host: localhost:10000 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:22.0) Gecko/20100101 Firefox/22.0 + Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + Accept-Language: en-US,en;q=0.5 + Accept-Encoding: gzip, deflate + DNT: 1 + Cookie: __utma=111872281.383966302.1364503233.1364503233.1364503233.1; __utmz=111872281.1364503233.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); csrftoken=uiqj579iGRbReBHmJQNTH8PFfAz2qRJS + Connection: keep-alive + Cache-Control: max-age=0 + + Your server is simply echoing what it receives, so this is an *HTTP + Request* as sent by your browser. -.. nextslide:: Picking up the Changes +.. nextslide:: HTTP Debugging -We've changed the dependencies for our Pyramid project. + +When working on HTTP applications, it's nice to be able to see all this going back +and forth. .. rst-class:: build .. container:: - As a result, we will need to re-install it so the new dependencies are also - installed: + Good browsers support this with a set of developer tools built-in. - .. code-block:: bash + .. rst-class:: build - (ljenv)$ python setup.py develop - ... - Finished processing dependencies for learning-journal==0.0 - (ljenv)$ + * firefox -> ctrl-shift-K or cmd-opt-K (os X) + * safari -> enable in preferences:advanced then cmd-opt-i + * chrome -> ctrl-shift-i or cmd-opt-i (os X) + * IE (7.0+) -> F12 or tools menu -> developer tools - Now, we can use *Jinja2* templates in our project. + The 'Net(work)' pane of these tools can show you both request and response, + headers and all. Very useful. - Let's learn a bit about how `Jinja2 templates`_ work. -.. _Jinja2 templates: http://jinja.pocoo.org/docs/templates/ +.. nextslide:: Stop! Demo Time -Jinja2 Template Basics ----------------------- +.. rst-class:: centered -We'll start with the absolute basics. +**Let's take a quick look** + + +.. nextslide:: Other Debugging Options + +Sometimes you need or want to debug http requests that are not going through +your browser. .. rst-class:: build .. container:: - Fire up a Python interpreter, using your `ljenv` virtualenv: + Or perhaps you need functionality that is not supported by in-browser tools + (request munging, header mangling, decryption of https request/responses) - .. code-block:: bash + Then it might be time for an HTTP debugging proxy: - (ljenv)$ python - >>> + .. rst-class:: build - Then import the ``Template`` class from the ``jinja2`` package: + * windows: http://www.fiddler2.com/fiddler2/ + * win/osx/linux: http://www.charlesproxy.com/ - .. code-block:: pycon + We won't cover any of these tools here today. But you can check them out + when you have the time. - >>> from jinja2 import Template -.. nextslide:: Templates are Strings +Step 1: Basic HTTP Protocol +--------------------------- -A template is constructed with a simple string: +In HTTP 1.0, the only required line in an HTTP request is this: -.. code-block:: python +.. code-block:: http - >>> t1 = Template("Hello {{ name }}, how are you?") + GET /path/to/index.html HTTP/1.0<CRLF> + <CRLF> .. rst-class:: build .. container:: - Here, we've simply typed the string directly, but it is more common to - build a template from the contents of a *file*. + As virtual hosting grew more common, that was not enough, so HTTP 1.1 adds + a single required *header*, **Host**: - Notice that our string has some odd stuff in it: ``{{ name }}``. + .. code-block:: http + + GET /path/to/index.html HTTP/1.1<CRLF> + Host: www.mysite1.com:80<CRLF> + <CRLF> - This is called a placeholder and when the template is *rendered* it is - replaced. -.. nextslide:: Rendering a Template +.. nextslide:: HTTP Responses -Call the ``render`` method, providing *context*: +In both HTTP 1.0 and 1.1, a proper response consists of an intial line, +followed by optional headers, a single blank line, and then optionally a +response body: -.. code-block:: python +.. rst-class:: build +.. container:: - >>> t1.render(name="Freddy") - u'Hello Freddy, how are you?' - >>> t1.render({'name': "Roberto"}) - u'Hello Roberto, how are you?' - >>> + .. code-block:: http + + HTTP/1.1 200 OK<CRLF> + Content-Type: text/plain<CRLF> + <CRLF> + this is a pretty minimal response + + Let's update our server to return such a response. + +.. nextslide:: Returning a Canned HTTP Response + +Begin by implementing a new function in your ``http_server.py`` script called +`response_ok`. .. rst-class:: build .. container:: - *Context* can either be keyword arguments, or a dictionary + It can be super-simple for now. We'll improve it later. - Note the resemblance to something you've seen before: + .. container:: - .. code-block:: python - - >>> "This is {owner}'s string".format(owner="Cris") - 'This is Cris's string' + It needs to return our minimal response from above: + + .. code-block:: http + + HTTP/1.1 200 OK<CRLF> + Content-Type: text/plain<CRLF> + <CRLF> + this is a pretty minimal response + **Remember, <CRLF> is a placeholder for the** ``\r\n`` **character sequence** -.. nextslide:: Dictionaries in Context -Dictionaries passed in as part of the *context* can be addressed with *either* -subscript or dotted notation: +.. nextslide:: My Solution .. code-block:: python - >>> person = {'first_name': 'Frank', - ... 'last_name': 'Herbert'} - >>> t2 = Template("{{ person.last_name }}, {{ person['first_name'] }}") - >>> t2.render(person=person) - u'Herbert, Frank' + def response_ok(): + """returns a basic HTTP response""" + resp = [] + resp.append(b"HTTP/1.1 200 OK") + resp.append(b"Content-Type: text/plain") + resp.append(b"") + resp.append(b"this is a pretty minimal response") + return b"\r\n".join(resp) + +Did you remember that sockets only accept bytes? + + +.. nextslide:: Run The Tests + +We've now implemented a function that is tested by our tests. Let's run them +again: .. rst-class:: build +.. container:: + + .. code-block:: bash + + $ python tests.py + [...] + ---------------------------------------------------------------------- + Ran 10 tests in 0.002s -* Jinja2 will try the *correct* way first (attr for dotted, item for - subscript). -* If nothing is found, it will try the opposite. -* If nothing is found, it will return an *undefined* object. + FAILED (failures=3, errors=3) + Great! We've now got 4 tests that pass. Good work. -.. nextslide:: Objects in Context +.. nextslide:: Server Modifications -The exact same is true of objects passed in as part of *context*: +Next, we need to rebuild the server loop from our echo server for it's new +purpose: .. rst-class:: build .. container:: - .. code-block:: python + It should now wait for an incoming request to be *finished*, *then* send a + response back to the client. - >>> t3 = Template("{{ obj.x }} + {{ obj['y'] }} = Fun!") - >>> class Game(object): - ... x = 'babies' - ... y = 'bubbles' - ... - >>> bathtime = Game() - >>> t3.render(obj=bathtime) - u'babies + bubbles = Fun!' + The response it sends can be the result of calling our new ``response_ok`` + function for now. - This means your templates can be a bit agnostic as to the nature of the - things in *context* + We could also bump up the ``recv`` buffer size to something more reasonable + for HTTP traffic, say 1024. -.. nextslide:: Filtering values in Templates +.. nextslide:: My Solution -You can apply `filters`_ to the data passed in *context* with the pipe ('|') -operator: +.. code-block:: python -.. _filters: http://jinja.pocoo.org/docs/dev/templates/#filters + # ... + try: + while True: + print('waiting for a connection', file=log_buffer) + conn, addr = sock.accept() # blocking + try: + print('connection - {0}:{1}'.format(*addr), file=log_buffer) + while True: + data = conn.recv(1024) + if len(data) < 1024: + break + print('sending response', file=log_buffer) + response = response_ok() + conn.sendall(response) + finally: + conn.close() + # ... -.. code-block:: python - t4 = Template("shouted: {{ phrase|upper }}") - >>> t4.render(phrase="this is very important") - u'shouted: THIS IS VERY IMPORTANT' +.. nextslide:: Run The Tests + +Once you've got that set, restart your server:: + + $ python http_server.py .. rst-class:: build .. container:: - You can also chain filters together: + Then you can re-run your tests: - .. code-block:: python + .. code-block:: bash - t5 = Template("confusing: {{ phrase|upper|reverse }}") - >>> t5.render(phrase="howdy doody") - u'confusing: YDOOD YDWOH' + $ python tests.py + [...] + ---------------------------------------------------------------------- + Ran 10 tests in 0.003s -.. nextslide:: Control Flow + FAILED (failures=2, errors=3) -Logical `control structures`_ are also available: + Five tests now pass! -.. _control structures: http://jinja.pocoo.org/docs/dev/templates/#list-of-control-structures +Step 2: Handling HTTP Methods +----------------------------- -.. rst-class:: build -.. container:: +Every HTTP request **must** begin with a single line, broken by whitespace into +three parts: - .. code-block:: python +.. code-block:: http - tmpl = """ - ... {% for item in list %}{{ item }}, {% endfor %} - ... """ - >>> t6 = Template(tmpl) - >>> t6.render(list=[1,2,3,4,5,6]) - u'\n1, 2, 3, 4, 5, 6, ' + GET /path/to/index.html HTTP/1.1 - Any control structure introduced in a template **must** be paired with an - explicit closing tag ({% for %}...{% endfor %}) +.. rst-class:: build +.. container:: - Remember, although template tags like ``{% for %}`` or ``{% if %}`` look a - lot like Python, they are not. + The three parts are the *method*, the *URI*, and the *protocol* - The syntax is specific and must be followed correctly. + Let's look at each in turn. -.. nextslide:: Template Tests -There are a number of specialized *tests* available for use with the -``if...elif...else`` control structure: +.. nextslide:: HTTP Methods -.. code-block:: python +**GET** ``/path/to/index.html HTTP/1.1`` - >>> tmpl = """ - ... {% if phrase is upper %} - ... {{ phrase|lower }} - ... {% elif phrase is lower %} - ... {{ phrase|upper }} - ... {% else %}{{ phrase }}{% endif %}""" - >>> t7 = Template(tmpl) - >>> t7.render(phrase="FOO") - u'\n\n foo\n' - >>> t7.render(phrase="bar") - u'\n\n BAR\n' - >>> t7.render(phrase="This should print as-is") - u'\nThis should print as-is' +.. rst-class:: build +* Every HTTP request must start with a *method* +* There are four main HTTP methods: -.. nextslide:: Basic Expressions + .. rst-class:: build -Basic `Python-like expressions`_ are also supported: + * GET + * POST + * PUT + * DELETE -.. _Python-like expressions: http://jinja.pocoo.org/docs/dev/templates/#expressions +* There are others, notably HEAD, but you won't see them too much -.. code-block:: python - tmpl = """ - ... {% set sum = 0 %} - ... {% for val in values %} - ... {{ val }}: {{ sum + val }} - ... {% set sum = sum + val %} - ... {% endfor %} - ... """ - >>> t8 = Template(tmpl) - >>> t8.render(values=range(1,11)) - u'\n\n\n1: 1\n \n\n2: 3\n \n\n3: 6\n \n\n4: 10\n - \n\n5: 15\n \n\n6: 21\n \n\n7: 28\n \n\n8: 36\n - \n\n9: 45\n \n\n10: 55\n \n' +.. nextslide:: HTTP Methods + +These four methods are mapped to the four basic steps (*CRUD*) of persistent +storage: +.. rst-class:: build -Our Templates -------------- +* POST = Create +* GET = Read +* PUT = Update +* DELETE = Delete -There's more that Jinja2 templates can do, but it will be easier to introduce -you to that in the context of a working template. So let's make some. -.. nextslide:: Detail Template +.. nextslide:: Methods: Safe <--> Unsafe -We have a Pyramid view that returns a single entry. Let's create a template to -show it. +HTTP methods can be categorized as **safe** or **unsafe**, based on whether +they might change something on the server: .. rst-class:: build .. container:: - In ``learning_journal/templates`` create a new file ``detail.jinja2``: + .. rst-class:: build - .. code-block:: jinja + * Safe HTTP Methods + + * GET - <article> - <h1>{{ entry.title }}</h1> - <hr/> - <p>{{ entry.body }}</p> - <hr/> - <p>Created <strong title="{{ entry.created }}">{{entry.created}}</strong></p> - </article> + * Unsafe HTTP Methods + + * POST + * PUT + * DELETE - Then wire it up to the detail view in ``views.py``: + This is a *normative* distinction, which is to say **be careful** - .. code-block:: python - - # views.py - @view_config(route_name='detail', renderer='templates/detail.jinja2') - def view(request): - # ... -.. nextslide:: Try It Out +.. nextslide:: Methods: Idempotent <--> ??? -Now we should be able to see some rendered HTML for our journal entry details. +HTTP methods can be categorized as **idempotent**. .. rst-class:: build .. container:: - Start up your server: + This means that a given request will always have the same result: - .. code-block:: bash + .. rst-class:: build - (ljenv)$ pserve development.ini - Starting server in PID 90536. - serving on http://0.0.0.0:6543 + * Idempotent HTTP Methods + + * GET + * PUT + * DELETE + + * Non-Idempotent HTTP Methods + + * POST - Then try viewing an individual journal entry + Again, *normative*. The developer is responsible for ensuring that it is true. - * http://localhost:6543/journal/1 -.. nextslide:: Listing Page +.. nextslide:: HTTP Method Handling -The index page of our journal should show a list of journal entries, let's do -that next. +Let's keep things simple, our server will only respond to *GET* requests. .. rst-class:: build .. container:: - In ``learning_journal/templates`` create a new file ``list.jinja2``: + We need to create a function that parses a request and determines if we can + respond to it: ``parse_request``. - .. code-block:: jinja + If the request method is not *GET*, our method should raise an error - {% if entries %} - <h2>Journal Entries</h2> - <ul> - {% for entry in entries %} - <li> - <a href="{{ request.route_url('detail', id=entry.id) }}">{{ entry.title }}</a> - </li> - {% endfor %} - </ul> - {% else %} - <p>This journal is empty</p> - {% endif %} - -.. nextslide:: + Remember, although a request is more than one line long, all we care about + here is the first line -It's worth taking a look at a few specifics of this template. -.. rst-class:: build -.. container:: +.. nextslide:: My Solution - .. code-block:: jinja - - <a href="{{ request.route_url('detail', id=entry.id) }}">{{ entry.title }}</a> +.. code-block:: python - Jinja2 templates are rendered with a *context*. + def parse_request(request): + first_line = request.split("\r\n", 1)[0] + method, uri, protocol = first_line.split() + if method != "GET": + raise NotImplementedError("We only accept GET") + print('request is okay', file=sys.stderr) - The return values of the Pyramid *view* for a template get included in that - context. - So does *request*, which is placed there by the framework. +.. nextslide:: Update the Server - Request has a method ``route_url`` that will create a URL for a named - route. +We'll also need to update the server code. It should - This allows you to include URLs in your template without needing to know - exactly what they will be. +.. rst-class:: build - This process is called *reversing*, since it's a bit like a reverse phone - book lookup. +* save the request as it comes in +* check the request using our new function +* send an OK response if things go well -.. nextslide:: -Finally, you'll need to connect this new renderer to your listing view: +.. nextslide:: My Solution .. code-block:: python - @view_config(route_name='home', renderer='templates/list.jinja2') - def index_page(request): - # ... + # ... + conn, addr = sock.accept() # blocking + try: + print('connection - {0}:{1}'.format(*addr), file=log_buffer) + request = "" + while True: + data = conn.recv(1024) + request += data.decode('utf8') + if len(data) < 1024 or not data: + break + + parse_request(request) + print('sending response', file=log_buffer) + response = response_ok() + conn.sendall(response) + finally: + conn.close() + # ... + -.. nextslide:: Try It Out +.. nextslide:: Run The Tests -We can now see our list page too. Let's try starting the server: +Quit and restart your server now that you've updated the code:: + + $ python http_server.py .. rst-class:: build .. container:: + At this point, we should have seven tests passing: + .. code-block:: bash + + $ python tests.py + Ran 10 tests in 0.002s + + FAILED (failures=1, errors=2) + + +.. nextslide:: What About a Browser? + +Quit and restart your server, now that you've updated the code. - (ljenv)$ pserve development.ini - Starting server in PID 90536. - serving on http://0.0.0.0:6543 +.. rst-class:: build +.. container:: + + Reload your browser. It should work fine. - Then try viewing the home page of your journal: + We can use the ``simple_client.py`` script in our resources to test our + error condition. In a second terminal window run the script like so:: - * http://localhost:6543/ + $ python simple_client.py "POST / HTTP/1.0\r\n\r\n" - Click on the link to an entry, it should work. + You'll have to quit the client pretty quickly with ``ctrl-c`` -.. nextslide:: Sharing Structure -These views are reasonable, if quite plain. +Step 3: Error Responses +----------------------- + +Okay, so the outcome there was pretty ugly. The client went off the rails, and +our server has terminated as well. .. rst-class:: build .. container:: - It'd be nice to put them into something that looks a bit more like a - website. - - Jinja2 allows you to combine templates using something called - `template inheritance`_. + .. rst-class:: centered - You can create a basic page structure, and then *inherit* that structure in - other templates. + **why?** - In our class resources I've added a page template ``layout.jinja2``. Copy - that page to your templates directory + The HTTP protocol allows us to handle errors like this more gracefully. -.. _template inheritance: http://jinja.pocoo.org/docs/dev/templates/#template-inheritance + .. rst-class:: centered -.. nextslide:: ``layout.jinja2`` + **Enter the Response Code** -.. code-block:: jinja - <!DOCTYPE html> - <html lang="en"> - <head> - <meta charset="utf-8"> - <title>Python Learning Journal - - - -

      - -
      -
      -

      My Python Journal

      -
      {% block body %}{% endblock %}
      -
      -

      Created in the UW PCE Python Certificate Program

      - - +.. nextslide:: HTTP Response Codes -.. nextslide:: Template Blocks +``HTTP/1.1`` **200 OK** -The important part here is the ``{% block body %}{% endblock %}`` expression. +All HTTP responses must include a **response code** indicating the outcome of +the request. .. rst-class:: build .. container:: - This is a template **block** and it is a kind of placeholder. + .. rst-class:: build - Other templates can inherit from this one, and fill that block with - additional HTML. + * 1xx (HTTP 1.1 only) - Informational message + * 2xx - Success of some kind + * 3xx - Redirection of some kind + * 4xx - Client Error of some kind + * 5xx - Server Error of some kind - Let's update our detail and list templates: + The text bit makes the code more human-readable - .. code-block:: jinja - - {% extends "layout.jinja2" %} - {% block body %} - - {% endblock %} -.. nextslide:: Try It Out +.. nextslide:: Common Response Codes -Let's try starting the server so we can see the result: +There are certain HTTP response codes you are likely to see (and use) most +often: .. rst-class:: build .. container:: - .. code-block:: bash - - (ljenv)$ pserve development.ini - Starting server in PID 90536. - serving on http://0.0.0.0:6543 + .. rst-class:: build - Then try viewing the home page of your journal: + * ``200 OK`` - Everything is good + * ``301 Moved Permanently`` - You should update your link + * ``304 Not Modified`` - You should load this from cache + * ``404 Not Found`` - You've asked for something that doesn't exist + * ``500 Internal Server Error`` - Something bad happened - * http://localhost:6543/ + Do not be afraid to use other, less common codes in building good apps. + There are a lot of them for a reason. - Click on the link to an entry, it should work. + See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html - And now you have shared page structure that is in both. -Static Assets -------------- +.. nextslide:: Handling our Error -Although we have a shared structure, it isn't particularly nice to look at. +Luckily, there's an error code that is tailor-made for this situation. .. rst-class:: build .. container:: - Aspects of how a website looks are controlled by CSS (*Cascading Style - Sheets*). + The client has made a request using a method we do not support + + ``405 Method Not Allowed`` + + Let's add a new function that returns this error code. It should be called + ``response_method_not_allowed`` + + Remember, it must be a complete HTTP Response with the correct *code* - Stylesheets are one of what we generally speak of as *static assets*. - Other static assets include *images* that are part of the look and feel of - the site (logos, button images, etc) and the *JavaScript* files that add - client-side dynamic behavior to the site. +.. nextslide:: My Solution + +.. code-block:: python + + def response_method_not_allowed(): + """returns a 405 Method Not Allowed response""" + resp = [] + resp.append("HTTP/1.1 405 Method Not Allowed") + resp.append("") + return "\r\n".join(resp) -.. nextslide:: Static Assets in Pyramid -Serving static assets in Pyramid requires a *static view* to configuration. -Luckily, ``pcreate`` already handled that for us: +.. nextslide:: Server Updates + +Again, we'll need to update the server to handle this error condition +correctly. It should .. rst-class:: build -.. container:: - .. code-block:: python - - # in learning_journal/__init__.py - def main(global_config, **settings): - # ... - config.add_static_view('static', 'static', cache_max_age=3600) - # ... +* catch the exception raised by the ``parse_request`` function +* create our new error response as a result +* if no exception is raised, then create the OK response +* return the generated response to the user + +.. nextslide:: My Solution + +.. code-block:: python - The first argument to ``add_static_view`` is a *name* that will need to - appear in the path of URLs requesting assets. + # ... + while True: + data = conn.recv(1024) + request += data.decode('utf8') + if len(data) < 1024: + break - The second argument is a *path* that is relative to the package being - configured. + try: + parse_request(request) + except NotImplementedError: + response = response_method_not_allowed() + else: + response = response_ok() - Assets referenced by the *name* in a URL will be searched for in the - location defined by the *path* + print('sending response', file=log_buffer) + conn.sendall(response.encode('utf8')) + # ... - Additional keyword arguments control other aspects of how the view works. -.. nextslide:: Static Assets in Templates +.. nextslide:: Run The Tests -Once you have a static view configured, you can use assets in that location in -templates. +Start your server (or restart it if by some miracle it's still going). .. rst-class:: build .. container:: - The *request* object in Pyramid provides a ``static_url`` method that - builds appropriate URLs + Then run the tests again:: - Add the following to our ``layout.jinja2`` template: + $ python tests.py + [...] + Ran 10 tests in 0.002s - .. code-block:: jinja - - - - - - - The one required argument to ``request.static_url`` is a *path* to an - asset. + OK - Note that because any package *might* define a static view, we have to - specify which package we want to look in. + Wahoo! All our tests are passing. That means we are done writing code for + now. - That's why we have ``learning_journal:static/styles.css`` in our call. -.. nextslide:: Basic Styles +Step 4: Serving Resources +------------------------- -I've created some very very basic styles for our learning journal. +We've got a very simple server that accepts a request and sends a response. +But what happens if we make a different request? .. rst-class:: build .. container:: - You can find them in ``resources/session02/styles.css``. Go ahead and copy - that file. - - Add it to ``learning_journal/static``. - - Then restart your web server and see what a difference a little style - makes: + .. container:: + + In your web browser, enter the following URL:: - .. code-block:: bash + http://localhost:10000/page - (ljenv)$ pserve development.ini - Starting server in PID 90536. - serving on http://0.0.0.0:6543 + .. container:: -.. nextslide:: The Outcome + What happened? What happens if you use this URL:: -Your site should look something like this: + http://localhost:10000/section/page? -.. figure:: /_static/learning_journal_styled.png - :align: center - :width: 75% - The learning journal with basic styles applied +.. nextslide:: Determining a Resource -Getting Interactive -=================== +We expect different urls to result in different responses. -.. rst-class:: left +.. rst-class:: build .. container:: - We have a site that allows us to view a list of journal entries. + Each separate *path* provided should map to a *resource* - .. rst-class:: build - .. container:: + But this isn't happening with our server, for obvious reasons. - We can also view the details of a single entry. + It brings us back to the second element of that first line of an HTTP + request. - But as yet, we don't really have any *interaction* in our site yet. + .. rst-class:: centered - We can't create new entries. + **The Return of the URI** - Let's add that functionality next. -User Input ----------- +.. nextslide:: HTTP Requests: URI -In HTML websites, the traditional way of getting input from users is via -`HTML forms`_. +``GET`` **/path/to/index.html** ``HTTP/1.1`` .. rst-class:: build -.. container:: - Forms use *input elements* to allow users to enter data, pick from - drop-down lists, or choose items via checkbox or radio button. +* Every HTTP request must include a **URI** used to determine the **resource** to + be returned - It is possible to create plain HTML forms in templates and use them with - Pyramid. +* URI?? + http://stackoverflow.com/questions/176264/whats-the-difference-between-a-uri-and-a-url/1984225#1984225 - It's a lot easier, however, to work with a *form library* to create forms, - render them in templates and interact with data sent by a client. +* Resource? Files (html, img, .js, .css), but also: - We'll be using a form library called `WTForms`_ in our project + .. rst-class:: build -.. _HTML forms: https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms -.. _WTForms: http://wtforms.readthedocs.org/en/latest/ + * Dynamic scripts + * Raw data + * API endpoints -.. nextslide:: Installing WTForms +.. nextslide:: Parsing a Request -The first step to working with this library is to install it. +Our ``parse_request`` method actually already finds the ``uri`` in the first +line of a request .. rst-class:: build .. container:: - Start by makin the library as a *dependency* of our package by adding it to - the *requires* list in ``setup.py``: - - .. code-block:: python + All we need to do is update the method so that it *returns* that uri - requires = [ - # ... - 'wtforms', # <- add this to the list - ] + Then we can use it. - Then, re-install our package to download and install the new dependency: +.. nextslide:: My Solution - .. code-block:: bash +.. code-block:: python - (ljenv)$ python setup.py develop - ... - Finished processing dependencies for learning-journal==0.0 + def parse_request(request): + first_line = request.split("\r\n", 1)[0] + method, uri, protocol = first_line.split() + if method != "GET": + raise NotImplementedError("We only accept GET") + print >>sys.stderr, 'request is okay' + # add the following line: + return uri -Using WTForms -------------- +.. nextslide:: Pass It Along -We'll want a form to allow a user to create a new Journal Entry. +Now we can update our server code so that it uses the return value of +``parse_request``. .. rst-class:: build .. container:: - Add a new file called ``forms.py`` in our learning_journal package, next to - ``models.py``: + That's a pretty simple change: .. code-block:: python - from wtforms import Form, TextField, TextAreaField, validators - - strip_filter = lambda x: x.strip() if x else None - - class EntryCreateForm(Form): - title = TextField( - 'Entry title', - [validators.Length(min=1, max=255)], - filters=[strip_filter]) - body = TextAreaField( - 'Entry body', - [validators.Length(min=1)], - filters=[strip_filter]) + try: + uri = parse_request(request) # update this line + except NotImplementedError: + response = response_method_not_allowed() + else: + # and modify this block + try: + content, mime_type = resolve_uri(url) + except NameError: + response = response_not_found() + else: + response = response_ok(content, mime_type) -.. nextslide:: Using a Form in a View +Homework +-------- -Next, we need to add a new view that uses this form to create a new entry. +You may have noticed that we just added calls to functions that don't yet exist .. rst-class:: build .. container:: - Add this to ``views.py``: + It's a program that shows you what you want to do, but won't actually run. - .. code-block:: python + For your homework this week you will create these functions, completing the + HTTP server. - # add these imports - from pyramid.httpexceptions import HTTPFound - from .forms import EntryCreateForm + Your starting point will be what we've made here in class. - # and update this view function - def create(request): - entry = Entry() - form = EntryCreateForm(request.POST) - if request.method == 'POST' and form.validate(): - form.populate_obj(entry) - DBSession.add(entry) - return HTTPFound(location=request.route_url('home')) - return {'form': form, 'action': request.matchdict.get('action')} + I've added a directory to ``resources/session02`` called ``homework``. -.. nextslide:: Testing the Route/View Connection + In it, you'll find this ``http_server.py`` file we've just written in class. -We already have a route that connects here. Let's test it. + That file also contains enough stub code for the missing functions to let + the server run. + + And there are more tests for you to make pass! + +One Step At A Time +------------------ + +Take the following steps one at a time. Run the tests in +``assignments/session02/homework`` between to ensure that you are getting it +right. .. rst-class:: build -.. container:: - Start your server: +* Complete the stub ``resolve_uri`` function so that it handles looking up + resources on disk using the URI returned by ``parse_request``. - .. code-block:: bash +* Make sure that if the URI does not map to a file that exists, it raises an + appropriate error for our server to handle. - (ljenv)$ pserve development.ini - Starting server in PID 90536. - serving on http://0.0.0.0:6543 +* Complete the ``response_not_found`` function stub so that it returns a 404 + response. - And then try connecting to the ``action`` route: +* Update ``response_ok`` so that it uses the values returned by ``resolve_uri`` + by the URI. (these have already been added to the function signature) - * http://localhost:6543/journal/create - - You should see something like this:: +* You'll plug those values into the response you generate in the way required + by the protocol - {'action': u'create', 'form': } -.. nextslide:: Rendering A Form +HTTP Headers +------------ -Finally, we need to create a template that will render our form. +Along the way, you'll discover that simply returning the content of a file as +an HTTP response body is insufficient. Different *types* of content need to +be identified to your browser .. rst-class:: build .. container:: - Add a new template called ``edit.jinja2`` in - ``learning_journal/templates``: + We can fix this by passing information about exactly what we are returning + as part of the response. - .. code-block:: jinja + HTTP provides for this type of thing with the generic idea of *Headers* - {% extends "templates/layout.jinja2" %} - {% block body %} -
      - {% for field in form %} - {% if field.errors %} -
        - {% for error in field.errors %} -
      • {{ error }}
      • - {% endfor %} -
      - {% endif %} -

      {{ field.label }}: {{ field }}

      - {% endfor %} -

      - - {% endblock %} -.. nextslide:: Connecting the Renderer +HTTP Headers +------------ -You'll need to update the view configuration to use this new renderer. +Both requests and responses can contain **headers** of the form ``Name: Value`` .. rst-class:: build .. container:: - Update the configuration in ``learning_journal/views.py``: - - .. code-block:: python - - @view_config(route_name='action', match_param='action=create', - renderer='templates/edit.jinja2') - def create(request): - # ... - - And then you should be able to start your server and test: + .. rst-class:: build - .. code-block:: bash + * HTTP 1.0 has 16 valid headers, 1.1 has 46 + * Any number of spaces or tabs may separate the *name* from the *value* + * If a header line starts with spaces or tabs, it is considered part of the + value for the previous header + * Header *names* are **not** case-sensitive, but *values* may be - (ljenv)$ pserve development.ini - Starting server in PID 90536. - serving on http://0.0.0.0:6543 + read more about HTTP headers: http://www.cs.tut.fi/~jkorpela/http.html - * http://localhost:6543/create -.. nextslide:: Providing Access +Content-Type Header +------------------- -Great! Now you can add new entries to your journal. +A very common header used in HTTP responses is ``Content-Type``. It tells the +client what to expect. .. rst-class:: build .. container:: - But in order to do so, you have to hand-enter the url. + .. rst-class:: build - You should add a new link in the UI somewhere that helps you get there more - easily. + * uses **mime-type** (Multi-purpose Internet Mail Extensions) + * foo.jpeg - ``Content-Type: image/jpeg`` + * foo.png - ``Content-Type: image/png`` + * bar.txt - ``Content-Type: text/plain`` + * baz.html - ``Content-Type: text/html`` - Add the following to ``list.jinja2``: + There are *many* mime-type identifiers: + http://www.webmaster-toolkit.com/mime-types.shtml - .. code-block:: jinja - {% extends "layout.jinja2" %} - {% block body %} - {% if entries %} - ... - {% else %} - ... - {% endif %} - -

      New Entry

      - {% endblock %} +Mapping Mime-types +------------------ -Homework -======== +By mapping a given file to a mime-type, we can write a header. -.. rst-class:: left +.. rst-class:: build .. container:: - You have a website now that allows you to create, view and list journal - entries - - .. rst-class:: build - .. container:: - - However, there are still a few flaws in this system. + The standard lib module ``mimetypes`` does just this. - You should be able to edit a journal entry that already exists, in case - you make a spelling error. + We can guess the mime-type of a file based on the filename or map a file + extension to a type: - It would also be nice to see a prettier site. - - Let's handle that for homework this week. + .. code-block:: pycon -Part 1: Add Editing -------------------- + >>> import mimetypes + >>> mimetypes.guess_type('file.txt') + ('text/plain', None) + >>> mimetypes.types_map['.txt'] + 'text/plain' -For part one of your assignment, add editing of existing entries. You will need: -* A form that shows an existing entry (what is different about this form from - one for creating a new entry?) -* A pyramid view that handles that form. It should: +Resolving a URI +--------------- - * Show the form with the requested entry when the page is first loaded - * Accept edits only on POST - * Update an existing entry with new data from the form - * Show the view of the entry after editing so that the user can see the edits - saved correctly - * Show errors from form validation, if any are present +Your ``resolve_uri`` function will need to accomplish the following tasks: -* A link somewhere that leads to the editing page for a single entry (probably - on the view page for a entry) +.. rst-class:: build -You'll need to update a bit of configuration, but not much. Use the create -form we did here in class as an example. +* It should take a URI as the sole argument -Part 2: Make it Yours ---------------------- +* It should map the pathname represented by the URI to a filesystem location. -I've created for you a very bare-bones layout and stylesheet. +* It should have a 'home directory', and look only in that location. -You will certainly want to add a bit of your own style and panache. +* If the URI is a directory, it should return a plain-text listing of the + directory contents and the mimetype ``text/plain``. -Spend a few hours this week playing with the styles and getting a site that -looks more like you want it to look. +* If the URI is a file, it should return the contents of that file and its + correct mimetype. -The Mozilla Developer Network has `some excellent resources`_ for learning CSS. +* If the URI does not map to a real location, it should raise an exception + that the server can catch to return a 404 response. -In particular, the `Getting Started with CSS`_ tutorial is a thorough -introduction to the basics. -You might also look at their `CSS 3 Demos`_ to help fire up your creative -juices. +Use Your Tests +-------------- -Here are a few more resources: +One of the benefits of test-driven development is that the tests that are +failing should tell you what code you need to write. -* `A List Apart `_ offers outstanding articles. Their - `Topics list `_ is worth a browse. -* `Smashing Magazine `_ is another excellent - resource for articles on design. +.. rst-class:: build +.. container:: -.. _some excellent resources: https://developer.mozilla.org/en-US/docs/Web/CSS -.. _Getting Started with CSS: https://developer.mozilla.org/en-US/docs/CSS/Getting_Started -.. _CSS 3 Demos: https://developer.mozilla.org/en-US/demos/tag/tech:css3 + As you work your way through the steps outlined above, look at your tests. + Write code that makes them pass. + If all the tests in ``assignments/session02/tests.py`` are passing, you've + completed the assignment. -Part 3: User Model ------------------- -As it stands, our journal accepts entries from anyone who comes by. +Submitting Your Homework +------------------------ -Next week we will add security to allow only logged-in users to create and edit -entries. +To submit your homework: -To do so, we'll need a user model +.. rst-class:: build +.. container:: -The model should have: + .. rst-class:: build -* An ``id`` field that is a primary key -* A ``username`` field that is unicode, no more than 255 characters, not - nullable, unique and indexed. -* A ``password`` field that is unicode and not nullable + * Do your work in the ``assignments/session02`` directory of **your fork** of + the class respository -In addition, the model should have a classmethod that retrieves a specific user -when given a username. + * When you have all tests passing, push your work to **your fork** in github. -Part 4: Preparation for Deployment ----------------------------------- + * Using the github web interface, send me a pull request. -At the end of class next week we will be deploying our application to Heroku. + I will review your work when I receive your pull requests, make comments on + it there, and then close the pull request. -You will need to get a free account. -Once you have your free account set up and you have logged in, run through the -`getting started with Python`_ tutorial. +A Few Steps Further +------------------- -Be sure to at least complete the *set up* step. It will have you install the -Heroku Toolbelt, which you will need to have ready in class. +If you are able to finish the above in less than 4-6 hours, consider taking on +one or more of the following challenges: -.. _getting started with Python: https://devcenter.heroku.com/articles/getting-started-with-python#introduction +.. rst-class:: build +* Format directory listings as HTML, so you can link to files. +* Add a GMT ``Date:`` header in the proper format (RFC-1123) to responses. + *hint: see email.utils.formatdate in the python standard library* +* Add a ``Content-Length:`` header for ``OK`` responses that provides a + correct value. +* Protect your server against errors by providing, and using, a function that + returns a ``500 Internal Server Error`` response. +* Instead of returning the python script in ``webroot`` as plain text, execute + the file and return the results as HTML. diff --git a/html/_sources/presentations/session03.txt b/html/_sources/presentations/session03.txt index 7ec40569..24a2cf57 100644 --- a/html/_sources/presentations/session03.txt +++ b/html/_sources/presentations/session03.txt @@ -1,1811 +1,1400 @@ +.. |br| raw:: html + +
      + ********** Session 03 ********** -.. figure:: /_static/no_entry.jpg +.. figure:: /_static/gateway.jpg :align: center - :width: 60% - - By `Joel Kramer via Flickr`_ - -.. _Joel Kramer via Flickr: https://www.flickr.com/photos/75001512@N00/2707796203 + :width: 50% -Security And Deployment -======================= - -.. rst-class:: left -.. container:: + The Wandering Angel http://www.flickr.com/photos/wandering_angel/1467802750/ - CC-BY - By the end of this session we'll have deployed our learning journal to a - public server. +CGI, WSGI and Living Online +=========================== - So we will need to add a bit of security to it. +Wherein we discover the gateways to dynamic processes on a server. - We'll get started on that in a moment But First --------- -.. rst-class:: large center - -Questions About the Homework? - -.. nextslide:: A Working Edit Form - -.. code-block:: python - - class EntryEditForm(EntryCreateForm): - id = HiddenField() - -`View the form online `_ +.. rst-class:: large centered -.. nextslide:: A Working Edit View - -.. code-block:: python - - @view_config(route_name='action', match_param='action=edit', - renderer='templates/edit.jinja2') - def update(request): - id = int(request.params.get('id', -1)) - entry = Entry.by_id(id) - if not entry: - return HTTPNotFound() - form = EntryEditForm(request.POST, entry) - if request.method == 'POST' and form.validate(): - form.populate_obj(entry) - return HTTPFound(location=request.route_url('detail', id=entry.id)) - return {'form': form, 'action': request.matchdict.get('action')} - -`See this view online `_ - -.. nextslide:: Linking to the Edit Form - -.. code-block:: html+jinja - - {% extends "layout.jinja2" %} - {% block body %} -
      - -
      -

      - Go Back :: - - Edit Entry -

      - {% endblock %} - - -`View this template online `_ - -.. nextslide:: A Working User Model - -.. code-block:: python +Homework Review and Questions - class User(Base): - __tablename__ = 'users' - id = Column(Integer, primary_key=True, autoincrement=True) - name = Column(Unicode(255), unique=True, nullable=False) - password = Column(Unicode(255), nullable=False) - @classmethod - def by_name(cls, name): - return DBSession.query(cls).filter(cls.name == name).first() +Previously +---------- -`View this model online `_ +.. rst-class:: build -Securing An Application -======================= +* You've learned about passing messages back and forth with sockets +* You've created a simple HTTP server using sockets +* You may even have made your server *dynamic* by returning the output of a + python script. -.. rst-class:: left +.. rst-class:: build .. container:: - We've got a solid start on our learning journal. + What if you want to pass information to that script? - .. rst-class:: build - .. container:: + How can you give the script access to information about the HTTP request + itself? - We can: - .. rst-class:: build +Stepping Away: The Environment +------------------------------ - * view a list of entries - * view a single entry - * create a new entry - * edit existing entries - - But so can everyone who visits the journal. - - It's a recipe for **TOTAL CHAOS** - - Let's lock it down a bit. - - -AuthN and AuthZ ---------------- - -There are two aspects to the process of access control online. +A computer has an *environment*: .. rst-class:: build .. container:: - .. rst-class:: build - - * **Authentication**: Verification of the identity of a *principal* - * **Authorization**: Enumeration of the rights of that *principal* in a - context. - - Think of them as **Who Am I** and **What Can I Do** - - All systems with access control involve both of these aspects. - - But many systems wire them together as one. + in \*nix, you can see this in a shell: + .. code-block:: bash -.. nextslide:: Pyramid Security - -In Pyramid these two aspects are handled by separate configuration settings: - -.. rst-class:: build -.. container:: - - .. rst-class:: build + $ printenv + TERM_PROGRAM=iTerm.app + ... - * ``config.set_authentication_policy(AuthnPolicy())`` - * ``config.set_authorization_policy(AuthzPolicy())`` + or in Windows at the command prompt: - If you set one, you must set the other. + .. code-block:: posh - Pyramid comes with a few policy classes included. + C:\> set + ALLUSERSPROFILE=C:\ProgramData + ... - You can also roll your own, so long as they fulfill the requried interface. + or in PowerShell: - You can learn about the interfaces for `authentication`_ and - `authorization`_ in the Pyramid documentation + .. code-block:: posh + + PS C:\> Get-ChildItem Env: + ALLUSERSPROFILE C:\ProgramData + ... -.. _authentication: http://docs.pylonsproject.org/docs/pyramid/en/latest/api/interfaces.html#pyramid.interfaces.IAuthenticationPolicy -.. _authorization: http://docs.pylonsproject.org/docs/pyramid/en/latest/api/interfaces.html#pyramid.interfaces.IAuthorizationPolicy -.. nextslide:: Our Journal Security -We'll be using two built-in policies today: +.. nextslide:: Setting The Environment .. rst-class:: build .. container:: - .. rst-class:: build - - * ``AuthTktAuthenticationPolicy``: sets an expirable - `authentication ticket`_ cookie. - * ``ACLAuthorizationPolicy``: uses an `Access Control List`_ to grant - permissions to *principals* + In a ``bash`` shell we can do this: - Our access control system will have the following properties: + .. code-block:: bash - .. rst-class:: build + $ export VARIABLE='some value' + $ echo $VARIABLE + some value - * Everyone can view entries, and the list of all entries - * Users who log in may edit entries or create new ones + or at a Windows command prompt: -.. _authentication ticket: http://docs.pylonsproject.org/docs/pyramid/en/latest/api/authentication.html#pyramid.authentication.AuthTktAuthenticationPolicy -.. _Access Control List: http://docs.pylonsproject.org/docs/pyramid/en/latest/api/authorization.html#pyramid.authorization.ACLAuthorizationPolicy + .. code-block:: posh -.. nextslide:: Engaging Security + C:\Users\Administrator\> set VARIABLE='some value' + C:\Users\Administrator\> echo %VARIABLE% + 'some value' -By default, Pyramid uses no security. We enable it through configuration. + or in PowerShell: -.. rst-class:: build -.. container:: + .. code-block:: posh + + PS C:\> $env:VARIABLE = "some value" + PS C:\> Get-ChildItem Env:VARIABLE + 'some value' - Open ``learning_journal/__init__.py`` and update it as follows: - .. code-block:: python +.. nextslide:: Viewing the Results - # add these imports - from pyramid.authentication import AuthTktAuthenticationPolicy - from pyramid.authorization import ACLAuthorizationPolicy - # and add this configuration: - def main(global_config, **settings): - # ... - # update building the configurator to pass in our policies - config = Configurator( - settings=settings, - authentication_policy=AuthTktAuthenticationPolicy('somesecret'), - authorization_policy=ACLAuthorizationPolicy(), - default_permission='view' - ) - # ... - -.. nextslide:: Verify It Worked - -We've now informed our application that we want to use security. +These new values are now part of the *environment* .. rst-class:: build .. container:: - By default we require the 'view' permission to see anything. - - But we have yet to assign *any permissions to anyone* at all. - - Let's verify now that we are unable to see anything in the website. - - Start your application, and try to view any page (You should get a 403 - Forbidden error response): + \*nix: .. code-block:: bash - (ljenv)$ pserve development.ini - Starting server in PID 84467. - serving on http://0.0.0.0:6543 - - .. rst-class:: build - - * http://localhost:6543/ - * http://localhost:6543/journal/1 - * http://localhost:6543/journal/create - * http://localhost:6543/journal/edit - -Implementing Authz ------------------- - -Next we have to grant some permissions to principals. - -.. rst-class:: build -.. container:: - - Pyramid authorization relies on a concept it calls "context". - - A *principal* can be granted rights in a particular *context* + $ printenv + ... + VARIABLE=some value - Context can be made as specific as a single persistent object + Windows: - Or it can be generalized to a *route* or *view* + .. code-block:: posh - To have a context, we need a Python object called a *factory* that must - have an ``__acl__`` special attribute. + C:\> set + ... + VARIABLE='some value' - The framework will use this object to determine what permissions a - *principal* has + PowerShell: - Let's create one + .. code-block:: posh + + PS C:\> Get-ChildItem Env: + ... + VARIABLE 'some value' -.. nextslide:: Add ``security.py`` +.. nextslide:: Environment in Python -In the same folder where you have ``models.py`` and ``views.py``, add a new -file ``security.py`` +We can see this *environment* in Python, too:: -.. rst-class:: build -.. container:: + $ python - .. code-block:: python +.. code-block:: pycon - from pyramid.security import Allow, Everyone, Authenticated + >>> import os + >>> print os.environ['VARIABLE'] + some_value + >>> print os.environ.keys() + ['VERSIONER_PYTHON_PREFER_32_BIT', 'VARIABLE', + 'LOGNAME', 'USER', 'PATH', ...] - class EntryFactory(object): - __acl__ = [ - (Allow, Everyone, 'view'), - (Allow, Authenticated, 'create'), - (Allow, Authenticated, 'edit'), - ] - def __init__(self, request): - pass - The ``__acl__`` attribute of this object contains a list of *ACE*\ s +.. nextslide:: Altering the Environment - An *ACE* combines an *action* (Allow, Deny), a *principal* and a *permission* +You can alter os environment values while in Python: -.. nextslide:: Using Our Context Factory +.. code-block:: pycon -Now that we have a factory that will provide context for permissions to work, -we can tell our configuration to use it. + >>> os.environ['VARIABLE'] = 'new_value' + >>> print os.environ['VARIABLE'] + new_value .. rst-class:: build .. container:: - Open ``learning_journal/__init__.py`` and update the route configuration - for our routes: + But that doesn't change the original value, *outside* Python: - .. code-block:: python + .. code-block:: bash - # add an import at the top: - from .security import EntryFactory - # update the route configurations: - def main(global_config, **settings): - """ This function returns a Pyramid WSGI application. - """ - # ... Add the factory keyword argument to our route configurations: - config.add_route('home', '/', factory=EntryFactory) - config.add_route('detail', '/journal/{id:\d+}', factory=EntryFactory) - config.add_route('action', '/journal/{action}', factory=EntryFactory) + >>> ^D -.. nextslide:: What We've Done + $ echo this is the value: $VARIABLE + this is the value: some_value + + C:\> \Users\Administrator\> echo %VARIABLE% + 'some value' -We've now told our application we want a principal to have the *view* -permission by default. +.. nextslide:: Lessons Learned .. rst-class:: build .. container:: - And we've provided a factory to supply context and an ACL for each route. + .. rst-class:: build - Check our ACL. Who can view the home page? The detail page? The action - pages? + * Subprocesses inherit their environment from their Parent + * Parents do not see changes to environment in subprocesses + * In Python, you can actually set the environment for a subprocess explicitly - Pyramid allows us to set a *default_permission* for *all views*\ . + .. code-block:: python - But view configuration allows us to require a different permission for *a view*\ . + subprocess.Popen(args, bufsize=0, executable=None, + stdin=None, stdout=None, stderr=None, + preexec_fn=None, close_fds=False, + shell=False, cwd=None, env=None, # <------- + universal_newlines=False, startupinfo=None, + creationflags=0) - Let's make our action views require appropriate permissions next -.. nextslide:: Requiring Permissions for a View +CGI - The Web Environment +========================= -Open ``learning_journal/views.py``, and edit the ``@view_config`` for -``create`` and ``update``: +.. rst-class:: large centered -.. code-block:: python +CGI is little more than a set of standard environmental variables - @view_config(route_name='action', match_param='action=create', - renderer='templates/edit.jinja2', - permission='create') # <-- ADD THIS - def create(request): - # ... - @view_config(route_name='action', match_param='action=edit', - renderer='templates/edit.jinja2', - permission='edit') # <-- ADD THIS - def update(request): - # ... +What is CGI +----------- -.. nextslide:: Verify It Worked +First discussed in 1993, formalized in 1997, the current version (1.1) has +been in place since 2004. -At this point, our "action" views should require permissions other than the -default ``view``. +From the preamble:: -.. rst-class:: build -.. container:: + This memo provides information for the Internet community. It does not + specify an Internet standard of any kind. - Start your application and verify that it is true: + -- RFC 3875 - CGI Version 1.1: http://tools.ietf.org/html/rfc3875 - .. code-block:: bash - (ljenv)$ pserve development.ini - Starting server in PID 84467. - serving on http://0.0.0.0:6543 +.. nextslide:: Meta-Variables - .. rst-class:: build +:: - * http://localhost:6543/ - * http://localhost:6543/journal/1 - * http://localhost:6543/journal/create - * http://localhost:6543/journal/edit + 4. The CGI Request . . . . . . . . . . . . . . . . . . . . . . . 10 + 4.1. Request Meta-Variables . . . . . . . . . . . . . . . . . 10 + 4.1.1. AUTH_TYPE. . . . . . . . . . . . . . . . . . . . 11 + 4.1.2. CONTENT_LENGTH . . . . . . . . . . . . . . . . . 12 + 4.1.3. CONTENT_TYPE . . . . . . . . . . . . . . . . . . 12 + 4.1.4. GATEWAY_INTERFACE. . . . . . . . . . . . . . . . 13 + 4.1.5. PATH_INFO. . . . . . . . . . . . . . . . . . . . 13 + 4.1.6. PATH_TRANSLATED. . . . . . . . . . . . . . . . . 14 + 4.1.7. QUERY_STRING . . . . . . . . . . . . . . . . . . 15 + 4.1.8. REMOTE_ADDR. . . . . . . . . . . . . . . . . . . 15 + 4.1.9. REMOTE_HOST. . . . . . . . . . . . . . . . . . . 16 + 4.1.10. REMOTE_IDENT . . . . . . . . . . . . . . . . . . 16 + 4.1.11. REMOTE_USER. . . . . . . . . . . . . . . . . . . 16 + 4.1.12. REQUEST_METHOD . . . . . . . . . . . . . . . . . 17 + 4.1.13. SCRIPT_NAME. . . . . . . . . . . . . . . . . . . 17 + 4.1.14. SERVER_NAME. . . . . . . . . . . . . . . . . . . 17 + 4.1.15. SERVER_PORT. . . . . . . . . . . . . . . . . . . 18 + 4.1.16. SERVER_PROTOCOL. . . . . . . . . . . . . . . . . 18 + 4.1.17. SERVER_SOFTWARE. . . . . . . . . . . . . . . . . 19 - You should get a ``403 Forbidden`` for the action pages only. -Implement AuthN ---------------- +Running CGI +----------- -Now that we have authorization implemented, we need to add authentication. +You have a couple of options: .. rst-class:: build .. container:: - By providing the system with an *authenticated user*, our ACEs for - ``Authenticated`` will apply. - - We'll need to have a way for a user to prove who they are to the - satisfaction of the system. - - The most common way of handling this is through a *username* and - *password*. + .. rst-class:: build - A person provides both in an html form. + * Python Standard Library CGIHTTPServer + * Apache + * IIS (on Windows) + * Some other HTTP server that implements CGI (lighttpd, ...?) - When the form is submitted, the system seeks a user with that name, and - compares the passwords. + Let's keep it simple by using the Python module - If there is no such user, or the password does not match, authentication - fails. -.. nextslide:: An Example +.. nextslide:: Preparations -Let's imagine that Alice wants to authenticate with our website. +In the class resources for this session, you'll find a directory named ``cgi``. .. rst-class:: build .. container:: - Her username is ``alice`` and her password is ``s3cr3t``. + Make a copy of that folder in your class working directory. - She fills these out in a form on our website and submits the form. + Windows Users, you may have to edit the first line of + ``cgi/cgi-bin/cgi_1.py`` to point to your python executable. - Our website looks for a ``User`` object in the database with the username - ``alice``. - - Let's imagine that there is one, so our site next compares the value she - sent for her *password* to the value stored in the database. - - If her stored password is also ``s3cr3t``, then she is who she says she is. + .. rst-class:: build - All set, right? + * Open *two* terminal windows in this ``cgi`` directory + * In the first terminal, run ``python -m http.server --cgi`` + * Open a web browser and load ``http://localhost:8000/`` + * Click on *CGI Test 1* -.. nextslide:: Encryption -The problem here is that the value we've stored for her password is in ``plain -text``. +.. nextslide:: Did that work? .. rst-class:: build -.. container:: - - This means that anyone could potentially steal our database and have access - to all our users' passwords. - - Instead, we should *encrypt* her password with a strong one-way hash. - - Then we can store the hashed value. - - When she provides the plain text password to us, we *encrypt* it the same - way, and compare the result to the stored value. - - If they match, then we know the value she provided is the same we used to - create the stored hash. -.. nextslide:: Adding Encryption +* Your browser might show a 404 or 403 error +* If you see something like that, check the permissions for ``cgi-bin`` *and* + ``cgi_1.py`` +* The file must be executable, the ``cgi-bin`` directory needs to be readable + *and* executable. -Python provides a number of libraries for implementing strong encryption. .. rst-class:: build .. container:: - You should always use a well-known library for encryption. + Remember that you can use the bash ``chmod`` command to change permissions + in \*nix: ``chmod a+x cgi-bin/cgi_1.py`` - We'll use a good one called `Cryptacular`_. + Windows users, use the 'properties' context menu to get to permissions, + just grant 'full' - This library provides a number of different algorithms and a *Manager* that - implements a simple interface for each. - .. code-block:: python - - from cryptacular.bcrypt import BCRYPTPasswordManager - manager = BCRYPTPasswordManager() - hashed = manager.encode('password') - if manager.check(hashed, 'password'): - print "It matched" - -.. _Cryptacular: https://pypi.python.org/pypi/cryptacular/ +.. nextslide:: Break It -.. nextslide:: Install Cryptactular - -To install a new package as a dependency, we add the package to our list in -``setup.py``: +Problems with permissions can lead to failure. So can scripting errors .. rst-class:: build .. container:: - .. code-block:: python + .. rst-class:: build - requires = [ - ... - 'wtforms', - 'cryptacular', - ] + * Open ``cgi/cgi-bin/cgi_1.py`` in an editor + * Before where it says ``cgi.test()``, add a single line: - Then, we re-install our package to pick up the new dependency: + .. code-block:: python - .. code-block:: bash + 1 / 0 - (ljenv)$ python setup.py develop + Reload your browser, what happens now? - *note* if you have a c compiler installed but not the Python dev headers, - this may not work. Let me know if you get errors. -.. nextslide:: Comparing Passwords +.. nextslide:: Errors in CGI -The job of comparing passwords should belong to the ``User`` object. +CGI is famously difficult to debug. There are reasons for this: .. rst-class:: build -.. container:: - - Let's add an instance method that handles it for us. - - Open ``learning_journal/models.py`` and add the following to the ``User`` - class: - - .. code-block:: python - # add this import at the top - # from cryptacular.pbkdf2 import PBKDF2PasswordManager as Manager - from cryptacular.bcrypt import BCRYPTPasswordManager as Manager +* CGI is designed to provide access to runnable processes to *the internet* +* The internet is a wretched hive of scum and villainy +* Revealing error conditions can expose data that could be exploited - # add this method to the User class: - class User(Base): - # ... - def verify_password(self, password): - manager = Manager() - return manager.check(self.password, password) -.. nextslide:: Create a User +.. nextslide:: Viewing Errors in Python CGI -We'll also need to have a user for our system. +Back in your editor, add the following lines, just below ``import cgi``: .. rst-class:: build .. container:: - We can leverage the database initialization script to handle this. - - Open ``learning_journal/scripts/initialzedb.py``: - .. code-block:: python - # add the import - # from cryptacular.pbkdf2 import PBKDF2PasswordManager as Manager - from cryptacular.bcrypt import BCRYPTPasswordManager as Manager - from ..models import User - # and update the main function like so: - def main(argv=sys.argv): - # ... - with transaction.manager: - # replace the code to create a MyModel instance - manager = Manager() - password = manager.encode(u'admin') - admin = User(name=u'admin', password=password) - DBSession.add(admin) - -.. nextslide:: Rebuild the Database: - -In order to get our user created, we'll need to delete our database and -re-build it. + import cgitb + cgitb.enable() -.. rst-class:: build -.. container:: + Now, reload again. - Make sure you are in the folder where ``setup.py`` appears. +.. nextslide:: cgitb Output - Then remove the sqlite database: +.. figure:: /_static/cgitb_output.png + :align: center + :width: 100% - .. code-block:: bash - (ljenv)$ rm *.sqlite +.. nextslide:: Repair the Error - And re-initialize: +Let's fix the error from our traceback. Edit your ``cgi_1.py`` file to match: - .. code-block:: bash +.. code-block:: python - (ljenv)$ initialize_learning_journal_db development.ini - ... - 2015-01-17 16:43:55,237 INFO [sqlalchemy.engine.base.Engine][MainThread] - INSERT INTO users (name, password) VALUES (?, ?) - 2015-01-17 16:43:55,237 INFO [sqlalchemy.engine.base.Engine][MainThread] - (u'admin', '$2a$10$4Z6RVNhTE21mPLJW5VeiVe0EG57gN/HOb7V7GUwIr4n1vE.wTTTzy') + #!/usr/bin/env python + import cgi + import cgitb -Providing Login UI ------------------- + cgitb.enable() -We now have a user in our database with a strongly encrypted password. + cgi.test() .. rst-class:: build .. container:: - We also have a method on our user model that will verify a supplied - password against this encrypted version. - - We must now provide a view that lets us log in to our application. + Notice the first line of that script: ``#!/usr/bin/env python``. - We start by adding a new *route* to our configuration in - ``learning_journal/__init__.py``: + This is called a *shebang* (short for hash-bang) - .. code-block:: python + It tells the system what executable program to use when running the script. - config.add_rount('action' ...) - # ADD THIS - config.add_route('auth', '/sign/{action}', factory=EntryFactory) -.. nextslide:: A Login Form +CGI Process Execution +--------------------- -It would be nice to use the form library again to make a login form. +Servers like ``http.server --cgi`` run CGI scripts as a system user called +``nobody``. .. rst-class:: build .. container:: - Open ``learning_journal/forms.py`` and add the following: - - .. code-block:: python + This is just like you calling:: - # add an import: - from wtforms import PasswordField - # and a new form class - class LoginForm(Form): - username = TextField( - 'Username', [validators.Length(min=1, max=255)] - ) - password = PasswordField( - 'Password', [validators.Length(min=1, max=255)] - ) + $ ./cgi_bin/cgi_1.py + In fact try that now in your second terminal (use the real path), what do + you get? -.. nextslide:: Login View in ``learning_journal/views.py`` + Windows folks, you may need ``C:\>python cgi-bin/cgi_1.py`` -.. ifnotslides:: + Notice what is missing? - Next, we'll create a login view in ``learning_journal/views.py`` -.. code-block:: python +.. nextslide:: - # new imports: - from pyramid.security import forget, remember - from .forms import LoginForm - from .models import User - # and a new view - @view_config(route_name='auth', match_param='action=in', renderer='string', - request_method='POST') - def sign_in(request): - login_form = None - if request.method == 'POST': - login_form = LoginForm(request.POST) - if login_form and login_form.validate(): - user = User.by_name(login_form.username.data) - if user and user.verify_password(login_form.password.data): - headers = remember(request, user.name) - else: - headers = forget(request) - else: - headers = forget(request) - return HTTPFound(location=request.route_url('home'), headers=headers) - -.. nextslide:: Where's the Renderer? - -Notice that this view doesn't render anything. No matter what, you end up -returning to the ``home`` route. +There are a couple of important facts about CGI that derive from this: .. rst-class:: build -.. container:: - - We have to incorporate our login form somewhere. - The home page seems like a good place. +* The script **must** include a *shebang* so that the system knows how to run + it. +* The script **must** be executable. +* The *executable* named in the *shebang* will be called as the *nobody* user. +* This is a security feature to prevent CGI scripts from running as a user + with any privileges. +* This means that the *executable* from the script *shebang* must be one that + *anyone* can run. - But we don't want to show it all the time. - Only when we aren't logged in already. +.. nextslide:: The CGI Environment - Let's give that a whirl. - -.. nextslide:: Updating ``index_page`` - -Pyramid security provides a method that returns the id of the user who is -logged in, if any. +CGI is largely a set of agreed-upon environmental variables. .. rst-class:: build .. container:: - We can use that to update our home page in ``learning_journal/views.py``: + We've seen how environmental variables are found in python in + ``os.environ`` - .. code-block:: python + We've also seen that at least some of the variables in CGI are **not** part + of the system environment. - # add an import: - from pyramid.security import authenticated_userid + Where do they come from? - # and update the index_page view: - @view_config(...) - def index_page(request): - # ... get all entries here - form = None - if not authenticated_userid(request): - form = LoginForm() - return {'entries': entries, 'login_form': form} -.. nextslide:: Update ``list.jinja2`` +.. nextslide:: CGI Servers -Now we have to update the template for the ``index_page`` to display the form, *if it is there* +Let's find 'em. In a terminal fire up python: .. rst-class:: build .. container:: - .. code-block:: jinja - - {% block body %} - {% if login_form %} - - {% endif %} - {% if entries %} - ... + .. code-block:: ipython -.. nextslide:: Try It Out + In [1]: from http import server + In [2]: server.__file__ + Out[2]: '/Users/cewing/pythons/parts/opt/lib/python3.5/http/server.py' + In [3]: !subl '/Users/cewing/pythons/parts/opt/lib/python3.5/http/server.py' -We should be ready at this point. + If you don't have the ``subl`` command, or another one that starts your + editor, copy this path and open it in your text editor. -.. rst-class:: build -.. container:: - Fire up your application and see it in action: +.. nextslide:: Environmental Set Up - .. code-block:: bash - - (ljenv)$ pserve development.ini - Starting server in PID 84467. - serving on http://0.0.0.0:6543 - - Load the home page and see your login form: - - * http://localhost:6543/ +From ``http/server.py``, in the ``CGIHTTPRequestHandler`` class, in the +``run_cgi`` method: -.. nextslide:: Break Time +.. rst-class:: tiny +.. code-block:: python -That's enough for now. We have a working application. + env = copy.deepcopy(os.environ) + env['SERVER_SOFTWARE'] = self.version_string() + env['SERVER_NAME'] = self.server.server_name + env['GATEWAY_INTERFACE'] = 'CGI/1.1' + ... + if self.have_fork: + # Unix -- fork as we should + ... + pid = os.fork() + ... + try: + ... + os.execve(scriptfile, args, env) + ... + else: + # Non-Unix -- use subprocess + import subprocess + ... + p = subprocess.Popen(cmdline, + ... + env = env + ) + ... -When we return, we'll deploy it. +.. nextslide:: CGI Scripts -Deploying An Application -======================== +And that's it, the big secret. The server takes care of setting up the +environment so it has what is needed. -.. rst-class:: left +.. rst-class:: build .. container:: - Now that we have a working application, our next step is to deploy it. + Now, in reverse. How does the information that a script creates end up in + your browser? - .. rst-class:: build - .. container:: - - This will allow us to interact with the application in a live setting. + A CGI Script must print its results to stdout. - We will be able to see the application from any computer, and can share - it with friends and family. + Use the same method as above to import and open the source file for the + ``cgi`` module. Note what ``test`` does for an example of this. - To do this, we'll be using one of the most popular platforms for - deploying web applications today, `Heroku`_. + .. rst-class:: tiny + .. code-block:: python + + def test(environ=os.environ): + ... + print("Content-type: text/html") + print() + try: + form = FieldStorage() # Replace with other classes to test those + print_directory() + print_arguments() + print_form(form) + ... + except: + print_exception() -.. _Heroku: http://heroku.com -Heroku ------- +.. nextslide:: Recap -.. figure:: /_static/heroku-logo.png - :align: center - :width: 40% +What the Server Does: .. rst-class:: build -.. container:: - Heroku provides all the infrastructure needed to run many types of - applications. +* parses the request +* sets up the environment, including HTTP and SERVER variables +* sends a ``HTTP/1.1 200 OK\r\n`` first line to the client +* figures out if the URI points to a CGI script and runs it +* appends what comes from the script on stdout and sends that back - It also provides `add-on services`_ that support everything from analytics - to payment processing. +What the Script Does: - Elaborate applications deployed on Heroku can be quite expensive. +.. rst-class:: build - But for simple applications like our learning journal, the price is just - right: **free** +* names appropriate *executable* in the *shebang* line +* uses os.environ to read information from the HTTP request +* builds *any and all* extra **HTTP Headers** |br| + (Content-type:, Content-length:, ...) +* prints the headers, empty line and script output (body) to stdout -.. _add-on services: https://addons.heroku.com -.. nextslide:: How Heroku Works +In-Class Exercise I +------------------- -Heroku is predicated on interaction with a git repository. +You've seen the output from the ``cgi.test()`` method from the ``cgi`` module. +Let's make our own version of this. .. rst-class:: build .. container:: - You initialize a new Heroku app in a repository on your machine. - - This adds Heroku as a *remote* to your repository. + .. rst-class:: build - When you are ready to deploy your application, you ``git push heroku - master``. + * In the directory ``cgi-bin`` you will find the file ``cgi_2.py``. + * Open that file in your editor. + * The script contains some html with text containing placeholders. + * You should use Python and the CGI environment to fill the the blanks. + * You can view the results of your work by loading + ``http://localhost:8000/`` and clicking on *Exercise One* - Adding a few special files to your repository allows Heroku to tell what - kind of application you are creating. + **GO** - It responds to your push by running an appropriate build process and then - starting your app with a command you provide. -Preparing to Run Your App -------------------------- +Getting Data from Users +----------------------- -In order for Heroku to deploy your application, it has to have a command it can -run from a standard shell. +All this is well and good, but where's the *dynamic* stuff? .. rst-class:: build .. container:: - We could use the ``pserve`` command we've been using locally, but the - server it uses is designed for development. + It'd be nice if a user could pass form data to our script for it to use. - It's not really suitable for a public deployment. + In HTTP, data is often passed to the server as a part of a URL called the + *query string* - Instead we'll use a more robust, production-ready server that came as one - of our dependencies: `waitress`_. + The URL query string is formatted as ``name=value`` pairs, separated by the + ampersand (``&``) character - We'll start by creating a python file that can be executed to start the - ``waitress`` server. + The entire query string is separated from other parts of the URL by a + question mark:: -.. _waitress: http://waitress.readthedocs.org/en/latest/ + http://localhost:8000/cgi_bin/somescript.py?a=23&b=46&b=92 -.. nextslide:: Creating ``runapp.py`` -At the very top level of your application project, in the same folder where you -find ``setup.py``, create a new file: ``runapp.py`` +.. nextslide:: The Query String in CGI -.. code-block:: python +In the ``cgi`` module, we get access to the query string with the +``FieldStorage`` class: - import os - from paste.deploy import loadapp - from waitress import serve +.. code-block:: python - if __name__ == "__main__": - port = int(os.environ.get("PORT", 5000)) - app = loadapp('config:production.ini', relative_to='.') + import cgi - serve(app, host='0.0.0.0', port=port) + form = cgi.FieldStorage() + stringval = form.getvalue('a', None) + listval = form.getlist('b') .. rst-class:: build -.. container:: - Once this exists, you can try running your app with it: +* The values in the ``FieldStorage`` are *always* strings +* ``getvalue`` allows you to return a default, in case the field isn't present +* ``getlist`` always returns a list: empty, one-valued, or as many values as + are present - .. code-block:: bash - - (ljenv)$ python runapp.py - serving on http://0.0.0.0:5000 -.. nextslide:: Running Via Shell +In-Class Exercise II +-------------------- -This would be enough, but we also want to *install* our application as a Python -package. +Let's create a dynamic adding machine. .. rst-class:: build -.. container:: - - This will ensure that the dependencies for the application are installed. - - Add a new file called simply ``run`` in the same folder: - - .. code-block:: bash - - #!/bin/bash - python setup.py develop - python runapp.py - - The first line of this file will install our application and its - dependencies. - The second line will execute the server script. +* In the ``cgi-bin`` directory you'll find ``cgi_sums.py``. +* In the ``index.html`` file in the ``cgi`` directory, the third link leads to + this file. +* You will use the structure of that link, and what you learned just now about + ``cgi.FieldStorage``. +* Complete the cgi script in ``cgi_sums.py`` so that the result of adding all + operands sent via the url query is returned. +* Return the results as plain text, with the appropriate ``Content-Type`` + header. -.. nextslide:: Build the Database -We'll need to do the same thing for initializing the database. +.. nextslide:: My Solution .. rst-class:: build -.. container:: - Create another new file called ``build_db`` in the same folder: +.. code-block:: python - .. code-block:: bash + form = cgi.FieldStorage() + operands = form.getlist('operand') + msg = "your total is {total}" + try: + total = sum(map(int, operands)) + msg = msg.format(total=total) + except (ValueError, TypeError): + msg = "Unable to calculate a sum, please provide integer operands" - #!/bin/bash - python setup.py develop - initialize_learning_journal_db production.ini + print("Content-Type: text/plain") + print("Content-Length: %s" % len(msg)) + print() + print(msg) - Now, add ``run``, ``build_db`` and ``runapp.py`` to your repository and - commit the changes. -.. nextslide:: Make it Executable +.. nextslide:: Break Time -For Heroku to use them, ``run`` and ``build_db`` must be *executable* +.. rst-class:: centered -.. rst-class:: build -.. container:: +Let's take a break here, before continuing - For OSX and Linux users this is easy (do the same for ``run`` and - ``build_db``): - .. code-block:: bash +WSGI +==== - (ljenv)$ chmod 755 run +.. rst-class:: center large - Windows users, if you have ``git-bash``, you can do the same +The Web Server Gateway Interface - For the rest of you, try this (for both ``run`` and ``build_db``): +CGI Problems +------------ - .. code-block:: posh +CGI is great, but there are problems: - C:\views\myproject>git ls-tree HEAD - ... - 100644 blob 55c0287d4ef21f15b97eb1f107451b88b479bffe run - C:\views\myproject>git update-index --chmod=+x run - C:\views\myproject>git ls-tree HEAD - 100755 blob 3689ebe2a18a1c8ec858cf531d8c0ec34c8405b4 run +.. rst-class:: build +.. container:: - Commit your changes to git to make them permanent. + .. rst-class:: build + * Code is executed *in a new process* + * **Every** call to a CGI script starts a new process on the server + * Starting a new process is expensive in terms of server resources + * *Especially for interpreted languages like Python* -.. nextslide:: Procfile + How do we overcome this problem? -Next, we have to inform Heroku that we will be using this script to run our -application online +.. nextslide:: Alternatives to CGI + +The most popular approach is to have a long-running process *inside* the +server that handles CGI scripts. .. rst-class:: build .. container:: - Heroku uses a special file called ``Procfile`` to do this. + FastCGI and SCGI are existing implementations of CGI in this fashion. - Add that file now, in the same directory. + The PHP scripting language works in much the same way. - .. code-block:: bash + The Apache module **mod_python** offers a similar capability for Python + code. - web: ./run + .. rst-class:: build - This file tells Heroku that we have one ``web`` process to run, and that it - is the ``run`` script located right here. + * Each of these options has a specific API + * None are compatible with each-other + * Code written for one is **not portable** to another - Providing the ``./`` at the start of the file name allows the shell to - execute scripts that are not on the system PATH. + This makes it much more difficult to *share resources* - Add this new file to your repository and commit it. -Set Up a Heroku App -------------------- +A Solution +---------- -The next step is to create a new app with heroku. +Enter WSGI, the Web Server Gateway Interface. .. rst-class:: build .. container:: - You installed the Heroku toolbelt prior to class. + Other alternatives are specific implementations of the CGI standard. - The toolbelt provides a command to create a new app. + WSGI is itself a new standard, not an implementation. - From the root of your project (where the ``setup.py`` file is) run: + WSGI is generalized to describe a set of interactions. - .. code-block:: bash + Developers can write WSGI-capable apps and deploy them on any WSGI server. - (ljenv)$ heroku create - Creating rocky-atoll-9934... done, stack is cedar-14 - https://rocky-atoll-9934.herokuapp.com/ | https://git.heroku.com/rocky-atoll-9934.git - Git remote heroku added + Read the original WSGI spec: http://www.python.org/dev/peps/pep-0333 - Note that a new *remote* called ``heroku`` has been added: + There is also an update for Python 3: |br| https://www.python.org/dev/peps/pep-3333 - .. code-block:: bash - $ git remote -v - heroku https://git.heroku.com/rocky-atoll-9934.git (fetch) - heroku https://git.heroku.com/rocky-atoll-9934.git (push) +Apps and Servers +---------------- -.. nextslide:: Adding PostgreSQL - -Your application will require a database, but ``sqlite`` is not really -appropriate for production. +WSGI consists of two parts, a *server* and an *application*. .. rst-class:: build .. container:: - For the deployed app, you'll use `PostgreSQL`_, the best open-source - database. - - Heroku `provides an add-on`_ that supports PostgreSQL, and you'll need to - set it up. - - Again, use the Heroku Toolbelt: + .. container:: - .. code-block:: bash + A WSGI Server must: - $ heroku addons:add heroku-postgresql:dev - Adding heroku-postgresql:dev on rocky-atoll-9934... done, v4 (free) - Attached as HEROKU_POSTGRESQL_MAROON_URL - Database has been created and is available - ! This database is empty. If upgrading, you can transfer - ! data from another database with pgbackups:restore. - Use `heroku addons:docs heroku-postgresql` to view documentation. + .. rst-class:: build -.. _PostgreSQL: http://www.postgresql.org -.. _provides an add-on: https://www.heroku.com/postgres + * set up an environment, much like the one in CGI + * provide a method ``start_response(status, headers, exc_info=None)`` + * build a response body by calling an *application*, passing + ``environment`` and ``start_response`` as args + * return a response with the status, headers and body -.. nextslide:: PostgreSQL Settings + .. container:: -You can get information about the status of your PostgreSQL service with the -toolbelt: + A WSGI Appliction must: -.. rst-class:: build -.. container:: + .. rst-class:: build - .. code-block:: bash + * Be a callable (function, method, class) + * Take an environment and a ``start_response`` callable as arguments + * Call the ``start_response`` method. + * Return an *iterable* of 0 or more strings, which are treated as the + body of the response. - (ljenv)$ heroku pg - === HEROKU_POSTGRESQL_MAROON_URL (DATABASE_URL) - Plan: Dev - ... - Data Size: 6.4 MB - Tables: 0 - Rows: 0/10000 (In compliance) - And there is also information about the configuration for the database (and - your app): +.. nextslide:: Simplified WSGI Server - .. code-block:: bash +.. code-block:: python - (ljenv)$ heroku config - === rocky-atoll-9934 Config Vars - DATABASE_URL: postgres://:@:/ - HEROKU_POSTGRESQL_MAROON_URL: postgres://:@:/ + from some_application import simple_app -Configuration for Heroku ------------------------- + def build_env(request): + # put together some environment info from the reqeuest + return env -Notice that the configuration for our application on Heroku provides a specific -database URL. + def handle_request(request, app): + environ = build_env(request) + iterable = app(environ, start_response) + for data in iterable: + # send data to client here -.. rst-class:: build -.. container:: + def start_response(status, headers): + # start an HTTP response, sending status and headers - We could copy this value and paste it into our ``production.ini`` - configuration file. + # listen for HTTP requests and pass on to handle_request() + serve(simple_app) - But if we do that, then we will be storing that value in GitHub, where - anyone at all can see it. - That's not particularly secure. +.. nextslide:: Simple WSGI Application - Luckily, Heroku provides configuration like the database URL in - *environment variables* that we can read in Python. +Where the simplified server above is **not** functional, this *is* a complete +app: - In fact, we've already done this with our ``runapp.py`` script: +.. code-block:: python - .. code-block:: python + def application(environ, start_response) + status = "200 OK" + body = "Hello World\n" + response_headers = [('Content-type', 'text/plain'), + ('Content-length', len(body))] + start_response(status, response_headers) + return [body] - port = int(os.environ.get("PORT", 5000)) -.. nextslide:: Adjusting Our DB Configuration +.. nextslide:: WSGI Middleware -The Python standard library provides ``os.environ`` to allow access to -*environment variables* from Python code. +A third part of the puzzle is something called WSGI *middleware* .. rst-class:: build .. container:: - This attribute is a dictionary keyed by the name of the variable. - - We can use it to gain access to configuration provided by Heroku. - - Update ``learning_journal/__init__.py`` like so: - - .. code-block:: python - - # import the os module: - import os - # then look up the value we need for the database url - def main(global_config, **settings): - # ... - if 'DATABASE_URL' in os.environ: - settings['sqlalchemy.url'] = os.environ['DATABASE_URL'] - engine = engine_from_config(settings, 'sqlalchemy.') - # ... - -.. nextslide:: Adjust ``initializedb.py`` - -We'll need to make the same changes to -``learning_journal/scripts/initializedb.py``: + .. rst-class:: build -.. code-block:: python + * Middleware implements both the *server* and *application* interfaces + * Middleware acts as a server when viewed from an application + * Middleware acts as an application when viewed from a server - def main(argv=sys.argv): - # ... - settings = get_appsettings(config_uri, options=options) - if 'DATABASE_URL' in os.environ: - settings['sqlalchemy.url'] = os.environ['DATABASE_URL'] - engine = engine_from_config(settings, 'sqlalchemy.') - # ... + .. figure:: /_static/wsgi_middleware_onion.png + :align: center + :width: 38% -.. nextslide:: Additional Security -This mechanism allows us to defer other sensitive values such as the password -for our initial user: +.. nextslide:: WSGI Data Flow .. rst-class:: build .. container:: - .. code-block:: python + .. container:: - # in learning_journal/scripts/initializedb.py - with transaction.manager: - manager = Manager - password = os.environ.get('ADMIN_PASSWORD', u'admin') - password = manager.encode(password) - admin = User(name=u'admin', password=password) + WSGI Servers: - And for the secret value for our AuthTktAuthenticationPolicy + .. rst-class:: large centered - .. code-block:: python + **HTTP <---> WSGI** - # in learning_journal/__init__.py - def main(global_config, **settings): - # ... - secret = os.environ.get('AUTH_SECRET', 'somesecret') - ... - authentication_policy=AuthTktAuthenticationPolicy(secret) - # ... - -.. nextslide:: Heroku Config + .. container:: -We will now be looking for three values from the OS environment: + WSGI Applications: -.. rst-class:: build + .. rst-class:: large centered -* DATABASE_URL -* ADMIN_PASSWORD -* AUTH_SECRET + **WSGI <---> app code** -.. rst-class:: build -.. container:: - The ``DATABASE_URL`` value is set for us by the PosgreSQL add-on. +.. nextslide:: The WSGI Stack - But the other two are not. We must set them ourselves using ``heroku - config:set``: +The WSGI *Stack* can thus be expressed like so: - .. code-block:: bash +.. rst-class:: build large centered - (ljenv)$ heroku config:set ADMIN_PASSWORD= - ... - (ljenv)$ heroku config:set AUTH_SECRET= - ... +**HTTP <---> WSGI <---> app code** -.. nextslide:: Checking Configuration -You can see the values that you have set at any time using ``heroku config``: +.. nextslide:: Using wsgiref -.. code-block:: bash +The Python standard lib provides a reference implementation of WSGI: - (ljenv)$ heroku config - === rocky-atoll-9934 Config Vars - ADMIN_PASSWORD: - AUTH_SECRET: - DATABASE_URL: - HEROKU_POSTGRESQL_MAROON_URL: +.. figure:: /_static/wsgiref_flow.png + :align: center + :width: 80% -.. rst-class:: build -.. container:: - These values are sent and received using secure transport. +.. nextslide:: Apache mod_wsgi - You do not need to worry about them being intercepted. +You can also deploy with Apache as your HTTP server, using **mod_wsgi**: - This mechanism allows you to place important configuration values outside - the code for your application. +.. figure:: /_static/mod_wsgi_flow.png + :align: center + :width: 80% -.. nextslide:: Requirements for Heroku -We've been handling our application's dependencies by adding them to -``setup.py``. +.. nextslide:: Proxied WSGI Servers -.. rst-class:: build -.. container:: +Finally, it is also common to see WSGI apps deployed via a proxied WSGI +server: - But there is a new dependency we've added that is only needed for Heroku. +.. figure:: /_static/proxy_wsgi.png + :align: center + :width: 80% + + +The WSGI Environment +-------------------- + +REQUEST_METHOD: + The HTTP request method, such as "GET" or "POST". This cannot ever be an + empty string, and so is always required. +SCRIPT_NAME: + The initial portion of the request URL's "path" that corresponds to the + application object, so that the application knows its virtual "location". + This may be an empty string, if the application corresponds to the "root" of + the server. +PATH_INFO: + The remainder of the request URL's "path", designating the virtual + "location" of the request's target within the application. This may be an + empty string, if the request URL targets the application root and does not + have a trailing slash. +QUERY_STRING: + The portion of the request URL that follows the "?", if any. May be empty or + absent. +CONTENT_TYPE: + The contents of any Content-Type fields in the HTTP request. May be empty or + absent. + + +.. nextslide:: The WSGI Environment + +CONTENT_LENGTH: + The contents of any Content-Length fields in the HTTP request. May be empty + or absent. +SERVER_NAME, SERVER_PORT: + When combined with SCRIPT_NAME and PATH_INFO, these variables can be used to + complete the URL. Note, however, that HTTP_HOST, if present, should be used + in preference to SERVER_NAME for reconstructing the request URL. See the URL + Reconstruction section below for more detail. SERVER_NAME and SERVER_PORT + can never be empty strings, and so are always required. +SERVER_PROTOCOL: + The version of the protocol the client used to send the request. Typically + this will be something like "HTTP/1.0" or "HTTP/1.1" and may be used by the + application to determine how to treat any HTTP request headers. (This + variable should probably be called REQUEST_PROTOCOL, since it denotes the + protocol used in the request, and is not necessarily the protocol that will + be used in the server's response. However, for compatibility with CGI we + have to keep the existing name.) + + +.. nextslide:: The WSGI Environment + +HTTP\_ Variables: + Variables corresponding to the client-supplied HTTP request headers (i.e., + variables whose names begin with "HTTP\_"). The presence or absence of these + variables should correspond with the presence or absence of the appropriate + HTTP header in the request. + +.. rst-class:: build large centered + +**Seem Familiar?** + + +In-Class Exercise III +--------------------- - Because we are using a PostgreSQL database, we need to install the - ``psycopg2`` package, which handles communicating with the database. +Let's start simply. We'll begin by repeating our first CGI exercise in WSGI - We don't want to install this locally, though, where we use sqlite. +.. rst-class:: build - Heroku supports using a file called ``requirements.txt`` to set - dependencies. +* Find the ``wsgi`` directory in the class resources. Copy it to your working + directory. +* Open the file ``wsgi_1.py`` in your text editor. +* We will fill in the missing values using Python and the wsgi ``environ``, + just as we use ``os.environ`` in cgi - Create that file now, in the same folder as ``setup.py`` and add: +.. rst-class:: build centered - .. code-block:: bash +**But First** - psycopg2==2.5.4 - Add that file to your repository and commit the change. +.. nextslide:: Orientation -Deployment ----------- +.. code-block:: python -We are now ready to deploy our application. + if __name__ == '__main__': + from wsgiref.simple_server import make_server + srv = make_server('localhost', 8080, application) + srv.serve_forever() .. rst-class:: build .. container:: - All we need to do is push our repository to the ``heroku`` master: + Note that we pass our ``application`` function to the server factory - .. code-block:: bash + We don't have to write a server, ``wsgiref`` does that for us. - (ljenv)$ git push heroku master - ... - remote: Building source: - remote: - remote: -----> Python app detected - ... - remote: Verifying deploy... done. - To https://git.heroku.com/rocky-atoll-9934.git - b59b7c3..54f7e4d master -> master + In fact, you should *never* have to write a WSGI server. -.. nextslide:: Using ``heroku run`` -You can use the ``run`` command to execute arbitrary commands in the Heroku -environment. +.. nextslide:: Orientation -.. rst-class:: build -.. container:: - - You can use this to initialize the database, using the shell script you - created earlier: - - .. code-block:: bash - - (ljenv)$ heroku run ./build_db - ... - - This will install our application and then run the database initialization - script. - -.. nextslide:: Test Your Results +.. code-block:: python -At this point, you should be ready to view your application online. + def application(environ, start_response): + response_body = body % ( + environ.get('SERVER_NAME', 'Unset'), # server name + ... + ) + status = '200 OK' + response_headers = [('Content-Type', 'text/html'), + ('Content-Length', str(len(response_body)))] + start_response(status, response_headers) + return [response_body.encode('utf8')] .. rst-class:: build .. container:: - Use the ``open`` command from heroku to open your website in a browser: + We do not define ``start_response``, the application does that. - .. code-block:: bash - - (ljenv)$ heroku open + We *are* responsible for determining the HTTP status. - If you don't see your application, check to see if it is running: + And the content we hand back *must* be ``bytes``, not unicode. - .. code-block:: bash +.. nextslide:: Running a WSGI Script - (ljenv)$ heroku ps - === web (1X): `./run` - web.1: up 2015/01/18 16:44:37 (~ 31m ago) +You can run this script with python:: - If you get no results, use the ``scale`` command to try turning on a web - *dyno*: - - .. code-block:: bash - - (ljenv)$ heroku scale web=1 - Scaling dynos... done, now running web at 1:1X. - -.. nextslide:: A Word About Scaling - -Heroku pricing is dependent on the number of *dynos* you are running. + $ python wsgi_1.py .. rst-class:: build .. container:: - So long as you only run one dyno per application, you will remain in the - free tier. + This will start a wsgi server. What host and port will it use? + + Point your browser at ``http://localhost:8080/``. Did it work? - Scaling above one dyno will begin to incur costs. + Go ahead and fill in the missing bits. Use the ``environ`` passed into + ``application`` - Pay attention to the number of dynos you have running. -.. nextslide:: Troubleshooting +.. nextslide:: Some Tips -Troubleshooting problems with Heroku deployment can be challenging. +WSGI is a long-running process. .. rst-class:: build .. container:: - Your most powerful tool is the ``logs`` command: + The file you are editing is *not* reloaded after you edit it. - .. code-block:: bash - - (ljenv)$ heroku logs - ... - 2015-01-19T01:17:59.443720+00:00 app[web.1]: serving on http://0.0.0.0:53843 - 2015-01-19T01:17:59.505003+00:00 heroku[web.1]: State changed from starting to update + You'll need to quit and re-run the script between edits. - This command will print the last 50 or so lines of logging from your - application. + Notice the use of ``pprint.pprint``, check your terminal for useful output. - You can use the ``-t`` flag to *tail* the logs. - This will continually update log entries to your terminal as you interact - with the application. - -.. nextslide:: Revel In Your Glory +A WSGI Application +------------------ -Try logging in to your application with the password you set up in Heroku -configuration. +So now we've learned a bit about the WSGI specification and how a WSGI +application can get data that comes in via an HTTP request. .. rst-class:: build .. container:: - Once you are logged in, try adding an entry or two. - - You are now off to the races! + Let's create a multi-page wsgi application. - .. rst-class:: center + It will serve a small database of python books. - **Congratulations** - -Adding Polish -============= - -.. rst-class:: left -.. container:: - - So we have now deployed a running application. + The database (with a very simple api) can be found in ``wsgi/bookdb.py`` .. rst-class:: build - .. container:: - But there are a number of things we can do to make the application - better. + * We'll need a listing page that shows the titles of all the books + * Each title will link to a details page for that book + * The details page for each book will display all the information and have + a link back to the list - Let's start by adding a way to log out. +.. nextslide:: Some Questions to Ponder -Adding Logout -------------- - -Our ``login`` view is already set up to work for logout. +When viewing our first wsgi app, do we see the name of the wsgi application +script anywhere in the URL? .. rst-class:: build .. container:: - What is the logical path taken if that view is accessed via ``GET``? - - All we need to do is add a view_config that allows that. + In our wsgi application script, how many applications did we actually have? - Open ``learning_journal/views.py`` and make these changes: + How are we going to serve different types of information out of a single + application? - .. code-block:: python - - @view_config(route_name='auth', match_param='action=in', renderer='string', - request_method='POST') # <-- THIS IS ALREADY THERE - # ADD THE FOLLOWING LINE - @view_config(route_name='auth', match_param='action=out', renderer='string') - # UPDATE THE VIEW FUNCTION NAME - def sign_in_out(request): - # ... -.. nextslide:: Re-Deploy +.. nextslide:: Dispatch -The chief advantage of Heroku is that we can re-deploy with a single command. +We have to write an app that will map our incoming request path to some code +that can handle that request. .. rst-class:: build .. container:: - Add and commit your changes to git. + This process is called ``dispatch``. There are many possible approaches. - Then re-deploy by pushing to the ``heroku master``: + Let's begin by designing this piece of our app. - .. code-block:: bash + Open ``bookapp.py`` from the ``wsgi`` folder. We'll do our work here. - (ljenv)$ git push heroku master - Once that completes, you should be able to reload your application in the - browser. +.. nextslide:: PATH - Visit the following URL path to test log out: - - * /sign/out - -Hide UI for Anonymous ---------------------- - -Another improvement we can make is to hide UI that is not available for users -who are not logged in. +The wsgi environment gives us access to *PATH_INFO*. .. rst-class:: build .. container:: - The first step is to update our ``detail`` view to tell us if someone is - logged in: - - .. code-block:: python - - # learning_journal/views.py - @view_config(route_name='detail', renderer='templates/detail.jinja2') - def view(request): - # ... - logged_in = authenticated_userid(request) - return {'entry': entry, 'logged_in': logged_in} + This value is the URI from the client's HTTP request. - The ``authenticated_userid`` function returns the id of the logged in user, - if there is one, and ``None`` if there is not. + We can design the URLs that our app will use to assist us in routing. - We can use that. + Let's declare that any request for ``/`` will map to the list page. -.. nextslide:: Hide "Create Entry" UI + .. container:: -First we can hide the UI for creating a new entry: + We can also say that the URL for a book will look like this:: -.. rst-class:: build -.. container:: + http://localhost:8080/book/ - Edit ``templates/list.jinja2``: +Writing ``resolve_path`` +------------------------ - .. code-block:: jinja +Let's write a function, called ``resolve_path`` in our application file. - {% extends "layout.jinja2" %} - {% block body %} - - {% if not login_form %} -

      New Entry

      - {% endif %} - {% endblock %} +.. rst-class:: build - This relies on the fact that the login form will only be present if there - is **not** an authenticated user. +* It should take the *PATH_INFO* value from environ as an argument. +* It should return the function that will be called. +* It should also return any arguments needed to call that function. +* This implies of course that the arguments should be part of the PATH -.. nextslide:: Hide "Edit Entry" UI -Next, we can hide the UI for editing an existing entry: +.. nextslide:: My Solution .. rst-class:: build -.. container:: - Edit ``templates/detail.jinja2``: +.. code-block:: python - .. code-block:: jinja + def resolve_path(path): + urls = [(r'^$', books), + (r'^book/(id[\d]+)$', book)] + matchpath = path.lstrip('/') + for regexp, func in urls: + match = re.match(regexp, matchpath) + if match is None: + continue + args = match.groups([]) + return func, args + # we get here if no url matches + raise NameError - {% extends "layout.jinja2" %} - {% block body %} - -

      - Go Back - {% if logged_in %} - :: - - Edit Entry - {% endif %} -

      - {% endblock %} -Format Entries --------------- +.. nextslide:: Application Updates -It would be nice if our journal entries could have HTML formatting. +We need to hook our new dispatch function into the application. .. rst-class:: build -.. container:: - We could write HTML by hand in the body field, but that'd be a pain. +* The path should be extracted from ``environ``. +* The dispatch function should be used to get a function and arguments +* The body to return should come from calling that function with those + arguments +* If an error is raised by calling the function, an appropriate response + should be returned +* If the router raises a NameError, the application should return a 404 + response - Instead, let's allow ourselves to write entries `in Markdown`_, a popular - markup syntax used by GitHub and many other websites. - .. _in Markdown: http://daringfireball.net/projects/markdown/syntax +.. nextslide:: My Solution - Python provides several libraries that implement markdown formatting. +.. rst-class:: build - They will take text that contains markdown formatting and convert it to - HTML. +.. code-block:: python - Let's use one. + def application(environ, start_response): + headers = [("Content-type", "text/html")] + try: + path = environ.get('PATH_INFO', None) + if path is None: + raise NameError + func, args = resolve_path(path) + body = func(*args) + status = "200 OK" + except NameError: + status = "404 Not Found" + body = "

      Not Found

      " + except Exception: + status = "500 Internal Server Error" + body = "

      Internal Server Error

      " + finally: + headers.append(('Content-length', str(len(body)))) + start_response(status, headers) + return [body.encode('utf8')] + + +Test Your Work +-------------- -.. nextslide:: Adding the Dependency +Once you've got your script settled, run it:: -The first step, is to pick a package and add it to our dependencies. + $ python bookapp.py .. rst-class:: build .. container:: - My recommendation is the `markdown`_ python library. + Then point your browser at ``http://localhost:8080/`` - Open ``setup.py`` and add the package to the ``requires`` list: - - .. code-block:: python - - requires = [ - # ... - 'cryptacular', - 'markdown', # <-- ADD THIS - ] + .. rst-class:: build - We'll test this locally first, so go ahead and re-install your app: + * ``http://localhost/book/id3`` + * ``http://localhost/book/id73/`` + * ``http://localhost/sponge/damp`` - .. code-block:: bash + Did that all work as you would have expected? - (ljenv)$ python setup.py develop - ... - Finished processing dependencies for learning-journal==0.0 -.. _markdown: https://pythonhosted.org/Markdown/ +Building the Book List +---------------------- -.. nextslide:: Jinja2 Filters - -We've seen before how Jinja2 provides a number of filters for values when -rendering templates. +The function ``books`` should return an html list of book titles where each +title is a link to the detail page for that book .. rst-class:: build -.. container:: - - A nice feature of the templating language is that it also allows you to - `create your own filters`_. - - Remember the template syntax for a filter: - - .. code-block:: jinja - - {{ value|filter(arg1, ..., argN) }} - A filter is simply a function that takes the value to the left of the ``|`` - character as a first argument, and any supplied arguments as the second and - beyond: +* You'll need all the ids and titles from the book database. +* You'll need to build a list in HTML using this information +* Each list item should have the book title as a link +* The href for the link should be of the form ``/book/`` - .. code-block:: python - - def filter(value, arg1, ..., argN): - # do something to value here - -.. _create your own filters: http://jinja.pocoo.org/docs/dev/api/#custom-filters -.. nextslide:: Our Markdown Filter - -Creating a ``markdown`` filter will allow us to convert plain text stored in -the database to HTML at template rendering time. +.. nextslide:: My Solution .. rst-class:: build -.. container:: - - Open ``learning_journal/views.py`` and add the following: - .. code-block:: python +.. code-block:: python - # add two imports: - from jinja2 import Markup - import markdown - # and a function - def render_markdown(content): - output = Markup(markdown.markdown(content)) - return output + def books(): + all_books = DB.titles() + body = ['

      My Bookshelf

      ', '
        '] + item_template = '
      • {title}
      • ' + for book in all_books: + body.append(item_template.format(**book)) + body.append('
      ') + return '\n'.join(body) - The ``Markup`` class from jinja2 marks a string with HTML tags as "safe". - This prevents the tags from being *escaped* when they are rendered into a - page. +Test Your Work +-------------- -.. nextslide:: Register the Filter +Quit and then restart your application script:: -In order for ``Jinja2`` to be aware that our filter exists, we need to register -it. + $ python bookapp.py .. rst-class:: build .. container:: - In Pyramid, we do this in configuration. + .. container:: - Open ``development.ini`` and edit it as follows: + Then reload the root of your application:: - .. code-block:: ini + http://localhost:8080/ - [app:main] - ... - jinja2.filters = - markdown = learning_journal.views.render_markdown + You should see a nice list of the books in the database. Do you? - This informs the main app that we wish to register a jinja2 filter. + Click on a link to view the detail page. Does it load without error? - We will call it ``markdown`` and it will be embodied by the function we - just wrote. -.. nextslide:: Use Your Filter +Showing Details +--------------- -To see the results of our work, we'll need to use the filter in a template -somewhere. +The next step of course is to polish up those detail pages. .. rst-class:: build .. container:: - I suggest using it in the ``learning_journal/templates/detail.jinja2`` - template: - - .. code-block:: jinja - - {% extends "layout.jinja2" %} - {% block body %} -
      - -

      {{ entry.body|markdown }}

      - -
      -

      - - {% endblock %} + .. rst-class:: build -.. nextslide:: Test Your Results + * You'll need to retrieve a single book from the database + * You'll need to format the details about that book and return them as HTML + * You'll need to guard against ids that do not map to books -Start up your application, and create an entry using valid markdown formatting: + In this last case, what's the right HTTP response code to send? -.. code-block:: bash - (ljenv)$ pserve development.ini - Starting server in PID 84331. - serving on http://0.0.0.0:6543 +.. nextslide:: My Solution .. rst-class:: build -.. container:: - - Once you save your entry, you should be able to see it with actual - formatting: headers, bulleted lists, links, and so on. - - That makes quite a difference. - Go ahead and add the same filter registration to ``production.ini`` - - Then commit your changes and redeploy: +.. code-block:: python - .. code-block:: bash + def book(book_id): + page = """ +

      {title}

      +
  • - -
    tiny (built-in class) +
    small (built-in class)
    + + + +
    Author{author}
    Publisher{publisher}
    ISBN{isbn}
    + Back to the list + """ + book = DB.title_info(book_id) + if book is None: + raise NameError + return page.format(**book) - (ljenv)$ git push heroku master +.. nextslide:: Revel in Your Success -Syntax Highlighting -------------------- - -The purpose of this journal is to allow you to write entries about the things -you learn in this class and elsewhere. +Quit and restart your script one more time .. rst-class:: build .. container:: - Markdown formatting allows for "preformatted" blocks of text like code - samples. + Then poke around at your application and see the good you've made - But there is nothing in markdown that handles *colorizing* code. + And your application is portable and sharable - Luckily, the markdown package allows for extensions, and one of these - supports `colorization`_. + It should run equally well under any `wsgi server `_ - It requires the `pygments`_ library - Let's set this up next. +.. nextslide:: A Few Steps Further -.. _colorization: https://pythonhosted.org/Markdown/extensions/code_hilite.html -.. _pygments: http://pygments.org +Next steps for an app like this might be: -.. nextslide:: Install the Dependency +* Create a shared full page template and incorporate it into your app +* Improve the error handling by emitting error codes other than 404 and 500 +* Swap out the basic backend here with a different one, maybe a Web Service? +* Think about ways to make the application less tightly coupled to the pages + it serves -Again, we need to install our new dependency first. -.. rst-class:: build -.. container:: +Homework +======== - Add the following to ``requires`` in ``setup.py``: - - .. code-block:: python - - requires = [ - # ... - 'markdown', - 'pygments', # <-- ADD THIS LINE - ] - - Then re-install your app to pick up the software: - - .. code-block:: bash +.. rst-class:: left +.. container:: - (ljenv)$ python setup.py develop - ... - Finished processing dependencies for learning-journal==0.0 + For your homework this week, you'll be creating a wsgi application of your + own. -.. nextslide:: Add to Our Filter + .. rst-class:: build + .. container:: -The next step is to extend our markdown filter in ``learning_journal/views.py`` -with this feature. + You'll create an online calculator that can perform several operations -.. rst-class:: build -.. container:: + You'll need to support: - .. code-block:: python + .. rst-class:: build - def render_markdown(content): - output = Markup( - markdown.markdown( - content, - extensions=['codehilite(pygments_style=colorful)', 'fenced_code'] - ) - ) - return output + * Addition + * Subtraction + * Multiplication + * Division - Now, you'll be able to make highlighted code blocks just like in GitHub: + .. container:: - .. code-block:: text + Your users should be able to send appropriate requests and get back + proper responses:: - ```python - def foo(x, y): - return x**y - ``` + http://localhost:8080/multiply/3/5 => 15 + http://localhost:8080/add/23/42 => 65 + http://localhost:8080/divide/6/0 => HTTP "400 Bad Request" -.. nextslide:: Add CSS -Code highlighting works by putting HTML ```` tags with special CSS -classes around bits of your code. +.. nextslide:: Submitting Your Homework -.. rst-class:: build +.. rst-class:: left .. container:: - We need to generate and add the css to support this. - - You can use the ``pygmentize`` command from pygments to - `generate the css`_. + To submit your homework: - Make sure you are in the directory with ``setup.py`` when you run this: - - .. code-block:: bash - - (ljenv)$ pygmentize -f html -S colorful -a .codehilite \ - >> learning_journal/static/styles.css + .. rst-class:: build - The styles will be printed to standard out. + * Create a new github repository. Call it ``wsgi-calc``. + * Add a python script to it called ``calculator.py``. + * Your script should be runnable using ``$ python calculator.py`` + * When the script is running, I should be able to view your application in + my browser. + * I should be able to see a home page that explains how to perform + calculations. - The ``>>`` shell operator *appends* the output to the file named. + .. rst-class:: build + .. container:: -.. _generate the css: http://pygments.org/docs/cmdline/#generating-styles + Your repository should include a README.md file. -.. nextslide:: Try It Out + Include all instructions I need to successfully run and view your + script. -Go ahead and restart your application and see the difference a little style -makes: + When you are done, send Maria and I an email with a link to your + repository. -.. code-block:: bash +One Last Task +------------- - (ljenv)$ pserve development.ini - Starting server in PID 84331. - serving on http://0.0.0.0:6543 +Next week we will be installing Python packages that are not part of the +standard library. .. rst-class:: build .. container:: - Try writing an entry with a little Python code in it. - - Python is not the only language available. - - Any syntax covered by `pygments lexers`_ is available, just use the - *shortname* from a lexer to get that type of style highlighting. - -.. _pygments lexers: http://pygments.org/docs/lexers/ - -.. nextslide:: Deploy Your Changes - -When you've got this working as you wish, go ahead and deploy it. + This is a common occurance in web development. But it can be hazardous. -.. rst-class:: build -.. container:: - - Add and commit all the changes you've made. + In order to practice safe development I am going to ask you to read and + follow through a `brief tutorial`_ I've created on the subject. - Then push your results to the ``heroku master``: + If you have any trouble, or if things do not work the way they are supposed + to, please reach out. We will need this to be working next week. - .. code-block:: bash - - (ljenv)$ git push heroku master +.. _brief tutorial: ../../html/presentations/venv_intro.html -Wrap Up +Wrap-Up ------- -And that's probably enough for now. - -.. rst-class:: build -.. container:: - - There's no homework for you this week. - - You've worked hard enough. - - Take the week to review what we've done and make sure you have a solid - understanding of it. - - If you wish, play with HTML and CSS to make your journal more personalized. +For educational purposes, you might wish to take a look at the source code for +the ``wsgiref`` module. It's the canonical example of a simple wsgi server - Next session we'll dive down deep and begin to learn about the technology - that lies beneath everything we've just built. + >>> import wsgiref + >>> wsgiref.__file__ + '/full/path/to/your/copy/of/wsgiref.py' + ... - .. rst-class:: centered +.. rst-class:: build centered - **See You Then** +**See you Next Time** diff --git a/html/_sources/presentations/session04.txt b/html/_sources/presentations/session04.txt index bc275cbf..fc7e52de 100644 --- a/html/_sources/presentations/session04.txt +++ b/html/_sources/presentations/session04.txt @@ -2,1176 +2,1875 @@ Session 04 ********** -.. figure:: /_static/python.png +.. figure:: /_static/granny_mashup.png :align: center - :width: 33% + :width: 70% - Networking and Sockets + Paul Downey http://www.flickr.com/photos/psd/492139935/ - CC-BY +Scraping, APIs and Mashups +========================== -Computer Communications -======================= +Wherein we learn how to make order from the chaos of the wild internet. + + +A Dilemma +--------- + +The internet makes a vast quantity of data available. + +.. rst-class:: build +.. container:: + + But not always in the form or combination you want. + + It would be nice to be able to combine data from different sources to + create *meaning*. + + +The Big Question +---------------- + +.. rst-class:: large centered + +But How? + + +The Big Answer +-------------- + +.. rst-class:: large centered + +Mashups + + +Mashups +------- + +A mashup is:: + + a web page, or web application, that uses and combines data, presentation + or functionality from two or more sources to create new services. + + -- wikipedia (http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)) + + +Data Sources +------------ + +The key to mashups is the idea of data sources. + +.. rst-class:: build +.. container:: + + These come in many flavors: + + .. rst-class:: build + + * Simple websites with data in HTML + * Web services providing structured data + * Web services providing tranformative service (geocoding) + * Web services providing presentation (mapping) + +Web Scraping +============ .. rst-class:: left .. container:: - We've spent the first few weeks of this course building and deploying a - simple web application. + It would be nice if all online data were available in well-structured formats. .. rst-class:: build .. container:: - now it's time to step back and look at the technologies underlying the - work we've done. + The reality is that much data is available only in HTML. - We'll begin by discussing the basics of networking computers. + Still we can get at it, with some effort. - You'll learn a bit here about how computers talk to each other across a - distance. + By scraping the data from the web pages. -TCP/IP ------- -.. figure:: /_static/network_topology.png - :align: left +HTML +---- - http://en.wikipedia.org/wiki/Internet_Protocol_Suite +.. ifnotslides:: -.. rst-class:: build + Ideally, it looks like this: -* processes can communicate -* inside one machine -* between two machines -* among many machines +.. code-block:: html + + + + + +

    A nice clean paragraph

    +

    And another nice clean paragraph

    + + -.. nextslide:: -.. figure:: /_static/data_in_tcpip_stack.png - :align: left - :width: 100% +.. nextslide:: HTML... IRL - http://en.wikipedia.org/wiki/Internet_Protocol_Suite +.. ifnotslides:: -.. rst-class:: build + But in real life, it's more often like this: -* Process divided into 'layers' -* 'Layers' are mostly arbitrary -* Different descriptions have different layers -* Most common is the 'TCP/IP Stack' +.. code-block:: html + +
    + + -.. nextslide:: Unix Domain Sockets +.. nextslide:: Filtering By Regular Expression -When you are on a machine with an operating system that is Unix-like, you will -find another generally useful socket family: ``AF_UNIX``, or Unix Domain -Sockets. Sockets in this family: +The next job is to find the inspection data we can see when we click on the +restaurant names in our page. .. rst-class:: build +.. container:: + + Do you notice a pattern in how that data is structured? -* connect processes **on the same machine** + For each restaurant in our results, there are *two* ``
    `` tags. -* are generally a bit slower than IPC connnections + The first contains the content you see at first, the second the content + that displays when we click. -* have the benefit of allowing the same API for programs that might run on one - machine __or__ across the network + What can you see that identifies these items? -* use an 'address' that looks like a pathname ('/tmp/foo.sock') + ``
    `` and ``
    `` + Each pair shares an ID, and the stuff we want is in the second one -.. nextslide:: Test your skills + Each number is different for each restaurant -What is the *default* family for the socket we created just a moment ago? + We can use a regular expression to help us here. + +.. nextslide:: Getting the Information Divs + +Let's write a function in ``mashup.py`` that will find all the divs in our +column with the right kind of id: .. rst-class:: build .. container:: - (remember we bound the socket to the symbol ``foo``) + .. rst-class:: build - How did you figure this out? + * It should match ``
    `` tags only + * It should match ids that start with ``PR`` + * It should match ids that contain some number of *digits* after that + * It should match ids that end with a *tilde* (``~``) character + .. code-block:: python -Socket Types ------------- + # add an import up top + import re + + # and add this function + def restaurant_data_generator(html): + id_finder = re.compile(r'PR[\d]+~') + return html.find_all('div', id=id_finder) + + +.. nextslide:: Verify It Works -The socket *type* determines the semantics of socket communications. +Let's add that step to the *main* block at the bottom of ``mashup.py`` (only +print the first of the many divs that match): .. rst-class:: build .. container:: - Look up socket type constants with the ``SOCK_`` prefix: + .. code-block:: python - .. code-block:: pycon + html, encoding = load_inspection_page('inspection_page.html') + parsed = parse_source(html, encoding) + content_col = parsed.find("td", id="contentcol") + data_list = restaurant_data_generator(content_col) + print data_list[0].prettify() - >>> types = get_constants('SOCK_') - >>> types - {1: 'SOCK_STREAM', 2: 'SOCK_DGRAM', - ...} - The most common are ``1`` (Stream communication (TCP)) and ``2`` (Datagram - communication (UDP)). + Finally, test it out: + .. code-block:: bash -.. nextslide:: Test your skills + (soupenv)$ python mashup.py +
    +
    Row 1 cell 1 +
    Row 2 cell 1 + + Row 2 cell 2
    This
    sure is a long cell + + -The TCP/IP Stack - Link ------------------------ -The bottom layer is the 'Link Layer' +.. nextslide:: FFFFFFFFFUUUUUUUUUUUUU!!!! -.. rst-class:: build - -* Deals with the physical connections between machines, 'the wire' +.. figure:: /_static/scream.jpg + :align: center + :width: 32% -* Packages data for physical transport + Photo by Matthew via Flickr (http://www.flickr.com/photos/purplemattfish/3918004964/) - CC-BY-NC-ND -* Executes transmission over a physical medium - .. rst-class:: build +.. nextslide:: The Law of The Internet - * what that medium is is arbitrary +.. rst-class:: large centered -* Implemented in the Network Interface Card(s) (NIC) in your computer +"Be strict in what you send and tolerant in what you receive" -The TCP/IP Stack - Internet ---------------------------- +Taming the Mess +--------------- -Moving up, we have the 'Internet Layer' +Luckily, there are tools to help with this. .. rst-class:: build +.. container:: -* Deals with addressing and routing + In python there are several candidates, but I like ``BeautifulSoup``. - .. rst-class:: build + BeautifulSoup is a great tool, but it's not in the Standard Library. - * Where are we going and how do we get there? + We'll need to install it. -* Agnostic as to physical medium (IP over Avian Carrier - IPoAC) + Create a virtualenv to do so: -* Makes no promises of reliability + .. code-block:: bash -* Two addressing systems + $ pyvenv soupenv + ... + $ source soupenv/bin/activate - .. rst-class:: build + (remember, for Windows users that should be ``soupenv/Scripts/activate.bat``) - * IPv4 (current, limited '192.168.1.100') - * IPv6 (future, 3.4 x 10^38 addresses, '2001:0db8:85a3:0042:0000:8a2e:0370:7334') +.. nextslide:: Install BeautifulSoup +Once the virtualenv is activated, you can simply use pip or easy_install to +install the libraries you want: -.. nextslide:: +.. code-block:: bash -.. rst-class:: large center + (soupenv)$ pip install beautifulsoup4 -That's 4.3 x 10^28 addresses *per person alive today* +.. nextslide:: Choose a Parsing Engine -The TCP/IP Stack - Transport ----------------------------- +BeautifulSoup is built to use the Python HTMLParser. -Next up is the 'Transport Layer' +.. rst-class:: build + +* Batteries Included. It's already there +* It's not great, especially before Python 2.7.3 .. rst-class:: build +.. container:: -* Deals with transmission and reception of data + BeautifulSoup also supports using other parsers. - * error correction, flow control, congestion management + There are two good choices: ``lxml`` and ``html5lib``. -* Common protocols include TCP & UDP + ``lxml`` is better, but much harder to install. Let's use ``html5lib``. - * TCP: Tranmission Control Protocol - * UDP: User Datagram Protocol +.. nextslide:: Install a Parsing Engine -* Not all Transport Protocols are 'reliable' +Again, this is pretty simple:: - .. rst-class:: build + (soupenv)$ pip install html5lib - * TCP ensures that dropped packets are resent +.. rst-class:: build +.. container:: - * UDP makes no such assurance + Once installed, BeautifulSoup will choose it automatically. - * Reliability is slow and expensive + BeautifulSoup will choose the "best" available. + You can specify the parser if you need to for some reason. -.. nextslide:: + In fact, in recent versions of BeautifulSoup, you'll be warned if you don't + (though you can ignore the warning). -The 'Transport Layer' also establishes the concept of a **port** + +.. nextslide:: Install Requests + +Python provides tools for opening urls and communicating with servers. It's +spread across the ``urllib`` and ``urllib2`` packages. .. rst-class:: build .. container:: - .. rst-class:: build + These packages have pretty unintuitive APIs. - * IP Addresses designate a specific *machine* on the network + The ``requests`` library is becoming the de-facto standard for this type of + work. Let's install it too. - * A **port** provides addressing for individual *applications* in a single - host + .. code-block:: bash - * 192.168.1.100:80 (the *:80* part is the **port**) + (soupenv)$ pip install requests - * [2001:db8:85a3:8d3:1319:8a2e:370:7348]:443 (*:443* is the **port**) - This means that you don't have to worry about information intended for your - web browser being accidentally read by your email client. +Our Class Mashup +---------------- +We're going to explore some tools for making a mashup today -.. nextslide:: +.. rst-class:: build +.. container:: + + We'll be starting by scraping restaurant health code data for + a given ZIP code + + Then, we'll look up the geographic location of those zipcodes using Google + + Finally, we'll display the results of our work on a map + + Start by opening a new file in your editor: ``mashup.py``. + + +.. nextslide:: Getting Some HTML -There are certain **ports** which are commonly understood to belong to given -applications or protocols: +The source for the data we'll be displaying is a search tool provided by King +County. .. rst-class:: build .. container:: - .. rst-class:: build + It's supposed to have a web service, but the service is broken. - * 80/443 - HTTP/HTTPS - * 20 - FTP - * 22 - SSH - * 23 - Telnet - * 25 - SMTP - * ... + Luckily, the HTML search works just fine. - These ports are often referred to as **well-known ports** + Open `the search form`_ in your browser. - .. rst-class:: small + Fill in a ZIP code (perhaps 98101). - (see http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers) + Add a start and end date (perhaps about 1 or 2 years apart). -.. nextslide:: + Submit the form, and take a look at what you get. + +.. _the search form: http://info.kingcounty.gov/health/ehs/foodsafety/inspections/search.aspx -Ports are grouped into a few different classes + +.. nextslide:: Repeat, But Automate + +Next we want to automate the process. .. rst-class:: build +.. container:: -* Ports numbered 0 - 1023 are *reserved* + Copy the domain and path of the url into your new ``mashup.py`` file like + so: -* Ports numbered 1024 - 65535 are *open* + .. code-block:: python -* Ports numbered 1024 - 49151 may be *registered* + INSPECTION_DOMAIN = "http://info.kingcounty.gov" + INSPECTION_PATH = "/health/ehs/foodsafety/inspections/Results.aspx" -* Ports numbered 49152 - 65535 are called *ephemeral* +.. nextslide:: Repeat, But Automate +Next, copy the query parameters from the URL and convert them to a dictionary: -The TCP/IP Stack - Application ------------------------------- +.. code-block:: python + + INSPECTION_PARAMS = { + 'Output': 'W', + 'Business_Name': '', + 'Business_Address': '', + 'Longitude': '', + 'Latitude': '', + 'City': '', + 'Zip_Code': '', + 'Inspection_Type': 'All', + 'Inspection_Start': '', + 'Inspection_End': '', + 'Inspection_Closed_Business': 'A', + 'Violation_Points': '', + 'Violation_Red_Points': '', + 'Violation_Descr': '', + 'Fuzzy_Search': 'N', + 'Sort': 'H' + } + + +Fetching Search Results +----------------------- -The topmost layer is the 'Application Layer' +Next we'll use the ``requests`` library to write a function to fetch these +results on demand. .. rst-class:: build .. container:: + In ``requests``, each HTTP method has a module-level function: + + .. rst-class:: build + + * ``GET`` == ``requests.get(url, **kwargs)`` + * ``POST`` == ``requests.post(url, **kwargs)`` + * ... + + ``kwargs`` represent other parts of an HTTP request: + .. rst-class:: build - * Deals directly with data produced or consumed by an application + * ``params``: a dict of url parameters (?foo=bar&baz=bim) + * ``headers``: a dict of headers to send with the request + * ``data``: the body of the request, if any (form data for POST goes here) + * ... - * Reads or writes data using a set of understood, well-defined **protocols** - * HTTP, SMTP, FTP etc. +.. nextslide:: Handling Requests Responses - * Does not know (or need to know) about lower layer functionality +The return value from one of these functions is a ``response`` object which +provides: - * The exception to this rule is **endpoint** data (or IP:Port) +.. rst-class:: build +.. container:: - .. rst-class:: centered + .. rst-class:: build - **this is where we live and work** + * ``response.status_code``: see the HTTP Status Code returned + * ``response.ok``: True if ``response.status_code`` is not an error + * ``response.raise_for_status()``: call to raise a python error if it is + * ``response.headers``: The headers sent from the server + * ``response.text``: Body of the response, decoded to unicode + * ``response.encoding``: The encoding used to decode + * ``response.content``: The original encoded response body as bytes + ``requests documentation``: http://docs.python-requests.org/en/latest/ -Sockets -------- +.. nextslide:: Fetch Search Results -Think back for a second to what we just finished discussing, the TCP/IP stack. +We'll start by writing a function ``get_inspection_page`` .. rst-class:: build .. container:: .. rst-class:: build - * The *Internet* layer gives us an **IP Address** + * It will accept keyword arguments for each of the possible query values + * It will build a dictionary of request query parameters from incoming + keywords + * It will make a request to the inspection service search page using this + query + * It will return the encoded content and the encoding used as a tuple - * The *Transport* layer establishes the idea of a **port**. + Try writing this function. Put it in ``mashup.py`` - * The *Application* layer doesn't care about what happens below... - * *Except for* **endpoint data** (IP:Port) +My Solution +----------- - A **Socket** is the software representation of that endpoint. +Here's the one I created: - Opening a **socket** creates a kind of transceiver that can send and/or - receive *bytes* at a given IP address and Port. +.. rst-class:: build +.. code-block:: python -Sockets in Python ------------------ + import requests -Python provides a standard library module which provides socket functionality. -It is called **socket**. + def get_inspection_page(**kwargs): + url = INSPECTION_DOMAIN + INSPECTION_PATH + params = INSPECTION_PARAMS.copy() + for key, val in kwargs.items(): + if key in INSPECTION_PARAMS: + params[key] = val + resp = requests.get(url, params=params) + resp.raise_for_status() + return resp.text -.. rst-class:: build -.. container:: - The library is really just a very thin wrapper around the system - implementation of *BSD Sockets* +Parse the Results +----------------- - Let's spend a few minutes getting to know this module. +Next, we'll need to parse the results we get when we call that function - We're going to do this next part together, so open up a terminal and start - a python interpreter +But before we start, a word about parsing HTML with BeautifulSoup -.. nextslide:: +.. nextslide:: Parsing HTML with BeautifulSoup -The Python sockets library allows us to find out what port a *service* uses: +The BeautifulSoup object can be instantiated with a string or a file-like +object as the sole argument: .. rst-class:: build .. container:: - .. code-block:: pycon + .. code-block:: python - >>> import socket - >>> socket.getservbyname('ssh') - 22 + from bs4 import BeautifulSoup + parsed = BeautifulSoup('

    Some HTML

    ') - You can also do a *reverse lookup*, finding what service uses a given *port*: + fh = open('a_page.html', 'r') + parsed = BeautifulSoup(fh) - .. code-block:: pycon + page = urllib2.urlopen('http://site.com/page.html') + parsed = BeautifulSoup(page) - >>> socket.getservbyport(80) - 'http' + You might want to open the documentation as reference + (http://www.crummy.com/software/BeautifulSoup/bs4/doc) -.. nextslide:: +My Solution +----------- -The sockets library also provides tools for finding out information about -*hosts*. For example, you can find out about the hostname and IP address of -the machine you are currently using: +Take a shot at writing this new function in ``mashup.py`` -.. code-block:: pycon +.. code-block:: python - >>> socket.gethostname() - 'heffalump.local' - >>> socket.gethostbyname(socket.gethostname()) - '10.211.55.2' + # add this import at the top + from bs4 import BeautifulSoup -.. nextslide:: + # then add this function lower down + def parse_source(html): + parsed = BeautifulSoup(html) + return parsed -You can also find out about machines that are located elsewhere, assuming you -know their hostname. For example: -.. code-block:: pycon +Put It Together +--------------- - >>> socket.gethostbyname('google.com') - '173.194.33.4' - >>> socket.gethostbyname('uw.edu') - '128.95.155.135' - >>> socket.gethostbyname('crisewing.com') - '108.59.11.99' +We'll need to make our script do something when run. +.. code-block:: python -.. nextslide:: + if __name__ == '__main__': + # do something -The ``gethostbyname_ex`` method of the ``socket`` library provides more -information about the machines we are exploring: +.. rst-class:: build +.. container:: -.. code-block:: pycon + .. rst-class:: build - >>> socket.gethostbyname_ex('google.com') - ('google.com', [], ['173.194.33.9', '173.194.33.14', - ... - '173.194.33.6', '173.194.33.7', - '173.194.33.8']) - >>> socket.gethostbyname_ex('crisewing.com') - ('crisewing.com', [], ['108.59.11.99']) - >>> socket.gethostbyname_ex('www.rad.washington.edu') - ('elladan.rad.washington.edu', # <- canonical hostname - ['www.rad.washington.edu'], # <- any machine aliases - ['128.95.247.84']) # <- all active IP addresses + * Fetch a search results page + * Parse the resulting HTML + * For now, print out the results so we can see what we get -.. nextslide:: + .. container:: -To create a socket, you use the **socket** method of the ``socket`` library. -It takes up to three optional positional arguments (here we use none to get -the default behavior): + Use the ``prettify`` method on a BeautifulSoup object:: -.. code-block:: pycon + print(parsed.prettify()) - >>> foo = socket.socket() - >>> foo - -.. nextslide:: +My Solution +----------- + +Try to come up with the proper code on your own. Add it to ``mashup.py`` + +.. rst-class:: build +.. code-block:: python + + if __name__ == '__main__': + use_params = { + 'Inspection_Start': '2/1/2013', + 'Inspection_End': '2/1/2015', + 'Zip_Code': '98101' + } + html = get_inspection_page(**use_params) + parsed = parse_source(html) + print(parsed.prettify()) + + +.. nextslide:: Test The Results -A socket has some properties that are immediately important to us. These -include the *family*, *type* and *protocol* of the socket: +Assuming your virtualenv is still active, you should be able to execute the +script. .. rst-class:: build .. container:: - .. code-block:: pycon + .. code-block:: bash + + (soupenv)$ python mashup.py + ... + + + + + - >>> foo.family - 2 - >>> foo.type - 1 - >>> foo.proto - 0 + This script is available as ``resources/session04/mashup_1.py`` - You might notice that the values for these properties are integers. In - fact, these integers are **constants** defined in the socket library. -.. nextslide:: A quick utility method +.. nextslide:: Preserve the Results -Let's define a method in place to help us see these constants. It will take a -single argument, the shared prefix for a defined set of constants: +Now, let's re-run the script, saving the output to a file so we can use it +later:: + + $ python mashup.py > inspection_page.html .. rst-class:: build .. container:: - (you can also find this in ``resources/session04/socket_tools.py``) + Then add a quick function to our script that will use these saved results: - .. code-block:: pycon + .. code-block:: python - >>> def get_constants(prefix): - ... """mapping of socket module constants to their names.""" - ... return dict( - ... (getattr(socket, n), n) - ... for n in dir(socket) - ... if n.startswith(prefix) - ... ) - ... - >>> + def load_inspection_page(name): + file_path = pathlib.Path(name) + return file_path.read_text(encoding='utf8') + + Finally, bolt that in to your script to use it: + + .. code-block:: python -Socket Families + # COMMENT OUT THIS LINE AND REPLACE IT + # html = get_inspection_page(**use_params) + html = load_inspection_page('inspection_page.html') + + +Extracting Data --------------- -Think back a moment to our discussion of the *Internet* layer of the TCP/IP -stack. There were a couple of different types of IP addresses: +Next we find the bits of this pile of HTML that matter to us. + +.. rst-class:: build +.. container:: + + Open the page you just wrote to disk in your web browser and open the + developer tools to inspect the page source. + + You'll want to start by finding the element in the page that contains all + our search results. + + Look at the source and identify the single element we are looking for. + +.. nextslide:: Tags and Searching + +Having found it visually, we can now search for it automatically. In +BeautifulSoup: .. rst-class:: build .. container:: .. rst-class:: build - * IPv4 ('192.168.1.100') + * All HTML elements (including the parsed document itself) are ``tags`` + * A ``tag`` can be searched using its ``find`` or ``find_all`` methods + * This searches the descendents of the tag on which it is called. + * It takes arguments which act as *filters* on the search results + + .. container:: - * IPv6 ('2001:0db8:85a3:0042:0000:8a2e:0370:7334') + like so:: + tag.find(name, attrs, recursive, text, **kwargs) + tag.find_all(name, attrs, recursive, text, limit, **kwargs) - The **family** of a socket corresponds to the *addressing system* it uses - for connecting. -.. nextslide:: +.. nextslide:: Searching by Attribute -Families defined in the ``socket`` library are prefixed by ``AF_``: +The ``find`` method allows us to pass *kwargs*. .. rst-class:: build .. container:: - .. code-block:: pycon + Keywords that are not among the named parameters will be considered an HTML + attribute. + + We can use this to find the column that holds our search results: + + .. code-block:: python + + content_col = parsed.find('td', id="contentcol") - >>> families = get_constants('AF_') - >>> families - {0: 'AF_UNSPEC', 1: 'AF_UNIX', 2: 'AF_INET', - 11: 'AF_SNA', 12: 'AF_DECnet', 16: 'AF_APPLETALK', - 17: 'AF_ROUTE', 23: 'AF_IPX', 30: 'AF_INET6'} + Add that line to our mashup script and try it out: - *Your results may vary* + .. code-block:: python - Of all of these, the ones we care most about are ``2`` (IPv4) and ``30`` - (IPv6). + #... + parsed = parse_source(html) + content_col = parsed.find("td", id="contentcol") + print content_col.prettify() + .. code-block:: bash + + (soupenv)$ python mashup.py +
    + ... +
    + ... +
    + -What is the *default* type for our generic socket, ``foo``? + This code is available as ``/resources/session04/mashup_2.py`` -Socket Protocols ----------------- +Parsing Restaurant Data +----------------------- -A socket also has a designated *protocol*. The constants for these are -prefixed by ``IPPROTO_``: +Now that we have the records we want, we need to parse them. We want to preserve: .. rst-class:: build .. container:: - .. code-block:: pycon + We'll start by parsing out the information about the restaurant themselves: - >>> protocols = get_constants('IPPROTO_') - >>> protocols - {0: 'IPPROTO_IP', 1: 'IPPROTO_ICMP', - ..., - 255: 'IPPROTO_RAW'} + .. rst-class:: build - The choice of which protocol to use for a socket is determined by the - *internet layer* protocol you intend to use. ``TCP``? ``UDP``? ``ICMP``? - ``IGMP``? + * Name + * Address + * Location + * ... + How is this information contained in our records? -.. nextslide:: Test your skills -What is the *default* protocol used by our generic socket, ``foo``? +.. nextslide:: Complex Filtering +Each record consists of a table with a series of *rows* (``

    KYjES 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 Z{{S^e-PDKbPrm>F002ovPDHLkV1l$Y$HV{t literal 0 HcmV?d00001 diff --git a/slides/genindex.html b/slides/genindex.html index 6485d04a..a6027831 100644 --- a/slides/genindex.html +++ b/slides/genindex.html @@ -73,16 +73,15 @@

    y( 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 z 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

  • lZwn#0r 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 z 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≠Oh-6{`E}qwZqu;;{d236*Qg& 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 FCK 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

    `` elements + + My solution: + + .. code-block:: python + + def has_two_tds(elem): + is_tr = elem.name == 'tr' + td_children = elem.find_all('td', recursive=False) + has_two = len(td_children) == 2 + return is_tr and has_two + +.. nextslide:: Test It Out + +Let's try this out in an interpreter: + +.. code-block:: ipython + + In [1]: from mashup_3 import load_inspection_page, parse_source, + restaurant_data_generator, has_two_tds + In [2]: html = load_inspection_page('inspection_page.html') + In [3]: parsed = parse_source(html) + ... + In [4]: content_col = parsed.find('td', id='contentcol') + In [5]: records = restaurant_data_generator(content_col) + In [6]: rec = records[4] + +.. nextslide:: Test It Out + +We'd like to find all table rows in that div that contain *two* cells .. rst-class:: build .. container:: - Using them allows you to create sockets with specific communications - profiles: + The table rows are all contained in a ``
    + - Business Name + + SPICE ORIENT +
    `` children + * The text in the first cell contains the word "inspection" + * But the text does not *start* with the word "inspection" + + Let's try to write a filter function like the one above that will catch + these rows for us. -.. nextslide:: On the Internet +.. nextslide:: The filter -.. code-block:: pycon +Add this new function ``is_inspection_data_row`` to ``mashup.py`` - >>> get_address_info('crisewing.com', 'http') - family: AF_INET - type: SOCK_DGRAM - ... +.. rst-class:: build +.. code-block:: python - family: AF_INET - type: SOCK_STREAM - ... - >>> + def is_inspection_data_row(elem): + is_tr = elem.name == 'tr' + if not is_tr: + return False + td_children = elem.find_all('td', recursive=False) + has_four = len(td_children) == 4 + this_text = clean_data(td_children[0]).lower() + contains_word = 'inspection' in this_text + does_not_start = not this_text.startswith('inspection') + return is_tr and has_four and contains_word and does_not_start + +.. nextslide:: Test It Out + +We can test this function by adding it into our script: + +.. code-block:: python + + for data_div in data_list: + metadata = extract_restaurant_metadata(data_div) + # UPDATE THIS BELOW HERE + inspection_rows = data_div.find_all(is_inspection_data_row) + print(metadata) + print(len(inspection_rows)) + print('*'*10) .. rst-class:: build .. container:: - Try a few other servers you know about. + And try running the script in your terminal: + + .. code-block:: bash + + (soupenv)$ python mashup.py + {u'Business Category': [u'Seating 0-12 - Risk Category III'], + u'Longitude': [u'122.3401786000'], u'Phone': [u'(206) 501-9554'], + u'Business Name': [u"ZACCAGNI'S"], u'Address': [u'97B PIKE ST', u'SEATTLE, WA 98101'], + u'Latitude': [u'47.6086651300']} + 0 + ********** +.. nextslide:: Building Inspection Data -Client Side -=========== +Now we can isolate a list of the rows that contain inspection data. .. rst-class:: build .. container:: - .. rst-class:: large + Next we need to calculate the average score, total number and highest score + for each restaurant. - Let's put this to use + Let's add a function to ``mashup.py`` that will: - We'll communicate with a remote server as a *client* + .. rst-class:: build + * Take a div containing a restaurant record + * Extract the rows containing inspection data + * Keep track of the highest score recorded + * Sum the total of all inspections + * Count the number of inspections made + * Calculate the average score for inspections + * Return the three calculated values in a dictionary -Construct a Socket ------------------- +.. nextslide:: My Solution -We've already made a socket ``foo`` using the generic constructor without any -arguments. We can make a better one now by using real address information from -a real server online [**do not type this yet**]: +Try writing this routine yourself. -.. code-block:: pycon +.. code-block:: python - >>> streams = [info - ... for info in socket.getaddrinfo('crisewing.com', 'http') - ... if info[1] == socket.SOCK_STREAM] - >>> streams - [(2, 1, 6, '', ('108.59.11.99', 80))] - >>> info = streams[0] - >>> cewing_socket = socket.socket(*info[:3]) + def get_score_data(elem): + inspection_rows = elem.find_all(is_inspection_data_row) + samples = len(inspection_rows) + total = high_score = average = 0 + for row in inspection_rows: + strval = clean_data(row.find_all('td')[2]) + try: + intval = int(strval) + except (ValueError, TypeError): + samples -= 1 + else: + total += intval + high_score = intval if intval > high_score else high_score + if samples: + average = total/float(samples) + return {'Average Score': average, 'High Score': high_score, + 'Total Inspections': samples} + +.. nextslide:: Test It Out + +We can now incorporate this new routine into our ``mashup`` script. +.. rst-class:: build +.. container:: -Connecting a Socket -------------------- + We'll want to add the data it produces to the metadata we've already + extracted. + + .. code-block:: python + + for data_div in data_list: + metadata = extract_restaurant_metadata(data_div) + inspection_data = get_score_data(data_div) + metadata.update(inspection_data) + print metadata + + And test it out at the command line: + + .. code-block:: bash + + (soupenv)$ python mashup.py + ... + {u'Business Category': [u'Seating 0-12 - Risk Category III'], + u'Longitude': [u'122.3401786000'], u'High Score': 0, + u'Phone': [u'(206) 501-9554'], u'Business Name': [u"ZACCAGNI'S"], + u'Total Inspections': 0, u'Address': [u'97B PIKE ST', u'SEATTLE, WA 98101'], + u'Latitude': [u'47.6086651300'], u'Average Score': 0} + +Break Time +---------- + +Once you have this working, take a break. + +When we return, we'll try a saner approach to getting data from online + + + +Another Approach +================ + +.. rst-class:: left +.. container:: + + Scraping web pages is tedious and inherently brittle + + .. rst-class:: build + .. container:: + + The owner of the website updates their layout, your code breaks -Once the socket is constructed with the appropriate *family*, *type* and -*protocol*, we can connect it to the address of our remote server: + But there is another way to get information from the web in a more normalized + fashion -.. code-block:: pycon + .. rst-class:: centered - >>> cewing_socket.connect(info[-1]) - >>> + **Web Services** + + +Web Services +------------ + +"a software system designed to support interoperable machine-to-machine +interaction over a network" - W3C .. rst-class:: build -* a successful connection returns ``None`` +* provides a defined set of calls +* returns structured data -* a failed connection raises an error -* you can use the *type* of error returned to tell why the connection failed. +.. nextslide:: Early Web Services +RSS is one of the earliest forms of Web Services -Sending a Message ------------------ +.. rst-class:: build +.. container:: -Send a message to the server on the other end of our connection (we'll -learn in session 2 about the message we are sending): + A single web-based *endpoint* provides a dynamically updated listing of + content -.. code-block:: pycon + Implemented in pure HTTP. Returns XML - >>> msg = "GET / HTTP/1.1\r\n" - >>> msg += "Host: crisewing.com\r\n\r\n" - >>> cewing_socket.sendall(msg) - >>> + **Atom** is a competing, but similar standard -.. rst-class:: build small + There's a solid Python library for consuming RSS: `feedparser`_. -* the transmission continues until all data is sent or an error occurs +.. _feedparser: https://pythonhosted.org/feedparser/ -* success returns ``None`` +.. nextslide:: XML-RPC -* failure to send raises an error +XML-RPC extended the essentially static nature of RSS by allowing users to call +procedures and pass arguments. -* you can use the type of error to figure out why the transmission failed +.. rst-class:: build +.. container:: -* if an error occurs you **cannot** know how much, if any, of your data was - sent + .. rst-class:: build + * Calls are made via HTTP GET, by passing an XML document + * Returns from a call are sent to the client in XML -Receiving a Reply ------------------ + In python, you can access XML-RPC services using `xmlrpclib`_ from the + standard library -Whatever reply we get is received by the socket we created. We can read it -back out (again, **do not type this yet**): +.. _xmlrpclib: https://docs.python.org/2/library/xmlrpclib.html -.. code-block:: pycon +.. nextslide:: SOAP - >>> response = cewing_socket.recv(4096) - >>> response - 'HTTP/1.1 200 OK\r\nDate: Thu, 03 Jan 2013 05:56:53 - ... +SOAP extends XML-RPC in a couple of useful ways: .. rst-class:: build -* The sole required argument is ``buffer_size`` (an integer). It should be a - power of 2 and smallish (~4096) -* It returns a byte string of ``buffer_size`` (or smaller if less data was - received) -* If the response is longer than ``buffer size``, you can call the method - repeatedly. The last bunch will be less than ``buffer size``. +* It uses Web Services Description Language (WSDL) to provide meta-data about + an entire service in a machine-readable format (Automatic introspection) +* It establishes a method for extending available data types using XML + namespaces -Cleaning Up ------------ +.. rst-class:: build +.. container:: -When you are finished with a connection, you should always close it:: + There is no standard library module that supports SOAP directly. - >>> cewing_socket.close() + .. rst-class:: build + * The best-known and best-supported module available is **Suds** + * The homepage is https://fedorahosted.org/suds/ + * It can be installed using ``easy_install`` or ``pip install`` + * But it hasn't been updated since Sept. 2010. -Putting it all together ------------------------ + So we're going to move on -First, connect and send a message: +.. nextslide:: If Not XML, Then What? -.. code-block:: pycon +XML is a pretty inefficient medium for transmitting data. There's a lot of +extra characters transmitted that lack any meaning. - >>> streams = [info - ... for info in socket.getaddrinfo('crisewing.com', 'http') - ... if info[1] == socket.SOCK_STREAM] - >>> info = streams[0] - >>> cewing_socket = socket.socket(*info[:3]) - >>> cewing_socket.connect(info[-1]) - >>> msg = "GET / HTTP/1.1\r\n" - >>> msg += "Host: crisewing.com\r\n\r\n" - >>> cewing_socket.sendall(msg) +.. rst-class:: build large centered +**Let's Use JSON** -.. nextslide:: -Then, receive a reply, iterating until it is complete: +JSON +---- -.. code-block:: pycon +JavaScript Object Notation: - >>> buffsize = 4096 - >>> response = '' - >>> done = False - >>> while not done: - ... msg_part = cewing_socket.recv(buffsize) - ... if len(msg_part) < buffsize: - ... done = True - ... cewing_socket.close() - ... response += msg_part - ... - >>> len(response) - 19427 +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * a lightweight data-interchange format + * easy for humans to read and write + * easy for machines to parse and generate + + Based on Two Structures: + * object: ``{ string: value, ...}`` + * array: ``[value, value, ]`` -Server Side -=========== + .. rst-class:: centered + + pythonic, no? + + +.. nextslide:: JSON Data Types + +JSON provides a few basic data types (see http://json.org/): .. rst-class:: build .. container:: - .. rst-class:: large + .. rst-class:: build - What about the other half of the equation? + * string: unicode, anything but ", \\ and control characters + * number: any number, but json does not use octal or hexadecimal + * object, array (we've seen these above) + * true + * false + * null - Let's build a server and see how that part works. + .. rst-class:: centered -Construct a Socket ------------------- + **No date type? OMGWTF??!!1!1** -**For the moment, stop typing this into your interpreter.** +.. nextslide:: Dates in JSON + +You have two options: .. rst-class:: build .. container:: - Again, we begin by constructing a socket. Since we are actually the server - this time, we get to choose family, type and protocol: + .. container:: - .. code-block:: pycon + Option 1 - Unix Epoch Time (number): - >>> server_socket = socket.socket( - ... socket.AF_INET, - ... socket.SOCK_STREAM, - ... socket.IPPROTO_TCP) - ... - >>> server_socket - + .. code-block:: python + >>> import time + >>> time.time() + 1358212616.7691269 -Bind the Socket ---------------- + .. container:: + + Option 2 - ISO 8661 (string): + + .. code-block:: python -Our server socket needs to be **bound** to an address. This is the IP Address -and Port to which clients must connect: + >>> import datetime + >>> datetime.datetime.now().isoformat() + '2013-01-14T17:18:10.727240' + + +JSON in Python +-------------- + +You can encode python to json, and decode json back to python: .. rst-class:: build .. container:: - .. code-block:: pycon + .. code-block:: python - >>> address = ('127.0.0.1', 50000) - >>> server_socket.bind(address) + In [1]: import json + In [2]: array = [1, 2, 3] + In [3]: json.dumps(array) + Out[3]: '[1, 2, 3]' + In [4]: orig = {'foo': [1,2,3], 'bar': 'my resumé', 'baz': True} + In [5]: encoded = json.dumps(orig) + In [6]: encoded + Out[6]: '{"foo": [1, 2, 3], "bar": "my resum\\u00e9", "baz": true}' + In [7]: decoded = json.loads(encoded) + In [8]: decoded == orig + Out[8]: True - **Terminology Note**: In a server/client relationship, the server *binds* - to an address and port. The client *connects* + Customizing the encoder or decoder class allows for specialized serializations -Listen for Connections ----------------------- -Once our socket is bound to an address, we can listen for attempted -connections: +.. nextslide:: -.. code-block:: pycon +the json module also supports reading and writing to *file-like objects* via +``json.dump(fp)`` and ``json.load(fp)`` (note the missing 's') - >>> server_socket.listen(1) +.. rst-class:: build +.. container:: + + Remember duck-typing. Anything with a ``.write`` and a ``.read`` method is + *file-like* + + This usage can be much more memory-friendly with large files/sources + +.. nextslide:: What about WSDL? + +SOAP was invented in part to provide completely machine-readable +interoperability. .. rst-class:: build +.. container:: -* The argument to ``listen`` is the *backlog* + *Does that really work in real life?* -* The *backlog* is the **maximum** number of connection requests that the - socket will queue + .. rst-class:: centered -* Once the limit is reached, the socket refuses new connections. + Hardly ever + Another reason was to provide extensibility via custom types -Accept Incoming Messages ------------------------- + *Does that really work in real life?* -When a socket is listening, it can receive incoming connection requests: + .. rst-class:: centered -.. code-block:: pycon + Hardly ever - >>> connection, client_address = server_socket.accept() - ... # this blocks until a client connects - >>> connection.recv(16) +.. nextslide:: Why Do All The Work? + +So, if neither of these goals is really achieved by using SOAP, why pay all +the overhead required to use the protocol? .. rst-class:: build +.. container:: + + Is there another way we could consider approaching the problem? -* The ``connection`` returned by a call to ``accept`` is a **new socket**. - This new socket is used to communicate with the client + .. rst-class:: centered -* The ``client_address`` is a two-tuple of IP Address and Port for the client - socket + **Enter REST** -* When a connection request is 'accepted', it is removed from the backlog - queue. +REST +---- -Send a Reply ------------- +.. rst-class:: centered + +**Representational State Transfer** -The same socket that received a message from the client may be used to return -a reply: +.. rst-class:: build +.. container:: -.. code-block:: pycon + .. rst-class:: build - >>> connection.sendall("message received") + * Originally described by Roy T. Fielding (worth reading) + * Use HTTP for what it can do + * Read more in `RESTful Web Services `_\* + \* Seriously. Buy it and read it -Clean Up --------- +.. nextslide:: A Comparison + +The XML-RCP/SOAP way: + +.. rst-class:: build -Once a transaction between the client and server is complete, the -``connection`` socket should be closed: +* POST /getComment HTTP/1.1 +* POST /getComments HTTP/1.1 +* POST /addComment HTTP/1.1 +* POST /editComment HTTP/1.1 +* POST /deleteComment HTTP/1.1 .. rst-class:: build .. container:: - .. code-block:: pycon + The RESTful way: - >>> connection.close() + .. rst-class:: build - Note that the ``server_socket`` is *never* closed as long as the server - continues to run. + * GET /comment/ HTTP/1.1 + * GET /comment HTTP/1.1 + * POST /comment HTTP/1.1 + * PUT /comment/ HTTP/1.1 + * DELETE /comment/ HTTP/1.1 -Getting the Flow -================ +.. nextslide:: ROA -.. rst-class:: left +REST is a **Resource Oriented Architecture** + +.. rst-class:: build +.. container:: + + The URL represents the *resource* we are working with + + The HTTP Method indicates the ``action`` to be taken + + The HTTP Code returned tells us the ``result`` (whether success or failure) + +.. nextslide:: HTTP Codes Revisited + +.. rst-class:: build .. container:: + POST /comment HTTP/1.1 (creating a new comment): + + .. rst-class:: build + * Success: ``HTTP/1.1 201 Created`` + * Failure (unauthorized): ``HTTP/1.1 401 Unauthorized`` + * Failure (NotImplemented): ``HTTP/1.1 405 Not Allowed`` + * Failure (ValueError): ``HTTP/1.1 406 Not Acceptable`` - The flow of this interaction can be a bit confusing. Let's see it in - action step-by-step. + PUT /comment/ HTTP/1.1 (edit comment): .. rst-class:: build - .. container:: - .. container:: + * Success: ``HTTP/1.1 200 OK`` + * Failure: ``HTTP/1.1 409 Conflict`` - Open a second python interpreter and place it next to your first so - you can see both of them at the same time. + DELETE /comment/ HTTP/1.1 (delete comment): + .. rst-class:: build -Create a Server ---------------- + * Success: ``HTTP/1.1 204 No Content`` + + +Playing With REST +----------------- -In your first python interpreter, create a server socket and prepare it for -connections: +Let's take a moment to play with REST. .. rst-class:: build .. container:: - .. code-block:: pycon + We'll use a common, public API provided by Google. - >>> server_socket = socket.socket( - ... socket.AF_INET, - ... socket.SOCK_STREAM, - ... socket.IPPROTO_IP) - >>> server_socket.bind(('127.0.0.1', 50000)) - >>> server_socket.listen(1) - >>> conn, addr = server_socket.accept() - - At this point, you should **not** get back a prompt. The server socket is - waiting for a connection to be made. + .. rst-class:: centered + **Geocoding** -Create a Client ---------------- +.. nextslide:: Geocoding with Google APIs -In your second interpreter, create a client socket and prepare to send a -message: +https://developers.google.com/maps/documentation/geocoding .. rst-class:: build .. container:: - .. code-block:: pycon + Open a python interpreter using our virtualenv:: + + (soupenv)$ python - >>> import socket - >>> client_socket = socket.socket( - ... socket.AF_INET, - ... socket.SOCK_STREAM, - ... socket.IPPROTO_IP) + .. code-block:: ipython - Before connecting, keep your eye on the server interpreter: + In [1]: import requests + In [2]: import json + In [3]: from pprint import pprint + In [4]: url = 'http://maps.googleapis.com/maps/api/geocode/json' + In [5]: addr = '1325 4th Ave, Seattle, 98101' + In [6]: parameters = {'address': addr, 'sensor': 'false'} + In [7]: resp = requests.get(url, params=parameters) + In [8]: data = resp.json() - .. code-block:: pycon - >>> client_socket.connect(('127.0.0.1', 50000)) +.. nextslide:: Reverse Geocoding +You can do the same thing in reverse, supply latitude and longitude and get +back address information: + +.. rst-class:: build +.. container:: -Send a Message Client->Server ------------------------------ + .. code-block:: ipython -As soon as you made the connection above, you should have seen the prompt -return in your server interpreter. The ``accept`` method finally returned a -new connection socket. + In [15]: if data['status'] == 'OK': + ....: pprint(data['results']) + ....: + [{'address_components': [{'long_name': '1325', + 'short_name': '1325', + ... + 'types': ['street_address']}] + + Notice that there may be a number of results returned, ordered from most + specific to least. + + +Mashing It Up +------------- + +Google's geocoding data is quite nice. .. rst-class:: build .. container:: - When you're ready, type the following in the *client* interpreter: + But it's not in a format we can use directly to create a map - .. code-block:: pycon + For that we need `geojson` - >>> client_socket.sendall("Hey, can you hear me?") + Moreover, formatting the data for all those requests is going to get + tedious. + Luckily, people create *wrappers* for popular REST apis like google's + geocoding service. -Receive and Respond -------------------- + Once such wrapper is `geocoder`_, which provides not only google's service, + but many others under a single umbrella. -Back in your server interpreter, go ahead and receive the message from your -client: +.. _geocoder: http://geocoder.readthedocs.org/en/latest/ +.. _geojson: http://geojson.org + +.. nextslide:: Install ``geocoder`` + +Install geocoder into your ``soupenv`` so that it's available to use: + +.. code-block:: bash + + (soupenv)$ pip install geocoder .. rst-class:: build .. container:: - .. code-block:: pycon + Our final step for tonight will be to geocode the results we have scraped + from the inspection site. - >>> conn.recv(32) - 'Hey, can you hear me?' + We'll then convert that to ``geojson``, insert our own properties and map + the results. - Send a message back, and then close up your connection: + Let's begin by converting our script so that what we have so far is + contained in a generator function - .. code-block:: pycon + We'll eventually sort our results and generate the top 10 or so for + geocoding. - >>> conn.sendall("Yes, I hear you.") - >>> conn.close() + Open up ``mashup.py`` and copy everthing in the ``main`` block. +.. nextslide:: Make a Generator Function -Finish Up ---------- +Add a new function ``result_generator`` to the ``mashup.py`` script. Paste the +code you copied from the ``main`` block and then update it a bit: + +.. rst-class:: build +.. code-block:: python + + def result_generator(count): + use_params = { + 'Inspection_Start': '2/1/2013', + 'Inspection_End': '2/1/2015', + 'Zip_Code': '98101' + } + # html, encoding = get_inspection_page(**use_params) + html, encoding = load_inspection_page('inspection_page.html') + parsed = parse_source(html, encoding) + content_col = parsed.find("td", id="contentcol") + data_list = restaurant_data_generator(content_col) + for data_div in data_list[:count]: + metadata = extract_restaurant_metadata(data_div) + inspection_data = get_score_data(data_div) + metadata.update(inspection_data) + yield metadata + + +.. nextslide:: Test It Out -Back in your client interpreter, take a look at the response to your message, -then be sure to close your client socket too: +Update the ``main`` block of your ``mashup.py`` script to use the new function: .. rst-class:: build .. container:: - .. code-block:: pycon + .. code-block:: python - >>> client_socket.recv(32) - 'Yes, I hear you.' - >>> client_socket.close() + if __name__ == '__main__': + for result in result_generator(10): + print result - And now that we're done, we can close up the server too (back in the server - interpreter): + Then run your script and verify that the only thing that has changed is the + number of results that print. - .. code-block:: pycon + .. code-block:: bash + + (soupenv)$ python mashup.py + # you should see 10 dictionaries print here. - >>> server_socket.close() +Add Geocoding +------------- +The API for geocoding with ``geocoder`` is the same for all providers. -.. nextslide:: Congratulations! +.. rst-class:: build +.. container:: -.. rst-class:: large center + You give an address, it returns geocoded data. -You've run your first client-server interaction + You provide latitude and longitude, it provides address data + .. code-block:: ipython + + In [1]: response = geocoder.google(
    ) + In [2]: response.json + Out[2]: # json result data + In [3]: response.geojson + Out[3]: # geojson result data -Homework -======== +.. nextslide:: Adding The Function -.. rst-class:: left +Let's add a new function ``get_geojson`` to ``mashup.py`` + +.. rst-class:: build .. container:: - Your homework assignment for this week is to take what you've learned here - and build a simple "echo" server. + It will .. rst-class:: build - .. container:: - The server should automatically return to any client that connects *exactly* - what it receives (it should **echo** all messages). + * Take a result from our search as it's input + * Get geocoding data from google using the address of the restaurant + * Return the geojson representation of that data - You will also write a python script that, when run, will send a message to the - server and receive the reply, printing it to ``stdout``. + Try to write this function on your own - Finally, you'll do all of this so that it can be tested. + .. code-block:: python + + def get_geojson(result): + address = " ".join(result.get('Address', '')) + if not address: + return None + geocoded = geocoder.google(address) + return geocoded.geojson +.. nextslide:: Testing It Out -Your Task ---------- +Next, update our ``main`` block to get the geojson for each result and print +it: + +.. rst-class:: build +.. container:: + + .. code-block:: python + + if __name__ == '__main__': + for result in result_generator(10): + geojson = get_geojson(result) + print geojson -In our class repository, there is a folder ``resources/session04``. + Then test your results by running your script: + + .. code-block:: bash + + (soupenv)$ python mashup.py + {'geometry': {'type': 'Point', 'coordinates': [-122.3393005, 47.6134378]}, + 'type': 'Feature', 'properties': {'neighborhood': 'Belltown', + 'encoding': 'utf-8', 'county': 'King County', 'city_long': 'Seattle', + 'lng': -122.3393005, 'quality': u'street_address', 'city': 'Seattle', + 'confidence': 9, 'state': 'WA', 'location': u'1933 5TH AVE SEATTLE, WA 98101', + 'provider': 'google', 'housenumber': '1933', 'accuracy': 'ROOFTOP', + 'status': 'OK', 'state_long': 'Washington', + 'address': '1933 5th Avenue, Seattle, WA 98101, USA', 'lat': 47.6134378, + 'postal': '98101', 'ok': True, 'road_long': '5th Avenue', 'country': 'US', + 'country_long': 'United States', 'street': '5th Ave'}, + 'bbox': [-122.3406494802915, 47.6120888197085, -122.3379515197085, 47.6147867802915]} + +.. nextslide:: Update Geojson Properties + +The ``properties`` of our geojson records are filled with data we don't really +care about. .. rst-class:: build .. container:: - Inside that folder, you should find: + Let's replace that information with some of the metadata from our + inspection results. + + We'll update our ``get_geojson`` function so that it: .. rst-class:: build - * A file ``tasks.txt`` that contains these instructions + * Builds a dictionary containing only the values we want from our + inspection record. + * Converts list values to strings (geojson requires this) + * Replaces the 'properties' of our geojson with this new data + * Returns the modified geojson record + +.. nextslide:: Write the Function + +See if you can make the updates on your own. + +.. rst-class:: build +.. code-block:: python + + def get_geojson(result): + # ... + geocoded = geocoder.google(address) + geojson = geocoded.geojson + inspection_data = {} + use_keys = ( + 'Business Name', 'Average Score', 'Total Inspections', 'High Score' + ) + for key, val in result.items(): + if key not in use_keys: + continue + if isinstance(val, list): + val = " ".join(val) + inspection_data[key] = val + geojson['properties'] = inspection_data + return geojson + +.. nextslide:: Making Mappable Data + +We are now generating a series of ``geojson`` *Feature* objects. - * A skeleton for your server in ``echo_server.py`` +.. rst-class:: build +.. container:: - * A skeleton for your client script in ``echo_client.py`` + To map these objects, we'll need to create a file which contains a + ``geojson`` *FeatureCollection*. - * Some simple tests in ``tests.py`` + The structure of such a collection looks like this: - Your task is to make the tests pass. + .. code-block:: json + + {'type': 'FeatureCollection', 'features': [...]} + Let's update our ``main`` function to append each feature to such a + structure. -Running the Tests ------------------ + Then we can dump the structure as ``json`` to a file. + +.. nextslide:: Update the Script -To run the tests, you'll have to set the server running in one terminal: +In ``mashup.py`` update the ``main`` block like so: .. rst-class:: build .. container:: - .. code-block:: bash + .. code-block:: python - $ python echo_server.py + # add an import at the top: + import json - Then, in a second terminal, you will execute the tests: + if __name__ == '__main__': + total_result = {'type': 'FeatureCollection', 'features': []} + for result in result_generator(10): + geojson = get_geojson(result) + total_result['features'].append(geojson) + with open('my_map.json', 'w') as fh: + json.dump(total_result, fh) + + When you run the script nothing will print, but the new file will appear. .. code-block:: bash - $ python tests.py + (soupenv)$ python mashup.py - You should see output like this: + This script is available as ``resources/session04/mashup_5.py`` - .. code-block:: bash +Display the Results +------------------- - [...] - FAILED (failures=2) +Once the new file is written you are ready to display your results. +.. rst-class:: build +.. container:: + + Open your web browser and go to http://geojson.io -Submitting Your Homework ------------------------- + Then drag and drop the new file you wrote onto the map you see there. -To submit your homework: + .. figure:: /_static/geojson-io.png + :align: center + :width: 75% + +Wrap Up +------- + +We've built a simple mashup combining data from different sources. .. rst-class:: build .. container:: + We scraped health inspection data from the King County government site. + + We geocoded that data. + + And we've displayed the results on a map. + + What other sources of data might we choose to combine? + + Check out `programmable web `_ + to see some of the possibilities + + + + +Homework +======== + +.. rst-class:: left +.. container:: + + For your homework this week, you'll be polishing this mashup. + .. rst-class:: build + .. container:: - * Create a new repository in GitHub. Call it ``echo_sockets``. + Begin by sorting the results of our search by the average score (can + you do this and still use a generator for getting the geojson?). - * Put the ``echo_server.py``, ``echo_client.py`` and ``tests.py`` files in - this repository. + Then, update your script to allow the user to choose how to sort, by + average, high score or most inspections:: - * Send Maria and I an email with a link to your repository when you are - done. + (soupenv)$ python mashup.py highscore - We will clone your repository and run the tests as described above. + Next, allow the user to choose how many results to map:: - And we'll make comments inline on your repository. + (soupenv)$ python mashup.py highscore 25 + Or allow them to reverse the results, showing the lowest scores first:: -Going Further -------------- + (soupenv)$ python mashup.py highscore 25 reverse -In ``assignments/session01/tasks.txt`` you'll find a few extra problems to try. + If you're feeling particularly adventurous, see if you can use the + `argparse`_ module from the standard library to handle command line + arguments + +.. _argparse: https://docs.python.org/2/library/argparse.html#module-argparse + +More Fun +-------- + +Next, try adding a bit of information to your map by setting the +``marker-color`` property. This will display a marker with the provided +css-style color (``#FF0000``) .. rst-class:: build .. container:: - If you finish the first part of the homework in less than 3-4 hours give - one or more of these a whirl. + See if you can make the color change according to the values used for the + sorting of the list. Either vary the intensity of the color, or the hue. + + Finally, if you are feeling particularly frisky, you can update your script + to automatically open a browser window with your map loaded on + *geojson.io*. + + To do this, you'll want to read about the `webbrowser`_ module from the + standard library. + + In addition, you'll want to read up on using the URL parameters API for + *geojson.io*. Click on the **help** tab in the sidebar to view the + information. + + You will also need to learn about how to properly quote special characters + for a URL, using the `urllib.parse`_ ``quote`` function. + +.. _urllib.parse: https://docs.python.org/3/library/urllib.parse.html#urllib.parse.quote +.. _webbrowser: https://docs.python.org/3/library/webbrowser.html + +Submitting Your Work +-------------------- + +Create a github repository to contain your mashup work. Start by populating it +with the script as we finished it today (mashup_5.py). + +As you implement the above features, commit early and commit often. + +When you're ready for us to look it over, email a link to your repository to +Maria and I. - They are not required, but if you include solutions in your repository, - we'll review your work. diff --git a/html/_sources/presentations/session05.txt b/html/_sources/presentations/session05.txt index e6f86b53..8eaa56ac 100644 --- a/html/_sources/presentations/session05.txt +++ b/html/_sources/presentations/session05.txt @@ -1,1552 +1,1513 @@ +.. slideconf:: + :autoslides: True + ********** Session 05 ********** -.. figure:: /_static/protocol.png +.. image:: /_static/python.png :align: center - :width: 40% - - Web Protocols - -The Languages Computers Speak -============================= - -.. rst-class:: build left -.. container:: - - Programming languages like Python are the languages we speak to computers. - - *Protocols* are the languages that computers speak to each-other. - - This sesson we'll look at a few of them and + :width: 43% - .. rst-class:: build - - * Learn what makes them similar - * Learn what makes them different - * Learn about Python's tools for speaking them - * Learn how to speak one (HTTP) ourselves - -But First ----------- +Introductions +============= .. rst-class:: large centered -Questions from the Homework? +Wherin we learn about the Model View Controller approach to app design and +explore data persistence in Python. -.. nextslide:: +.. nextslide:: Break Time -.. rst-class:: large centered - -Examples of an echo server using ``select`` +Let's take a moment to rest up and absorb what we've learned. +When we return, we'll begin talking about a particular approach to thinking +about application design: -What is a Protocol? -------------------- - -.. rst-class:: build large centered -.. container:: +.. rst-class:: centered - **a set of rules or conventions** +**Model View Controller** - **governing communications** +MVC Applications +================ +.. figure:: http://upload.wikimedia.org/wikipedia/commons/4/40/MVC_passive_view.png + :align: center + :width: 50% -.. nextslide:: Protocols IRL + By Alan Evangelista (Own work) [CC0], via Wikimedia Commons -Life has lots of sets of rules for how to do things. +Separation of Concerns +---------------------- .. rst-class:: build +.. container:: -* What do you say when you get on the elevator? - -* What do you do on a first date? - -* What do you wear to a job interview? - -* What do (and don't) you talk about at a dinner party? - -* ...? + In the first part of this course, you were introduced to the concept of + *Object Oriented Programming* + OOP was `first formalized`_ in the 1970s in *Smalltalk*, invented by Alan + Kay at *Xerox PARC* -.. nextslide:: Protocols IRL + *Smalltalk* was also the first language which utilized the + `Model View Controller`_ design pattern. -.. figure:: /_static/icup.png - :align: center - :width: 65% + This pattern (like all `design patterns`_) seeks to provide a *way of + thinking* that helps to make software design easier. - http://blog.xkcd.com/2009/09/02/urinal-protocol-vulnerability/ + In this case, the goal is to help clarify the high-level *separation of + concerns* in a system. +.. _first formalized: http://en.wikipedia.org/wiki/Object-oriented_programming#History +.. _Model View Controller: http://en.wikipedia.org/wiki/Model–view–controller +.. _design patterns: http://en.wikipedia.org/wiki/Software_design_pattern -.. nextslide:: Protocols In Computers +Three Components +---------------- -Digital life has lots of rules too: +The pattern divides the elements of a system into three parts: .. rst-class:: build -* how to say hello +Model: + This component represents the *data* that comprises the system, and the + *logic* used to manipulate that data. -* how to identify yourself +View: + This component can be any *representation* of the data to the outside world: + a chart, diagram, table, user interface, etc. -* how to ask for information + It also includes representations of the *actions* available in the system. -* how to provide answers +Controller: + This component coordinates the Model and the View in a system. -* how to say goodbye + It accepts input from a user and channels that input into the Model. + It accepts information about the current state of the Model and transmits + that information to the View. -Real Protocol Examples ----------------------- +On the Web +---------- -What does this look like in practice? +This pattern has proven useful for thinking about the applications we build for +the web. .. rst-class:: build +.. container:: -* SMTP (Simple Message Transfer Protocol) - http://tools.ietf.org/html/rfc5321#appendix-D - -* POP3 (Post Office Protocol) - http://www.faqs.org/docs/artu/ch05s03.html + A web browser provides a convenient container for *views* of data. -* IMAP (Internet Message Access Protocol) - http://www.faqs.org/docs/artu/ch05s03.html + These *views* are created by *controller* software hosted on a server. -* HTTP (Hyper-Text Transfer Protocol) - http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol + This *controller* software accepts input from users via *HTTP requests*, + channeling it into a *data model*, often stored in some database. + The *controller* returns information about the state of the *data model* to + the user via *HTTP responses* -SMTP ----- +.. nextslide:: -What does SMTP look like? +This approach is so common, that it has been formalized into any number of *web +frameworks* .. rst-class:: build .. container:: - SMTP (Say hello and identify yourself):: + *Web frameworks* abstract away the specifics of the *HTTP request/response + cycle*, leaving simple MVC components for the developer to use. - S (<--): 220 foo.com Simple Mail Transfer Service Ready - C (-->): EHLO bar.com - S (<--): 250-foo.com greets bar.com - S (<--): 250-8BITMIME - S (<--): 250-SIZE - S (<--): 250-DSN - S (<--): 250 HELP + *Web frameworks* exist in nearly all modern languages. + Python has scores of them. -.. nextslide:: + Over the weeks to come, we'll learn about two of them, `Pyramid`_ and + `Django`_. -SMTP (Ask for information, provide answers):: - - C (-->): MAIL FROM: - S (<--): 250 OK - C (-->): RCPT TO: - S (<--): 250 OK - C (-->): RCPT TO: - S (<--): 550 No such user here - C (-->): DATA - S (<--): 354 Start mail input; end with . - C (-->): Blah blah blah... - C (-->): ...etc. etc. etc. - C (-->): . - S (<--): 250 OK +.. _Pyramid: http://www.pylonsproject.org/projects/pyramid/about +.. _Django: https://www.djangoproject.com/ -.. nextslide:: +A Word About Terminology +------------------------ -SMTP (Say goodbye):: +Although the MVC pattern is a useful abstraction, there are a few differences +in how things are named in Python web frameworks - C (-->): QUIT - S (<--): 221 foo.com Service closing transmission channel +.. rst-class:: build centered +.. container:: + model <--> model -.. nextslide:: SMTP Characteristics + controller <--> view -.. rst-class:: build + view <--> template (or even HTTP response) -* Interaction consists of commands and replies -* Each command or reply is *one line* terminated by -* The exception is message payload, terminated by . -* Each command has a *verb* and one or more *arguments* -* Each reply has a formal *code* and an informal *explanation* + .. rst-class:: left + For more on this difference, you can `read this`_ from the Pyramid design + documentation. -POP3 ----- +.. _read this: http://docs.pylonsproject.org/projects/pyramid/en/latest/designdefense.html#pyramid-gets-its-terminology-wrong-mvc -What does POP3 look like? +Our First Application +===================== -.. rst-class:: build -.. container:: +.. rst-class:: left - POP3 (Say hello and identify yourself):: +But enough abstract blabbering. - C (-->): - S (<--): +OK POP3 server ready <1896.6971@mailgate.dobbs.org> - C (-->): USER bob - S (<--): +OK bob - C (-->): PASS redqueen - S (<--): +OK bob's maildrop has 2 messages (320 octets) +.. rst-class:: build left +.. container:: + There's no better way to make concepts like these concrete than to build + something using them. -.. nextslide:: + Let's make an application! -POP3 (Ask for information, provide answers):: + We're going to build a Learning Journal. - C (-->): STAT - S (<--): +OK 2 320 - C (-->): LIST - S (<--): +OK 1 messages (120 octets) - S (<--): 1 120 - S (<--): . + When we're done, you'll have a live, online application you can use to keep + note of the things you are learning about Python development. + We'll use one of our Python web framework to do this: `Pyramid`_ -.. nextslide:: +Pyramid +------- -POP3 (Ask for information, provide answers):: +First published in 2010, `Pyramid`_ is a powerful, flexible web framework. - C (-->): RETR 1 - S (<--): +OK 120 octets - S (<--): - S (<--): . - C (-->): DELE 1 - S (<--): +OK message 1 deleted +.. rst-class:: build +.. container:: + You can create compelling one-page applications, much like in + microframeworks like Flask -.. nextslide:: + You can also create powerful, scalable applications using the full + power of Python -POP3 (Say goodbye):: + Created by the combined powers of the teams behind Pylons and Zope - C (-->): QUIT - S (<--): +OK dewey POP3 server signing off (maildrop empty) - C (-->): + It represents the first true second-generation web framework in + existence. +Starting the Project +-------------------- -.. nextslide:: POP3 Characteristics +The first step is to prepare for the project. .. rst-class:: build .. container:: - .. rst-class:: build + Begin by creating a location where you'll do your work. - * Interaction consists of commands and replies - * Each command or reply is *one line* terminated by - * The exception is message payload, terminated by . - * Each command has a *verb* and one or more *arguments* - * Each reply has a formal *code* and an informal *explanation* + I generally put all my work in a folder called ``projects`` in my home + directory: - The codes don't really look the same, though, do they? + .. code-block:: bash + $ cd + $ mkdir projects + $ cd projects + $ mkdir learning-journal + $ cd learning-journal + $ pwd + /Users/cewing/project/learning-journal -.. nextslide:: One Other Difference +.. nextslide:: Creating an Environment -The exception to the one-line-per-message rule is *payload* +We continue our preparations by creating the virtual environment we will use +for our project. .. rst-class:: build .. container:: - In both SMTP and POP3 this is terminated by . + Again, this will help us to keep our work here isolated from anything else + we do. - In SMTP, the *client* has this ability + Remember how to make a new venv? - But in POP3, it belongs to the *server*. Why? + .. code-block:: bash -IMAP ----- + $ pyvenv ljenv -What does IMAP look like? + .. code-block:: posh -.. rst-class:: build -.. container:: + c:\Temp>python -m venv myenv - IMAP (Say hello and identify yourself):: + And then, how to activate it? - C (-->): - S (<--): * OK example.com IMAP4rev1 v12.264 server ready - C (-->): A0001 USER "frobozz" "xyzzy" - S (<--): * OK User frobozz authenticated + .. code-block:: bash + $ source ljenv/bin/activate + (ljenv)$ -.. nextslide:: + .. code-block:: posh -IMAP (Ask for information, provide answers [connect to an inbox]):: + C:> ljenv/Scripts/activate.bat - C (-->): A0002 SELECT INBOX - S (<--): * 1 EXISTS - S (<--): * 1 RECENT - S (<--): * FLAGS (\Answered \Flagged \Deleted \Draft \Seen) - S (<--): * OK [UNSEEN 1] first unseen message in /var/spool/mail/esr - S (<--): A0002 OK [READ-WRITE] SELECT completed +.. nextslide:: Installing Pyramid +Next, we install the Pyramid web framework into our new virtualenv. -.. nextslide:: +.. rst-class:: build +.. container:: -IMAP (Ask for information, provide answers [Get message sizes]):: + We can do this with the ``pip`` in our active ``ljenv``: - C (-->): A0003 FETCH 1 RFC822.SIZE - S (<--): * 1 FETCH (RFC822.SIZE 2545) - S (<--): A0003 OK FETCH completed + .. code-block:: bash + (ljenv)$ pip install pyramid + Collecting pyramid + Downloading pyramid-1.5.2-py2.py3-none-any.whl (545kB) + 100% |################################| 548kB 172kB/s + ... + Successfully installed PasteDeploy-1.5.2 WebOb-1.4 + pyramid-1.5.2 repoze.lru-0.6 translationstring-1.3 + venusian-1.0 zope.deprecation-4.1.1 zope.interface-4.1.2 -.. nextslide:: + Once that is complete, we are ready to create a *scaffold* for our project. -IMAP (Ask for information, provide answers [Get first message header]):: +Working with Pyramid +-------------------- - C (-->): A0004 FETCH 1 BODY[HEADER] - S (<--): * 1 FETCH (RFC822.HEADER {1425} - - S (<--): ) - S (<--): A0004 OK FETCH completed +Many web frameworks require at least a bit of *boilerplate* code to get +started. +.. rst-class:: build +.. container:: -.. nextslide:: + Pyramid does not. -IMAP (Ask for information, provide answers [Get first message body]):: + However, our application will require a database and handling that does + require some. - C (-->): A0005 FETCH 1 BODY[TEXT] - S (<--): * 1 FETCH (BODY[TEXT] {1120} - - S (<--): ) - S (<--): * 1 FETCH (FLAGS (\Recent \Seen)) - S (<--): A0005 OK FETCH completed + Pyramid provides a system for creating boilerplate called ``pcreate``. -.. nextslide:: + You use it to generate the skeleton for a project based on some pattern: -IMAP (Say goodbye):: + .. code-block:: bash - C (-->): A0006 LOGOUT - S (<--): * BYE example.com IMAP4rev1 server terminating connection - S (<--): A0006 OK LOGOUT completed - C (-->): + (ljenv)$ pcreate -s alchemy learning_journal + Creating directory /Users/cewing/projects/learning-journal/learning_journal + ... + Welcome to Pyramid. Sorry for the convenience. + =============================================================================== + Let's take a quick look at what that did -.. nextslide:: IMAP Characteristics +.. nextslide:: What You Get -.. rst-class:: build +.. code-block:: bash -* Interaction consists of commands and replies -* Each command or reply is *one line* terminated by -* Each command has a *verb* and one or more *arguments* -* Each reply has a formal *code* and an informal *explanation* + ... + ├── development.ini + ├── learning_journal + │   ├── __init__.py + │   ├── models.py + │   ├── scripts + │   │   ├── __init__.py + │   │   └── initializedb.py + │   ├── static + ... + │   ├── templates + │   │   └── mytemplate.pt + │   ├── tests.py + │   └── views.py + ├── production.ini + └── setup.py +.. nextslide:: Saving Your Work -.. nextslide:: IMAP Differences +You've now created something worth saving. .. rst-class:: build .. container:: - .. rst-class:: build - - * Commands and replies are prefixed by 'sequence identifier' - * Payloads are prefixed by message size, rather than terminated by reserved - sequence - - Compared with POP3, what do these differences suggest? + Start by initializing a new git repository in the `learning_journal` folder + you just created: + .. code-block:: bash -Using IMAP in Python --------------------- + (ljenv)$ cd learning_journal + (ljenv)$ git init + Initialized empty Git repository in + /Users/cewing/projects/learning-journal/learning_journal/.git/ -Let's try this out for ourselves! +.. nextslide:: Saving Your Work -.. rst-class:: build -.. container:: +Check ``git status`` to see where things stand: - .. container:: +.. code-block:: bash - Fire up your python interpreters and prepare to type. + (ljenv)$ git status + On branch master + Initial commit -.. nextslide:: + Untracked files: + (use "git add ..." to include in what will be committed) -Begin by importing the ``imaplib`` module from the Python Standard Library: + CHANGES.txt + MANIFEST.in + README.txt + development.ini + learning_journal/ + production.ini + setup.py -.. rst-class:: build -.. container:: +.. nextslide:: Add the Project Code - .. code-block:: pycon +Add your work to this new repository: - >>> import imaplib - >>> dir(imaplib) - ['AllowedVersions', 'CRLF', 'Commands', - 'Continuation', 'Debug', 'Flags', 'IMAP4', - 'IMAP4_PORT', 'IMAP4_SSL', 'IMAP4_SSL_PORT', - ... - 'socket', 'ssl', 'sys', 'time'] - >>> imaplib.Debug = 4 +.. code-block:: bash - Setting ``imap.Debug`` shows us what is sent and received + (ljenv)$ git add . + (ljenv)$ git status + ... + Changes to be committed: + (use "git rm --cached ..." to unstage) + new file: CHANGES.txt + new file: MANIFEST.in + ... + new file: production.ini + new file: setup.py -.. nextslide:: +.. nextslide:: Ignore Irrelevant Files -I've prepared a server for us to use. +Python creates ``.pyc`` files when it executes your code. .. rst-class:: build .. container:: - We'll need to set up a client to speak to it. + There are many other files you don't want or need in your repository - Our server requires SSL (Secure Socket Layer) for connecting to IMAP - servers, so let's initialize an IMAP4_SSL client and authenticate: + You can ignore this in ``git`` with the ``.gitignore`` file. - .. code-block:: pycon + Create one now, in this same directory, and add the following basic lines:: - >>> conn = imaplib.IMAP4_SSL('mail.webfaction.com') - 57:04.83 imaplib version 2.58 - 57:04.83 new IMAP4 connection, tag=FNHG - ... - >>> conn.login(username, password) - 12:16.50 > IMAD1 LOGIN username password - 12:18.52 < IMAD1 OK Logged in. - ('OK', ['Logged in.']) + *.pyc + .DS_Store -.. nextslide:: + Finally, add this new file to your repository, too. -We can start by listing the mailboxes we have on the server: + .. code-block:: bash + + (ljenv)$ git add .gitignore -.. code-block:: pycon +.. nextslide:: Make It Permanent - >>> conn.list() - 00:41.91 > FNHG3 LIST "" * - 00:41.99 < * LIST (\HasNoChildren) "." "INBOX" - 00:41.99 < FNHG3 OK List completed. - ('OK', ['(\\HasNoChildren) "." "INBOX"']) +To preserve all these changes, you'll need to commit what you've done: +.. code-block:: bash -.. nextslide:: + (ljenv)$ git commit -m "initial commit of the Pyramid learning journal" -To interact with our email, we must select a mailbox from the list we received -earlier: +.. rst-class:: build +.. container:: -.. code-block:: pycon + This will make a first commit here in this local repository. - >>> conn.select('INBOX') - 00:00.47 > FNHG2 SELECT INBOX - 00:00.56 < * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) - 00:00.56 < * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted. - 00:00.56 < * 2 EXISTS - 00:00.57 < * 0 RECENT - 00:00.57 < * OK [UNSEEN 2] First unseen. - 00:00.57 < * OK [UIDVALIDITY 1357449499] UIDs valid - 00:00.57 < * OK [UIDNEXT 3] Predicted next UID - 00:00.57 < FNHG2 OK [READ-WRITE] Select completed. - ('OK', ['2']) + For homework, you'll put this into GitHub, but this is enough for now. + Let's move on to learning about what we've built so far. -.. nextslide:: +.. nextslide:: Project Structure -We can search our selected mailbox for messages matching one or more criteria. +When you ran the ``pcreate`` command, a new folder was created: +``learning_journal``. .. rst-class:: build .. container:: - The return value is a string list of the UIDs of messages that match our - search: + This folder contains your *project*. - .. code-block:: pycon + At the top level, you have *configuration* (.ini files) - >>> conn.search(None, '(FROM "cris")') - 18:25.41 > FNHG5 SEARCH (FROM "cris") - 18:25.54 < * SEARCH 1 - 18:25.54 < FNHG5 OK Search completed. - ('OK', ['1']) - >>> + You also have a file called ``setup.py`` -.. nextslide:: + This file turns this collection of Python code and configuration into an + *installable Python distribution* -Once we've found a message we want to look at, we can use the ``fetch`` -command to read it from the server. + Let's take a moment to look over the code in that file -.. rst-class:: build -.. container:: +.. nextslide:: ``setup.py`` - IMAP allows fetching each part of a message independently: +.. code-block:: python - .. code-block:: pycon + from setuptools import setup, find_packages + ... + requires = [ + 'pyramid', + ... # packages on which this software depends (dependencies) + ] + setup(name='learning_journal', + version='0.0', + ... # package metadata (used by PyPI) + install_requires=requires, + # Entry points are ways that we can run our code once installed + entry_points="""\ + [paste.app_factory] + main = learning_journal:main + [console_scripts] + initialize_learning_journal_db = learning_journal.scripts.initializedb:main + """, + ) + +Pyramid is Python +----------------- - >>> conn.fetch('1', '(BODY[HEADER])') - ... - >>> conn.fetch('1', '(BODY[TEXT])') - ... - >>> conn.fetch('1', '(FLAGS)') +In the ``__init__.py`` file of your app *package*, you'll find a ``main`` +function: - What does the message say? +.. code-block:: python - Python even includes an *email* library that would allow us to interact - with this message in an *OO* style. + def main(global_config, **settings): + """ This function returns a Pyramid WSGI application. + """ + engine = engine_from_config(settings, 'sqlalchemy.') + DBSession.configure(bind=engine) + Base.metadata.bind = engine + config = Configurator(settings=settings) + config.include('pyramid_chameleon') + config.add_static_view('static', 'static', cache_max_age=3600) + config.add_route('home', '/') + config.scan() + return config.make_wsgi_app() - *Neat, Huh?* +Let's take a closer look at this, line by line. -What Have We Learned? ---------------------- +.. nextslide:: System Configuration -.. rst-class:: build -.. container:: +.. code-block:: python - .. rst-class:: build + def main(global_config, **settings): - * Protocols are just a set of rules for how to communicate +Configuration is passed in to an application after being read from the +``.ini`` file we saw above. - * Protocols tell us how to parse and delimit messages +.. rst-class:: build +.. container:: - * Protocols tell us what messages are valid + These files contain sections (``[app:main]``) containing ``name = value`` + pairs of *configuration data* - * If we properly format request messages to a server, we can get response - messages + This data is parsed with the Python + `ConfigParser `_ module. - * Python supports a number of these protocols + The result is a dict of values: - * So we don't have to remember how to format the commands ourselves + .. code-block:: python - But in every case we've seen, we could do the same thing with a socket and - some strings + {'app:main': {'pyramid.reload_templates': True, ...}, ...} + The default section of the file is passed in as ``global_config``, the + section for *this app* as ``settings``. -Break Time ----------- +.. nextslide:: Database Configuration -Let's take a few minutes here to clear our heads. +.. code-block:: python + from sqlalchemy import engine_from_config + from .models import DBSession, Base + ... + engine = engine_from_config(settings, 'sqlalchemy.') + DBSession.configure(bind=engine) + Base.metadata.bind = engine -HTTP -==== +We will use a package called ``SQLAlchemy`` to interact with our database. -.. rst-class:: left +.. rst-class:: build .. container:: - HTTP is no different - - .. rst-class:: build - .. container:: - - HTTP is also message-centered, with two-way communications: + Our connection is set up using settings read from the ``.ini`` file. - .. rst-class:: build + Can you find the settings for the database? - * Requests (Asking for information) - * Responses (Providing answers) + The ``DBSession`` ensures that each *database transaction* is tied to HTTP + requests. -What does HTTP look like? -------------------------- + The ``Base`` provides a parent class that will hook our *models* to the + database. -HTTP (Ask for information): +.. nextslide:: App Configuration -.. code-block:: http - - GET /index.html HTTP/1.1 - Host: www.example.com - - -**note**: the ```` you see here is a visualization of an empty line. It's -really just the standard line terminator on an empty line. +.. code-block:: python -You don't need to type the ```` there. + config = Configurator(settings=settings) + config.include('pyramid_chameleon') + config.add_static_view('static', 'static', cache_max_age=3600) + config.add_route('home', '/') + config.scan() -.. nextslide:: +Pyramid controlls application-level configuration using a ``Configurator`` class. -HTTP (Provide answers): +.. rst-class:: build +.. container:: -.. code-block:: http + It uses app-specific settings passed in from the ``.ini`` file - HTTP/1.1 200 OK - Date: Mon, 23 May 2005 22:38:34 GMT - Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux) - Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT - Etag: "3f80f-1b6-3e1cb03b" - Accept-Ranges: none - Content-Length: 438 - Connection: close - Content-Type: text/html; charset=UTF-8 - - \n\n \n This is a .... </html> + We can also ``include`` configuration from other add-on packages -You don't need to type the ``<CRLF>`` here either. + Additionally, we can configure *routes* and *views* needed to connect our + application to the outside world here (more on this next week). + Finally, the ``Configurator`` instance performs a ``scan`` to ensure there + are no problems with what we've created. -.. nextslide:: HTTP Core Format +.. nextslide:: A Last Word on Configuration -In HTTP, both *request* and *response* share a common basic format: +We will return to the configuration of our application repeatedly over the next +sessions. .. rst-class:: build +.. container:: -* Line separators are <CRLF> (familiar, no?) -* A required initial line (a command or a response code) -* A (mostly) optional set of headers, one per line -* A blank line -* An optional body + Pyramid configuration is powerful and flexible. + We'll use a few of its features -Implementing HTTP ------------------ + But there's a lot more you could (and should) learn. -Let's investigate the HTTP protocol a bit in real life. + Read about it in the `configuration chapter`_ of the Pyramid documentation. -.. rst-class:: build -.. container:: +.. _configuration chapter: http://docs.pylonsproject.org/projects/pyramid/en/latest/api/config.html - We'll do so by building a simplified HTTP server, one step at a time. +.. nextslide:: Break Time - There is a copy of the echo server from last time in - ``resources/session05``. It's called ``http_server.py``. +Let's take a moment to rest up and absorb what we've learned. - In a terminal, move into that directory. We'll be doing our work here for - the rest of the session +When we return, we'll see how we can create *models* that will embody the data +for our Learning Journal application. +.. rst-class:: centered -.. nextslide:: TDD IRL (a quick aside) +**Pyramid Models** -Test Driven Development (TDD) is all the rage these days. -.. rst-class:: build -.. container:: +Models in Pyramid +================= - It means that before you write code, you first write tests demonstrating - what you want your code to do. +.. rst-class:: left +.. container:: - When all your tests pass, you are finished. You did this for your last - assignment. + The central component of MVC, the model, captures the behavior of the + application in terms of its problem domain, independent of the user + interface. The model directly manages the data, logic and rules of the + application - We'll be doing it again today. + -- from the Wikipedia article on `Model-view-controller`_ +.. _Model-view-controller: http://en.wikipedia.org/wiki/Model–view–controller -.. nextslide:: Run the Tests +Models and ORMs +--------------- -From inside ``resources/session05`` start a second python interpreter and run -``$ python http_server.py`` +In an MVC application, we define the *problem domain* by creating one or more +*Models*. .. rst-class:: build .. container:: - In your first interpreter run the tests. You should see similar output: - - .. code-block:: bash + These capture relevant details about the information we want to preserve + and how we want to interact with it. - $ python tests.py - [...] - Ran 10 tests in 0.003s + In Python-based MVC applications, these *Models* are implemented as Python + classes. - FAILED (failures=3, errors=7) + The individual bits of data we want to know about are *attributes* of our + classes. - Let's take a few minutes here to look at these tests and understand them. + The actions we want to take using that data are *methods* of our classes. + Together, we can refer to this as the *API* of our system. -.. nextslide:: Viewing an HTTP Request +.. nextslide:: Persistence -Our job is to make all those tests pass. +It's all well and good to have a set of Python classes that represent your +system. .. rst-class:: build .. container:: - First, though, let's pretend this server really is a functional HTTP - server. + But what happens when you want to *save* information. - This time, instead of using the echo client to make a connection to the - server, let's use a web browser! + What happens to a instance of a Python class when you quit the interprer? - Point your favorite browser at ``http://localhost:10000`` + When your script stops running? + The code in a website runs when an HTTP request comes in from a client. -.. nextslide:: A Bad Interaction - -First, look at the printed output from your echo server. - -.. rst-class:: build -.. container:: - - Second, note that your browser is still waiting to finish loading the page + It stops running when an HTTP response goes back out to the client. - Moreover, your server should also be hung, waiting for more from the - 'client' + So what happens to the data in your system in-between these moments? - This is because the server is waiting for the browser to respond + The data must be *persisted* - And at the same time, the browser is waiting for the server to indicate it - is done. +.. nextslide:: Alternatives - Our server does not yet speak the HTTP protocol, but the browser is - expecting it. +In the last class from part one of this series, you explored a number of +alternatives for persistence -.. nextslide:: Echoing A Request +.. rst-class:: build -Kill your server with ``ctrl-c`` (the keyboard interrupt) and you should see -some printed content: +* Python Literals +* Pickle/Shelf +* Interchange Files (CSV, XML, INI) +* Object Stores (ZODB, Durus) +* NoSQL Databases (MongoDB, CouchDB) +* SQL Databases (sqlite, MySQL, PostgreSQL, Oracle, SQLServer) .. rst-class:: build .. container:: - .. code-block:: http + Any of these might be useful for certain types of applications. - GET / HTTP/1.1 - Host: localhost:10000 - User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:22.0) Gecko/20100101 Firefox/22.0 - Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - Accept-Language: en-US,en;q=0.5 - Accept-Encoding: gzip, deflate - DNT: 1 - Cookie: __utma=111872281.383966302.1364503233.1364503233.1364503233.1; __utmz=111872281.1364503233.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); csrftoken=uiqj579iGRbReBHmJQNTH8PFfAz2qRJS - Connection: keep-alive - Cache-Control: max-age=0 + On the web, you tend to see two used the most: - Your results will vary from mine. + .. rst-class:: build -.. nextslide:: HTTP Debugging + * NoSQL + * SQL +.. nextslide:: Choosing One -When working on applications, it's nice to be able to see all this going back -and forth. +How do you choose one over the other? .. rst-class:: build .. container:: - Good browsers support this with a set of developer tools built-in. + In general, the telling factor is going to be how you intend to use your + data. - .. rst-class:: build + In systems where the dominant feature is viewing/interacting with + individual objects, a NoSQL storage solution might be the best way to go. - * firefox -> ctrl-shift-K or cmd-opt-K (os X) - * safari -> enable in preferences:advanced then cmd-opt-i - * chrome -> ctrl-shift-i or cmd-opt-i (os X) - * IE (7.0+) -> F12 or tools menu -> developer tools + In systems with objects that are related to eachother, SQL-based Relational + Databases are a better choice. - The 'Net(work)' pane of these tools can show you both request and response, - headers and all. Very useful. + Our system is more like this latter type (trust me on that one for now). + We'll be using SQL (sqlite to start with). -.. nextslide:: Stop! Demo Time -.. rst-class:: centered +.. nextslide:: Objects and Tables -**Let's take a quick look** - - -.. nextslide:: Other Debugging Options - -Sometimes you need or want to debug http requests that are not going through -your browser. +So we have a system where our data is captured in Python *objects* .. rst-class:: build +.. container:: -Or perhaps you need functionality that is not supported by in-browser tools -(request munging, header mangling, decryption of https request/responses) + And a storage system where our data must be rendered as database *tables* -.. container:: incremental + Python provides a specification for interacting directly with databases: + `dbapi2`_ - Then it might be time for an HTTP debugging proxy: + And there are multiple Python packages that implement this specification + for various databases: .. rst-class:: build - * windows: http://www.fiddler2.com/fiddler2/ - * win/osx/linux: http://www.charlesproxy.com/ + * sqlite3 + * python-mysql + * psycopg2 + * ... - We won't cover any of these tools here today. But you can check them out - when you have the time. + With these, you can write SQL to save your Python objects into your + database. +.. _dbapi2: https://www.python.org/dev/peps/pep-0249/ -Step 1: Basic HTTP Protocol ---------------------------- - -In HTTP 1.0, the only required line in an HTTP request is this: - -.. code-block:: http +.. nextslide:: ORMs - GET /path/to/index.html HTTP/1.0 - <CRLF> +But that's a pain. .. rst-class:: build .. container:: - As virtual hosting grew more common, that was not enough, so HTTP 1.1 adds - a single required *header*, **Host**: - - .. code-block:: http - - GET /path/to/index.html HTTP/1.1 - Host: www.mysite1.com:80 - <CRLF> + SQL, while not impossible, is yet another language to learn. + And there is a viable alternative in using an *Object Relational Manager* + (ORM) -.. nextslide:: HTTP Responses - -In both HTTP 1.0 and 1.1, a proper response consists of an intial line, -followed by optional headers, a single blank line, and then optionally a -response body: - -.. rst-class:: build -.. container:: + An ORM provides a layer of *abstraction* between you and SQL - .. code-block:: http - - HTTP/1.1 200 OK - Content-Type: text/plain - <CRLF> - this is a pretty minimal response + You instantiate Python objects and set attributes on them - Let's update our server to return such a response. + The ORM handles converting data from these objects into SQL statements (and + back) -.. nextslide:: Returning a Canned HTTP Response +SQLAlchemy +---------- -Begin by implementing a new function in your ``http_server.py`` script called -`response_ok`. +In our project we will be using the `SQLAlchemy`_ ORM. .. rst-class:: build .. container:: - It can be super-simple for now. We'll improve it later. - - .. container:: + You can find SQLAlchemy among the packages in ``requires`` in ``setup.py`` + in our new ``learning_journal`` package. - It needs to return our minimal response from above: + However, we don't yet have that code installed. - .. code-block:: http - - HTTP/1.1 200 OK - Content-Type: text/plain - <CRLF> - this is a pretty minimal response + To do so, we will need to "install" our own package - **Remember, <CRLF> is a placeholder for an intentionally blank line** + Make sure your ``ljenv`` virtualenv is active and then type the following: + .. code-block:: bash -.. nextslide:: My Solution + (ljenv)$ python setup.py develop + running develop + running egg_info + creating learning_journal.egg-info + ... + Finished processing dependencies for learning-journal==0.0 -.. code-block:: python +.. nextslide:: - def response_ok(): - """returns a basic HTTP response""" - resp = [] - resp.append("HTTP/1.1 200 OK") - resp.append("Content-Type: text/plain") - resp.append("") - resp.append("this is a pretty minimal response") - return "\r\n".join(resp) +Once that is complete, all the *dependencies* listed in our ``setup.py`` will +be installed. +.. rst-class:: build +.. container:: -.. nextslide:: Run The Tests + You can also install the package using ``python setup.py install`` -We've now implemented a function that is tested by our tests. Let's run them -again: + But using ``develop`` allows us to continue developing our package without + needing to re-install it every time we change something. -.. rst-class:: build -.. container:: + It is very similar to using the ``-e`` option to ``pip`` - .. code-block:: bash + Now, we'll only need to re-run this command if we change ``setup.py`` + itself. - $ python tests.py - [...] - ---------------------------------------------------------------------- - Ran 10 tests in 0.002s +.. nextslide:: - FAILED (failures=3, errors=3) +We also need to adjust our ``.gitignore`` file: - Great! We've now got 4 tests that pass. Good work. +.. rst-class:: build +.. code-block:: bash -.. nextslide:: Server Modifications + (ljenv)$ git status + ... + Untracked files: + (use "git add <file>..." to include in what will be committed) -Next, we need to rebuild the server loop from our echo server for it's new -purpose: + learning_journal.egg-info/ .. rst-class:: build .. container:: - It should now wait for an incoming request to be *finished*, *then* send a - response back to the client. + The ``egg-info`` directory that was just created is an artifact of + installing a Python egg. - The response it sends can be the result of calling our new ``response_ok`` - function for now. + It should never be committed to a repository. - We could also bump up the ``recv`` buffer size to something more reasonable - for HTTP traffic, say 1024. + Let's add ``*.egg-info`` to our ``.gitignore`` file and then commit that + change -.. nextslide:: My Solution + Remember how? -.. code-block:: python +.. nextslide:: Our First Model - # ... - try: - while True: - print >>log_buffer, 'waiting for a connection' - conn, addr = sock.accept() # blocking - try: - print >>log_buffer, 'connection - {0}{1}'.format(*addr) - while True: - data = conn.recv(1024) - if len(data) < 1024: - break - - print >>log_buffer, 'sending response' - response = response_ok() - conn.sendall(response) - finally: - conn.close() - # ... +Our project skeleton contains up a first, basic model created for us: +.. code-block:: python -.. nextslide:: Run The Tests + # in models.py + Base = declarative_base() -Once you've got that set, restart your server:: + class MyModel(Base): + __tablename__ = 'models' + id = Column(Integer, primary_key=True) + name = Column(Text) + value = Column(Integer) + Index('my_index', MyModel.name, unique=True, mysql_length=255) - $ python http_server.py +.. _SQLAlchemy: http://docs.sqlalchemy.org/en/rel_0_9/ .. rst-class:: build .. container:: - Then you can re-run your tests: + Our class inherits from ``Base`` - .. code-block:: bash + We ran into ``Base`` earlier when discussing configuration. - $ python tests.py - [...] - ---------------------------------------------------------------------- - Ran 10 tests in 0.003s + We were binding it to the database we wanted to use (the ``engine``) - FAILED (failures=2, errors=3) +.. nextslide:: ``Base`` - Five tests now pass! +Any class we create that inherits from this ``Base`` becomes a *model* -Step 2: Handling HTTP Methods ------------------------------ +.. rst-class:: build +.. container:: -Every HTTP request **must** begin with a single line, broken by whitespace into -three parts: + It will be connected through the ORM to a table in our database. -.. code-block:: http + The name of the table is determined by the ``__tablename__`` special + attribute. - GET /path/to/index.html HTTP/1.1 + Other aspects of table configuration can also be controlled through special + attributes -.. rst-class:: build -.. container:: + Instances of the class, once saved, will become rows in the table. - The three parts are the *method*, the *URI*, and the *protocol* + Attributes of the model that are instances of ``Column`` will become + columns in the table. - Let's look at each in turn. + You can learn much more in the `Declarative`_ chapter of the SQLAlchemy docs +.. _Declarative: http://docs.sqlalchemy.org/en/rel_0_9/orm/extensions/declarative/ -.. nextslide:: HTTP Methods +.. nextslide:: Columns -**GET** ``/path/to/index.html HTTP/1.1`` +Each attribute of your model that will be persisted must be an instance of +`Column`_. .. rst-class:: build +.. container:: -* Every HTTP request must start with a *method* -* There are four main HTTP methods: + Each instance requires *at least* a specific `data type`_ (such as + Integer). - .. rst-class:: build + Additionally, you can control other aspects of the column such as it being + a primary key. - * GET - * POST - * PUT - * DELETE + In the *declarative* style we are using, the name of the column in the + database will default to the attribute name you assigned. -* There are others, notably HEAD, but you won't see them too much + If you wish, you may provide a name specifically. It must be the first + argument and must be a string. +.. _Column: http://docs.sqlalchemy.org/en/rel_0_9/core/metadata.html#sqlalchemy.schema.Column +.. _data type: http://docs.sqlalchemy.org/en/rel_0_9/core/types.html -.. nextslide:: HTTP Methods +Creating The Database +--------------------- -These four methods are mapped to the four basic steps (*CRUD*) of persistent -storage: +We have a *model* which allows us to persist Python objects to an SQL database. .. rst-class:: build +.. container:: -* POST = Create -* GET = Read -* PUT = Update -* DELETE = Delete - + But we're still missing one ingredient here. -.. nextslide:: Methods: Safe <--> Unsafe + We need to create our database, or there will be nowhere for our data to + go. -HTTP methods can be categorized as **safe** or **unsafe**, based on whether -they might change something on the server: + Luckily, our ``pcreate`` scaffold also gave us a convenient way to handle + this: -.. rst-class:: build -.. container:: + .. code-block:: python - .. rst-class:: build + # in setup.py + entry_points="""\ + [paste.app_factory] + main = learning_journal:main + [console_scripts] + initialize_learning_journal_db = learning_journal.scripts.initializedb:main + """, - * Safe HTTP Methods - - * GET - - * Unsafe HTTP Methods - - * POST - * PUT - * DELETE + The ``console_script`` set up as an entry point will help us. - This is a *normative* distinction, which is to say **be careful** +.. nextslide:: ``initialize_learning_journal_db`` +Let's look at that code for a moment. -.. nextslide:: Methods: Idempotent <--> ??? +.. code-block:: python -HTTP methods can be categorized as **idempotent**. + # in scripts/intitalizedb.py + from ..models import DBSession, MyModel, Base + # ... + def main(argv=sys.argv): + if len(argv) < 2: + usage(argv) + config_uri = argv[1] + options = parse_vars(argv[2:]) + setup_logging(config_uri) + settings = get_appsettings(config_uri, options=options) + engine = engine_from_config(settings, 'sqlalchemy.') + DBSession.configure(bind=engine) + Base.metadata.create_all(engine) + with transaction.manager: + model = MyModel(name='one', value=1) + DBSession.add(model) + +.. nextslide:: Console Scripts + +By connecting this function as a ``console script``, our Python package makes +this command available to us. .. rst-class:: build .. container:: - This means that a given request will always have the same result: + When we exectute ``initialize_learning_journal_db`` at the command line, we + will be running this function. - .. rst-class:: build + Let's try it out. - * Idempotent HTTP Methods - - * GET - * PUT - * DELETE - - * Non-Idempotent HTTP Methods - - * POST + We'll need to provide a configuration file name, let's use + ``development.ini``: - Again, *normative*. The developer is responsible for ensuring that it is true. + .. code-block:: bash + (ljenv)$ initialize_learning_journal_db development.ini + 2015-01-05 18:59:55,426 INFO [sqlalchemy.engine.base.Engine][MainThread] SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1 + ... + 2015-01-05 18:59:55,434 INFO [sqlalchemy.engine.base.Engine][MainThread] COMMIT + + The ``[loggers]`` configuration in our ``.ini`` file sends a stream of + INFO-level logging to sys.stdout as the console script runs. -.. nextslide:: HTTP Method Handling +.. nextslide:: A Bit More Cleanup -Let's keep things simple, our server will only respond to *GET* requests. +So what was the outcome of running that script? .. rst-class:: build .. container:: - We need to create a function that parses a request and determines if we can - respond to it: ``parse_request``. - - If the request method is not *GET*, our method should raise an error - - Remember, although a request is more than one line long, all we care about - here is the first line - + .. code-block:: bash -.. nextslide:: My Solution + (ljenv)$ ls + ... + learning_journal.sqlite + ... -.. code-block:: python + We've now created an sqlite database. - def parse_request(request): - first_line = request.split("\r\n", 1)[0] - method, uri, protocol = first_line.split() - if method != "GET": - raise NotImplementedError("We only accept GET") - print >>sys.stderr, 'request is okay' + You'll need to add ``*.sqlite`` to ``.gitignore`` so you don't + inadvertently add that file to your repository. + Once you've done so, commit the change to your repository -.. nextslide:: Update the Server +Interacting with SQLA Models +---------------------------- -We'll also need to update the server code. It should +It's pretty easy to play with your models from in an interpreter. .. rst-class:: build +.. container:: -* save the request as it comes in -* check the request using our new function -* send an OK response if things go well + But before we do so, let's make a nicer interpreter available for our + project + You've been using iPython in class, we can use it here too. -.. nextslide:: My Solution + Just install it with ``pip``: -.. code-block:: python + .. code-block:: bash + + (ljenv)$ pip install ipython - # ... - conn, addr = sock.accept() # blocking - try: - print >>log_buffer, 'connection - {0}{1}'.format(*addr) - request = "" - while True: - data = conn.recv(1024) - request += data - if len(data) < 1024 or not data: - break - - parse_request(request) - print >>log_buffer, 'sending response' - response = response_ok() - conn.sendall(response) - finally: - conn.close() - # ... + Once that finishes, you'll be able to use iPython as your interpreter for + this project. + And ``Pyramid`` provides a way to connect your interpreter to the + application code you are writing: -.. nextslide:: Run The Tests + The ``pshell`` command -Quit and restart your server now that you've updated the code:: +.. nextslide:: The ``pshell`` command - $ python http_server.py +Let's fire up ``pshell`` and explore for a moment to see what we have at our +disposal: .. rst-class:: build .. container:: - At this point, we should have seven tests passing: - .. code-block:: bash - $ python tests.py - Ran 10 tests in 0.002s + (ljenv)$ pshell development.ini + Python 3.5.0 (default, Sep 16 2015, 10:42:55) + Type "copyright", "credits" or "license" for more information. + + IPython 4.0.1 -- An enhanced Interactive Python. + ? -> Introduction and overview of IPython's features. + %quickref -> Quick reference. + help -> Python's own help system. + object? -> Details about 'object', use 'object??' for extra details. + + Environment: + app The WSGI application. + registry Active Pyramid registry. + request Active request object. + root Root of the default resource tree. + root_factory Default root factory used to create `root`. - FAILED (failures=1, errors=2) +.. nextslide:: +The ``environment`` created by ``pshell`` provides us with a few useful tools. -.. nextslide:: What About a Browser? +.. code-block:: bash -Quit and restart your server, now that you've updated the code. + app The WSGI application. + registry Active Pyramid registry. + request Active request object. + root Root of the default resource tree. + root_factory Default root factory used to create `root`. .. rst-class:: build -.. container:: - Reload your browser. It should work fine. +* The ``app`` is our new learning journal application +* The ``registry`` provides us with access to settings and other useful + information +* The ``request`` is an artificial HTTP request we can use if we need to + pretend we are listening to clients +* ... + +.. nextslide:: - We can use the ``simple_client.py`` script in our resources to test our - error condition. In a second terminal window run the script like so:: +Let's use this environment to build a database session and interact with our +data: - $ python simple_client.py "POST / HTTP/1.0\r\n\r\n" +.. code-block:: ipython - You'll have to quit the client pretty quickly with ``ctrl-c`` + In [1]: from sqlalchemy import engine_from_config + In [2]: engine = engine_from_config(registry.settings, 'sqlalchemy.') + In [3]: from sqlalchemy.orm import sessionmaker + In [4]: Session = sessionmaker(bind=engine) + In [5]: session = Session() + In [6]: from learning_journal.models import MyModel + In [7]: session.query(MyModel).all() + ... + 2015-12-21 18:06:05,179 INFO [sqlalchemy.engine.base.Engine][MainThread] SELECT models.id AS models_id, models.name AS models_name, models.value AS models_value + FROM models + 2015-12-21 18:06:05,179 INFO [sqlalchemy.engine.base.Engine][MainThread] () + Out[7]: [<learning_journal.models.MyModel at 0x105f30208>] +We've stolen a lot of this from the ``initializedb.py`` script -Step 3: Error Responses ------------------------ +.. nextslide:: Basic Interactions -Okay, so the outcome there was pretty ugly. The client went off the rails, and -our server has terminated as well. +Any interaction with the database requires a ``session``. .. rst-class:: build .. container:: - The HTTP protocol allows us to handle errors like this more gracefully. - - .. rst-class:: centered - - **Enter the Response Code** - - -.. nextslide:: HTTP Response Codes + This object represents the connection to the database. -``HTTP/1.1`` **200 OK** + All database queries are phrased as methods of the session. -All HTTP responses must include a **response code** indicating the outcome of -the request. - -.. rst-class:: build -.. container:: + .. container:: - .. rst-class:: build + .. code-block:: ipython - * 1xx (HTTP 1.1 only) - Informational message - * 2xx - Success of some kind - * 3xx - Redirection of some kind - * 4xx - Client Error of some kind - * 5xx - Server Error of some kind + In [8]: query = session.query(MyModel) + In [9]: type(query) + Out[9]: sqlalchemy.orm.query.Query - The text bit makes the code more human-readable + The ``query`` method of the session object returns a ``Query`` object + Arguments to the ``query`` method can be a *model* class or *columns* from + a model class. -.. nextslide:: Common Response Codes +.. nextslide:: Queries are Iterators -There are certain HTTP response codes you are likely to see (and use) most -often: +You can iterate over a query object. The result depends on the args you passed. .. rst-class:: build .. container:: - .. rst-class:: build + .. code-block:: ipython + + In [10]: q1 = session.query(MyModel) + In [11]: for row in q1: + ....: print(row) + ....: print(type(row)) + ....: + <learning_journal.models.MyModel object at 0x105f30208> + <class 'learning_journal.models.MyModel'> - * ``200 OK`` - Everything is good - * ``301 Moved Permanently`` - You should update your link - * ``304 Not Modified`` - You should load this from cache - * ``404 Not Found`` - You've asked for something that doesn't exist - * ``500 Internal Server Error`` - Something bad happened +.. nextslide:: Queries are Iterators - Do not be afraid to use other, less common codes in building good apps. - There are a lot of them for a reason. See +You can iterate over a query object. The result depends on the args you passed. - http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html + .. code-block:: ipython + In [12]: q2 = session.query(MyModel.name, MyModel.id, MyModel.value) + In [13]: for name, id, val in q2: + ....: print(name) + ....: print(type(name)) + ....: print(id) + ....: print(type(id)) + ....: print(val) + ....: print(type(val)) + ....: + one + <class 'str'> + 1 + <class 'int'> + 1 + <class 'int'> -.. nextslide:: Handling our Error +.. nextslide:: Queries have SQL -Luckily, there's an error code that is tailor-made for this situation. +You can view the SQL that your query will use: .. rst-class:: build .. container:: - The client has made a request using a method we do not support - - ``405 Method Not Allowed`` - - Let's add a new function that returns this error code. It should be called - ``response_method_not_allowed`` + .. code-block:: ipython - Remember, it must be a complete HTTP Response with the correct *code* + In [14]: str(q1) + Out[14]: 'SELECT models.id AS models_id, models.name AS models_name, models.value AS models_value \nFROM models' + In [15]: str(q2) + Out[15]: 'SELECT models.name AS models_name, models.id AS models_id, models.value AS models_value \nFROM models' -.. nextslide:: My Solution - -.. code-block:: python - - def response_method_not_allowed(): - """returns a 405 Method Not Allowed response""" - resp = [] - resp.append("HTTP/1.1 405 Method Not Allowed") - resp.append("") - return "\r\n".join(resp) + You can use this to check that the query the ORM is constructing looks like + you expect. + It can be helpful in debugging. -.. nextslide:: Server Updates +.. nextslide:: Methods of the Query Object -Again, we'll need to update the server to handle this error condition -correctly. It should +The methods of the ``Query`` object fall into two rough categories .. rst-class:: build +.. container:: -* catch the exception raised by the ``parse_request`` function -* create our new error response as a result -* if no exception is raised, then create the OK response -* return the generated response to the user - -.. nextslide:: My Solution - -.. code-block:: python + .. rst-class:: build - # ... - while True: - data = conn.recv(1024) - request += data - if len(data) < 1024 or not data: - break - - try: - parse_request(request) - except NotImplementedError: - response = response_method_not_allowed() - else: - response = response_ok() - - print >>sys.stderr, 'sending response' - conn.sendall(response) - # ... + 1. Methods that return a new ``Query`` object + 2. Methods that return *scalar* values or *model* instances + Let's start by looking quickly at a few methods from the second category -.. nextslide:: Run The Tests +.. nextslide:: ``query.get()`` -Start your server (or restart it if by some miracle it's still going). +A good example of this category of methods is ``get``, which returns one +instance only. .. rst-class:: build .. container:: - Then run the tests again:: + It takes a primary key as an argument: - $ python tests.py - [...] - Ran 10 tests in 0.002s + .. code-block:: ipython - OK + In [16]: session.query(MyModel).get(1) + Out[16]: <learning_journal.models.MyModel at 0x105f30208> + In [17]: session.query(MyModel).get(10) + In [18]: - Wahoo! All our tests are passing. That means we are done writing code for - now. + If no item with that primary key is present, then the method returns + ``None`` -Step 4: Serving Resources -------------------------- +.. nextslide:: ``query.all()`` -We've got a very simple server that accepts a request and sends a response. -But what happens if we make a different request? +Another example is one we've already seen. .. rst-class:: build .. container:: - .. container:: - - In your web browser, enter the following URL:: + ``query.all()`` returns a list of all rows returned by the database: - http://localhost:10000/page + .. code-block:: ipython - .. container:: + In [18]: q1.all() + Out[18]: [<learning_journal.models.MyModel at 0x105f30208>] + + In [19]: type(q1.all()) + Out[19]: list - What happened? What happens if you use this URL:: + ``query.count()`` returns the number of rows that would have been returned + by the query: - http://localhost:10000/section/page? + .. code-block:: ipython + In [20]: q1.count() + Out[20]: 1 -.. nextslide:: Determining a Resource +.. nextslide:: Creating New Objects -We expect different urls to result in different responses. +Before getting into the other category, let's learn how to create new objects. .. rst-class:: build .. container:: - Each separate *path* provided should map to a *resource* - - But this isn't happening with our server, for obvious reasons. - - It brings us back to the second element of that first line of an HTTP - request. - - .. rst-class:: centered - - **The Return of the URI** - + .. container:: -.. nextslide:: HTTP Requests: URI + We can create new instances of our *model* just like normal Python + objects: -``GET`` **/path/to/index.html** ``HTTP/1.1`` + .. code-block:: ipython -.. rst-class:: build + In [21]: new_model = MyModel(name='fred', value=3) + In [22]: new_model + Out[22]: <learning_journal.models.MyModel at 0x105f4af28> -* Every HTTP request must include a **URI** used to determine the **resource** to - be returned - -* URI?? - http://stackoverflow.com/questions/176264/whats-the-difference-between-a-uri-and-a-url/1984225#1984225 + .. container:: -* Resource? Files (html, img, .js, .css), but also: + In this state, the instance is *ephemeral*, our ``session`` knows + nothing about it: - .. rst-class:: build + .. code-block:: pycon - * Dynamic scripts - * Raw data - * API endpoints + In [23]: session.new + Out[23]: IdentitySet([]) -.. nextslide:: Parsing a Request +.. nextslide:: Adding Objects to the Session -Our ``parse_request`` method actually already finds the ``uri`` in the first -line of a request +For the database to know about our new object, we must ``add`` it to the +session: .. rst-class:: build .. container:: - All we need to do is update the method so that it *returns* that uri + .. code-block:: ipython - Then we can use it. + In [24]: session.add(new_model) + In [25]: session.new + Out[25]: IdentitySet([<learning_journal.models.MyModel object at 0x105f4af28>]) -.. nextslide:: My Solution + We can even bulk-add new objects: -.. code-block:: python + .. code-block:: ipython - def parse_request(request): - first_line = request.split("\r\n", 1)[0] - method, uri, protocol = first_line.split() - if method != "GET": - raise NotImplementedError("We only accept GET") - print >>sys.stderr, 'request is okay' - # add the following line: - return uri + In [26]: new = [] + In [27]: for name, val in [('bob', 34), ('tom', 13)]: + ....: new.append(MyModel(name=name, value=val)) + ....: + In [28]: session.add_all(new) + In [29]: session.new + Out[29]: IdentitySet([<learning_journal.models.MyModel object at 0x105f4af28>, + <learning_journal.models.MyModel object at 0x105f4a4a8>, + <learning_journal.models.MyModel object at 0x105f30550>]) -.. nextslide:: Pass It Along +.. nextslide:: Committing Changes -Now we can update our server code so that it uses the return value of -``parse_request``. +Up until now, the changes you've made are not permanent. .. rst-class:: build .. container:: - That's a pretty simple change: - - .. code-block:: python - - try: - uri = parse_request(request) - except NotImplementedError: - response = response_method_not_allowed() - else: - content, type = resolve_uri(uri) # change this line - # and add this block - try: - response = response_ok(content, type) - except NameError: - response = response_not_found() - -Homework --------- + In order for these new objects to be saved to the database, the session + must be ``committed``: -You may have noticed that we just added a call to functions that don't exist + .. code-block:: ipython -.. rst-class:: build -.. container:: + In [30]: other_session = Session() + In [31]: other_session.query(MyModel).count() + Out[31]: 1 + In [32]: session.commit() + In [33]: other_session.query(MyModel).count() + Out[33]: 4 - This is a common method for building working software, called - ``pseudocode`` + When you are using a ``scoped_session`` in Pyramid, this action is + automatically handled for you. - It's a program that shows you what you want to do, but won't actually run. + The session that is bound to a particular HTTP request is committed when a + response is sent back. - For your homework this week you will create these functions, completing the - HTTP server. + (don't worry if this seems confusing, more to come next week) - Your starting point will be what we've made here in class. +.. nextslide:: Altering Objects - A working copy of which is in ``resources/session05`` as - ``http_server_at_home.py`` +You can edit objects that are already part of a session, or that are fetched by +a query. +.. rst-class:: build +.. container:: -One Step At A Time ------------------- + Simply change the values of a persisted attribute, the session will know + it's been updated: -Take the following steps one at a time. Run the tests in -``assignments/session02`` between to ensure that you are getting it right. + .. code-block:: ipython + + In [34]: new_model + Out[34]: <learning_journal.models.MyModel at 0x105f4af28> + In [35]: new_model.name + Out[35]: 'fred' + In [36]: new_model.name = 'larry' + In [37]: session.dirty + Out[37]: IdentitySet([<learning_journal.models.MyModel object at 0x105f4af28>]) -.. rst-class:: build + Commit the session to persist the changes: -* Update ``parse_request`` to return the URI it parses from the request. + .. code-block:: ipython + + In [38]: session.commit() + In [39]: [model.name for model in other_session.query(MyModel)] + Out[39]: ['one', 'larry', 'bob', 'tom'] -* Write a new function ``resolve_uri`` that handles looking up resources on - disk using the URI. +.. nextslide:: Methods Returning Queries -* Write a new function ``response_not_found`` that returns a 404 response if the - resource does not exist. +Returning to query methods, a good example of the second type is the ``filter`` +method. -* Update ``response_ok`` so that it uses the values returned by ``resolve_uri`` - by the URI. +.. rst-class:: build +.. container:: -* You'll plug those values into the response you generate in the way required - by the protocol + This method allows you to reduce the number of results, based on criteria: + .. code-block:: ipython + + In [40]: [(o.name, o.value) for o in session.query(MyModel).filter(MyModel.value < 20)] + Out[40]: [('one', 1), ('larry', 3), ('tom', 13)] -HTTP Headers ------------- +.. nextslide:: ``order_by`` -Along the way, you'll discover that simply returning as the body in -response_ok is insufficient. Different *types* of content need to be -identified to your browser +Another typical method in this category is ``order_by``: .. rst-class:: build .. container:: - We can fix this by passing information about exactly what we are returning - as part of the response. - - HTTP provides for this type of thing with the generic idea of *Headers* + .. code-block:: ipython + + In [41]: [o.value for o in session.query(MyModel).order_by(MyModel.value)] + Out[41]: [1, 3, 13, 34] + In [42]: [o.name for o in session.query(MyModel).order_by(MyModel.name)] + Out[42]: ['bob', 'larry', 'one', 'tom'] -HTTP Headers ------------- +.. nextslide:: Method Chaining -Both requests and responses can contain **headers** of the form ``Name: Value`` +Since methods in this category return ``Query`` objects, they can be safely +*chained* to build more complex queries: .. rst-class:: build .. container:: - .. rst-class:: build - - * HTTP 1.0 has 16 valid headers, 1.1 has 46 - * Any number of spaces or tabs may separate the *name* from the *value* - * If a header line starts with spaces or tabs, it is considered part of the - value for the previous header - * Header *names* are **not** case-sensitive, but *values* may be + .. code-block:: ipython - read more about HTTP headers: http://www.cs.tut.fi/~jkorpela/http.html + In [43]: q1 = session.query(MyModel).filter(MyModel.value < 20) + In [44]: q1 = q1.order_by(MyModel.name) + In [45]: [(o.name, o.value) for o in q1] + Out[45]: [('larry', 3), ('one', 1), ('tom', 13)] + Note that you can do this inline as well + (``s.query(Model).filter().order_by()``) -Content-Type Header -------------------- + Also note that when using chained queries like this, no query is actually + sent to the database until you require a result. -A very common header used in HTTP responses is ``Content-Type``. It tells the -client what to expect. -.. rst-class:: build +Cleaning Up After Ourselves +--------------------------- -* uses **mime-type** (Multi-purpose Internet Mail Extensions) -* foo.jpeg - ``Content-Type: image/jpeg`` -* foo.png - ``Content-Type: image/png`` -* bar.txt - ``Content-Type: text/plain`` -* baz.html - ``Content-Type: text/html`` +When you are experimenting with a new system, you often create data that is +messy or incomplete. .. rst-class:: build +.. container:: -There are *many* mime-type identifiers: -http://www.webmaster-toolkit.com/mime-types.shtml - + It's good to remember that none of the information we've persisted to our + database is vital to us. -Mapping Mime-types ------------------- + For homework this week we'll be making new models, and the data we have in + our current database will only get in the way. -By mapping a given file to a mime-type, we can write a header. + Until you have real production data it is always safe simply to delete the + database and start over: -.. rst-class:: build + .. code-block:: bash + + $ rm learning_journal.sqlite -The standard lib module ``mimetypes`` does just this. + You can always re-create it by executing ``initialize_learning_journal_db`` -.. container:: incremental +Homework +======== - We can guess the mime-type of a file based on the filename or map a file - extension to a type: +.. rst-class:: left - .. code-block:: python +Okay, that's enough for the moment. - >>> import mimetypes - >>> mimetypes.guess_type('file.txt') - ('text/plain', None) - >>> mimetypes.types_map['.txt'] - 'text/plain' +.. rst-class:: build left +.. container:: + You've learned quite a bit about how *models* work in SQLAlchemy -Resolving a URI ---------------- + It's time to put that knowledge to good use. -Your ``resolve_uri`` function will need to accomplish the following tasks: + For the first part of your assignment this week you will begin to define + the data model for our learning journal application. -.. rst-class:: build + I'll provide a specification, you define the model required to do the job. -* It should take a URI as the sole argument + I'll also ask you to define a few methods to complete the first part of our + API. -* It should map the pathname represented by the URI to a filesystem location. +The Model +--------- -* It should have a 'home directory', and look only in that location. +Our model will be called an ``Entry``. Here's what you need to know: -* If the URI is a directory, it should return a plain-text listing and the - mimetype ``text/plain``. +* It should be stored in a database table called ``entries`` +* It should have a primary key field called ``id`` +* It should have a ``title`` field which accepts unicode text up to 255 characters in length +* The ``title`` should be unique and it should be impossible to save an + ``entry`` without a ``title``. +* It should have a ``body`` field which accepts unicode text of any length + (including none) +* It should have a ``created`` field which stores the date and time the object + was created. +* It should have an ``edited`` field which stores the date and time the object + was last edited. -* If the URI is a file, it should return the contents of that file and its - correct mimetype. +.. nextslide:: -* If the URI does not map to a real location, it should raise an exception - that the server can catch to return a 404 response. +* Both the ``created`` and ``edited`` field should default to ``now`` if not + provided when a new instance is constructed. +* The ``entry`` class should support a classmethod ``all`` that returns all the + entries in the database, ordered so that the most recent entry is first. +* The ``entry`` class should support a classmethod ``by_id`` that returns a + single entry, given an ``id``. +Remember that in order to have your new model table created, you will have to +re-run the ``initialize_learning_journal_db`` script after creating your model. -Use Your Tests --------------- +.. nextslide:: Words of Advice -One of the benefits of test-driven development is that the tests that are -failing should tell you what code you need to write. +Use the documentation linked in this presentation to assist you. SQLAlchemy +has fantastic documentation, but it can be a bit overwhelming. Everything you +require for this assignment is on one or more of the pages linked above. -.. rst-class:: build +As you define this new model for our application, make frequent commits to your +github repository. Remember to write meaningful commit messages. -As you work your way through the steps outlined above, look at your tests. -Write code that makes them pass. +Don't be afraid to start up a Python interpreter and play with your model. Try +things out. Learn how this all works by making mistakes. Remember the +``pshell`` command and how we set up a session once the shell is running. -.. rst-class:: build +Errors at the SQL level can sometimes leave your session unusable. To restore +it, use the ``session.rollback()`` method. You'll lose uncommitted changes, +but you'll gain a session that can be used again. -If all the tests in ``assignments/session02/tests.py`` are passing, you've -completed the assignment. +.. nextslide:: Submitting Your Work +I want to be able to review your code (and you want to be able to share it). -Submitting Your Homework ------------------------- +To submit this assignment, you'll need to add this learning_journal repository +to GitHub. -To submit your homework: +On the GitHub website you can create a new repository. Set it up to be +completely empty. Name it ``learning_journal`` and give it any description you +like. -* Do your work in the ``assignments/session02`` directory of **your fork** of - the class respository +When you've created an empty repository in GitHub, you should see a set of +directions for connecting it to a repository that you've already built. Follow +those instructions to connect your emtpy GitHub repository as the ``origin`` +remote to your ``learning_journal`` repository on your machine. -* When you have all tests passing, push your work to **your fork** in github. +Finally, push your ``master`` branch to your new ``origin`` remote on GitHub. -* Using the github web interface, send me a pull request. +When you are done, send me an email with the URL for your new repository. -.. rst-class:: build +.. nextslide:: -I will review your work when I receive your pull requests, make comments on it -there, and then close the pull request. +**Our work next week will assume that you have completed this assignment** +Do not delay working on this until the last moment. -A Few Steps Further -------------------- +Do not skip this assignment. -If you are able to finish the above in less than 4-6 hours, consider taking on -one or more of the following challenges: +Do ask questions frequently via email (use the `class google group`_). -.. rst-class:: build +See you next week! -* Format directory listings as HTML, so you can link to files. -* Add a GMT ``Date:`` header in the proper format (RFC-1123) to responses. - *hint: see email.utils.formatdate in the python standard library* -* Add a ``Content-Length:`` header for ``OK`` responses that provides a - correct value. -* Protect your server against errors by providing, and using, a function that - returns a ``500 Internal Server Error`` response. -* Instead of returning the python script in ``webroot`` as plain text, execute - the file and return the results as HTML. +.. _class google group: https://groups.google.com/forum/#!forum/programming-in-python diff --git a/html/_sources/presentations/session06.txt b/html/_sources/presentations/session06.txt index f5e64cff..976003bb 100644 --- a/html/_sources/presentations/session06.txt +++ b/html/_sources/presentations/session06.txt @@ -1,1253 +1,1468 @@ +.. slideconf:: + :autoslides: True + ********** Session 06 ********** -.. figure:: /_static/gateway.jpg +.. image:: /_static/lj_entry.png + :width: 65% :align: center - :width: 50% - - The Wandering Angel http://www.flickr.com/photos/wandering_angel/1467802750/ - CC-BY -CGI, WSGI and Living Online -=========================== +Interacting with Data +===================== -Wherein we discover the gateways to dynamic processes on a server. +**Wherein we learn to display our data, and to create and edit it too!** But First --------- -.. rst-class:: large centered - -Homework Review and Questions - - -Previously ----------- +Last week we discussed the **model** part of the *MVC* application design +pattern. .. rst-class:: build +.. container:: -* You've learned about passing messages back and forth with sockets -* You've created a simple HTTP server using sockets -* You may even have made your server *dynamic* by returning the output of a - python script. + We set up a project using the `Pyramid`_ web framework and the `SQLAlchemy`_ + library for persisting our data to a database. -.. rst-class:: build -.. container:: + We looked at how to define a simple model by investigating the demo model + created on our behalf. - What if you want to pass information to that script? + And we went over, briefly, the way we can interact with this model at the + command line to make sure we've got it right. - How can you give the script access to information about the HTTP request - itself? + Finally, we defined what attributes a learning journal entry would have, + and a pair of methods we think we will need to make the model complete. +.. _Pyramid: http://www.pylonsproject.org/projects/pyramid/about +.. _SQLAlchemy: http://docs.sqlalchemy.org/en/rel_0_9/ -Stepping Away: The Environment ------------------------------- +Our Data Model +-------------- -A computer has an *environment*: +Over the last week, your assignment was to create the new model. .. rst-class:: build .. container:: - in \*nix, you can see this in a shell: + Did you get that done? - .. code-block:: bash + If not, what stopped you? - $ printenv - TERM_PROGRAM=iTerm.app - ... + Let's take a few minutes here to answer questions about this task so you + are more comfortable. - or in Windows at the command prompt: + Questions? - .. code-block:: posh +.. nextslide:: A Complete Example - C:\> set - ALLUSERSPROFILE=C:\ProgramData - ... +I've added a working ``models.py`` file to our `class repository`_ in the +``resources/session06/`` folder. +Let's review how it works. -.. nextslide:: Setting The Environment +.. nextslide:: Demo Interaction -This can be manipulated: +I've also made a few small changes to make the ``pshell`` command a bit more +helpful. .. rst-class:: build .. container:: - In a ``bash`` shell we can do this: + In ``learning_journal/__init__.py`` I added the following function: - .. code-block:: bash - - $ export VARIABLE='some value' - $ echo $VARIABLE - some value + .. code-block:: python - or at a Windows command prompt: + def create_session(settings): + from sqlalchemy.orm import sessionmaker + engine = engine_from_config(settings, 'sqlalchemy.') + Session = sessionmaker(bind=engine) + return Session() - .. code-block:: posh + Then, in ``development.ini`` I added the following configuration: - C:\Users\Administrator\> set VARIABLE='some value' - C:\Users\Administrator\> echo %VARIABLE% - 'some value' + .. code-block:: ini + [pshell] + create_session = learning_journal.create_session + entry = learning_journal.models.Entry -.. nextslide:: Viewing the Results +.. nextslide:: Using the new ``pshell`` -These new values are now part of the *environment* +Here's a demo interaction using ``pshell`` with these new features: .. rst-class:: build .. container:: - \*nix: + First ``cd`` to your project code, fire up your project virtualenv and + start python: .. code-block:: bash - $ printenv - TERM_PROGRAM=iTerm.app + $ cd projects/learning-journal/learning_journal + $ source ../ljenv/bin/activate + (ljenv)$ pshell development.ini + Python 3.5.0 (default, Sep 16 2015, 10:42:55) ... - VARIABLE=some value + Environment: + app The WSGI application. + ... + Custom Variables: + create_session learning_journal.create_session + entry learning_journal.models.Entry + + In [1]: session = create_session(registry.settings) - Windows: + [demo] - .. code-block:: posh +The MVC Controller +================== - C:\> set - ALLUSERSPROFILE=C:\ProgramData - ... - VARIABLE='some value' +.. rst-class:: left +.. container:: -.. nextslide:: Environment in Python + Let's go back to thinking for a bit about the *Model-View-Controller* + pattern. -We can see this *environment* in Python, too:: + .. figure:: http://upload.wikimedia.org/wikipedia/commons/4/40/MVC_passive_view.png + :align: center + :width: 25% - $ python + By Alan Evangelista (Own work) [CC0], via Wikimedia Commons -.. code-block:: pycon + .. rst-class:: build + .. container:: - >>> import os - >>> print os.environ['VARIABLE'] - some_value - >>> print os.environ.keys() - ['VERSIONER_PYTHON_PREFER_32_BIT', 'VARIABLE', - 'LOGNAME', 'USER', 'PATH', ...] + We talked last week (and today) about the *model* + Today, we'll dig into *controllers* and *views* -.. nextslide:: Altering the Environment + or as we will know them in Pyramid: *views* and *renderers* -You can alter os environment values while in Python: -.. code-block:: pycon +HTTP Request/Response +--------------------- - >>> os.environ['VARIABLE'] = 'new_value' - >>> print os.environ['VARIABLE'] - new_value +Internet software is driven by the HTTP Request/Response cycle. .. rst-class:: build .. container:: - But that doesn't change the original value, *outside* Python: + A *client* (perhaps a user with a web browser) makes a **request** - .. code-block:: bash + A *server* receives and handles that request and returns a **response** + + The *client* receives the response and views it, perhaps making a new + **request** - >>> ^D + And around and around it goes. - $ echo this is the value: $VARIABLE - this is the value: some_value - <OR> - C:\> \Users\Administrator\> echo %VARIABLE% - 'some value' +.. nextslide:: URLs -.. nextslide:: Lessons Learned +An HTTP request arrives at a server through the magic of a **URL** + +.. code-block:: bash + + http://uwpce-pythoncert.github.io/training.python_web/html/index.html .. rst-class:: build .. container:: + Let's break that up into its constituent parts: + .. rst-class:: build - * Subprocesses inherit their environment from their Parent - * Parents do not see changes to environment in subprocesses - * In Python, you can actually set the environment for a subprocess explicitly + \http://: + This part is the *protocol*, it determines how the request will be sent - .. code-block:: python + uwpce-pythoncert.github.io: + This is a *domain name*. It's the human-facing address for a server + somewhere. - subprocess.Popen(args, bufsize=0, executable=None, - stdin=None, stdout=None, stderr=None, - preexec_fn=None, close_fds=False, - shell=False, cwd=None, env=None, # <------- - universal_newlines=False, startupinfo=None, - creationflags=0) + /training.python_web/html/index.html: + This part is the *path*. It serves as a locator for a resource *on the + server* +.. nextslide:: Paths -CGI - The Web Environment -========================= +In a static website (like our documentation) the *path* identifies a **physical +location** in the server's filesystem. -.. rst-class:: large centered +.. rst-class:: build +.. container:: -CGI is little more than a set of standard environmental variables + Some directory on the server is the *home* for the web process, and the + *path* is looked up there. + Whatever resource (a file, an image, whatever) is located there is returned + to the user as a response. -What is CGI ------------ + If the path leads to a location that doesn't exist, the server responds + with a **404 Not Found** error. -First discussed in 1993, formalized in 1997, the current version (1.1) has -been in place since 2004. + In the golden days of yore, this was the only way content was served via + HTTP. -From the preamble: +.. nextslide:: Paths in an MVC System - This memo provides information for the Internet community. It does not - specify an Internet standard of any kind. +In todays world we have dynamic systems, server-side web frameworks like +Pyramid. - -- RFC 3875 - CGI Version 1.1: http://tools.ietf.org/html/rfc3875 +.. rst-class:: build +.. container:: + The requests that you send to a server are handled by a software process + that assembles a response instead of looking up a physical location. -.. nextslide:: Meta-Variables + But we still have URLs, with *protocol*, *domain* and *path*. -:: + What is the role for a path in a process that doesn't refer to a physical + file system? - 4. The CGI Request . . . . . . . . . . . . . . . . . . . . . . . 10 - 4.1. Request Meta-Variables . . . . . . . . . . . . . . . . . 10 - 4.1.1. AUTH_TYPE. . . . . . . . . . . . . . . . . . . . 11 - 4.1.2. CONTENT_LENGTH . . . . . . . . . . . . . . . . . 12 - 4.1.3. CONTENT_TYPE . . . . . . . . . . . . . . . . . . 12 - 4.1.4. GATEWAY_INTERFACE. . . . . . . . . . . . . . . . 13 - 4.1.5. PATH_INFO. . . . . . . . . . . . . . . . . . . . 13 - 4.1.6. PATH_TRANSLATED. . . . . . . . . . . . . . . . . 14 - 4.1.7. QUERY_STRING . . . . . . . . . . . . . . . . . . 15 - 4.1.8. REMOTE_ADDR. . . . . . . . . . . . . . . . . . . 15 - 4.1.9. REMOTE_HOST. . . . . . . . . . . . . . . . . . . 16 - 4.1.10. REMOTE_IDENT . . . . . . . . . . . . . . . . . . 16 - 4.1.11. REMOTE_USER. . . . . . . . . . . . . . . . . . . 16 - 4.1.12. REQUEST_METHOD . . . . . . . . . . . . . . . . . 17 - 4.1.13. SCRIPT_NAME. . . . . . . . . . . . . . . . . . . 17 - 4.1.14. SERVER_NAME. . . . . . . . . . . . . . . . . . . 17 - 4.1.15. SERVER_PORT. . . . . . . . . . . . . . . . . . . 18 - 4.1.16. SERVER_PROTOCOL. . . . . . . . . . . . . . . . . 18 - 4.1.17. SERVER_SOFTWARE. . . . . . . . . . . . . . . . . 19 + Most web frameworks now call the *path* a **route**. + They provide a way of matching *routes* to the code that will be run to + handle requests. -Running CGI ------------ +Routes in Pyramid +----------------- -You have a couple of options: +In Pyramid, routes are handled as *configuration* and are set up in the *main* +function in ``__init__.py``: + +.. code-block:: python + + # learning_journal/__init__.py + def main(global_config, **settings): + # ... + config.add_route('home', '/') + # ... .. rst-class:: build .. container:: - .. rst-class:: build + Our code template created a sample route for us, using the ``add_route`` + method of the ``Configurator`` class. - * Python Standard Library CGIHTTPServer - * Apache - * IIS (on Windows) - * Some other HTTP server that implements CGI (lighttpd, ...?) + The ``add_route`` method has two required arguments: a *name* and a + *pattern* - Let's keep it simple by using the Python module + In our sample route, the *name* is ``'home'`` + In our sample route, the *pattern* is ``'/'`` -.. nextslide:: Preparations +.. nextslide:: -In the class resources for this session, you'll find a directory named ``cgi``. +When a request comes in to a Pyramid application, the framework looks at all +the *routes* that have been configured. .. rst-class:: build .. container:: - Make a copy of that folder in your class working directory. - - Windows Users, you may have to edit the first line of - ``cgi/cgi-bin/cgi_1.py`` to point to your python executable. - - .. rst-class:: build + One by one, in order, it tries to match the *path* of the incoming request + against the *pattern* of the route. - * Open *two* terminal windows in this ``cgi`` directory - * In the first terminal, run ``python -m CGIHTTPServer`` - * Open a web browser and load ``http://localhost:8000/`` - * Click on *CGI Test 1* + As soon as a *pattern* matches the *path* from the incoming request, that + route is used and no further matching is performed. + If no route is found that matches, then the request will automatically get + a **404 Not Found** error response. -.. nextslide:: Did that work? + In our sample app, we have one sample *route* named ``'home'``, with a + pattern of ``/``. -.. rst-class:: build + This means that any request that comes in for ``/`` will be matched to this + route, and any other request will be **404**. -* If nothing at all happens, check your terminal window -* Look for this: ``OSError: [Errno 13] Permission denied`` -* If you see something like that, check permissions for ``cgi-bin`` *and* - ``cgi_1.py`` -* The file must be executable, the ``cgi-bin`` directory needs to be readable - *and* executable. +.. nextslide:: Routes as API +In a very real sense, the *routes* defined in an application *are* the public +API. .. rst-class:: build .. container:: - Remember that you can use the bash ``chmod`` command to change permissions - in \*nix: ``chmod a+x cgi-bin/cgi_1.py`` + Any route that is present represents something the user can do. + + Any route that is not present is something the user cannot do. - Windows users, use the 'properties' context menu to get to permissions, - just grant 'full' + You can use the proper definition of routes to help conceptualize what your + app will do. + What routes might we want for a learning journal application? -.. nextslide:: Break It + What will our application do? -Problems with permissions can lead to failure. So can scripting errors +.. nextslide:: Defining our Routes + +Let's add routes for our application. .. rst-class:: build .. container:: - .. rst-class:: build + Open ``learning_journal/__init__.py``. - * Open ``cgi/cgi-bin/cgi_1.py`` in an editor - * Before where it says ``cgi.test()``, add a single line: + For our list page, the existing ``'home'`` route will do fine, leave it. + + Add the following two routes: .. code-block:: python - 1 / 0 + config.add_route('home', '/') # already there + config.add_route('detail', '/journal/{id:\d+}') + config.add_route('action', '/journal/{action}') + + The ``'detail'`` route will serve a single journal entry, identified by an + ``id``. - Reload your browser, what happens now? + The ``action`` route will serve ``create`` and ``edit`` views, depending on + the ``action`` specified. + In both cases, we want to capture a portion of the matched path to use + information it provides. -.. nextslide:: Errors in CGI +.. nextslide:: Matching an ID -CGI is famously difficult to debug. There are reasons for this: +In a pattern, you can capture a ``path segment`` *replacement +marker*, a valid Python symbol surrounded by curly braces: .. rst-class:: build +.. container:: -* CGI is designed to provide access to runnable processes to *the internet* -* The internet is a wretched hive of scum and villainy -* Revealing error conditions can expose data that could be exploited + :: + /home/{foo}/ -.. nextslide:: Viewing Errors in Python CGI + If you want to match a particular pattern, like digits only, add a + *regular expression*:: -Back in your editor, add the following lines, just below ``import cgi``: + /journal/{id:\d+} -.. rst-class:: build -.. container:: + Matched path segments are captured in a ``matchdict``:: - .. code-block:: python + # pattern # actual url # matchdict + /journal/{id:\d+} /journal/27 {'id': '27'} - import cgitb - cgitb.enable() + The ``matchdict`` is made available as an attribute of the *request object* - Now, reload again. + (more on that soon) -.. nextslide:: cgitb Output -.. figure:: /_static/cgitb_output.png - :align: center - :width: 100% +.. nextslide:: Connecting Routes to Views + +In Pyramid, a *route* is connected by configuration to a *view*. +.. rst-class:: build +.. container:: -.. nextslide:: Repair the Error + In our app, a sample view has been created for us, in ``views.py``: -Let's fix the error from our traceback. Edit your ``cgi_1.py`` file to match: + .. code-block:: python -.. code-block:: python + @view_config(route_name='home', renderer='templates/mytemplate.pt') + def my_view(request): + # ... - #!/usr/bin/env python - import cgi - import cgitb + The order in which *routes* are configured *is important*, so that must be + done in ``__init__.py``. - cgitb.enable() + The order in which views are connected to routes *is not important*, so the + *declarative* ``@view_config`` decorator can be used. - cgi.test() + When ``config.scan`` is called, all files in our application are searched + for such *declarative configuration* and it is added. + +The Pyramid View +---------------- + +Let's imagine that a *request* has come to our application for the path +``'/'``. .. rst-class:: build .. container:: - Notice the first line of that script: ``#!/usr/bin/python``. + The framework made a match of that path to a *route* with the pattern ``'/'``. - This is called a *shebang* (short for hash-bang) + Configuration connected that route to a *view* in our application. - It tells the system what executable program to use when running the script. + Now, the view that was connected will be *called*, which brings us to the + nature of *views* + .. rst-class:: centered -CGI Process Execution ---------------------- + --A Pyramid view is a *callable* that takes *request* as an argument-- -Servers like ``CGIHTTPServer`` run CGI scripts as a system user called -``nobody``. + Remember what a *callable* is? + +.. nextslide:: What the View Does + +So, a *view* is a callable that takes the *request* as an argument. .. rst-class:: build .. container:: - This is just like you calling:: + It can then use information from that request to build appropriate data, + perhaps using the application's *models*. - $ ./cgi_bin/cgi_1.py + Then, it returns the data it assembled, passing it on to a `renderer`_. - In fact try that now in your second terminal (use the real path), what do - you get? + Which *renderer* to use is determined, again, by configuration: - Windows folks, you may need ``C:\>python cgi-bin/cgi_1.py`` + .. code-block:: python - Notice what is missing? + @view_config(route_name='home', renderer='templates/mytemplate.pt') + def my_view(request): + # ... + More about this in a moment. -.. nextslide:: + The *view* stands at the intersection of *input data*, the application + *model* and *renderers* that offer rendering of the results. -There are a couple of important facts about CGI that derive from this: + It is the *Controller* in our MVC application. -.. rst-class:: build +.. _renderer: http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/renderers.html + + +.. nextslide:: Adding Stub Views -* The script **must** include a *shebang* so that the system knows how to run - it. -* The script **must** be executable. -* The *executable* named in the *shebang* will be called as the *nobody* user. -* This is a security feature to prevent CGI scripts from running as a user - with any privileges. -* This means that the *executable* from the script *shebang* must be one that - *anyone* can run. +Add temporary views to our application in ``views.py`` (and comment out the +sample view): + +.. code-block:: python + @view_config(route_name='home', renderer='string') + def index_page(request): + return 'list page' -.. nextslide:: The CGI Environment + @view_config(route_name='detail', renderer='string') + def view(request): + return 'detail page' -CGI is largely a set of agreed-upon environmental variables. + @view_config(route_name='action', match_param='action=create', renderer='string') + def create(request): + return 'create page' + + @view_config(route_name='action', match_param='action=edit', renderer='string') + def update(request): + return 'edit page' + +.. nextslide:: Testing Our Views + +Now we can verify that our view configuration has worked. .. rst-class:: build .. container:: - We've seen how environmental variables are found in python in - ``os.environ`` + Make sure your virtualenv is properly activated, and start the web server: - We've also seen that at least some of the variables in CGI are **not** part - of the system environment. + .. code-block:: bash - Where do they come from? + (ljenv)$ pserve development.ini + Starting server in PID 84467. + serving on http://0.0.0.0:6543 + Then try viewing some of the expected application urls: -.. nextslide:: CGI Servers + .. rst-class:: build + + * http://localhost:6543/ + * http://localhost:6543/journal/1 + * http://localhost:6543/journal/create + * http://localhost:6543/journal/edit + + What happens if you visit a URL that *isn't* in our configuration? + +.. nextslide:: Interacting With the Model -Let's find 'em. In a terminal fire up python: +Now that we've got temporary views that work, we can fix them to get +information from our database .. rst-class:: build .. container:: - .. code-block:: pycon + We'll begin with the list view. - >>> import CGIHTTPServer - >>> CGIHTTPServer.__file__ - '/big/giant/path/to/lib/python2.6/CGIHTTPServer.py' - - Copy this path and open the file it points to in your text editor + We need some code that will fetch all the journal entries we've written, in + reverse order, and hand that collection back for rendering. + .. code-block:: python -.. nextslide:: Environmental Set Up + from .models import ( + DBSession, + MyModel, + Entry, # <- Add this import + ) -From CGIHTTPServer.py, in the CGIHTTPServer.run_cgi method: + # and update this view function + def index_page(request): + entries = Entry.all() + return {'entries': entries} -.. code-block:: python +.. nextslide:: Using the ``matchdict`` - # Reference: http://hoohoo.ncsa.uiuc.edu/cgi/env.html - # XXX Much of the following could be prepared ahead of time! - env = {} - env['SERVER_SOFTWARE'] = self.version_string() - env['SERVER_NAME'] = self.server.server_name - env['GATEWAY_INTERFACE'] = 'CGI/1.1' - env['SERVER_PROTOCOL'] = self.protocol_version - env['SERVER_PORT'] = str(self.server.server_port) - env['REQUEST_METHOD'] = self.command - ... - ua = self.headers.getheader('user-agent') - if ua: - env['HTTP_USER_AGENT'] = ua - ... - os.environ.update(env) - ... - - -.. nextslide:: CGI Scripts - -And that's it, the big secret. The server takes care of setting up the -environment so it has what is needed. +Next, we want to write the view for a single entry. .. rst-class:: build .. container:: - Now, in reverse. How does the information that a script creates end up in - your browser? + We'll need to use the ``id`` value our route captures into the + ``matchdict``. - A CGI Script must print its results to stdout. + Remember that the ``matchdict`` is an attribute of the request. - Use the same method as above to import and open the source file for the - ``cgi`` module. Note what ``test`` does for an example of this. + We'll get the ``id`` from there, and use it to get the correct entry. + .. code-block:: python -.. nextslide:: Recap + # add this import at the top + from pyramid.httpexceptions import HTTPNotFound -What the Server Does: + # and update this view function: + def view(request): + this_id = request.matchdict.get('id', -1) + entry = Entry.by_id(this_id) + if not entry: + return HTTPNotFound() + return {'entry': entry} + +.. nextslide:: Testing Our Views + +We can now verify that these views work correctly. .. rst-class:: build +.. container:: + + Make sure your virtualenv is properly activated, and start the web server: -* parses the request -* sets up the environment, including HTTP and SERVER variables -* figures out if the URI points to a CGI script and runs it -* builds an appropriate HTTP Response first line ('HTTP/1.1 200 OK\\r\\n') -* appends what comes from the script on stdout and sends that back + .. code-block:: bash -What the Script Does: + (ljenv)$ pserve development.ini + Starting server in PID 84467. + serving on http://0.0.0.0:6543 -.. rst-class:: build + Then try viewing the list page and an entry page: -* names appropriate *executable* in it's *shebang* line -* uses os.environ to read information from the HTTP request -* builds *any and all* appropriate **HTTP Headers** (Content-type:, - Content-length:, ...) -* prints headers, empty line and script output (body) to stdout + * http://localhost:6543 + * http://localhost:6543/journal/1 + What happens when you request an entry with an id that isn't in the + database? -In-Class Exercise I -------------------- + * http://localhost:6543/journal/100 -You've seen the output from the ``cgi.test()`` method from the ``cgi`` module. -Let's make our own version of this. +The MVC View +============ -.. rst-class:: build +.. rst-class:: left .. container:: + Again, back to the *Model-View-Controller* pattern. + + .. figure:: http://upload.wikimedia.org/wikipedia/commons/4/40/MVC_passive_view.png + :align: center + :width: 25% + + By Alan Evangelista (Own work) [CC0], via Wikimedia Commons + .. rst-class:: build + .. container:: - * In the directory ``cgi-bin`` you will find the file ``cgi_2.py``. - * Open that file in your editor. - * The script contains some html with text naming elements of the CGI - environment. - * You should use the values in os.environ to fill in the blanks. - * You should be able to view the results of your work by loading - ``http://localhost:8000/`` and clicking on *Exercise One* + We've built a *model* and we've created some *controllers* that use it. - **GO** + In Pyramid, we call *controllers* **views** and they are callables that + take *request* as an argument. + Let's turn to the last piece of the *MVC* patter, the *view* -Getting Data from Users ------------------------ +Presenting Data +--------------- -All this is well and good, but where's the *dynamic* stuff? +The job of the *view* in the *MVC* pattern is to present data in a format that +is readable to the user of the system. .. rst-class:: build .. container:: - It'd be nice if a user could pass form data to our script for it to use. + There are many ways to present data. - In HTTP, these types of inputs show up in the URL *query* (the part after - the ``?``):: + Some are readable by humans (tables, charts, graphs, HTML pages, text + files). - http://myhost.com/script.py?a=23&b=37 + Some are more for machines (xml files, csv, json). - You've seen this before, right? In your Pyramid learning journal? + Which of these formats is the *right one* depends on your purpose. - It's how we got the ``id`` of an entry to the edit form. + What is the purpose of our learning journal? +Pyramid Renderers +----------------- -.. nextslide:: Form Data in CGI +In Pyramid, the job of presenting data is performed by a *renderer*. -In the ``cgi`` module, we get access to this with the ``FieldStorage`` class: +.. rst-class:: build +.. container:: -.. code-block:: python + So we can consider the Pyramid **renderer** to be the *view* in our *MVC* + app. - import cgi + We've already seen how we can connect a *renderer* to a Pyramid *view* with + configuration. - form = cgi.FieldStorage() - stringval = form.getvalue('a', None) - listval = form.getlist('b') + In fact, we have already done so, using a built-in renderer called + ``'string'``. -.. rst-class:: build + This renderer converts the return value of its *view* to a string and sends + that back to the client as an HTTP response. -* The values in the ``FieldStorage`` are *always* strings -* ``getvalue`` allows you to return a default, in case the field isn't present -* ``getlist`` always returns a list: empty, one-valued, or as many values as - are present + But the result isn't so nice looking. +.. nextslide:: Template Renderers -In-Class Exercise II --------------------- +The `built-in renderers` (``'string'``, ``'json'``, ``'jsonp'``) in Pyramid are +not the only ones available. -Let's create a dynamic adding machine. +.. _built-in renderers: http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/renderers.html#built-in-renderers .. rst-class:: build +.. container:: -* In the ``cgi-bin`` directory you'll find ``cgi_sums.py``. -* In the ``index.html`` file in the ``cgi`` directory, the third link leads to - this file. -* You will use the structure of that link, and what you learned just now about - ``cgi.FieldStorage``. -* Complete the cgi script in ``cgi_sums.py`` so that the result of adding all - operands sent via the url query is returned. -* Return the results as plain text, with the appropriate ``Content-Type`` - header. - + There are add-ons to Pyramid that support using various *template + languages* as renderers. -.. nextslide:: My Solution + In fact, one of these was installed by default when you created this + project. -.. rst-class:: build +.. nextslide:: Configuring a Template Renderer .. code-block:: python - form = cgi.FieldStorage() - operands = form.getlist('operand') - total = 0 - for operand in operands: - try: - value = int(operand) - except ValueError: - value = 0 - total += value + # in setup.py + requires = [ + # ... + 'pyramid_chameleon', + # ... + ] + + # in learning_journal/__init__.py + def main(global_config, **settings): + # ... + config.include('pyramid_chameleon') - output = str(total) +.. rst-class:: build +.. container:: - print "Content-Type: text/plain" - print "Content-Length: %s" % len(output) - print - print output + The `pyramid_chameleon` package supports using the `chameleon` template + language. + The language is quite nice and powerful, but not so easy to learn. -.. nextslide:: Break Time + Let's use a different one, *jinja2* -.. rst-class:: centered +.. nextslide:: Changing Template Renderers -Let's take a break here, before continuing +Change ``pyramid_chameleon`` to ``pyramid_jinja2`` in both of these files: +.. code-block:: python -WSGI -==== + # in setup.py + requires = [ + # ... + 'pyramid_jinja2', + # ... + ] + # in learning_journal/__init__.py + def main(global_config, **settings): + # ... + config.include('pyramid_jinja2') -CGI Problems ------------- +.. nextslide:: Picking up the Changes -CGI is great, but there are problems: +We've changed the dependencies for our Pyramid project. .. rst-class:: build .. container:: - .. rst-class:: build + As a result, we will need to re-install it so the new dependencies are also + installed: + + .. code-block:: bash + + (ljenv)$ python setup.py develop + ... + Finished processing dependencies for learning-journal==0.0 + (ljenv)$ - * Code is executed *in a new process* - * **Every** call to a CGI script starts a new process on the server - * Starting a new process is expensive in terms of server resources - * *Especially for interpreted languages like Python* + Now, we can use *Jinja2* templates in our project. - How do we overcome this problem? + Let's learn a bit about how `Jinja2 templates`_ work. -.. nextslide:: Alternatives to CGI +.. _Jinja2 templates: http://jinja.pocoo.org/docs/templates/ -The most popular approach is to have a long-running process *inside* the -server that handles CGI scripts. +Jinja2 Template Basics +---------------------- + +We'll start with the absolute basics. .. rst-class:: build .. container:: - FastCGI and SCGI are existing implementations of CGI in this fashion. + Fire up an iPython interpreter, using your `ljenv` virtualenv: + + .. code-block:: bash - The PHP scripting language works in much the same way. + (ljenv)$ ipython + ... + In [1]: - The Apache module **mod_python** offers a similar capability for Python - code. + Then import the ``Template`` class from the ``jinja2`` package: - .. rst-class:: build + .. code-block:: ipython - * Each of these options has a specific API - * None are compatible with each-other - * Code written for one is **not portable** to another + In [1]: from jinja2 import Template - This makes it much more difficult to *share resources* +.. nextslide:: Templates are Strings +A template is constructed with a simple string: -A Solution ----------- +.. code-block:: ipython -Enter WSGI, the Web Server Gateway Interface. + In [2]: t1 = Template("Hello {{ name }}, how are you") .. rst-class:: build .. container:: - Other alternatives are specific implementations of the CGI standard. - - WSGI is itself a new standard, not an implementation. + Here, we've simply typed the string directly, but it is more common to + build a template from the contents of a *file*. - WSGI is generalized to describe a set of interactions. + Notice that our string has some odd stuff in it: ``{{ name }}``. - Developers can write WSGI-capable apps and deploy them on any WSGI server. + This is called a *placeholder* and when the template is *rendered* it is + replaced. - Read the WSGI spec: http://www.python.org/dev/peps/pep-0333 +.. nextslide:: Rendering a Template +Call the ``render`` method, providing *context*: -Apps and Servers ----------------- +.. code-block:: ipython -WSGI consists of two parts, a *server* and an *application*. + In [3]: t1.render(name="Freddy") + Out[3]: 'Hello Freddy, how are you' + In [4]: t1.render(name="Gloria") + Out[4]: 'Hello Gloria, how are you' .. rst-class:: build .. container:: - .. container:: - - A WSGI Server must: - - .. rst-class:: build + *Context* can either be keyword arguments, or a dictionary - * set up an environment, much like the one in CGI - * provide a method ``start_response(status, headers, exc_info=None)`` - * build a response body by calling an *application*, passing - ``environment`` and ``start_response`` as args - * return a response with the status, headers and body + Note the resemblance to something you've seen before: - .. container:: + .. code-block:: python + + >>> "This is {owner}'s string".format(owner="Cris") + 'This is Cris's string' - A WSGI Appliction must: - .. rst-class:: build +.. nextslide:: Dictionaries in Context - * Be a callable (function, method, class) - * Take an environment and a ``start_response`` callable as arguments - * Call the ``start_response`` method. - * Return an *iterable* of 0 or more strings, which are treated as the - body of the response. +Dictionaries passed in as part of the *context* can be addressed with *either* +subscript or dotted notation: +.. code-block:: ipython -.. nextslide:: Simplified WSGI Server + In [5]: person = {'first_name': 'Frank', + ...: 'last_name': 'Herbert'} + In [6]: t2 = Template("{{ person.last_name }}, {{ person['first_name'] }}") + In [7]: t2.render(person=person) + Out[7]: 'Herbert, Frank' -.. code-block:: python +.. rst-class:: build - from some_application import simple_app +* Jinja2 will try the *correct* way first (attr for dotted, item for + subscript). +* If nothing is found, it will try the opposite. +* If nothing is found, it will return an *undefined* object. - def build_env(request): - # put together some environment info from the reqeuest - return env - def handle_request(request, app): - environ = build_env(request) - iterable = app(environ, start_response) - for data in iterable: - # send data to client here +.. nextslide:: Objects in Context - def start_response(status, headers): - # start an HTTP response, sending status and headers +The exact same is true of objects passed in as part of *context*: - # listen for HTTP requests and pass on to handle_request() - serve(simple_app) +.. rst-class:: build +.. container:: + .. code-block:: ipython -.. nextslide:: Simple WSGI Application + In [8]: t3 = Template("{{ obj.x }} + {{ obj['y'] }} = Fun!") + In [9]: class Game(object): + ...: x = 'babies' + ...: y = 'bubbles' + ...: + In [10]: bathtime = Game() + In [11]: t3.render(obj=bathtime) + Out[11]: 'babies + bubbles = Fun!' -Where the simplified server above is **not** functional, this *is* a complete -app: + This means your templates can be agnostic as to the nature of the + things found in *context* -.. code-block:: python +.. nextslide:: Filtering values in Templates - def application(environ, start_response) - status = "200 OK" - body = "Hello World\n" - response_headers = [('Content-type', 'text/plain'), - ('Content-length', len(body))] - start_response(status, response_headers) - return [body] +You can apply `filters`_ to the data passed in *context* with the pipe ('|') +operator: +.. _filters: http://jinja.pocoo.org/docs/dev/templates/#filters -.. nextslide:: WSGI Middleware +.. code-block:: ipython -A third part of the puzzle is something called WSGI *middleware* + In [12]: t4 = Template("shouted: {{ phrase|upper }}") + In [13]: t4.render(phrase="this is very important") + Out[13]: 'shouted: THIS IS VERY IMPORTANT' .. rst-class:: build .. container:: - .. rst-class:: build + You can also chain filters together: - * Middleware implements both the *server* and *application* interfaces - * Middleware acts as a server when viewed from an application - * Middleware acts as an application when viewed from a server + .. code-block:: ipython - .. figure:: /_static/wsgi_middleware_onion.png - :align: center - :width: 38% + In [14]: t5 = Template("confusing: {{ phrase|upper|reverse }}") + In [15]: t5.render(phrase="howdy doody") + Out[15]: 'confusing: YDOOD YDWOH' +.. nextslide:: Control Flow -.. nextslide:: WSGI Data Flow +Logical `control structures`_ are also available: + +.. _control structures: http://jinja.pocoo.org/docs/dev/templates/#list-of-control-structures .. rst-class:: build .. container:: - .. container:: + .. code-block:: ipython - WSGI Servers: + In [16]: tmpl = """ + ....: {% for item in list %}{{ item}}, {% endfor %} + ....: """ + In [17]: t6 = Template(tmpl) + In [18]: t6.render(list=['a', 'b', 'c', 'd', 'e']) + Out[18]: '\na, b, c, d, e, ' - .. rst-class:: large centered + Any control structure introduced in a template **must** be paired with an + explicit closing tag (``{% for %}...{% endfor %}``) - **HTTP <---> WSGI** + Remember, although template tags like ``{% for %}`` or ``{% if %}`` look a + lot like Python, *they are not*. - .. container:: + The syntax is specific and must be followed correctly. - WSGI Applications: +.. nextslide:: Template Tests - .. rst-class:: large centered +There are a number of specialized *tests* available for use with the +``if...elif...else`` control structure: - **WSGI <---> app code** +.. code-block:: ipython + In [19]: tmpl = """ + ....: {% if phrase is upper %} + ....: {{ phrase|lower }} + ....: {% elif phrase is lower %} + ....: {{ phrase|upper }} + ....: {% else %}{{ phrase }}{% endif %}""" + In [20]: t7 = Template(tmpl) + In [21]: t7.render(phrase="FOO") + Out[21]: '\n\n foo\n' + In [22]: t7.render(phrase='bar') + Out[22]: '\n\n BAR\n' + In [23]: t7.render(phrase='This should print as-is') + Out[23]: '\nThis should print as-is' -.. nextslide:: The WSGI Stack -The WSGI *Stack* can thus be expressed like so: +.. nextslide:: Basic Expressions -.. rst-class:: build large centered +Basic `Python-like expressions`_ are also supported: -**HTTP <---> WSGI <---> app code** +.. _Python-like expressions: http://jinja.pocoo.org/docs/dev/templates/#expressions +.. code-block:: ipython -.. nextslide:: Using wsgiref + In [24]: tmpl = """ + ....: {% set sum = 0 %} + ....: {% for val in values %} + ....: {{ val }}: {{ sum + val }} + ....: {% set sum = sum + val %} + ....: {% endfor %} + ....: """ + In [25]: t8 = Template(tmpl) + In [26]: t8.render(values=range(1, 11)) + Out[26]: '\n\n\n1: 1\n \n\n2: 3\n \n\n3: 6\n \n\n4: 10\n + \n\n5: 15\n \n\n6: 21\n \n\n7: 28\n \n\n8: 36\n + \n\n9: 45\n \n\n10: 55\n \n\n' -The Python standard lib provides a reference implementation of WSGI: -.. figure:: /_static/wsgiref_flow.png - :align: center - :width: 80% +Our Templates +------------- +There's more that Jinja2 templates can do, but it will be easier to introduce +you to that in the context of a working template. So let's make some. -.. nextslide:: Apache mod_wsgi +.. nextslide:: Detail Template -You can also deploy with Apache as your HTTP server, using **mod_wsgi**: +We have a Pyramid view that returns a single entry. Let's create a template to +show it. -.. figure:: /_static/mod_wsgi_flow.png - :align: center - :width: 80% +.. rst-class:: build +.. container:: + In ``learning_journal/templates`` create a new file ``detail.jinja2``: -.. nextslide:: Proxied WSGI Servers + .. code-block:: jinja + + <article> + <h1>{{ entry.title }}</h1> + <hr/> + <p>{{ entry.body }}</p> + <hr/> + <p>Created <strong title="{{ entry.created }}">{{entry.created}}</strong></p> + </article> -Finally, it is also common to see WSGI apps deployed via a proxied WSGI -server: + Then wire it up to the detail view in ``views.py``: -.. figure:: /_static/proxy_wsgi.png - :align: center - :width: 80% + .. code-block:: ipython + + # views.py + @view_config(route_name='detail', renderer='templates/detail.jinja2') + def view(request): + # ... +.. nextslide:: Try It Out -The WSGI Environment --------------------- +Now we should be able to see some rendered HTML for our journal entry details. -REQUEST_METHOD: - The HTTP request method, such as "GET" or "POST". This cannot ever be an - empty string, and so is always required. -SCRIPT_NAME: - The initial portion of the request URL's "path" that corresponds to the - application object, so that the application knows its virtual "location". - This may be an empty string, if the application corresponds to the "root" of - the server. -PATH_INFO: - The remainder of the request URL's "path", designating the virtual - "location" of the request's target within the application. This may be an - empty string, if the request URL targets the application root and does not - have a trailing slash. -QUERY_STRING: - The portion of the request URL that follows the "?", if any. May be empty or - absent. -CONTENT_TYPE: - The contents of any Content-Type fields in the HTTP request. May be empty or - absent. - - -.. nextslide:: The WSGI Environment - -CONTENT_LENGTH: - The contents of any Content-Length fields in the HTTP request. May be empty - or absent. -SERVER_NAME, SERVER_PORT: - When combined with SCRIPT_NAME and PATH_INFO, these variables can be used to - complete the URL. Note, however, that HTTP_HOST, if present, should be used - in preference to SERVER_NAME for reconstructing the request URL. See the URL - Reconstruction section below for more detail. SERVER_NAME and SERVER_PORT - can never be empty strings, and so are always required. -SERVER_PROTOCOL: - The version of the protocol the client used to send the request. Typically - this will be something like "HTTP/1.0" or "HTTP/1.1" and may be used by the - application to determine how to treat any HTTP request headers. (This - variable should probably be called REQUEST_PROTOCOL, since it denotes the - protocol used in the request, and is not necessarily the protocol that will - be used in the server's response. However, for compatibility with CGI we - have to keep the existing name.) - - -.. nextslide:: The WSGI Environment - -HTTP\_ Variables: - Variables corresponding to the client-supplied HTTP request headers (i.e., - variables whose names begin with "HTTP\_"). The presence or absence of these - variables should correspond with the presence or absence of the appropriate - HTTP header in the request. - -.. rst-class:: build large centered - -**Seem Familiar?** - - -In-Class Exercise III ---------------------- +.. rst-class:: build +.. container:: -Let's start simply. We'll begin by repeating our first CGI exercise in WSGI + Start up your server: -.. rst-class:: build + .. code-block:: bash -* Find the ``wsgi`` directory in the class resources. Copy it to your working - directory. -* Open the file ``wsgi_1.py`` in your text editor. -* We will fill in the missing values using the wsgi ``environ``, just as we - use ``os.environ`` in cgi + (ljenv)$ pserve development.ini + Starting server in PID 90536. + serving on http://0.0.0.0:6543 -.. rst-class:: build centered + Then try viewing an individual journal entry -**But First** + * http://localhost:6543/journal/1 +.. nextslide:: Listing Page -.. nextslide:: Orientation +The index page of our journal should show a list of journal entries, let's do +that next. -.. code-block:: python +.. rst-class:: build +.. container:: + + In ``learning_journal/templates`` create a new file ``list.jinja2``: + + .. code-block:: jinja + + {% if entries %} + <h2>Journal Entries</h2> + <ul> + {% for entry in entries %} + <li> + <a href="{{ request.route_url('detail', id=entry.id) }}">{{ entry.title }}</a> + </li> + {% endfor %} + </ul> + {% else %} + <p>This journal is empty</p> + {% endif %} - if __name__ == '__main__': - from wsgiref.simple_server import make_server - srv = make_server('localhost', 8080, application) - srv.serve_forever() +.. nextslide:: + +It's worth taking a look at a few specifics of this template. .. rst-class:: build .. container:: - Note that we pass our ``application`` function to the server factory + .. code-block:: jinja + + {% for entry in entries %} + ... + {% endfor %} + + Jinja2 templates are rendered with a *context*. + + A Pyramid *view* returns a dictionary, which is passed to the renderer as + part of of that *context* + + This means we can access values we return from our *view* in the *renderer* + using the names we assigned to them. + +.. nextslide:: - We don't have to write a server, ``wsgiref`` does that for us. +It's worth taking a look at a few specifics of this template. - In fact, you should *never* have to write a WSGI server. + .. code-block:: jinja + + <a href="{{ request.route_url('detail', id=entry.id) }}">{{ entry.title }}</a> + The *request* object is also placed in the context by Pyramid. -.. nextslide:: Orientation + Request has a method ``route_url`` that will create a URL for a named + route. + + This allows you to include URLs in your template without needing to know + exactly what they will be. + + This process is called *reversing*, since it's a bit like a reverse phone + book lookup. + +.. nextslide:: + +Finally, you'll need to connect this new renderer to your listing view: .. code-block:: python - def application(environ, start_response): - response_body = body % ( - environ.get('SERVER_NAME', 'Unset'), # server name - ... - ) - status = '200 OK' - response_headers = [('Content-Type', 'text/html'), - ('Content-Length', str(len(response_body)))] - start_response(status, response_headers) - return [response_body] + @view_config(route_name='home', renderer='templates/list.jinja2') + def index_page(request): + # ... + +.. nextslide:: Try It Out + +We can now see our list page too. Let's try starting the server: .. rst-class:: build .. container:: - We do not define ``start_response``, the application does that. + .. code-block:: bash + + (ljenv)$ pserve development.ini + Starting server in PID 90536. + serving on http://0.0.0.0:6543 + + Then try viewing the home page of your journal: - We *are* responsible for determining the HTTP status. + * http://localhost:6543/ -.. nextslide:: Running a WSGI Script + Click on the link to an entry, it should work. -You can run this script with python:: +.. nextslide:: Sharing Structure - $ python wsgi_1.py +These views are reasonable, if quite plain. .. rst-class:: build .. container:: - This will start a wsgi server. What host and port will it use? + It'd be nice to put them into something that looks a bit more like a + website. + + Jinja2 allows you to combine templates using something called + `template inheritance`_. + + You can create a basic page structure, and then *inherit* that structure in + other templates. - Point your browser at ``http://localhost:8080/``. Did it work? + In our class resources I've added a page template ``layout.jinja2``. Copy + that page to your templates directory - Go ahead and fill in the missing bits. Use the ``environ`` passed into - ``application`` +.. _template inheritance: http://jinja.pocoo.org/docs/dev/templates/#template-inheritance +.. nextslide:: ``layout.jinja2`` -.. nextslide:: Some Tips +.. code-block:: jinja -WSGI is a long-running process. + <!DOCTYPE html> + <html lang="en"> + <head> + <meta charset="utf-8"> + <title>Python Learning Journal + + + +
    + +
    +
    +

    My Python Journal

    +
    {% block body %}{% endblock %}
    +
    +

    Created in the UW PCE Python Certificate Program

    + + + +.. nextslide:: Template Blocks + +The important part here is the ``{% block body %}{% endblock %}`` expression. .. rst-class:: build .. container:: - The file you are editing is *not* reloaded after you edit it. + This is a template **block** and it is a kind of placeholder. - You'll need to quit and re-run the script between edits. + Other templates can inherit from this one, and fill that block with + additional HTML. - Notice the use of ``pprint.pprint``, check your terminal for useful output. + Let's update our detail and list templates: + .. code-block:: jinja + + {% extends "layout.jinja2" %} + {% block body %} + + {% endblock %} -A WSGI Application ------------------- +.. nextslide:: Try It Out -So now we've learned a bit about the WSGI specification and how a WSGI -application can get data that comes in via an HTTP request. +Let's try starting the server so we can see the result: .. rst-class:: build .. container:: - Let's create a multi-page wsgi application. + .. code-block:: bash - It will serve a small database of python books. + (ljenv)$ pserve development.ini + Starting server in PID 90536. + serving on http://0.0.0.0:6543 - The database (with a very simple api) can be found in ``wsgi/bookdb.py`` + Then try viewing the home page of your journal: - .. rst-class:: build + * http://localhost:6543/ - * We'll need a listing page that shows the titles of all the books - * Each title will link to a details page for that book - * The details page for each book will display all the information and have - a link back to the list + Click on the link to an entry, it should work. + And now you have shared page structure that is in both. -.. nextslide:: Some Questions to Ponder +Static Assets +------------- -When viewing our first wsgi app, do we see the name of the wsgi application -script anywhere in the URL? +Although we have a shared structure, it isn't particularly nice to look at. .. rst-class:: build .. container:: - In our wsgi application script, how many applications did we actually have? + Aspects of how a website looks are controlled by CSS (*Cascading Style + Sheets*). - How are we going to serve different types of information out of a single - application? + Stylesheets are one of what we generally speak of as *static assets*. + Other static assets include *images* that are part of the look and feel of + the site (logos, button images, etc) and the *JavaScript* files that add + client-side dynamic behavior to the site. -.. nextslide:: Dispatch +.. nextslide:: Static Assets in Pyramid -We have to write an app that will map our incoming request path to some code -that can handle that request. +Serving static assets in Pyramid requires a *static view* to configuration. +Luckily, ``pcreate`` already handled that for us: .. rst-class:: build .. container:: - This process is called ``dispatch``. There are many possible approaches. + .. code-block:: python + + # in learning_journal/__init__.py + def main(global_config, **settings): + # ... + config.add_static_view('static', 'static', cache_max_age=3600) + # ... - You've seen one approach in the Learning Journal you built with Pyramid. + The first argument to ``add_static_view`` is a *name* that will need to + appear in the path of URLs requesting assets. - Let's begin by designing this piece of our app. + The second argument is a *path* that is relative to the package being + configured. - Open ``bookapp.py`` from the ``wsgi`` folder. We'll do our work here. + Assets referenced by the *name* in a URL will be searched for in the + location defined by the *path* + Additional keyword arguments control other aspects of how the view works. -.. nextslide:: PATH +.. nextslide:: Static Assets in Templates -The wsgi environment gives us access to *PATH_INFO*. +Once you have a static view configured, you can use assets in that location in +templates. .. rst-class:: build .. container:: - This value is the URI from the client's HTTP request. + The *request* object in Pyramid provides a ``static_path`` method that + will render an appropriate asset path for us. - We can design the URLs that our app will use to assist us in routing. + Add the following to our ``layout.jinja2`` template: - Let's declare that any request for ``/`` will map to the list page. + .. code-block:: jinja + + + + + - .. container:: + The one required argument to ``request.static_path`` is a *path* to an + asset. - We can also say that the URL for a book will look like this:: + Note that because any package *might* define a static view, we have to + specify which package we want to look in. - http://localhost:8080/book/ + That's why we have ``learning_journal:static/styles.css`` in our call. -Writing ``resolve_path`` ------------------------- +.. nextslide:: Basic Styles -Let's write a function, called ``resolve_path`` in our application file. +I've created some very very basic styles for our learning journal. .. rst-class:: build +.. container:: -* It should take the *PATH_INFO* value from environ as an argument. -* It should return the function that will be called. -* It should also return any arguments needed to call that function. -* This implies of course that the arguments should be part of the PATH + You can find them in ``resources/session06/styles.css``. Go ahead and copy + that file. + Add it to ``learning_journal/static``. -.. nextslide:: My Solution + Then restart your web server and see what a difference a little style + makes: -.. rst-class:: build + .. code-block:: bash -.. code-block:: python + (ljenv)$ pserve development.ini + Starting server in PID 90536. + serving on http://0.0.0.0:6543 + +.. nextslide:: The Outcome - def resolve_path(path): - urls = [(r'^$', books), - (r'^book/(id[\d]+)$', book)] - matchpath = path.lstrip('/') - for regexp, func in urls: - match = re.match(regexp, matchpath) - if match is None: - continue - args = match.groups([]) - return func, args - # we get here if no url matches - raise NameError +Your site should look something like this: +.. figure:: /_static/learning_journal_styled.png + :align: center + :width: 75% -.. nextslide:: Application Updates + The learning journal with basic styles applied -We need to hook our new dispatch function into the application. +Getting Interactive +=================== -.. rst-class:: build +.. rst-class:: left +.. container:: + + We have a site that allows us to view a list of journal entries. + + .. rst-class:: build + .. container:: -* The path should be extracted from ``environ``. -* The dispatch function should be used to get a function and arguments -* The body to return should come from calling that function with those - arguments -* If an error is raised by calling the function, an appropriate response - should be returned -* If the router raises a NameError, the application should return a 404 - response + We can also view the details of a single entry. + But as yet, we don't really have any *interaction* in our site yet. -.. nextslide:: My Solution + We can't create new entries. + + Let's add that functionality next. + +User Input +---------- + +In HTML websites, the traditional way of getting input from users is via +`HTML forms`_. .. rst-class:: build +.. container:: -.. code-block:: python + Forms use *input elements* to allow users to enter data, pick from + drop-down lists, or choose items via checkbox or radio button. - def application(environ, start_response): - headers = [("Content-type", "text/html")] - try: - path = environ.get('PATH_INFO', None) - if path is None: - raise NameError - func, args = resolve_path(path) - body = func(*args) - status = "200 OK" - except NameError: - status = "404 Not Found" - body = "

    Not Found

    " - except Exception: - status = "500 Internal Server Error" - body = "

    Internal Server Error

    " - finally: - headers.append(('Content-length', str(len(body)))) - start_response(status, headers) - return [body] - - -Test Your Work --------------- + It is possible to create plain HTML forms in templates and use them with + Pyramid. + + It's a lot easier, however, to work with a *form library* to create forms, + render them in templates and interact with data sent by a client. + + We'll be using a form library called `WTForms`_ in our project -Once you've got your script settled, run it:: +.. _HTML forms: https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms +.. _WTForms: http://wtforms.readthedocs.org/en/latest/ - $ python bookapp.py +.. nextslide:: Installing WTForms + +The first step to working with this library is to install it. .. rst-class:: build .. container:: - Then point your browser at ``http://localhost:8080/`` + Start by makin the library as a *dependency* of our package by adding it to + the *requires* list in ``setup.py``: - .. rst-class:: build + .. code-block:: python + + requires = [ + # ... + 'wtforms', # <- add this to the list + ] - * ``http://localhost/book/id3`` - * ``http://localhost/book/id73/`` - * ``http://localhost/sponge/damp`` + Then, re-install our package to download and install the new dependency: - Did that all work as you would have expected? + .. code-block:: bash + (ljenv)$ python setup.py develop + ... + Finished processing dependencies for learning-journal==0.0 -Building the Book List ----------------------- +Using WTForms +------------- -The function ``books`` should return an html list of book titles where each -title is a link to the detail page for that book +We'll want a form to allow a user to create a new Journal Entry. .. rst-class:: build +.. container:: -* You'll need all the ids and titles from the book database. -* You'll need to build a list in HTML using this information -* Each list item should have the book title as a link -* The href for the link should be of the form ``/book/`` + Add a new file called ``forms.py`` in our learning_journal package, next to + ``models.py``: + .. code-block:: python + + from wtforms import Form, TextField, TextAreaField, validators + + strip_filter = lambda x: x.strip() if x else None + + class EntryCreateForm(Form): + title = TextField( + 'Entry title', + [validators.Length(min=1, max=255)], + filters=[strip_filter]) + body = TextAreaField( + 'Entry body', + [validators.Length(min=1)], + filters=[strip_filter]) + +.. nextslide:: Using a Form in a View -.. nextslide:: My Solution +Next, we need to add a new view that uses this form to create a new entry. .. rst-class:: build +.. container:: -.. code-block:: python + Add this to ``views.py``: - def books(): - all_books = DB.titles() - body = ['

    My Bookshelf

    ', '
      '] - item_template = '
    • {title}
    • ' - for book in all_books: - body.append(item_template.format(**book)) - body.append('
    ') - return '\n'.join(body) + .. code-block:: python + # add these imports + from pyramid.httpexceptions import HTTPFound + from .forms import EntryCreateForm -Test Your Work --------------- + # and update this view function + def create(request): + entry = Entry() + form = EntryCreateForm(request.POST) + if request.method == 'POST' and form.validate(): + form.populate_obj(entry) + DBSession.add(entry) + return HTTPFound(location=request.route_url('home')) + return {'form': form, 'action': request.matchdict.get('action')} -Quit and then restart your application script:: +.. nextslide:: Testing the Route/View Connection - $ python bookapp.py +We already have a route that connects here. Let's test it. .. rst-class:: build .. container:: - .. container:: + Start your server: - Then reload the root of your application:: + .. code-block:: bash - http://localhost:8080/ + (ljenv)$ pserve development.ini + Starting server in PID 90536. + serving on http://0.0.0.0:6543 - You should see a nice list of the books in the database. Do you? + And then try connecting to the ``action`` route: - Click on a link to view the detail page. Does it load without error? + * http://localhost:6543/journal/create + + You should see something like this:: + {'action': u'create', 'form': } -Showing Details ---------------- +.. nextslide:: Rendering A Form -The next step of course is to polish up those detail pages. +Finally, we need to create a template that will render our form. .. rst-class:: build .. container:: - .. rst-class:: build + Add a new template called ``edit.jinja2`` in + ``learning_journal/templates``: - * You'll need to retrieve a single book from the database - * You'll need to format the details about that book and return them as HTML - * You'll need to guard against ids that do not map to books + .. code-block:: jinja - In this last case, what's the right HTTP response code to send? + {% extends "templates/layout.jinja2" %} + {% block body %} +
    + {% for field in form %} + {% if field.errors %} +
      + {% for error in field.errors %} +
    • {{ error }}
    • + {% endfor %} +
    + {% endif %} +

    {{ field.label }}: {{ field }}

    + {% endfor %} +

    +
    + {% endblock %} +.. nextslide:: Connecting the Renderer -.. nextslide:: My Solution +You'll need to update the view configuration to use this new renderer. .. rst-class:: build +.. container:: -.. code-block:: python + Update the configuration in ``learning_journal/views.py``: - def book(book_id): - page = """ -

    {title}

    - - - - -
    Author{author}
    Publisher{publisher}
    ISBN{isbn}
    - Back to the list - """ - book = DB.title_info(book_id) - if book is None: - raise NameError - return page.format(**book) + .. code-block:: python + + @view_config(route_name='action', match_param='action=create', + renderer='templates/edit.jinja2') + def create(request): + # ... + And then you should be able to start your server and test: -.. nextslide:: Revel in Your Success + .. code-block:: bash -Quit and restart your script one more time + (ljenv)$ pserve development.ini + Starting server in PID 90536. + serving on http://0.0.0.0:6543 -.. rst-class:: build -.. container:: + * http://localhost:6543/create - Then poke around at your application and see the good you've made +.. nextslide:: Providing Access - And your application is portable and sharable +Great! Now you can add new entries to your journal. - It should run equally well under any `wsgi server `_ +.. rst-class:: build +.. container:: + But in order to do so, you have to hand-enter the url. -.. nextslide:: A Few Steps Further + You should add a new link in the UI somewhere that helps you get there more + easily. -Next steps for an app like this might be: + Add the following to ``list.jinja2``: -* Create a shared full page template and incorporate it into your app -* Improve the error handling by emitting error codes other than 404 and 500 -* Swap out the basic backend here with a different one, maybe a Web Service? -* Think about ways to make the application less tightly coupled to the pages - it serves + .. code-block:: jinja + {% extends "layout.jinja2" %} + {% block body %} + {% if entries %} + ... + {% else %} + ... + {% endif %} + +

    New Entry

    + {% endblock %} Homework ======== @@ -1255,72 +1470,117 @@ Homework .. rst-class:: left .. container:: - For your homework this week, you'll be creating a wsgi application of your - own. + You have a website now that allows you to create, view and list journal + entries .. rst-class:: build .. container:: - You'll create an online calculator that can perform several operations + However, there are still a few flaws in this system. - You'll need to support: + You should be able to edit a journal entry that already exists, in case + you make a spelling error. - .. rst-class:: build + It would also be nice to see a prettier site. - * Addition - * Subtraction - * Multiplication - * Division + Let's handle that for homework this week. - .. container:: +Part 1: Add Editing +------------------- - Your users should be able to send appropriate requests and get back - proper responses:: +For part one of your assignment, add editing of existing entries. You will need: - http://localhost:8080/multiply/3/5 => 15 - http://localhost:8080/add/23/42 => 65 - http://localhost:8080/divide/6/0 => HTTP "400 Bad Request" +* A form that shows an existing entry (what is different about this form from + one for creating a new entry?) +* A pyramid view that handles that form. It should: + * Show the form with the requested entry when the page is first loaded + * Accept edits only on POST + * Update an existing entry with new data from the form + * Show the view of the entry after editing so that the user can see the edits + saved correctly + * Show errors from form validation, if any are present -.. nextslide:: Submitting Your Homework +* A link somewhere that leads to the editing page for a single entry (probably + on the view page for a entry) -.. rst-class:: left -.. container:: +You'll need to update a bit of configuration, but not much. Use the create +form we did here in class as an example. - To submit your homework: +Part 2: Make it Yours +--------------------- - .. rst-class:: build +I've created for you a very bare-bones layout and stylesheet. - * Create a new github repository. Call it ``wsgi-calc``. - * Add a python script to it called ``calculator.py``. - * Your script should be runnable using ``$ python calculator.py`` - * When the script is running, I should be able to view your application in - my browser. - * I should be able to see a home page that explains how to perform - calculations. +You will certainly want to add a bit of your own style and panache. - .. rst-class:: build - .. container:: +Spend a few hours this week playing with the styles and getting a site that +looks more like you want it to look. + +The Mozilla Developer Network has `some excellent resources`_ for learning CSS. + +In particular, the `Getting Started with CSS`_ tutorial is a thorough +introduction to the basics. + +You might also look at their `CSS 3 Demos`_ to help fire up your creative +juices. - Your repository should include a README.md file. +Here are a few more resources: - Include all instructions I need to successfully run and view your - script. +* `A List Apart `_ offers outstanding articles. Their + `Topics list `_ is worth a browse. +* `Smashing Magazine `_ is another excellent + resource for articles on design. - When you are done, send Maria and I an email with a link to your - repository. +.. _some excellent resources: https://developer.mozilla.org/en-US/docs/Web/CSS +.. _Getting Started with CSS: https://developer.mozilla.org/en-US/docs/CSS/Getting_Started +.. _CSS 3 Demos: https://developer.mozilla.org/en-US/demos/tag/tech:css3 -Wrap-Up -------- -For educational purposes, you might wish to take a look at the source code for -the ``wsgiref`` module. It's the canonical example of a simple wsgi server +Part 3: User Model +------------------ + +As it stands, our journal accepts entries from anyone who comes by. + +Next week we will add security to allow only logged-in users to create and edit +entries. + +To do so, we'll need a user model + +The model should have: + +* An ``id`` field that is a primary key +* A ``username`` field that is unicode, no more than 255 characters, not + nullable, unique and indexed. +* A ``password`` field that is unicode and not nullable + +In addition, the model should have a classmethod that retrieves a specific user +when given a username. + +Part 4: Preparation for Deployment +---------------------------------- + +At the end of class next week we will be deploying our application to Heroku. + +You will need to get a free account. + +Once you have your free account set up and you have logged in, run through the +`getting started with Python`_ tutorial. + +Be sure to at least complete the *set up* step. It will have you install the +Heroku Toolbelt, which you will need to have ready in class. + +.. _getting started with Python: https://devcenter.heroku.com/articles/getting-started-with-python#introduction + +Submitting Your Work +-------------------- + +As usual, submit your work by committing and pushing it to your project github +repository - >>> import wsgiref - >>> wsgiref.__file__ - '/full/path/to/your/copy/of/wsgiref.py' - ... +Commit early and commit often. -.. rst-class:: build centered +Write yourself good commit messages explaining what you have done and why. -**See you Next Time** +When you are ready to have your work reviewed, email the link to your +repository to us, we'll take a look and make comments. diff --git a/html/_sources/presentations/session07.txt b/html/_sources/presentations/session07.txt index 85eb4c92..b178fa30 100644 --- a/html/_sources/presentations/session07.txt +++ b/html/_sources/presentations/session07.txt @@ -2,1958 +2,1885 @@ Session 07 ********** -.. figure:: /_static/granny_mashup.png +.. figure:: /_static/no_entry.jpg :align: center - :width: 50% + :width: 60% - Paul Downey http://www.flickr.com/photos/psd/492139935/ - CC-BY + By `Joel Kramer via Flickr`_ -Scraping, APIs and Mashups -========================== +.. _Joel Kramer via Flickr: https://www.flickr.com/photos/75001512@N00/2707796203 -Wherein we learn how to make order from the chaos of the wild internet. +Security And Deployment +======================= +.. rst-class:: left +.. container:: -A Dilemma ---------- - -The internet makes a vast quantity of data available. + By the end of this session we'll have deployed our learning journal to a + public server. -.. rst-class:: build -.. container:: + So we will need to add a bit of security to it. - But not always in the form or combination you want. + We'll get started on that in a moment - It would be nice to be able to combine data from different sources to - create *meaning*. +But First +--------- +.. rst-class:: large center -The Big Question ----------------- +Questions About the Homework? -.. rst-class:: large centered +.. nextslide:: A Working Edit Form -But How? +.. code-block:: python + class EntryEditForm(EntryCreateForm): + id = HiddenField() -The Big Answer --------------- +`View the form online `_ -.. rst-class:: large centered +.. nextslide:: A Working Edit View -Mashups +.. code-block:: python + @view_config(route_name='action', match_param='action=edit', + renderer='templates/edit.jinja2') + def update(request): + id = int(request.params.get('id', -1)) + entry = Entry.by_id(id) + if not entry: + return HTTPNotFound() + form = EntryEditForm(request.POST, entry) + if request.method == 'POST' and form.validate(): + form.populate_obj(entry) + return HTTPFound(location=request.route_url('detail', id=entry.id)) + return {'form': form, 'action': request.matchdict.get('action')} -Mashups -------- +`See this view online `_ -A mashup is:: +.. nextslide:: Linking to the Edit Form - a web page, or web application, that uses and combines data, presentation - or functionality from two or more sources to create new services. +.. code-block:: html+jinja - -- wikipedia (http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)) + {% extends "layout.jinja2" %} + {% block body %} +
    + +
    +

    + Go Back :: + + Edit Entry +

    + {% endblock %} -Data Sources ------------- +`View this template online `_ -The key to mashups is the idea of data sources. +.. nextslide:: A Working User Model -.. rst-class:: build -.. container:: +.. code-block:: python - These come in many flavors: + class User(Base): + __tablename__ = 'users' + id = Column(Integer, primary_key=True, autoincrement=True) + name = Column(Unicode(255), unique=True, nullable=False) + password = Column(Unicode(255), nullable=False) - .. rst-class:: build + @classmethod + def by_name(cls, name): + return DBSession.query(cls).filter(cls.name == name).first() - * Simple websites with data in HTML - * Web services providing structured data - * Web services providing tranformative service (geocoding) - * Web services providing presentation (mapping) +`View this model online `_ -Web Scraping -============ +Securing An Application +======================= .. rst-class:: left .. container:: - It would be nice if all online data were available in well-structured formats. + We've got a solid start on our learning journal. .. rst-class:: build .. container:: - The reality is that much data is available only in HTML. + We can: - Still we can get at it, with some effort. + .. rst-class:: build - By scraping the data from the web pages. + * view a list of entries + * view a single entry + * create a new entry + * edit existing entries + But so can everyone who visits the journal. -HTML ----- + It's a recipe for **TOTAL CHAOS** -.. ifnotslides:: + Let's lock it down a bit. - Ideally, it looks like this: -.. code-block:: html +AuthN and AuthZ +--------------- - - - - - -

    A nice clean paragraph

    -

    And another nice clean paragraph

    - - +There are two aspects to the process of access control online. +.. rst-class:: build +.. container:: -.. nextslide:: HTML... IRL + .. rst-class:: build -.. ifnotslides:: + * **Authentication**: Verification of the identity of a *principal* + * **Authorization**: Enumeration of the rights of that *principal* in a + context. - But in real life, it's more often like this: + Think of them as **Who Am I** and **What Can I Do** -.. code-block:: html + All systems with access control involve both of these aspects. - -
    - - + .. code-block:: jinja + {% block body %} + {% if login_form %} + + {% endif %} + {% if entries %} + ... -.. nextslide:: Filtering By Regular Expression +.. nextslide:: Try It Out -The next job is to find the inspection data we can see when we click on the -restaurant names in our page. +We should be ready at this point. .. rst-class:: build .. container:: - Do you notice a pattern in how that data is structured? + Fire up your application and see it in action: - For each restaurant in our results, there are *two* ``
    `` tags. + .. code-block:: bash - The first contains the content you see at first, the second the content - that displays when we click. + (ljenv)$ pserve development.ini + Starting server in PID 84467. + serving on http://0.0.0.0:6543 - What can you see that identifies these items? + Load the home page and see your login form: - ``
    `` and ``
    `` + * http://localhost:6543/ + + Fill it in and submit the form, verify that you can add a new entry. - Each pair shares an ID, and the stuff we want is in the second one +.. nextslide:: Break Time - Each number is different for each restaurant +That's enough for now. We have a working application. - We can use a regular expression to help us here. +When we return, we'll deploy it. -.. nextslide:: Getting the Information Divs -Let's write a function in ``mashup.py`` that will find all the divs in our -column with the right kind of id: +Deploying An Application +======================== -.. rst-class:: build +.. rst-class:: left .. container:: - .. rst-class:: build + Now that we have a working application, our next step is to deploy it. - * It should match ``
    `` tags only - * It should match ids that start with ``PR`` - * It should match ids that contain some number of *digits* after that - * It should match ids that end with a *tilde* (``~``) character + .. rst-class:: build + .. container:: - .. code-block:: python + This will allow us to interact with the application in a live setting. - # add an import up top - import re + We will be able to see the application from any computer, and can share + it with friends and family. - # and add this function - def restaurant_data_generator(html): - id_finder = re.compile(r'PR[\d]+~') - return html.find_all('div', id=id_finder) + To do this, we'll be using one of the most popular platforms for + deploying web applications today, `Heroku`_. +.. _Heroku: http://heroku.com -.. nextslide:: Verify It Works +Heroku +------ -Let's add that step to the *main* block at the bottom of ``mashup.py`` (only -print the first of the many divs that match): +.. figure:: /_static/heroku-logo.png + :align: center + :width: 40% .. rst-class:: build .. container:: - .. code-block:: python - - html, encoding = load_inspection_page('inspection_page.html') - parsed = parse_source(html, encoding) - content_col = parsed.find("td", id="contentcol") - data_list = restaurant_data_generator(content_col) - print data_list[0].prettify() + Heroku provides all the infrastructure needed to run many types of + applications. + It also provides `add-on services`_ that support everything from analytics + to payment processing. - Finally, test it out: + Elaborate applications deployed on Heroku can be quite expensive. - .. code-block:: bash + But for simple applications like our learning journal, the price is just + right: **free** - (soupenv)$ python mashup.py -
    -
    Row 1 cell 1 -
    Row 2 cell 1 - - Row 2 cell 2
    This
    sure is a long cell - - + But many systems wire them together as one. -.. nextslide:: FFFFFFFFFUUUUUUUUUUUUU!!!! +.. nextslide:: Pyramid Security -.. figure:: /_static/scream.jpg - :align: center - :width: 32% +In Pyramid these two aspects are handled by separate configuration settings: - Photo by Matthew via Flickr (http://www.flickr.com/photos/purplemattfish/3918004964/) - CC-BY-NC-ND +.. rst-class:: build +.. container:: + .. rst-class:: build -.. nextslide:: The Law of The Internet + * ``config.set_authentication_policy(AuthnPolicy())`` + * ``config.set_authorization_policy(AuthzPolicy())`` -.. rst-class:: large centered + If you set one, you must set the other. -"Be strict in what you send and tolerant in what you receive" + Pyramid comes with a few policy classes included. + You can also roll your own, so long as they fulfill the requried interface. -Taming the Mess ---------------- + You can learn about the interfaces for `authentication`_ and + `authorization`_ in the Pyramid documentation + +.. _authentication: http://docs.pylonsproject.org/docs/pyramid/en/latest/api/interfaces.html#pyramid.interfaces.IAuthenticationPolicy +.. _authorization: http://docs.pylonsproject.org/docs/pyramid/en/latest/api/interfaces.html#pyramid.interfaces.IAuthorizationPolicy -Luckily, there are tools to help with this. +.. nextslide:: Our Journal Security + +We'll be using two built-in policies today: .. rst-class:: build .. container:: - In python there are several candidates, but I like ``BeautifulSoup``. - - BeautifulSoup is a great tool, but it's not in the Standard Library. + .. rst-class:: build - We'll need to install it. + * ``AuthTktAuthenticationPolicy``: sets an expirable + `authentication ticket`_ cookie. + * ``ACLAuthorizationPolicy``: uses an `Access Control List`_ to grant + permissions to *principals* - Create a virtualenv to do so: + Our access control system will have the following properties: - .. code-block:: bash + .. rst-class:: build - $ virtualenv soupenv - ... - $ source soupenv/bin/activate + * Everyone can view entries, and the list of all entries + * Users who log in may edit entries or create new ones - (remember, for Windows users that should be ``soupenv/Scripts/activate``) +.. _authentication ticket: http://docs.pylonsproject.org/docs/pyramid/en/latest/api/authentication.html#pyramid.authentication.AuthTktAuthenticationPolicy +.. _Access Control List: http://docs.pylonsproject.org/docs/pyramid/en/latest/api/authorization.html#pyramid.authorization.ACLAuthorizationPolicy +.. nextslide:: Engaging Security -.. nextslide:: Install BeautifulSoup +By default, Pyramid uses no security. We enable it through configuration. -Once the virtualenv is activated, you can simply use pip or easy_install to -install the libraries you want: +.. rst-class:: build +.. container:: -.. code-block:: bash + Open ``learning_journal/__init__.py`` and update it as follows: - (soupenv)$ pip install beautifulsoup4 + .. code-block:: python + # add these imports + from pyramid.authentication import AuthTktAuthenticationPolicy + from pyramid.authorization import ACLAuthorizationPolicy + # and add this configuration: + def main(global_config, **settings): + # ... + # update building the configurator to pass in our policies + config = Configurator( + settings=settings, + authentication_policy=AuthTktAuthenticationPolicy('somesecret'), + authorization_policy=ACLAuthorizationPolicy(), + default_permission='view' + ) + # ... -.. nextslide:: Choose a Parsing Engine +.. nextslide:: Verify It Worked -BeautifulSoup is built to use the Python HTMLParser. +We've now informed our application that we want to use security. .. rst-class:: build +.. container:: -* Batteries Included. It's already there -* It's not great, especially before Python 2.7.3 + By default we require the 'view' permission to see anything. -.. rst-class:: build -.. container:: + But we have yet to assign *any permissions to anyone* at all. - BeautifulSoup also supports using other parsers. + Let's verify now that we are unable to see anything in the website. - There are two good choices: ``lxml`` and ``html5lib``. + Start your application, and try to view any page (You should get a 403 + Forbidden error response): - ``lxml`` is better, but much harder to install. Let's use ``html5lib``. + .. code-block:: bash + (ljenv)$ pserve development.ini + Starting server in PID 84467. + serving on http://0.0.0.0:6543 -.. nextslide:: Install a Parsing Engine + .. rst-class:: build -Again, this is pretty simple:: + * http://localhost:6543/ + * http://localhost:6543/journal/1 + * http://localhost:6543/journal/create + * http://localhost:6543/journal/edit?id=1 - (soupenv)$ pip install html5lib +Implementing Authz +------------------ + +Next we have to grant some permissions to principals. .. rst-class:: build .. container:: - Once installed, BeautifulSoup will choose it automatically. + Pyramid authorization relies on a concept it calls "context". + + A *principal* can be granted rights in a particular *context* + + Context can be made as specific as a single persistent object - BeautifulSoup will choose the "best" available. + Or it can be generalized to a *route* or *view* - You can specify the parser if you need to for some reason. + To have a context, we need a Python object called a *factory* that must + have an ``__acl__`` special attribute. + The framework will use this object to determine what permissions a + *principal* has -.. nextslide:: Install Requests + Let's create one -Python provides tools for opening urls and communicating with servers. It's -spread across the ``urllib`` and ``urllib2`` packages. +.. nextslide:: Add ``security.py`` + +In the same folder where you have ``models.py`` and ``views.py``, add a new +file ``security.py`` .. rst-class:: build .. container:: - These packages have pretty unintuitive APIs. + .. code-block:: python - The ``requests`` library is becoming the de-facto standard for this type of - work. Let's install it too. + from pyramid.security import Allow, Everyone, Authenticated - .. code-block:: bash + class EntryFactory(object): + __acl__ = [ + (Allow, Everyone, 'view'), + (Allow, Authenticated, 'create'), + (Allow, Authenticated, 'edit'), + ] + def __init__(self, request): + pass - (soupenv)$ pip install requests + The ``__acl__`` attribute of this object contains a list of *ACE*\ s + An *ACE* combines an *action* (Allow, Deny), a *principal* and a *permission* -Our Class Mashup ----------------- +.. nextslide:: Using Our Context Factory -We're going to explore some tools for making a mashup today +Now that we have a factory that will provide context for permissions to work, +we can tell our configuration to use it. .. rst-class:: build .. container:: - We'll be starting by scraping restaurant health code data for - a given ZIP code - - Then, we'll look up the geographic location of those zipcodes using Google - - Finally, we'll display the results of our work on a map + Open ``learning_journal/__init__.py`` and update the route configuration + for our routes: - Start by opening a new file in your editor: ``mashup.py``. + .. code-block:: python + # add an import at the top: + from .security import EntryFactory + # update the route configurations: + def main(global_config, **settings): + """ This function returns a Pyramid WSGI application. + """ + # ... Add the factory keyword argument to our route configurations: + config.add_route('home', '/', factory=EntryFactory) + config.add_route('detail', '/journal/{id:\d+}', factory=EntryFactory) + config.add_route('action', '/journal/{action}', factory=EntryFactory) -.. nextslide:: Getting Some HTML +.. nextslide:: What We've Done -The source for the data we'll be displaying is a search tool provided by King -County. +We've now told our application we want a principal to have the *view* +permission by default. .. rst-class:: build .. container:: - It's supposed to have a web service, but the service is broken. + And we've provided a factory to supply context and an ACL for each route. - Luckily, the HTML search works just fine. + Check our ACL. Who can view the home page? The detail page? The action + pages? - Open `the search form`_ in your browser. + Pyramid allows us to set a *default_permission* for *all views*\ . - Fill in a ZIP code (perhaps 98101). + But view configuration allows us to require a different permission for *a view*\ . - Add a start and end date (perhaps about 1 or 2 years apart). + Let's make our action views require appropriate permissions next - Submit the form, and take a look at what you get. +.. nextslide:: Requiring Permissions for a View -.. _the search form: http://info.kingcounty.gov/health/ehs/foodsafety/inspections/search.aspx +Open ``learning_journal/views.py``, and edit the ``@view_config`` for +``create`` and ``update``: +.. code-block:: python -.. nextslide:: Repeat, But Automate + @view_config(route_name='action', match_param='action=create', + renderer='templates/edit.jinja2', + permission='create') # <-- ADD THIS + def create(request): + # ... -Next we want to automate the process. + @view_config(route_name='action', match_param='action=edit', + renderer='templates/edit.jinja2', + permission='edit') # <-- ADD THIS + def update(request): + # ... -.. rst-class:: build -.. container:: +.. nextslide:: Verify It Worked - Copy the domain and path of the url into your new ``mashup.py`` file like - so: +At this point, our "action" views should require permissions other than the +default ``view``. - .. code-block:: python +.. rst-class:: build +.. container:: - INSPECTION_DOMAIN = "http://info.kingcounty.gov" - INSPECTION_PATH = "/health/ehs/foodsafety/inspections/Results.aspx" + Start your application and verify that it is true: -.. nextslide:: Repeat, But Automate + .. code-block:: bash -Next, copy the query parameters from the URL and convert them to a dictionary: + (ljenv)$ pserve development.ini + Starting server in PID 84467. + serving on http://0.0.0.0:6543 -.. code-block:: python + .. rst-class:: build - INSPECTION_PARAMS = { - 'Output': 'W', - 'Business_Name': '', - 'Business_Address': '', - 'Longitude': '', - 'Latitude': '', - 'City': '', - 'Zip_Code': '', - 'Inspection_Type': 'All', - 'Inspection_Start': '', - 'Inspection_End': '', - 'Inspection_Closed_Business': 'A', - 'Violation_Points': '', - 'Violation_Red_Points': '', - 'Violation_Descr': '', - 'Fuzzy_Search': 'N', - 'Sort': 'H' - } + * http://localhost:6543/ + * http://localhost:6543/journal/1 + * http://localhost:6543/journal/create + * http://localhost:6543/journal/edit?id=1 + You should get a ``403 Forbidden`` for the action pages only. -Fetching Search Results ------------------------ +Implement AuthN +--------------- -Next we'll use the ``requests`` library to write a function to fetch these -results on demand. +Now that we have authorization implemented, we need to add authentication. .. rst-class:: build .. container:: - In ``requests``, each HTTP method has a module-level function: - - .. rst-class:: build + By providing the system with an *authenticated user*, our ACEs for + ``Authenticated`` will apply. - * ``GET`` == ``requests.get(url, **kwargs)`` - * ``POST`` == ``requests.post(url, **kwargs)`` - * ... + We'll need to have a way for a user to prove who they are to the + satisfaction of the system. - ``kwargs`` represent other parts of an HTTP request: + The most common way of handling this is through a *username* and + *password*. - .. rst-class:: build + A person provides both in an html form. - * ``params``: a dict of url parameters (?foo=bar&baz=bim) - * ``headers``: a dict of headers to send with the request - * ``data``: the body of the request, if any (form data for POST goes here) - * ... + When the form is submitted, the system seeks a user with that name, and + compares the passwords. + If there is no such user, or the password does not match, authentication + fails. -.. nextslide:: Handling Requests Responses +.. nextslide:: An Example -The return value from one of these functions is a ``response`` object which -provides: +Let's imagine that Alice wants to authenticate with our website. .. rst-class:: build .. container:: - .. rst-class:: build + Her username is ``alice`` and her password is ``s3cr3t``. + + She fills these out in a form on our website and submits the form. + + Our website looks for a ``User`` object in the database with the username + ``alice``. + + Let's imagine that there is one, so our site next compares the value she + sent for her *password* to the value stored in the database. - * ``response.status_code``: see the HTTP Status Code returned - * ``response.ok``: True if ``response.status_code`` is not an error - * ``response.raise_for_status()``: call to raise a python error if it is - * ``response.headers``: The headers sent from the server - * ``response.text``: Body of the response, decoded to unicode - * ``response.encoding``: The encoding used to decode - * ``response.content``: The original encoded response body as bytes + If her stored password is also ``s3cr3t``, then she is who she says she is. - ``requests documentation``: http://docs.python-requests.org/en/latest/ + All set, right? -.. nextslide:: Fetch Search Results +.. nextslide:: Encryption -We'll start by writing a function ``get_inspection_page`` +The problem here is that the value we've stored for her password is in ``plain +text``. .. rst-class:: build .. container:: - .. rst-class:: build + This means that anyone could potentially steal our database and have access + to all our users' passwords. + + Instead, we should *encrypt* her password with a strong one-way hash. - * It will accept keyword arguments for each of the possible query values - * It will build a dictionary of request query parameters from incoming - keywords - * It will make a request to the inspection service search page using this - query - * It will return the encoded content and the encoding used as a tuple + Then we can store the hashed value. - Try writing this function. Put it in ``mashup.py`` + When she provides the plain text password to us, we *encrypt* it the same + way, and compare the result to the stored value. + If they match, then we know the value she provided is the same we used to + create the stored hash. -My Solution ------------ +.. nextslide:: Adding Encryption -Here's the one I created: +Python provides a number of libraries for implementing strong encryption. .. rst-class:: build -.. code-block:: python +.. container:: - import requests + You should always use a well-known library for encryption. - def get_inspection_page(**kwargs): - url = INSPECTION_DOMAIN + INSPECTION_PATH - params = INSPECTION_PARAMS.copy() - for key, val in kwargs.items(): - if key in INSPECTION_PARAMS: - params[key] = val - resp = requests.get(url, params=params) - resp.raise_for_status() - return resp.content, resp.encoding + We'll use a good one called `Passlib`_. + This library provides a number of different algorithms and a *context* that + implements a simple interface for each. -Parse the Results ------------------ + .. code-block:: python -Next, we'll need to parse the results we get when we call that function + from passlib.context import CryptContext + password_context = CryptContext(schemes=['pbkdf2_sha512']) + hashed = password_context.encrypt('password') + if password_context.verify('password', hashed): + print "It matched" -But before we start, a word about parsing HTML with BeautifulSoup +.. _Passlib: https://pythonhosted.org/passlib/ +.. nextslide:: Install Passlib -.. nextslide:: Parsing HTML with BeautifulSoup +To install a new package as a dependency, we add the package to our list in +``setup.py``. -The BeautifulSoup object can be instantiated with a string or a file-like -object as the sole argument: +``Passlib`` provides a large number of different hashing schemes. Some (like +``bcrypt``) require underlying ``C`` extensions to be compiled. If you do not +have a ``C`` compiler, these extensions will be disabled. .. rst-class:: build .. container:: .. code-block:: python - from bs4 import BeautifulSoup - parsed = BeautifulSoup('

    Some HTML

    ') + requires = [ + ... + 'wtforms', + 'passlib', + ] - fh = open('a_page.html', 'r') - parsed = BeautifulSoup(fh) + Then, we re-install our package to pick up the new dependency: - page = urllib2.urlopen('http://site.com/page.html') - parsed = BeautifulSoup(page) + .. code-block:: bash - You might want to open the documentation as reference - (http://www.crummy.com/software/BeautifulSoup/bs4/doc) + (ljenv)$ python setup.py develop + *note* if you have a c compiler installed but not the Python dev headers, + this may not work. Let me know if you get errors. -My Solution ------------ +.. nextslide:: Using Passlib -Take a shot at writing this new function in ``mashup.py`` +As noted above, the passlib library uses a ``context`` object to manage +passwords. -.. code-block:: python +.. rst-class:: build +.. container:: - # add this import at the top - from bs4 import BeautifulSoup + This object supports a lot of functionality, but the only API we care about + for this project is encrypting and verifying passwords. - # then add this function lower down - def parse_source(html, encoding='utf-8'): - parsed = BeautifulSoup(html, from_encoding=encoding) - return parsed + We'll create a single, global context to be used by our project. + Since the ``User`` class is the component in our system that should have + the responsibility for password interactions, we'll create our context in + the same place it is defined. -Put It Together ---------------- + In ``learning_journal/models.py`` add the following code: -We'll need to make our script do something when run. + .. code-block:: python + + # add an import at the top + from passlib.context import CryptContext -.. code-block:: python + # then lower down, make a context at module scope: + password_context = CryptContext(schemes=['pbkdf2_sha512']) + + +.. nextslide:: Comparing Passwords - if __name__ == '__main__': - # do something +Now that we have a context object available, let's write an instance method for +our ``User`` class that uses it to verify a plaintext password: .. rst-class:: build .. container:: - .. rst-class:: build - - * Fetch a search results page - * Parse the resulting HTML - * For now, print out the results so we can see what we get + Again, in ``learning_journal/models.py`` add the following to the ``User`` + class: - .. container:: + .. code-block:: python - Use the ``prettify`` method on a BeautifulSoup object:: + # add this method to the User class: + class User(Base): + # ... + def verify_password(self, password): + return password_context.verify(password, self.password) - print parsed.prettify() +.. nextslide:: Create a User +We'll also need to have a user for our system. -My Solution ------------ +.. rst-class:: build +.. container:: -Try to come up with the proper code on your own. Add it to ``mashup.py`` + We can use the database initialization script to create one for us. -.. rst-class:: build -.. code-block:: python + Open ``learning_journal/scripts/initialzedb.py``: - if __name__ == '__main__': - use_params = { - 'Inspection_Start': '2/1/2013', - 'Inspection_End': '2/1/2015', - 'Zip_Code': '98101' - } - html, encoding = get_inspection_page(**use_params) - parsed = parse_source(html, encoding) - print parsed.prettify(encoding=encoding) + .. code-block:: python + from learning_journal.models import password_context + from learning_journal.models import User + # and update the main function like so: + def main(argv=sys.argv): + # ... + with transaction.manager: + # replace the code to create a MyModel instance + encrypted = password_context.encrypt('admin') + admin = User(name='admin', password=encrypted) + DBSession.add(admin) -.. nextslide:: Test The Results +.. nextslide:: Rebuild the Database: -Assuming your virtualenv is still active, you should be able to execute the -script. +In order to get our user created, we'll need to delete our database and +re-build it. .. rst-class:: build .. container:: + Make sure you are in the folder where ``setup.py`` appears. + + Then remove the sqlite database: + .. code-block:: bash - - (soupenv)$ python mashup.py - ... - - - - - - This script is available as ``resources/session07/mashup_1.py`` + (ljenv)$ rm *.sqlite + And re-initialize: + .. code-block:: bash -.. nextslide:: Preserve the Results + (ljenv)$ initialize_learning_journal_db development.ini + ... + 2015-01-17 16:43:55,237 INFO [sqlalchemy.engine.base.Engine][MainThread] + INSERT INTO users (name, password) VALUES (?, ?) + 2015-01-17 16:43:55,237 INFO [sqlalchemy.engine.base.Engine][MainThread] + ('admin', '$2a$10$4Z6RVNhTE21mPLJW5VeiVe0EG57gN/HOb7V7GUwIr4n1vE.wTTTzy') -Try it again, this time redirect the output to a local file, so we can use -it without needing to hit the King County servers each time:: +Providing Login UI +------------------ - (soupenv)$ python mashup.py > inspection_page.html +We now have a user in our database with a strongly encrypted password. .. rst-class:: build .. container:: - Then add a quick function to our script that will use these saved results: - - .. code-block:: python + We also have a method on our user model that will verify a supplied + password against this encrypted version. - def load_inspection_page(name): - with open(name, 'r') as fh: - content = fh.read() - return content, 'utf-8' + We must now provide a view that lets us log in to our application. - Finally, bolt that in to your script to use it: + We start by adding a new *route* to our configuration in + ``learning_journal/__init__.py``: .. code-block:: python - # COMMENT OUT THIS LINE AND REPLACE IT - # html, encoding = get_inspection_page(**use_params) - html, encoding = load_inspection_page('inspection_page.html') + config.add_rount('action' ...) + # ADD THIS + config.add_route('auth', '/sign/{action}', factory=EntryFactory) +.. nextslide:: A Login Form -Extracting Data ---------------- - -Next we find the bits of this pile of HTML that matter to us. +It would be nice to use the form library again to make a login form. .. rst-class:: build .. container:: - Open the page you just wrote to disk in your web browser and open the - developer tools to inspect the page source. + Open ``learning_journal/forms.py`` and add the following: + + .. code-block:: python + + # add an import: + from wtforms import PasswordField + # and a new form class + class LoginForm(Form): + username = TextField( + 'Username', [validators.Length(min=1, max=255)] + ) + password = PasswordField( + 'Password', [validators.Length(min=1, max=255)] + ) + + +.. nextslide:: Login View in ``learning_journal/views.py`` + +.. ifnotslides:: - You'll want to start by finding the element in the page that contains all - our search results. + Next, we'll create a login view in ``learning_journal/views.py`` - Look at the source and identify the single element we are looking for. +.. code-block:: python + + # new imports: + from pyramid.security import forget, remember + from .forms import LoginForm + from .models import User + # and a new view + @view_config(route_name='auth', match_param='action=in', renderer='string', + request_method='POST') + def sign_in(request): + login_form = None + if request.method == 'POST': + login_form = LoginForm(request.POST) + if login_form and login_form.validate(): + user = User.by_name(login_form.username.data) + if user and user.verify_password(login_form.password.data): + headers = remember(request, user.name) + else: + headers = forget(request) + else: + headers = forget(request) + return HTTPFound(location=request.route_url('home'), headers=headers) -.. nextslide:: Tags and Searching +.. nextslide:: Where's the Renderer? -Having found it visually, we can now search for it automatically. In -BeautifulSoup: +Notice that this view doesn't render anything. No matter what, you end up +returning to the ``home`` route. .. rst-class:: build .. container:: - .. rst-class:: build - - * All HTML elements (including the parsed document itself) are ``tags`` - * A ``tag`` can be searched using its ``find`` or ``find_all`` methods - * This searches the descendents of the tag on which it is called. - * It takes arguments which act as *filters* on the search results + We have to incorporate our login form somewhere. - .. container:: + The home page seems like a good place. - like so:: + But we don't want to show it all the time. - tag.find(name, attrs, recursive, text, **kwargs) - tag.find_all(name, attrs, recursive, text, limit, **kwargs) + Only when we aren't logged in already. + Let's give that a whirl. -.. nextslide:: Searching by Attribute +.. nextslide:: Updating ``index_page`` -The ``find`` method allows us to pass *kwargs*. +Pyramid security provides a method that returns the id of the user who is +logged in, if any. .. rst-class:: build .. container:: - Keywords that are not among the named parameters will be considered an HTML - attribute. - - We can use this to find the column that holds our search results: + We can use that to update our home page in ``learning_journal/views.py``: .. code-block:: python - content_col = parsed.find('td', id="contentcol") + # add an import: + from pyramid.security import authenticated_userid - Add that line to our mashup script and try it out: + # and update the index_page view: + @view_config(...) + def index_page(request): + # ... get all entries here + form = None + if not authenticated_userid(request): + form = LoginForm() + return {'entries': entries, 'login_form': form} - .. code-block:: python +.. nextslide:: Update ``list.jinja2`` - #... - parsed = parse_source(html, encoding) - content_col = parsed.find("td", id="contentcol") - print content_col.prettify(encoding=encoding) +Now we have to update the template for the ``index_page`` to display the form, *if it is there* - .. code-block:: bash +.. rst-class:: build +.. container:: - (soupenv)$ python mashup.py -
    - ... -
    - ... -
    - +.. _add-on services: https://addons.heroku.com - This code is available as ``/resources/session07/mashup_2.py`` +.. nextslide:: How Heroku Works - -Parsing Restaurant Data ------------------------ - -Now that we have the records we want, we need to parse them. We want to preserve: +Heroku is predicated on interaction with a git repository. .. rst-class:: build .. container:: - We'll start by parsing out the information about the restaurant themselves: + You initialize a new Heroku app in a repository on your machine. - .. rst-class:: build + This adds Heroku as a *remote* to your repository. - * Name - * Address - * Location - * ... + When you are ready to deploy your application, you ``git push heroku + master``. - How is this information contained in our records? + Adding a few special files to your repository allows Heroku to tell what + kind of application you are creating. + It responds to your push by running an appropriate build process and then + starting your app with a command you provide. -.. nextslide:: Complex Filtering +Preparing to Run Your App +------------------------- -Each record consists of a table with a series of *rows* (``
    `` elements + It's not really suitable for a public deployment. - My solution: + Instead we'll use a more robust, production-ready server that came as one + of our dependencies: `waitress`_. - .. code-block:: python + We'll start by creating a python file that can be executed to start the + ``waitress`` server. - def has_two_tds(elem): - is_tr = elem.name == 'tr' - td_children = elem.find_all('td', recursive=False) - has_two = len(td_children) == 2 - return is_tr and has_two +.. _waitress: http://waitress.readthedocs.org/en/latest/ -.. nextslide:: Test It Out +.. nextslide:: Creating ``runapp.py`` -Let's try this out in an interpreter: +At the very top level of your application project, in the same folder where you +find ``setup.py``, create a new file: ``runapp.py`` -.. code-block:: pycon +.. code-block:: python - >>> from mashup import load_inspection_page, parse_source - >>> from mashup import restaurant_data_generator, has_two_tds - >>> html, encoding = load_inspection_page('inspection_page.html') - >>> parsed = parse_source(html, encoding) - >>> content_col = parsed.find("td", id="contentcol") - >>> records = restaurant_data_generator(content_col) - >>> rec = records[4] + import os + from paste.deploy import loadapp + from waitress import serve -.. nextslide:: Test It Out + if __name__ == "__main__": + port = int(os.environ.get("PORT", 5000)) + app = loadapp('config:production.ini', relative_to='.') -We'd like to find all table rows in that div that contain *two* cells + serve(app, host='0.0.0.0', port=port) .. rst-class:: build .. container:: - The table rows are all contained in a ``
    - - Business Name - - WORLD FRESH MARKET -
    `` children - * The text in the first cell contains the word "inspection" - * But the text does not *start* with the word "inspection" - - Let's try to write a filter function like the one above that will catch - these rows for us. -.. nextslide:: The filter +Set Up a Heroku App +------------------- -Add this new function ``is_inspection_data_row`` to ``mashup.py`` +The next step is to create a new app with heroku. .. rst-class:: build -.. code-block:: python - - def is_inspection_data_row(elem): - is_tr = elem.name == 'tr' - if not is_tr: - return False - td_children = elem.find_all('td', recursive=False) - has_four = len(td_children) == 4 - this_text = clean_data(td_children[0]).lower() - contains_word = 'inspection' in this_text - does_not_start = not this_text.startswith('inspection') - return is_tr and has_four and contains_word and does_not_start +.. container:: -.. nextslide:: Test It Out + You installed the Heroku toolbelt prior to class. -We can test this function by adding it into our script: + The toolbelt provides a command to create a new app. -.. code-block:: python + From the root of your project (where the ``setup.py`` file is) run: - for data_div in data_list: - metadata = extract_restaurant_metadata(data_div) - # UPDATE THIS BELOW HERE - inspection_rows = data_div.find_all(is_inspection_data_row) - print metadata - print len(inspection_rows) - print '*'*10 + .. code-block:: bash -.. rst-class:: build -.. container:: + (ljenv)$ heroku create + Creating rocky-atoll-9934... done, stack is cedar-14 + https://rocky-atoll-9934.herokuapp.com/ | https://git.heroku.com/rocky-atoll-9934.git + Git remote heroku added - And try running the script in your terminal: + Note that a new *remote* called ``heroku`` has been added: .. code-block:: bash - - (soupenv)$ python mashup.py - {u'Business Category': [u'Seating 0-12 - Risk Category III'], - u'Longitude': [u'122.3401786000'], u'Phone': [u'(206) 501-9554'], - u'Business Name': [u"ZACCAGNI'S"], u'Address': [u'97B PIKE ST', u'SEATTLE, WA 98101'], - u'Latitude': [u'47.6086651300']} - 0 - ********** -.. nextslide:: Building Inspection Data + $ git remote -v + heroku https://git.heroku.com/rocky-atoll-9934.git (fetch) + heroku https://git.heroku.com/rocky-atoll-9934.git (push) + +.. nextslide:: Adding PostgreSQL -Now we can isolate a list of the rows that contain inspection data. +Your application will require a database, but ``sqlite`` is not really +appropriate for production. .. rst-class:: build .. container:: - Next we need to calculate the average score, total number and highest score - for each restaurant. - - Let's add a function to ``mashup.py`` that will: - - .. rst-class:: build + For the deployed app, you'll use `PostgreSQL`_, the best open-source + database. - * Take a div containing a restaurant record - * Extract the rows containing inspection data - * Keep track of the highest score recorded - * Sum the total of all inspections - * Count the number of inspections made - * Calculate the average score for inspections - * Return the three calculated values in a dictionary + Heroku `provides an add-on`_ that supports PostgreSQL, and you'll need to + set it up. -.. nextslide:: My Solution + Again, use the Heroku Toolbelt: -Try writing this routine yourself. + .. code-block:: bash -.. code-block:: python + $ heroku addons:create heroku-postgresql:hobby-dev + Creating postgresql-amorphous-6784... done, (free) + Adding postgresql-amorphous-6784 to rocky-atoll-9934... done + Setting DATABASE_URL and restarting rocky-atoll-9934... done, v3 + Database has been created and is available + ! This database is empty. If upgrading, you can transfer + ! data from another database with pg:copy + Use `heroku addons:docs heroku-postgresql` to view documentation. - def get_score_data(elem): - inspection_rows = elem.find_all(is_inspection_data_row) - samples = len(inspection_rows) - total = high_score = average = 0 - for row in inspection_rows: - strval = clean_data(row.find_all('td')[2]) - try: - intval = int(strval) - except (ValueError, TypeError): - samples -= 1 - else: - total += intval - high_score = intval if intval > high_score else high_score - if samples: - average = total/float(samples) - return {u'Average Score': average, u'High Score': high_score, - u'Total Inspections': samples} +.. _PostgreSQL: http://www.postgresql.org +.. _provides an add-on: https://www.heroku.com/postgres -.. nextslide:: Test It Out +.. nextslide:: PostgreSQL Settings -We can now incorporate this new routine into our ``mashup`` script. +You can get information about the status of your PostgreSQL service with the +toolbelt: .. rst-class:: build .. container:: - We'll want to add the data it produces to the metadata we've already - extracted. - - .. code-block:: python - - for data_div in data_list: - metadata = extract_restaurant_metadata(data_div) - inspection_data = get_score_data(data_div) - metadata.update(inspection_data) - print metadata - - And test it out at the command line: - .. code-block:: bash - (soupenv)$ python mashup.py + (ljenv)$ heroku pg + === DATABASE_URL + Plan: Hobby-dev ... - {u'Business Category': [u'Seating 0-12 - Risk Category III'], - u'Longitude': [u'122.3401786000'], u'High Score': 0, - u'Phone': [u'(206) 501-9554'], u'Business Name': [u"ZACCAGNI'S"], - u'Total Inspections': 0, u'Address': [u'97B PIKE ST', u'SEATTLE, WA 98101'], - u'Latitude': [u'47.6086651300'], u'Average Score': 0} - -Break Time ----------- + Data Size: 6.4 MB + Tables: 0 + Rows: 0/10000 (In compliance) -Once you have this working, take a break. + And there is also information about the configuration for the database (and + your app): -When we return, we'll try a saner approach to getting data from online + .. code-block:: bash + (ljenv)$ heroku config + === rocky-atoll-9934 Config Vars + DATABASE_URL: postgres://:@:/ +Configuration for Heroku +------------------------ -Another Approach -================ +Notice that the configuration for our application on Heroku provides a specific +database URL. -.. rst-class:: left +.. rst-class:: build .. container:: - Scraping web pages is tedious and inherently brittle - - .. rst-class:: build - .. container:: - - The owner of the website updates their layout, your code breaks - - But there is another way to get information from the web in a more normalized - fashion + We could copy this value and paste it into our ``production.ini`` + configuration file. - .. rst-class:: centered + But if we do that, then we will be storing that value in GitHub, where + anyone at all can see it. - **Web Services** + That's not particularly secure. + Luckily, Heroku provides configuration like the database URL in + *environment variables* that we can read in Python. -Web Services ------------- + In fact, we've already done this with our ``runapp.py`` script: -"a software system designed to support interoperable machine-to-machine -interaction over a network" - W3C - -.. rst-class:: build - -* provides a defined set of calls -* returns structured data + .. code-block:: python + port = int(os.environ.get("PORT", 5000)) -.. nextslide:: Early Web Services +.. nextslide:: Adjusting Our DB Configuration -RSS is one of the earliest forms of Web Services +The Python standard library provides ``os.environ`` to allow access to +*environment variables* from Python code. .. rst-class:: build .. container:: - .. rst-class:: build - - * First known as ``RDF Site Summary`` - * Became ``Really Simple Syndication`` - * More at http://www.rss-specification.com/rss-specifications.htm + This attribute is a dictionary keyed by the name of the variable. - A single web-based *endpoint* provides a dynamically updated listing of - content + We can use it to gain access to configuration provided by Heroku. - Implemented in pure HTTP. Returns XML + Update ``learning_journal/__init__.py`` like so: - **Atom** is a competing, but similar standard - - There's a solid Python library for consuming RSS: `feedparser`_. + .. code-block:: python -.. _feedparser: https://pythonhosted.org/feedparser/ + # import the os module: + import os + # then look up the value we need for the database url + def main(global_config, **settings): + # ... + if 'DATABASE_URL' in os.environ: + settings['sqlalchemy.url'] = os.environ['DATABASE_URL'] + engine = engine_from_config(settings, 'sqlalchemy.') + # ... -.. nextslide:: RSS Document +.. nextslide:: Adjust ``initializedb.py`` -.. code-block:: xml +We'll need to make the same changes to +``learning_journal/scripts/initializedb.py``: - - - - RSS Title - This is an example of an RSS feed - http://www.someexamplerssdomain.com/main.html - Mon, 06 Sep 2010 00:01:00 +0000 - Mon, 06 Sep 2009 16:45:00 +0000 - 1800 +.. code-block:: python - - Example entry - Here is some text containing an interesting description. - http://www.wikipedia.org/ - unique string per item - Mon, 06 Sep 2009 16:45:00 +0000 - - ... - - + def main(argv=sys.argv): + # ... + settings = get_appsettings(config_uri, options=options) + if 'DATABASE_URL' in os.environ: + settings['sqlalchemy.url'] = os.environ['DATABASE_URL'] + engine = engine_from_config(settings, 'sqlalchemy.') + # ... -.. nextslide:: XML-RPC +.. nextslide:: Additional Security -RSS provides a pre-defined data set, can we also allow *calling procedures* to -get more dynamic data? +This mechanism allows us to defer other sensitive values such as the password +for our initial user: .. rst-class:: build .. container:: - We can! Enter XML-RPC (Remote Procedure Call) + .. code-block:: python - .. rst-class:: build + # in learning_journal/scripts/initializedb.py + with transaction.manager: + password = os.environ.get('ADMIN_PASSWORD', 'admin') + encrypted = password_context.encrypt(password) + admin = User(name=u'admin', password=encrypted) + DBSession.add(admin) - * Provides a set of defined procedures which can take arguments - * Calls are made via HTTP GET, by passing an XML document - * Returns from a call are sent to the client in XML + And for the secret value for our AuthTktAuthenticationPolicy - In python, you can access XML-RPC services using `xmlrpclib`_ from the - standard library + .. code-block:: python - We will not cover XML-RPC here, though. + # in learning_journal/__init__.py + def main(global_config, **settings): + # ... + secret = os.environ.get('AUTH_SECRET', 'somesecret') + ... + authentication_policy=AuthTktAuthenticationPolicy(secret) + # ... -.. _xmlrpclib: https://docs.python.org/2/library/xmlrpclib.html +.. nextslide:: Heroku Config -.. nextslide:: Beyond XML-RPC +We will now be looking for three values from the OS environment: .. rst-class:: build -.. container:: - - .. rst-class:: build - * XML-RPC allows introspection - * XML-RPC forces you to introspect to get information - * **Wouldn't it be nice to get that automatically?** - * XML-RPC provides data types - * XML-RPC provides only *certain* data types - * **Wouldn't it be nice to have an extensible system for types?** - * XML-RPC allows calling methods with parameters - * XML-RPC only allows calling methods, nothing else - * **wouldn't it be nice to have contextual data as well?** +* DATABASE_URL +* ADMIN_PASSWORD +* AUTH_SECRET - .. rst-class:: centered - - **Enter SOAP: Simple Object Access Protocol** - -.. nextslide:: SOAP +.. rst-class:: build +.. container:: -SOAP extends XML-RPC in a couple of useful ways: + The ``DATABASE_URL`` value is set for us by the PosgreSQL add-on. -.. rst-class:: build + But the other two are not. We must set them ourselves using ``heroku + config:set``: -* It uses Web Services Description Language (WSDL) to provide meta-data about - an entire service in a machine-readable format (Automatic introspection) + .. code-block:: bash -* It establishes a method for extending available data types using XML - namespaces + (ljenv)$ heroku config:set ADMIN_PASSWORD= + ... + (ljenv)$ heroku config:set AUTH_SECRET= + ... -* It provides a wrapper around method calls called the **envelope**, which - allows the inclusion of a **header** with system meta-data that can be used - by the application +.. nextslide:: Checking Configuration +You can see the values that you have set at any time using ``heroku config``: -.. nextslide:: SOAP in Python +.. code-block:: bash -There is no standard library module that supports SOAP directly. + (ljenv)$ heroku config + === rocky-atoll-9934 Config Vars + ADMIN_PASSWORD: + AUTH_SECRET: + DATABASE_URL: .. rst-class:: build .. container:: - .. rst-class:: build + These values are sent and received using secure transport. - * The best-known and best-supported module available is **Suds** - * The homepage is https://fedorahosted.org/suds/ - * It can be installed using ``easy_install`` or ``pip install`` + You do not need to worry about them being intercepted. - But we're going to move on + This mechanism allows you to place important configuration values outside + the code for your application. -.. nextslide:: Afterword +.. nextslide:: Installing Dependencies -SOAP (and XML-RPC) have some problems: +We've been handling our application's dependencies by adding them to +``setup.py``. .. rst-class:: build .. container:: - .. rst-class:: build - - * XML is pretty damned inefficient as a data transfer medium - * Why should I need to know method names? - * If I can discover method names at all, I have to read a WSDL to do it? + It's a good idea to install all of these before attempting to run our app. - Suds is the best we have, and it hasn't been updated since Sept. 2010. + The ``pip`` package manager allows us to dump a list of the packages we've + installed in a virtual environment using the ``freeze`` command: - There appear to be maintenance forks of Suds, but they are sketchy. + .. code-block:: bash + + (ljenv)$ pip freeze + ... + zope.interface==4.1.3 + zope.sqlalchemy==0.7.6 -.. nextslide:: If Not XML, Then What? + We can tell heroku to install these dependencies by creating a file called + ``requirements.txt`` at the root of our project repository: -.. rst-class:: build large centered + .. code-block:: bash + + (ljenv)$ pip freeze > requirements.txt -**JSON** + Add this file to your repository and commit the changes. -JSON ----- +.. nextslide:: Heroku-specific Dependencies -JavaScript Object Notation: +But there is also a new dependency we've added that is only needed for Heroku. .. rst-class:: build .. container:: - .. rst-class:: build - - * a lightweight data-interchange format - * easy for humans to read and write - * easy for machines to parse and generate + Because we are using a PostgreSQL database, we need to install the + ``psycopg2`` package, which handles communicating with the database. - Based on Two Structures: + We don't want to install this locally, though, where we use sqlite. - * object: ``{ string: value, ...}`` - * array: ``[value, value, ]`` + Go ahead and add one more line to ``requirements.txt`` with the latest + version of the ``pyscopg2`` package: - .. rst-class:: centered + .. code-block:: bash - pythonic, no? + psycopg2==2.6.1 + Commit the change to your repository. -.. nextslide:: JSON Data Types +Deployment +---------- -JSON provides a few basic data types (see http://json.org/): +We are now ready to deploy our application. .. rst-class:: build .. container:: - .. rst-class:: build - - * string: unicode, anything but ", \\ and control characters - * number: any number, but json does not use octal or hexadecimal - * object, array (we've seen these above) - * true - * false - * null + All we need to do is push our repository to the ``heroku`` master: - .. rst-class:: centered + .. code-block:: bash - **No date type? OMGWTF??!!1!1** + (ljenv)$ git push heroku master + ... + remote: Building source: + remote: + remote: -----> Python app detected + ... + remote: Verifying deploy... done. + To https://git.heroku.com/rocky-atoll-9934.git + b59b7c3..54f7e4d master -> master -.. nextslide:: Dates in JSON +.. nextslide:: Using ``heroku run`` -You have two options: +You can use the ``run`` command to execute arbitrary commands in the Heroku +environment. .. rst-class:: build .. container:: - .. container:: + You can use this to initialize the database, using the shell script you + created earlier: - Option 1 - Unix Epoch Time (number): + .. code-block:: bash - .. code-block:: python + (ljenv)$ heroku run ./build_db + ... - >>> import time - >>> time.time() - 1358212616.7691269 + This will install our application and then run the database initialization + script. - .. container:: +.. nextslide:: Test Your Results - Option 2 - ISO 8661 (string): +At this point, you should be ready to view your application online. - .. code-block:: python +.. rst-class:: build +.. container:: - >>> import datetime - >>> datetime.datetime.now().isoformat() - '2013-01-14T17:18:10.727240' + Use the ``open`` command from heroku to open your website in a browser: + .. code-block:: bash -JSON in Python --------------- + (ljenv)$ heroku open -You can encode python to json, and decode json back to python: + If you don't see your application, check to see if it is running: -.. rst-class:: build -.. container:: + .. code-block:: bash - .. code-block:: python + (ljenv)$ heroku ps + === web (1X): `./run` + web.1: up 2015/01/18 16:44:37 (~ 31m ago) - >>> import json - >>> array = [1,2,3] - >>> json.dumps(array) - >>> '[1, 2, 3]' - >>> orig = {'foo': [1,2,3], 'bar': u'my resumé', 'baz': True} - >>> encoded = json.dumps(orig) - >>> encoded - '{"baz": true, "foo": [1, 2, 3], "bar": "my resum\\u00e9"}' - >>> decoded = json.loads(encoded) - >>> decoded == orig - True + If you get no results, use the ``scale`` command to try turning on a web + *dyno*: - Customizing the encoder or decoder class allows for specialized serializations + .. code-block:: bash + (ljenv)$ heroku scale web=1 + Scaling dynos... done, now running web at 1:1X. -.. nextslide:: +.. nextslide:: A Word About Scaling -the json module also supports reading and writing to *file-like objects* via -``json.dump(fp)`` and ``json.load(fp)`` (note the missing 's') +Heroku pricing is dependent on the number of *dynos* you are running. .. rst-class:: build .. container:: - Remember duck-typing. Anything with a ``.write`` and a ``.read`` method is - *file-like* + So long as you only run one dyno per application, you will remain in the + free tier. + + Scaling above one dyno will begin to incur costs. - This usage can be much more memory-friendly with large files/sources + **Pay attention to the number of dynos you have running**. -.. nextslide:: What about WSDL? +.. nextslide:: Troubleshooting -SOAP was invented in part to provide completely machine-readable -interoperability. +Troubleshooting problems with Heroku deployment can be challenging. .. rst-class:: build .. container:: - *Does that really work in real life?* + Your most powerful tool is the ``logs`` command: - .. rst-class:: centered + .. code-block:: bash - Hardly ever + (ljenv)$ heroku logs + ... + 2015-01-19T01:17:59.443720+00:00 app[web.1]: serving on http://0.0.0.0:53843 + 2015-01-19T01:17:59.505003+00:00 heroku[web.1]: State changed from starting to update - Another reason was to provide extensibility via custom types + This command will print the last 50 or so lines of logging from your + application. - *Does that really work in real life?* + You can use the ``-t`` flag to *tail* the logs. - .. rst-class:: centered + This will continually update log entries to your terminal as you interact + with the application. - Hardly ever +.. nextslide:: Revel In Your Glory -.. nextslide:: Why Do All The Work? - -So, if neither of these goals is really achieved by using SOAP, why pay all -the overhead required to use the protocol? +Try logging in to your application with the password you set up in Heroku +configuration. .. rst-class:: build .. container:: - Is there another way we could consider approaching the problem? - - .. rst-class:: centered - - **Enter REST** + Once you are logged in, try adding an entry or two. + You are now off to the races! -REST ----- + .. rst-class:: center -.. rst-class:: centered + **Congratulations** -**Representational State Transfer** +Adding Polish +============= -.. rst-class:: build +.. rst-class:: left .. container:: - .. rst-class:: build + So we have now deployed a running application. - * Originally described by Roy T. Fielding (worth reading) - * Use HTTP for what it can do - * Read more in `RESTful Web Services `_\* + .. rst-class:: build + .. container:: - \* Seriously. Buy it and read it + But there are a number of things we can do to make the application + better. -.. nextslide:: A Comparison + Let's start by adding a way to log out. -The XML-RCP/SOAP way: -.. rst-class:: build +Adding Logout +------------- -* POST /getComment HTTP/1.1 -* POST /getComments HTTP/1.1 -* POST /addComment HTTP/1.1 -* POST /editComment HTTP/1.1 -* POST /deleteComment HTTP/1.1 +Our ``login`` view is already set up to work for logout. .. rst-class:: build .. container:: - The RESTful way: + What is the logical path taken if that view is accessed via ``GET``? - .. rst-class:: build + All we need to do is add a view_config that allows that. + + Open ``learning_journal/views.py`` and make these changes: - * GET /comment/ HTTP/1.1 - * GET /comment HTTP/1.1 - * POST /comment HTTP/1.1 - * PUT /comment/ HTTP/1.1 - * DELETE /comment/ HTTP/1.1 + .. code-block:: python + @view_config(route_name='auth', match_param='action=in', renderer='string', + request_method='POST') # <-- THIS IS ALREADY THERE + # ADD THE FOLLOWING LINE + @view_config(route_name='auth', match_param='action=out', renderer='string') + # UPDATE THE VIEW FUNCTION NAME + def sign_in_out(request): + # ... -.. nextslide:: ROA +.. nextslide:: Re-Deploy -REST is a **Resource Oriented Architecture** +The chief advantage of Heroku is that we can re-deploy with a single command. .. rst-class:: build .. container:: - The URL represents the *resource* we are working with + Add and commit your changes to git. - The HTTP Method indicates the ``action`` to be taken + Then re-deploy by pushing to the ``heroku master``: - The HTTP Code returned tells us the ``result`` (whether success or failure) + .. code-block:: bash -.. nextslide:: HTTP Codes Revisited + (ljenv)$ git push heroku master -.. rst-class:: build -.. container:: + Once that completes, you should be able to reload your application in the + browser. - POST /comment HTTP/1.1 (creating a new comment): + Visit the following URL path to test log out: - .. rst-class:: build + * /sign/out - * Success: ``HTTP/1.1 201 Created`` - * Failure (unauthorized): ``HTTP/1.1 401 Unauthorized`` - * Failure (NotImplemented): ``HTTP/1.1 405 Not Allowed`` - * Failure (ValueError): ``HTTP/1.1 406 Not Acceptable`` +Hide UI for Anonymous +--------------------- - PUT /comment/ HTTP/1.1 (edit comment): +Another improvement we can make is to hide UI that is not available for users +who are not logged in. - .. rst-class:: build +.. rst-class:: build +.. container:: - * Success: ``HTTP/1.1 200 OK`` - * Failure: ``HTTP/1.1 409 Conflict`` + The first step is to update our ``detail`` view to tell us if someone is + logged in: - DELETE /comment/ HTTP/1.1 (delete comment): + .. code-block:: python - .. rst-class:: build + # learning_journal/views.py + @view_config(route_name='detail', renderer='templates/detail.jinja2') + def view(request): + # ... + logged_in = authenticated_userid(request) + return {'entry': entry, 'logged_in': logged_in} - * Success: ``HTTP/1.1 204 No Content`` + The ``authenticated_userid`` function returns the id of the logged in user, + if there is one, and ``None`` if there is not. + We can use that. -Playing With REST ------------------ +.. nextslide:: Hide "Create Entry" UI -Let's take a moment to play with REST. +First we can hide the UI for creating a new entry: .. rst-class:: build .. container:: - We'll use a common, public API provided by Google. + Edit ``templates/list.jinja2``: - .. rst-class:: centered + .. code-block:: jinja + + {% extends "layout.jinja2" %} + {% block body %} + + {% if not login_form %} +

    New Entry

    + {% endif %} + {% endblock %} - **Geocoding** + This relies on the fact that the login form will only be present if there + is **not** an authenticated user. -.. nextslide:: Geocoding with Google APIs +.. nextslide:: Hide "Edit Entry" UI -https://developers.google.com/maps/documentation/geocoding +Next, we can hide the UI for editing an existing entry: .. rst-class:: build .. container:: - Open a python interpreter using our virtualenv:: - - (soupenv)$ python + Edit ``templates/detail.jinja2``: - .. code-block:: pycon + .. code-block:: jinja - >>> import requests - >>> import json - >>> from pprint import pprint - >>> url = 'http://maps.googleapis.com/maps/api/geocode/json' - >>> addr = '1325 4th Ave, Seattle, 98101' - >>> parameters = {'address': addr, 'sensor': 'false' } - >>> resp = requests.get(url, params=parameters) - >>> data = json.loads(resp.text) - >>> if data['status'] == 'OK': - ... pprint(data) + {% extends "layout.jinja2" %} + {% block body %} + +

    + Go Back + {% if logged_in %} + :: + + Edit Entry + {% endif %} +

    + {% endblock %} +Format Entries +-------------- -.. nextslide:: Reverse Geocoding - -You can do the same thing in reverse, supply latitude and longitude and get -back address information: +It would be nice if our journal entries could have HTML formatting. .. rst-class:: build .. container:: - .. code-block:: pycon + We could write HTML by hand in the body field, but that'd be a pain. - >>> location = data['results'][0]['geometry']['location'] - >>> latlng="{lat},{lng}".format(**location) - >>> parameters = {'latlng': latlng, 'sensor': 'false'} - >>> resp = requests.get(url, params=paramters) - >>> data = json.loads(resp.text) - >>> if data['status'] == 'OK': - ... pprint(data) + Instead, let's allow ourselves to write entries `in Markdown`_, a popular + markup syntax used by GitHub and many other websites. - Notice that there are a number of results returned, ordered from most specific - to least. + .. _in Markdown: http://daringfireball.net/projects/markdown/syntax + Python provides several libraries that implement markdown formatting. -Mashing It Up -------------- + They will take text that contains markdown formatting and convert it to + HTML. -Google's geocoding data is quite nice. + Let's use one. + +.. nextslide:: Adding the Dependency + +The first step, is to pick a package and add it to our dependencies. .. rst-class:: build .. container:: - But it's not in a format we can use directly to create a map + My recommendation is the `markdown`_ python library. - For that we need `geojson` + Open ``setup.py`` and add the package to the ``requires`` list: - Moreover, formatting the data for all those requests is going to get - tedious. + .. code-block:: python - Luckily, people create *wrappers* for popular REST apis like google's - geocoding service. + requires = [ + # ... + 'cryptacular', + 'markdown', # <-- ADD THIS + ] - Once such wrapper is `geocoder`_, which provides not only google's service, - but many others under a single umbrella. + We'll test this locally first, so go ahead and re-install your app: -.. _geocoder: http://geocoder.readthedocs.org/en/latest/ -.. _geojson: http://geojson.org + .. code-block:: bash -.. nextslide:: Install ``geocoder`` + (ljenv)$ python setup.py develop + ... + Finished processing dependencies for learning-journal==0.0 -Install geocoder into your ``soupenv`` so that it's available to use: +.. _markdown: https://pythonhosted.org/Markdown/ -.. code-block:: bash +.. nextslide:: Jinja2 Filters - (soupenv)$ pip install geocoder +We've seen before how Jinja2 provides a number of filters for values when +rendering templates. .. rst-class:: build .. container:: - Our final step for tonight will be to geocode the results we have scraped - from the inspection site. + A nice feature of the templating language is that it also allows you to + `create your own filters`_. - We'll then convert that to ``geojson``, insert our own properties and map - the results. + Remember the template syntax for a filter: - Let's begin by converting our script so that what we have so far is - contained in a generator function + .. code-block:: jinja - We'll eventually sort our results and generate the top 10 or so for - geocoding. + {{ value|filter(arg1, ..., argN) }} - Open up ``mashup.py`` and copy everthing in the ``main`` block. + A filter is simply a function that takes the value to the left of the ``|`` + character as a first argument, and any supplied arguments as the second and + beyond: -.. nextslide:: Make a Generator Function - -Add a new function ``result_generator`` to the ``mashup.py`` script. Paste the -code you copied from the ``main`` block and then update it a bit: - -.. rst-class:: build -.. code-block:: python + .. code-block:: python - def result_generator(count): - use_params = { - 'Inspection_Start': '2/1/2013', - 'Inspection_End': '2/1/2015', - 'Zip_Code': '98101' - } - # html, encoding = get_inspection_page(**use_params) - html, encoding = load_inspection_page('inspection_page.html') - parsed = parse_source(html, encoding) - content_col = parsed.find("td", id="contentcol") - data_list = restaurant_data_generator(content_col) - for data_div in data_list[:count]: - metadata = extract_restaurant_metadata(data_div) - inspection_data = get_score_data(data_div) - metadata.update(inspection_data) - yield metadata + def filter(value, arg1, ..., argN): + # do something to value here +.. _create your own filters: http://jinja.pocoo.org/docs/dev/api/#custom-filters -.. nextslide:: Test It Out +.. nextslide:: Our Markdown Filter -Update the ``main`` block of your ``mashup.py`` script to use the new function: +Creating a ``markdown`` filter will allow us to convert plain text stored in +the database to HTML at template rendering time. .. rst-class:: build .. container:: + Open ``learning_journal/views.py`` and add the following: + .. code-block:: python - if __name__ == '__main__': - for result in result_generator(10): - print result + # add two imports: + from jinja2 import Markup + import markdown + # and a function + def render_markdown(content): + output = Markup(markdown.markdown(content)) + return output - Then run your script and verify that the only thing that has changed is the - number of results that print. + The ``Markup`` class from jinja2 marks a string with HTML tags as "safe". - .. code-block:: bash - - (soupenv)$ python mashup.py - # you should see 10 dictionaries print here. + This prevents the tags from being *escaped* when they are rendered into a + page. -Add Geocoding -------------- +.. nextslide:: Register the Filter -The API for geocoding with ``geocoder`` is the same for all providers. +In order for ``Jinja2`` to be aware that our filter exists, we need to register +it. .. rst-class:: build .. container:: - You give an address, it returns geocoded data. + In Pyramid, we do this in configuration. - You provide latitude and longitude, it provides address data - - .. code-block:: python - - >>> response = geocoder.google(
    ) - >>> response.json - # json result data - >>> response.geojson - # geojson result data + Open ``development.ini`` and edit it as follows: -.. nextslide:: Adding The Function + .. code-block:: ini -Let's add a new function ``get_geojson`` to ``mashup.py`` - -.. rst-class:: build -.. container:: - - It will - - .. rst-class:: build + [app:main] + ... + jinja2.filters = + markdown = learning_journal.views.render_markdown - * Take a result from our search as it's input - * Get geocoding data from google using the address of the restaurant - * Return the geojson representation of that data + This informs the main app that we wish to register a jinja2 filter. - Try to write this function on your own + We will call it ``markdown`` and it will be embodied by the function we + just wrote. - .. code-block:: python - - def get_geojson(result): - address = " ".join(result.get('Address', '')) - if not address: - return None - geocoded = geocoder.google(address) - return geocoded.geojson +.. nextslide:: Use Your Filter -.. nextslide:: Testing It Out - -Next, update our ``main`` block to get the geojson for each result and print -it: +To see the results of our work, we'll need to use the filter in a template +somewhere. .. rst-class:: build .. container:: - .. code-block:: python + I suggest using it in the ``learning_journal/templates/detail.jinja2`` + template: - if __name__ == '__main__': - for result in result_generator(10): - geojson = get_geojson(result) - print geojson + .. code-block:: jinja - Then test your results by running your script: + {% extends "layout.jinja2" %} + {% block body %} +
    + +

    {{ entry.body|markdown }}

    + +
    +

    + + {% endblock %} - .. code-block:: bash - - (soupenv)$ python mashup.py - {'geometry': {'type': 'Point', 'coordinates': [-122.3393005, 47.6134378]}, - 'type': 'Feature', 'properties': {'neighborhood': 'Belltown', - 'encoding': 'utf-8', 'county': 'King County', 'city_long': 'Seattle', - 'lng': -122.3393005, 'quality': u'street_address', 'city': 'Seattle', - 'confidence': 9, 'state': 'WA', 'location': u'1933 5TH AVE SEATTLE, WA 98101', - 'provider': 'google', 'housenumber': '1933', 'accuracy': 'ROOFTOP', - 'status': 'OK', 'state_long': 'Washington', - 'address': '1933 5th Avenue, Seattle, WA 98101, USA', 'lat': 47.6134378, - 'postal': '98101', 'ok': True, 'road_long': '5th Avenue', 'country': 'US', - 'country_long': 'United States', 'street': '5th Ave'}, - 'bbox': [-122.3406494802915, 47.6120888197085, -122.3379515197085, 47.6147867802915]} +.. nextslide:: Test Your Results + +Start up your application, and create an entry using valid markdown formatting: -.. nextslide:: Update Geojson Properties +.. code-block:: bash -The ``properties`` of our geojson records are filled with data we don't really -care about. + (ljenv)$ pserve development.ini + Starting server in PID 84331. + serving on http://0.0.0.0:6543 .. rst-class:: build .. container:: - Let's replace that information with some of the metadata from our - inspection results. - - We'll update our ``get_geojson`` function so that it: + Once you save your entry, you should be able to see it with actual + formatting: headers, bulleted lists, links, and so on. - .. rst-class:: build + That makes quite a difference. - * Builds a dictionary containing only the values we want from our - inspection record. - * Converts list values to strings (geojson requires this) - * Replaces the 'properties' of our geojson with this new data - * Returns the modified geojson record + Go ahead and add the same filter registration to ``production.ini`` -.. nextslide:: Write the Function + Then commit your changes and redeploy: -See if you can make the updates on your own. + .. code-block:: bash -.. rst-class:: build -.. code-block:: python + (ljenv)$ git push heroku master - def get_geojson(result): - # ... - geocoded = geocoder.google(address) - geojson = geocoded.geojson - inspection_data = {} - use_keys = ( - 'Business Name', 'Average Score', 'Total Inspections', 'High Score' - ) - for key, val in result.items(): - if key not in use_keys: - continue - if isinstance(val, list): - val = " ".join(val) - inspection_data[key] = val - geojson['properties'] = inspection_data - return geojson -.. nextslide:: Making Mappable Data +Syntax Highlighting +------------------- -We are now generating a series of ``geojson`` *Feature* objects. +The purpose of this journal is to allow you to write entries about the things +you learn in this class and elsewhere. .. rst-class:: build .. container:: - To map these objects, we'll need to create a file which contains a - ``geojson`` *FeatureCollection*. + Markdown formatting allows for "preformatted" blocks of text like code + samples. - The structure of such a collection looks like this: + But there is nothing in markdown that handles *colorizing* code. - .. code-block:: json - - {'type': 'FeatureCollection', 'features': [...]} + Luckily, the markdown package allows for extensions, and one of these + supports `colorization`_. - Let's update our ``main`` function to append each feature to such a - structure. + It requires the `pygments`_ library - Then we can dump the structure as ``json`` to a file. + Let's set this up next. -.. nextslide:: Update the Script +.. _colorization: https://pythonhosted.org/Markdown/extensions/code_hilite.html +.. _pygments: http://pygments.org -In ``mashup.py`` update the ``main`` block like so: +.. nextslide:: Install the Dependency + +Again, we need to install our new dependency first. .. rst-class:: build .. container:: - .. code-block:: python + Add the following to ``requires`` in ``setup.py``: - # add an import at the top: - import json + .. code-block:: python - if __name__ == '__main__': - total_result = {'type': 'FeatureCollection', 'features': []} - for result in result_generator(10): - geojson = get_geojson(result) - total_result['features'].append(geojson) - with open('my_map.json', 'w') as fh: - json.dump(total_result, fh) + requires = [ + # ... + 'markdown', + 'pygments', # <-- ADD THIS LINE + ] - When you run the script nothing will print, but the new file will appear. + Then re-install your app to pick up the software: .. code-block:: bash - (soupenv)$ python mashup.py + (ljenv)$ python setup.py develop + ... + Finished processing dependencies for learning-journal==0.0 - This script is available as ``resources/session07/mashup_5.py`` +.. nextslide:: Add to Our Filter -Display the Results -------------------- - -Once the new file is written you are ready to display your results. +The next step is to extend our markdown filter in ``learning_journal/views.py`` +with this feature. .. rst-class:: build .. container:: - Open your web browser and go to http://geojson.io - - Then drag and drop the new file you wrote onto the map you see there. - - .. figure:: /_static/geojson-io.png - :align: center - :width: 75% - -Wrap Up -------- + .. code-block:: python -We've built a simple mashup combining data from different sources. + def render_markdown(content): + output = Markup( + markdown.markdown( + content, + extensions=['codehilite(pygments_style=colorful)', 'fenced_code'] + ) + ) + return output -.. rst-class:: build -.. container:: + Now, you'll be able to make highlighted code blocks just like in GitHub: - We scraped health inspection data from the King County government site. + .. code-block:: text - We geocoded that data. + ```python + def foo(x, y): + return x**y + ``` - And we've displayed the results on a map. +.. nextslide:: Add CSS - What other sources of data might we choose to combine? +Code highlighting works by putting HTML ```` tags with special CSS +classes around bits of your code. - Check out `programmable web `_ - to see some of the possibilities +.. rst-class:: build +.. container:: + We need to generate and add the css to support this. + You can use the ``pygmentize`` command from pygments to + `generate the css`_. + Make sure you are in the directory with ``setup.py`` when you run this: -Homework -======== + .. code-block:: bash + + (ljenv)$ pygmentize -f html -S colorful -a .codehilite \ + >> learning_journal/static/styles.css -.. rst-class:: left -.. container:: + The styles will be printed to standard out. - For your homework this week, you'll be polishing this mashup. + The ``>>`` shell operator *appends* the output to the file named. - .. rst-class:: build - .. container:: +.. _generate the css: http://pygments.org/docs/cmdline/#generating-styles - Begin by sorting the results of our search by the average score. +.. nextslide:: Try It Out - Then, update your script to allow the user to choose how to sort, by - average, high score or most inspections:: +Go ahead and restart your application and see the difference a little style +makes: - (soupenv)$ python mashup.py highscore +.. code-block:: bash - Next, allow the user to choose how many results to map:: + (ljenv)$ pserve development.ini + Starting server in PID 84331. + serving on http://0.0.0.0:6543 - (soupenv)$ python mashup.py highscore 25 +.. rst-class:: build +.. container:: - Or allow them to reverse the results, showing the lowest scores first:: + Try writing an entry with a little Python code in it. - (soupenv)$ python mashup.py highscore 25 reverse + Python is not the only language available. - If you're feeling particularly adventurous, see if you can use the - `argparse`_ module from the standard library to handle command line - arguments + Any syntax covered by `pygments lexers`_ is available, just use the + *shortname* from a lexer to get that type of style highlighting. -.. _argparse: https://docs.python.org/2/library/argparse.html#module-argparse +.. _pygments lexers: http://pygments.org/docs/lexers/ -More Fun --------- +.. nextslide:: Deploy Your Changes -Next, try adding a bit of information to your map by setting the -``marker-color`` property. This will display a marker with the provided -css-style color (``#FF0000``) +When you've got this working as you wish, go ahead and deploy it. .. rst-class:: build .. container:: - See if you can make the color change according to the values used for the - sorting of the list. Either vary the intensity of the color, or the hue. + Add and commit all the changes you've made. - Finally, if you are feeling particularly frisky, you can update your script - to automatically open a browser window with your map loaded on - *geojson.io*. + Then push your results to the ``heroku master``: - To do this, you'll want to read about the `webbrowser`_ module from the - standard library. + .. code-block:: bash + + (ljenv)$ git push heroku master - In addition, you'll want to read up on using the URL parameters API for - *geojson.io*. Click on the **help** tab in the sidebar to view the - information. +Wrap Up +------- - You will also need to learn about how to properly quote special characters - for a URL, using the `urllib`_ ``quote`` function. +And that's probably enough for now. -.. _urllib: https://docs.python.org/2/library/urllib.html#urllib.quote -.. _webbrowser: https://docs.python.org/2/library/webbrowser.html +.. rst-class:: build +.. container:: -Submitting Your Work --------------------- + There's no homework for you to submit this week. You've worked hard enough. -Create a github repository to contain your mashup work. Start by populating it -with the script as we finished it today (mashup_5.py). + Take the week to review what we've done and make sure you have a solid + understanding of it. -As you implement the above features, commit early and commit often. + If you wish, play with HTML and CSS to make your journal more personalized. -When you're ready for us to look it over, email a link to your repository to -Maria and I. + In preparation for our work with Django next week, I'd like you to get + started a bit ahead of time. -Final Thoughts --------------- + Please read and follow along with this `basic intro to Django`_. -In preparation for our work next week, I'd like you to get started a bit ahead -of time. + .. rst-class:: centered -Please read and follow along with this `basic intro to Django`_. + **See You Then** .. _basic intro to Django: django_intro.html diff --git a/html/_sources/presentations/session08.txt b/html/_sources/presentations/session08.txt index 29b3a225..76a08bb7 100644 --- a/html/_sources/presentations/session08.txt +++ b/html/_sources/presentations/session08.txt @@ -108,15 +108,22 @@ Clearly the most popular full-stack Python web framework at this time Django releases in the last 12+ months (a short list): .. rst-class:: build +.. container:: + + .. rst-class:: build -* 1.7.4 (January 2015) -* 1.6.9 (January 2015) -* 1.7.1 (October 2014) -* 1.6.7 (September 2014) -* 1.7 (September 2014) -* 1.6.5 (May 2014) -* 1.6.2 (February 2014) -* 1.6 (November 2013) + * 1.9 (December 2015) + * 1.8.7 (November 2015) + * 1.7.11 (November 2015) + * 1.8.5 (October 2015) + * 1.7.10 (August 2015) + * 1.8.3 (July 2015) + * 1.8 (April 2015) + * 1.7.7 (March 2015) + * 1.7.4 (January 2014) + + Django 1.8 is the second *Long Term Support* version, with a guaranteed support + period of three years. .. nextslide:: Great Documentation @@ -214,7 +221,7 @@ fall into. class Category(models.Model): name = models.CharField(max_length=128) description = models.TextField(blank=True) - posts = models.ManyToManyField(Post, blank=True, null=True, + posts = models.ManyToManyField(Post, blank=True, related_name='categories') @@ -248,7 +255,7 @@ To get these changes set up, we now add a new migration. .. code-block:: bash - (djangoenv)$ python manage.py makemigrations + (djangoenv)$ ./manage.py makemigrations Migrations for 'myblog': 0002_category.py: - Create model Category @@ -263,10 +270,11 @@ management command. .. code-block:: bash - (djangoenv)$ python manage.py migrate + (djangoenv)$ ./manage.py migrate Operations to perform: - Apply all migrations: admin, myblog, contenttypes, auth, sessions + Apply all migrations: sessions, contenttypes, admin, myblog, auth Running migrations: + Rendering model states... DONE Applying myblog.0002_category... OK You can even look at the migration file you just applied, @@ -291,10 +299,10 @@ Start with a test: # and the test case and test class CategoryTestCase(TestCase): - def test_unicode(self): + def test_string_representation(self): expected = "A Category" c1 = Category(name=expected) - actual = unicode(c1) + actual = str(c1) self.assertEqual(expected, actual) .. nextslide:: Make it Pass @@ -307,7 +315,7 @@ When you run your tests, you now have two, and one is failing because the .. code-block:: bash - (djangoenv)$ python manage.py test myblog + (djangoenv)$ ./manage.py test myblog Creating test database for alias 'default'... ... @@ -322,7 +330,7 @@ When you run your tests, you now have two, and one is failing because the class Category(models.Model): #... - def __unicode__(self): + def __str__(self): return self.name @@ -350,7 +358,7 @@ Fire up the Django development server and see what you have in the admin: .. code-block:: bash - (djangoenv)$ python manage.py runserver + (djangoenv)$ ./manage.py runserver Validating models... ... Starting development server at http://127.0.0.1:8000/ @@ -468,35 +476,14 @@ Create a new file ``urls.py`` inside the ``myblog`` app package. .. code-block:: python - from django.conf.urls import patterns, url + from django.conf.urls import url + from myblog.views import stub_view - urlpatterns = patterns('myblog.views', + urlpatterns = [ url(r'^$', - 'stub_view', + stub_view, name="blog_index"), - ) - - -.. nextslide:: A Word On Prefixes - -The ``patterns`` function takes a first argument called the *prefix* - -.. rst-class:: build -.. container:: - - When it is not empty, it is added to any view names in ``url()`` calls in - the same ``patterns``. - - In a root urlconf like the one in ``mysite``, this isn't too useful. - - But in ``myblog.urls`` it lets us refer to views by simple function name. - - No need to import every view. - - Nor do we need to reference each by the app and module name where it - appears. - - This is a convenience. + ] .. nextslide:: Include Blog Urls @@ -511,11 +498,14 @@ urlconf .. code-block:: python + # add this new import + from django.conf.urls import include - urlpatterns = patterns('', + # then modify urlpatterns as follows: + urlpatterns = [ url(r'^', include('myblog.urls')), #<- add this #... other included urls - ) + ] Try reloading http://localhost:8000/ @@ -555,7 +545,7 @@ We've already got a good url for the list page: ``blog_index`` at '/' .. code-block:: python url(r'^posts/(\d+)/$', - 'stub_view', + stub_view, name="blog_detail"), ``(\d+)`` captures one or more digits as the post_id. @@ -605,16 +595,17 @@ Like Pyramid, Django uses Python regular expressions to build routes. .. code-block:: python - from django.conf.urls import patterns, url + from django.conf.urls import url + from myblog.views import stub_view - urlpatterns = patterns('myblog.views', + urlpatterns = [ url(r'^$', - 'stub_view', + stub_view, name="blog_index"), url(r'^posts/(?P\d+)/$', - 'stub_view', + stub_view, name="blog_detail"), - ) + ] .. nextslide:: Testing Views @@ -682,7 +673,9 @@ We'd like our list view to show our posts. # ... def test_list_only_published(self): resp = self.client.get('/') - self.assertTrue("Recent Posts" in resp.content) + # the content of the rendered response is always a bytestring + resp_text = resp.content.decode(resp.charset) + self.assertTrue("Recent Posts" in resp_text) for count in range(1, 11): title = "Post %d Title" % count if count < 6: @@ -702,7 +695,7 @@ We'd like our list view to show our posts. .. code-block:: bash - (djangoenv)$ python manage.py test myblog + (djangoenv)$ ./manage.py test myblog Creating test database for alias 'default'... .F. ====================================================================== @@ -782,38 +775,50 @@ located). .. rst-class:: build .. container:: - In that same file add a tuple bound to ``TEMPLATE_DIRS`` and add a path to - it: + In that same file, you'll find a list bound to the symbol ``TEMPLATES``. + + That list contains one dict with an empty list at the key ``DIRS``. Update + that empty list as shown here: .. code-block:: python + + TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [os.path.join(BASE_DIR, 'mysite/templates')], + ... + }, + ] - TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'mysite/templates'), ) + This will ensure that Django will look in your ``mysite`` project folder + for a directory containing templates. - Then add a ``templates`` directory to your ``mysite`` project package +.. nextslide:: - Finally, in that directory add a new file ``base.html`` and populate it - with the following: +The ``mysite`` project folder does not contain a ``templates`` directory, add one. +.. rst-class:: build +.. container:: -.. nextslide:: ``base.html`` + Then, in that directory add a new file ``base.html`` and add the following: -.. code-block:: jinja + .. code-block:: jinja - - - - My Django Blog - - -

    -
    - {% block content %} - [content will go here] - {% endblock %} -
    -
    - - + + + + My Django Blog + + +
    +
    + {% block content %} + [content will go here] + {% endblock %} +
    +
    + + Templates in Django @@ -830,7 +835,7 @@ Before we move on, a quick word about Django templates. Django templates **do not** allow any python expressions. - https://docs.djangoproject.com/en/1.7/ref/templates/builtins/ + https://docs.djangoproject.com/en/1.9/ref/templates/builtins/ .. nextslide:: Blog Templates @@ -854,11 +859,8 @@ Our view tries to load ``list.html``. .. code-block:: jinja - {% extends "base.html" %} - - {% block content %} + {% extends "base.html" %}{% block content %}

    Recent Posts

    - {% comment %} here is where the query happens {% endcomment %} {% for post in posts %}
    @@ -893,8 +895,8 @@ Our view tries to load ``list.html``. Like Jinja2, django templates are rendered by passing in a *context* - Django's RequestContext provides common bits, similar to the global context - in Flask + Django's RequestContext provides common bits, similar to the context + provided automatically by Pyramid We add our posts to that context so they can be used by the template. @@ -923,15 +925,19 @@ We need to fix the url for our blog index page .. code-block:: python + # import the new view + from myblog.views import list_view + + # and then update the urlconf url(r'^$', - 'list_view', + list_view, #<-- Change this value from stub_view name="blog_index"), Then run your tests again: .. code-block:: bash - (djangoenv)$ python manage.py test myblog + (djangoenv)$ ./manage.py test myblog ... Ran 3 tests in 0.033s @@ -952,12 +958,9 @@ This is a common pattern in Django views: .. rst-class:: build .. container:: - So common in fact that Django provides two shortcuts for us to use: + So common in fact that Django provides a shortcut for us to use: - .. rst-class:: build - - * ``render(request, template[, ctx][, ctx_instance])`` - * ``render_to_response(template[, ctx][, ctx_instance])`` + ``render(request, template[, ctx][, ctx_instance])`` .. nextslide:: Shorten Our View @@ -1034,7 +1037,7 @@ Add the following test to our ``FrontEndTestCase`` in ``myblog/tests.py``: .. code-block:: bash - (djangoenv)$ python manage.py test myblog + (djangoenv)$ ./manage.py test myblog Creating test database for alias 'default'... .F.. ====================================================================== @@ -1064,6 +1067,13 @@ Now, add a new view to ``myblog/views.py``: .. nextslide:: Missing Content +.. code-block:: python + + try: + post = published.get(pk=post_id) + except Post.DoesNotExist: + raise Http404 + One of the features of the Django ORM is that all models raise a DoesNotExist exception if ``get`` returns nothing. @@ -1137,15 +1147,18 @@ Again, we need to insert our new view into the existing ``myblog/urls.py`` in .. code-block:: python + # import the view + from myblog.views import detail_view + url(r'^posts/(?P\d+)/$', - 'detail_view', + detail_view, #<-- Change this from stub_view name="blog_detail"), .. rst-class:: build small :: - (djangoenv)$ python manage.py test myblog + (djangoenv)$ ./manage.py test myblog ... Ran 4 tests in 0.077s @@ -1214,13 +1227,15 @@ I've prepared a css file for us to use. You can find it in the class resources .. container:: - Next, load the static files template tag into ``base.html`` (this must - be on the first line of the template): + Next, load the static files template tag into ``base.html`` (this + **must** be on the *first line* of the template): .. code-block:: jinja {% load staticfiles %} + .. container:: + Finally, add a link to the stylesheet using the special template tag: .. code-block:: html @@ -1299,13 +1314,17 @@ Django also provides a reasonable set of views for login/logout. .. code-block:: python + # add an import at the top + from django.contrib.auth.views import login, logout + + # and update the list of urlconfs url(r'^', include('myblog.urls')), #<- already there url(r'^login/$', - 'django.contrib.auth.views.login', + login, {'template_name': 'login.html'}, name="login"), url(r'^logout/$', - 'django.contrib.auth.views.logout', + logout, {'next_page': '/'}, name="logout"), @@ -1460,14 +1479,14 @@ posts and ``Category`` models. 3. And you'll need to create an `InlineModelAdmin`_ to represent Categories on the Post admin view. - 4. Finally, you'll need to `suppress the display`_ of the 'posts' field on - your ``Category`` admin view. + 4. Finally, you'll need to `exclude`_ the 'posts' field from the form in + your ``Category`` admin. -.. _Django admin.: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/ -.. _ModelAdmin: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#modeladmin-objects -.. _InlineModelAdmin: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#inlinemodeladmin-objects -.. _suppress the display: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#modeladmin-options +.. _Django admin.: https://docs.djangoproject.com/en/1.9/ref/contrib/admin/ +.. _ModelAdmin: https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#modeladmin-objects +.. _InlineModelAdmin: https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#inlinemodeladmin-objects +.. _exclude: https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#django.contrib.admin.ModelAdmin.exclude .. nextslide:: Pushing Further @@ -1489,14 +1508,15 @@ code. .. rst-class:: build -* Change the admin index to say 'Categories' instead of 'Categorys'. +* Change the admin index to say 'Categories' instead of 'Categorys'. (hint, the + way to change this has nothing to do with the admin) * Add columns for the date fields to the list display of Posts. * Display the created and modified dates for your posts when viewing them in the admin. * Add a column to the list display of Posts that shows the author. For more fun, make this a link that takes you to the admin page for that user. * For the biggest challenge, look into `admin actions`_ and add an action to - the Post admin that allows you to bulk publish posts from the Post list + the Post admin that allows you to publish posts in bulk from the Post list display .. _admin actions: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/actions/ diff --git a/html/_sources/presentations/session10.txt b/html/_sources/presentations/session10.txt index 282e3f7b..abdd40ea 100644 --- a/html/_sources/presentations/session10.txt +++ b/html/_sources/presentations/session10.txt @@ -1,5 +1,5 @@ ********** -Session 09 +Session 10 ********** .. figure:: /_static/django-pony.png @@ -479,15 +479,20 @@ Back on the EC2 instance, in your ssh terminal, clone your django application: .. rst-class:: build .. container:: - pip install the requirements for your app: + pip install the requirements for your app:: - cd djangoblog_uwpce - pip install -r requirements.txt + $ cd djangoblog_uwpce + $ pip install -r requirements.txt - Finally, export a system environment variable called DATABASE_URL with the - following format:: +.. nextslide:: + +Finally, export a system environment variable called DATABASE_URL with the +following format:: + + postgres://username:password@host:port/dbname - postgres://username:password@host:port/dbname +.. rst-class:: build +.. container:: .. code-block:: bash @@ -607,19 +612,19 @@ But still not great, because nothing is monitoring this process. There's no way to keep track of how it is doing. -.. nextslide:: Managing Gunicorn +We can do better. First, let's kill the processes that spawned:: -We can use a process manager to run the gunicorn command, and track the results. + killall gunicorn -Kill the processes that spawned:: +.. nextslide:: Managing Gunicorn - killall gunicorn +We can use a process manager to run the gunicorn command, and track the results. -Using linux upstart is nice and easy. +Using linux `upstart`_ is relatively simple. Put the following in ``/etc/init/djangoblog.conf`` -.. code-block:: upstart +.. code-block:: cfg description "djangoblog" @@ -631,8 +636,31 @@ Put the following in ``/etc/init/djangoblog.conf`` setgid nogroup chdir /home/ubuntu/djangoblog_uwpce env DJANGO_SETTINGS_MODULE=mysite.production - env DATABASE_URL=postgres://awsuser:secret123@uwpcedb.c5zwspzpwwsq.us-west-2.rds.amazonaws.com:5432/djangoblog + env DATABASE_URL=postgres://:@:/djangoblog exec gunicorn -b 127.0.0.1:8000 -w 4 mysite.wsgi +.. _upstart: http://blog.terminal.com/getting-started-with-upstart/ + +.. nextslide:: Using Upstart + +Once you've completed that, you will find that you can use the Linux +``service`` command to control the gunicorn process. + +.. rst-class:: build +.. container:: + + Use the following commands:: + + $ sudo service djangoblog status + $ sudo service djangoblog start + $ sudo service djangoblog stop + $ sudo service djangoblog restart + + If you see an error message about an ``unknown job`` when you run one of those + commands, it means you have an error in your configuration file. + + Find the error with this command:: + + $ init-checkconf /etc/init/djangoblog.conf -And that's it! + And that's it! diff --git a/html/_sources/presentations/venv_intro.txt b/html/_sources/presentations/venv_intro.txt new file mode 100644 index 00000000..f60d5119 --- /dev/null +++ b/html/_sources/presentations/venv_intro.txt @@ -0,0 +1,338 @@ +.. slideconf:: + :autoslides: False + +*********************** +An Introduction To Venv +*********************** + +.. slide:: An Introduction To Venv + :level: 1 + + This document contains no slides. + +In this tutorial you'll learn a bit about the `pyvenv`_ command and the +``venv`` module that powers it. You'll learn how to create self-contained +Python environments in order to practice safe development and manage package +dependency conflicts. + +Working with Virtual Environments +================================= + +.. rst-class:: large + +| For every package +| installed in the +| system Python, the +| gods kill a kitten + +.. rst-class:: build +.. container:: + + | - me + +Why Virtual Environments? +------------------------- + +.. rst-class:: build + +* You will need to install packages that aren't in the Python standard + Library +* You often need to install *different* versions of the *same* library for + different projects +* Conflicts arising from having the wrong version of a dependency installed can + cause long-term nightmares +* Use `pyvenv`_ ... +* **Always** + +.. _pyvenv: https://docs.python.org/3/library/venv.html + +Creating a Venv +--------------- + +Since version 3.3, Python has come with a built-in ``venv`` module. This +module provides a command you can use to create virtual environments: +``pyvenv`` + +.. rst-class:: build +.. container:: + + The basic usage for this command is as follows: + + .. code-block:: bash + + $ pyvenv /path/to/new/environment + + On Windows you'll need something a bit different: + + .. code-block:: posh + + c:\Temp>c:\Python35\python -m venv myenv + + Unless you have the Python executable in your path, in which case this: + + .. code-block:: posh + + c:\Temp>python -m venv myenv + + +.. nextslide:: + +In any of these command forms, the name of the new virtual environment +(``myenv``) is arbitrary. + +.. rst-class:: build +.. container:: + + I suggest that you name virtual environments to match the project for which + the environment is to be used. + + I also suggest that you keep your virtual environments *in the same + directory* as the project code you are writing. + +.. nextslide:: + +Let's make one for demonstration purposes: + +.. code-block:: bash + + $ pyvenv demoenv + $ ls demoenv + bin include lib pyvenv.cfg + + +.. nextslide:: What Happened? + +When you ran that command, a couple of things took place: + +.. rst-class:: build + +* A new directory with your requested name was created +* A new Python executable was created in /bin (/Scripts on Windows) +* The new Python was cloned from your system Python (where virtualenv was + installed) +* The new Python was isolated from any libraries installed in the old Python +* Setuptools was installed so you have ``easy_install`` for this new python +* Pip was installed so you have ``pip`` for this new python + +Activation +---------- + +Every virtual environment you create contains an executable Python command. + +.. rst-class:: build +.. container:: + + If you do a quick check to see which Python executable is found by your + terminal, you'll see that it is not the one: + + .. container:: + + .. code-block:: bash + + $ which python + /usr/bin/python + + in powershell: + + .. code-block:: posh + + $ gcm python + ... + + You can execute the new Python by explicitly pointing to it: + + .. code-block:: bash + + $ ./demoenv/bin/python -V + Python 3.5.0 + +.. nextslide:: + +But that's tedious and hard to remember. + +.. rst-class:: build +.. container:: + + Instead, ``activate`` your virtual environment using a shell command: + + +----------+------------+----------------------------------------+ + | Platform | Shell | Activation Command | + +==========+============+========================================+ + | Posix | bash/zsh | ``$ source /bin/activate`` | + + +------------+----------------------------------------+ + | | fish | ``$ . /bin/activate.fish`` | + + +------------+----------------------------------------+ + | | csh/tcsh | ``$ source /bin/activate.csh`` | + +----------+------------+----------------------------------------+ + | Windows | cmd.exe | ``C:> /Scripts/activate.bat`` | + + +------------+----------------------------------------+ + | | powershell | ``PS C:> /Scripts/Activate.ps1`` | + +----------+------------+----------------------------------------+ + +.. nextslide:: + +Notice that when a virtualenv is *active* you can see it in your command +prompt: + +.. rst-class:: build +.. container:: + + .. code-block:: bash + + (demoenv)$ + + So long as the virtualenv is *active* the ``python`` executable that will + be used will be the new one in your ``demoenv``. + +Installing Packages +------------------- + +Since ``pip`` is also installed, the ``pip`` that is used to install new +software will also be the one in ``demoenv``. + +.. code-block:: bash + + (demoenv)$ which pip + /Users/cewing/demoenv/bin/pip + +.. rst-class:: build +.. container:: + + This means that using these tools to install packages will install them + *into your virtual environment only* + + The are not installed into the system Python. + + Let's see this in action. + +.. nextslide:: + +We'll install a package called ``docutils`` + +.. rst-class:: build +.. container:: + + It provides tools for creating documentation using ReStructuredText + + Install it using pip (while your virtualenv is active): + + .. code-block:: bash + + (demoenv)$ pip install docutils + Downloading/unpacking docutils + Downloading docutils-0.11.tar.gz (1.6MB): 1.6MB downloaded + Running setup.py (path:/Users/cewing/demoenv/build/docutils/setup.py) egg_info for package docutils + ... + changing mode of /Users/cewing/demoenv/bin/rst2xml.py to 755 + changing mode of /Users/cewing/demoenv/bin/rstpep2html.py to 755 + Successfully installed docutils + Cleaning up... + +.. nextslide:: + +And now, when we fire up our Python interpreter, the docutils package is +available to us: + +.. code-block:: pycon + + (demoenv)$ python + Python 3.5.0 (default, Sep 16 2015, 10:42:55) + [GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.49)] on darwin + Type "help", "copyright", "credits" or "license" for more information. + >>> import docutils + >>> docutils.__path__ + ['/Users/cewing/projects/uwpce/training.python_web/testenvs/sess01/demoenv/lib/python3.5/site-packages/docutils'] + >>> ^d + (demoenv)$ + +.. nextslide:: Side Effects + +Like some other Python libraries, the ``docutils`` package provides a number of +executable scripts when it is installed. + +.. rst-class:: build +.. container:: + + You can see these in the ``bin`` directory inside your virtualenv: + + .. code-block:: bash + + (demoenv)$ ls ./demoenv/bin + ... + python + rst2html.py + rst2latex.py + ... + + These scripts are set up to execute using the Python with which they were + built. + + Running these scripts *from this location* will use the Python executable + in your virtualenv, *even if that virtualenv is not active*! + +Deactivation +------------ + +So you've got a virtual environment created and activated so you can work with +it. + +.. rst-class:: build +.. container:: + + Eventually you'll need to stop working with this ``venv`` and switch + to another + + It's a good idea to keep a separate ``venv`` for every project you + work on. + + When a ``venv`` is active, all you have to do is use the + ``deactivate`` command: + + .. code-block:: bash + + (demoenv)$ deactivate + $ which python + /usr/bin/python + + Note that your shell prompt returns to normal, and now the executable + Python found when you check ``python`` is the system one again. + +Cleaning Up +----------- + +The final advantage that ``venv`` offers you as a developer is the ability to +easily remove a batch of installed Python software from your system. + +.. rst-class:: build +.. container:: + + Consider a situation where you installed a library that breaks your Python + (it happens) + + If you are working in your system Python, you now have to figure out what + that package installed + + You have to figure out where it is + + And you have to go clean it out manually. + + With ``venv`` you simply remove the directory ``venv`` created when you + started out. + +.. nextslide:: + +Let's do that with our ``demoenv``: + +.. rst-class:: build +.. container:: + + .. code-block:: bash + + $ rm -r demoenv + + And that's it. + + The entire environment and all the packages you installed into it are now + gone. + + There are no traces left to pollute your world. diff --git a/html/_sources/readings.txt b/html/_sources/readings.txt index 7e555bad..4a9ef294 100644 --- a/html/_sources/readings.txt +++ b/html/_sources/readings.txt @@ -18,73 +18,7 @@ increase both the depth and breadth of your knowledge. The readings are organized like the class, by session and topic. -Session 1 - MVC Applications and Data Persistence -------------------------------------------------- - -As we'll be learning about Pyramid over the first three sessions, please take -some time to read and digest some of the `copious documentation`_ for thie -powerful framework. - -In particular, to cover the topics we address in this session you'll want to -read the following: - -* `Pyramid Configuration - `_ -* `Defending Pyramid's Design - `_ - -.. _copious documentation: http://docs.pylonsproject.org/projects/pyramid/en/latest/index.html - -You may also wish to read a bit about `SQLAlchemy`_. In particular you may -want to work through the `Object Relational Tutorial`_ to get a more complete -understanding of how the SQLAlchemy ORM works. - -.. _SQLAlchemy: http://docs.sqlalchemy.org/en/rel_0_9/ -.. _Object Relational Tutorial: http://docs.sqlalchemy.org/en/rel_0_9/orm/tutorial.html - - -Session 2 - Pyramid Views, Renderers and Forms ----------------------------------------------- - -This week we'll be focusing on the connection of an HTTP request to the code -that handles that request using `URL Dispatch`_. Quite a lot is possible with -the Pyramid route system. You may wish to read a bit more about it in one of -the following documentation sections: - -* `Route Pattern Syntax - `_ - discusses the syntax for pattern matching and extraction in Pyramid routes. - -In Pyramid, the code that handles requests is called `a view`_. - -A view passes data to `a renderer`_, which is responsible for turning the data -into a response to send back. - -Getting information from a client to the server is generally handled by -`HTML forms`_. Working with forms in a framework like Pyramid can be -facilitated by using a *form library* like `WTForms`_. - -.. _URL Dispatch: http://docs.pylonsproject.org/docs/pyramid/en/latest/narr/urldispatch.html -.. _a view: http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/views.html -.. _a renderer: http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/renderers.html -.. _HTML forms: https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms -.. _WTForms: http://wtforms.readthedocs.org/en/latest/ - -For layout and design, CSS will be your tool of choice. There is no better tool -for learning CSS than trying things out, but you need a good reference to get -started. You can learn a great deal from the `Mozilla Developer Network`_ CSS -pages. I also find `A List Apart`_ and `Smashing Magazine`_ to be fantastic -resources. - -.. _Smashing Magazine: http://www.smashingmagazine.com -.. _A List Apart: http://alistapart.com -.. _Mozilla Developer Network: https://developer.mozilla.org/en-US/docs/Web/CSS - - -Sesstion 3 - Pyramid Authentication and Deployment --------------------------------------------------- - -Session 4 - TCP/IP and Sockets +Session 1 - TCP/IP and Sockets ------------------------------ * `Wikipedia - Internet Protocol Suite @@ -129,7 +63,7 @@ networked computing in mind: * `ZeroMQ Guide, Chapter 1 `_ -Session 5 - Web Protocols +Session 2 - Web Protocols ------------------------- * `Python Standard Library Internet Protocols @@ -167,7 +101,7 @@ remain unchanged) over time, skim these specifications for HTTP and SMTP: * `RFC 5321 - SMTP (latest) `_ -Session 6 - CGI and WSGI +Session 3 - CGI and WSGI ------------------------ * `CGI tutorial`_ - Read the following sections: Hello World, Debugging, Form. @@ -200,7 +134,7 @@ more minimal and may be easier to comprehend off the bat. .. _Getting Started with WSGI: http://lucumr.pocoo.org/2007/5/21/getting-started-with-wsgi/ -Session 7 - APIs and Mashups +Session 4 - APIs and Mashups ---------------------------- * `Introduction to HTML (from the Mozilla Developer Network) @@ -245,6 +179,75 @@ both from the side of production and consumption: .. _restkit: https://github.com/benoitc/restkit/ +Session 5 - MVC Applications and Data Persistence +------------------------------------------------- + +As we'll be learning about Pyramid over the next three sessions, please take +some time to read and digest some of the `copious documentation`_ for thie +powerful framework. + +In particular, to cover the topics we address in this session you'll want to +read the following: + +* `Pyramid Configuration + `_ +* `Defending Pyramid's Design + `_ + +.. _copious documentation: http://docs.pylonsproject.org/projects/pyramid/en/latest/index.html + +You may also wish to read a bit about `SQLAlchemy`_. In particular you may +want to work through the `Object Relational Tutorial`_ to get a more complete +understanding of how the SQLAlchemy ORM works. + +.. _SQLAlchemy: http://docs.sqlalchemy.org/en/rel_0_9/ +.. _Object Relational Tutorial: http://docs.sqlalchemy.org/en/rel_0_9/orm/tutorial.html + + +Session 6 - Pyramid Views, Renderers and Forms +---------------------------------------------- + +This week we'll be focusing on the connection of an HTTP request to the code +that handles that request using `URL Dispatch`_. Quite a lot is possible with +the Pyramid route system. You may wish to read a bit more about it in one of +the following documentation sections: + +* `Route Pattern Syntax + `_ + discusses the syntax for pattern matching and extraction in Pyramid routes. + +In Pyramid, the code that handles requests is called `a view`_. + +A view passes data to `a renderer`_, which is responsible for turning the data +into a response to send back. + +Getting information from a client to the server is generally handled by +`HTML forms`_. Working with forms in a framework like Pyramid can be +facilitated by using a *form library* like `WTForms`_. + +.. _URL Dispatch: http://docs.pylonsproject.org/docs/pyramid/en/latest/narr/urldispatch.html +.. _a view: http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/views.html +.. _a renderer: http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/renderers.html +.. _HTML forms: https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms +.. _WTForms: http://wtforms.readthedocs.org/en/latest/ + +For layout and design, CSS will be your tool of choice. There is no better tool +for learning CSS than trying things out, but you need a good reference to get +started. You can learn a great deal from the `Mozilla Developer Network`_ CSS +pages. I also find `A List Apart`_ and `Smashing Magazine`_ to be fantastic +resources. + +.. _Smashing Magazine: http://www.smashingmagazine.com +.. _A List Apart: http://alistapart.com +.. _Mozilla Developer Network: https://developer.mozilla.org/en-US/docs/Web/CSS + + +Sesstion 7 - Pyramid Authentication and Deployment +-------------------------------------------------- + +There are no special readings associated with this week. + + Sessions 8, 9, & 10 - Django ---------------------------- @@ -253,23 +256,23 @@ Django documentation is excellent and thorough. As a start, take a look at these sections: * `Django at a Glance - `_ - introduction to + `_ - introduction to the concepts and execution of Django * `Quick Install Guide - `_ - lightweight + `_ - lightweight instructions on installing Django. Use Python 2.7. -* `Django Tutorial `_ +* `Django Tutorial `_ - The tutorial covers many of the same concepts we will in class. Go over it to re-enforce the lessons you learn -* `Using Django `_ - far more +* `Using Django `_ - far more in-depth information about core topics in Django. In particular, the installation instructions here can be helpful when you run into trouble. Bookmark the `Django Documentation homepage -`_. It really is "everything you need +`_. It really is "everything you need to know about Django" When you have some time, read `Django Design Philosophies diff --git a/html/_static/admin_index.png b/html/_static/admin_index.png index ae7a19f986880cac0b47c2ea4cb48a722851c260..f42d6e389b31b1e2a40bb3fe040fdec2009b2603 100644 GIT binary patch literal 38103 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 VPnK2hx+2B^1fH&bF6*2UngAAW=?MS; literal 27949 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 diff --git a/html/_static/basic.css b/html/_static/basic.css index 967e36ce..9fa77d88 100644 --- a/html/_static/basic.css +++ b/html/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -197,7 +197,10 @@ h3:hover > a.headerlink, h4:hover > a.headerlink, h5:hover > a.headerlink, h6:hover > a.headerlink, -dt:hover > a.headerlink { +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { visibility: visible; } @@ -314,6 +317,13 @@ table.docutils { border-collapse: collapse; } +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + table.docutils td, table.docutils th { padding: 1px 8px 1px 5px; border-top: 0; @@ -344,6 +354,25 @@ table.citation td { border-bottom: none; } +/* -- figures --------------------------------------------------------------- */ + +div.figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text { +} + + /* -- other body styles ----------------------------------------------------- */ ol.arabic { @@ -406,6 +435,10 @@ dl.glossary dt { font-size: 1.3em; } +.sig-paren { + font-size: larger; +} + .versionmodified { font-style: italic; } @@ -471,22 +504,51 @@ table.highlighttable td { padding: 0 0.5em 0 0.5em; } -tt.descname { +div.code-block-caption { + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +div.code-block-caption + div > div.highlight > pre { + margin-top: 0; +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + padding: 1em 1em 0; +} + +div.literal-block-wrapper div.highlight { + margin: 0; +} + +code.descname { background-color: transparent; font-weight: bold; font-size: 1.2em; } -tt.descclassname { +code.descclassname { background-color: transparent; } -tt.xref, a tt { +code.xref, a code { background-color: transparent; font-weight: bold; } -h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { background-color: transparent; } diff --git a/html/_static/custom.css b/html/_static/custom.css index f0ae2b41..93e3b1cf 100644 --- a/html/_static/custom.css +++ b/html/_static/custom.css @@ -74,6 +74,15 @@ aside.gdbar { top: 4px; } +.title-slide:first-child hgroup { + top: 35%; +} + +/* line 888, ../scss/default.scss */ +.title-slide hgroup { + top: 0px; +} + em { font-style: italic; } @@ -106,6 +115,10 @@ article .small { font-weight: normal; font-size: 30px; line-height: 30px; } +article .tiny .highlight pre { + font-size: 16px; + line-height: 20px; +} article .credit { font-size: 75%; text-align: left; } @@ -126,6 +139,11 @@ article .toctree-wrapper li a { border-bottom: none; } article table.docutils tr td { vertical-align: top; } +slide article div.slide-no { + position: absolute; + bottom: 5px; + right: 5px; +} .level-1 h1 { font-size: 65px; @@ -171,4 +189,3 @@ article table.docutils tr td { text-align: left; float: left; } - diff --git a/html/_static/django-admin-login.png b/html/_static/django-admin-login.png index 4ceb5f54b92922f5f82b8896c8dccfbcd1ad6bdf..499384a805ee789a6309024e266a286aad21eb5d 100644 GIT binary patch literal 12153 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 d(iPw-+KT6 literal 31371 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 diff --git a/html/_static/doctools.js b/html/_static/doctools.js index c5455c90..c7bfe760 100644 --- a/html/_static/doctools.js +++ b/html/_static/doctools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for all documentation. * - * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -91,6 +91,30 @@ jQuery.fn.highlightText = function(text, className) { }); }; +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + /** * Small JavaScript module for the documentation. */ @@ -152,9 +176,10 @@ var Documentation = { /** * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 */ fixFirefoxAnchorBug : function() { - if (document.location.hash && $.browser.mozilla) + if (document.location.hash) window.setTimeout(function() { document.location.href += ''; }, 10); diff --git a/html/_static/down-pressed.png b/html/_static/down-pressed.png index 6f7ad782782e4f8e39b0c6e15c7344700cdd2527..7c30d004b71b32bb2fc06b3bd4dc8278baab0946 100644 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~&H|6fVxZ#d zAk65bF}ngN$X?><>&kwMor^(NtW3yF87Slz;1l8sq&LUMQwyEFdc@K%hw)40aP7qGH3pKv(fMMv@>%PU5i` z`Xiu%G@%YS%r?0+*EUq~l1+AY-n=)nyXu_#_C%d?zlUL+^LUTqF@{wM?s0-UJf?`x z4MhjI!YyVg;<{=j-*AX;G<>&kwMol#tg zK_ydLmzem(vK1>2TzUEGl*lj!N<7$PCrdoWV0 z$w0*Ap!bZ4if7h;-yfL#MC0e;t{xY+$l~DX2EWYIPet1cohf^BdG+jXhtuq&W-0|c zKPmlKv-7OTjb}T)7@fTGd9y~u4{g8An;)c2U=w=nwQ7}zVDc>n+a delta 308 zcmV-40n7f|0_y^h87Bq+001BJ|6u?C00DDSM?wIu&K&6g000JJOGiWi000000Qp0^ ze~~ULf9pv^K~y-)&C;PxLqQM)(DT|#EFdc@K%kj47(M`psNyfsRs05$qymp#EQWpr zRFEdr0S_}xUS3|?P{mC)+1a^s@67HhrS$EIQcAyvVJT(2NAVcLDuV}{;0})w@wuVs z09UxhJR+{EM)D1Z_(qLq+~Wr~I7fv(77=j_e}jg>1W!q*aFMHtI&+itLDg#UHAmTo zc|@G9gI+6nhE+Q0a9<@yr$9t}VVa%Q9j#B3qjQADDDQcpO)MhfsLkzdm~+&4jXL+E zE@G!ZM0{YD9afm-*`I&gvXrvi#u@C;xZGv3OW?)7$1f7wHz|_RV#KgtL#m2_Q z$H&L&>gwz3>+J08?d|35?d|RH*6!}^@9*#M@bK~R@$&NW|Ns93B(0|a000GaQh!cU z09L51v^Ch?X8-^I0b)x>L?pBZ`I!I!0BlJ_K~xwS1;Ig1!cYJOzrw=V#E|0>T@h|vY*JR(S;xCp}lB}YIuC>q0@1;qn!hZ5^;KY4+| z@smSV#0*C{U85#xv001BJ|6u?C00v@9M??Vs0RI60puMM)ks&I70ToF^K~y-) zt&y=x#6S>+ze#c^Cm0A@3nC^Qc-YxlS_y(!_%MPYX?%tQUqG?c_Yee?bf*#1M8xI< z&s__-Be}$Q5&vp-nEB_M9T^M;7g?4a&`yV87@h+VMUiQ%D2mL)$(aOso};w}Kt!ga zCb5WM+cvK2mQbb!T5FPjBq=o%B_i~Cy~-|5@eu?;BSD>fzF#x(9b*=- zEUTFS;N&uGyxsBsYV!&JTWg=}Y<9VMd?88IwDA6U^g98-@OH@QoggBN->w0$7nfnF zKc7MR@WeNaVDy;r#|UFy>2CCEKe)0&XMMX=(3!bJBf-($3L;W1xkNGdqk-pn{6&sZ k>MD-o-8M~1sWbjdUsbDge>g^d#{d8T07*qoM6N<$f-yapG5`Po diff --git a/html/_static/jquery-1.11.1.js b/html/_static/jquery-1.11.1.js new file mode 100644 index 00000000..d4b67f7e --- /dev/null +++ b/html/_static/jquery-1.11.1.js @@ -0,0 +1,10308 @@ +/*! + * jQuery JavaScript Library v1.11.1 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-05-01T17:42Z + */ + +(function( global, factory ) { + + if ( typeof module === "object" && typeof module.exports === "object" ) { + // For CommonJS and CommonJS-like environments where a proper window is present, + // execute the factory and get jQuery + // For environments that do not inherently posses a window with a document + // (such as Node.js), expose a jQuery-making factory as module.exports + // This accentuates the need for the creation of a real window + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +// + +var deletedIds = []; + +var slice = deletedIds.slice; + +var concat = deletedIds.concat; + +var push = deletedIds.push; + +var indexOf = deletedIds.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var support = {}; + + + +var + version = "1.11.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android<4.1, IE<9 + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num != null ? + + // Return just the one element from the set + ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + + // Return all the elements in a clean array + slice.call( this ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: deletedIds.sort, + splice: deletedIds.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + // parseFloat NaNs numeric-cast false positives (null|true|false|"") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0; + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + isPlainObject: function( obj ) { + var key; + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited properties before own properties. + if ( support.ownLast ) { + for ( key in obj ) { + return hasOwn.call( obj, key ); + } + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call(obj) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Support: Android<4.1, IE<9 + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( indexOf ) { + return indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + while ( j < len ) { + first[ i++ ] = second[ j++ ]; + } + + // Support: IE<9 + // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) + if ( len !== len ) { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: function() { + return +( new Date() ); + }, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v1.10.19 + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-04-18 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + characterEncoding + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( documentIsHTML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document (jQuery #6963) + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = attrs.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== strundefined && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, + doc = node ? node.ownerDocument || node : preferredDoc, + parent = doc.defaultView; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsHTML = !isXML( doc ); + + // Support: IE>8 + // If iframe document is assigned to "document" variable and if iframe has been reloaded, + // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 + // IE6-8 do not support the defaultView property so parent will be undefined + if ( parent && parent !== parent.top ) { + // IE11 does not have attachEvent, so all must suffer + if ( parent.addEventListener ) { + parent.addEventListener( "unload", function() { + setDocument(); + }, false ); + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", function() { + setDocument(); + }); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if getElementsByClassName can be trusted + support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) { + div.innerHTML = "

    "; + + // Support: Safari<4 + // Catch class over-caching + div.firstChild.className = "i"; + // Support: Opera<10 + // Catch gEBCN failure to find non-leading classes + return div.getElementsByClassName("i").length === 2; + }); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !doc.getElementsByName || !doc.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && documentIsHTML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [ m ] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( div.querySelectorAll("[msallowclip^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return doc; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (oldCache = outerCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + outerCache[ dir ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context !== document && context; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is no seed and only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome<14 +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + }); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + }); + + } + + if ( typeof qualifier === "string" ) { + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; + }); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + })); +}; + +jQuery.fn.extend({ + find: function( selector ) { + var i, + ret = [], + self = this, + len = self.length; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + filter: function( selector ) { + return this.pushStack( winnow(this, selector || [], false) ); + }, + not: function( selector ) { + return this.pushStack( winnow(this, selector || [], true) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +}); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // Use the correct document accordingly with window argument (sandbox) + document = window.document, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + init = jQuery.fn.init = function( selector, context ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return typeof rootjQuery.ready !== "undefined" ? + rootjQuery.ready( selector ) : + // Execute immediately if ready is not present + selector( jQuery ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.extend({ + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +jQuery.fn.extend({ + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.unique( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + ret = jQuery.unique( ret ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + } + + return this.pushStack( ret ); + }; +}); +var rnotwhite = (/\S+/g); + + + +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( list && ( !fired || stack ) ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( values === progressValues ) { + deferred.notifyWith( contexts, values ); + + } else if ( !(--remaining) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); + + +// The deferred used on DOM ready +var readyList; + +jQuery.fn.ready = function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; +}; + +jQuery.extend({ + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.triggerHandler ) { + jQuery( document ).triggerHandler( "ready" ); + jQuery( document ).off( "ready" ); + } + } +}); + +/** + * Clean-up method for dom ready events + */ +function detach() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } +} + +/** + * The ready event handler and self cleanup method + */ +function completed() { + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } +} + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + + +var strundefined = typeof undefined; + + + +// Support: IE<9 +// Iteration over object's inherited properties before its own +var i; +for ( i in jQuery( support ) ) { + break; +} +support.ownLast = i !== "0"; + +// Note: most support tests are defined in their respective modules. +// false until the test is run +support.inlineBlockNeedsLayout = false; + +// Execute ASAP in case we need to set body.style.zoom +jQuery(function() { + // Minified: var a,b,c,d + var val, div, body, container; + + body = document.getElementsByTagName( "body" )[ 0 ]; + if ( !body || !body.style ) { + // Return for frameset docs that don't have a body + return; + } + + // Setup + div = document.createElement( "div" ); + container = document.createElement( "div" ); + container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; + body.appendChild( container ).appendChild( div ); + + if ( typeof div.style.zoom !== strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; + + support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; + if ( val ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); +}); + + + + +(function() { + var div = document.createElement( "div" ); + + // Execute the test only if not already executed in another module. + if (support.deleteExpando == null) { + // Support: IE<9 + support.deleteExpando = true; + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + } + + // Null elements to avoid leaks in IE. + div = null; +})(); + + +/** + * Determines whether an object can have data + */ +jQuery.acceptData = function( elem ) { + var noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ], + nodeType = +elem.nodeType || 1; + + // Do not set data on non-element DOM nodes because it will not be cleared (#8335). + return nodeType !== 1 && nodeType !== 9 ? + false : + + // Nodes accept data unless otherwise specified; rejection can be conditional + !noData || noData !== true && elem.getAttribute("classid") === noData; +}; + + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /([A-Z])/g; + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + +function internalData( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var ret, thisCache, + internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + // Avoid exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( typeof name === "string" ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + i = name.length; + while ( i-- ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if ( support.deleteExpando || cache != cache.window ) { + /* jshint eqeqeq: true */ + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // The following elements (space-suffixed to avoid Object.prototype collisions) + // throw uncatchable exceptions if you attempt to set expando properties + noData: { + "applet ": true, + "embed ": true, + // ...but Flash objects (which have this classid) *can* handle expandos + "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var i, name, data, + elem = this[0], + attrs = elem && elem.attributes; + + // Special expections of .data basically thwart jQuery.access, + // so implement the relevant behavior ourselves + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE11+ + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice(5) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return arguments.length > 1 ? + + // Sets one value + this.each(function() { + jQuery.data( this, key, value ); + }) : + + // Gets one value + // Try to fetch any internally stored data first + elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + + +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHidden = function( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); + }; + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; +}; +var rcheckableType = (/^(?:checkbox|radio)$/i); + + + +(function() { + // Minified: var a,b,c + var input = document.createElement( "input" ), + div = document.createElement( "div" ), + fragment = document.createDocumentFragment(); + + // Setup + div.innerHTML = "
    a"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName( "tbody" ).length; + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + support.html5Clone = + document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + input.type = "checkbox"; + input.checked = true; + fragment.appendChild( input ); + support.appendChecked = input.checked; + + // Make sure textarea (and checkbox) defaultValue is properly cloned + // Support: IE6-IE11+ + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // #11217 - WebKit loses check when the name is after the checked attribute + fragment.appendChild( div ); + div.innerHTML = ""; + + // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 + // old WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + support.noCloneEvent = true; + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Execute the test only if not already executed in another module. + if (support.deleteExpando == null) { + // Support: IE<9 + support.deleteExpando = true; + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + } +})(); + + +(function() { + var i, eventName, + div = document.createElement( "div" ); + + // Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event) + for ( i in { submit: true, change: true, focusin: true }) { + eventName = "on" + i; + + if ( !(support[ i + "Bubbles" ] = eventName in window) ) { + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + div.setAttribute( eventName, "t" ); + support[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false; + } + } + + // Null elements to avoid leaks in IE. + div = null; +})(); + + +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && jQuery.acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && + jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, ret, handleObj, matched, j, + handlerQueue = [], + args = slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var sel, handleObj, matches, i, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + /* jshint eqeqeq: false */ + for ( ; cur != this; cur = cur.parentNode || this ) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + // Support: IE < 9, Android < 4.0 + src.returnValue === false ? + returnTrue : + returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && e.stopImmediatePropagation ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + jQuery._removeData( doc, fix ); + } else { + jQuery._data( doc, fix, attaches ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /
    ", "
    " ], + tr: [ 2, "", "
    " ], + col: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
    ", "
    " ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +// Support: IE<8 +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName("tbody")[0] || + elem.appendChild( elem.ownerDocument.createElement("tbody") ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!support.noCloneEvent || !support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = (rtagName.exec( elem ) || [ "", "" ])[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted

    8pZnS8 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 z zw_oY3t`feApTiKN@gl^N!~1NCP$<=+$JDw>Bl|w#A!G}8iWBGd^^te`ea*69RXsWv zH@0c<6bARm(kiQ3p}y!`fFwxFx|m8so-P0<{fDv**fa-5S}&e+@~>CfZH3E<4-QY3 zKW#j^Abr_cjIG9G<{8ML#=%HkA+Mwu`RVFp5(D3qRhrs^;esWW0Yg(HfJuI-}X`_fh`CO$@Na!J~ ztB@+u;wi(mMACC32!w0P+(`Qa0cGIR^)+MUJpTYcA@=moJlZtYra-k|KVbg=XRH|* zcDCNfVX=!{JzjHp81q@Gx3pC!Y~y68$6#>S;Y+RPv3Xj>sjrp*+S-~rV}5PyLS$xk zL;afY{{T(qe<4Bnp0WPs+?g524ixBD*|a#f##Rapj4;JY?;Ld$(5*dOkhMASLiCSL z(@hBx1!F4uK{ji8ic5|(uO6=oP*R-}&eocr8M-Jk6?GA$GeciPMOd!!h|Nn{qNXSv z9mPc~G(jObD}+M^>~1*N^)jpH1B`6k2iUp7tJMmcD3(Eg#s@8RVy=q==S^ zo`Rk@>6*5$Q@5JE;)Eum08~pTACVQ3xo}Q;PODm)bQo4_UB$ZgzH2K%ODUnHr4vh3 zVws||HR>9#Tinjm5EU#E;$FEY>%$=h!y#!boK7Qc(JIe{BNXAjfd%)phSp_Xhs}rcdtg zUT!Mvd}GV^brcfN(YmB)RYTSYe1=piP^fKsg}u3IlZttLxazkYyz?n>A0J$QhpQv$ zf91WqauQHvH||3nf<|~8W1tOFR<$mkLrQgeUQ`YP>HORa`!#!%gi)TY`#LX+mhGdF zUPG#xI(UA4TenaAH0!Og98uA2nKJnYDwN-SN_>?jAP~xsG6+&Q*jO6{1af_r&$w#^ zK?M2^Jsv7s+ODt_BLgJTgQJ(Wb`~2OJ}(-l6OMT<8iJjnMWBwJHbGTc<5Y$L8zHsB z8wD2@_DTEFCVe7hq2rz(GwIcCHMDX_B61gjr^R0-^ELdu`gV(X;_y@(mZuw47x!yw zD@9$n^C-|#&018;EjBo^M;yx>PQ0lrVhK7yKEs!s$Kb(pBrZGz9}{_#u1P~4M<;C^v!tvoN>_)-9I{Kn|9Idyd+e$DJ4o(wL~*RDjHgPdWxA0 zhB(z07~w@=P+0SBdG;8Kb=|L{YpDQ8L8!)0r&5idAnn$WYMq$OMLt5le{V!XyM9*g zocCnbVQ5OzV6zcVUo5dYw6#?bOe2{jk}Eq3dQg{J+?xV87f)-m8~NwDxGYN=)61dG z*<)+BZSWvaWQ=JaA@crx0-M{gGT1qBSj-hhhRI<>nX0C-@ztt$B?OapX=Q1&sr@?s zhuO7`)|#25S|~XA^k)UoB$C_@Nd1>XRgB7Gx0Yh4q$@f_5tW^*s;L+0R5M-$}D6va~yPVO3X~)ln&d&ZL!-MB-u?63T4L za2M72KSGD`ZY1!PPL7y`K+`0~rFe8jPG7LQBRxlg#64a`>LyrG6JEJxnb!K|lhYh2 zepr!V_4<1`vD#Idzv1%g*ISHmN2!~KS6lH1;57y-6x+wMG3%Jj)Z%4DkIt}#L; zsaJj=D<6>;Lo%+QTj(qaKCh>;dzoz)#g=IUfGTst&xiWHeK`_dw}WqO3q}i3amO?{ z{{UCZs^;#k;Mo5OAn-lKyM@}`T+1p7MO+V0 z%c;wk_TSys5eZFhSY-bIgXVf8{h5_Vr>KD@EhHCjQDf;kRT%(7s1+jWIA6~`$>oGd zdKg+ch-#-Eh`wunPm8RYon;486|+cLRTETi9khkuUx9zeKTmJl*=x-)*RHOB74zv~ zu=l)`H3_b%q%7P4$s`-QC^s5Zk$yS9Kc8kI*r=sC3|&qbn(^q-Y`GsHk)@bCj9ysJ zrEefEBfsedi4L3*djNkP=<#VCBNFzJTya7g_H>VddLKiRAFwH5s@dT-L%;M z0I>IXC>?&^^?rR2UXp4@`oGoo^l&!KMWT%ZgR14MJ$DK$ZY-dc=jqM3()&5SM>D8PsroaLZ;{K2>FMD(OKVNF%LO{n3i{&9n z&rS^zsucrK1Cz-l+V=W$e`^W=w5LfG%P?*L^q!uanOw5)P5%I{pY_182kCFmKF~Zh zb|iFf6x5ACKkW6&k|`C3`&Tw90*|QE{Yr!W$KIldf-%H@tMcnt5+PIa=|L4KH-D+H zVhFcCMI(X9_OW0!uSE|y9lbeHz{<)<01F?@xwq2igKzhrYT=2LiurVkc~ye|bJO4~ z2d9f$@@>cTzq3`XG0|ZFob{O|WBQGV7y8@r{uc(`-c~+mrkXV$2&n2;omq5(KcjQ2 z@z46#KHTvE6zPu$t7_?{rXi%?=)(GMVR6Xh8x(n_!h+^81) zAlsY$PbZrmKiGYJl}p;x9SALnbp-U%T&oa_eMj{MyD8*3*lImhkw$6OWtFbLk$x?14UM@MApZcw``E5WO_&gXtCkSQBrcKG57KB8R2c#Hj^NdJH!XAt#P-ELHW~1-ZSMhN4sz z)ZdZM=lXjNT)-Hx_5T1@<=Axv_BF8Z5GF|vBJrj{#m2iC*sW9%C> zv|+(v__`ELb0>yXcoEUQ+j&){YIx~L0R&`N=@!0{;g?V(n|&-jomtKzC?dcV{{V}} zkv?m!(ZF} zuk}}`%X-;n60@QmKWC>)oK*29Mk3fiRhi6ffnAL{=Ais=uy zdh;KcRFSG`=qgZ!H58IGY|6lfM!uzW{Mh{sy`h(Aw|X;{Rvv4Q_`k69B-=T%?#MJ^ zB$5-57z0nA%k3QpG@BcF$_R-b7pod*(@|$e+4}?Wejguke;Dx zAdad+fShzQUsF@c&#AQPP(kC^TYk9NrfVpzHtjQ|S(wyU9{@gvwKS-~$3jhp&zWJj z++TLx72uGCjaNx3EB&D##5fAj@Xta<2X*gwa$amUA8t`&s^Fzq8x>a^kU|z4ogiR+ezVxpm?>`Lo|-n4Fb8+vPYzS zYzS^Wn%Qm~#XZcn*G-@)pes(`Nv$j9K6K-biT6#5l%_dv{U(FsUk#LV@}GZ;nu*5aKQaNh}LUG)-G<@qafj`8zWAd z4?pnq3wvAQBWo?a7EsCqEehc3)l=oqo7ujIA^LdNh~yw7FC2H z<3pInkUsz)cC)^QbLSUo`#s}x7$tZ467souLuQ|C<8lC*1n>-`Qxa~ zmB?39%|nSqnu;$xvr5)k0!uP0XeEm?h|S0Yf$gWgxSb@ovH_tLEO;6d<@2U#(uLbB zt!9evaV2h>NKi5=6w<#c`Sk+37eiM@wAIveG^rG*2y&8o=6NK77mbR)lTa4p=sl#K z)(eOP7gprZ5ypp&NCa`OO6_kh?XH^Q&gnuk0&!7*0A>dwp1*Hc20E&elN5vo=ZmNfpH* zVk=+b;8=M80H>ZQ=g@s6w-LiEEn9^IW6dyCO>)GOU$(plTIT-%Jid?3QSH8z`4hIW zP)+`hH^jR;dRKtrx|3&b@f|iYdg_%b-*1lIxY`JzB&x#M5=RVuq2D%^-1%F4vWZ!y zjeK-bmaJs!A7_SG&<`Qh&Fx107~Z~uNvP8&Xuv|tMyUCf)Hsq)%ya~NW|tq8!((b{ zbw8BTNYQymo6S>7wQD0rNTjSD9bp-5Av_=J?-V4Um4o>=SueTEAcS~kgsp!sv}9z8 z`E_X99~(s-F-&|Bm}3;AO-_VyH0*4P6AFxmLfDDFT&X7$0J7su;?*f`E?R z;0e%4S~UUGhcrA?ih?WDVYou@!or|~PKO*`+M>xvC1GhP zBa&e&MFfi`DJuwQ_0+{kV-(IIl~_*_s5*_nJP|}&ZME9THc?AdfNK`66=1Z|XhGJX zR;HjFbPK%QC$xCr3LV1Iq*79xXr-&D5(p^7kwHR6dKB^7ZkmbU`O&qsAYa&)*J_Fb5t)iyX*yWQ#T`W{rMUU9$@@ln1zzs*+^oI= zi7l!%D2+ssv8{C`N0O0G$eMJkrodvM5~LBds&%9^O;*L=shL(_)RP8PGY4)_zs?Jg zeV#$KSs-PND!HN-;KT#kahjZi@n@jb&gp*T8b{J_ON7HJk~_vuntmbhnhJEJf}K@O zG&vRrOGarmn5qH@$??2%0-y;LpYgXI&TZgTq*2|FcxkB(!-Wnw*ZiFaE@muzX>7q2 zuDVrgULcI{Kj-Q!!kTE`A6k;sXduB)P?0=$AcDbk+Dkxf#|Hk@0-e_L24Uo_LOnk` zdUTb%RAsuhWlH=^q=Wlwj_+QB9mle8)lDT%GDz`K$5JL)X*`Mx2*XN-2R;(A7y4W4 zaqOP=VB0QBO>Pz$byllUnrF9$Yw6Mc-ORh4xL7X(PZ?Se)ZttmTyanE9+Ce5!t)w+ ze-&RJm+UotpR4$Hm&Nxwe81=Z=hLV3=;zsI?wh)Qxx-C#d?Vnm#m9|t=}h!%`^Lvr zK8Wh3zl-tGx_EHYn(?kW|IyHXpB|MaDdcNH0KfZJ`x|}_*V_!`K^}c72pp+AI#)+9 zuSlqA?G!Pxt4NjxOIqUg9*^to41kKc=)xS)M?y9)4D`_lM_Cg^oe1RpIR^IndnTGt z#+2ylDCjy_;xSqq?r6ap{W2%^ScCXKf_2U6cWxNBCQmOdH;r_I zAlbO`g;WLFtd+}g1u7DZ-Z}fCW6JfBt7quuBXOi;3{fF+TU7|7&sQw zKBADzb~YpGK9}a+$RS$Dp!pu8or={MEQ%;;PN@5{3S@VUGvwqn*yYO8nzX#oq)Aa* z6i+*peM=lEBgjR_2&UfTU5-x#D^nx<-{ zUOfyuY80zmsT(ngAIguVP(aq(fon!(U@bocOM?p1ovP@jJ?L@?VZD9qz z^1?XMP>ezWQ^b*gNa4exY4+$f7fWUmW8}X&{{Wa$r>h9+{{VwO6}n!aOS3w&15HxW zW2p{XI|0e&GBwgj9wb`)sH>erNfUmJCrSgyw6`0Zsy}#C^Z)_;x_SsiYe->LG$iR2 zpdMtC_I_uhpR_u|4_8?>n#@Ms!x`!7>Li+4YC8 z9nuJaEg(@|B>L0KkDpb%x|LBv!t&3gfB+|eJWl~qKf#WLEw{e*Ry!pw(%74O8C8|U z%LKJMu;ZktEV4-uZyiMJ^3QQnzC-1gLW5vMln3VK2Dx&Ppd=hVcvr}JdgS@zq|dS4 zi2k#2yLE;@X%#@v<$=J{0=UnaLiZ=lzmMGwx9c)nhjdN9dj?8r>EOiRrh+8L0A5;& zsw$uq)bteoFmwhe(*Bi6Ksre7H`6R$7TU60-Z`eKl|{}?MG5nz03Jr8qwSZG_if_g zQb?n-+EjzwH8bM^hPm~vX~Y#gYTtEy)U8}E@k*ts#Z&HFOnaXtQyp9V?DUllA=|rd zl6k{S{v^4OKAlZwZ$V&6lFId+t<}k5!oM;-enY7q-)XXrZF)iQdr(kNAH>wass3FB zy|?l!v3G|`?HYW3PO1zxTWe)95>Y`=BWjG*ROAPl<3*j4o;lrsl*4N`O6*QF2 z%v`QUzA0H`Qz|#F%N#3v5JZQLeVkldMk0+P7$?i6w^zniLLEFu10FvP1UfXcapZ1DjLedqZo9lHVrC+f1&oc1&TdNxTQL7eZ#}5js#<&OS1CV zY(DeJO_7Zs5NK)VrJmt5)Wn{8)RpWnBGlAt78*{n542H8R4~)sUaN0$B#{B)QMxQS z{?5*BTKa>9nU;!-JSkNskw*j)Sr@`A1Z+?M$LekM{QFS0%`F-D9+oWY016IzaO&=y z-~Hi~7(Ja$S6wNpijG{(O1Y5(P`5Y?y*}Tc^k{E zjXoUw5$Vo^!o!*D>Z&}Z>8_wM!XpVWhTuwwmk4Fu>;HHU)$1qtJt>a?d+w1TyE`?rwD}8C)AJk zk?GUSdAX#?<2Js@#TxvjNHbK{mQ|vpr-{`(k~u&Nhg;crWA)Q-Y^C$H)K*($dZeXG zc>q7v`TV*})`~6eHx1t7MX%tH-Ob?e%s@I5sq_?KT4oR>gz>YZ|bJE%fqF=zELioHoryL&ZTZ#pvHE|vx3v(~ zzFjvk6sWCwp76L(%k}>NihgcK`|Ep9$kYUMm1I)H9-E$BB$2_n)D3|)CjS6}dAIoc zPE8Gb>(a%KPyq1j6t!N0#jFMF0sjCCbNwy;x4oC`t$J}F?f?#w**PO^L?7|hf2Y>} z0E_@{DFu+iBUh-)q6W3A#7S^*`!sK4-bM>)0N&f&Fd$UK6 zpI%Zc^65ESIMngq>HSH%vhmOL9P)n`_DgtvCFttfBSnApQ>2}A_YQ$?elKzL1Aj1pKeZZ5o79zPcLiqyJ31!?}TKA0+| zs&U8sJr6i4$=0emhkY?A1%PvPO=8Iln_Dx0BPXx1&9RxKR(akxU8yc&{lgbF)|V7(uORSx@lw@m?!qltaO&) zhyzKm_IDh`qIS+YCwnb3q8b8xzTUY~WPgdm(a2)4 zbg>{4)~+o6ia_WC8g-K~Hd?7D6TwYaO-DSA@yQZ2l^~<2K_LXAC^x@1;9A%A?acdw zi*Ty13Na*kw;Wf??a!A@?eOiBnA{)z+9JTPlH*2L*A(ID$MW>(O>w+Qwgnq3 zjdvx$2t=4bMGa|RU-J6&7EyI(PO7IQFnKz>UM@V-$w!`^c4_MIYE`{ZF%iMxk>8yn z;NITIpykOYp6FQIG*-SnR#I|P9$W)%NVM1CRpq2i9xy3QlgzF8Mo3uQMW^TOHorCX5ub?m=V z58@<(K*_B!Q=DTbq$#`xvher4z7?`%#()DTCjhN;Ky;et1EoaUe{?{x43=)bY_!!n zCNy*~NsObWsfE^_c`9Uy^vaIE+AaS86YXPdn}UJ$dyI{AU+|)oRU@>LLCE>nqGakMAhd<%%yG@IBfIp3VC9y)HnGD6SNdAa5r7K>Z+#JQe04=cG?@xe)kZoRf4x3=BUZJhR6e;M)qYLIzdp?EcIv?_ zf*BBMqK#QUZ8(#jgBRQ2TgYLS;u#2zuG%|6`B#7#`#M+V7AT`?AvcpDR%!H8=_qO0 z7%Whd>H@l`3dHg3{^?^_yb~pEB&7$Zp!c2LkIXNh8Zd*kU=n6VMdUjio{{TrjU!mvOEsgWX zMRz(qD^HdfdE?KZR_9=)&V?Gr38$FORQXi-bZhp8=Ps)xmqjfCOIJxGP*k*9kr-9d z%vL$wScPL?NC4RT9qn6@YB9j5t0@7git1B_JOMtL>NwuEt|&5SNLK`{az>UJQN)4k zj)u%z%T)|=QO+l$Gy2x5HIk0=hH{^0FjYhL78d>lF+tcoANfG0RsR?2}ThZ4dc8jW#+!^-;1&3ar%5 z70X1I3R3KB53vfosQO+ZCA}1qhO8)j*9QZIGw0A=RDt3R9Of&Y;YkG))Mkt-C{Ga7 z9$h*^OC?Lh)OB%G$4(__sWMTtRp-d^HOskKwGDSuWBK-B3}$9e0$}R3s>ld@ljd{w zeti;LOpqjk=G~Frlz7M~fCmAOEdE_G)+CO^kGQ7NA`!fD8Pa-(E&?plC^6_%AJdY5 zr@A;K@nxkl4xmq^PYMpS9Z*t;^{qh~NKs6XIMkoyI!EpSTZw{Kss8{ecx@a~B;rJe zTC2L%Mv67asLFtgi|YFQed>7Uwnk}tnMMdTr}|;$K%n#UZZM%c|G^05$g>jX&3$`$gitX{QvY4?2H>xaix# zN>^Cb#+4i^Pur(8^v7TS($IE}xI6}lt~CM!52c9b{bTK!6#QK&jmN{&tpZfTDwv!A z2>Oc;$M|w>?K9A>M@r(<2&Y3<-Jc;@4~2ws3k6^7u_Nor{mKp)rHRMcaG(Y3y$9}arD59Pg0Q(Z@sshvs{nGm|z z1z{qKX*V{pJRhj`MZc%`wXg@&^*?)GE{G*_#J5-3wW&fl(&C38l+oofD&7=TXdzibZz0KNy(tk`TDQk@XbwKUtF=y)6=`j`xjyoHnC+?c{D6~ZEYmq zkE!-mWe6a#8R}ZwY?j{AAXB&u^-ulZ9ZtHkg~LfXa_e*>O0;pt2yI?C!&~xC*8at| z6-H18MVq>;u#@HwP2F=XMoVqtq@Fn;7|A4tXOd)=YM~?DJT%7g6pe3U_DlT_u}rEI zDfLm-Jn!&b1Bra~Xo3M5y4mie zfpCgis+Q<4CA}PgaC%1eL^b)knp!G(sqs`e>iKfH+R55@;-#WtLhlsyvB4!lYRM?$ zgliE8*lO~(TbmeKbwh|fUr)~SX=dXF4 zvUGVfEk4Za%mlI5ZW`$%r31+<)d>co)e}Gp>pz}d5Tr37d05~9llGnfbX&G0!t^|G z>nr6@03_0+pFnH=POTecB_0xzuMu5ONw@M5VCb^>m@~O*3LLh=#OG+~YO&Jq%BbBj zxE$4PI<_i-kMc=d5>BF6mDt7!ro3aV3xY;FO;nM`N&HkesOW7Oie*{i3}e)o@n>L$-+H%&br8aAoLw%enxtEH#O%bAmJQRL*CaaQf^ zp^wA8PGdh^4GumCnHnT^K0kMc@=0Bm*^4U2R;?FLtw}rw@fv-U73i+wNTQDJeaS>o zBb_vF5YUhmH7EnfSP0@>OnlEvP2<`-L#*;OI9i>>kD;DiWqwwpJ2h1%dopl~RapcX zl#j_aH)=13mJ&+Rl^G-x<@_YlqlwZ*XnnoCj7YOATz4LT;-KbEvx$8GK?a8$KeJ*~IWEO4lbU%K7>g}5tn zw7AN4{vzYc6IWwiSCwNT8gU@Clm!T8w7QWX63`MwN1&!lHxhrBr$QL)Qqp~H{v_w} zL=>nByeJO>a(JBQpqsh=UFZ6*tTX=rz$>Zf_a@=2pxSskd~-+kIBHs2IVaCG6R8h4 zqVuc|BbF^H{{U7R5jBLDQmvB8RyNBKgQw7crvCs3O6@G*n&ug&K z`;E}W6NuW4njVg)$VyQq7QuO`(vp*JVksymp$X&g)KtSAPA~5XO+*S}$^$cMC4biU zTS()I>gq~mt3&yk^cuC?UrWcVmSRnMfs5SFnfTehsUn#TUe3)?B`dDCsA_7*WoV!P zYDCkKupC&&{W$mQ^l4_cWF5`N{a*kCU&XlLx!1!W9wViO@HBuc8jhP}-Yv4yI$UcsnJKBfA8AOQN{QA+ zj_AsXtAVGJ=@$I^qUw_xYC3!qDb&Xuda4Yr>cY^j@%z=PH4%yo9X__JsU`GB_arv9 z@+k$uy{&!+wMlG&!KF<)b~%h?f;K&Ru)mCd%jY@V$sTKXQO~wEY!SgUc!(Y0tgnp? z)oL8*{k8xXMP5~ixHk4@6kz~o$sS!3Zd>$LR8rNHoOOMjP4UyO`m1fy;dXY}$5Bm> zrA0GG07WuJpfryqi_0Tg=H|lu+mCy=Zy8u3_W}71ffDZbHx~i!Cq4@{2c19F`TBIC z$kO7r;Te3~aMYHlSXM{2h~$;l^zgQyQm&hU^!~RT`wGmlz~WheVo&&b5n8>)@cK(K zR*PDEhneZZyKzAkEjCuR8l}Y6)j^G=h7cB=i`4bh4ekiatKJ&$*4ymL~9GE`WvqU@O`d?kVi%LU<51W(Fx7&RjsUa zl4UHUqRFY+>dmMvh*lR3dwvN&pJE#|2Au=<83;J?=+JcKB|M2pW7BivK1OkMyDq&0 zNl@&nN`iQ6pYir#JrQ~g>S-jY>eM=e11(b1)cEc6(RB-=+M{L&R{C5fpQ-2Te_^|m zRwJVjLLeur0NOYdik1KrJ8)I6ALs;nSm}EWBpU)b_L*S}Ml<> zcx|CB+=C^+B>wRzU0zf?$GSeM9!%!nOZWsbDsI}A^i|`nKiR0`3+0^Yh8UFw$R`82~P9Npz{*NLS zE9xGFBZ5MKa8|!_oBkT21`tQZ~u=M^uzweK> zUUvTgi|Jf;Ys1dIU-5l9WAaS)I__?#n+^xm^TR8BN40jh1kjV7k=@w^uWmY0Lr@hx zZOOPC+fn|XLFzWY_*>bcxYLu-ERd4jqa9(MuEd*PivW0ENw@g($LHEGT})?G0JZI#y9)T>k){rG_b3fvEogPwgIf7W#d79?mTk z&}!&8en76Co}CC`VR6mv_54`>0EgGvflSt&7OM&xob@`6GUn^UU-C`(=HE^U{+`vs zwKW`iOK{;u4-TGN{MDO=u>=#r`it@HS@=jidM#g$tHY$tOjm1;2qxC&i&znF&-(t$ z)jOxlN*Iy8$zP}e;*%}i$(;PcJNz4;%c z+?xyXZEO2szB$B3oq8%m5@_IoU`@%n;=mhzkPW%_w2MlC*QB`C+PcjR<70bR z-q!l9&p++2{=c{5G&$+1DBx3%Sn5C*vsfFc2Z6!8{)B*7asD3NYIS%|3XUBkG6&Yj z>;3?$@=fds1+2vX0I@#EuLWz+lF)X6{?AE@n22I*8sM-6nL{uPKBN)_t;ZveVY`UC ziT?mqdOU^3k>&oO(my$gO8RMIWeurV+=5BfV{`Nd%t-oueum!5Wrt9q9U4P6k_a^a z09X81Rk_{$dtHgmCTfXZF$AhyqduJ>gE_LVt$iZHgU{FNaBk^n%FMuZBWyR(%MXIb zk53(0o@%M7;c=-cm6;PE{f*RPtLbt4Ff zSjDw-b|CO=ZB{4i_5T20*}c;;BM@kMFSQ9N3d2w}{{UC|zroVSZDgy9AZ8)Q0EaDN zt#X3m>u`8Kk;Tuw?DO0SG?H=i{#_&9EiFnG3)+5P&*#wRgLp1-;1Ic#+(K_^0~6KBE26V2xC)ebxT}SLM*Jg`NoL#WcD}Z?89EIV5s^g8cg! zS-K=X8&f?1cPOQMgEVy%=|@J?0T?W6rZeg*$riP*&B}rK{+`vu*7P(%LD4nHyDTc_ zQ*}Ay@v6qkrU?|3H~#=)qW=KXo-Onq)dQtMk=S}lsjZ8Gd{A@KWVpyfih&=PKC9i2 z=_17mzc*j^uWU7eIP3|j4jWZ&(5%zyW`#{+{Y>cav_iG_jUyGmL>>L&t}wN@3jjd+MGc z9IK!*qY74(_?L$tUY-p_RShJX>6)#@Do09^$>RHYP)K4h0HEksaseah`SxtGNfaa% z)^t%pG@;EY@&wbO(FMKL!f2RArb1kST|m;hzGMoTdGz;&$wG1Tb(Qrd9F&hA`4*4! zb2~DrK(`k~^?#4IEv``8$2HWtZiyYV^R6lW9*cJ?DFxldy{sCnfIao%1qrX)!>Ki8 z3(r_8HOWg;3znz>gubB62_RhnYZ3Lgw4^arJz!CKf54L1-(U3u@6{TswoPUSysOep-0cBDM!P8n-h{31KkWZyL(`pxUv}=Xn!mSGXx*qxYar6dLNFYY?gfR~CTxN0Up)T+ zlaE6k-p;IDl#&4=gM~O(&$^^=Iq3at=_7e*WuC5D!s|~g3nWP3s>vRecvuA}(a1;$ zNx$a)#k*T6mN$|@#{>c^z>Xl|gdZcvsLyp)5z4W~5DJ1pr;*@&K^#b>Iy9SeCv=Jn zNT{z70i#)=dUb6L8yOVT2sMHi>u>dkxjSvUASzLUig{`TdS|;$czS)EM4QEs)bi98 zAn+wfW15O~>ZL2|_MV1pO+6TiN~(H~rc{brd1F@^qy5#o$r}AGexK}pjck6Ls5BgK zKq^IYGmuC4I*oTJE=#a1apXu~X~zeFKhLMO!o`!b$sJf>qsKV2JWhx9%1)p@lfYnj zBL2=6(Qd#m9G+A>NT&)nAGW;^KH%0hRFW!YtH2O=)p%FZoH~guHAXa=e4Jl(0Ab>* zSdO*U+I&m^3eo^9O^3G~CA2y&S6n_#OpNgPpDOg2%LVWf*}sQ1GKApJarqBAbitLt zL}_GbqNnlI7f}lao>5=sy1In_up0^?wuc{{Wkc-Yt4Q)Ae7=5}mx5qqjlll^AFA>A_EB*f@Y9}-Y~9Jjb$ovTQknMSRWu6=&po6NdKKj$ zIFRzF)&|!$HZ~{NV|ikx6|a|B1MT<=W2gWIuCCW>hL)Bhkxa#-4I(40k|3x~kgjz| zE;zUVf424s+^6tjX0KBPix-g>=hUt1Sxnf8X{pwsTEU%#n5~?1=>jks-%=0L>vM4& zT|TxXoY$#im+hJFL;LjKm-D)NetA(Q;N8_&J%w%|n9Xk_#TqPjzUyUHK^*FHl-`nu>J%kJ@BsBC<{{TUBPb8-K9Kxc9g-t(| z58L*1P4HhEdw-|$d5E`O28N>xSfEE=gUU8ULs1l(M!HIhTwX$*9lngvY5xEoc@|o8 zKGC>D7CH3H4+a#jJiNM#`KMvsn87O87Km|VA&2L{{{SwP`wFTYCPunUrDaYcIVu`~ zzU_P=AyMaTG>%@l$t8TW;JUA-Ia^KszSqer$p}?F$3N=+eESUicoX*Sf}ze`iFH$KjnKv^X@yf7SjDpK<-`SC`9R z_Xakt@tDj?(ouD8A0Y)ULZc(P^AqLso6Ea5*{FxdyEnQ}R7;$%sjCtsnHi|5VF?6G z3LBdlQ6Eti9BDwY#=i_m0Kj5GR<)&AjZ$FPQB8)r;udO&vvbL;nB`>;2hWlzGp*o@q>#60Hq9)e_hdV5O8lMaG7N8nBj@J7}07VGN z=sxZ~+N$4Om6ONN)QoOBaBkS@vJg-)XrLcyPlej_sRjQ4W}j@kirg20q4fNPxB=7=Sz{vZQM?LQbAEy9X>j@X?5jNDQZlP z<%Q$^CAb8IZ6!*~o)kh^gWLn8lkH@Yv!YUhMj)S(`hSVs4Y`kxB0p!-Ic$$ z4&~kB5tlwJ4#uOT#nRqqkknPYQB>q=B_x$<%Bt5UR=H+mJo{T|YLt0`in+(-P&!@p z5yt|ud`upwe$!tsBpx3dCcgbhc& zpR*kYZ#NQ4Mw#PN(c9hA{{SEDZQHY@NpjeI#f!sHOIa{gOddj$6#~-D6PNVNB@1Ts z{^F@10)2gM0nk7`t+EmQ!#S*I^nW}^Q9F0C`;kHKncOr<{Z-%!I} zldO_AkM3cHS}bxZk3~9o%6S7b7JFG)c+^GxzZ`>r6dt`3-)`dFB#sX00RI42`oF=| zsNlA}1`dv&8;>ZFW8{V(E)OCz3Xr8*?PUkM&dR=&^QY?WM>?4lY?_ubyhAj|GaMEYmdV1Zh0XjHkw24Mehm z$m9d;j%O2)3Dx`~{Jjr$J65%4nE*kivO9Wlp#K0SI$(zx*?XXE{he17^U-5c@ue#V zNM>RR)KDf+#h)vq@gbga@GlY&R0*U0() z-%gGG!P&b*l~)~O*t*1Abz#1dJ6at9=m zKtJ&gDk#Y4*(Z}mgXDUx{^f=$Xew3~auiIZeQX*}R74SARx_vSG>d*o7WT3z^*2TL zGgr&1-^jf3?hh1fM!Kd9Kz$?$cv3FKY)=RJ0nhal*;}14^a|Xj8l~#WK09qn>eZx@ zRFW+#339=hwa8Xa8ltiCf(7{W{%&vX*YrV8K8dY?b6&33r#6&uW2rxHm5MMKz*e(2 z00ca${%+sa;P8Eim{k1wwba^hICOAv7_%HGr9D9U0XMaU++UKx2l&_z>Tm5rLTE9c z^;e=tlmc_oq7-Ok1dD0?8khSd+QQ@grsL>7qy1+>lxm)?o#P&TEpgQrC@uA2^;_T4 z7RK#h7!&v$em$8&cw?sIj-cnKi6un(5)76cfNTjZ_-0>K?rrTs(mvDEkgGKhkpBQz z%dSw?10|G@sx)6tkSut&&=YU>-`1h~s5n!leh+O=5^Mgi^?$LPRWV?pZnnDE>C&S1 z)Gwr4Px#;4Oi45Y9Xhcn6)m2gagsi;SQXXDxLf{}Hzad&^tU7YPq*#01_X+J&XV2* zDnOy9+w=bbi~j&8OEi|{OLM3cwY? zVQT?qGUS)0L15*j;|SeQXK*{{X!EGmM5E5={7x9bAMxVm)*q2?YNHx@MKfyqdd(&8V{l5Jp|!4gA6|X9+(mk6I8=J|4qAPD+T?$S z{GI;$k8QMdsU0avwBoqxHBAZ_u0`&q_8i{dU#IlF92lNkDx1OwFP&>tX)@ zCfHu)_ORl^+6N(OIy;L~={4!G>Q_S$c?XZ62mNLi{QiH!{@C#_bJFF6>QF~eUcE=r zhXYa6RH!2CO9eN%x7OanI3OK!mtZq5v{{V?L925Bbd)c{C2(M1Z zXu*{9kE*D>mM%EbZ@>Up zf;a<@$o`(nrE#c=X1y#_qJ!m6^?$1esCrSP0>}3_Ac5#M8oeO?lB>_OcrC*R`FixC ztPq;;{(hYX{fV(*&tmEhi?gF69VYx-s0zP>tNm_y9@5^}tnnXT^?#qEEw6MiPNKX& z)&8&W^hW70l6C%iaM2ZpM-4GpR`{?IytmDQ=6kbOTx&Hb*ijza3u;DcZCeZT6jNcRSa zM#~@+I6vY0KHi7jxlWN@ytpah&=}lx70C1K*RlC%lzFdG1V#dW_B(6 z!r-1*5-uSLfJ5Tz*)${AIl$KT$h}zRb0K&zVz}Q_* zrTUxux7D#CB{f=g@1aP+xMibP{a-GhsH>V9SAt?>aCjHHe^Jee`t$6<-r%H6j%s=- zxwR5bvc@#2>kWFyDdVbG%Y+)s0d@*FBwy-5KIwED!daDTPMox4Gdu<8NvF!aLV{^! zsEV=*jcNkA-}Of#6LoHHZhs^CeLbU%-bof@mZKkNBc)Qs8bbE+!$ZU5LFw4;X(`r9 zde|7#PR446QF2O~YEU^AxBA?BQga~>BQvIs=l&643NJ4}FRe-s<`k!=Lv2{ahaZ>50IHymp-u5JYWw}utny_oCyle9N zI&F@ozXh6>Je52Z5X%G=6thOcNR(3+W39q|+b|k=KG>1&w)^T_#;+47U`9aGoSI|P zrLPU9>$XPrQo2g6%D~{AUV^zEd^&zRhMD9v!YL<$u_@$|IP}QW(@LYoDo99cYeRAE zc-&C7fQ6%w0zl4^co2Txibl~opqRKxV=MtR8i3*m`wvbr{fyN#t4mNSr>cm{EC`?* zLb}eN52eVD{lB%y_U|Ms9J-}(QU}XFk;h2i>Z68pJUSvqpkwpL<}=qis+eh2=^<4q zO!3b=cm2`;cDy7DpDAJ-{{X5S{eAA@bbvHSxKaroerF$UYx5sIs{|5G%W)$R&I+mW z@)`RmDe^xqkeSdVdJ5`Cf46z3MU952+sI`Rt03Wv$sy7&Vtt42+gY}`w_+pIXgsr8 zW9CVxmqM+qlv}%7g&r_fB#t7KsjtWZUp}>N{{V#t?aGb3zZpCG8ymR6@14cenNbui zQ{tfCSeMUZ;+5kgK&8)Z1&nIsJp5SwSl#U3n0Y&xBace8r-gCcK%iDJI9ybp)X2xf zUoNI^Zub+j-nFX^>Bg=U)KO|0o^?%B1J=D1pNf6sQ{u;CvQV-|Jp#=P(nl2NlE{?Q zsK!ZGOl*GL6@cUmi(3BiUjD{QcQP(ep0Ys-Zcrswl4%ExDg}K$-`myCb-!lQSL3Oe zR;-Q;SEpSbS;T4^R8fMV6(Lmw6$D$JMa}FtCx=Qi91)LNe=dMK*2q>zqx21>$u#hSfU_T4MR_`{{WY$=X%<9+c`B!D057$MQfao@_FOES4iZFjFw&jak*wz>wqt|rWoR3@z`VU^C$!@euqR~nqJSmg*pH7-v7X)f==zmd2 zR_L**)D`~#)iGdy*9YB_(kQ_^50DrGj(YQ6%Od~ONgCe+8!1Z?J;?O*Ycs zuf?k0U#^aS)q8L0QndPIuMf_j=KT6q_43lcRMh_fC29U2%dh{`&_ZCxOGk1@=kssr z&$fj!4@w9ogmkUIO7OC zW{q{Qs*M@e?vfkoRN#+LkcM7I)9Y_xK4k(IfsYLp>mm6FgS9WNuCG%A3^;5JDG}7m zUr_*&U&acum?pI!*l`lm5rw zjjg)|?4@|sXlwa-a5cvsf%dzF$}-i7`x?LD^WrI=@^lP#A6`^Kr^`gpM5<;{8i&wb z)}kefD9))CMV7^G7RKh*zp^dIZl2N4i4g*o_2ZFBde`jgQRS`j-s(Tnm@`(MoI6cP z;6Wd6?dXDbS6}0^b5_SRF-Hw6OLYCAbB>$nYsNG{r0XM^OgrXkn1X zSGZvR0ITxpSBu&3LDjG|L5h{K%U4zmvdH2?Sv6A8ncO5L5?Xn@pGF7h3kx^1J$029 zmD5gx!YWAKfb?JY2F=_xG3@M)-V-ez%B0;Lb5dCgBvqL#O?KkN{1w$ZhO&m^ z`&jUx*?2PW)uWWjLMEeqlps^~3jTdwJFf+%LUP0(=h7b)hTMxkR^ccbX+MK*oE|~x zl(~*Cu%+AcRphFjZjG$RFlGRqWP$be^CV1e9e|;XkI2^_;OSCc57%PUW?B!=p>rj- zYAbj1QRg&a{ybiUBJB0FSS<*5D*+w8E`E-kkcg z;bp$ghCSDn%L=WTjGD2Lt{4uzad`R`6l_w2^mul+#tq|NUyI4+QE)qUg1!o=DOy+)Ao0`98#2zU zOjPNo(nl-_ztmV4OK^c$vjTcZgnTq5k57BI164tmsKIOvu}_f6WUFcx4(rXpUc!jK8L)Wq;XH%s;LtcOU|Up|hagG?bKO(MM;eXr0tz1>kj;)nQl zCPI@MxhVxR2;v?lc;N~_SFq8n8yG^A(}O3`luyE>^-bnF9TOl^w^l|SbpLe%E&}P z{Q+;RN5KH{cN7ysk@!RPK+Sp!?puwVvtC=>%CXr-Xf&L)JhA?vUaU7@ZD@MaZOtA| zXzKGdMp~NM=>t6NJwY!i7bGj6rGNkn55V@I%r@v8O2E0v`%n3L0o;i>g8CC~g>9CA z0f9lo^64RvtZar&rEtCld$eHMFc{pHKT<`-?SJ>bVPh|iId-O+=hHvx9Z0s8i)U!D zug6Y4f9m5-lKEO1X{w9H@uI3QZ&0*~Kp#t8K)Rnu`i^<_UvML7iBc&~^?#FxN<{K3 zKr))w_J6B9dM!Kq2|iAyRgY6fkENTQSwPatNGeJ?j%}%J$+xnyg`E0Vqnj(Wg#~!i zqLaVylH+M=O;uH+N7A|_S9T%UoU?w&VxZeq?%WT^x`Y7*4@QYNn1Z9r)2h<$O3EdA zvS!xI36Z0-UP&(AqjJP+KVMMwSpNWly_b0y&qy!8L0*XsE(~OMWg9~oZB=SeD7ut) z3vdHifNVe5dlx{VP#SRP1GpNrhP-;bPmX&IIB?kMWQ>OK)7#La`vT;ENg)X!kPkNc z5$uz4lz4`nHEx9?HRIK*b?zl8XsP2+tHSugizrYAtLnAFf&B+2{>vfmVe8R#+Z{xa z(BV!}7?)A~B?Xv}ZEF@kOPknz2N(8ax>O3E^?$4Uy%lII*cj{6Ria2ntJ#277SaGC zg&}|p4aKf5eYYfmP7nIO)n1IPpkkoY%c<0v6N4^KxU9ImYGs2w(IHj`j(O^ILY{Vo0;)cs1i1fI7YyGEoar&*S$vw(_i_4JMu z{dF6V7=V8x@$SY#NTBKPfGt?`?@Kz89qhLjDn~!0TGuQGjjdsD1aQKsaNQT!iB{(z7{zxw{ze$Xk_$9o#^;nUVOyGo8hIzTFJKqQa| zxVg9=U-tgrx457g^60kq)}-UlrHuthAaXy|eNXj2iw;5dZv>$99J+*q(w3e;NapM_DMRQ?mfG_pGJr6&33uFaVN%pl~@K zPtVl*xS+38U`_z*4COSn$n^jR7vztx`rhjy6g@c*YOl+n_byfv);w5_4;q2`3x8(c z>-{~D-4LgaIv8!>$ObdgCR(-*)^A6tPdEBr_OZ7hkMTbtk8PS~K~(v?b_@gM5r)(KsKTf2IQKBC6ju1C{KkM+m&`g^M} z1Xa3rH3wA`W2UNz$$PUBSbYKDl_!JG1fOXn2BxI+z83*#1_w>^HHww8l?0Kjk5Kv_ zQRRQb{C~sQe8(V;KW|Fo6$BiE^6Qi%*UIp8*qhvt30*cf`h&;#{{XP|(80*Z`oGor z^{EeT4u92O^?bTecve^$8GS6StU2`GQvg9fQT4IspKH}>zb=Xkm6D+5qx{_z4(!rTsWJsRC*eeAKq>$X+=D-j2&B8nG-b$GjbJUy58;VF3S@H876g{)Jm z`sig7(z7IGimJ{eXBzaXaLhR%*lPNHeSov9s|znRKgyjPp1H_Nl336W z2#r;*a;aiJ8vS6f7rFX%u!@1=%QHP zOGbfCp{0qi1ly7g$2=Z=jv=^?1qeVYI*cxDCb^Kh)Hysq)%!9!>9VO=UkQxrqef6w zOJ7&g_8&oWf2IA_OTQLmEB%P{uU-}nZEGNLOM*Q56={fg6%+vgTZSK}NmFe$Cf2e4 z0AhWLZQD`>r|I+qm=%<HV`f{i8Za>?7efktw+Cn&zY16l| zJjn!S{p>(mZKSSxbB|-lHc=mM-z>yj%ik^ehTf9=N#2gxdQC$`1~#d|hW=1*D*XzQEKP{|Tm82l$>V}MN!zmr&!ed>Wxat&li~9D z^&*~ysv58f6GNd`{D$fQxzWw+57OS(M+lq7T|-G8eKR%Cg>A`0s2tP$J#~wuj%e~Q zR#L4sRWXc1Ei8-`k~JY1@o{$dTU%vixQ=Lo$h4tTxYT#<+hx>4_byC3F11B zM-5yMn#gA=Y1qcbPurOlBzH0+-o#o$4;+taqKxnJpkXuO= zLyF@d)B!?2DvwU4$B;QH%6X&;V44beQd9(Jb-GNhe=8u2{{XS~Z>l$Q!pu7gfl=${ zUy-Ltp3GTW%^DNpt1%$?gON|Ny)ahd=8ih&#MQ|RYigQgsArOuUOJ>#2@_iJsCM8m z<#@NfNn}dQZ6zwSsI5xW8gTT<^YZA{+WIDYRopGroc6I$0}xcwr_|77k3Oka`QYqY zUEAwpzbc?t$eM*C=6x|wKNNbaJ-;#3 z63}92!eKIT)U1DX7+Q7vH*^&7BRH&h=BbD@Y~ca`JzR5)SA}MgBaCt3)=v%AExy~v zb*(rL&yU&X>($A1$HyGj+oAGBG|<(9$f_%cWXap@OSTZ2th|Pe*5I1cEjSEvDg* zwGeWZ+{!0nQnaN;4QZO3=>XQCAD140+pjy?Tt9`RH8oa^Q;Lu@j@?xNP?4I~hem%5 z(p!Q_B93gKSQ2VdAg2K&@U(GxN;8*NF_#(v0H4pXEw3Y8vnsXUU@L)xLIr7B`ig%( zfET>=VH!DGYPnX);ZRL0N^zm7=*;Ymos8Sj7psCvYSuv?p0Y1ED38JQDNv=5-G%=E zr_N}vuRr!UkMMOC^A`Dex-zA_pg>l%Q>P?b{~)G2jG8S zY72vqYTmwC{{UC*=`d0-MHkc0AL{*`F?l7w`QP_%lGf*4zpwhc^MC2>Ho1R~6|eff zeJs%*`|mWT<^F1Q|JBe=hF}Pd{{S`@Hu`h@f2X!37^vx7Cm8; z+N&vBO-D{m$F8PDj27e4stw8ZnmGeW-SF2vFM{4lT@ijFM_Y~m0530y`97TM91SLZ zy)sRef-I!aq$uVjm?(}PGwNV?y_AnbU)(#-T*(IEcr9#Hh~gRvK4y5u| zM!R5Ds7LItN3*pgslnhY8xKw*s-5YuxWc4FW2vo|!m_Dm7BI%eivYF*>-6^+Yb_vC zz@DZyx@#@ANh4w6s*(rKhx6M#lA=19 zGBq{Di`6XChI?HYu(K53c<9nkZl#K_?H>`&G>RJh#YQ+9^Z|xdk=84z$!RKevBf;~ znvFjq0r}%S8f}ZchF>fprI}_FwKIbWkgMri~oAL-Z_9fl~1~$^#R0cJpS5}6uE2U~w0a~BP^rw`f zylaSoT})k6fL5A3L?a|>YAY5rAxGLetscm$ii0|=VQP$SB-yB-jS`>~ZWNQAHR*l+ z)f!kb#TZlyD84{>56kxTS{MncHtur^wAv}F=b+0~*1a+j8&yjl>A=YjHj9)iU6aG- zD)-mWVWit?8uc8Uq~YAd~@4F z(shW+`pzlPU$(kAW5^{HH400Yj&V;`?9JiEPHH@G%JRi!bU@6s@kTXUOB;s2y|uw% zgWJ=_B?6};bSz_jKVr7sH5MwG8vNdJc^Y~-nG#B*tep&xNd74t$40cp8b+{4nT?p= zl#*Rj3P4^RDux%7(@E9j2S)3segafhwI=iJIR5~I!96s!nA`;`N90OWc->Z}c$wBs zS_kd=Mus-H_h*?R9DC_n`E;7%>p?L^MsUC%k@Wunis<3g?Owm@EOd06dkc@ErGgfA zcxhp0l19>B!%-rc;f2>PZh6|6Z56@LmiHWEx1_K}OJH5ka$BR=Z%rLlpm5=7 z?01pL3nxO4FnP?$(KDC)9Q_Nd@osyL#Ore74{|Op zYVUX}3~=Y~`F9F|PJ0PA!Reg?Bgt14UJptWm{s!~hMZt&L#&E-vN4T~qzh=ejY5&m z<>lgvFP&UT?Ya)Ch1b0w)N^Kn<`u<;d_mDuRouG~>?8R6Q=KFMfK=4lsXV$k>06-3 ze=B#^LRG!Bx|!O+bJem2g5y1G;-G1a6r zJMVu*?Suc`hwe9hEw2;FDfU~MSVZF zT~mI3zF%&fet1SZ7Vw3-CC};xyh&O};pF{Vr7qi_{Vbo*u?HWt2Uz_`R$IM?OxOb0 zsZc7Qn8yT;Y^Je^HMt%lcOh}>)?`#JbND__r%REwH|V>ZE*S?>$yfnp5~3M75^?^O zDVCFaL?i)b{c@nGeI$t^Ri{wMDv zsJHJ~;*POw#8`Ly*)axV*6rs1?4d&K@O8+Qukr# z>rhJ}fRb4RwzelBe8t(>dU?#aPLgbBNMZSC>`sX5k%4`3S)$L^a6%loHlLJ&c0Fe& zE{-pTS>V zg62K<%zTd?gjWJM^}azCtiPiXIH0beJh`_I;V|ZWc!3+H^UfUDSz7X>ev^;|6n!;5 zf0fg?CO-w5=L?2B{+NNAd*`!O0FXn5c*74bgE5Mp&SHothzRhVV;Xz9a$ z`*h>8gEHj9Y}5z-u#0G5&sV^le9@D3u0n#8~Ix^ z;CDFEp3X(hD=)SyVj&uGn&laCermF4efV{WVS%iNqpsPA0!_%tTGYvQrv@NV%HK}1bU2Hg9eC&$5^^{IH&k5 z{5?JX5F<{DZ>!-#TF}&&Dbx{zoKIMFE{psf9_V8J zfuKimFVb1kN572(T!+;%OG;B!%=q`!y~Sb}P+xR84f}SZu#pml7_}iYzB9S@jpU1O zD4hD<<~`ZWqiZWN+0@B&A5u=@q_c}`Q6X$h0mL)LnEtQnV%~&uxVhiLwUFVEHm&>j ze{`00+MB>VIR6QC(n=CyXB^wckAN57$cnjHXo0mOO&sE^PQEcRdcQ(<;S!rLS^*-I z`y+3vNlM%R;1Vs!aDAtPi&hNyFS!T4x)^eak0=}bwNqo}ppcs8NpCZOmmRBLGpZG< z>mC|1Zl0eiFX}3*Wv+GhW0n5^P*eli$~vFC!=PK6NqX3rWz%jvEW^huJESVVHbTIi z65x5R)75yqGxV9Ome)8mAgn5^_Hf^1^fwWv+V(;wy~UICdU%<@=oi5|aTCbmcjt=(9cS#adSr^HQ}60W%Ngk!6hv>TiIrrKcYW8V z@~N->TgDHg{=!%LP;nRT7q^+(K7}l4clc#aldu*(~ zsL!XGG(l^FgLOwBDd>8CawHKU)-OOr5qLJ?x=HaE&%~#u(i01&Q11xbPZ8%5?Og+{ zUDVuJ$ng^T^eJW>B3Q-U*|b2JkW00#{6>gcw@fH`J9_t9O&+3;3uCCZSjOUWzv(^~qY<)lmza*1~gBWJTaKsqgKaqDA#$cO3W%H2<} zH+WRA{t)Fx$4PHZ3;5` zVa{q9Zk?8n_sXVf-kxD*fv!i*g3pvr*k&6)HiUthB?X}?7OI{c3{1!gBx}m-%jf(7 z`>V`&1lXDCrDkQ(1AYRkd=E#@St|H{!c<#s68z-dI)0^O0{RN6oiL91_Vjs+gh@B} zLA12`hSv+7Gv;@x(}E_~>=D!Ae2;CLjgvJ2iJD8RIPgXFjdxb|ikgdgHgg5{e(}G5 zU2p38OS3K25X*XYLO;E+T>9}(a7RCDz%BHeIC@6^+SAukc_8>?5`7BIZ#T9``9dM# zzfo1JNHt zBOdkI1G!MEd>Tt@t@0=hxSMLZ8eqIQYzG^P#*njnvP+#@O#r6#4NQ3F_QBy7rmjC| z`VSPII&FY{sOWa?N_C{1;tz-T&4X)9lDJklVzUs&uptzSr5Co6v%YrXq>b*Jou0!w z6GMr{mo2_2+`KMq^7;8!&uS&9|6n-mYyG3skkFnkpj+3?KPskCIyBhjUZ=Iu-+e55 z-g+8&JK%2pZ)uL7ttSFQ{-uB5cNpANR1Bpd>^)rU;xsp{#{k#lFtJ)@D*#01MS!pI z8{fXXeR()eF*}pM+(fJYM*$Y1Z}qd1&CRzroKC~};JTF(XIdzJZmM+Vo z(bYswzKBU=H#L*++E{}R+HSkKyib`wiP|B6yn4>+pniT%$XM+1^eSbmav_p@h797$ zcYuT&LhtZd|y>aHKi!Uf&EKB^F(kDbZ%&N)D7TTb=*6fD2xOUpj z|MiV(L$Nh~eAV5@v;B}Bju6s}I=u+qB=rZ}(du;g?_=CpRCzuqEd5<;qxPwnX-i*p zVU~TW#gwuDRp*PSJ`?v~B??)9=EOrutYY3d0Y#rTkACXVYAV&Q6h#uHX{Ze^YRT*A zL9Kz%;He<4nVIJD;W5o-TpAmJ8tS)~8Hl0PF09H0U*nMG9GHmAOInBg-Gb-#sp>Um zIeZK}RWXT8EYdks^k_W?YyGdC3~Fpl^Y4i62GBQJI(th-Z#xFc%7`dHY#v!u$e!cOD3BBkRk-lm^qDCtnZYB}`0FnQHIXD&g#iZAn| zEknasdyuU<3{d!Ww6q8_&hh~2!LFpWOgdtRSHjo9>gH=5b(}0!q5^WxE{$7*y_aTj z(erb>qH_igUeCj0qg{2ahSiW4vM&@wX4+kJKGGjN3YjA&ZHxb$s)mu@@XUdKSG>IN zHZR1>O-)eJXR`11KWXz=?A7B^w5{zwhFK20{37E6T_CV^60mhjR1ssyLlL~=8mTT4 znHqp(Rjw{P!=-pZHEfixk|)RhLGP^MO+`la=G-&dX&j!^HB*0vlA4luJ8S-hfO0bj zVsTvRejFGU;U>&uX;ea@WzgI)uNfkjy=vZ15yL(wMvav*IT{f_&m;^UT5YZ)invp@q{AlQlKBZ z_{d=+WJK_yf%eb$K})Z&S(s$OU!%O=X5NHm3s>N|=;}P&*9r+6UO0ShHk6x_8jJv2 z^(DseK0YlM6`dSPVeZur{6;KU#(L3sxUxQMl*VPHxVt+qzP`8NpWv>x$)sK$wx}~( z+>!8lk{lM}9Ox&Cl#VSTCZYDIrGb`#TBhO^QfvW@fFt*hgW~WiRvXqm*$4gAybi`< zf>JxcIL&s3`rPU?kJ$dfrgW3Nk*yqWsPo z>)*$#Jk9=OK@D_A&N>(OgAxnZs0*jKz3$V z490dq;wvutM5EXv#waCL0Kj4v-oDK*7sOaB8HFN2)RR$piJZi*eWFua*zT1VOqpu%x@fyvB~n)aW4#+`U&>WHS@8%HF!dXZ zD`Z4`-WQvgRX@BxGKq&`g-NHmJnaYvfgmIYb%mv5kYzB!^4Ok|Vk2yE9L`#J9cb*- zK~>KMY^bm8cJH;*#A%xJ5WU4J)go2Owa^2c2(M+$Z}4%}ZFgVOOsPp69^{>cw6jT$ zDIe-Tm>?oYdr@CCjWoFW&4e@6xiF6=W_@h2c8#4IRa-d0f)IVpdF|t1pWrs7ZGBhx z$JbQ$z#3mjU@Oyb$zOLTiH*41)--{deJ$`KtAY$v&O9KUZ?E5R6^!EWw|f9NykF0S zaXbcQ8sqDp-COyJEp@z{gy1qV?=v64^}}-&Eq6G08fMH znB|e@SRM-Z>e~@VYRYqEWEta@z%Io|x=?!_&hTMjSY!3Tg_sxrl2-E8`!2NLJAXTN zA0JJz*tmvoDn^d|r?R=(fs5sUF(6-$1u&_Ov(KMOvTVH(q^xIPp)si~6T0=efQyr3 zGuL9{IVSf`wv%HAy1aK^dKo61!D+I&dwK^jU6t`RGw~}QiOGz9VFrNK>}Iwnw>M2@ zRlpm<^p0zR8Pfmz3GfOaREQGHb47Pjyok~toCfd|9vmsCNFnd6@;NdU^~o{42gomY zd=4$EYE29&#|mgHaml>`e+;=ZTNLucw?IX2Sw=@we2 zb3^{;((`SO(^x(Q&?=qy`d;A9dJpxIVX#2!STKO&#JemR?|xu=y#2$>xsfcnzvyG`dTl<%G5TyRDy~z36=T`{@@Hy0e0Bj#<)(xScHEh)jjvG#EOpqbf>#}E( z?m7&8ptZ-+Z=cJU4JRo%L6Ddr(;Z$QT@XMbE9JbE#|EGM&vZ`=# zv{?c6C*h!^c7lDS(FMD|gdAtF^e(BtVAa_^@S-P=!auC`2o+yq6y43Lqv*UKXp->f zxs7guB;tPRmse8Cf4so%-h3G^Cmlp4td{;1waoe?M4(pJ<@*(+7Q@Sf=-dekeL(sW zVBF48q&p7IJ_sPJ`2w}&T}{XA$5E)mmMmPSNJb9i$$)3X4OkLNsBM%5tP(x|NYfHt zT@!1$B&qwL+}9~ZBegPF{=bVGI4_@nTDhv4=>-W{Si7 z(Yv!OrS792Fzch2Pl?~8jl2yF+x-X9MGO6KEjZp%B(ZG=7gY3utvkyXnS&Q!wQ1h? z(c=ElV3wntz{Q!J3#&iGFlKY%!&m2wej#3X^_2bw?2^)>`1)%0IfT^MH1Wx#aUc}w z___6HfB$|KNyEgj*nhX}2W?H;R8FtrQB@4EWfVB^jj2eFd%Mynt#vF+zCdgN@|U;_ zaS-*dy55%!dCQhZJt}=Pw|zn5)pMxc_qo<=yFlbf#q~f@zLn#&3^jKpyXW(wlvyO+e&>x6|YRL&-XahobUbCh!-P(z zpP9T0^*m>+)kw(TA$@y{u`(yVk@+)53uexrcLys12eyc~($oPF>q1pV*L~Vwgmy>` z3Z3a`Ae@R78$n6moKmg42G?tLIlG>(y>oX{q)3d0P+DJvPMyO}jk;>#;Sh3>3kILb z#lO(?m}X_YvXSAN$}Gw_{Y@W=6>~kNZ#M?XS6NGKAUI{1gX*oZs!X$Fw6Al$ zZm^u_FHIu&YKjj3g%K+rf63UzF*5!PnUl!P-7oDN6JJtbmQx3ou4J@be{x z8?85lY|A|KXFR%IRB+=IlOZHg-Ca^Xi|$-ds+7BuH|Jp$AYE)fO5vRw| z-%V0=h|;UEl&04aMOhlN&V|9dgWjgomFO0EisKiz4)5;WfJ5vG&fJt*x@}eP2tW-2 z*7;gMJ~wsqBA(&4gSuVNgShbwvRaCo%7rYzzqLM^2{YD5kyOS4C{d;d^mBx+HimyY zf==qJu~0kyfFud3S>tTqqNOE38>nSWHfo-!SwGqhx)CF)dD*emocJ^^;{x*fN}4mv zpo*=#ffnxMN}#|C8v}%hwC^&PLi#>uGYwtqrkPtu}>>qLtpDm zpY3NKmYHh2_>0{Aafa%!c%O3cnm6Ggh2v9GO3*-6^F@q|c|pk4)K+^D=%fLl97@eO zK-5$w9u?|oE@AtJ4p zp&}N(zp=Gh7@@ZX1Lq8H$P z7^tPQU9`EMzP|d?CEVGt-ahoJ&|@*;kee`w&z7)=#=7=>^|c8%_(OIT zCHZapue^IM4}{jpF}43dG>dQF-CtA>-nQ0!9x~c0#A&(wCE=f{Pb)dGXs}CEQ;qa< z_93BLi`7@i-_zb5s`BO_y;Va|g zM7L~yUeDi8p)vl$hRyK=rRo&V1ohRQ#&951A=`%^vR}C{zKAp4B8Io+00w?@zcqxr zM6S>0*i$SEmbJ8Nz*sAFxc2+cQBSkZb0>u=r&Qi8s=IH#Rq^v2FH|Y==S{VXXhOq- z2##8=Bu3SbFN&D_VKf_RjV#P+aUI#edzG{i&Uoq-ITT(_z?3)63Qql$(6lo-RZ>z+ zP?FhPm1)XZ4nJn5e>^R!kobt0T1(22s8OP@ScWclEKS{8UqDB&-~sFK_^-f>j*!R~ zylOCMdK$%K9A*w~;Ap=P@`?Xue9yK&FT_7F2>o`>?!l~{MIbj*_Aj5edYJE zjV>BbiaJ-01fzYaIAuJvcsF>#}pTd>gi~0 zQm4%Gf2=MmE3M8t=5r<#Jel-ZV&A#e>1#7ns}gS{@~E76c;DD`z9X4V=P>?J#${w7 zV)(-~m?iU@Yxq@8;K%Kx_iew`OPtf4O(-=5HQ(5`Q4BG~>w-E7(GaNLvE>gjM0({k z0BL0d>{WbuA{y{@8Z*@^Lf3p*D(kst48<-U5>YG1DdS1M%n)}WsdFCjO@202^3Jvf zJ*q(#+Igwr7sjHIxc#Tm)MKiO5|=f#k_9{bD5f{cE_3xA9Y4U_ z4Kkt9si~3gad7X6W$kLoc@n$Zs(vY~z$J}{onkp|$ocIyW!93Y!@LxT#vx!+r zO6&Il#>l&Z4~d3MqMxLabg6xksFNqM49W5sLpQpCMsv-LHbf4A3a*(FFY8KOP zy@}eJf^osJ!##RZ!aq$c37+6%|Fy24MHa}m{H~K8@!mbV_O04L7MIfj>7%n{cX-|% z;3gudmO<*wV%mf{G3j9feo2@K*D*(8Ukqc<8Cg}}+cIq>uV_aBMx#ne-)$}xqm=SR6edpi9z z3#rR8OwOe)>W26YJbNVlPY zu3t+OCd%8*2%Oj9r_8G6OP7Ap{s!SHnw{C;d=nN%Aaz)q?+qVcb#--_JY8ulo*^%d zx$cg$^><(!{x4;Ctxf#u%?>-{ ze;|bpB7rAza}mHkd=n^|S0K2&+R1m5dU#)a+oNUIqS8^M$f+-q9PZ2LKO_t??p~k+ z$zj6kk7(+L3baTn0pf0d3{8&z6g|v3dwL+eHEuhSGAonvLu(>P8cvgin#N~M2!T|# zOLis|gXG^f+6v|AElA&DOKb(Ai18@*43LkOn#vk>z(f`Y82@;MXq{ZF0FLA>h(N zchhR82MWeEO(0KLJddhxlGW|c6HOtpR3y|$p~g&txKT~mhyRDYGAPOx+<7T%M4{YJ zV2ShlYth}ptT~gf)ne4^qd*d81-s;7ipLF>)aBV`hC~(t)HGczDdQKH7N^eDJUm4+ zWfK=n4-^adi&PSqII)JhtryGXb$inDt(TVnfdbpSbg2T>P7ERd2nelv&L26N_*xA| z7et)vp+=(iXzS>D`!=Mciz}{@{35KTPq55l*T4FsN6bD754lot2{_xtyfjIB(JGgBUFqQ zbV@FRbA8#Yth$H9Q*&cQ-(vF8`*l-^^W~&2sN|p*SekfNq)GP!aNjrLdObcGv^9ZH z-4O;+KU@#UxVoUMT(TJPJ>C!|C{*g^jW)oxH2(34apGNjhRBH#XI;8nbi9)e0MT~Y zF6)A`I@|Ti!RrYX$@kX($ro0UcT91NrfvgOC*Bp9fn|QY?!7yByT`na^4a1b4`3SN zf5U7lzr)Lta^2JfjiG|>iOBV>^A(g?Jk-py=+9fK{7N z=I%LDLQo5-9Z!WLm|o1n=R}<)W5a4$LXydQ@KGmbePJY>Nm{roL@RCi5$sUN14||X zy&?1uXaeX@gmpA3%X&)KD0j1uP`>i?c&jea&9Zii9>!(3U{FHD`~w|zvCg3|1+w$e zk1A7YKIcn_@rUM7gcgOkx(S8V-xn4-X`HZvvj_=p`0g7o18wRnTdA^a{ksey=4%wo zJjQJgRTb3sS60lbNFxvmWoFQGgd*ejh+CNQ-D4ojVzPYr&$t4eH|zNa%kpfK)Bqq0 z!q`d?+ZEL*v9)x$46Muz)i&<|t#wVls67W~`+ZJQEJ>JFZ1ep$*3H9?T|(|Yx|IoD z5WvqGe_zlDj800Au~~`0Ji#Tk2rVKf4TV%L!{3e#Ql^>xCtk1?&dVmoS&awiO>0P@ z4tJYc$)Rt1QhIKZme*IILAKnrJK096r3~(Y!|U^iR|tPnj@z{d*V3A91gSMSZ*mtn zVJq%IDIOFl*F1%;+KSk+03=pr3`%#9;SE~|tOgVbFEmb8@i_xwECfrI@23z=t(Xb&zVZ7_AowO^K@UsYq&J#5KC@MH z2b-9(S~EVj*-n_SpaqZJnmR!|eJlS?NvZdX4K7c>A z!T7VV@hXVYv{z7{&mZUBDq^+m9RYV&Corx5_gsK0goKb#LIuA~g|~dC)Rm16Cw6+I zpBoug-F(Sau)-B9TbKWBG;DZ|8-X_dI37X+@dTB zpz^D~23?u-FCKx;4=+8|lt>!aR51fv7=5`5nhZDRuIR0n7@mW%2D%gXKb^?$BaZ52 zV39%N5+@_ZAYY2GH;l6CfkQA8+xOSRkfcavRg`0Uw<9fvys|Ucx`Lp_CC5(oNypep zS*rF5(H=9TY>bcHs6Ef3KDJ9H?E>&`{brdVo=@!$p>DHPN^Z=us;Q2*V<6_#>o1&O zNcx(aKt{fCV;eyE8Ae2I75O0X1yeWcbe-rx(od)b3WN{HxCmIIJdaa4GT939e3xp= zgE5}ZkV8z6 zh$KlOSwJf5y0Z5QrWOu0-3B3=JG(lw0iEWeb*l{FSI7_|fnW2nxwraUbz?PD*TD9} zt*jpWvq~XN>mPsT@1wHXT%uP~J+cac&#h@*b}84C$~=+$ux`6;5fv$aZLq-7@W6GMy`^--$&AfdQO$sg ztjW$xBg5xa5F=~--GsS!v`vL9u5Cu;EQ=}i=J;|I`MctQn@;fouSI9M% z%S3>KMUm9)o-g#Fh*!H4lf)UB*vAWv&qU`E59RF1(R(LHMJI(sQgw+iGG*=55Fm=} zlhTHTCU~QngMCYbJ}B_2`iA~g}Am za;Fkb)@&^JnJoP+?L}SvkX^^0Ue9G6d6Lq84Rw<%|~ zgszG9cJM=4!XrTr&0)U>UQya~oHX_R*W1OPL~^M=PP{?QJEYR%2*%ZM(vZax9mIA; zM1BgZX{Ay{tZ#b|5P?PmnY@l*-AbnnL>^}xXWNClI#wx$UIs>b_3VfR9Vll>el@3& zVa-{u{`~M?tn!$6jSjAzrD7SmQ$h(#Dq0YpI9jd4CvIlU&}6Wo`05RT-Ah{HLEUBJ zs&XJllA6w0qp+t+$)upetW{N2?N6N;azQz5a&)_($%x}0h$4`e4mG#?(z!T}D1Oez zUpQxXuBHGxC&8GF2C7>gN^vMN>Pw}n^eI%4TfN1bQ+scciCRoonaUt99kx(FhwH*w z?sqR1YbU{?@jb(Uk=!v?t7ZBfcE+*Lbr`Ti3itWC4YbyLPe@{;(wSa9o4k?kg(ZF0 z?3A8$JxY(4CdnSMt8Ot_v5@gct6OPEOZT*uS0&l-af+)rrs|L$2NDrx`)IM5JQKMn8iPtp<4OM}=`eq8Sr0%rn>sV$; zvpD8dIPvk#xRj(8q>8+ZZ<`-$9vO!=e_|oLynW##v2UM}@KP#O3oI9~9eyU`??d)! zy)u7^j?(DoRJZ{qQ|6gjCrFAczeP;U=R$We9zrq?CA9ppxEns`tZ!`N8^^qO+|vzO zD}1x(U`o^bl#VEGN5AN<{j?#_>)WT1eFu{A>IgZPGPp)C3YKhe#XYf*%^pdZ`ld|m zi*8G-(}E6bsxGuu$p)sioyy!BX*zTD#5dj;beXx-=Ke#VYDidX+CAdSO?4*&$ zL}CD)MV_IQlZKJoMFo!8q$XX?aYWZ^>i4dyl>2(M$sI)XKt_Keg`nEF$ub&v@}-qM zdL$wi+e03W+J%7!W@j6mU>0vHpXv96qM;9I4Nql~2QzIzmb{Np7nnQMP9u@Ze;~SG zd`Q02;``4VA)Joo%Ap24x3V%@0{ws5s_bG?)I>{PIHyh4J?|3uTAOy>c|-1}dcwcP zamw0R(ZE3wUQuEFOq&`N^XZ+Qon`g=>I%N#dg-ttM+yC%OE7>oK+vT z=Vz8ig)(EEE&Vc(wN?`s=eO{mCc5g}$nj@@<>zdTz9EyYHMxKq+jp6A7sOg(akk5T zs!h5z#o6he=Q~NlX122ex}GuHbK;}i*%1e?wxY~(S&R0fE-pJn6;g^A)XTkZ2WICKL)Oaz z>|Gr+5_#FfgYUzHVfQ~uD!#`K3~j_0=n&Uc@Xpx&!hGb9I;Uje_&l!X#?W@WIH%&j%B!D{|J=D7wdYc5_9xls>A6;>*@bsKqq&f#um>vDp*+l8m z7NW=1KaQWMar4i-bjAemuS8FEl;g$XZ?OK^8vY)j=*>vsg|&~0ZB4<#eh&v^=GW(` z@$vpk*1S)d9iMKR5=RmU)u3mVxkpUGng?1Oq8F`o8=NkI`COK%Z^XVL?WIv6`nKn7 z?X<34ncPIROmx1vCV!^{g5K43rHl2z^PJ`2;>qWq1XN5Hz8wXdCQ&A1|6#tf^GEJ4 z^L^S7AG1Gpv&(X8$@?^Xa?%gj14(2=1Bm^d1fbj0xok$93E9@2h^mHtINZgNx^|bI_8p38GG#)fL z2pguOXf25uCWnQ74`HHwU7#ZuE+Ac&)5z-fDX>$-p7SVUGEs8fE)frEX2>UHkysk1m{(^GmDK#p?NBi62EN zumavzX}!oN2KptC@;VUP9bHP5sp|6L#b2MmKj>LksF}gV4~d9 zVal%m#Qi?$8|OP7bBV7Ts13KjFfelo(lN5uMEX+s;2}y=pEuurBX?D`l!KO&^_5+p z_m5*Xxw1`~K<1OSD>@65)$*i(68~_W`tXau^?6cGBCqJRZ%XN(4;(T2a#p_NhOteH z=;nJMQGC8+-a1RuHpI*Y`Sq!nN=jt{9``dB82w}ys7i6Nd587jcrNX}cyR}mav!#f z=*e{8pZ2y%a^z|l+e6w_<$g0U0j^`SCN?-fU}Gpde(wZgCurq4x<#p? z5a2B0(I$oZ`R{JiPzzW>?u}?#$XwL;Cp72ligS=k8bJJn^hqIRy{f%koH!FK^0_x) zCZRw}YKg>#0K#-@DA1?6B<*q<2)|~%fCFE8)cMx>O!0;qGsRk^zu5&_501Buh?k&$ zdn^WcXR9R{jap95c2)XaBB)>6g$>DsoRoI8C&!6ie28@YN3u$OoGo`k7ql|Y7?|qv zei*jHp1P#O zc}l2!C+7YT;jwL%9|`86-fwyrvsn4n=D=A-15@lVqdQrmOuJZSf;Mu25#GnFPrjq; zRa(NA@_F{n-E930Qg8bf5Dv^5Mz_6_Rr$6qZZZ|a&x@unimh_>bitaBBOPtW>+5nK zx+Lg}OjJ9S)zGi%j=Fn-o(x#p8g)>0{vql$n6?*w@TAvj%b&UezQi^vYMDjCg$+en7`;Xl7^1h~+$EDT`a7)XuU@d34N?9B z8EJ!64Prl6#Ssh7yL@4%0~SXtmDCh`M;m$83?g?woI7~y{x9xu+o+K2-K5&g{zAWSP`y ztgrD6++fq*hK799#)K1}Kue~jKF2HtY5Gj-SU7rX@$vh{=qq}yg}d552TxtJiYC>L zU!T7guS!xvDe&n`S7xJ}xm8kL6UEYu#^IkNm=_NH1KG{CC*i^fsq|E@rG?`COKg&8 zOtvpCz9zS-zgzgS5h6H9d4>7ru@>YeySYHr<;Kr^QI@I_KPtZ= zeuazA1fK=3ztVcUNFs+a>`nh;_y!<@HKC}|lx!^9rZ(+S`1RnFK2RS0&{pa)h29{t zyQp$+cYbGQjm_8w%Q@ooY+UP8O}fEWWktBDGNX&4faOe?vk9z7J9R~EU=JQtz%~(q zPx}GR6b1hSt&q4*^lnQn_+^V#Gz#Pu{E1o`7$EjiC&O+f@iAg@wNj;>)h&_dfAx%} zsV?OS9*WbHWNK{N)K(Dm7k-1eviRONqD$e({obRVAqtr!x(jOw3b6Eh;qbW`G}g^3 zjstElg7Evgy>Kqk=+WT$6#eHjS7kP5`nWVH72N`6k@GRoCx8a`kD3QO9i`OW0J{tf#e)>wQUg*rtoW#$m9DNvk1l;y`nApQ#qKE7kYm_VH zndF7al<2}4l&y+(wI(xaGXW3^|y)jMD?UB+Ubmrl2$8 zW9)LtVKcld`%B~sz~COse#5E~=ijQx3$+}%_C$%nd{8_Z4>kTY7QSH#hDhmrUWWRR?g&B6NPE?sRj7159jlHVXl9a9)lz5IIXvZVHNaGqZVz4{} z%aT1g#NLv&y&f%Cx(_MZUOlt)w^=F%htS+TifykFmIWrp(Dqet@WwIA#03!ifJvhF=Ha0z)M3^9o{Ibkpm#+SKLw@Xtu<#}5wJD^EzdCF zsZwfje{}ZFtIKqCC?{EgTA5Q>3?2Os6B#E)jCwP1sM;m@FPCtinnpM8xjiR4KdUFf z|3F}xeXE-Kn39iQ5zxu4h}TNOKRu^Y*wqQTA-)t#o4!(s<~LS@6~g7D73|S8hB2jz zi5{mAjtDcNz3DPPO<%UuX1>ilOZ&=`vCrwWY5J3bp2PGp+_p23>J%LnkI64XYUHEN z_B~x}jij=_JM(%MFyX0JGm&CdJe9$azf%U9qrFWoW@`9)Q+wfm6F7T*9y{AsRyrt; zZdB9dC}rssl%n5bLi!)Fou9u06N>tWCD4^WNakE>*xM@iX)G+1TUr|ChBiqoJ%wf1 zMGknq+N(}gILl!WG|zTsXucIi#)&4QGhL(w>;+OZ@#F7DJ}JqG+PpC^zO&xAc`#d) zCG|5Qq|_rvrTUMhGUVYCHeLId3b2r`F_$yyxkxEKDZCE^}z(%FA%B6w4ZqY@T8L@YU~5`^~1ScuqB@j zT$e_xnjbuG*}L-bX;w1(`$U4pw*f6FcOeZ0+X__`rDn)k$ZN7FPcwSv*h6X#Ls9r+ ztLKe-3y;by61_U)Mx~L>sSWw|&!m;1tVe_KyPAByNHjjMCn%HHQWo-5A}AQ-$W z$wq0c`Ewbq)R+^g6>({+-?qX&*0g9nf~5*QCD5}Eu#@9}e{L>?`X7pO$;8TaNdkIA z>$i-NYH{B3W-z*<${khBtxluGXLfq!rF`fKaN-aoP>e)1^1K3xpE+^8gg;b{!5B^FPNs;k_}Mxn#WR9*4p*)4`@+ zWmrCVZyEG%?WmqTRlpcu1EjVMWA9gj)eX4$#yoHth2^y5$heF@AvN^#o6 z73EKzYLiQ4z&%W#h|(aF?L7%Z=vVB!CvP^YJcS4h>a>1jOgvbE;_u6a|{( z7B*JqZZ28XxLd(BGhMNj_fPBXteKxN#X_CI-Esdxlt!f%-o-hB`w-YlxP>)Hs{XJQ zC?#EVwYdWm-)~q>{R`+5gWc0S3r8ljh<>GAPn2XlC?(>d)5&9cw|RQ}|3DK5Hzo2Z z3>oHwnc%5Z01_$Ouv}9}^+W|1N+u|1RG8^C4Z->s)OTiEsyY2#!CMm`BBf6;BcXO}T_VrX;6djob*3a8 znG1F6J2Wk~wMFXOTOH1=JSh1Ps-#zT~T5wY= zEx(<<)a zr>RV$({o!CT(_ElFG02vVEMRjbi_M$Ha1}GmkkXDzcKx2@YF($RFp`>y-|)0>CQT{ zDIP+@d;ftznwZNuYtsc*S)Q*Fu&IS^+8E)UFQc5#L1ZYRG!8)~$lpF-3mZ&WXj-nD zTmoDZ7U!t>{GQY#$LGGm`0=E{T;HS0GaveUtphq*?xKGiPFvYAx;3RH;|=iPf6SiU zZey{wrz>`AB*wQMH?qjo-yfqiv;7wY3MKu!(iBasQ9c%Fc+5@U7 z;4odw#KDt2Y(Y2czfG@(%TEMoNvk}~?+0#Z=W@f1bf6~?mmV=)yK05X0Au`t^TW8J z1=No3q0~h8{T4@Pcv183Ev)_$4TUe%?j_(Y*U1Y1@*9uCw)=Ra6f!mOjK8JB)-!yY zqn3uavzZLr*z*Y}Nf(}jtz7rtg0{)a$ z0bjFHWA%R^Pe8E!3ge(R%5JDs`e%o{=VCl`0pK6@7iwrjj2WQ*^`Vfor5kF3tG?^y zzMcHih{uWp!gcx{H&`pfeX}Ulwa8?RN@C$>FQ$0H9>>GDLMb*@DT8nps`IGaWx`mw z#wkPkIbt-qZ!;FwI#G2QTJwxjz(2SN>UZu=!$GJ<=yc7}Z4$xLH{MqGxXAh4pTg zO%Org0vKJV+o|743iW|4-%1Oq5TPPPFNQm>SRUaFKGrIvaMR6`XWC7XnI+wza`M_# zZ2&Kqx#WPn43tv8BfFLUf6I=}OAln>3Gm%jlDBXq^c#f*kijwF?c-8wk_@Hv3f@E> zr{jx%S%=`MJsv$sMs=~RAkjhq@c|O@A<94ORxw{kkf|#@{d{!nt-0f!Q#pd4=Z4Rl0OU# zjB%^0j7h*v0RFx;tSad5NeUq@|I#Sd#s1NaQLS3m0TwNR8tMvnlmd<;wG?Mb_kKeDfDv-#4W zX{oG0L#OH;Nt`>%QA+533d4X4MueApSs=*Vg=qj3W0l0NcC1JxKA;qYE*>h(Qxj;r zRw`kS=ou_>iQcJ~_=Hst&i_0Ts`Cl5!tl%2@aDzeOa87wN4hklyH<8LL^;`J@*hHN z_O2`Tz6vn=drs^61~zFW)o;yg_qzO^i}5(!wPVAi)34N1*m8i>SEb~dHLD#DJRD_N z;1sW*&h`)jdFI|`PENI0q-jEyp?8aucL`cULvJTqCYVLu_*!QDoC>oM~P%M7`1TrJu`CqYcn4 zl_;4w=Vx2pPjU`$>L)1diBMFhd|-ouVQ!n~*=VFJx_5!c?mASsXsVS8SH=&}9>UP9 zV3TQ07GaAnkG z%r>E_5ntF>w3DjIr1W+M;YG^*Snf%>tQF*LqPh$;Q=lOu(L~e-btPvqunN2M<~Xu2 z+pbVuu$RGy^|u7@p8{?0-kIx2mR^{fmSm|#a|z;xDE%d8VA(gAdAfECl?Vm)Zi>^x zdPl8{So{WY%}U~IxwQ0veO&^89Es1*cLJ2Y76(`flv)X{;u3rG5MjG;BqNP+Tz0TFU2xU?2u8t%M3_s?H6-z9i&l;B zWzM)W`&q=0`nv(w%obw8o*G4>tWj37{s&h0rGi`mj?fuvl9^sdlIoTUS3Nr5MdXj^ z>xj!$N%7z)!qaxUyh?V)Vpx3UJ5fuo$sk^~kxr6QBNqsrzs|wQ(&pkvUJ6>t@uwY` zXW;d9>@}sjew0c%e-vBcA-y7AKUep6Xd4SKBc14&aG_P1Sn?e48Bs<~VtIDj<0IH;eCK z4m-c8qg9k~&H+Ph_^mv@yPvLeQ4Ew#*$FIv6^dapVa#OEK@tXe#uS_)1e_d4EZx&a zh=+@9uNNf52_-CZiv0L*Mt-w}8|bEac4sH4B%k8l?D>Pc8t4o3ZY2H#jrj6k`nG+k z1vnS8yM?>DG9R<<i-S4uD7f_SM9a-rCLJzPjz#JKo&_}i*AXHaD zzS&hE^lPli^Y7z@xIf2Mvi08^64*GMvmuU?=pX?Nd?7U7GT7vp|J~2~!K*#gq)rVc zInwR#-ui$lf7G>94yxhVy#BNxsy@Xm>F#7|#p5W;1?HC55Jk*p`F^?j!=`48jWxL$ z{*JcaU?m|CHYS8E=FG)R>xe4JHvm>!DfP;)am8?&4)M$hNIw`^7P(Q9{WZd2#Gs%~ z{qk#?La6X5&dm+B{H`_4vyUxu&}fh5XWE49*()ZfbD5y&;ppcA30mG*ng|Dn0N(UB z(kV(0D9ir?rKab1|6I<=46p+Te`XQyFr=w7&=#}66w+~~#?qhy2T|OLo2m1PA)bo58-+g2O;7xH?$K6YZW2sfTk^{5E47oDs*IBED_1I%tJcqV zsZQ~4kwS>ge(;L?L%z37Z;p`gzQ!sDr!qA#`BU8AHJ|}l(rntsT$(Rp`Y+Sv`0BDr zoZWySNe=v3sIn?~FQ-ji?1qzR06z*{Zp)@fQuTJ4DN&gR_ug*oi0R!DUj1TWMsG|L zb(XQY5_G#XnbAtCVaiw|@+(tga^L-x=L)p;9!^Q3B3Ys9+9`_Ep7piDb9Tr`ZqZM@ zcA(fZ;{av$w8V0r?=1d`28SmDngu8FM7e{;kfg`REW_Vd=8oqRq{N%fr4{+T)@u#K z5U3EB9((mQjrZJNe>pHPQ~sk|_Ciw>KM!Y<<>d)DOBg!EDQ&#+VCT>a?ef(7D1A-B z6i};KBv(s`R_;!m<&`uLDTuF>t)dU3G_CmVd3kQnz|#0O$K=v6_Q2pQ91GXzp?4bh zj}j0*D#|2OQL^u0gsU#mzxdQHs*G$gyn|#FsfG{cAI7NEem!pdxUanuCfhq`IM}cO z2R7)gS)a?P!eomch+sPVF%Vb#wqm1m!I?k1zPeK(gG)J?j>*OHwdWbE@m&Ys9hQ233ig*odpUs4t!C>JUY6U8YWP z;Cm~;94^KMq8vDIg_Mjsy!AGJ76B$TD}yuCH(aaL?LPL31K>@{4^^D_kS*URIH8L( z!84a+cR{a-Bg(~0H_uQ8XGew!mSR$qF_RB&KMXNhdJore<;n-)8FVdF{(Ap1=L^(` zO^|nLd4IPkUACdhqqf11iBYIv{PMOw?us5q1$PO*a_@bWx@z+#*>jORD<-Gf2VcYA zqX5GF@|)$4$8!Csvopk{WB}9Kgd(@@q8;`0(xRFCdgVIHd4un#C-3xn)pIZ(sOBb? zP98kUk0SGqHuw#6>1cdwlGid{G&3`Pmd;P0$$JV!^^sPYY8{6!o;_xs>CzgW#RW-& zjbD%rqTPg4$!UR`Uu9@IbhZP??Hce+F(|muti$#P2K|2W;$DwGa?aGcew4Iw@_{GU z(k%y#pG^vL*%w4lz=j&G0AC}{btqZ;yAOGv$#~jPR>}G49~J{VPr2TyFq7e!3iRgU zqwdO#5ZUz9P9mNO7F+Vd<`jii#PCufzGRJGRD*NeZIh)Zk_!rc#ymjP!#yyJss zcybrX@d($kmuZ!5S?-WEfeZBHNQz|5z8MpWU@a_=4IBhK>0~E&Y^x>P%39B?FPuDB zek#wqgHT2H8u+bv%+nuPW@^nptkbUVMzXYvubtV8? zQefC(Q!}nJ8uFX9c_?_R$edhwY|;0hA2*X1Ti=c4#P?-RHi#H+na$3{whK^9+Y z&57Tjc~#4WGd9IfDIY|x*=;o9X_Zl?p?aeJj8?ONEmol-J4XA>US27_6>)0jmT6{; z8r|I}nIkSh{q?;=2_K~Ap{;1G%u``gbFx20S`-yU4Pqc?INVZiC8#STEAu(coE^by zZFlTC>JKIf#OG`7a|Uxymz(VVAkp63_lcVtB5>#?%t> zBtB^??jh;T4#94fwG}m0Pz6b*u8hL7sZbJ(4(vGk!!#E2st7*b#K?61$B~L*V zOP{_O{r%%&9pphhP^W{B7@x)Y;l(T*%^mA#|5fLl>Vi^fxHxQe8(wSn*g8l)L3Z$K zEw)j!BDVusJ~=`a;awm7;tHGt?;Szd1i}#&YE%QF)Nz@Dyvn`VQ6&ObLH?qkoRADwk0?R$f9yJGuz`}zNkQ8D-H=&SXr^bIGhH^wcj|b z<-SFdT-b@=z6SO+Ku+^AdBE1{4Ni?Ro_Vn)vxm$c6?|{&?wb`3BXDX$iym92gA442 z^y5v!@&*QYn%I~=tqmBDl~n-rb}-*-cBS{!Gvn&4sYM-qw47-S{8tcDKHj zTA4@GMoi2@W#8ZH1IKLrxNBRG0UcXlJO?JP0tB6fH?! z8-nxSvH+X_k?!vPVm_{yDNaMaShFO^uZ5G-pcZa8w8F~a*}q3Ig1rtF&L+EeWW3sd z9|s&*$tWweey9HTh>20ANvv%=c&&qe_e`-h{m>r?TfD)Fl=&*)Qmoz#$%orb)~Z$- znue-ia4tZwxG()Ius&c|TPDe}4NUbesp?YHPmvZIA4U^pGf*loM0$ta-sAq)|F>}J zkLq2I1`%v8H15-D3|V*u45s}Ds?2iTIVeLR`tGW6tS=H*N~}FHfU*OxhN)~V*S%YR4*v@ddiz@5v3w+7%}k+Xoo zuC7YO2V_jo4j>$0L)TVSvh}hCPAz`BUn3lA0PkPsQJu+DbWoR%E0_u^uGY72iEx%~ zl_N;TiZqlU$o)%xrYaW~7`Q_)(TkY?|!9 zl%{_25J~+50kDf?0zkM8pwtSaaqjxasInx|_l&J6)3gKawEd~j(^oQ-77t< zDzTlbL`v+?a$WT^-V^)pIcOQCwj;ol?c4BUX?GLJZxb#|>0?2r zv3Yr&+TS!oT(8CKi!#@Hdr5pHUt}HaiTuKix!$aTg6A#ZFQqwt!?@SYI~l5J|AumI z0n#{Aym8E3q=Q0W#P8x*dh;w~qXxaE#BsHZDVB04+ZX8)GT>)Wf5Ze$qCxqOiMc{(8CR|1Fp18+Fv5bD-J*uN=fUU z{ZJTGj{=(>-mnxZC|HvmBqbe}=nJI4Sj6o`2f)~E9MTo*`?QiLr7i)8qUjPFxcGS{ zgN7Jp7(P69*Cro|DUBFYKSZ|AblwiKdW;czWj<%vi0cE4-zZ7NHYB#_vQkde| zZ%#AKXy-Oj zWh!dBAKl≫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,*W%lk}BJh(Bt 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%0A?&rzQ67N00G;>t=(yw^nYN4M-$fs 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 literal 0 HcmV?d00001 diff --git a/slides/_images/wsgi_middleware_onion.png b/slides/_images/wsgi_middleware_onion.png new file mode 100644 index 0000000000000000000000000000000000000000..17f486b240c30276ddf29762a8d0174e9f18e63a GIT binary patch literal 8554 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 |a(#$IOrp2bnl*7V9jFnT6pTlv-WHZej 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

    , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[1] === "
    " && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + deletedIds.push( id ); + } + } + } + } + } +}); + +jQuery.fn.extend({ + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + append: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + remove: function( selector, keepData /* Internal Use Only */ ) { + var elem, + elems = selector ? jQuery.filter( selector, this ) : this, + i = 0; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map(function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var arg = arguments[ 0 ]; + + // Make the changes, replacing each context element with the new content + this.domManip( arguments, function( elem ) { + arg = this.parentNode; + + jQuery.cleanData( getAll( this ) ); + + if ( arg ) { + arg.replaceChild( elem, this ); + } + }); + + // Force removal if there was no new content (e.g., from empty arguments) + return arg && (arg.length || arg.nodeType) ? this : this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, callback ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[0], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[0] = value.call( this, index, self.html() ); + } + self.domManip( args, callback ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( this[i], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + + +var iframe, + elemdisplay = {}; + +/** + * Retrieve the actual display of a element + * @param {String} name nodeName of the element + * @param {Object} doc Document object + */ +// Called only from within defaultDisplay +function actualDisplay( name, doc ) { + var style, + elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + + // getDefaultComputedStyle might be reliably used only on attached element + display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? + + // Use of this method is a temporary fix (more like optmization) until something better comes along, + // since it was removed from specification and supported only in FF + style.display : jQuery.css( elem[ 0 ], "display" ); + + // We don't have any data stored on the element, + // so use "detach" method as fast way to get rid of the element + elem.detach(); + + return display; +} + +/** + * Try to determine the default display value of an element + * @param {String} nodeName + */ +function defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + + // Use the already-created iframe if possible + iframe = (iframe || jQuery( "

    8pZnS8 ztoNL=*7@*$q8C;5@2jq^zN)%rG2K1CRnLph8$z}+o?uG=KtX{CfB*mh-~s4BC;%Kp znL!c;MB_rrcaTH`garU0r5_{_|D!`7ngIy?mmLbCIU)WykTM36z@adI*$W_=1yU(x zYVTnGcTORrrbWRcO`&4yY(t@-005jqeEzikUnM6yyMQ3%kAs_non4TdSCE|xfDgzB z_&b6x5ZCN~bRR@hh5a4DpBCu<(Q$uv;@|-=kb<3)lLI>L@5sg=c9?(kIz$5#kp4RJ zB}79d{N4WJAD@5hFp$V$|FNS$G@d;1>Xo!u6697o~ zmqsi2yL}Rf5Bfiv2BI+v{(A(0MSp9^;Q*+AG$b4V^uO$I|I&Z_{?rda5*8#OLDGLl zkBfqnOOTUCke%=U(>7V)3J{k>2i&g{{#8N_{j04SNNMq>oqzTb4g>+8Asw!jr3Z9E zItB-T{^y$inJ51>FT5c=`LB5q0MY-R7eJ`L=RyR;4)u>-=7$^%+2kSVPY?d9d|rG$ z2B1k;IGBO{iUI(9UI7FF;9y{2U}4~3Vc`(rAPE@(4h{hs1qlfm2?+%Q<*)6Z;_sdR zH3!1O!=s|05@28u;Gm(Q;rz+aa4`RJ!~DBI`KS0_5B+=pxf_6q0131L8i)yi!URHN z0-skQ^9%2}4_E++A0GH;gNVO27+7d1I3NHX0TBrq2SU>cxXrlC`m@Ps6lr|hk@vP>!NRV`x4|9ocyV= ze{Sc>(mf=lxM^U1_nJ>m&&ne-wWN7)Vef`t{`EW0u(Z;ap~auKi~vex0H z{W~T>MFVT^h>Y^Kk>!JXNcW*2QNqGP`T&Cf4Q&VM4<MKWJWe6fVxn@hwts(KNY{;dkb-I4Z+k2NG=_FD&@G{`7=lsFOXa}L zSeC{h|9HS8vH$3dm1tr1alVn5!Ss@?08TRUE373ep6M|0@*YnsL|6CDSeX`YOWV%ewr6;Yh;LVt2g3<|Ex zLh@}E6b(xC$nf<`T3AqUbA#7bC{oO!E+yWkk4w=ArZ{mE6481?)R|9--2(_LZ<<|F zcwqANn@8h>rSC;a*}PC#NFYXT^;`i!)jtE=8y@|%Z@cDtNwN=>3Dh#hSPt!`s$Byl zvHQY{bWp}M1*f#NTz=c7qU1G_IB@tFT3Jet=&KNg6!zrZf;Ls?7&@>=os_)kku}KG za^#0Yk(up8%nfjek+N%{ifElzoa2rfoy7~1Xq(sQkg+hv9fBh!q*jo~pQp|bQ_&u< zXK>Ygql>ep#xN*xQrN0T+Cld!;gFq3glc-JaWK34N?9TkweD7P^>?qXVTM z4GYH&Thwj7$uB_Lu9|Q2GHW8?_75XPZRSOYFk&v zNWr){ENje^+_$n}Y1OK@o($8a)LW~f%+c{ihn0Nma37A6foG9)g5Ta|_th|wj}jfG z;1SJ^p;wI^gK2s=*Zr-gkvEGa+3TPoPn8*cQ}e(=hG;^@B4qMddl8bAlmB4?3wk{N zX)_LO4SmI=ox&+@k)F_*5jCoQV1l%F6uQ*F>CIPoM_=BNC4!P`tUJHmdHIt_L3T=| z9D4ybOgPaDF4rsK!|kB3pYvuHuLOVc8h|E!IP*cY9k48qIF~z&1=zofK|Q__{aN6! z!ODYW+ieLhhJ%i;q@QVk6q_TPT9FQ8Z`5BQCo5=Q(WtNU2SkNumt=D6d~G_`;hzwD3L9e>tELv9az z6uLw+YF!Gpr*CEx)Tt=8M{W!|vH^@^Mm7%(y6F?95(^w&sT4>SIr@*~nc8qSdOJ93 zl3`O}J3MDh{VmUc1n1kY;mIOWa_1?*#Z;^v4W_fegJfgN?BU|Ow~^ZQI8W3v#3;3J z35w;xgcN->pFH-1krklVs4{FeMC6QgBgrq|hWgePd)%0IS_O*u`-*f&8vb+uqwPEkVzCAPY-j>q z#0L)gm10;|54Mu(+j3L8>K`kUgUrBn4+2Iz_GbX0iPp8ZR*64}r&ixH;CW^%-p}|B zwEspoSANKebHi%cBekJI?NxOq?s^2hF_rs?QMsmVm^o4C4qBp>ZK^_5riaX zH5Pa==_m!6odU3)Y`;C8n>yi`iBjQr=cYqgvBFN{tea5jf7HQz5vKqoR;#VINfZ+|qWh(uD| zDpo0bBc<*!%we1tMH!BiM^3_`TR*7>l-HMfbI!7GcI&;J#*XT9!Rp((tH9kMOO0Pz zprlWfZxNf%+cA>Vkc(DmXuBW3EEq8wMP4^j~GjGf40R4Ns zhZ)0HN-Iu`I^EMpoXm&+?tz(2)Htt?=hfYS$*9lic<}-Ly$hE!S=K0LM8+gy^0?TN z9%R964=^-S-1 z_JS;yWWoDWRg0x)Q3TrWTO_F&F&?(@ko1!M$!54bR+VVL2xY5X%GVHZss|Lt`B=Y} zHy#g7bX^)sUfTZkfd6fqlcN zjMzx4LUOAa&v@3#(lb4Y(}*3`+8*^9c}a+ zg>WP0NPNc{Bd}eu#7Z?37P8R?GX7=xhSag&ug_1?D^Wu}ze{Bge4TYfW2fj6-A_uq zswy4l&bsKVM%a?!S&}YB`?#N%{>r!2m&b=;7}OYduV-CYE4Df!_joY|-ly`y_b55C zSvHM%N1kDjg?{C=h(jWoJxLndxm3$z1X^ z!yn+b=x>?tu?g zU{i`}t`Z)dA6+cU@!jCYOlM{jTL~?E;zk`@?z^M=vn>;($qQpg;#%C3Mpg0gET`pw zA955RPFJBP0Wx+&Urs?L*{Gfm336|)hk>@VOwy4yu^9Lr9>b@2i7BsMJuW`RHeP7k zmF;86fol4SD!V|I(2n(5r?$TA?rf^44rqgk-@b&iJ_Ay5xsNnZ_@?UadlKLLYK8CR z(Kqeob4Cw`Z~B>0>A_w_)^2G`(zJg?0N(1lNEAyIGn!fW)@EU{pTa~v7cYBm82g!R ztr7jmzu*60cM#{q?3Z(I#cto1w}LxWNV!Hg{U*=z=Z!WIZCw~85)t}qJGn^~7kU|X zl@kwxsC1prfG9bkNK5Ek(UB~8e$ zZ^e_R)&u1prJHa%gY;DVAN8hu*PF4q6&$}c^6ZGidTYU0N*JYu3WC(FuMcpB#fY9h zm6kr7pJ1R>Gxn)be9r+*_eB!K;X#|JfK5_;RXy{-pX3d*9kD#yYYlV)X3a5}vCHVVVQwG#O-E#{&Pm01TsFX6b&>_*Zv zcARY}oy!{RX~#O~Uhpd)q#ck9lP);)=Vk%D{hS1IjQI0?IbaPv%DeDITMX@V*C^2wy@~X-^`oNi+xG+It*E=WKr9h3^P=M!*hnrBl z*}0HcYkPv_Aful3xR5&~!-;xk+u!SzcX@7o*A6d7pJ1`q&?53H_1g23WXd3dN^^H1 z?)tfa6zm$1VL7QC55#p# zHj;rYje50mWj>xSH97j&P~KlB@wRCvk};2Le2V~IZFx3OH|MOx6yyo)Wj=Dag{ zGF{q@vTJ2-R&5+*AM`e5xI%Fm>a=i;fiFYpwp(BrkBH2SI+HmzK&$W)ssBQ$54nfC zf4@ayap_p!4c$)kc+r$=@K`tNX&}&9mq1(`h4dj_UPRC2%A95JF>8E!>}-m-?a5e7 zCeZZUYF=+;@aK49dGqt+`FAJ5Gc#>HM?~@pAj=1kv34`QcU5%92(|)#P~dg2H#tdx z58oD^iI$ujjz+I-7YJ9f{1%uoOuAYmJLd8&$35VCUG3G2DgHJul z$AKln`be=c=0GCZX4p_iYvyDUyS#v5*CRFMmasQ(lGA6(n^oGN923SBOSTU&}8GAb+3am`T(M& z{wP`9$KXK$k1vB4WYa(9UscL@(O6rHP$}S^k`ab8$gYO4Bvkzn5>j*F*xY^+uzi~t z4_nI95oM{A%C?HdQ)cE1I7yMkAFdpRE!yw2nLkdpWl3RJDiz3RMB8jw@_TIPMgs-s zye9jdVaxba&;HwCtEnu?3{9>(`}fE zXTX>7RDx%K@2^LC$erD+laOz$%M4@!Scythcm=8kJ>{)DhFn#fTO90|?UHTLK2EDp z_jPNQ2VEk;+3YWW{oqxgx$sGUG!D6)^aIZK?RDY_nu6Zp-xl+)MY1bs+jB#}*7;p? zq^fVkU930g6ZRe}FR-cG)O2OnNARyJ6io@K2D?S}Np}Nlz|}nmYqQZR$aI6Wb=wOJ z@{B9rwSOPz${ClgU|y1h2T*g5kh-V`^W)R{d1>?!7iQ$7-cfryTvep4Raz6Kw?l!O zbP{+}0%=311$}wXf*JBWDjZV9(d_Z`vC_sQRD$1!EV*XAbMblx?D{9}UZ8~?700y& z*IkKV_lu)DS#v_!99BN|wQDVAg>JQT z-Y{0pXL$aAr<*8}&3~AjQ3-1pb$ox9*R4J7SnQp>9-H7h5B|C%lERurGPk?v?OcvK zC6$b8=G6HHglE8ycEdO#>Daq+SVH{krtQ{PkynV9hr4DAD4Fv1XXfPw{pA%agCy#s z*D@ZYkDO(FaXY5Nnk6N7YWkZRt-b<5Mt1|fi>@O2w9N)YIlY{97E3dG{cWaKDnh@= zUtfk+{CaQS0C}!(FQ&J1aoI^Sd`4mn54lI2rAayCN2VATju-n>Qz$wOBkXtBKYZEh z=~q$>zOkLcGW3A4TUld|Z0H|%Ncqx=SK{wdWimLS+HfmvtIeD?(Wgemg!2sOHQm~X zZXR_}u3s4Q4(VbB|4^M#G0)3YkDJD!{)EcwaIQriOLA^6!Xc~Qi*c1HHWuN6zmxNs zlQ>##d=t5GX$S1Y2p_?$-xfzOTtaIKAlYecl2_}jz zOsm#OkQO6q>I3yehM7sN`0tT_>F~m>ny)w4!AGGAE~-ArmM7;*OaHbG_b6rV;N6rI zZ0ve!ZBEGZjUmMY@ib#6^|LzEjlL#+LKV9ATae+D*Iw3R;Lbz)%>}iz=4+f`FC6jT zmw8JqAN)j@u(?!q*<4?v$FarK?9$C%DY*yqjMRW_7$~YlCn)@r+=tD=!q+l>Ib)My z4%0r)JWjR;yndA#Jo;^?k|is*Vx^z_NP%EkpRDl6a!6*cNLSzgn>24Ts6-$33Au9V zJ0Z(n9h$i#wb>@f%!?+l;#yS7#C3C=a}^~vkQV^RvSZMgFHqY}ws0f$jHC^y6RNek@K zftJMBZ=!{{G}0VX3ubZ{IzEqpJ*O!1_gAPRbH3q~0>)YYDYxiiCCMb!!>V_JR-<#$h3cuSxnwxH1}(8Y-xR$z+KGBhyiR@$|WJ*00(B< ztUboG1jb>>T~0^|uM_?;x=<=3y??nH|6}Ll{pU%xV}C{P00o&*|`eMgT)X|(}c6dX`$rR53 zj>oK5S0CROR>mDDk9@D1or`(M5wiR;L}q`XLI~5VdTv=*CS?V#>8>hOGUyQH(Gdfe z{Z@0>9rI%n63{9j>&OS|67l9blq?V6Az(0}?e%SREF&}wtA~_7C3y6~HuP{w=ktti zZYgEjM=O^7T0x8eD$!d;51Hx+VJ?RBi2I#{pndMkN);v~U*foA~L#`4wU@qb`sFz1-g$=AMKlDZ!i)nFlJlrwx0hNVHYs;lpl=w!?FX6q5_EBSXBC3OVZ&&tjG+RzigIf%9Bx%vh z(Pz3XPP?1jggbra#7tr-M8=V%QPh)YeP~9VOyuSnV>4Inp3-4RKD;U1xAD5%2#n`r zS+Z;u8iY6tH)4aFEd1OikUMp{v^oWLh13ja1MS$kPCb!KiqQr&x?lI3!=+$%MV6}9 z@bN1F3GGwvmX>4syHNtELTDLY=%2E|&G?KZMkQPhKR=Gf%$3*KD4h zE@SnZ;l!}pieu+TADIfsgIbTwE8IDI>6sP`BdIGeX_rOBb~|^*O3Kb9z0#l90#qCpnlu)So+m@S-^nq#SOzS!te2BNPq!>02+=Xt*Nd~w|*Z`{` zz;Zt|oB7aRWJdE+J$|$eUtq!OFr^64PZp!MR350c3ptvI$Un)vruVEmC#|xAd0Lu4 z*@zSokMQZwfDc1ip!N$V>I@<2x#~iTXl|Pe`g7LG5w$u?0LaxRZ9DtQg6Jf{ZGy+k za+g$|nAnAw*oH$kt`QX_$n_bZ4Qi48Sib=pMlW)()jFS%Y{SFgtJ#+?jHEP}j1K#i zaagdYIuRvHQgujV7yX?hMvbJC-qD|E*PcP%179PTMa@%gTJ2_WU$yXlR|X$#&fPzR47(J23Uj~2 znZ{RK>P?tu07~38zD7*3u9yG$istN2q`Kj4njE6RH&VA?YaIZUO%8@vMkI33AJ9 zg^`kevC>vgryi1cBKYLSaa)@ENRgP7!T6nq1(=85JsTUqChwTNe1W>jOPPRa+Gxpp zr#L{~u}$1?LNNd2fEDvAzF4F7mIc%-djqE9yvq?7-e!85HW44mq^k0Y00d~(kB;Z4 zGim9}iaQ^8;&iBVwq@R*i?heeU`wy%j~aw>Gj1!K4r#fNUC_W*Ex-O+X%!D$1!raz z-I|6<)$m5cB7n#4t4WYs=^&bFFyZMHVuci?rfJ+KZ`87`k@V!LzD@jg$6@b+DBRds zwT%!u`J}fxPn_?J4p+tZ6N>S_Uofy7x%%@S2wGuL#rLl^@{-Wg#EH#0-c?OtaC+f8 zM96x6JhsA{WQT%Q7uCr0dHzB+(ZNl)uHW{{ zr}!S(PL_cW@9(rn-T4!TuX2-JX_{*rYG=){5%SdZWjxP?-cxhm)$4c0Duks0;AaOP zp8-4LOg-*)ytom%Zwbu-a663%XG4j zKNh`r(QBQ{7IP&Jayv6_wUVvO`ca0m@fwEM+|G<)#V7jL0u4>N3`dA0g6Uf6sD#rt zD-oR}->7Gn3szuy7DtKdl0NOw2L#?t6=F9b4CjLHShB_GWlnUpqfaB3`KM!EXoQBz z|( zP~&oML+6uM?vfQyNyD2Lr$^C@a{mG~MnUa7E$+%PIJT`y-^Tkj=o~F@@@J`H{dtP8 zO`ar3U$gsw=0wQ4;jbS~j;ie|7Cy#uv9!4Fbe}7}wl+$h#wJOIQRKub(hYfFMQqtc zaryY>I73)APNOd)q}9?=xKQqjJoOIR`bmJq+{3&)6^#m-*GEM_{B7PsnTXoND+)nM zs*qfLjM}Egu%W%f;I*r_TtA7aBW{@H4QM`(q-I1qCwsh>Thcn&iodV~Nd}1SAE?N~ zxI&vAC66_UYhhfx*?N+duh308MOJ)YRbSU?4_sDGS$-! zb4QE}4DS|#CL?b{i&XPgB5Y8PS*mrO_T?yR(N}EPLz*~MRZdjr0li^P+)`>pO3ZM@ z6Z;g(H)RVP#YUyF)9CD~%^9xIn3eNeb5Re~ciOQS&K%x~)T734Bkrepqd#(!40iGt zM=hq);4`bNtZ^37qj}DyY{*kIqVf#~%)cGv*-v&8VV@7Zskp>IKOOU3C8-osP_s*u z|KPTgH@g0-{!pib_VgrWCic&JhRHp#q>LmDuXIf)dkfE&exgSbQOcnv8yD%BrWtuB z7w^?=6{q)Zf>>UdS~G4y`A05EznxgvyOwt-d8k(7?+0=@(blPBhNG4RM=J zP_!MgbG`^)pT2xFhaKN|k4-v-9O?lx#gF!Q<@jK_uZqIyyFwK|6*6Zlqz_PYFJ+LH*n>_5JSS*QIk~B4HgvF?M-;_iE`aOU|Mn?=EzXrX!gxg`NSP zTeYX799z)t*y$|2=OrWcqr}!8@Hg*}dO|A%PA)-&pQhSL-Wh1@{f0TnMzd@ z9m><^fajE~kbS3R5ITi+a)#N0lef|&Tb3hX`(ysdN=Epnuuq1?$7U?a1cg`9zg^cE zm6SjRxx2~XVrRHR6KTfkEa&~1GjOfR@H)x(2jnPC-@PGkFt>Ab^j(kKnfr0x5^*)h zKIjJ~dZwBNosNl&tmt@EZi$}8O;kifz`SQNZx9du^I zF8(EJGff)K#?YG&+C%^=DNfP75d2VB0^7z8 z4pV(ppSV*}%K;$5Hyn)`9py-LmCwECdqHHF>HNxCQB2^{?FpN#5b4oWGUZb^jE0 z48QVi`f>PuZ?~Yn(w#NVw{I-fV`>gYjXa)bcJVk38zH|tDgTx&XfNY}bkLgvxAE)V z*P2Q}uXfzGw`q{IjJ$w1)5r6S`y*Q*4v0c~=6#H|*{mgp?}y7&_A!eH9dK!!_}=+g#M0Mojode3`EKMkd8ge{?^yiD^_)H>qRE64 z^21GVco3=5Hr5F76+#Sr&W)GR`Sf!pcGHn@pyi7gbz`J48+ z$0z*TT{h*9!$JBybu9t!kkK#Se)qCRd(c{A-fa3E`MBqHwMu%VLs;k;wxbvT7~V|A zC#T`1-R@LxwJ^ne(BM#Onc=kLlV$vFT!&VgV!%4Sg7qUy`5||Q81zvavAwUSfuAXP>{W9b-6e8FMe$TXsxfUWOlVxixGG0XcjH2PZ$WqUHy z(V*ZdD?$5avQJ#Sj@B{3@*;dkX^$euJ&qe8V@Mu8#G{c`){X5+kT13j5A?s`IXN=X z$W$VDr}sMq7dGr$nT(kggjYF~2nimAutX1&yo$0D$Y~da7QLe+^ux&LN_<_E=2Y2o z_=r`7r_6uH)O{Q=HWC&@{S_D04C1%#V`~`1Km^==%&#`4*-}K5p4XK99via`Do}w# zx{hzpp)gaFRkC<|l)2oc?kw1l%%N*id@h@ZY5#ko|E__-Mr zf@<6%9hOKq6*4o`xu@tK zZ9w0L)+2r7A{<74^H|cEuqAtGA)LW$fqP0SW^85+ckG^H$m~@-Dd+bYdvIn|{_J$* ztvls6_ylH&IeJ-Cb@Uin4fm-yO6c9PRX2VI^qy4cnfP{X`x27(FU@D}D20!)!mtdQiQ|yRXfYZlle~5DmJQ$0AaR0^ow1+{nCbEj1*Y=S zy>(WhJ%36<1HIE3ekyn9awr7$%Z^Yd4dZd|$WJH1w-UZWt(6kGfMraMnCDV6Ti_}#@Z#1v zoh<4uQ+hF97lk(e#E7z5CIw7X8ILPx+IMLx@u4AZSWIzH?WD`HLzTBT_<4Ta7(6o` z^Vx-9RRB+F7Q=-=0B=l;!7W9mquvc>py%C6S097iBb!!fOn0jR*ac-pCxtqnDb8?|ZJAwXb$%G8GrX@T(P`n~l^u7SJ;hF6 z;2`w|Zx~tBpyCB>Lhw6k?nRj5#Q~fi181*d>T#`Ms!DbB0NoP%bY5shc+T1TFNc2A zXY8fd#o{4OeK=^JIk{Yt)HCQiWw81PtajlujMrqd@!X$I)H7#2_4dNh*c_q9FB!h2 z7O0gf%2m!`7J8&eH9v9;V_OZE%7rj=h{?ZW(aY`~Wsazon2XuV8}U3`p(H{W#iER3 zY>2x}k^N0gM?|NulEmH?df7hz5e=?B^E@&3;TyPjv>_P(_u#Qdf^wxtCRet zvQ_8Skf9XvqSZHG?;yUW*#60BiOrHy0YuqeTMLQi;_6Sdb4eb+)cI0t&4AWGhADT< z?DC~GYprJHARXgm7?38KvSsykGrn5@_l|MRB1&|tV{!;p8Czt~~FmkYdIh1@IAbhc3dafSI}RiD`+Ai$iyF2dMRU~lZ3AlFJ0G#8g}u&>e&=2?iohX0!b%9L zP8E(aY6aH80K5)B(eyT z02O#hHbs;4D_zhBcnrYVD5qHzypMaThH%dvoZ6m>$W&#ev8?k)W5tXV>ehz~EKZ@y z{^7{GgiAu(%BtDMjt-jaK~=kJX#ZY|zV|Q<-~8(E^mm>#p8*FOtm{!wj6?B8gT!1y zB?U7&j`d132 zJz9fU@TWz3@{bdf$IllNsXT^zGs0gZ}I7;)v&GIHPMtSQi;_Aq$r#d-qt-JZJg(szN-DDemf)V5WeFVQ(iv z(3|CBI!UB==$=W^MsVI_mDOyuVzS)j7<+{~%QT?RzqBd=Gs>%}S3%%nQJ8qVjjYbC zK%sP1!O7dyJ;96ghji3uY#m+JevhZz&j~Sh2g{$qw+bi|=jfyItj9cFGnS%3xa5tB ziMPAF1@3QtWa5W@@EDzqxY(JrQ$36Pcm>)b??6Q$jKs3f7zaAA&Q=?^UgnpzW~>`2 z(4Vj5ZASF2POvNu6vp~hr&vs|trB`9S2=uuQ(~;fE`4WQkn1^ad$5`Z17GRoqEX+7 zP*XU@`$GYT=snH0xzwjd)d^iIyUJw&WTJr_qFujtTT%v7O(COqj z9qT%4daJS|&B^Q$MTCWvb0;0>i$px;j$s0>U&0(+(9H9RU!Ww0TiNC>knqyYTJSb5 zxW*^d{qp+KbdyU^THXmBowUb@)Uri66PZwWZqBui2z;2y{D(9UpTX8=!bbIA9x z7f~y{hn9%NUulX)ifV}A=Z@Ue8e7(PVL@Z!&P$)4&hnyPsX7F&hR&M(UNbFwxd{NM ziL(!NhP7+>VO`J#0ogb!GIqC4db5`*1T>S91-}|=slOhTXn)2Z{Wt~^OC3tUi%Y8W%zT_5LJ0F1k?a=2z zG!!2u=V_KRcV#Omggp4Y<@HLhe2$~7Ag{0V*<2eNGLjtg`fSz?g#6NG-Fs2Wg{i)Bh=jc~#>Y78JG&>Z554+8|**UITiPKy=eAYWmpH&2ZT z2H}3ZT8i_lWXWu&kW)twFERg6uHu<_U-y)M-Em4wTJWn`_Z%j?!g#QFRbtGx<-XOE zD@VC=!tjbgetoZY|I(5&FpCbEZU#k9lUi{NLCk!RG0q`s+C=QmY#EHV%d?JtRHI`* z2qzpu%N0uCb=0SaC?w%yqM>&qo5_Agn2Lo^yCqLtMlZOY7ffUbq zO1np){_4^of#(ST^-XEF*8YINJ3PV$GYj(F0=u2ooqkH6%ni$=Ha0TiXzQQom1*Up_IU|ZvU&Tzj~tdqL6{g5h`cHUgHLN)x0v$v zG9|-eaF+Qj+IrrWcnbXKwEgrEHoVxsL_sOIdCkogtMUaOv}dD6dPNCL^aZPwQO@<` zJLu0BM$S5hyJRmlKWYlv$($q;#}{h}V|rI!vk%)-XV4^}1KyalQwk7Z z3Lor7`55^&xtYA1L6(x~NAp3iHRRIGtRr*Dw(~I2@1hx42DDj59$}t~<;^27J}yhh<&lT5KA(*Y{Zj%OqTmr9i_zD)C7| zX1q}LA%HW0B+J>9=s3*5b?4o}6WxzuUQ&6|&a5ojUb?ZkO)^^>Raj6t8CS_NTw~37 z*04}Rx9`l^Pm^w))S#`S{6k-7ikW0WkJ7wZI|NLA&%q@<;s~4T>xYWI(nlsCg%nO9la~79u{kLVYP^EJn1*mB zYpZ%mH6}rc21L16og{H_VT<-NtO%T&>72h~PxD=aGtS*)j2%<*N;K7$X&!db6fW&1 zvdH9f1rIQPwn;~@@sIraYI;Bu-$aN8wdsV^gj?{=Qb@W1t{GpMrX%f!{@Ui&BK#dx zPGjDpoH>ZZI?stz_Du};x@C5f?*d%9jSOuwj`sqE6nl`Pl#c~Cjai`oc7{l$3-Vg4 z5}RCEf$ZlR*h#S<*dc<;;3{gf3Xf7T`iu6uVo*rAjFZl_U{uOEgZU}+>llN2S& zFS*&-vqC443p5RvLS8V~)v|fZVAfJNFfqokJk#xUVU&H}n6Dp5T- zRU?f^JFT$#s(J~UN>?*}cc`STZia=FHHlT6LA5VCWc&A*>Oh8p(UGgnhYtTS^^l5Q zuw)-mg*@-5Adf{HT`0w+KkL2{3Ny_Ie4&injVL3QR(Ks4x6hZj5ZL&|5*t zK%^U-n`)ViH~#NQ8`QX~aWR!R=so~HAgg@o`mKkXT66syecCwo@$}Mf;gJmFXL9WH z=ycr$xs|ie>bG0yo^SbtHx+m$cN3*Epry)*1o?H<8cwNl-cz6v(ubB^A%}>16>{zH zO-VJvBtY*#dSn8Q(H9pOE>`L>jyxn4H1iQQWtySNEB+r6)R@hR4>u!GMy1;_s&)=6 zpJF7m(=fDeH3OMB9JV^r{Bn7|1-jOLVckL#)mHRy|`sF=KgK7=GR17r{ z!oZx%b0*6!|7Cw79%uWVdpFc!uWv6X|%S8*EGqZGiFd?V}mIaQZC9+KtB=Hla-4&$q28HK#= z8nVZ=i)X-brhI*(J5F|JXb5P%f3{`mTz3NRig>WYFKf)P3i7&!Em!P#%&K%hLZj|G z?oan)4xKAKa^UwXcwF^(0(WXC^>cU;zJ6_-k@`tnA1$D~Dyx09xw=x06hj>9Sv=yW z)HHjHGk5M2<;pF)7)!mvy9BrgwV~`%=X7(27>gfIm5oYLC`mlu$)S@^XT-1;ljhrU zGWm`zI3dg@b_aT=imW72>bGWHg!ej|%uNs3Wg+}_S&hEJlc^?YH+)QW-6S1oPq3=W zVENs7x0~Vl)cejV$GR`kIIg!XSEBqVFp_Xy$`Dp&nWv*1PKPZ2V6g0NhkLbOx%!8@ zF;%u;Rve0Q@^%;V)n=OU8ABa_5MJ@fbY&8?93s}Wg6ik8C1vlchAE{ zi(!cke7n*EJ~i$}4`&5>t`8+|sFY0ds~_PNH)O<~m!6LV6xH83xH`DJb8w{KVq*vJ zODd>9AN>UkV*CTY0{^T0QwM|cr;h&`lKmkIEB-DZ043xPVqXRjK;|7sK>ujl_FEdevE^6C^6|8w2{bq~|r(b*Nk zXsSazxhy~~<`5kO(Y7A0j(_Z@5RGGI^GE*$aN;;a0)%LSKX$9XHOpT z0^;*0W=9Jq2tFlVIT5D?&} zkOz6#f?Qo$)lJQ9Or0$#q#W!VP3^rPtA_s7=RZdQu>OoK1!RzUIRtolSvlDt!~dV{ z|5*7Sum7|7b8Y|jxX}3PngQ{~{@eE7$Nsm?0kTXd{}p6x;{MxamJR?k2Lk{E%l~bo z$%CxV8Uz3|P5i4rcz@>0J6Bgn!B?+5JUrOIAak}q1Nxus|LX7`&;Pyn*ZJ7~obNwl zMkI%FYZLI4?n8o&Txg)D{32M_{?17rY-05yO%Kp$WXFo!IQYzJ@#cmR9>9|0kN zNI)DQ8IS?U1r!0w0M&qcKr`SA;45GNFbbFi%mG#a>wq1=F9_d#4S0Yo2MZ5G1!4mU zf#g71ATy8?$PW|+$^eytnm~QvTc8!t9_R-21qK2mfeFA2U_P)6SO;tcegzH#r+`bq z4d6cT9C!}}4TS=Q14Rl&2lWbyA4&pB2}&F44U`p>6O=bp5L66Q8dL#PB~%mCSEx~_ zIjD80Ur<-j0BB@rJZMU2R%m``DQGol187TVXJ|j@2|5#B(Th|g0Kp(uVJlV zJzzs%Q(%i>8)5rl=U{hWui@a}@Zjj-_~7K>^x>@GeBh$svf*mry5Xkaw&1QHEAtY< zGsBC(tHGPXyTXUSr^8pmcfn7?@4(+8AR~|?a3aVe7$Ddq1R$g!lp}N^Oe5?eJRo8q z(jp2Xsv%k+dLhOl79qAFP9W|eJ|JNt(IbfvCIEfcK?Z5r(u9TA-tT>{-0-5Wgx{WJOm`XL4)1|5bJhAD<0MkYop z#sbC_CN?GqrW&RlW)x;Q<}l_@EO;zBEEy~dtRSpHtX`}wY-nt1Y$_F@y?0)PW z95@_$90eR}oJgE1oNqX%xLCN{xVpHWxS6;exa)Y(cyxFQc(!=4c=dSmc=!0E_!9Ua z{BZng{Av6f0%8Jj0uVt2K@Gti!95`bp$wr7VLV|o;VKaf5fhOHkq1!@Q9sckF%Gd1 zu{m)BaXs-e2^0wvi6)5;Ng>G?$rULXsT`>zX*y{y=^+^&nK+p>SrS<%**-ZoxhOf9 zJc+!E{D1+8a80Iz75jx@Nkc^aS(@^xpIp^xqj!8N?Wz7z!9> z8Q~cD8EqJ|87G;bn0T1pF=aAMFheo(GJ~13nWtD_Sp-<@SqfMdSW#FdSlwAGSU1@4 z*p%4<*qYgnU(viWcoqL@@YQd29(G&yBK8#yEDlAE0FE|}b515sbIwf8SuRvASuTIB z7OpdHW^NF74)-DtHjfHVC{GX16E7dHGjBETJ|7L=TfQv51%4cUb^a*+ApuwcNdbR> zF9LUhyn?QR^@1lttU@+I4ibUMZ#MmR3fG#`6BD06ryiM^F-IhD8)?03dAsnh=jNVD2OM*yw|9kH%B<8H#&-1+B_xs-Oy>Gw! znTK=M*?V7WuliqW@9TWOTK&BH#q}@K-@X5){+S*fJeGPq9-tX8eZaMWjRuAdJU6J; zAm2ep23Hzv9K3f(sUdxa#0<$Xx)|3RGlx12{cY%LPe;$?p6Om~y_R^Tn(R!AOizc| z4O=wq*>Jnzi-)I@#8{&7+zpB5F z|EU10fUtnefz1M^2i_ZHJ8J2u*Fjx_HU(P*4-AeAsfJ+cLTKaAX`%N=w;3HZ`okFa zF?++Rg!zYE7~6F0tg%nSJBDu@S8|-^xD&tB`(@HE_s2VoUpK*G!q5pPBI-v>jd(n< z)5Oh_%1!c_baAqL@}kKZQ~FFfG_}suiBlg=>ojfa^orAirl-vKdB&QVC1-li{A-qK z){0qqv%O~jIY&Nc*_@oYo^$`4r?IjX2QNLhOucN)@^Z^Vm*4xf+plpe8mw5bB4_1@l~<$MMeY2p_HVO( zd%wzSRnqFVt9Puavu4hk?6ux&udnO0?!fwn>zDmr`uEYlKiS~EAz`C_BBI6S=j-*3hk~+Xie)+}?hB+>RDI*6pmZbIvZ=uFzd+yNB$) zwx{c!6MOZ0ckKIV-*5ZB+dun&#euO0UdN7zy%*On?()Gd2TvUO`OyBuEe}WkQSXna zBh`;Y9xZot>e2l8@c7JQxSj0y@Z%3p3_fx5WZ#olPW3$X*XgdO&z|Xc=466HLi|~~ zvwxhkJ$LX={hzVtwdW69&|KJmQFC$sU)sM8T+&^NOEe@Ny4?Em(Ioq%4T0x;gPysavyeSH8XMPVGDE?>4!+^PcwJ zk^AlMUwGj9;O0Zmhv|=kALTrr`lP~>Wl!rq-SSNN?2pursflSGX^+zb(?30*{-Vl@ z-(EI;x$jlmR~KIQef{`N(3||XbKm{&E;>V1X4&?D38__s4AT-3z z2CL+_JHV65ef z^$ZF&Pwi>+GX)u21R2M)2u5auC^uMI4|@t*XQPkF&c@N`AK-6eEj|hGGWkj$S$A-8 zwbrz^b~Xn2SUWjM6i$A|;if*`ULhmwY_xh+;ZM7n{D-rT6>_Co`n+#1Q*eN9DC4r7 z4feQ|Li(Z~^~IOZd;5E1LzFhw?3ryl;6LuBpkO|dT&cuB(&vEz!J$DWH*Y^Yi=q|8 zM*7BeL}*BeDabX@Wb$%1`iA0bomQ>VYqYHta{fmm?ASfjZ>T8kZkYalK8^Kbn%g_SfgSP-|@E zx|SMcGr7X{^MVV0)E>VH@eVgZ_5KULDp*51Z)32uSk7k79cN?M*AJr8u!oS=>1+ar zAQsNpcRL$R0Yd^jjlKoDsrfRRV`y+lfL||@zZX&`tgc{`f+dJi3V6_Ggm;Lkozd5b zBLMY}OtiHx-c@m0ruXtCd2nF%(`Orz|Q)8l9R^8Z`QU z5K>~*!#m96+pj%@$6tt+5MIta{$1Zf-*I_|s@mc~y@!ou`&DR*)NXRQty*gwYo95A}Aoh&&C?sZ|jPkGx~m(UAaoGlN>Gb4`7gNKP#)IC6>fKDJl>`n8Y`3CX5?oWHN#E z>NL_2Zr=W|04)@dOZNK$F@rF*WD?9ia~%P1GX~~QqG`u59e-0WK5C}a3L<3oAwkAq zjMYpnedNj}D|n92Lj?tjUm7H;ZUCM9nf$u?1q6hQfTD0gW)nLCtqAHK;2mu0W%3I3 zlq{UI3da#a0e%?W(*brxOw;SjFaP;vyU$;`dk^=Ar8YVE1%&d4*Fxyod<9=PdwT^2 zaK5OZXkS<$cqMTKOX|$*-IsrwdEQPzCX;_*GX8-X!gjEoh3VM8&5(8U_Vwi=`gvY= z@1a3L`0zgJ#@5F>1g=%sPE}5-h{P zYb4AN^c6$E2DM-on~z-hD;La5{j8tK*Ee9y=S3D7lC!}4R}P~>jpn~${4oDbkI{`08oRkraJsa}-6M-5fy?7MLUWiWBBY zzGld0<@@rye8(kznECoEc9@~~iW_DqiZa6tK@nb<`MwA%%zXb9C(KZM%?Q^(U+)mN z0DowLFn5KO@gHA)VeJ>u`ZB<0{UgTs{C)Am6n5)O`Fa=;{+L37ygfe~Y;D z5io2J+*~iCmv< zh?dC_P_d~y_R!A8*@WlzV{kZknu5lWXA+2Whk3JKi_pY1#OUvZN{JZ~#IPpja8>Oc z^o||W4qBzwv4cwMplC05)M(muRA_WMgUV4d{hf`$u2OztXX6$WDlLq0&Mg2b6a2mI zvzx$&-AuzUHa^v86g;t@LOP-Vc#KC`f zAq&kuk&+t`2o{Xo*(3(wAz;CWB14gwjAvlKF1&sRUj%<%V;usaf6Q0$Cqo9yqe~}O z7oM8*LY#oSOiFBBO{1j0`FgiOG~2orOHT23Ywt&8@{}{rG3dEahrU8pMqT|46P-D%skDQPn~O8G;s_4f1*@f}-0B8@IrDOI0;CXKF?8x(lh;J|y+yZ20YGxbDc_!R&Fp9{7kGMi^m`zWh|OVxNa9a1}_XB(Q@0>I=OCCL9e@9P-&*c4G;2(IkoeQVh($ zEaKE#vShi)*99h@<#GJG!oU3-p0_abCHIWN=a~7na8f33sX%^LWLgp0@PI_AF#L07 z@qN*?Yk`bl5XlUE;Ruy;>)&Nn_BG)2Z~*2J2KRa^XsY zTquHGYfuxS0^Ku+y@NauLWju|Y9Zr#y_{S)Je-p6oldSHr<1EyLNYZ#FUd8j)p8{QTtTF#^iC~Tsnmj*26FFMNG$eFD_7CefjtFwTt~1#4GEW2 z3Me=EbOl5jy^c~TjHE2!xIshc9f%Y{%^?Mp(D9K3pHy&D=9N<|$6CY&BU2?zH29=7 z2qL+Gema#}EA~#VqO33WPO0F^sWw1ys5N2l`NGu(7%KBbaIca)sqp}$BIq#>6BQ_g znj8tg=i&<@(mtWQrr~O?hEpRX6Ydq!4xbK=mf*O`pi&FZiKWpRtW*fksgWxvp@Vxh z=!B({>uFcUpa!lj3Jqxs^m>g>>>b-5g5!GF0*Q#`xE@wT=$#7LB{dS5C`qP4N9~k>au2jfr zW+HkP+oIBw(;;>cdnZSdNK9uyIa?x9klx&Yyq9l_8X`lAuTm$ZKyA>F95=ukaJQj0 zsC3lA4H`*Qz*BnR;1jnhSel&F7M&Ctsr4}A6blRrp$IHRAVz|3QENV{IpKrVazrSC z2pl8$1S19;!1fNzr1KWFLMf!6ICBWGlWeAfiViWIR^$lS7D`*NaJ52g3nC-ZOTl&W z>C}3qmUucCRs2##$L|mW~+QKXzDVfMPg&o(zc2Ik#fz*lV6!e;~dlC`K?9@m~ zy++6rLr*9og-*`51wu!8P8e2L3a*@B1*yRXY@Q&}(?p1n#Re;oNf2w&V@bjmC{?7f z*K71z;e%BQIzU!y^&&ciFCrI?FjFjCty2;%ACW!WIe$79jZzC&0IcRjER&~*z(c`I z9jQ{VB+za?l3qzgJu1kY$Tly*GZ*tXy?NukrJupfd*W1wt-PK|Vo6RA|@V050q!hcq`)E-qIFtP0I4u$t5B#Ta|oSM#j_Eh7)ml50T?D{qQr>wq`avGj)&>=Wb}yr z=kkVyt4I?LA|=xSM4?&|TP#pH@QI9y5Mx6>1PkZ{UkA_1%m4#&XmhE+QUnoP>puld zXgJK4m`+O*L1%SLywNcRMv)@{4B|uvI&RRxjPPxNFVK;;LSf)}jS2yqj$Ak_A@hew zrHk=mO1;=SIQt@cSqRW(Sq+b`R0rv!LR3Y|vDGbE&A zh{mYtv`Qs^I+XS(XdLcWVAU$6MoGpEI-Q7URY=UpxB-?>$deN0k~X|b4j6%5=p7^$ zu7{d)762Bevs5a=J29O`Nd~K6GY>A{ z4QV?M$e6o2l?tdKIh`J<0}~Y$Vm~s(1R%k@m`Vi>P$L=ST0Pf0Y_*ySQ;=P7AB~X= zbnOE*Vlfg79mPzj2v30#I)YIIGm-M}^Z-PN>?k6gWbBJ2LhmUz7{wBS;am~0CW@KJ zMKoH$ajcEt6NfSd5fE)6Hbz{DppS10vPI(QSWe2LM<#n(!eAgtM1IRhlH>2@`GhZ2 z!bHQKQ;Gm06hPTXuqjmN#Nbs9`N9^UUP?^|6UVg$7yu;&csc?0sg!ChWiVLwCtSV~ zff{AR48Y$x3s8$74Tb^XI+skSri#)Q13ZvexCY+e{L`r*nL>PFSINj9Sr~^@@N@Pf>2a9t1q8mBm}M`$FbW6DKMhf)pK7Bq>F@e_~@;qQ>&P*^qMA^0iAC#V+bs8NF8 z^%%Go1sR6up;KZc1U7`4!&0Kq#;1d@Q}TrLLRdP0VdMtufG2SKgv5@lgX(ms!?5X) zby9lAyg3K75sV@TCOFRWWD)qOG^9MSRErB8RGGBnKpi<+0%s27pPEjk=1C&+_zJ>^ zK?c-PoQZgiWG3=t?(d)vbgqR-M8pc1lAI1uhzLft8WPRL)A6E>N)DkTpAP*OQp5_2 zL9sxKx~&iurJS;K*k37xM6y9H9CbFKEovAcYC1d|=MxYEIv7Q$&RGC+PTK;xLYPAZ zLK}(&s9|#iM+H3~6D~wzBH>c9sv5CyL}EfYp$}yBQm+bz6DxNi3*M_NghF?rCdI6VTDo{dsux+GMWDo*#=-kk_h*gh^K=P5PV`` z1#b>Qtb)Io=Mw@N#Gp*2U=!$o20);Y0v$T1sFC0c#nT~*pw}b{xNyM8^UaUMKz3nR zm0$+RafFxLju%S=C`d?VaU*FUE1U(z5vkCD@Gps=nTr4RwK z;1kQssF6@26&zR69Us7Mc-=|`DK5tPqDac!1}jt((;*BInW6$IBc*pby_A@u$%5oK z%NtqGAI z?Kw4i3FuH1qf$DgB77vYZBsypUJqZuiI4@7YHolH;6zOGh;0EBExZ))3DOq8@ru|N zu9yrS3`nKLbZP|M)O2c%uyia?reqwBTEZ|`hY2+jDp6uOg#VO0F=rw8gnkEdBsgkr z=^%1c#L67C1i`_=5|YUrwFFYpa6E{#B8rB6rQ#=!t4M1i!&h zMTE^cj!2A-Fz}@?htL{I5r7v62Lwwer|h^MLA#g^kUhmGoMjQ2BH%71B?UTo3(1Z{ zBM4E^VKxz~0G%L-P`VLO4-N!SRs|+ZI3R@{jbPMtu)ds6NCHU~V8bNOi2@Zl9g<}+ z66`)r1a2}ZP$(4&N)Zt52`B)N3E72$9TUk7AQO5d;MJU&fJ`X+#42S{T?z#dN-~iE z@kSif?}{l;qqr*}G&(W^f+rKG5nDJZDher`1TpFFuw%U2nK6?NXc)H2IgZ{DQhZTN z6j2ZA7nIG!wn)*T4lPTRJRvUNCK{nA1)`%^f$9}o6YHd-loQ5R$~htHB%cr#^QXh9 zGt&C%P(cy4K%*u-Ct_bwC}Ia-$ftv;6X6>CG%3DFj)VrI6hbM29!E<#5eyFx2Ez!EYXUmQ{T(_j$X+BI6Oy(C2pqX4#F>Im8a;{DqSs7f0oqilHR(~3 z5DUjyAZj|WP^8@|ba+uLKudH%j(~WL*kCrBm`({RL=hnbm57QffQX|ls4QaT)JQUWJcse<11=Q04>JeZbrX@>r=mHi% zEPOc$SZgs07diw#B(wxSEn*b}_#_|%R*I*S>*#K06jDS=BG(riu8D;!FkfLQ__ye{ zgN+jn;S4^fd^Eb6qyxW*vqaiO7kZ4sa(E zCDuPr6KSPhZ)C}IY>b$KkEAIEKSv10LnkFpGZz!{;cO~f6FLjXBoUTWnhqETrQtX! zDz*iP3aN4cdbt-vkAj|5ITX6ZDJduu9nJwR5iEe2CZzxeR>ae>kd4}4)XbT62KI(+ zq=?Yq%px_QJ!Jcg3I`OVqv)svlOy4b9A6XKxXFl?^*0MqfjCh{4lx){Tp_-Q{-}jx zRm`TMB2|o?hcl5Bp}0;^ln(evD1ed90B1CWwxAK6GT{KB#bHQRZzD%S(-+?s95AK( zH_>(=h+xA>jsp>tv<2V_!6$}Qb3UQ0NEagvQlm4gCXyV7g?|u_g$%IB$g(8xpI=F%xkLfgO#dn2BTd zy#D|m0ToeVI-CtDIQdQ|WN18sVO2Oj#cTl` z(c)kb3+F(D9t`T~;4LH~I&sCpd5)hme@z2M>`*P6P6v>ZluS4&zQOF62}uNam9GiY zk%1vBykzMB)Y8l>IEaA?B`Ln_xQ5_UaT<&k9IrEJjY6dmhER$C zi^-8LG-<%=lOv&Xh_4Bi9g+xgB-wEQdDKWyJn?i$n8}5sn_Xxy;4q2^)>pdbgw=wH z>5%*L`W}3+mh6=T{K1P6@a8B^Q6r)6ls_H%`N=+f)YZkQ7C?(+^20jE#Yj*`wws#7&Q`r5TR1AigejkDgv^TakBTCF&+A1gl}PSAEkH5Ryf9iS|FMt2t~kcKhimDnh1tK zU>wDbgxV~mj!6NYj)Ld_`-`(C=!k~RGruPEK|_qVJkh8(+>e^qW6*<+HWX?kh`6u? zn2@jqs9THHOmGq<3u+`JJ|ek+y3j=Ef0Q(s^5&RJbbrBSA~&I?`y8|bf+c(~J69@Y z)WG5iHOF)UVdh?nkOEF5d<*h!!rx&!)Xdq_fvHqc8G9$44Trs;peINHxSx7=Fopf(oaYUdIS$=U%d1z1(qJjf+gmQubaF~2s z;O;1Sf_W1j0U0A@#CX}2j|AYf2%r8P@J=-@5#ePt)RpN=Ild6#@FlS$7)czTKrjbA zHg7A?n~$Io+lDi}WJw)F=qBJqSQViI?5Gj9Iy&eH=~;0cnjiQDb_O>@tqIjLW>b+V zk)=JVt1PG^!i`ZQF$|NBL`Owv$QA7nK)itE zP$MC4Wx)js#%RMPh|mPV%_TxH5}d(BX2^~BNJwj_g`;nTqa~fBo*gD{b#NOdx zo3JXVxRB8!qEGI{5Yf{IF>sER*KVOL=wqd(1K=cBfM|{~7zzx)m6P@2P}+j~mXM*46qXQbkdPCYzukr133gxT&7Y??I>?9 zN4zigj=tjqc@3amJ`xN$DFujVB^f8Xe39KsaRFQzg~2k(g$dk5b_ow2|$NJja>u|4F|!58vK4EHjUF&*5G@SI>OZJ&U_a+QL0p|Bt|>LWtv z_^C+Z>0l-}T#s&FI+@1lA>mt!B|>n-_pVqX=294+iX{RKXC{b98AlSuyPhx-SqEij zaD>fdB_2xefavo+GnDXfFCoDv)*;Hp7yf|CxDgtOh9-M^o~*~ z6c;#nj0gilLyd$OLquZ0G|7?B1|WzK;!{Bu>jxKB1z0?#oVcq_2pytn3KvGgC2<@! zlZ2kwU9fyQ~kz(8nNII?PJS6NEsB3YrzD zein=*PI1Cf(;Eym;1~xYG4gB^7LFA&7N877x-y(zokt_rEBux*>#r&uz14n5h z^bH9q!2LUv(BUkLw86l9DN(^ANozuCLU~R!mJ2lp@IW<$VLl|rSDG8mxY zoqLFSpr(W^fDx2Z5=1l<$B}DD!2@pdq>0cg&CMY^A7wLPZ=|>YMR*D?K%_174hEL$ z7e>N`fR9hduE3(64rCI6Gl>kQER!nXSV**<^P*l=pvWrfIwxC>0N&%b`mnTH_WYCUF4&lFe>`i;mO0kunMP0({no`5_QI7I~sSR(=zrU%FANK41sas{90!)t(<0j)4m z0qRS(VBlgUe!m?H>B#61$E~Ea8>hr66AkYy@u`?j27m-2Z-E|=8qB;L7hfF1AmedV zSw!{I-|-foF>{A zNk|1fDB|gG(wA&4!0ogGeFJ1bR(5celK|O)ztEXvL5&CwgVZ~eLB+yh2g#>Huq(>= zIN3qnCW0ISWeCP6JR5Z!2ib@?35Z9d`&n24mx~I}0O}Mv(hSj5jFISmJOkndt_bXo zFhb~%|4Dc!+zSO5fk<4dgCq(bk&sNpCXzfsfGOXD)<#KGkhM`73~MStQFebA6&1nz zN_HGOOs)yY8dpwSOG1X2$XG;}f=en%!wM-79s#GT=`|q@6Q&1djM5euT_L`>u#L1& z?0#Bd$I(MV>>cwg0+|5FLoXaJ5)+mV7vNEA0>~*`88(r`f{?m%C=i3YoXpUjYODHJaSlL^ihm$P^%|-sm95smO(jEH3_}+ntd{Hirv5LzkKty(m!eEM88g5oawnZ%* z0W?ztHWJwxgBvY)k_aNaUXU6I)hg-faE6f}Lam9z7mVX%n-PlPypsWYhfSnLf|p{3 zm5B-&JRpAJJ{UqrH@yI$E0A$`V`@4Gun0pSSrju7dq@EdedjuZAEkf>dP8Y2ny~~j z0lP?Z99gZf1+WT~IYb#rvQKdNRPccQd?|!PP)Ejec-N|kRS>UH1_P2Q*-TvSM?D>6 zyx{4IDIp-j;He$Mv&n@6Yml}DVGFT$tc9Ov++Y`(yTcX;w}Hr)d^+sCz=Ghh$xIUN zN0I_`(vfRI>MocGoQh&5G7)L-P`{#t4wc}~ZlgFmE>Le^u{6923nzIg9P1^R2^TJ) zOgI_pj4I#+G$24Z(Vt829WLAv=_dM(NMr(tu|O%o3o@*Q4;Dcd_LoFU5XOi#;T#`b zu|TDf%M$GA>;vfq0efZ37EMI~H!IAvGA$o{({ty;80W zwY1M_PR1%wHvx)bpXsm`*Q*Juf)_kd9)YumD<|?Z%9|tiEyN%|Jh3L$DoK{faJ>t!tAmJqg%?8>d74ywbcp1JNhXNs zH}c@jD0kG@LImB!(;-LC!}zVE^e`F z7MKRJn2xL$BgEnrFhqysJ*KSxfO`aXIX{^!!_@O!s#qeXn_`1;lAMxEG&^t%10&Jd z2A~&7o`A7a;>*s7iRcg+5MeU`Es3ferh^luIF7DOY2j!-q=@ha7Qt~`9z$6b98%zY zKP-wS<8cHZ1>ryHio|rd##BmfiaQ&Cm`=zzj^>dgNe2iZzI0fNV3wDEST03tFg8Q5 z0A)pLTiELw#hPFd6Y)uHnNca?)o5))LzL1@u04GFb&kQ=TE#M8z3ZJf+dm<2qNI@3f%0j3VUIs5t zmZI?q6>syR0wSq-5s*FQUa=2-Lr(<4=c%4VsyVYsJD5X;6GZAog@DG$J*aou82c8jw*Vp-)3Z7{ygd zq(Tw%2oyN1W;nGN2@yWUakLglF&%vYD}1mx#|WoL-YAcN0oIbU0B0-7_z4UWEGVYE z53L1~H)nTF6MTZ&N>Wf95xPQzmnx13?o}+jI3k=l`qv||s{uF*iW`a5cm5?2y08RJ zSIkIgisChF9@Y}p7ooPOw;(PcU$cTzg{UdAc%0T2y!cV56b{Bx1_PHFNiZ`uk=i@J z1RSJdh#%R0jA%~^Xkhk9<-}$po9FIs&^oh$2FJ26wN}WZJMI`xVonJ(V&&u+03@YQQ+;8+lN?LN$~v92S;# zifGCcE+6?jwZVYrqy!!|mgEyWJ&);76{TW27GX%p1L_EbIb<$hB0_*b5@GMSZvkXN z)uj+&h)aPGhT!yu`E6lgh*W!JFUX*X00#1H0YpV%hgdjHrE!iUC?!P&1qm?{ycK0L z5z~pbHKq}i9cQok5_<>8gIG8VMn%gZ3i0&bp)w_0K5Av;nqZcMH%G4+O@xCsTw9P3 zlcIt%COlk&1Ep>kh29m^^6}O;ayqmJiiIPsB=rv2k%)S5)jMS~VZtOpsF;L{U7l2+ z!NqVK&XBV}Pu|$YD$AnJ73EdZu;R*BsTc}qh%$#jdN|O5YZp-~AjKEmMO-o=5X83d zP@6BDbygBW2W>$`j*rAzW~u3*cS14|01{ROBVqU1NbEf%^mO9lPzL2u6;q6ao3{8! z08dCo0He5lg2f}@33NM)11ap{AY$RzI|)R`<&2cU0GlPu9vKkbrj5omv2b`}V(;Kw zk#6v(!@&pg>CnE+M?!!=F%$Ix+%_of9i1bf4@uZ3C<1B3*p)hbBxpIgCiovg1Q>^U zIz;~hK2_iX3Th-+K~dfT%uGUX06hhWj%1nS6U+TrxCW<)HdXWDi~I@as|68#8whLB z5F@d38PrJZB_n(!#CDVhV|xYi0A3VR$S&AB=0Aw(5dMpVi-8K1&19X$LJHW$)6__a zb+{D3K9MSg@Lw{AKw`=1&^;lnFOp_zgIPUIB2tp#i-cP8QYf2K@`ON6*i3{*WOo-@ zq@=P1Kmm%GaL)yNDtb44VSF5C_$1^3XFn(wzzqn~1EC{vUv$ohGlQ(|Lg^i_8{zNR zTPDcq*n2d&(Baq^ITDWR3mHdCVc~80x9BOwnP*{BRmFtj&;U{5RH1`{aCKlX(gMb8 zgixd?0a_Hm8nZssj(|wCC&P`CJzH!#Zctb)qVTpA7Rt{HhiN4NBgO(A&H=n26AciF zh!$xE31R_75U3KnSd`=wD-JO}u~!0;EI$0TLAv2yWLT<16TqbTkj?CS}A>N|UBzrFv@NSc;GW)SakpK}0JuZWQi{ z_~^pM9?-b(Ex_T)@(*rum2T!hqZDNh84%CK7YHhayWln>TqMt!i31npwgCMQVG3+L z35_EilMdHnUMdKK5fpqvenVxF?1C^MzHl2wa;<-hSca8p*tX#v6u3@=kT;wM=4pHJ zL`;_c#Yiv^;-1suMnXm|4%`(_1iQs_pm-we?Y~|Vo}39~@gqs?q#z9ADyAb37$9auOdyDW!4V_jLR9Wn;Hv5CXVIg=Eg@hq@<1>y{6#lEpH7Kl z12rAsQ0B<_$x6aBvBQhpA0kbpUvP%fFFz)SGfrf29)4UB6@Zu&$OW$?u0Bwqhm%4H z&@F&&TefiYa27cMSI81V4Mg^@XZ!Usn5%VFvC2!+KT8u@pH9^$LMnd*VCe8vJIiqYUro(;o{OM2tAp%1Xp-v-M zK)=TV7#VLQL^lWCYD2LA`9IfSRA(ti4rT%k3>Q%5WSgVHcfHC??Y*UaUZU445Y|9c(7A z*MJBiB1MG8G0p-s$544PTCYWKE=D4c%)&YWhG)!#;*m0rXA&|F=#gY5ycEy1@Ip_t z!BGoGD9-hc={dnnc0_}RDPSg@XrO^zC?`UCG8AW3JK@UMWn_ic^zRYNAc|*CkLJ&! zs8k_44`>}C%ZX4SBDM`6z396J1Wjj9C<*W+63{bQZ$`i)a2bYA7gO;Ny>TFd1uL{| zg%%FU6=&%f5d{OGrB4)qK}4QggQAG@q98&tMoq`Wn)8W<9ns<-?p4A_IJHHM1oWCY zO%RbM=MnJ0V$h07u=)&2o}RUGl3@v&=f)kCrS}X6=I(QePqCFlLl1W7jEhX5y9Gw24NTEkYyIYp9W6SS3e|qgI4UA<=*s zaVcO2#EFGN4+`XoR0JeH;+7vM0xSnL5_@k3pN>Hb6cJz-5n-U&nG7C)Vv2wUUqNhHVNEO-kC z&THTrKyo_Vwau9cyGqG8f?5t!BMd1fnT9zP27|qRf|`z99Kff8S0pzW#z5LT@&#uI zXi#U7q=2d(uz-f604)3`IgU(=mlz;)2snv_!T2=xbrq9rQB`16nNv5wIuJDZT8P?PwsTY#t0 zw?kN9KyYXfzL2-XO*fx^$iH+ohJ*$g**fiPS`;0afA1LJ9};8?#;j()^)&{0hm1A< zrRxY|P@umlIN1Ex?Sj0Aj|h>zm$ziq?t(|+GrI-&d;1UX9Ex>AC5t?Aq3;W?|1%L7 z&G`9+a|L_D*zal@^prVZGW%Tk6#Z!X4xZ_)=6yzO! z1IDn=a0S=r2Xi#}hnRx;nAnqZdb|=-ueOoa+uk^o3D7?l=>^qg;42CnEiear7b9Ua zSegvTfK$;v4`2ejGL%uF`+zbnj0l#DQ2_v^@CTf81RbLSz)0TB!2)hLbw-7oDyb8w zXahxzfrmxk14_*1>^U2Ol{q;TPAZx|ILfFHZ1ajKJ4<0cy5pTlo)I_-Pffru!; zZ&ntAzTy5Ns=oytFc4`FaX~f92PVYqZJUgUb(m2^tWTSdgb?M@h|GqTjEWsJWI-`NV>A&{>te^| zSlR=`iMSt;jfJp_L!F4{fCNxu;RYQ3f(I5Lo6kr2y3ilaq#cA+DaZ0m$h?p3+>;o0WSnPfmGAl*Z8k@tY zVE&3Yp0A@X$z$@53q@0KqWq)(YRL6}l&1&Y0QgQY9D;6EX?Xm>4xljk159gP0YQbU zGXR7zDt=|;KiT5N3=6wnoTY7Ojv{sib_|IhPq~?&D}ojL-@hr0-DqXhaU+a-1_SU0X&--(zG1q0Y-MnsqO z5RakvfHf)X$yw9``^EI8+e<{eH1AtqD~PtH1o zF%r7Hidd!30X%b=zz9WfgbVA;My((M>dwmxKzYck+R;k@>kLbYq8yfIUN6BLl!QQp zWuqI-91%0f=pq)^rlBXwyeni>*cTDJvo=$+ApxgCipiG6E~GIJIx#AC{D!ds$TI8; zwJxRu49o_;NFId-B8Q-;9La@6#I_-wCtr2LUN*<`GEn14Kp{RB zQYol84zge*KpW(19&wVHHp*MB^+$1g#Pmm#}b& zurJI7^ZpsMh>;glA~!_5h3QzKn>s^;b;GYPA|QQKUkJbn@x~W+fgBauu>MZo?2VpE zG@_V)I@l9&#U;DBn(8pYix5RC1E31DQ4u4-Tk{(bfhd!a6wm~z0Uf-g>WMhw3eXrV zKo|r_&ir%?z2xUE(f)>`Sp*SlZDkGw_ME&+5tE6dUAUDSFL@$Hf^*;5)H!b*i1c-byo7F!ekP{%dUnJZ2v;>vw6ikJ@f{O~Y}9ay3+bwECWR%ymeWXsg) zHumCejy|)Ok(f`;5j!DQ5Dn<;U;q)8VpGK14$<|Ez|{Q0F_-8zLrO`$_XmpwI~kwg zxy=WhSQC5s8QWkD$_-TS6WSesDlsCoT~gbEHg1R=h=Apgcegh~NPgzR0|RLn=>Dk`V|6K~+mfai&YqqT&$^Pph|S9%ddTBM20 z_n;ezJOGH!T;wYtLK_uPU4mZ11Mm(MxH=?`#B?YE@Ky&jjgYV4WYryUQya`Ybs!5B z3!DVUn(*Qyyk4--bpI1=`uaCtg3E%sY_Z|$*FWba*>=WYlh>DliYvVLYTuCo!eO>y zet~|b5Mvwb|NQw62mZr>|8U?x9QY3h{=+fLt61dUmX(yb=by4zk7brFVQGQ?C;ch&P3cl4%UYHzVIeDzk4sx({(|ph z_{y?OiEk{*%F30mEGuDQS<=GNlC7vj>9U~~B`ix;DOI&}y)xg~$i7ijb5Pc=Ubbhu z8pZ~yn!QF%`hMubpB&fie%(+VRPKl4mo<&9f?djLfX}A3kQ|@hvP% zlq_jks$|KMrAwFc!;-6%tXH*^qO{EBJBOZSl*VeKzG*k9{=(|L)(x$pD!aSE@ym`u zuWR0)to~_{>-V1R->l!$Q1gSEwu4ura=}v;cMM_c?QIHm*G-+q7yPbCttA`wox1WU zW9i2Ir>{QFY}~2OF#YK1%QhW2bL~mi@G&!%N5>|lJbmA}?})IOziy5@d;Qr5gHu26 zv9nfeIe6~x)Q?SVyYwF!K6_=%p+9e=W#`|JeT(fWQN^-~%wBe_|E3xJnwH)&+-JAV zqZS|YWgd|sbv$zFv<&>dg5pf;2@5Qa9F2Z$-{!@&L;WL4hfa!GFgWRtzA+_Q<=wrr zCFRgbm$p@V&z&@Wh*gD&Pg0WeYP`Rna%e!3YlEIEwza7B+Rr~CCGY6_Yll3~d(G`I zw3W}GKD+IsyvyVUOh_MCB5H2~pPv?4pE)}%Dr$0#Z1;O_f?wTP6|mO6af6bsjwcVR z_g48>Ce0<~-K*QSb^Zi{u45*aV=9y>O zjYCxw1EZT8L)~l_l)18JLZ_N#-URq9X|rm8eY-(F#{JZ>*ZvD@tK_|~u6t?o;Kg~F zFV-)4n|6POqm|_!O^062^9Vd(zwK6Dr6*5scCd{zrYD}C_A0fyXNnu6$YD@D>hN6C6jkTzK0} zJ@izQ?D2iaxAfQNR7!m@ePqb9I!#k|zu5d^`4UsIuSfLEIC$jrrH41a&DC#Bn!R$C z&A^}%6TR)PJ^j@65}qm}>!iI)sWhva6?z}qbHVp~iOw$dGER1%ek^kBPw@$JK3!Y8 zK6-mn^t#cpbxYeWZL-d}{5QL^gNL+C+0|(Ahpbf_E_H93QRnK3hRfUi-lcqahdDCm zSEn;8{~nncd0@`!9W~d@@q96>+2-hkPT%x@vVP0ChcipR>N78TWXi^TnVWO(+RBNs zx$X~dhmP9mp3u%saWZoBhE4PC447v3bLaY{Gxn5{clmyC=-6`Ek@wra?{#&%K6LGj zS*fbSyFII~IN@1;iBpc(P^If()pw6hdF7qxA6jzC`t_^BLrYwJX%U~(v)QNmt&I^!*Ijtwx9*$7p3hSE_HI+_#;?~-->ANE)9hX;_nq@5 zt_k_AW-t2<_UG~I6SK=zdbaqJ{e$dPtNSXp$Bud&;+8W0%A{ZWIVQq%TKBN1T`PQ4 zz{a!o$+s<%F7M3V?eZ=(W@J@e_8-|6KihB1mmU2yBVfO0m$>jc2d8hI>D_$K75(OS zYio5@j=ev={h*Y(DO0|$)u6-Brk(3FSlIQutktuY4-MJ&V`Pu3*@uJfzwhMb>=2+dJi)lc%0M*=^~M_9KT>Ngol*H2b)ewo|$BGd9U4xr9WBTacP>mvfappNq>ch9GmITp;~nBDe>cG#BF^) z=1s{94i#!wf9u}!_}m#U&Me&=bi-?Pms!uPT75{(i`}1fGj#FVg{yL0)50dSTUF!M z`8Mk(R;XL=^5XPME0SJhmup)4%%DBXj;`!Euxm{JNrRmRR@>VA^05nD&VRdO;`VLd zWWROUU+SkWF=zVOb#gd-IH=;rAMAYB<^0hm!1yU;XwucL4df}kywY|VMml|4zY4f_t)5a{<{yo-n{)}>-1v}Wt;Cqd?xq|9liR=vz)AU zfAng7edX|->sHJz9X7G<7^l(JOMl%wq|B$?oj!c}*<)R;#M*UVX9iTAw=rz>z6u{( zO^q!3_mb<`fm_=Q{>i1iL%k|7=}*g7-8;CmRlmv0;YWQR ztkx{I+R@H5&DEoNiCb$jk8DsTj%-w?bz95zTi=#>T(d(?_|2UpB2$NNBYcE#lw2@_o7E=DGS#CHtigiSqV+G33Xt72La2KmW+4 zLhj}*C3IH|R%g$=x$yJuV3TLYu83+M0{&F2xzVZ1nZHBp4RmvOXULtBvoC#6oA-G` z>NY#-*xUWm;#+Pv8+3VcclDZFYn5-a2ji z6teTt?>V`(IvqH*q=oy)v9EJiRrzgGjrjV_t_@T6{y6gE_xl!Kb35iF!a8#2fi#Pfp@I94*HQI0KALu?Y_-y}+s$ne z(8FgyrDuK#4{xVGO*RE5mvV1>YhI(MRBdaSL!&j9GTz?{zqWd@ChTxp+^$;j+v87W z4^Dr1FFB@4QvaQGJbfZu^G;m5S1I9B!00mgY*@?`=a=?7vr}3}?9TqQ%g)usDQ0D} zK@amZ0k5;}+4b1j?Yk46wu^FtKkl}llso?V@J(maOr-~P8Cy+}6tT{}r%&JUewkS} z6M9}dSvkB~R#s|QgHH2%ZK$&KihI`ngp@fqb0bDFsey6_W)^%z=!^vbktCigv@A4@nzO>bmL8}axJm+Tir#L&e`70XDNNbUh`7|mbrmkz|`@ryZb<{4EzSTd-iP)Ku9oQn*?z&Y> zC+G7nTRxPT60x&U?yT$|!R-+lsnzY4+{u?+8I=)xEyv>0;fhA~GaE+5_nzZ!bPXY(S5kJfK8 z?Vsz9#Fx&OC8xd`AC_^q`QZ5x3GV_c#65lYYP`?p^JN=E%t#E*%$t!L8y~u3&#z83 zb$RjW7P&50UfaFeIbmSn>xiA1@u@lava`9Lwuj~?UOU+5+<;oQN?YcdT+d|(2WPw= z6q~ql@=uRuHyiJ<+P<#Kv4?jLrL=3l>&)d+ZJXD4pM9&+*}92qE@dKEOqyUjxb}+% zQx+veCVZGLyH{yKopI4yHqLFkyJAW2#|u2teNt;%oO}QBNTOYwvSF*%7aTmdPKijg z?;QJKO+tL=%SmZ5navvPiCWS3Y}o#Vm1K8wI^okPBY*qDDtybiBj@|RIngT7^23w7 z%*QE*zEQ1+h+j5*nAJ~57X}~mh{~63^Ly1heSCd+NWk(7$G<7LwVS5J&S$P4^OnEg zn=-?FW8ygL=GB6}kK5ysoKd4pYCvZE%}=ICm&W(6PIB#$Fn{g*%IblZah6e)b|#%n z&wKM?x}B|UGrOAyYs{a%rTu|=gVR68Wn1Pox;eJd_TMVTsP-sdc??z?XI-uTb8xQH zuI#)r`xQIabTgcL_VdPx6XQMlR*kspar3ro^yd4u0y4^EzZq(O{ar-p&Or~a4X%Fi zV8gqvd36V;zq%UjQ73qM%LrXggv+Ir?1)pJE~nrAd7FEQ6W6jAU&=l0a;Lq-&3Y z0ummkIb>a)=i>hD_;5GRPh}dFKNGtkdq(2j^ilb;AM<6E{JuXr-lJdIu{`aiK5K+!~H8gjJT``w1L@y&*|%GTjMQKCSK|`_QN2jZe5P9x3C@GsHd*Mlu?_TSiX5N zIoJ00%~26PwGN&3cH6V1WRQAGPE_A5vD%vN2fC$)JiGAx4}@wli&d>hEbvV8K3}6u z#yRWgMennxe0!?y>BvK>2fwFm_im89?QldD7l-P89YQz6oOiS{>Gw=>snB{}h4!6W zod0W+*7EhCBUg?tE&tTzbx3NjGe;fQr^N5s-zli}J>c-H-?=OA3;IGID>aGzZyqwA=KMLnX#ix zYNHz+9l!r=X{yZ+NC)ugFo2zuCuhwX}4VyJ%fS{G#uqo z`t~i4F*P0gSg6L1Iy`xL(?jJJuMNN0UAcb6th~$1vp-F6`uSFq6T4(NGdJ7+8vPkeZj}6J_NGcl)(`5CTiU5i!<2_N zrf4Tl9NWbHaUEs-Yp)_tySxo?Puu(bz*yHq!3P`7TJG!D`p&zUO%`2FIy*1e6uNZU z>@&%|yKgw`(ak4fWA5)hF=f`>YnHTc>d5ckMR)iVtH}I$@#6zYi^u4@A5G2MnD*P~ zMppB8_i#F@d)Y~~`rJ81&qhvW848C^SasE_A&-u)DVX1=T++-rqhwE=(SeYdaj@XZ%A z>ZI1*eX8zh?NYva=9bLUHu9(0RXm?}D79o}XUCr1>y(a;t6jTC#)Q1Ozs$X3S3fE* z%P%`Y|Lv{o+0Ey^Ib6eckmD@%X*BQ?pe z_D!ly)!G&9AEjkA$s6!=g4087t6sexxm|nZoVoWv#(9^iW9zu#Z#^QLs8^m>_i%q4Gtz6ibwb9v&Iy;@Dh(SqI{AQK^`Ar6 zxA%5*aMwKCa&h3+r(0${yY_R~gMo^U)h9US_Rh&3Ipc@O^#iLVZdJ6e&~Wkj>&s-Z z4IkypCT5MSz52JrGF|5_pE@AV6!_QN4$f8%AIfx_P_D_Uf%|S|?4N0$k{b~+R$Zaf zwD3dqf;UwBEvwCijptnbx1S%hZr8ZFl^hqH`_A~jpKq3f{O0h=>mR!INl_;+1Y|Md zalGYiucb@d_8-}B&GWp0{py$6d#vK($R#UGTasO>mfbL>!SwhBQ#)wO9cnA{NPQXa zz0mv4O8!DIU zKb))Lt*SQj!-Wf7CL1=t`w(BT$$)cu^oT6 zbnHH{+siB4PIrBb5MI~|^q+&*N%jtw?Bqdq*iJIHza#oV|bH=Rvw)W^cT z!GOAN?&Zs7<;%j}hiCj<$8*Eki(ReVhb2|I_B1;;AR^TCZQ1l=3lpPb->W)aUb^J> zdI;qfe%xjMd~DY2zFP-`tZVS>&*!->8}?nhd3jXR5>8J}+`TfcW!Rs!=GSTF)ND#( zvctlvjhE?4Kge6Ay?XKVPM{IO5j6wF1{Oy|oi!bgx*Lv_9|9}X5vM||gcSP3-9iBVg zn-CSzlcgw`Cv2VD*J+d%VVQm`r~F$N%?@N8)_#$(dUg$70*$UW**ip-Ik-Qv z_WQq6=4xX%+(<~z*#ErE@2LUf(g%j#ubX%yUzV6JJCGd_^Zt2u=+XH6%PAh;%~Vcm zQu`*d0NK0aIiFGnrH-4O;QamY-kFLjTl0FmTs;{3FgN|~q4!;uxJS=CYu-F{@=YL!;iO4`!FYIlWEJ z~Z z@rL-i=^lBFZo4e^NME$^W_G2W_7BG9tZwzHedf{V2HNbwQMql_3_gA2%Ieten>tm= z_Q(myJhC(IwcWKN<2H7@aq`^av&koGjcjG}(~<$pMklqnlyv6lovl|VroGH-5*m}- zGqJPx=@SWg>5VeBPkJ< zq2H3-SGUZYoLlzDix=w|!h0ji|IDwp(|28YRYulw{no}q6P%td%^4gS+G=)axLZbJ zhfY}^MmD~7=Jm*o%KoQ+opXIkP{hsytKKE-Z2IPz=IqI;roT7ZsKZ`v>y+eJIeGJ~ z$|37wG4CboGLbGN)%UM#eqW)q)yQxC>bF-KTDVwtuBLmbYVJ^dd)kWQNtLd&s+o0Z ze)&?hUHVjUtNP2K+FP3bakKxX)d%ZuIJ@Ecy5_y~9aq@TO8WRXIOX&Vg~vx9_N)KPcvAbpU!#pSyQj;g6PD%gX3nMeR@;%=hh$l%wA-FJa59XPF1e#dsiK4 z(#J#J?eZ8C;6FZd?lHHMF0I~7*u3NKpslj1>wmHHo8VG@aQ9=Wozq6HUNqvY^~?>~ z@1Dn|_1)FMu&(aox__-|`nqkeM?=@5T#zqonprEhy5sztas4lpcdmW7Rq%8FvnMt@ z9gsXEee>GCe~zxBnVhy^!<;c4s>R;-tmk~}e)&Jg{r2s=7J0IW6_y*{oY^$>ZdQ3<{C(}O!A*};7<7HvZ<=Wj_SEfR zeC207;aP{W)h?a4%&F7p8^;OJm7PBMta&9*sPDcLyX~wJi%4V91 zu9dV_U7C9xi%Q+vZQ+}`zuT;dw!B&TQLOLuc^e}CTEAvl_@R?)uaukYlQS=T$LZUe z+jEwFtiH!)OSO-8E?+-9c#HP=T(4xuyaj0^-(+OI&RaS%q}x>0fr(|SM6N4y{cEYIKKmi{$8%-sl)H z*!=DLJpXRH&d#~7>%Pw`-wVO}|%{&!K>O@nrsW`jZ0T;wSu$WGYSP5=oho2<!4`BpH458gYZy>r0eFW{! zS7|1pFBdbOfc@a(Vz0b1zC(PUlW?^f#WPUnx?8n-j=z#aM>QHIj*xVm!VJ&wx22Sn zd5aZ8AIhnEf>UjoO$aOjwO#nVMG2iW(1f%YJk$QQpYb zUI^K6@Io++n<0=lwqxzh+h9$IsNt?OR;hq&dY1Qh%EzVotI6EcOWn4M5Ir|^`tsA^ zi_PLIcLRSuNdSe}ZgrkzlD0zeW+)=MBHO16c0omoXPJzE3 zF&+-aRvaSFu$j&mLRfP$a5ibXU%DK)YB|UTb9NFtudrmyAc<4NX{)dP%&Qxk_N6Mk zRxWR5?JPo_O81^zdy+ns3l2!=oSlM&$`i4k&Mq`e)H+QeF4N1u>X zfWIAfII40V3^wZBC_9o8Htg3a@+S{>9b7NVuc{n^%bpp0m>pNpf6kjp7ad5)Nqu5d zBoJClb07R3uIj+}`VB-}!C*7cj!T;1ob2lZoD^H7)EN*uZ?-nIIHPyHUgz;UXF;X{S zedVW8k0nAqC0)aYWm@(OS(a3+5!<03zq^mGH9hN-9PGz?fdLjq_;{c&=_Aif5~qi^ ztHc5PsRtiwN1i`yA?q{CmWB}TCF3;2ydb|E$eUCJX=4^Pc5N?=#;@uk{GMyeRmZp# z(Vq~*ACj)x^M zjR8*@eRkBnsu!29K@89;9==Q!X8C|)Vxhp*{}Bo@eW`EEkWgWeHtOL#ZP(0l7)n;$ zvJ{E~ZP`&J&w*6kd;Cm&k7S*(Jeg0PXd! z#`*66C}umfQbjT@0Emlt^jj0`^IC=A->*=dHBQ_CaIC}T6bIJshA@m+kVWvpYUsb| z`8#^uCvOrtY0a7c;pwa&x?vy()xOM=@EH}7-eRFI+v~`o2rLkDaj@$DQ94}3VCl6^ z=r%i3;w>%SI*x`&vm^e%c!lIM!#GT;QKTax*rFWBUA6B+xwf64Zyv9Jf+D+1YAY01 z%s$wmwYF;={`MxKw7?%xNo%5NLYHd?AryB29C2Z}ez*yR5RcLqH%uiZFIaSpao65m*YZ19H3ki3N57bC z{fc414&nSMjK@*Blw?GO$?}Vo!Oa4ad^Kk6ffiCEZu!uGOw+Z9Q*n}Z7jLDwAw43` z2Z~qBShs;A4Dl8wzDcFp5ScF#;UlE4uUZj4J;Ge$?z@KDS)Z>8UL{TkQb_Ys`MYUg zCD+jx1LG5oQtxNb<*6-=U4S!|dyRj1eXCjqP@^1)WDn@f0jg#@ClvSS3yeO|4}KHH zPx|0OJ(j#U263Ei6NX3hE8jF-2*10Y?^MZO z`!6sZdS?q2X-STorVAlo{AodI!DR_gz#EMd+86E39%cq}MVG71q$3R#5t` zYtJuAolNVY0Z+bnJJRzk=Lj7Pf{{L#SrP}L+9Uk@Ox*6P1jI_~p8aJXv`eifd%ee5 zdW8vAED_WiSarK)vByl4UxvAAV-wXc1-@^y`P@(JaNXhuIPEsj=y#@ zA4)6uqx(?hNz3)>EnxHNn=k*Vg0Y3ZdNwVi|O~W^~7HRA(L^nR# zZY0kGj?QB&(p42&$-{VqRqg^pD=zjaZYj)FRKiZI)YOltnJx}0BYGGc{u_1}rMW4f7{%71Dwq8-FG$Af4|cmfBG~? z|L?p>4xI}Y2X+$TqB`7|mOl{&nv|>PFr-ba>9ulk%J6CMG8(L91z3H_XwcKvwJ)rU zehdC?H7y0aV$&k5*_3+#9CZdHILBXhx+guBMGGW^EFnNv+;Z5gf>-Ax^}O|K`2s-o zv_;1^cMo1tl6l!SRRzCFga(cJVMukqj;S-*S-=^Pq1r?pr8-I9k<@@(%>)3|uplOz zMrx@2LMjk*Ou?pTTK#_ESAC9Zx#x6R@2p+Tl;JGJV@!GR0Nlv|tz45M^FgYmsrT<+ z+;=Q?-Y*-E}Zf$dA!AN_~$b$Q^q%;UxhpW@MtLH-u91kj7Y&&Fl29? zc^ts(BD8B#{H6vIRE+_vt2MPokfVs_vEEWo7R{(qlZP1BO#-Ra6s6J^JN)LK8Lt%c zuvgGZ;uEw3+oYL4#jDvGgi;!fJA5Dl%5R;+l=f!2err|_!MFG^YWnde>U$Qu;(c}A zFLoaDyJ9IB{=Bc{DmI$GW`5lHYeVnNlmK2Y_K)kXOYm4GUH@~15K98ADkPgD=b0B# zJDpxr^%w{V0yZ|LTRLq1!&4XX`RhyV0~KOJ`(SY@u8fwsk0GWoyzgW1<}1%n7ATkgV{w|>_oL( zQ#JS&-erHQI&|xMEdtialswfJ|%OLk}KG@3(w7c*DMkC z)mAqsdZvDA&U{JuD_SCU9-?O=-ySjDA$?@WG7Z%S>NA>Z4XxO7c)G*-+Pr^c+C^FF zZP(w3w|!-CIQRI~QS#d%&lqsnHo*7SI`y6-%usJy8PCKMp8PqJuUbo{S&0G2x>x%l z`=es+o|JCM&8UH;({>hfj`)<}i_(%OG9{sesbH$Qrx1bZzC2~%=Mg}>2g~r%S3v?$ zeY`@lJduR63w+kqBDNLSdw3kyV^^C>78TNbGk-QjrorI$q-BLnvA^5nZ?FqCO_?eb@5N>>Yv{z67R{FUB*vPY*MDnvx%=y}sjEGyA2&!Z?#se`2c-I&NH=>nCnk?9k6ps)f#Y9nYHC z)#5B}E%&F)R)iwoC}RgbO#*EWr8)nWmj%^Gl6fj6JZKf=bKJH~deL3!z!Si4|E!cL z?`OP8^3Ig@$%-(#YB`r1E9+4y=k^4bF%fG@R|I2M;vOWsX*QN;QFk>f4pGs>+6*22 z%16Lzn@Y}Jv&Lp5E)r)nQf6qonQtdZ^&ctamm{UdRnJHs=-xfAnC+gW?l22n-qa*QtF zO?VexSV=STz!u5i+N?deBvV2w!^eXDYB&x+9F!8SEMT;{9=pKReG$*izs#D9hW0aQ zp#U;oHb?N}k_>TG153@^$w&Y2$Thxgox3VCts9Hm6<#8EjUzxvUK^_+z#Q(7hD9~^ zXA6u>TUV2JC+Dri=SxDQ+FtmMXr-%nc?hwF!EOk1t2Y*wS8G;9RDIi)1648|3r*8n zHbSdFpm}t#8rPGYY{d;6gNHCF8f_ZRPBw*6%!W(vA>BN#SQdRsVM=NVxxgsoCq`|B zfY0{LtX{z}7~Ua{Wr%2yZ@h=zY$+>sq5|rv!9TosD7>2hV}qkvvf|*p;;Lc~s;|Fk zBU>cn9#)0Y01hbp867Vhi^9SBUZc-kC<6dX>}XfW0$8&|o&39r00}teZOfeMf*DcL+>t|a3V|k9Q!0@f)8%Yci%w1|3 z29ECyg7S(e&t79Sf+GNP$-^^UVaeU+ZiEUOz@+`nnf;8?u9rr)(m*4F{>?zbW z8wd6&>jHcTV8YC|ncFrqmOfF`g1b3rqu!qr&s~vX`*7?}p`ym0(8T!JU<#oKNGC71 z__h_4^S_Hcn$TvGVo0V1n#^0{HO@ZkzGoutL>(tnWVr@46jwdq7wOtC0!)bD7Ir=U zBZADh)wWbc+I|)t+jGw^vKOUk+jS_llG7m$mVem0ZUNoOJ;NnXDSQtg z%0`B0isG<)zWMvWjbM0C4WmOeGd<$=emyA!dVu48NZ&mMRo@6KZSxH_D~Gtv5H=H~ zOGCsG7XUicxWS1J|BHG-jh47AVwO*pgg39TVRyL8AR(-lCR;HvE0h7~k9+9gd?}+q z-&;AgYoVv|wA%Kx+Bk2|C=_;iZGyrX@SDW?k|mMlCN@>FN&M5ANocK`WGKSJ@tBo_ zJV^I}-gk$J>jU$Aa&B4zK^aLemRM=hYy#;ncq?cF5_!zd7Uwm!qK&}Q&F869m6gw2 zICp*F>@%1uGV7b0FWl9@%b^Liq%%8O2rv z#a>WymH4#*B{*0Ux&xlR$)Fu9xUT`uD90UBb{1_FS&ZnTz2>&M}0B(1-BB1tK+z@mK_94@M1hhE36yEkq zI{Xv2L@fwblS^MQjZ^(9KmQ1r^Au}c5+gb zs99{(=PN$;y7Sh4S-y3RWrjwk`cq{rJp0czit%T0UU*|sQm+UWU~Y8A-}RUT*PKY( z^USk1nH44;o&+ptog;fkzNvnv&Ij@9fE@ShW!l#}#b+RH=q@UWW~e{xtUe1le7N+p zlUm`^m;Bc%mVNL)w%ndNvxEVImEUz{HPy{nE+%PRzihiY1~wizW~wdsm}_XWewFFmbO}}vsEkxK z`0jISkh{ak_nrE51%>G%oQYa)G<52YT9<+&RySH61h1D*Iqk@%U> z0h|4j&$qYE-latsvM6acJ!hk>yve24Zn@tMCsooeU6!fi)J*a8=9HUG(cJii*3tHF zlAuY5-ODmQR96E~Oy#*zIq{Pa zOY5%8Bnp@~B#);W8ka=8ml>iIwLBfs@^Eea&agI!rshX8RM&OXnK9dfr!=%f)Wj7y zX_mvR-YZltrb<%kQWj><$~KT8rZ04uRzE_8I#tXBG`s~_mEJxOzkJG5%bJM8T=y{! zSJ8l`PQz<^hrNZYQ0tvvBLXR4eK8*PzsvAv`1fj$zm!wZ>9QVd#lgZzs8&g`-aQ;z zE^uPAwn|oeD|3%-ZPx#|1JmG~S$l7(b~e)meETVU0Stb*7PCsPWxFM!`J_6Xw}!IW z)vDqz_2ouJ7LAiY;+lv-5^4NwJXkUfIe0}Z#~0Pnt3R3>DUHX2kL7wEFUb^b9Uf5p zgr>=(%w@Ng*>FdDXsk5Rb*U=)_Nq6_t_9x*Y5H+N#{2nw^V@08_Ni{H`XBPZ-UJup zSu0UQ*^Ps%WJn>fE-*(A#6M|Zn(=p)E$r`upCS6CNH{1d-g0{CQ}-I=Wk>BLb+Fd2 zD_ZYg3sZD3HqGOuEDNWd@*2f7CEq}wU|>CqprhOa&UM64L(;%yaN25{60fphjLKGN zq4IZ}uAb=%-R;fs^@0j4nJ*3Ju_(t|q~%pojJ1gDz(fDx3Fdxn35{c%F`uV*IXMm1 za+?%(aWkOGbOpPQj?B%3dOFXw$r_Xh^^Z|g%Ms6}^5byIpR(6QnJ#5?h(by^5%0wP zZoqOT7Q&wSW}4eSc2pIAR*F%DFk~`_5tMAt=X4-NF}dgo^>@e#g3}e7~tL3n&U&boEL9(4?nFP1LWS1 z3%T_TIx0BJe;r~8!nT+}8^?;x5 z7LPMU&Xq@)9IQu6yOv6YT}bcn<=ODGVccktVaxqcY($lmA`r;I`JsYfLYhWDFaof{e+pbw>oM8Ov_nCIm5Ju_d&6T;- zcCt(Wi&Qs{+JS*N@ht+>yfYKyUcp=AwQP{EHKJL2-x$i5tMt5~oxAGFeYEf}d&V@b zaM@_JT~0Wptyn%mS0;8ye?UeLslxMgOeh}xA82NA{20x&G`joR>_+twUXo@wO|BFC z_Q|D!O_OT3>#PwYeSMtZ3SUo)i5Q6ruI+sIy&mQ9I&Xi`EBy?WyslbJB5{%%}Q1j zEJ!!_3TPvGz;j9Oo)hJvb97YPn3u^?o>T$4caBp~)|=4HUyMs=lTKUj6ydIj8RsSc zBUkF}RF>@<{XmBKA+O1YXR6VcKH{b(eMFr?Yx<9wJ}cXp1*R5DQ79E|Dyh#*x~k9J zo*Z^6o*V%;mc4e{={REH{IlkrM82Y{v9U(1^7%v4t|lz1Q{UuR_4dcD@@g_6eeO%o zdzKBVzP*@pHeSPhg?dx9&P6Zyj+E=xXi@JY%n!tp-r!x)=j%rw;MRjvD!@5 zhcr`B%uzjKOmrr9(Gq?X?USt(r6}C4PIKhmP~Mx$9@QpI5^Xr5R{z9045g9F-V}F# z7)_Q{SKy<(%whl51EkI4Eu`Ll-H;Aw_ve+kwFP+T%QYptZxSeP4G9Cix>5Nrht?-qD!-vNL z8RcyzE$8}gLPxq{cSVFrE#ls!Hk61Egxxugpj245-?XwUHa7OH4p&f4fkviPV4sAn zwfyDNYlFJLZi3OxUQyi&x>`~YAvW0`=Q=v_zI`k@^)Jg@qn@z&1lIetXug9}1^-GdL6utsMP6bUK5Qw>!{dGk=<80e%Cxm2m)9}1OG-x=-y zbTL_3qzTYCjVh3^?#>6;Yy@!R5FAs*`r>0NWYHa`$n~n4(%k5W-&GGz`LRHoQ63 z&{|v?@DAWnnJq9CuYQ?SwFI-rbc%=oHXw!s$aR?`RC<*95460k@XXr^#gP9(l08tr zem(#VEh91SrtaH<7qSFQex`VAx!VGyJzUN_db;jHeKVzL<3Gmn+@tHNY7cgtMPvGT zp1FrK;ow&Fqsm{?0loNkgC{vPRzRyVKC9bmqJK71!WCs5} zf`1eHy0r2@bYlhoRzw6H>?@+jQgo&I#fr}NY`j~TVLeGq691@s9oRvv+&0W(8gaXk ze94O8wR|gfwE=2|IU(Xo2tt%36S0y;1kio0t^awPoi@-S9@z!l|3oq1nmnFCu5sDG z6)yT1z;&wdh9?gZt^(u9lqHGFbmDuvxjY+)Jq+w@6<7Eld!Eop(p?DEss_x*c#SmE zbp6kTMLtPbT1(&y#wr1%c_(HNSX|jkPjqYcvDNF{bqgflFgi4F*WEj zZ1*xIsuNWn2>z}c8ipf_Ie3z})my7k`Ul@4VwRE8G<3hZ4iZlwj;NP;8!Xmxs z*WX@r%yA?@vv7qhU0nY@$`r{4F;SO|*#9EC061a_$=$%Uq|aW|IY3 z>jmCZ@{QEfhgR|(wUQBugNY5b=57cFHmwqh8~Q7X$X_5BD6UuTobJg`qTFm zLv6`(h{^idc4v*AR!8PDS_^^qWUOfI6jQ{&O8nW?vJgIUzwPUgDcil?fqcQ>r26Gw z*@5RYk6q5Z^WCg_*M?6Vn4g(ly1Bi8Nh5!64hac8(SG~mxV$@8RS7JaU_}1~pnVJM zn^w8lU!)z)7TEC*`Lo17xM*_Iu{8hTiIBX7EO+No-un=hP3)wK9~DBo^s?B>Ci(M} z>4``3k53^a>cTkTKXbo4WI_eANGQz%qkPC>f&?Z6(ln#4QUb2Mc{pDZOcayS4U#^e z44irS2R=5r!HwjEy88Wf%@J&Lt%L$niju@zbnH?yUL_*T8I(LNbdAtj^_;FWiwY)D z6BY7nukxt(;dY^6$|JEWm;dm3>U~AgrRAL2-}ysn3mu`lPq^lv**d~Y2!+0VUD{fD z%=YMa>Nx^e5=?kRJ)w7Y-_NSrxA6{5AE$kI~?ap7=;@c$E9cp#vTGr1)!wo>^_?VPRWucq9Oikr`atqYHZ z-YBmXRC`z>=Mz2J7*_6lJG`=zRa3ov_BDd^Sl-qIQ4?Ie*uUBK>lmB;5nGm}YZg@h zUemtx8LdJ8ai*hnk-+lo>ueQS*Z&zp0vsa4xqWv^($oMoYpUSDXYmf`0d(0(oJLDl0peu#5ASW2 zl^YM|3O=S`NU^G}P29a>WmzDCb93B{&aJ)UogF(D*J+DePgW{xbpJ;av4W~tlWyGP z{~74AfU>X3GxtrZa4CGyZ@roA5OdLJ(jjIuy@;y>P-5Qwkj#X)M&v5SoY;2YQJ4ci zIDq#=4Ug-c1oW9&>X4RE{{!p7@(Bg4*ZlaZW5^mig27|4H_nopPk3k-{TGc*?B37*y=M#PZNVfUQNH> z&be62wiXTvwHp$PaXUK7h+GSxLk12=y;UNLEGZfUx zxAuR=@=b6|{n^mb?aXJUY-Tn~k_T{Sm4A4K6H@f#JrW{&_LDvSTIz6xh!du=o-xyy z#nk5mOme)jf=LWm4l;q7^Vw)|T|w3S{GX+Yk0!i2t38{YJp9a&Z2ygGaGchf`~>ij zB=&nzPnc%X#Jag3Ewn*%Gv|In6uhQf#<$;NYT?Tcfb1kF(X#gj>#~@bv;3toLpFtl zo{r7Vkot6`?prz9&G3?U%9+ftiTPyHa!fxcpVoyV82a8*BI%`T?vYc%N*HuLBf zNuoB}8GE+Z$!}~Tt2gJ$@ZI;$p}CZ0S`#{Y_`Orl9i&!}=wmI_72vEZ3zy?g@cOZ8 zOYm~D;r3LD^~1P_cx1k99?Ng>gwS64b3$8iUDpIzD%^a0#`F52DSqsV;5y^o%d2!} z81(JR)*7~cEm=w$)IhxtAw2it~O-h62o5$iw1tC zc?6>7K8hPmN8A{&m;d_a1|f7LQ57m2TO7{u!RIPUib4~`Q0yv0Q#mIKUVwY>QsDbS z|L~wB<%_qIfNYm(7W|dd%~Pr~TkoT5{nacr!<3j27QxMUH_LPFrXMk5TzU?|w^5({ zQfg>gnMQtB=0C${1{O$pHejtg`JU?4vYdVZsHRn)OTD=ZuIKijANPovm0+meS<>!udKBt}Z1w+sQ#m-84_hN+Qvez25Ao_1=(za2Kp>no$v=H@ zjomIU9ps7*SfIgaA*N^EV8S{Duh+}udw=)IoE?D>_9QCD+3}vxS@HO0&#d;gCL+J} zgU+T|#@eJ__mDq*whftr*b|zeBQp*97L>SB{CoHf)i=7JQfYA&ra4n;5e>%s)COwy z3{h&VVs3NE4}7`~*|=E(j0OJz0{-nXUIrC4B*}C)VSf%-le{_^v3_SdSiDGA=({bv z%Lw3Br(_iP^-KVspz|oydy}O!x1e~{fB(A+QKS6RT78*aqQ@K;T-;YE7q?%sqkp76p_O~w+ z)$$_EQZGMSlI8^Rv4vCa$YrZT$OQQS%2C^9Si|U5-f5LZ=ci8E2T4bFwj4)~#2rVQ z=5$kG6PRD_S!9V7CD5EI?JLUsNT$qqQL5!a63vFH9DZAx9=kU$F*1-bGmP=|$ zBC?Q>Z03rtl-*t2yEtoahkUQ7dOf(VEi%RyJjY(*%%DNJz4q8^!f!?KWE{k4}sI~RUO8pXiQn$cU>|TV0E1A5mY8~ zxpt55fNRm!)}H{&kk1{#+`g8zlZPJPrHH@g9Y7k}UF7xjf^(v*r|-`dHIO~cJh!;nPGru02o zND0A`GJ~q5BC{bz|4w}6^r>q3hA+U6X1xr_1OM1RJf~w@{{tN>QM=Dh9dK{2BlPN2 z5UdNnSDanQh4+~^%%I0c*5VCr|ie-~YBIng2(I2ls;aZa>eaqomxf&^m zoC*)_=Xd_-FkWomK5y_H*cMR;7-M9sXeyT=dWNTk(nW!?aztry&fJmeSe%r=)FmIP z*}}xJ=#-C0V-!QwN5-Q7v-0LW5}Yxds9^Qozi{h#G&K3jC_EeAwc}h=5}Q1{we-+i zOUr3U&CE||ea>BGnyiXqDsyuq1UHb%?Krce4JNKD#4Vpjd?zkbi_UQehQ)YcfmhJ- zcS9PRH2$5P+ykE_DXJMr2{2M+iijlf9>ZtyA~hRJ+Y4cD-B2Ig193s>1|^v^bGi4q z1H-c*5suHO-L(~igQXz339=p5n3$|{t;x{XO1B}VHM04yh+nF1ZkEK7Ufx7uEvz`A zX@PU0A0hRHh+1n2vV1PP;L@%4cVI1zXLBZ*p5+g-Oyl@a+qqYu6Nlw6TxC>14c84k zm)X3cWuNQ((v2Gq=1y>d{LgohSBx+Vfci3gPZ_$5ky-)EihpAhV@(pPB|aF(p{{QF z{~u|7>~zyu#f!5QP0^ti)o3hkJW8>6*ld3U;y&SV&31h0eQ2fB3RA^Afu;xA%?B$< z4$R%~_#Y$xg1C_+^`zi9uo{oQxog&+Fk;kS+~>NcjlVG< zUT>AoiTR7$>yzecUj|#3SUcOgG*+5d?jg|>48hkQkuTHlJ#Z5)u)lD|x2fwVvyAVn zY@#{`I|j_8>j_k*xbZ1N6BXoDGh31UMx2g6dzDHg(0I)=2bfUkwUutrzf;=1X z)$;Kcng9jT%D?}7991#hDFH2?-@MwuN%gqMqAy1U{_JoHf9*yx0vmpHAL5Q1HB~0% zo-HW@D2xdso|}6;ht55{mJLFQrzN^r63^!L5axugY0aD+)#2)zM%8_5jbdiSLZ2qT zz$Il!BOtFn&o(uVQLZ0#LR(U}KB099!3TE0?4?s{uYeny|7g$Tm7qv71eu$h_H-m} z+{N<{$bZKrJV#SI9eUc6h*W50j)}hVP8#d0Jv|F`g`fPvM%5+!qgbVxMce<9r@kxW zN$FSH%4PleRI~uTw6LH^u3Xf;wI(hAUik)Y#%^WmzX&Dt%2dbEQ+=4Y3VcKtS5c^!XD@gK+Ut?fvJ+jI9}^ zzi0O9gaqNfFIv9vWROr?=*LEv=MZDY9>%GD|ET$%XzaoC=SxXiCz8wxZLE7bjA4=_ zw0=tEFsE!Wd#afmz0S`v?H)~%QT8r_Eb{T>pZ^Ns;9k|`r3j6uE*r{i{5Z3fIU$6C{LS0;llf~^urI0 zEhY)#oT5PLaz9j%O)28Z^F(Wd=r-_w_4JM3?!9FM`<=&$oUk@i-?gLhHBU}a++|$v zysVok3_YI23NeO|38dWo>{FdmiL4%;`8}&|$533mSgB7sI>*b@k`S*G!-5{Z9HZ*H zT(CroR4*t2#)@-Dr&)_=iV3<&xZZwWeyaTALI2XQUvr z@Y%-~BC9r$sy4Dds&%U!Egdm5lk?N3T_}PjPu6BmZjL}nao;?MG=r~g-EtIfJu{*c zo;FI?S(|t7QnWf zqt%+rAuD&X=FD(2sF4SWNp^8p&F`c@r!t#PO%cy2xjtbfat-+0@zg{9)$n``&kMy* zjzFP@g*WpLa~+wVLPFMlKIMrn*LcAIkn6kBB@FWAuy50;AZ@EaT#=s%F}XIXF9Spy z9~dDu1l5vXlrFs+(WWsaYvJ5}1M{Au&)0eJ%f0g0+Gy#$T;wfNL#=XZQUkN$`9C}n zRo;v}XFbP`03Dei_3i?up1;vIXyG5_L`YNasM35y^}vpK9v|D`$pS zEzt=8rz^~`+tSteJ#DjPIOnIEFNHzxdM>R@9LiTrI(2r3{osw&CEVJ`qOBdcpPz@i zy@2)=)a00l#nK-GAxDq988c=78sbYCIAWM1@UnK?vD4Q6@J*FG>stT~S*e+eeec}v zoP3H@PU90rM=nux2!!%u?_1^!l4*Ng)%zaCr$?=GSwk+aITaHg<^0i0MyuJ2jF3gX z%sI}jfkVm2`7vwL$1gcrA-<=YrQCQ0!p52u1PneD6Wi_i=dEy7#H{K-X{fkNMlsD(V7AtzL# zkJ{B-?M;MzsAZ~GB=}eqkqRsD-$e`YUSAs4H3E>&Wminc3U}hEi6G#9yt|+m9oD8U z!3j%gFSp=(;h#7__TPj;%=v_s+_xoY%g&W-RMG7~9-tS*;jj4Uk-PoV+rNPZ>Lc1Q7 zDTX%0>NPKyQQXZd7&hH`Ft*e#b2m4w9`K`Xq~Kpy0%m!-`pPRr*3c`a_GwkTYHX52 zWS#8A{B2Q6dfHZ&FVY-Zya=~6R#bbUV77ik!!C?m&0nm}q<^dHRqxR89kGe?GU{gc zyRQvr5oA}CCX+=jJ##M)LIxVC39At#uNWJtunqkv5_>W7y@e+MBEy(_M3qu>Kx3*)*00>+&Pv*9cez(5IGyZPywIdF%!M)PzGeR(p6lvJ zbK97^{!SBOV8)*Fs);>PJ!Q7%SKs6Bcc1EHD4iALQit_)`sn!b^S^*8MtC5-ij-u& z-ZGf~0K3xnZT|aH(fYv(q1{U7)c0u83K6j8)`(?Yy$0)g} zn;PS`xr&q>r>0U2k5-}n^>=GvYHC0|GgA~S=MI6rmyyNA5-X%B2-FRC5LdqOy+MQo z4LU`)nB4c+k4eef`Gb}&cOnhvXEwsWgX6-TU0=_!{KI=%nm3@Qt^ap}U(mkH$;q*z z)9dqdDQ9$+^7OWMgBPd5JbNRZ63y0qSZQ@y{cKlfI(3wuzw!ETJ;L*<>HA;cHEIjWf z`s|ISEblIwEAf=C>Ez?x2d^8Rs4(+BBJ{T@Xr`%snQeJyuP-&kmFGDvIgIx}!}(J^ zyz#PW5OETl?eMu0R$Z`?6~maYviPIEE>Dan!mh%(>|CN;-ajW#df`yrx8XwhH~b-Y zq&2qR^TJ@=%{eP%l0YMygkM>$EnttayoaP8^wP|7Lk!&LE^_TH^rtAS`~WmFUHO`+ zk`#^$vNLS^>NZE(1o|=ULr+4+M)VJX4T~)q%}T^nP2@z&x~=LP z#^Q^$SQx(O3x@xuq6`36>Kyx5*{+zEL!KK*%b2AaDyaU{mkN^fjbw{=t;Y^1fM%Qo z#cO*qjGAHeGX*N=e0Kh{Be=BYM{tKWI7;0u+BHPP$p#TJ0r*yYXHnZ*<-*D1`04Tn z?cCP%<@M$JvT0k-a{_uJS7?U6)Umf+-gIg&-W$C0vOiidDHXR4HDBQ?7u{@)-Tv)+ zL?3{!=7HC_T&3{!KqoZ1_i}RdByN=6kFmPRpLJGS-|EWN+dwN}jeavVT188@L!kEy z%@4jbBZJnA*qbXyN%QRnnzKiKr{3K=VXQ<`Bl z0uG$Jbgg_jFjem}y~9vjycj_^@Wl zN`)&m*&LIKWPh;}cXkR%&M1v(;DdSjE~upDVAfus(oyu9#1|)JzCsj8 zY3}SoUWQi-n2@JHtTUBM6fz73Zdm*BlZkcin3hiA+%Lcsz~z*EygB94>tMkmFcH+p`jGIQ4S0PosKLMqt`d*5W~xZC zUpK&L@E=ms!D{6?-(a#fLlIla&Xy;7Dyea}v-EeG=}>bhHLS*aUCeTPxSS@1OC@s7 zMf{E8ZP=snV_>IiFSMwEnWXXs>s>#$1=eFS6fULd#_oO`5TLHCf@z16x%DQLW-hsg zVsmxuf01M+E@*q&@LUqw&;z5#4IsH)fhf0_Uw8tVu#Qq=C(X7~@+~6SwQ3uHMs0#I zDp_czldw9(f%Nd=YBk``=Q37wGQKuWa}{|hK>+4_rJ|NiMgKHPpu6G?$?nxC^%_RB zIs_(Mw*5s5e>zEJWiQO19FV(j&$fUadY9a6lSC;E$@@ZUExT3mDO-BsYRXWp0Xg(2e1Fm-< zRA5b0S)C&?hSOcbeEJQi*Yp4K#JF}X1dCHVc0zVmK)@E|P*n0}u}is4#<)=k<@wMH zpfd#rR)`+&`34f8n5{iyTmzao8DJR|MKeB2?Sw8OyZ{hV6^l=(CNKiQzuim*GRG8! zNyeg=IZBSX1acFR8mZ3JF4s+zPo=qd-(<`hhAV{1yh+CtE*wBne6BrcuYd({+=f%s z#NqNdG%=zM+khGCBRgv=aQL$;NlN?fvBxPxhbHp83<9zdViebj_{B!jiGxXNHjKdU zmt_kmD`PooX(m23G#8jqjq;_x-7S#FD=PUii^p6q>t0$AItb7^lYvzB=R4H4FAUHB zfNk->Dj@Z%3-YW92?gThG-)0$PlY}bZsoRwPDuE0C*Tr+lWe}~G9L{D6RTrFmymCI z>uxZvPD=th;T!avPUgvX1A#8d`WVnSr5{W&jZ%xpu9`GE679wZb7Afhl7lE?MGEDy zI_mvM)NVlBxII_KOu|G#6M1&f^;A3(pkXsc$t&8AuthHX9uS04qXDm?(51B+Sr9(o z5khqIBuU`2frZXS=I9_VlZ0g%rFC>la!63b>Og<_nt)50=5*Apfdvm&jK8g&K4QFP zb(KN~o1>j8#sNz^hG6cHu`G&CB)b^ZbmmpzU7;m3okVnpeWo+vYn=#nWEY2^Kt`K~ z>ML^Z7{ww3<5@^@$+|)E)B-@$f660;4}8!UJt~v*JXuRt|6Hi``L_ts>W#;u3+234 z+=aHF5r73)A^zj*NfU}^B$T#z0 z{7vNk9}?@)#0M!)A0OWp0kVWBYTsfht9RwQkdo@$?5`D7agPgPBO`K?Hx3BMN#Ai` zo17-myE@E=xhcf6l#7Fim3Kb#v%$lSK`(UegMLH1-pcUosE|2X&U)VPy$8YbDV*p2 zG)J3?(KGq|cUGJk;>0tO1P~d&Y`=VhksDzKQDLzsRSwShNVv2=+)Kt zQ2sC9dJH2H>x(kqz1h3{s{s*Dnb%E}hUsj4D@CI{4B@`M)AqdZRi~nu2(5`Z9FQeN zR~UZm|D;ZlXXhr_6iwAxZO^7J-`~ElvNGsk=S20g=`NqJMkW^IA_11!X;*QKiXcB3T81CPp8aq~?Z)V> zd}M!TUk+0j=$qY?Q+_%rRH&SxE1$cAdzez+aTMI`bV>Aqo-#J} z4t41}tHUm{r)?UIpf@j=>P^g@prhj#y^oqwsO&7apK#Z6YkEd^(6*l(=5Uyptkv`Z ze3_KbsfJFnz4rBcJM^_Y*AmQQUgIxefN8V2M46r{caY9}qV3w-FE7coL?s>EVmyuC zd}p)BIrM!F%Msp?HIC?EPnMZ&qR`{CzCkLM?B~8r29%WxYZC!L3~axZt#Hn;TTS(= zVr5eu&W4tk7GUN=M$rv%1$nGGI8?Z)A#UCd-Z*v0aHC(!m4a}pr3XacK;7!akWGbbKJ_HN6&&cXGV|S;O!HY zZ_hTK;Ed8q3?=rxCe3cQ&gxuIBT1qb-8b0DRjA>T1vgAJvaLI;^HzD<#k*z+x63C- z3C`K;`R^TeD*|$Hm!mGm_xMzWSarxxg1R6J)#RTn8KvuUti&)oQ7a6tc~ZC}0z_jJ znJw?Do-SUYS`nB*x~&o+$EXhr&__t{+~QESetMq`3=Q^YF+3L!0{-!2e`VY`2Vdb1 zhNpT#ic4x5Dl5mW*_w1q9#Z3KsLaZx4azWGb+#IM`(i6EL|}ez59X$eYy?e$5M4Iw z{~@h$B3cbkV@-TD_Fvc)GXuu3QnQBgp*6}|BLmZ@$!Bu+&lbZ>=}~65w^@9=JR1rP z#H_OH5iitvPSQo$qqs)lVnm05M(Q(}OL-KsM_9*7v{!QMKL8Rx0q8)sYY<>I=> za>KHvY~8uKTD#b;0}&;1U&C`szVucVjE=1!+a)TO7l})jj7}^xr7^uJ)YAri(3=Tz zImOX88SM5b!j@Z*2yb<0FKtlTP=;^+`s+!kRh?=P%dQeGXTEH5hwtHY$?>8gtIj<% zr(u8AYi~i()+K4UP@=<=(B-A|f&B|~Lxcm(h=aB5E+6mTh|Bs-bSkU)4>S#o(9^D! zC`^^={kKG@;9E=2eo(t{{0clB>MOIQ0-MGmccgR=rCl%mO0Y`iR9uNgbcw2af}#A7 z6er2xe5S(DBaru5RGCY*K9f=nbapAn1L=<$q;;V4kBuu@Fs;Y5k!Lh`a+Pu5tDb;L zUsFle@DXT*Ys!Jv-TIDe*o~kxf*RJM${Mim-@qTiuw`pSA<_JgY@^!y6#|9QUGure z9-$#IhUsOxNTo=WZ*Om`D0#U)bUydWuYP~B@!`IIV~W9t-W?EunJhch`tAg+J(*yWo4MO3G`SJxh`Qc*+N}|dFhuhhy3&_s#4%>Uiwvt9NYsqzGt$UxPd>k}I{O-e< z*K&sZ#q(O~{QM%5WEMRy{<02;TBfgGU&@@RDp=c6vcF zRy&JXb2N$oK{*wd)I_tQrYfm6QXw7tpfXun4i3kefkB|5qk35ZeW-()J`lB{dIbp& zg$2+E^*cS3rhF zDY73oNkYmyAqWSGpOQu~%z~o-yFX1;B(M|EflaMpppcOMPjbTG+uNP_ZegK-{JYG( zO)@cr0=KKR`R=hveR-|_ZwjvJF z50VqvB~m17V&;ksLJs>nI&zKb2iSCXa2-^tW5k>HjJtoM*ToQWis+?sU0yacWNR_# zVoRBE!yTmT4hT<8BFCI0rk9t?$~%Qu<>%-Gd471upxNerhD+q7%rvQjE+9q7Z~rPx zOD{ZPPEk2`OzNFL95zW&Lu%!MqhH$b)#B{WZjaOF&93uR-NBTI*XHu6*|RQ7#aYbX zDvBzK6CH{N%ps&4xA6DgOyW7xAe) zO>A`?8Do0MurDbC&BbCPTOt&`A2uOoPJ#U-1B5NH-rC?6A6fNL&wFP4_yAG&wt&-?GBhb6Zi<9}-58<~R*s;9Mjz+jFaqsN^>I0!a3u8X%kaIzvQbm#NA z*HxF5e6QMG=vJf4rTdFJB>2TlWePja9#JrP3*8h(6N<7%Yll=m95RcALf^l|*fw?B zD=l&PX)I!Bl)FD~L`_VIydzNVBYg2D9%1U_)77mJEs^4{-TG^w%oCJi=go{bNqueR zpO-d3vpw8Y-nS_d%f3JD>vWjEDuG^;ky+4v=HSRlA(AhIIN9s-@>xY%*u#c6`gCDh-j&D-h1$3lGQzh781}1!AvFRPiK+{Z!Q<); zABTLZEM(BPB5qJqr0M@dx@fS2llj2J*!^X5g*AEiSR9Fvq;K${Y?=#OKs(h_XyEyh z2bI$=y{kjbWzqnZ?>nLNCJ=Xhh_5)cDEg*(@om8;HWBZgumCX%IhP+)Y)WypukcH% zI_THd8kv=QzXM|Xq-Rtopved?>)Jq0pxPT{#KPs_r65nR-sRy=mkA96JU5$j@ruO{ z)g7bq6>hzD;$no`Eg)V(^d|#qIK@=J*71`Tq#2JFKN#2EXp%5LceL5BiCHvg{~f+B zwT31smZ33zd10gh)ZfzT>W{99f{30yA!`dHRHt|18!L%GJbUr#bm)JA`*+u?KhC&k z@{wOiI^XZP``tcv;I->lR2|+kC^JS_VbTv6hXXRFr*6(R;E2+_6Nw@`6a_L&d+v$_ znDcp-FgU9KbPnKF!fz1IAra3V9pEmTxa&c25>AiM^Cncnk)2y)m(zV`?`0|>WwbMa zyjT74gibG^sDXeF4}mdPJT7_N^g%p^rM8qL*D!zv6pnK=-DlvJOeQ}U;;r=y>TBd@`Tj-8JF^;%#(Ti;4J~>$Hw9Q=Rg3>E z&gxJ?-i9^Ud5zL&h3>QiH5!XJNm}wsZcKktk@}x#?tnFa&4A-|^bA9kBe7c3{>8RQ zfE5O4=)4s>Ti_I#4+sN`STr}!z&<^;H1h6aXd}?{u=R9jb{t2M_l!1_3_MAE;9{0B ze2xYMG%tsQn#1_95pg7S@xKgthg)1Ak>8>D;Pu-M`1f7-y;K3v=r9IrP+>5ucXQmy zB8yaI(K)PaNAj>RNkSV2LRNttD(U{-*msh_ynfZi4eF&%&m!V=FFgk4$@c5j4s!!K z&}!CyE=%)m^N!8$_*9NWdlwGiQ{o<{!PTJaRNu?PTE=fj!rvL5?;c+!0+eA5yq%8} z{|ge(K<75PHVsh-ubB%0&o$;?-D$qdwt*4`CzbI^%H;G?>3sLvZdjLVXz=$Ys=jHT(_LAx;QuL^%dvfuz)99 zk25~w8~kqmFm@9k`Pf+cs9qKp-ajO|p5r&NWuEHMkGK7;4ct(bS(Jm>RP;<-ZZzKP z*XS1&jid%CvH@X2!u`7|Rzp3HpeFd`;kb8;x-ld?pJjI9M_H1BK?3tcd-vqepI{Egw!8)#nmdO6Ie}pOX5Lpj4(ALyP$xUF8AJ z3XbId3;`UsLKfd8IY!sUEUOk1uIYoompho3Qb*hK>a9j! z9qo4)CjydhJm7Sf(6=%FT%$KX5C{|Boa-v543Sy^|35~xp}F~Owf!D=heL)3= zEd);&yLs+Iu!_={A7fzec1{+;I59Nqq03hUQrYYdm(uO+j_7=HZD8|ya5gtNGwMIv zSqM0SmxRHDiBz^%%eoM_@Zu_iRV30T*qx!IbGE5R2VyVhZz9e>*`#p>Ic;d zab`KmgJ}LmV^8&_UaOZY>wv4~+rIs$Bi0CguDKHq#XBd4%o1yXNuti+%~qaxTHtet zS<$8Xy8hP)Ca68emm7iqka*xr8Ex=%5M=mdN--IFcqsP7t{f9B6ydmkRJ}@^R$;G~ zMaE^6D&GE<4eq+ZrZN@~nM$%P%bOT?NP=%>61%skmf#)i_L_eBQ|Xt*;FKssU&+6I zESKp!n%gwLERELm)QWP+#E*q4GV>>SUxpJ+lA0Y*D(~k*FbMisoQAT2meiyUVEc>PaG$OX3y9UBm6BonlI|yVlTqxqAh} z!#i}`t*We#J4syy-l_O&hOEtRa^BtgEtQ{I46Pb3#C;XipT4mR<7OrCAzCew9v{GFfphnv;K8_6(f%~D;HZ*6#ygT==3_W~4WXkGPd z4yFW234#z>It6}y?7TxeSUHeZB(mbaoWk#@2&wtW#-)Xbp~+HY-z^|<^i2<}!AjZ` zJlCG=#AaFn&oI}Oe&$3@9D`fNpJR!JEOr( zlxe^TF6c9NQ{BB_l4DfVDgwd@`j0KM7`;4m7N6@}UkB|Z(KI=@lYUD?KOg20xTY9O zwDD)XB4}e50Jr4gGkPk0?M5Y^izv^{3L{-s*vYUc&F4n$>fW_@UjM#PE+HaUs>Q8pmOr&Wv1OQPZqsSo7%M2*1rm;Nnd}S872% z^SeeRHhtB_A~&Yy&rut7QKG~h@6g#Q3h}dtmG`QL8P)l#--j{2rj-AN#^}%wbLX&# zGssDC2o-eAH?WKR38@l~Ih=UTx-g;UX2yXmXz%lWR~XTykF5FWia?_8Vx@acc`=k$ zUKZ6?V9XA$wC%PhVYSEP!$tKEijg`hKHS#TBCGrli5vJ6uDae*pB2{>vI}J7{Vnvg zydX{ZHP6Rn>#XHsq%xS4>T?lQo0&(xFW!uv{qtLk@d~f~TVksd;HHAFH~j{L9WlF; zX1n9nW*B=;tQuJ#q|WK%`pS(pybVqMV+~}u3De526mwtiju9@U{m(@*{2jP*yQU$S z$1(d)u+;c;f8uIJ8*!e6?N#fAo;EpFRcQ^2o>5SU9hoiBJeOMPFeiIk`n#RmR|r9- zF*LR~707VIYaJHj7;!OP1J}Vq2P=O6^vSu&uO+n+|9Jnr^E>RDe$RWUR>w|efk8*u z6~@89K^iQ}#4$fz*5()5G|$wgdw~to=_QUnIq{LuI31QZm*b-8@O@DwTzax4zdvMa zBE#&^Se`l^-AiFxux8^OrH5kFC!-+EA_QXx85%@h! z$G!XscO5;(ak1OpT+Op|V>#mU7w2~V%Oh}oiEKzLw!i z#>zThg!*nw+@Aje4E0Ct;aL*x?8W5L&%bG_pG?We?G3HoE0J@}(-#{@ViZm! z>zYfZ3=?@~L87uQ?1y2jqQILcg$kqfL*U!2wa(K6`A(h;?|G0xSIl9NwWg`E=wJmQ ziRt#GlTv6rX~xEO%F?QOa&u;S`I}OpaRR?V(E+=Y1Ark^EpQgfEC;$4NxhPT_u zC;q$f9Qq>uw~cmC7IrRGf*@ zI!f?=SiQF8gCI+t5|$%IBT>g)V`N=pWmNZBIri|8DoqJfIkR1rx&e&iT@}Qm#+Zf} z@r7~s+m7=a!B*&GR%Pk9-s}Pv*?}OOe@IiOK>Ce9#!Z@1-4S~kaTAz*=RKpniH{t) zgIKca#ODzM_Z&5RU7uc7=XqO>bIu@@Pt{3XD&OqGTg4dSa+mo?|9aGf5xowC`I7K8 zEygSzj89NYrNCotBY7n05S_{Agwy7ltLw1^!`uHM^|xJVJ4--KO$~V3i1}*%3fuAJ z_mA=Iu!bBn3kvBdo5W%z|0~5S^6=U0EdH`yigq^Xa8O1qKx4=LyUJM?aYx1d{Rd%<*LRs zJ!{%9k?Ene#{J&2Im^s52djd+AH=A{NR7o?g0G5bt}D{v@io;S#YKYDYzU>D{yNAZ zu4WXM%n2l&f=<>w{*jFCHH+rv@(Cw<-?A<0o;=5^Lq>Fl5QLw!%f-F@afcafGK;I4 z&WF`<2Q?X;%ES}fE-NORPMgVDnrRTZ$3RAkXU#2~{T z%e)4@n#!1%5-2eGmhU2`Jc=aIzPY^CHR@0#ZIEJ*UYmknfsRCqas}ty*rZqZIQHAB zRDYb9VIkv6JOCPe+HT)|n>YKXHem$%gHWM9mDt-5T&NRXuH3%^EVNp6d!A}fn;j7+ zB&7&S{c_Y{i?gS4C;=(O{T^u;;p34^8Oo;S3O=(R!j#bC3{u4Fj^Na#oawPsQVHXb zL7q2x6{)xz|HP8{rlKc+SMTB-Q1fi&#%!t)-iJb`Kr6h3V(D?SGYp`aiElmHMu`f` zCO4-;eZmdCWXS7RAU<37Sg037_E#7 z$t$IUKNSKu8q3k$W%Z4vQ`6T4SwFtxpi59vm0k)(TE@{CL?=q~;~Dm4Vy`ID%x+%j zUhlAJx|I@#H$(^OSpi;X-S+IsGKV*;DBtH`|&+s@IDH z>n-o_e2Yf-vxB;hqX$m%{;@uE2}$&&Z$)csKfpc1GGZ?Bo&IZ+-%3Z;us<$#V9jHv z7tYYz7Z`AZs!+K}W1y0X2WceQ%-hT=i8Ss0ct| zz0oKJBzXt4OuQAxH2M7|j3A_JGvnauRJPxYea^oawuMH28n_fsanAX00C$5=bqspX zP>IOJH>YalA&Ht7KR(OXRbHL$yJlO$*jD(^!*DzMNr1#Kr&H)Jpun(h?qg7wn!1Xs zG;)KN8+7*Pn2VMAKj7P`gcQ}Ab&>x7VeuD5D}SII@JC-T@Yp{MMH*e}(D@Mz`1Q{2 z|1HQ1!+vsJcPz#mLx#S5M*-OSTN1(=IcDEdWpv$LHHCx^o}G|it^j*nM{IlxyC^iW zlceK@wy^mBg#DEEUImF$xPN0Os@MI0NCct7>tBwbm71EC*B$p?LL}QswhRJ+PS6|T zA|SXf+!pg6lF@%iC&56uXTac=@FVl$V{&<4zcKJ&p>M-f^)yhSIm3Nl^LveOcrFdt zy7vckI*hHSHUrl#gydZP0RhNuc&7i&+h>fe&|aV)=y+7(zW?6qWwr2D@@}zf?=s#v zz7Pr&$@E$`_$1;c_G2I<0RNojrhu%4A}W(7H&a;d`Y}}+1qjwtqxU*vL*@}dpO(Xu z!ebLcmt$TsNoI-g;eqBWWO=vV?ScbGKiFbQOO%EN!r8Cf1&RBwcOy=ESCduJKUMEO zi1x^HQaM}clt)Cim`d+U&joHw-rVK~=H{DrgKiX`zvMV4Sy|R-DN|fMFaoZg<|n=5 zj}3+Lo`MFC-cbq+FAOh&r|JQYy-JBu#lu3t6$SepY$WT^NJ59;w1wwDHsIm~1z=zA zPC-{heTdO_4`na_XJ3c=Uh)vIxGj_PJ>Lnxzokr-e~EyPP%n9Dd^1W*ilnMaUt3~3 zbaMB{Mg-e1&k5q3keaGAx2ji*TD$w}>6C>?6y?)rkeSK=wccg15e#nvc-8wGDV{J8 zgu$~~yTZ??y!CUN*XcV^h1}cPlzF;=KS-w==U)rHmr;BW-UsKesfU#k!xdf;y?0~UolYbQz<)VkRLhsQ?SnlA5? zY`URnwMAJ4v?0l`={s3P`n{zh_8j{I;Jwb3CnK3J`R*C32&gkjTE`r2ATv3}8+nIz z8FhzZQ-UbQ-R50RXVl59j;M=sm5;U}e_E&3?ZM`-s@CCpiiVuKF}xOuCz(eq+mMfh zu>|4Kh{C(VOomX;P{DeAg=NR*2L;xZj>;oKjIg13X5MYo|dY1%AT64^b@3 zay;qn?zj?s_+|pm{`R9HGrT?XT`swEFB9j-lu2>WK;sLYI@^8qTR|SFQ@lP0a-VS(b{KLVlP#n9H14 zen^a6AkY-TE2%3_64yKYxoaTw3D4S~rgTcn`Ww*3zL&vHuU1*sYVigwGR;W$RK?(@;IVU`v%KFZ4q~ zNrNT*ufx`U^M=+YS*>RH>_)Koi2I-fXFyGJvo6?0McKBte9W3B&^1a8Y^-$5sX^@M zV3vfDj+Sa<57(njtWx=<|G3t5i+3OKlW559t}YAXm-KR-kJSZ9>6x=~-WT1%W~Xa;npo|h@u;J^ z@+t1+nKZN}(bOIN*{rb8Y~+jhNpQsiUP%^{GCs8Svq`I$EGKKI5@G~ag9#uPK>*+#6y|oL-k>Y zG2(`nI*7;VrS|bU@(exN`CkvUuEjy2yUUs@zk}|sFv?uVx~igL$GP_)*>{Unmf~t7 zz3`7|qvT`Z+YjW=mC>d@vr;8Eb1N^UxW2u~&cGDZ9RO}$rNT0^Pbj|Hv(|UAbD*0k z3!6jXg7I<7BO{eu_3^|Nubt15o7is{!L73k(@4mYmIUw{bV-KgB+FIT{ z#i_d2HjsR*(w)K_0jZH|CyN)eezFeNwZY+*z_ftVpna~{+DX49-8lcx8eHOhaxxrb z;vcW4l7Z6>B5NI+ZD}ZmF@*b2-?fZ2Q{)%<6}%P1*>WVe7n!5YrKYOrCF$+EA%jNY zgz$yAYlKtRN&AJPvxp!blQv)Ty5Kgo*}`HUUu+d3iywXuzWfWh#~f zyTe~CLo)LGrQlaf_3+&bQe)0{{UeLO%XD*KY#?&sgM0Q!THtsT|2V?g96xSe>3G{E zc3Fzj>aqHzrd&-=x!UO?dF7?|^+hYug&83ZxC$?W(LkuguPw5SZ;%Eidcj!7(gtYF zhsUP=a8^5zp#A+rP}2)dOIf|@j=s-+S!qS(YP$FLH6lR~gzqP!f49rnj-QKE{1#@& zU__OkKjOY)IzyEin}mL#k6EuyaCFz8#WevTxv#_-bV$2d+15IU8$q1l~wC9j@@O$^mAh2VuRh2>cwNAdk zdGyRyuaYPY+W|uK;hNomzU)eHHkJgXU_%g+PeyssL zrtI5T=dtj7GYar(`K??y&|D?|-F`PZ-3<@#E2tr{ozX_4wu{Z?I|A7!o-E#0T>oN7 z`dIU85AN22-j{K-F#SPkREtWU_1KK)3G>DDvts6$P4jwUQ->)V^v<CfmR<*{%s3d7%YiHh5B`ezvF9*{%a7#(+bvZM~pH}}_z8jg9~-R?C4k?N(P00$hZMBDoD?ZEARLnM8VXFeZu zLq-7X{D^JFrsE1qvpl0#k;heIz(!m1rAQznUd1kzjP=mIL#@@j1k6#(t+pRk&++S7 zqQ(g<&saHf*qmgr(D@${T7da!>?L{)6PG@d)_o7U9F3ej$(l$&C0!^>4?x|J+#iDSeVz^P%zXl{lRg?E_oZ9BNPB5js0JPd5b(FGCM!_}Yxz(xFzZG&F z$($$TBalxSe(?l72E4a&48iC6#@>AMqJ+b~FKC7RP@MGcbCOVY5fp@>xju1Y^LFS9 zFr^7d;!)5vOMknrMxBtfy)y4-mUFEBoE#O(b+}G3<+xvNfYbURl(o&l-3N59T;7-@ zdYSG|US-YHrUYv?FyKe=<2>D1>h!cxqzk(w(!rI$RYG*J`j-iFyOok7)3_MWEXzCv zC?i6C+^W;qSarPPCwx1ls!gpl50hb(_51r~Z`*C z{Uni>5)(=-AwVGepc2k+-cm{ydn_@t{Jnb3_tRTycI(-{cjB$Yt(QME74`At`1$%Y z>9oO=oScG!V#C`_Or_HbDR+R?I&WY-L^5c)xo`?CF~HXT$$=Mlo|@hsS}VP9w!tMh=%#{v$8H1mFG4PO@>e`R41_ z6eVq4bzn3RtFVj92AZjwV9KwgZ@yI8CT~9=0M-!kOx>wlx^YC)9l8{>>&(dY`*B^> zccuwns*qR8+LsMO(*)!}MeWg|*GvLVXWh1>SAfs={TeYKO)m{ad~RIx!pS5(;2lz<`_zJtkG@rtmPTG2kr~=-6_)n z0)PSXm+k1VDhSZ+d&y)8F)WeRDi!f$Nj%$?#Z}*4P8tkB;M|4Y?Z2ylrL4qD+%UyF z^{2H01CQF2Im<3W{gW(t>x28$ReccLT(T;<@pH6>h27fB+#r{11x^|4gKMh4o+TQw zXeK{L)yJlRgG1y-;}^-kUqY8>-4R8qp4EC~5BjGP7=ML?z8o_t381{Nmq0StmmYH* z)rF*fpB(SL9kRtFdR2=At9EhMB%xmHTldXQzm75c=vi9torCG=?Iy!^zu;G>7C`y z7<&No?_5!K_`rZKnY%MFkx93j=ZVz@@WNabTX2z*s7M@Xy^D(0!RK$Rsx$CuQ_iH8 zmR>kQSDzfV5*tB2mh4HmvsZ*GIS2<`;-Iou{mP^vm`GR8Xn<3h>e9R+bN;Cu%b(3! z8!B5*vZt|I%EDNn&Y;9mKMa2Wk_CWHzBPS6^tQ@Of=zu)W;j}|e&NAToLZouYEc!5 z>jVk#P=uMEcQ(e~FEgTMkiwk$tI+s4nc*|NOT5AD0v0)Q%`R8 z#?Bd7)diVD!4%0c`sFtye%4OuzzcAKs*4UFgOROjQI& zRg}o1=Z-BD?>z#6L<3-gyQ0IJC4i;>%)LDP2Ic}zw+2|@eW7c_6}(x@#ZgL|;Rti< zk}LEV&;w3$5)457XnkU<>H;IKACWC@Xu>#v)q^~S$~v^pwgFU+hl4{!n8yt;J^^A3 z62d!+JA+r(NE?3_nExl?Yv%E_ZNkz*4>5(dmH^;e2f+E8tEF+d?;x+cL4-8iE&^jZ zP2UDEfB=}8PEro30LCPtI~dphn}4A26DapD00@H6MxbGNvFo1!?f+&Ygg3j7|Jy#G zZkg?t9#(57QCI#HKqQ22fmzHxF2dYW=^ZfFGW@6qexMn#h=|w zk-lAvih!0H6|@t>)mzg^yY%dTR?B|%cqY_p+yRCaJx?4N%>gFy2h;i8HIdX@6?WED zkcaOG)(&jHe&B>Kx&o-Zj1Zl(Z6SSJDfoC7|VCDR8~{$hAteds*E`9v6ie@)}kbacc%yGtYBy&J`b_Rp;f7@nBl zQqL+mC8Zakl-DyzaPr5JKn8llgeWh73EPuA+u~F?q}^T2uaNnjI)ak|)l)EoJjWOS z-sOekOD(PlRbIip?I~gom42Nv)(L+8=k# zqqTFwrcr064TPmN%i)HQtRA`kj^kA}P?Rfy_X^I+w|O|cqEfTALvy?vD-VrphiH*PMyI7Qi9Mqk#j?6dNMD0(#7AP;3&aH^`i zc78EqvaFLFko4Z4Y1KkUQkD)v0Phgu>BR8U;MndoCZV63HH~++LF}fu#9o*l=LZ%k zdaxNiZ7|E%S$(zC+JWl6+(hZ{VAfAvIL1SYNhNJGxPBL;#e%y>V!I?rRZzIm!Wx^wq?KIn3% zJh^h~>{-;%M0eyThlpd9+3#%D?MjmjL=XPDB2VlP_>BFUX?ZmCk9yoFh>}aDSsqIc`H?{ilG{F?1#krZT)q~o(p$r>jeW;jTVGILY?xI#hFx^ znsG(fnVQ2G@NN zgi3pVutq^YO#5IchiB|K-|MJ25n^2#4*vau^`X28VKDGqXp%#Z4VB5!}3GBl=u&F#uh2 zR#u$P2jhfP{dGmBBcLD!n=LC?CzitMPR)sFQ8O zKrthp#AGNjUj7e>`b9z8_KsTWHIAnh-1mk5lYI8tTPv#}Nel{v@oS33=A22jMpy>N zZ&oS`o|F?5q=J9;9pvSmU1cin$Y(#Gkl#UnFcjMJB72JU=nN?Yigy$mq{KqzOuWr+ zUuKp}Bl8EGC62r3;@f_NwfghTb|Zgfh78EN~RKi?iY&N ztpeiGk6n=qh1Ivzi(D(VMxswr^T$bXOdH#=-PWi{Qv5H@g)OD#Uk)eqL=UNhyFV_I zlinyAOiNdZD%1KK>Iqn47M{ZR!cp)mfi9$V7TaguO6ndHqHDt9)?9D79KL@?Ls54)Pim+20J3#aWo92#Y7EQEWujoAG_=DFj((<@;|)#euQHO zAF%aQe^Z*pE1y<1HE(HIY5PeBCh%aZZo*Xw3&TK0?PkD3>6kls896+nTKTyj=o;oO zQpo%AgSn)5DOi5>nYsN*&Q{9>aVjZ}3o%vHN!R()vS{@=>S9!<4mr^*e~y=HD|_6c zp#m5^qAYWCOAN8!oWpB)caDh4i3-xQohPaAj8bY}d5>%zJJQDKT`DyQ zs#6lp>!`>PWuW4-8l!}k$J{24&S}p!79n8*QOc2JiYqF^`R@MGy>cKqv%4mueizn| z_WOO&nsFdL9y_~!%_sxvq_&OG!c2uaD#~Z-*skrvHR9oOFbQw;jy86`M7dK(+>Br(xIXyol zTSf=1swre;qG(8G$c?Q*cvM&8zTt);{~L848OoLY<)gJ$-krhqG0Y{taD#6T*X!t+S{RBH zJ2XT>Sz zwwY?nMP8-T@EhUJR(U~&zq35A3Y6*wwGNw){;1B5lY_Ok&TGGF(KItz&A;&V4+N+p z${yysn`U4ZzUklt+Ey?qP_w=r%qT#L8y^uamaDm&*TO{bhwte-eNJX-db9N*qc;Cf zBLO=YzZ>Py=iRlb@??8rI;695jCYn=KGf6l(iq4YtG>_GbVR&PZn59?vv-R8*~kMN zX{U32zSFXv;huk=c!uZ4-)+k|Dtsht;uAhgdtHV-Q z6IvN3wJ8LjlW*6v9G9+5+&*N>n@18k`W9VPl`O(`_md)4lePuNdfbgNJ-y&hp*vF= zrtou=EsWtFl{p*X-p}6ufMIk-;FJe!UwYMV?7k|ME}>-AIK+UL$U_m-JfT-#ua`hy z+e|Q4_M+*5^Fo!yy(~}FiLjMxnTw>VNjoTshab$ma;BR<6MiM<&msV=lKLy5o#pY5 zGs_&zC0yU`BKg{7W*p2Ua4Dyb7VIfj#sgEEW>ET3tR7&J$TWh4Z>MdtY5G!kd{@Y= zc@xydnPCxqeLC0Z|9EX$gwGOJPgnx7TF|vZd+0*B76LTnx}A(HK3*?Ym5#{ucwdto zdr~wLHVq@|Zocf=uqTI`b)eLf<*D7c&-E3l>60cN#4S@w7b%0V$Kwz=RXC=((Uul6 zMR|!q1MxWVr$E<|Ig-reOOPQu9%rv=8|}D}iZ{D$>+4&Cs$18Nf(9U-oYtegqlm(r z-lP1$s+m19X~w(@S4Hs<|J`+m#h$L5cj~ZsQN%^)@eSisePNavMmZCDfIW8hk&Ur& z*e@3A(4xmcmtBROUK3tQd{q^yn~YMVVMC@bkMG_O;6uf|9(Gr`9SC2j3yfn4Bdp7R zvv*v%UmTt}?92_HQHINH?P!ltu(bj~*!v(j}#!gfKz@ z>5!I=(H#OJAYB4ufPx|^Y=m@g&wKxm_sfobSl-8WUDtX3&N#n4qDc`bP4&K7G#BBl z&MI%|yKpGDHJDw#hmEc1bk>?RhFUP}Z2zXZhNY)@Sgv%Xl{}oLXc`#++uQsM^Evuz zCuXzl^(K&eGwgdpn_+E5xJI~@&52(LS41ap9u4n0pZ;oRYs=%*NBogJCVm{XC~O=7%o0a80LU{I@D|M48zx9~nt?dG3-DoI4^@*HPqmnaiXsldKp#fs&+Qua_x~Ig zZ0%Je+F&5x*;kyRTMiICe5L}d7>w{1IsVPd&zv+q=eIG=K+YjYb?AG(rwDLome`P1itaoqI%UKt#fAX=!TAeW&{)@9B;i-4^W-Ho*$P0F8F$%qYAj)GZb;}^#X z#u&lS%0VDs@lHJ7wFa+To>Q8BYc4BlNGqxGTTW;7KPM0>%+}%T`qEDH#~wnk#xTyO zC8@TCgv~fM*5$k`riRaiX%E>cI!VlS>I1}<5d`m+TXOTlAmygWRkyD>5_lG-Qw|A@ zVh{@^>MuxWX;D!lYs9h3g1=EL1K6QdQ%Jl*#J!x!h=)SYzJak`!Ss<10iUL;o{Pky zpv%ajX}P-XCf})P4KGuE@OdQUGCIxY;t~?zU(F0-)H)e9kVr`?5^#jdDtnbu>Ihfg z8(D1Wo71$_cyqxMaF?^nOrA~nt9G>tZR17FYWWWnqizIG=*-WNlCCe2=f`6}X}PJ% zq5;3`XDK~B(^`{OUUTxg8V6{@3$Uz62+=fO@za|bAtgZv{NR;8@}@J8SZ63e z-LL*w98LTFuCU!PT>MRUqn|C@&}twu4^8!4>GE@Zm&}_s>dE^E@)-WyRh2HEb^qwY z%e@VjM+i7I*1pl1S>bFiG<@V=_*8oV$f9?>eClAiOuM=c#isXR!gM=`sI0C&ZdQg~ zpBBQLIzw~4{UOA!Cb;rTj9qd16W_s4N)i(-RZw5Lm;3|W51;kbCU!iBj~(`S zczw6=QGYu5lG;VcS=ZVNv?-!UHzF+L_Q^2OV-13&d*BpJ>F~Q;{E@48X|qKnrW^Ir z_UBWtSRi)3xcElF=qNQmE5un9+I_n$!4Z+j*Cldn6X&(KXgqTn7({=%NKjjv=Z$~y zu~kMvIGY7!_Up%;1ZJ?Og@cvno978GrN|z!vegacmo}S5(&i^))cN5>aUiMr78G{z zU*Es%O8fHF#ofU+aE@5HnZEIq>H-J?5ClGRk#D%6iq?i61R8Kc74*j{CzY!U$t4==N`f~`zH`(1s+Cq{ME|_ z80F&qS)O|z?4Q*smn=L(1y%7wA#!zhI6Ax^-${o0or{1@Gb8>lp{)Wc-$Zj3O+kqE z8m7S1t6J&lSS)-!3)HFI0xH1K{$GO8MJIG)Jyd%c;bM_$Xlyi4@~|gHS>xWt7kjOyGsvw!r9@|)gsY8c%_j1sf^>2bos9FZOH@3b}TOqcsT62jlZ(<{b$tQ?h(aQ z&{TbyG=5Xcupq_AOcb!Zw6OHu8D?nZQ!nb#;CWXIuxm?eFRkN^-ObLOVLATHZ~KQr zx2R2bke)RUG))-IS5F27qF^^9nECfA^s~49vkM>inB%Wui&)UX=7(~BhOLl2`m?uS(@_ayNQ;XonWY#_pYf4 zSoFfMaPhwFshp#m)XiGw2>(l#pJB9M?e>%F){cT$-Ja?eemYjF*;dc$YfM}(`nPep1J22OT)$q;re{@Y6D3$Je3sJBU~`FA>pWb{4l(( zXSp?ieiah_Y$AU3hLl85plTGk^jB*0i?OlA^;SY@<*3h?McPaI4uaf2KiU7ThB&P; zoAUBRox*QZwbJm@$sDadFC4Ce-BlJNgfo3ieJKXBMszee#Mub>|MN}N~qMAQAXAOQmU>QFU)FisMP$LV11Rb(0XD9l7Dhod_%aXaa zt)w&&_R0<&y>lj;qIa&H!K)!-ekOq%?06X2>pDSlQO(C;#)(}qy*ZDU9`|tO3}P~ezKH75v?F;inV>=6{^S^&+BLUHI$VdbRz8yz_9-pr`?Rx>@V?MEJAoD8gi&{7?cu zoIj9(Uzg_$*Kvd-@j7x7MT_6rG7=XF69nABz-NJZ?!glzCdE^g7PfCXX`O~tGpBrL z`?@F$e@~gXaC%vi>WNa*Bi)bA`+RMSoJm@j_is21xD^{b#zaOM8 zId6c>RuX#H(M?u#6)MkTIfzOV1Mkxgm9JNn*`^tl=~m|5SkiZcw-P6We3@t2&JMym z{`jPQoOj~zSLXJFwk=!+()F)4R*+lo>YHDy0OAYti|$T_r@m<0luc%)m?vT^1Nrq& zC>1lLaBWUt$G84sDJZuGWhq%V%O%K8EWLW4${tU4`3qxn9X`np-DEf7?=|!;IMvUZ zjjo)-?0Y(Tl+K0&cek%Bqk&yA(bZqU+Eno10m{X#~6C*u=%s!W#fxiY+R=QVF$ z;%wiEXA5x#S19)}YoHXgV`7UhU~y$L#iR8yud4CPUg3yR*Yce2}TUa@8VF}yC@6Y?(kzKyoWW+Ui9~Q?hh=~czz7K^>b3%OQ{vvM`SCO7!fuq_nUw>v%w2%HO7nYLkk&< z2U%Q2u)^9rdr+LHL5_1Hka&aX{=y>v?l|J%+>$Q6!C`%I>3WQRL_gH0o%okokZaa* zOd!`rn7f3Uk&cu+biwWKFeak1$*)QAPWMs};)&9=m*1M3i27GkCQ-jAPSPx3)%P!q zEDdrEgL?e&bF`++65Er;KbLfTx<-<%6y$ks;(Jdc{(@MJ_W^cj<(1dgR3+KVV zmcp*oIxd$Y*`CDPtmLt!WjRLd*VW@Z&yxc#i=m?<1_q+$@ z&|&EQ9H1h7&S4*ba@7Y9KHoc>U2I|E0Fc*93R}7j_XC{q|C>Y~)DWQpu>Z5S?>K== z*#MLL$(2K~4Jv#&IBv>UK~OED%#45N_Aw`{nP}}hkqvG|P%~sCJX@&R!*;~6iuE_~ zg_XhA;^K=DOtvkUBZ=Fd-70ffNN^+7Ae%`&O`AcMQx1ri0j0W{$Z=%X9;5q}4Smlm z#-3@gMSQ@$jqDhB@IG~E4Uw|TZo2_BqhEc}mic`;YD!ppxVVWI1HB^)d-$`G23{5x zi^LGLq=yw>0GbS{k*{Buwkj|NRi>ixZb% z^>`EIyTAle^AvgHK29`lhC10pgZGEC3qMVJC3uUH5qw613OVG9RFZKNs4fOXNs8Yr zAr>KzdJ(**I%;OoT5qJTm_%7A!8g#{(nj{UudgzAh$Cxs?7aeOD7H9M&#FvOOIO#C zE=$=w+Dc8-kLJs_B_vOX5olz*zdducF+W9#X;m?+@@Z(Ba(s;3y8_ni0t!>57g}uZ zB_|A97p79`K6VYL9ebZi)Py1fgv|RTF4+4L(MVQT7dA!AS12B0G*j0ol> zI`6HI+s{eqxtY{y#N=W?pC+H$6qNTgg#NeL^wp_WoX*0?AigPJ<`JvAS7IONNg+@$ z@%^-BE}5G=C?m@fIJxCMXz@)%-z+ax@+JU~G>UQt)}Pa32K3`C&MJu#hCfnzg+6{L z$R^K`xCZI+4=_i}@4jZ&;HK*RhFnIN%`eH&EUAkzq_tK+MP0uY=%LBQW(F@ehx`kt zBt(D?j-O_1TA>7Y!u=FW=Sb${(pIjaf2A5;lFV#xKh|_z@vlt`;v=8NQJX@HMaQpK zfTYw2W}au{E?QJW^d~YS6Ax$nm5cgwmE$T7xYg`(*DKt6}= z-_6E$zX6Tu%Pb_jv0hu3-l-GDnUGx*98FUC(IUdMSMG9;R$?)K`5RS)iO!m|8{Z%4 z3s;7d@Z1;T|K#{`!*g=H`}+HS4QrgwmPpy~l2iW_{|Bpg9Y`xhbE{Lc5$YUf1?)m= zou<2ecr|9eWv$lE$5#Wc9LH2@jp(y}+B@#eHf6b|3{&J#QuJ9#zOpe^>^0QQ7tS4W z@qT@1NAwF~c5bq;T^fwuaIxff*?|`42}F6+7zEB^^St?^M$C zeU^M-6JcE)3lh?ko{m`N>O^npERRf|w2)J6pQ15GjDyiD^5y)wBX8TRZ3LGW#~ha8+;G$nksZHrURu<+OZ3?IlAd1`%oW9#kRKv>>M~H4Ri2=|9>Zh$ zRHKA~+es;>LXKs|h0|;uG=)jYDg3@97?tGp!YKXpjQNK4jGf&lXTCtseM~>Mo}EBY z`)%lYRf+(`eh_lqOU{#O7c1~H!8%g4(m;W$=Z`?1mHs=@K;Gi8@?+DaF6kWf`DO4&~Rh4(#0}=8p4z zsXV=<;NsPVcDkZ0H={3hn%&J?I?eZC&(aa^PEf2f84s$POi&)>QtS~QPo%iRWwZ^8 zFZW0Kdg(mavYD!gW~<#F7rAL-t(*@=DkRhm>LwZaQ#C<7Ii_qn4oUZ#-Umjp%g+Zlb7LeUu0or z@P;4SbkWTl4hA+e7o24KK4aI0z~`R(RPTs_Ol#Fkp-ziu6!w3`;%KLqPsxy)FWGS=L}BXB-}5JO|_ohpi4Q9 z)rMzD-8bhOwcQeZkn7OR_PvpUQM&TZ#E0R6JGSX#yajh(pm&Zqn2Nb4UFm5Z(f+S{e% zM7PtA4r>}>9zu)2ZlSMPTWf<^U^y7|dJ_||?c@+wqosaf(#B|THBzblay>_r8GZwv zT}13ur;J7xAJaPQEIatlKH`1J*3*0|WKXq#u~`1SMB^Zk9B_)R0!oyqbgB0p&VoK{ zq*YaDrlC6yF+oz)m>0@L_r^8mz;a}ap5pc@ry)>C2}l^^;j)x_puH_KG6U#bVR1c) z{(+VLp>OtyMQ;E*C6T`Q-Rq)~$yT*@WlzgJIm(v2$^OG>^7C|Uty7lA1+LQLu3v@E zB$>7&A@Cf{g%0IM7ZyIxUBCTfFN~X-o08!(n^2IQ$!y@p?JV>?{wp_GhoAa@e=8qv!R~^UqV;{9`+k(m&qUPn%DeX)#Lbx9HQ5-|y`k*RNOUC^!1Pf8+d!rfE4?l>ve@gKq2SnxYX{YY!< zIoUHC@{MSjaN3LuAPuSBtuL#aTv)<0r&P0~ul00fI+5Wu=U1qGS51r_bkkndK@hbk zhlTi#Y*d5MXXsXS@<|43`n@fL54QSyVYa3w$642J}JE1v& zRU0U4n-E{I*K^O(Z#()wreBAa3cFWL8$0htv-Eu4F8Va@Y%>2vRl_=M{8vGkV!}yd z8BL3Vf#(iF>z#%!j!c4CXrS4fEB80ADdV5}2UAlj_cCzP)IpL$PGqF?q&yq4Sb`EP zKmCBvFq#vcJ?~kXB#T=*YvyoHJ>Ba>ZKsqvGOvg7unsx8z9BH0JhHvra;wdDla@Ah zsh##U$4_z1cXcS?iZ{i8m)R{Le)tO9?;hVoVSS^PJw;m?GOWYjo!iL~E|1Q2XfO>o z{c6JhN2>?0@;&dvyc|fc8#uXC`o`Mg6OqPhDG6?oMu_@QCncfYE_`qM&ydyJ-L$yz zZAZEmVWIZZ;D>pZkeQh{&NG;s9?Xx(d!iPqT9o+bMUioXGvX_p{ju*s?Ap&C*5S$R z)?VoPue#Z7A-)Om_YT9$tXyvmX<3~#m=bihWh5<&MOSp(=0r;!y|1_PkirjE%7Kza z!?SSK3hM35Uu*5Bphr^kZ+??dPeIp}bzcKUwE;Arg%we;VQ)H?W2NJDmp`R~FZO|C z+k=#h4*B1rBabQ)qlvcAs<*OD@Rp8>GRwufIl?1a^7^lK(i2+RoRl#9NZ6Lk$!te1 z^C?QeNT3QqOzI0kM*3kv(6KvEXjSN?(1NLkD*tfQx$LbC=IHY3s1{Ih5KjYe0S~k$}r8vEHMt})%h(A zcq|bQHr5w(ROrhB@DQ!$J^2e85mj=Q$q!*sFyCN zf%K=Cpq(1sYjow-sU?KRr1hvR|9 z4=3Ub_r+OlT-yV>hXVr=d<|7uGmOW*8 zB>b2CAcrxzj<3ZFzX$grjW9p@uZg#?#U_A$+z$sc-iG}SZF2YzITu(Bh%9X|dtrcz z_W@oi9KcuI4`9b2Xz0e$?cUv$_5RWonzC=c;d-_Gk3dm$$yj}eGfw(B3$_cWCqbxd zC_QE3>-n*|h5bP%kCr`cweL_H9HG~Nxs?bNYWomGKy?PYeV)$9(>fQwAla3(+; zN?PMfvH$?@kV_j8=Sna6ApL%kH$^qxjx@!qG;J>_>MN+4&XqAQdOkVV+CHpPU6gl2 zuXOR5KJA#A{JVP(c(qfV;+J(F%+s>8fRzijh|&R|wS@`3is)Dz9PRm%P#j|ET53e|3 zPaQ!F(xi|T#T}+DuGV(eX6?0{nN{i}9<*DUbD<*~Jo8 zw4T#@FT&rxz3%Qloe+oeSjCUdZF#@}>yK9ke>!E4{wMmBZ(w#_8oq5tsv119fCKPn zKZe)iJzn2ObN6mn{j!o-5`^aW(T6e7KNiyw&aYTaTA5k@33-;5RHwTZJ+ami`p{4p z6hveai`1z7qvGQ~f<-R~JR=4Gd?OU|#Vq~{4{7LK-DqB)`f~BU81BsbM z2+nlvcq%l=}_RjNi}DOjlAKykeb=!`*$>Xn`{q- z_)=W6U8NC^mode(H6TOk_Q|zAG0R*UVz{ONxVM+ESIQ!(0Y0IpNtmBo%qms!v2Bnm z;|Xg0^szDd{60XK~w(bVFTqc(@M7u~NzBrRh=rKrrn$G9xF7p@M> z5fYbwd`*|0$(RMRH>A|bd<^lKAy7lQdF_>EhXxJz4de4&nf70lXV7uD@?7Us}+Vwt-2 zS%FlsBivpg!2`h?-6&kUVyq~AK_>cga@kJTQhUM&hsyQ!-!p$ft6Vh|{{HEkh*|6N z7tUR)^V5xFBGhNfF|(T8pT=~T9qn>+#xtxJ1 z$8jq4PKc`8@Pew}P6I@#rVAf7uuW&@rhxe46}2+H7p+B>x9)#9)i=j`JC2>hW=05g znoM?K4^3fGoKDhb>!&!39BT=y8=TK0z9))5ijt(&?b4fkVQc)@-L&TYXbFiVP1SPO zb=YHVq!9pVa>_!)3r8u5t`))(3MW@px>J^$F}A`dSh;OjT!#p2`tc2HB=G%?N(2w^ zu8))poy#Z_R(|T{q(>@Z|11LZCk-H=a6VL9jm629ufY_b*zw8n>9DBc& z3HNEKXgvwh-h|W0i(q609#;0U#!-cq8HD~1$GxKIX~wxP0$kj*I|L^%ck>|?{a%@P ztft@)2`j}1R(6c)3rd06xs;4T)n{-{Q;rhgyI+h8o_mJ{VGnVQPH_IisRPKe zVw>9x2B?W3SP^svl#er*r!&*7>PnGCWC;O>@e!4-+uhZX*bD>^(0zPE%3n)jP8ca2!baGl{qrbx^W? z0?FT6`C`);O&EyeO21YH5fCUxfM>!k|IE3GDT za>Fm?o=eQ-X-Wg#V*Vry-LeeWp1wBW7OxcWE^5yzaPAmxWXJ!KH|b}?W}w`I*wWgo z`<1K9^!ZOn$IqbEqU_O=65(%k!x7U#d0y<6(m(94ZbNfc9n~AO;ZSCFmi#&_M}F1lm{Fyr5JOKaySBG4Y zN)fZWh{awP&ik{=K=Mnl_6y3flA@Tv!+JMs(kS6pbK{}M<`E#fsH~hyf__$9v z5Hm!R9Zitl*B3!vkT?mP2bZC{wJ&cT-B&M5$ck_+%FG*Y?7cc)&3xMBh1U%Ha`COa zPI58-$4xh1O=hJvu;!%MWx;iv_*vDprdH`Hn+MU`hBp@+nz zRWwc?PA|}Ner}cdQG2HzM7i{wY`wuEmdHNtD)O_~W(GV33hDQM4Rs7374g<#yO~Mv zs1}lKT!2S+mU-zekLf_uXO>%eg+<wU#R_M&qm1f?J{O-~OVP z8D=3I&KNWF8Sr`K37}1?SO7lJK$&-KY`7MNU?&Q3B-A<|{u z|8Q!yi`|!=R&Bl7h~Z&|RDlOmK8X7?aN@TL5}g67V+q9LZN%(r+dTH6PQk~)V)foT zMfsso8EIxybg5F!l_97K7b<4&;7P)+&7mKaT?HQWG?z}U@Ep)=S@1!{Yquzsl+Sx? z|0v-TFKn}g6NCThD|&w{ubCWFrGGn@umAjGc5U^@Xdr|wQ*Q$*^oX~Ml$i0dk!+tN zXSmCaH(*T17vaIg+g{4f_+{Ddf?jJSp{L*f%TMcxD!TKuuj0X|b&FSQ8TihRdvL0T zahLJ-lya^7UeynBzuPQ@AZ>zzy>c*pCyZ_6 ze4Cwg=I;yW9~@HtceB~oIM!2Ra_bQSVlgb-_iRip) z>;M|W55!*0jO`|#`oMsGpQl3(W4san>n^4d^Ddx@*#EPRS}Eox#g;(vj!AAUANao@ z0&0OjIWPu9==A=!QV^y8k|Xq%VT1i%Z> ze7=yya9c|d002kf@%xVB>!G$APai!}F*Q5bBfgdR+;QYHejDa^`0*IESeWx+&vO;? z_aw^-9{5~r%6cdgM~?9}9LBNG(ZWWk5aLTztY&c=5C^>{b+{&~Lo0uExR$%P4|5+> zE_|{@+5g|-oa6QumIuf^8t(&Ch4DJCV1v!Ke}Io^rONO>J775W;@@w-on;H)E++i8 zydfx~kbHrgGDzOo?-F$45WyDu=h@H+o^uE|Zu%Inet0-*JDW2dL%fB7c{Z}dR2n_9 zSY5sj9DP22?#WGOzPXH#10f|MI>RWX8{Y5$2r5py@yEzjdly-S3rPw z1`z@~#mC={(oN~Ozme!oc6AM=!Q08u#Fvl*`k}!gGY+CyMCmZ;~ zcF6(GQzz#Fw6Ia<6?NnA+CW;}g>7(Y_GMRp65%6ORq85F3TA4^xAOa3sbsk#4= zgnhuITKs@1kt3uFq!%WVZ}NkPoy}%|Q6N<tEt#w8T!5=Kf6{wD&vDrwk*xabDrADI=J9AiqREpb4O`+q%4v~ zMIH$AbK|jR7Zhw>ZLBTo@zOsu;1_Rod+n7!0*|gt!ljesRuBoFedlF5kmd!<`m1yt z!7R}c&XwO7!6Yd6wt$)k*}};a7SA%qu3qWTA{)%<=5PRg04l4TAFZ1$+k*W%b;NGz zsHtFwk8c8364^fvWX8ikJCc>`K*aD^Wz>7xGp3GRGE>u7mAWWcx!_cl4HSflJz{!d z4%hNzH8SY~Z*(sG97Q}ca)0Bdl@hK6e;~$SC{{y zy0(~0-#xzR=kB6%inLgR2xxj61Xc!#C%XN*kvVB2`~1ubE8yfFn*YIlXvagaGsxUm zX%U59dLp2&K!X#d9fWY%#JQwjDvcra&Bk8X?LaFB#Xjb6tx{Vfg88<nFvY4`<(Q@Qf7diw)z~l|LesU5cgj?^9P7SA6W_R+y3~S4M_X za}JsV@~!n1dt~^88x%i!I!Kme)FVV)DSk)Y78HelnxHeKb2HE<8N81dSjyulBr5MM z;xEv9k0kQnu#JHuJ}ZjMZM<7ynpPyJ-dlg4l-xAJQvFQ1teQTUaP0nx@=?p>^N`&` zRGx1U1aSZ~W-RO?MoB%KpuCY0WeHS^pU)Fv9~=*N%rueVp4g^Ugxs6gh@vdirGkGV zp73ZQZ+@N%{%ED;e>ihf*t0{YN?enV0$@>CaoJTym5P_P?b~Zu<~_R(H&@M6@baiR z!!o#gQ(_!kf@g8(=R5y$u>^kYsgC8yW0_&dQmBOqBVjS{P))1!od*_!Qp2P7Pe)6S z%5NVs!I};O16|*gu;_q%q_7c*fBD#*c?)%^eo%sEmV(tplT3yUNk_Inx0TbV5be3> zJOLdlpGPO@Mu^j25ZwbfNW6=S4<|xswCEiyEp->USMYtVGqEH3%X64V-9x|YzHwmt zS>4n7SUn?j-;Y!<+~ct#Y+ONtX0d`7yH1D+@)z|^!jn4qH4h^WTq1&782`gDKYHJ9 zJomWl7?TG=U!X>GH8NV$YdZj92M|3|9qdbRnu#fl5>_LHkw5^@y$)_x(!PjF?}Kb#q8u)#=%U@_=SWMzLz|92AOylHf(MT7nrSxe!}-E zfzUSh7OMN}1o+v*1^ z`~)TT(;lLn%nJ3wBL7rS!F$C!#e2d&pU)G2Wv0+re|vk-u&9{2<^OTgbt|BT0(+$_3AJcs|gt^-a z3uJ&r)5;l>Q6E0Uf6Y1XLU$YOvvka|=7>tHhuc8Leq&^QzG$OHDpF^RgS)|eA{SmyH^4xh z?c?E}(i_P$0!9&4fHR>`{;3d@rUYKRQwSuQulWosxW_;;s2|(OQbv`73qHFN*XX`?!R@8+;(@~E#~e6EhJa-T`gktAILn3vEy&D0|R&+40yLni#3 z)-P0~0qA!TR=^xyf9-eGw6A?_Rdhdy#eBI_UIc?tQkb|(g=#yii#dkW3UFD?Vc%1D zM?-?TDu$93*sXnEUwy>u^rbr$*uggKERyr)iTBQ0Y)KuPZJlvjPh@!uB^jt%LD@2& zaaCk6{a#bB%;I%=Q94@e$cm|Td7?&i9V($S4AJ{^UR?Qa@_zWwP)i5Yh^PFm8}}pf zG(D)^qohRx^3DZ9HK&R%vDozInln=lKEaW0=oW|iWDS85qBlnkGkR86ew13&l>NL5 zF1EeLhB-8K3?>!F1pV;d#IAQnLY)SFmZA6{knzgc8beyXo!1RTaW#yL0{g2p#Y{R{Vq1s z@7WPwaaWiWU-xOUx>`5$NRW;;3$Y)epytESa(Xs*6_G8~30&;7&nk+G+Gq7;yryRo zrsLwy8$q)4G*8BUjh0`ecxR5RUy{`+lS{h5Fqfa{NlI}}HWY+6&X=u~zF2QC%kv|8 z)XH7+HcAJ!xHC_I9wBRqxdV%*(VI6ZDNGq2m3Y2ldR5wvYk>TP<1=^}=!5?uYTnDv z)61fi%G1xTuG>qn^U{mh(@m`%d8Xf78db?DUFJ(ym*ErOcpyh+?_;55r!i`SF=uD9 z#VDQQ%BrvwY8t1_v9psjdLnO$FyoPpStA4-v@|0*#ZEJj ze=Il*=(E+o=(78?@ciHV&QU&9PHa z2*WK9Ukf*(2`7kcD(w=uk0`&j4f}H)x@;J@_^!E^)*03WP22eQ55m6 zC?W?0b@IkXbnM0M)NTioXo;Kq0Gfz|;>$~p=^jI=g&0UB&OL`b5I1~vrMp{aT7N$O zJDoa27Vj1}q6_eK&F?=qTPUR^OGuAKnM8alQrXH7175&p<%tVk<=ikdM{ShV=R2BI zi-^?P2E=LdLYE8M|BqwJE!Vv~m{TBfR_m#2kV{9ix`?K5FG^6~u}FJ@ocF@N7J~c* z>$-#ly-m+For_%>Xiai2J@a{v>in%I6CB4zJWoo0CZp%s9C#jCZhrH36gzY!7s3BP zp!|o}J6lZ!NlaMZL@y~>*(sWGBcxUHk>*0()yQ;-2gnK9IL^> zyUZzYus7m{46Kk*B7yn!NCc*9_5k`ibB<^EZW#(6*i2)MtUoP`&}BdyB?n_<+S7tB zfl1P~2+hFx^JX2@Y8)yx!e7%y>$~up(XOj_UF6k&IQ*ow)`ev`wi$*~A(Jh**z$?4 z4bhA|O+p15IxZ>e^XxU|Y4_r>5z(a$cRaWxr5@=QzpqM$Nu?g zixRxy`XrJdl(EwnLjRl9lqY@#Q<}2Eo&#~vo=^ud@#3ET z^f^`pIASXp)ZB~6{Jj3eVDU7$t|pl!{}Z{JTJ$rTxhV^^tpx|-49j0NC%J#l9G%lN zTd2R?a74IY2HJ@s=$$I^Q$8dOIgTQpk9+_+L1xGq}1BT2iV#d5k<&uiW;Iq z;-=M|`>(TY74tl}DZd_gEg(Koo!x1^z0KMQ{#ym-O8q@lJ>iY{GGD@D3{qKVjgY_G zm(ZaB3)m~aqdMKa3>?tRc;X5WJAFd;y3iYmyU_8)G-lM>$Y8WnW~9oArr~#2QFye< zhZvh<$aPpv50phrZ)MW^lx*xCAJo+(R(>tDr?fY8CZ-E}M|~N1mHLTTAa)=At$DCM z+O2SKSt#O>2S(#R90*Vw?P7{}LQ~Ei^Y`uS4NT$Y-0l^DYl1Ed8i_pRP%HKYb1U}b zKx}A5U9^}t=T5aoPc@Br9`QE=CpzhA*s#rNx^2QEKmStB6T&R;cyU)1y#2XDZ#xoi z`&m0^nyRe^FiyX)+cxuheQG#NpCm%P`5Ie0qKY5khY9c7;(gxRLHg;|Jqn<0tE?H* z@HKel%Wi>Ira*Y5!bX*Fu63Xfg%Ovs%^s3;kBjyFa~uj7>YsUvCE!Ijm%1^<6gAy8 zPjYjY$~d1jLUQ0%UM$*ZVONQ4F9mgJ$u3kHQelKmAtx)`A2)cz5)|>NRr&}=yw3av zJp%S<`VqR=Q$FIyv~y!(?IIJ4LLp}o2{d$P&^^(=k_1YQzlhb)&iQT0Ic$wt_)?_ zSC{azk64GUitmAF0vRJC4mJvJY?FAK^b|{bPrQE+1Fx4+xeAi?T(BR!aWrafWZk`W z84_VtJNsCPCmjsx$-2ztp#u1)|)xer;=p>(tz8gk@@_YA z)NSOkBgM?E+tF-(ch*)mu|cBqtHxq=<8=`XyO`9@hiM;qkgzsH4irhCy-vje5-&$y zuSotX=m}wFIIvRENVRxyi2ZTr<-|-OmF_SFKup3)e`T$#jpDN)l7flLP41b?4&xgV zJ_i-E^ow6s2QS1hN|mAxLwLvXSgZS6%UaseN4h%9@Jb!d@WOz6UiyFNWb3Zco=;in zT*=!Kdw7U&U(4c?u3qgDTZU>vHIaQ)Ytu6sbjwp#89H7~(^FBE1{jy>5@CpmC*S*R zM{+_jYN6xr^J!+I1Y_y5_zq~L&cVdqQK;8kC`;gNeFR&;WZl|D%@d>GQ%J~V*i5}@LFYlb8bI2}eXc&svRp7W1nWtO! z-7^-v=yZD~-qX=qTTj|r30?)9$pd1}$nYN%Jntc)Z%E&w_7{v-$7mI!ta5Y&zGrdR z7nv!kOVOpf>4sD~Xp<-Sk$LsXCOcHn0GqstQs=0O#s_vY*dqXx1y(w1snbr^0#YM- zVB*|l_)S|yGNj|X=#GjbTPyWQ`8@~(I#BB0(yU1H7PyAqTWJ1e4k9>4F`nTa-i4-L zDSG4z3g{BdS(s?k;q)J>#uH+HNlD(rgu~-7MY*^BIv$@%Gm9l0PTd<-qWCIQS@C;E z27+3FsKZMu=<@Adw`i+pMpTV8)kVmKflR8ITa7i|4N#eWk-W{NYB`>IE?#7Ccys?J zQs?SfUh803FlBu@ZeY&8&CvBy2a|NCDorQluQJ|`QvSoq1fFNJ8gE`(;bL(aV%qT8 zl`CpXO?hFoe;bu=?)r*rTa)CpdiQ=iZdiq}zeWeVaY)M|;k9GIa|m1)A}tU4bTenu z=a?AqM#;^2*0`~zF^wiKw^?wZ+Cyf`$u*g0_z&&!qPni{#L}WRigV8RW6qi&{!dJW z7S&k6&*{Ng3Jrcaz$gmHQhb{X#~wRfV)$v_8gK1;p8OQnO8M}YUIQt^r>@oiS44Ot zar#$((nD~mj6vb9<&x_Gru|OA!tcAy%O#PYWH_GHQl&@cdNa4?4T;$dH-ItoH6P&={(TUR`PkX)Ombm&cUNysiMX*yxaz8X z^R~0wVydDDB%jGrCe6~(jDV5sQdBI3K>*s`$tC0tY}&_(b6{T7=TuCyB|p7r>dlc!8Ir1|R|sS>sEVV@8ATxJRvL|p@xdfq^X!|s2}O#o z4Gua)@EU4!K~95>!CPMy1!W!@d9k$7w2M1au=7ri2{FqufWa6JG}!U=_Gf3KTA5b9 zmGbC<@g0%;HY@AU6C~5eQ6sdD?CcDh*`1u9?K?Hui9GUe>`tXwK*vFL42*qx=9PiV ztFbYaDp3B9&E0NzVSmTAnmrAubnty@RP@zNSn<5Dwe%9!=Hv_hn-T}7>Gbwwoqh>#C-mSg&n*W2I!J^(MjR=er@km>wQRqqz2M%5BlI={o~zf*2mAR?I`jL zU~Waezt-2c7x(U~)1i>E0tq~h2lf8|8{6Lc_fh<;rsNP$^taRceowu1uCgUbP&q$d z0RI4c{{UOxsn@#ktZV+O0ms++{{XT4k?(zLuKx6YU-0_>0LK06t@Z!c&^^WP{{SQR zUaWZak3s(ceg4PZ`qy2BBi_2*ddQ>wkJIt*-FS3n{yFVd&2DOGOl6g3OC2}*FgLgO zTi%?}PfkWE-E52T-)D*}brX2)rZ|bRfI@`;+QZXt&$1h-GI}uRvD{{R~wV*7Q`8jgdK9ZtulDm6N;f3h$6`ulm0RRX<8mO|2L z1A%M*0K|drfOWEZSnZ5Vm6Z|MId%YF=sDw_exBHxK#EB{DYl5a40Jl;@sUs%^~a)B zeF|7zTl(Jr08mHJ{{UZPlFnMRIOz5mbW)=|8eXc~RP~kgb=f$hj+b12xhY)%MTs_V zOpZYPKh%$5{mS&jjFF!6(35Vo4(jeZIu>_lZSBpwB~CAC(yJ)+d8SYpOaTr<5<*4f z8ch`-fH^ay#>{LbdjS;8IjnjF}gG9{*0DCUuBmU zF{xkkg!09RnII%__w{s+-QQQ zrsVA)w+?_znvB(C)O%)71x;W`$n;|P# z%!1 zEXbF!0DVXU=zrM$eWxz0%)Cg?&#Q=JR97O3aq{Y9j@&}mb&w>9C6A<$r%MriJb-WX zH^09Rcz z=;@hSk=TgLswAU+0l(YS#}Ih$^izLsLK5Zxri(g9!^*i+`7i*FmrPt1v$z}$zr)pK({5m%-c3uy{E7Tj^x^h(7z&4?iWp*F47F(luvEBKqo;O} zOsk}jWYWK;;^f?WX;GRq8iK@Lj1Q1C{(td(K1@k)@;N3|jIy%uW)w6(Eb;kJ^y5{n zDpEF@#9o#!)TP-3i3ymNw4yIj)%^#xGOn4Ht?H}!R0{gjKbJ{u%Crp1pVDp~bS9pa zz^75N63I;+TSSDeJ!zXwziL-Thf*S-EJ=(J^!lEDp4z!*3n_?H$EWNhQllR%boHcZ zE5Iab8FhW25NJ()f6MLZ#D0$*A@T-ftaOozIE<<>Rr;1GC;Gr2Z<;YF5#V(Yf7R>K zU?_Y^#V}A1FNmFQr(1&nnT<2q|_fWGeQ1C*8tNX z(m|0HDAG1Qg3?@uA%8}OAJAX=d!<=%Tu=eig<@k~3|N!rkMP&+>PVSU{5k<8Pp49w zpN-Eh-{J25HkQx_m-7DrW2Oumm&MhJ{{TPseqA=S(lfLs7JW*s6Cq^>Mbp)8 z7=k$G+9r}#a)D|H6#TK$;S50pn&?3_2j`x#xp<>`g@}nH5iE$1vla<3W@4eN%mw)z z^X{%>Sj(!NWDhSxQ`OKTNRYIH!vv5?r3qROv+O-%tNWLiR0PD3r0y<=`tF=TPC?{=j6kkn1 zc2r?xdm%vVm*kORw*31pxtc>F1&HN-e!MtShtJESOG|a|rST?QJ%0@{IE>eikRE?7 zvmAsgO$?PGQHfM1$W_+H!c}h>@qowbZE`-o?k?G31f@u&X71f(xAdjK;{7f9IWw3r9 z^&I*1%-UlQC|cr+k~T3IR*GZYb!Rf|O?lr47}g@dU8ixchGQgUQz zB^nh@519V|KS{1dtVPy=E+eVSJ5+y_0IV2=H3|SW1N5-w>MQ|2OZ$E| zX98VcpPxxy6@;655$C7N{x9X!ZzGqG10s}WXzX~@89gCCHz5B2t~vJC7JMExAIkuL zs~tb#s6_ZpMGx#bC+w%^*BYwtwS}9|Whm?q)B>w_WBo>-_n&m0>7k72BV7;WPCv`5 z+Sm)3R2uko1M)mSpG*}Mt*zN)1eA(5Da>+7Cy?q5egl-!598Tvw=Gh^`=|yu5^JB% zl=*adZ(yZW8afR`it$h>kH{MQ`bI&zX=`)KO-jsZD1)jrN?g=c>wQw%_E=+O8gKf( zqmOa@$1_KLy9;O;zLF||rzPH|t^Sk{G}n(F9Sg@TOJ%e)*D5}$T2vfqN)F$&f^}1e z4u;HT;GwCfh_s{4q${f_QXFvKQT=_&8#gt=_K>9Iymb^c29@E*sC#zhd&q8OF-7_W zk|;+HE}WXCmP_2HH@D*d0PB4(>_r~)Zs#WlheXG0yo_KRe=d-_zhLZ5^+P@@cWtZ& zBTIk1EeZVV^Bqvv$lv%( zk9h5@ZeqXV7kq6_&ZhqWDVm36_Wl^`-OAyaHM|rkbWrKzM^( z2DcArx3spJ`;>PJZSv7qSNNk7Fkd}Zt`^`G{6%AB8SbWfXiaBu$PB_YYz;(arhrru zwI-BW)cSN=GO%GN=+R@S`^v&SCMi7;f=^$5u1~nKNblj1;kmac%Yq0X{{TK6 zdPri3R1;p4anii0CQ3zUvCv2oX^qrNDHjkSu+(k!x4T5`8;+694~UG^!0H}TachAh zp@KLfh?WGX1h6-_RsN)3o_(y54AJUio|uMEji-Y3n-jdU5hCh%?kor(f>-NhA+Djl zyJZ;4>ggrygVfPIsJath8k~oUAOhUUILhl5isbU!3-|v3btIG_SY;=u; zQzc60q`qqyF|*&7r;(3}W)?U4h}eD|LH_^`XAw=Uf2Gkh(RgkB9-rrm3LT&Opb6^) zYKm+L5=ze2{E`%ZtS#?K- zf^>_XFa9Ti$0zacb?T&gbkA9i*K$_>0A6fAr$3L${{V09!1bzpx=+o94XKJ)4@l#S zpY|M&cduF?biq}IB$1#Fc=VssYkd#od*4;3Ny@w{s3ak`Hn{qI5Bm}CM0HX+P1I02 zH_(Ii;C+7p+uy0zsCt9oVB+BOVS8Wm^#1@`pL!#$(w%Z3tDXS3BjJ+uEN$J6U8s=L|2xPJ2^c#Kw=G+UPdhwS%Y(jrNqz{Gp zwl)w+^ttqL#s2`qfNk~nuN^wyg55Yl@T)q~DDX&roCr@M{Mg%*&Hd}@6RUkYdUSOD zJ$zEC+SL^EO-}mt2PLBd#{7$YZ+~g0x>`^ko{9nuPgfP!8&~)qFb0UPjtd|n!GHu@ zt%n!q{x$55;#!l@lu1sqZp>X}T@>q1p1BdO#B+AJ1X{x9{b6DC_FCq(&r1|js-F1| z(fhk_wnAD}k%pN#2*dz&1W*U$lVC6HRig!U_34X*ET)I5;Hmg~*mZNwGSN=ny942S zoALld^%wWEEJyM6v27so>6JmeHFDaT8y82q!# zqtOsh2vYXa9F9Qx`zpM;QfgjMK@i$ULh9Dv+qf5n~{Ma5*jc z`tj_pS2|9No{ZpztP5}*JLk8Y*v4EgJ?5o?o%OI5Nd%0xDx3z=8vg)}J(09NE3>~w z;&OpwLqXKtuePf{jclwx3*=HJ5;4}<Zt2IzStV3< zmbno5!?Lx{rK+a!+=o)bNGI?>9@EbhBq&Y*bfN~FYAxr`v5l$8ZV8&REtYE8Ac`t@ znqFgw1PS8PVzIT+N#gcD*V%g8#|qID1t!0rMyo869a1$&9W8NLYLJyx@X8}JY*Caf zS7&4?rAGl`8n5c$AN9TO!0`ns)%;x~o|>>5H+pvl;fD{6qpiqSR!mkn5}#DH05~r3 zm9Tk&9a;gqDwFiTu@2L+c)jFljBzKV6Wp_!46*BC{{VpB%NqyRvPHkUW{x_n{M2TK zO}#qDSB0pglSM^6V?#2&n&`^L$l$0JWg_Q;$+ruAzBab7KdJbe%;U?Z(%M-FcNHFA zx6`ZQ+Vps>ua2d}VyR)H$5FzmO;1dT8pRxH7Bvc>DN=`z>OGRJ)05uy^Xb{`d{e5O z+&|U+UY}Z4kx}eCP6~$96}jbad)To9{eSk}=tV-3J5NqVs)c|jSn{X(zI||xv=r5+ z^sa=ETKD9sE-!I$^*nppJ}O6*0qNI+x|QN;NBbRSp{}SBN%uv;kqgFGnAM|ov`lYh z^Tx^n;>3&b?$Nt~#!A$W$WZY7#Xpx?o)}86gGvKK>S_*tdQEHVPMp$5s{1;Kq*j;C z)bb-rA`?dbG>H|sQBbL<5KlTs^ySSaPXwd4BxTlF%4jN~gE zXUKvUmGuW8`Q&s^+jLCMu>$A@s;+9RrGrzA2*VG;bJNXS=}xA32@%vaB|NjiqM*?` zf@7>kB!;C)LU}*h4gUZK+PNhQRs@t{p@_*}Mjs$)Uzgd@bTG5hFb1^@z%^H0IHCTL z71Q(kM@hOxmI}nZBoZ8YR6C^$g*p}DlAdZfq_>hOVv)nDx9zr@aqS#I(bOzzT>;^W zF*RCwpP%S)BC0ClRX&R++~ z%qFF&r1dw7oKi_5yj-pRmiC;ik(i>T3HYgbg_PNj`@)$|*v?$?R z@gK7wkF(37s{u70D^kS9abpFXK5AI4OimF$$!VSp`>Sovs45IzD3Uuo&|qz z%cAoXDIDsHL$5^%$UqHEcu=(|{+H+0c663C`-r?Bej*bUxG>bf`spKb2?*~9EF0+B zPq!J7kO_ba^wfPA8mK>(Yr`Efs_7x{A5n_BLGxA=ay@8pM-g7LQb{y{lPLm7VewVd zRRoN0w_s;j+s6Th7$3@qrmhk#YHZx8YNIVaV2{eb;OmmdBvUIF zCK{q0XOm2iElB`~ykhE9Y1V9i7WeHYHdYPV{{WfQ{;c)AOC)SG4-!5gU_0BD z#TrNnXITV@Uf?T78BoedWH&ZuKT~V_v`mZ%s33~}0IU66dTvcNHkfm4rdG_pe(-~q4(;sKgq_UM)m%=1Hb3wrT zx{V4}y=11Rz$l09(L4f4U&a6><+6p1i64$EJ<%bM%<{<~XpagG1E-~u*=?gp6~3p7 z)PM=}9%uYLXDKvoJSBwF2w9?@8fJ|VUg1%LITK31Q(^)C01tL#VA3KIMw}XY`F#3p zG;FZS%cV66scP1qd@w)3*Hq9tK!sUNNGs=Xk;fXA{cd8j>0@u}?uijt)CT=Q#N+cc z_3G0~tuyLh&_4*NC*&)Pb&^nuJhc1%Voj;R#L zlGaOlomI&`o@0+t=8jzmpoeKJ6`f!!D&N=WQW;4C*5lhR8|hUIljn@|t|yOEHkvB= z4OsNgpItwtpc89=#7B(;KqC%V+$%rnA46|?ddA4IVw^wKp0t#8l*L93#MeLM>J!Ok z97imkMbPppkPx#3GKH~IbH%>C(wRuW%U6$}@~=vSH5sa=oPl0GbnAp{M0F&UK`Jy- zES{3`YAQ;^PLml2fCZ1btB|si)Fe|rXYBOr(nnW-0bL{!Owd!;jedPZYI;^dEO4Nf zHBC(ndLxjjPzxkT3JCs(@(&~3Nm&pbAi9B?apCAZx_Me;VvOg*VsK7J9t51%%l37c zV;P}hC#ay31q_um(|y{?%m9!wN~8s0#{*ZjG1?==BDxZwV4xKVn!qFgGl3( z{tgD7eM^R#t}@FfhI(?+e&j>I(UvCRM+$CF(39;#!5}Q_HmLJj{{WEVq|#3V0Yqe& z0q0PD-aSZEZ9yAFg@F<-hgApAhE7$83`qX~A8sm~D;!t;D?K#KC|yCX%Qf{h{J&>R zm2~eZ5b0u9$iRzfX4Jld#=}g25J&a)hFDq1jE__N$M}5uH?^H222jH^A3g^^mk@dY z`-^^-58$~{6-&Q&q+M9w27Y=uJ7v)xVY3e;UR^QZytG4}_USC@Hu`te^)#-9yG z&PLKt`%u+dW}~T(+iq5ynt6uO%*0;Y9}$|B#A~Pw`LS9xaYNB?+5N+gjIWA9(mbJz zfO!#O5wDF4L}pfzZKlBS$N2llt-GA!iHM1akhN>XPz(%LK3}t`znFcyyO0vfJTSDU z0!?yrOnLs^j2;`hXtbueEE&y}p^<)q$5D9GNx%4yW9_@24Z_GP9NiR45kpBJApE*aZk?-z-S~R_ySn!74|DD8wLG+W95!hFN1a)ZI)`S*d zX_4#Jz27MR0O2#g1UvV6{{Vfu(z}2BRjaP4nx}E??v|HtKF7>UIV@^1`#*Q#^Y~q- zQY0mh@Tlovkdj^|V}E1meZsolB2?!ciqCesKmyMwc;~02lETrn!{;ex9!xsjv9_~E zjtS`pNIxZ!Bvl@CK%ktOn)FHgU;Yw_g34iNF&#nkQ+Hsf@e#_@lzpGn`(Jh% z+Sy&5=gU{@yr*ADC?nE^Ay!M=>-u{yx7>LGSz1lYl4p#u{{V>Bj)8yDtjRy;QfuW- zjK6v}(})$tbW>9(YMOjhQy(5I1w8cW94gPX{{Z1Hf6S9)Q{*dl2I2Ve-Bgsuf3~B; z?@hz7w+NhiSGCvL(K(BAv2tRrtIF7`qtDTS3BE{slI(^u3Co8OqZ2iUAkM{^6>AigCF*i$s7Lw#(F^&=u*inGpkcIiP(R= zAZ7iB9(3uG0Szv8N%32>%eCrpi!Ajx{m)5Rw=*+M046w}8=8iKx-Bv(3|$wHNBYEf z{E^N3GXZn4Txmav7sX0{r;A#D#=6?vSzVSvaGI1>gz0bC)IZCh({=8ee5OpUG2?7? zAV_J9L>Odb8X8FSlBI3HBkT42`zw1ZyG+^paDls-w5dHR*;r@9M-{ z{ePzi)qn6F^vcVIQV&elygG1(tw`m7`W}BAn~~4f-|v3?UbRlAEQuw6AdMt(VQUK# zZ~6Yd_77Sk&#xL##^is1{0kGo02{ZvYOkMK>O12VEIi~SGu{Qm%t&<;8GYV|;; z&!)P(DzN=1Z*!)`P@o#qqolx|bn*!?Wd}IzREo1#T zx8(l-kGh_<^XWfRjAbP0AnN+s!;h!>!{4dZ4^5KNx{s&RgU!CT_o{W^I)q_$Jlx!0 z`f>Os#Qq1rb?&nylBcKf{vVI={{U_E_o{X3^^N6`zXV%>{IdZC{C^*xZ8V41tA*)J zMc4arn18@a{{Tht*pJ90k#F$+zS%O7=hLd3IuUStKM6!Zjj4yG>PC(L{X7d1q#yUc zY)Lb8^2Rz5BZiG4`*@0Jy5Eqa^xIGPkMX$V`$X?kUX-W+Q>UDM3YN75WuqakG&86+ zH)6z_8{BdJ+mC6T`h6C@T}hXvF}b}FNew%!jj4eM+L&>3a5d`Ge2*c%8*R?1Y+X9o zf)9lWI+S|70RI4Qo^B7c@@`Yp5_Ixf#p%&l`E~L4W^FyE36~v9YIFBfLaQ8RSv*B< z`T~X`K%^h3xb{)|+Cg>@IW5tYc2Trd(~hfCcJ*a4Z8{8Y)uyL489A0I=@f|PH4^Fb zNct^r2;i0jgMNLO$8{~#%FV)`;OhPYMHvI3x2FCOE=dt+b^K#AoH#t*oATC~$!O-l`|Mc1{9^v$q5xA&QR| zSt@xV{{S~Edj9}mC79jFz1#eKmRRnR&1kX_+}Y`CSwIjBADS&F~_Lb+L2K)8Onv4NkTdMnRP6H zwbcx2RBB*BvA-VNbkL{5T6EelW*#e6y$ac^ytEj~STQk}sikVu`^KX zjbwru7t}~MEX;qjPq%j+#44M6QAii|nt7kMr52Xq=v?H}Bj@G&da`OU1Rga&sTt5C z^n!^W&?0^eU_aB@7+@G@2mN2=>2oV-G#M4I`n_?}jCw@AhJ?b1Qh#6WMj395pq@b_ zf428wq#CIj0HO6AXp&dBH;7F}FnxOETaxB%@AB0ZLIa19S z`hG|H-0C+eq!Zi)L8lSuN7>Vp>3wD~*i8s0Ao&n}-{;bb3WZqbnPkxO7~`gmfOrr< zBX){yM@)sO=L8ULR9or?wL)bJBLhOzr9%H$9 zdgs@tj8fA%dI{CmGcgyaiJCAk58N26fXs2G0j&peUm(y2&eH*m8N+~fvT0t{?)0Wucdg8v##mr0yZ=>a?C2KsxMJXDu9=1XNz2oq19wWvMBl$ z1Cj3O68`{;f;B5K$UkWxJktZplsWj1!aRTJ_a#7A0@uhI1rU z?W(3@Ay}v-V>%^WI!Jt8I*+(9O&x(G{XMfitR5J+rBVJPGWj3h?*6qS?cK#5lRqR6=q)@O0vZB5DP7cy6X026MaaWM!-nQDPKyQ5sLZ!mFTKq zZ2pt#H5if2bLT;oAdozcIMb|?MfPt4K}QSHt!On0^N?vPU1UU_Fi);2O`|FJW9`W` zBP@}kn8W0HHb7za{3LqySdWgfB(t!X$J#*nkWiIAgnU5yb;fLbnyQjAl{A%fafx7g zSv1U~$ct_o(-{hVeLQXM~lZPjydFldN)$S2NSts*zySO748p2Z(@_O{fHlbbI^D!T6>#gU zsAX}AkOyg|0V9oR)0hbwhmD$|js}V}R83|%RrJd=b{d0oZ6}U6_O6|#Sk$y&fCtPR zkNp-Y zWiB)|NK@)bIsLtQYnWLBs<+fGkV>3s00E!NsS;C_Wt7W3rGy1o*djqBZUFQE%tHfj z>Gbzzi7Fp8E9=06>CZ+{{W?e-ZI`x zu{Smx`|*{aS5lQE_Tr!53_)fxUmcfrAqgFx-M1Jx4e{cD^yw0P;52TuBh@tuV^(rU4(#aVws0jRKP*N=m%C*+WNk5B|@5sknveu^` zAx^0x0TgK<0-3EcYJ9zV;EcgkMvEkc%1Y*2s)lRn2IP>x(}C|w%|I8|J#Eo-66A%` zP$|}SM~$RK9;Zv_8cLP11hHVE!2bY=_jeg!rzCz|GOQUl1vCk~-Z zV^Do$52SWq_U7K&bEYv;Lst~@uTP@tnY%$+8rRC7ZhFBmfXu*3BQb?Gvn}81S**mB zztjQknIw!mDX6FVtJCo;-V%_SgMN7Q`+nY;>z-z6cLw*H_akCd$q~4J6^VT&*93uY zW%n%Y;j-jv$n_p{{{UyBTR7rTG7+6PK8MP_Rr?Q7TTJzH#RC|NqRHwYcu)&B>IAsB z;Qs($$F^7*rf>mWLcbt9{@?Xur@-)S;&}jVB#*TDeV=FZ>y(kRDmJx{Mn#kB%dMdCmm%79Zx+1) zx&2mf0VLdudvX~N*8y18wWde-dT#D1W7DjXm;#lhe=Kz-nsZAl2dRwHxdtn#5jibp zNl7gjW&WfOuh-jbziqKM^`TW5@mr`Q{ zB#P+jq_dEtTZj6aX>)bwiw|!`j5VoJa!x^#0O|SkQ>!C`x1gre|bHr76{7CAatNx-t&(vV75tzsvlmN#O77Vw(lFPvt z{QZ5l1r(iCYI$_?GM4}*kzOa~>rSiV`Gaij+neZ}*O}NfwRsJ}w`pL{(qbuMy>?10 z6-;?4=;&6&wPc9{=mXTm*ndxPXSuwl+}E(rYi!yl!CLUDnu_{oB=wU&cRp*e*m=g< z*LY=<~6@=7sXE{Jxx6)-N8IX{Pgn2JV;id zB|?lDOo7#fwR^yg%WK?r&BA@Y{t}llwF;0tyv2CejePp)FxxCHqE?R}{{TscAF%%b zfYYN}w*FFiSSnS;Cb-UpNEKALRbk_nlNT6m8h~p$f-n6&tFvpkSWt?8rBVFA=!)}` z_W6(#9&74P@@M}5A?SL+{DpauYM&%y3*%o@lBh;~0zCnxodfEy)<95xr|IlxWx3r) zMrm53?f(F0KRR>}yX0NH>k`_7UqCa)wZJs_SM2C|+W!C|)@dVF&PDjNVyc%?s)Ag2 z(yB7fq%&{~psBOvvNJatHdpW9|O{KR^xN+PhMWW3tcsR^#QJC*(Ni<}TER}TEW{DQs}&&I{5{B?Ig{k=kb!R^%6 z`iX><e2>j-4aS z(aOaU(Te?a@<$(DKBL*BTihfs-{=Vg{o~rj+@dt^ z9T&deGS;eb*G^)7F2Cz>Z}q>gx5dnDKv-9%JQ-6VPf?x-h&Bo>{>R>rhQQLDTuC4~ zuTUnZ3@!SB;D)(h_QvDdRzeL>ka|#({{R;bgRSG#-EF_I)p(ul*ZU)Q<13+(n!6vm zHns~nM^{fMw2;(6k)f!LXrBD50uQwo*V~nxf?F-dXr*2SU4aMf2dnsqz^svtC(EkD z?yuxo{H}YnOHrBlnXvXQW<`{Y_e;%~>Aa|xT}00z>)QMk4ReVOqADPj9h7QT9D5kr zd!f&E(fC(e*Ve!VG~J?Htvv^hucsIVXh7gcMY8PMJg$tkz8M6OpqRx?Yfyzj<6i2D z=ZFWYHTg;Z0101gbp}g4@XzFKN^1IOntBef`42})TSHvPE-~2N(AoIf9F8TVUrI@k z#bk+VYjMkaG=rXbKY5X2=6+c=QxHdwVn_g<4A#=KBLII4azZJ?%ch%Sy^1>6UI|ve z44_w!lc)qxR0^w;ik>9u!{2=e-hUQ5BEP8qLv^0y>dpO+4>VZ3?Kpg9;KxTGkND=z z+;nDa9`3+M#9FF`c|>J`Od^)?g&VgkG!~z}wrl9G`F)y#Xpg{81e!D743zvX06bBg zXQGvuiA}A{FBQ_@s{@<^RBjHrrB<{cgF*-aTp1Fk`o5PO^T*cQ3laygkISdXpy@$P zlS9BF{9F79;@9T(A5ZoD`>hV2VX2By{hNTcZVivn{{V>k``)T`qvzIlRBI2Vy(ZST zKh&OhC;h*>2J2l!YC#}3vHFw!dEk9d*N=DA)~VBUn1ywA(!Y`VZNqH)s z)%$pQ%C8*Q+W!DR4gDjF`*0fdLOy*WYj8}r(x;2u@<;f8tUd3oQ>3j{G2tZXv9}_` zeLu(R@6_wwT|in=KBoTw>;C{>&m?=VRi|A&HJ9iQ(0@(uMs0sjCd+w=AR0E+(rkG=Kke7gVAq1gUQ(nrVML_UX^Z_gz1Tl|05_CUyb zHw-b;tRE<7P>WY579Zz-);Ic_eJ#)D+bpfqip$fqKPqTc`m3Yj{CRoj>&S0OVlVB6 zM)c{>%j?po5Au$hwx&9Gs}-5b*eutu{{U1-=j;C8+eRm;>A=h7(XH#g&8g2AnPzD< z4lMV!vObmq#EYM$y|&3toL1q{m4`VxQ!6ne_SJy|og|9_E(rta?HstTN)yYVw{rJH zdtKy_>U@4ZcRoNaNw{Hd4b8vUdqE>=Gy^>-Lry$8!MA=~(L*4TOqyMEm0vx8Bhpxd z!&n;&adYh>#&eF8Bk-ZuGOrX)vOHjtt8hWqqn7=BjH6|M7j5?9Gz2Xp7z3m;$X%&i`Sgj$ zkj9`SORzg>#Q4}r?WCB1$t!-Yp2(xZ6qE9`^lC+x~G;o68`|WSwRNK z52TA+4iB`_5J3Z{k!V8^kITP~`>dL4 zfJgv(6DfKXrg0k`JiIIr6;^2>a5-2(p zW({(hK>dxY@fMj^n{QaG(i$l=1jXvb4&s!VMyDP*2x@JuN5 zzueQ(DP(p+Y|W(V^xR!P3=LKwz7m{8L-12w1f$EOae@oH6@Du$z0G_x8JU$+_c zBB_%B06~i7Dk( zQTG(k%c|DZ={Do(?dbI^-WQ6i38s!eB0=>~Yfq7BfSsV%`_HZZ!Kdnc0Jb86Y0-N*^&w z5qI}dQ&AHrE&3dx2TOD9$Xtd~Pw{3`+zvQ;dXY+=28OgfHFFIS^0((ar1DK1;5jj@QO1Q`spbMrE=g8U*9PQY+t1@7LaQJokl!Is zLz;OJUsKX07V^tGnAlND`jSb;p^R|`o`W4bt0iBWDYR12R>LgDo_N?aa|8wEhgmTL z5f27ljMBJ^5fl4UXhe&giQ!9JZuJ_c#7Z}XNPTlDbzZuXNs1i z&Z$>Q;+k4du_bGyjo3!vr<2hX#Imu|!BPEBx=*QLW~YdRsQ_Tm;OEyM{{SwOTQa=y z=q4$KpvCf_jEoGCf-~p#bn8hB(p00tI-^3DfCU6Soa@v`Dt)SrHA}3? zMabctfsfmo`t+K2Sm9)KV%RhsDhck-40h8Xj+|IOmKj=jqNkRfiHIo@R7o7lRD#UP z95}dR{yyLMT^*#LWZ~SC-%?vqcW1Z*`uk5Lnt%w@P(VI|^7+@L5k}?9TqR|pWyV-=8T0^j zgLMkpB+ummb9hAzxF2mOC-v1rvM0;t?aPlQQX?a8Fb1qiNBt$jM2)N4FYnF&av zW|}kr5=#rHXBN`K>2K-nXNHc5TgxDHiDzh}kS18r6aL4iT@rt8SWvr4!a159EU_Yk z>SDotBmJZk??+PwbXt?fo}F9;8sm|u6jed4Pp6;r>E@YG#3W5E8*)YN%;4~NBI{xF z9@fQ88r0zQSw5jBhTw-E$aRc8FhnkbHu0waBmR>m-q@q*2JDQYN78BaKTb z;1vSOKf|AQATp?7fH?Hpu~(7NxSCK@;Qac5JSJAOl1&)XV=6lZ3VymTqyR_casEEj zN{Gg?6Hi{3K_`a4rixm;2poQVdT5e~Ak|G8yzt$h$>n1zl65whcarKy^dx&i(8iUH zDC-taMoV=hw3LCt7z3H-7@Bi0Zd-BBm|ggP#gLS2~?_5A?|2jqeWwCWhh6geZ% zir{hkI(3SwGqgHRat#Gf54Yqx@>YwJSqD> z;=$|B*p00;ij1{${%^D}>n$Oy5}iUeRg4BnEgZ<|*H>4ImQX(cTzhsjoh3DrhMW)h zanm;+OwkP>)V2!bQ27vebnzWagwj{TP|QIC_mqQwQ@KSNTo28S{i;c%p+>~D^7Q%i zTK3WE)()sC=ZyS?c#gXLwni?11tRS1#NO7h(W=Tls8SgTVSs%4X@jePt&%*y+3F;y z6$Q8k%XPPj(EUgvGE0BG`=hFbr;+`X{hd7<7J8l|_JjL+W84^Oe1<+sNn$lnNfRqX zzKKy?PbsU5i~j(JwDZ6UfQzYV!|mwLYrmG>=7at8RggHK=e9<-?baQ^@W`$OX= zWoQ0Vbfy}wHPd^ltYmu=Z|&@StDD%lnI(BE_lcmSC~`P_gsrN+XcW8>A1sPg$smaN z=i1%7n&UUNL&D!scB!CQRDJ+yhaZNxVMP=m1JGY+{ofnL)o-_5&KG#Mj491lMI0C! z)mRJ=c=6%Fue#gha@WI8R<&`?bSO!k+E+m=N~Oa!NMfuPo=H4$^}aP-^0mg_JK9}B zQgt*Sigl9vXEH^2pF7w4K_b;ndNddw>uBJJ8oG%jVk3%IsjOhA;gu=EMv+GPff|V>{0neBsY_N| zP*bFmTgL5L3Vnl*txrR4)%gimkEr!mNd-E~8VH_hnUIrVFNrE@iMzkkfoqUYAp1}j zNR3eN=(h7>wYo$4YF?aZ0r_wqT^tU(`8x$H(ImOXBxr^xl|f01mhmehMqU|9#&7E* z>#OJwvkP7F^3j#Gwvmc?e}ftM{k=xK!^kk-MBm~{PZDd9>*qo#@~@{yk7ay|rODGL z+*OoDDhe5gr4ONuj$N$7`U{iv{+`CWXFAA0S=`g@{k%{3IPmHM<_~LD8Ck921&5tH z_=*aDGsBNV?i;u9^CV&llu&L~FD-1c@a`rE|mQ_8+$$1g?2Ta_t+%r;Rc3Q_JMT(wXT)Pr50e zN{P_BH%y)NTa*9W#z%K|$LLZi0fEslkZwdkNe?}X-czL|GVTGSnBe%6FSQ0J z#R~Z$H~9W?%sGHvnor`rf;hB)2Ninkc_zx%i|u-QRo49DO5NtK@U1`LZ=@9C%A4wp z5`~wVSDZLrXFWab_osk8wv3t&U}JsJ`Ta4v^$IZm1Z5AiwCkBuwGHHuZC1DW4#7RU0f| z?kgGmu22aBFi^av$UXYLlqayO%WIP4Grp=%to|Qh31k~Uwh-)6L_wQ_MN94BZtdec zij&Xrfo#Eb)*RTbisI%9S^r9cNrdWGj66s8o)V(Ujmtyze!;+(RAUd2lz8rqqmWK!x~K2`4zJ;sFMbMw$D*x{9p!Iic z{{cRR9(}W64&I0l4Ia=o^VekMhc{!wuFLB> zc6!?$8af~HeKEk_PA;Xm7QbVowvxg&tectEDmPbw%4}Cha#%)n($TDx)yQ3_W|MF+ z(#p?=%qr{P@~z8e@xa2f1td2yhXGzFf09o~s3^LAUA4TadSmNbJG5^MC#;lXw4BV7TW{g2pQqR zauu(zG}j)ht>s=`9u->>f*)O7>x8uQGcoSW3}vmQN9y<|wzs`E);CNZeR%<)GgE&f z%tq=LKB^B-3x_BvU8jrofagEql<{@hRp`0TwiB&{q>`G11b+&&OG!Xxr6PGeA^y9} zmRI;4_!wd8-uZOFV#$cq$C=#*|DsydDh4>t-i_CqLGoIC<7h^IK z@E;Qyns~Y=ioyt6%a0%q+jp{J>J-}3F0698T5BeX14m|c&@B8rD1F~paYqPRm&JiY!Xv4I6wG)OTtGHB{GFJ{!tT+xy!n}4% z3}lsfV;BqVH*rfkas5|059&7+t#>#s_Nc0}%qB11iWu>qczm`Z2)IdAJu)4;^q_rP zk?aKG^dfa{o9$V^w>X>!c-j3c&^KKjiYu(!%OD%15Z$V_Ceadm35s^BtSgQApECCv zxg_ijnip>%QVUC5_z-%5{*eNV{$_x!lgJ#r4=Mn86-|&{g)uI=IJwHhH26(8>9tli zyc1Ds;grhg(!o@MwsP<4S~530$PduOtzR$UM~!I|e!8ozks^&AyUFc#k4}_Os}!e3 ztdXhPuntpA4-I)a$c;LB_eT7}_cxFjY%W_Np+`k64ckSY0K zXGpK=$2m2R%lb?pipa#3;?OP#m!kIZB(bVT6R*O3__M^(Zm{b|u%j;Ni_dvj-@4s; zRVRZm`2qp)vo^UpaL#3MK{>CRL#%?B)04{YRl?z81J*v?K}~BE*k%yzr4)jq;|tbc zeT5_v1QkVr;NNr~?T=8{*3oPko2kB$DYLEoamO8Wo3i+AmZe^axP+*Vakj2pW`_H{ zIceg)j&$XTTpZ1Hs^pLmMZK1oXnDLFQN@cTWf`V(V2iZ7ih`WUV|lu|q28Y-5r`;b zGp)g9`(CT8Re{d9mB~c1QU1Lk*wCU_0^i;OAD7bW&v5Vp2)l7^SHN3y zYU%i}#GUt}GpL#ya69iNPQhv%qb`w}X|jMvE%U&~>|4nhkI=|bZ%H)$)Z&!sg9hol z1Je+ITHscqH!xMcamKO1O{D)yXSlLkSw?23uwc@SR$aKoVbqB6oxhqRLjWCC!A}SP zT2Xs)J@=Yai|*@XeaQ~G$`3~3v}2$vq+cr&unDQ^`A{svP3M5A%ev(;H)KycDX*=u z7&OFUm^&@LKG4pkonK;wj71#IeYPF6qvoTi90!G-??*qd57wYZ_i&wot# zHyE|6<4;`e9G#f8{2g)WA6e173qNGzI|GxuO{B}xZLnM}v%iX?a@oHd}s;VzlN6v~BTnW?? zG#J@);YZwO1b#6Vx=z7HD?G6FqskzXC)@|^*%a@;FlO}Q6iO{w#m=j>%gW<}N1!9H zg90m_Qa8!h3`XL;mwD)sD+zt7iH#s-oWm~<%CNOQ_fymx8D@KD5gPi*I#!X@;qULhw`$kH{4@f`Vg~G9apiI)FbW0aao8U@hM)fk&TEX<=@}3%w%B4;T6k=JWW-p6 z6&D1Fhaze<2yTKkCLK+z45G3zu_=og`wELeoA~+0R30-xbN=BhmORHb&PM8|@xzf~ z)c#<{lX{WBbYJCto33nZH)`z!I{5^b!>g#ljn3DA>sD<+;_U6lUYMt5p1080rm2(8OBM zMGGTI-)N6c%5*WvwLs70@6TU!+EFJRYMbw0`v<+Da&={8B6qh6SM<9;;VC2Sn6=WS zRK^?izRSm$9}H2uVxu0`Y*#F!2X>t9F;uvmhXRrCSASDJVLGHwn9h+n4+_DC@|W#B z@**O|jJ6q%*~CuCEp})eieRBx^|g7g=Ep*|AW|P|L(|-_jTISYj)}Tw-IZ-y7 zUx)*(baij-;iK5l!>P7Nc{eJYX0x8w$KKG_gC8&}?z+4%Zi2nNC20*ie*M+AW)3_J z1xDHQVvRzsq>x<>FIqQYWAN>6(KY0)Znb~|%?APQ2t7SMiO$fx+gVS5G6+0q1=;1uLdsy1TWzqs>MHO*?M_?&vubvF%p(E`7LpvQ0 zvk%xx%wbo7pDU~bs`3gc)dM#T9=h*5w+hNEjIOReTK**`Yaui6kfgj{D@i;NMm1{qkSRMkl<{5>6yG& zk|C)5fuP>_Mdt^V2v2Qy4Pr6HB$2{WiZ&xF{P%b2q0b)f0$eg(RLb+5qs=dH*nrRf zS$KF3uU@Tw@UyqCA9fVnk9FB~fvX5{yX-1TGiwDdW8(BsH#(p^Os(ze!Q&Bbo=Ri5Zb+xEBaL$spO75T|8g^j=YIJ(QfeC3w*|M8pHH{s_8*}v7$ z&Mk8DSczYhZ|V*+cX2^ky|ts4b9OjMnM>=mE#&qudaom9XSn>Myu9)=Q~wE1IF>M6 z%9%;QX^J=Gs@YcEi~P>9W$ng&hlEnTu+?fBkcu4{_EfI;SLbSwM^7$d^*%d^zx@Nf z+=tSMlZRhYdi>9m>MCKg!K{^Xy#m56!kp<_+qrb}p(Y_CsV>(SkiDQ4vMDb=JualF zT_D|?NW#&QtwsG4*0mg}As*kFH1Q~;KJl&_tI2*8*7?CtkJH~$vw7OUl)QkEzy|85MKyF)!{ zX(EHa)RrwDbyI(O$Bc)7v!`zLY8aZ+)vGM7pAre~E^y=tEF_2t6-ozq1auAeKD~BN zGrz-V1N<3Yl2TI>@D-Ph_z{hEyN{(+6^R0F)$0<}c;X3e`9^q3g=)kfOHFs5H8ygt zT^whJcDa0N@n@snc(-VtWfyf#aYdfWK5(lK7A(i_l+ zdZ*jT+i_Y~o8snEbRDMoTVk3fVE3ThlDNXG@YB8EZw2KMjb@T_?A%e>TLnAxF{+E# zV#UC6xjS7x+wW29-N72vdHTrk?Cmm~37j|pzC0BB zX)xpUM#zu|IZw62&Nlbnf-^_Oj#J{c)~?~uiI2n8weQ>Se4^T?E;2q-h~jO+tNXx9 zl3zjG(%xf?bUWJ2!BjT57}igmN+nHe70tm8LP z2NbMkpJ*F<%JlYCcR9rc#bV%U=VcjhX9qj&Am$9l16U)Ccy$jE2v02ezzEx-+R#uL zs)1tBe}Ym{qR3fwGAv1WPKAO(V5INtXD?-oUJZmHo0ZIBa*R4f%MR!Cl2Bl{OQ88YBm?oxGcUo-%u=~5 zVkgCO&(*oAb5?P@Y!cn0dNAhTP1b*1;>ou5B7h6$j<;{NRWEEt53txH7+Q$e{tS*9 zC)!%av_<(P8&67kYn8BxA}(g7hE%A?=BpPeNYnn3=T4LH8$74xUFaM5x%QlbW3UKr zcxFO(ulexs?AnjKXQhmJ9w%eC zl;Fan$2}bu$cKMzi#1uy+N{0Qomr{rxPNmJm1e#OO7DsJugR)@i1ThqljLu+`2OA^{FhlXpx(OnJGv6Zb_f^YEATtQW1`V^ecf7kj8%~s--U9 zM1P-9%>{b`+za1F5oM5GSno9v#*ZPALPEk~ZIRC+5&Fcd7^7k65B03HT%aloo_`0E zWT5*laV;Lj^zQ~9_t&rd4JckNSh%dQagr3+>cAd7MtL|6Pq#WSgi1Z#2m^?Ef5#>T zVtWZ4eg7*g)FjcLubV3X=g6>3zr20f!kcmMBY*M++?!KR+AZx+AzvA2EO`8z)=AFSrL zl>$>AuMKB#5A(R9zozcZoKM^-!RxX!uUK+(!hhnWw*>g)=sU__Pl$sGtJ>Ipf@UA( z3(oU%VxBEsp-C0d%udHfcbbl+Br{jFEM+tS zlnvnhRH%CkviR_;Q|4-;#+>)>&U*dZMm{=pA^eA2SER1o(|kEFXSto@ ztQsU;dDA!KVx-}EQ~8bZbm~`Ey@G~6(wed~eN|X;uI4=H4$tQ+7fC%%o|>kLyXN`T zf?e?f&C65^N=r(<&6*l%agHq-zjod8(|^I$M7fD88WIuWbH%^x3{K9V12**#E=r|} zs&2#8@7`7JiXEb(SBl_{z7e8^DnvvPSYBIjiamT?whFNJj zrqWaf{fyA?29v$1HlJU^)Ir?qbDIQQwn>yjC6<~x<(7X5!aRhjubYDhmQ!@m(}PL2 z(BN1)DW0pK3jflG!t58Cbm^lLBtIt8%BmWa?YmObJu%*vwIbKLJV^v=u&FC;lVLu| z%)()BW$il4h?hqVujK5$I1?e)2$)uH&!}`Jm#4w&+@5hQKNX`?>bMikPuyiuk!I`y z4%EFEjU*ErwidUG@D*uKdLvd$WMBRwV>7#|E3Ygpt>Ph}FE`#QZ3r!zymZBDG~(DV%9*I9hZ}r*`S!bh@xjjz{5SOTlTET>^h;mz@z>2QX#G1c@{gC+$B}6 zSSj7f{!JZtufPlo4wpTPE-nQh%|xn*hE(!)K%;Yu1vI(b>4MC^uwSHMNs6`nkRkS= zyF?rs(@~2`skNjXn8q`zYEb7{GFm!hWu~Ya&VKhWAOT6p<$l zWarW5qQKuNyxGehIK6k~??~T$H)YYLF=@1EsDFaiqtxJnMZXtuB-a9_V#OW* zl-R%M6Ecb;cwpLDfOn{e#~-On>g%Bv%Q%ZxQ`tks4i|Ru(di zW*Ut_+@FyYRo9@@&`)YSg^t;L0@Xv9HS>?Sh10%yt5oXb)9YMaxp06MzWv^O0@n5ZUXYf?MXS?BBb~G$)Qm zZ86jl+dj0kWN5dydov&ZF02jiepAA)tOzBz?f!ZM`dO2>VB9n$3`*7)0Mi%p*_&t_ zsBukGf>y$D*2e|S(p7M1v_DUqk0v|ZUX=(7i#!u_#O_kpD7zq#1dX>I{*K{=SHxzi zoeyXii~K-Xec;;*kJe;J$=fAY>|KLeX~2XU6Ex&e5E0|@=ICr!KKp9n&k=^oxAXH3 zOK_PnOa`DO9dsCfU`*JWnk|+7OvmI}(Y#E_ZabMr-pp7-K=^_3tUXi0J%)r0i1LkheF%$b_O-)q84E@sup9bch_s{lckNbX4LzKVwv`Go4wfy05eZWYo6^;o~8Cs*a6ch6gcbfuP zZ_UKTCw6o)FGQuF*Y6TZW5AoOQ~yAgRyoE zZ{4PtI>va8e#f>wSv8~P{gtiti;hV_X!fd87JLiu7$(m6v$hxu-<$Izga8~ZNZy z7TuoB)uiZ?`sAwce$wDUD)yQ72oPyp+1|Zcsq`~7aMhkuVBppT_C|s$T)Lkf?ad3A zI_6ahTusvElcaN!iqSuB)Pcm@T(7y1XiFA=Ht*%aoSjk$?CJV;HpFGFB858Wkq7DK zZivj6kxEXp<*-9}!A*`S_SuSWHz&Am{jtj1AmG6Hp<4DVi+>l)yx&3fW!TKft-s=j zbc3c+^s&x(a|&}jdfw+~Hy^D~onaiV{0HaJ;*duOmYxdHg;rt+Ro0BT$TBHXqxXK* zYSA&GLz(HXH9CMc{cn*TL&HCmQ6id7z2>umL zEKaO7ib;qFL@e78d(W*rC`R(01=J9+_}Ulf;`fH>4jFjaNZ(wZXBtIuHXqtWQZhaR z5&0hw_IWA)YwaD2i;~A^v!czzaXwP1n?f6rNmBB=uxJ*MF#T(8^peKikV<6O47%+0 z(w3W!S6->_kCOTA-1&%c){d!K0xwBOrpxTJ(e}$LNc~i+y)KuM3Z`C;ASSnPDqQNSyXiKllM4eeJF&OUUi7BKL4p--$+-d)6lDRa0yiEtNSdpJ^- zbnmR5XzG-9T~uV2Qpk^K{A-_tG|$T(@=|5O5rN}L!ykjk+n27&1ReR0An=x1tKpf< zgj}DfgJ5&I@uMYqp@p41lhD}CdpWoJk69Dr)02zM#YT)zrhi$2op>NsUanj%y)n^6 zrnMszkG5M1Vyo-`Rn52i4>gLsAGZe`#o4kJWoq6!52(4Gu{Af9 z=r%4d&r#1~no=bEs6;~I*ubKyUDJDSYAf)5Wmn#@lu8|7OzQd&m1r zcDm^a<%5rx9D_vXOgKw5U3*2|?>=a~;V`5ALkIV|pY>q^Q7@3opUoJr^eoWcIY^Au z57w!rmW^ghFGl}LcuwZyGsV93<mor*SH z{PQ59b0b{mjbBKD6Ga_7f+dZL-+Y077hEHn7FZd8RhHbC93y;`m1i+?C7z}WB}l^9 zv2|Q&=W+BB>#n~9^~)(2KVW=?$)}TlKDU|WGpL(qRw2tugPcZ;%uML-oeIZ<4JFg@ ziJmqH=uiUoyu1Q*@?$JYg4PD3vy8xi&&(7;mpE%}!hz+Tc`S~W<$xCgfL0l|;_nil zeJ&2h-+Xy7q0f}q1!jKAmkLX_Skj#~QR1_3lmOIOV8PG60%3TS+x_%S%*ioZ*NM|h zk2VEZb=TuB+~VKjRe^xoJCD}xGci9`xATF#3X)WsqA$nOg(MgXOo@@_!lQ176)K)= zWpc#J>;G^H%HCTR$_%R|}0+_9&@aSGzzegb8z^ zaT!hIaPKRAJnMBKXv^zoV=S$e&a*bW7I6tq24e53b|O_nLr3pJ8#+3`EIO`?ittGX zx`&8c_A-x&_jfFUcDmqg)~HiMz}AjZYLx*J24%I?r#Ia=jNSKDPbC>=TwtWKr7GGNeemQvk_FLfYu2 ze0bJC%wm8}OvEUos>ci4317j~Wz(08ukt@7>9A%(42%9|%sGWE4a^VDOlT$8o5-t| zhAH1=zCmH4J7Efyc|T^#1bLfW?*-B1h3)I@GL95%b7qA>98*Ua$nHM3!n&k6qj6Vf^*&5r7A$98#htB>m}>O`H{#WW z_v*EfDemp1R!pbi$V9EbxZG^{4$PYO(N4ywSd=dIPbe$}SWrMu1I=7p!1 z*C8flVy$Up%vl}*LAH(oF!42D(b)e4jW}bo3Pv)u22P(a-5BU}#MQs9tFnT&ZMM}O?DPD^ebdX7P+=z26)K5LJnEHh z6GpvI|fzTYfs?2zHbMxpfyufp(4C+BXtJ5wWl>0{eo6S5)x-jWc>Y({$t07hp|5EAG^EqG`=Eub!<4zo26;6vTPuAjz{ zsTKBLsD+-;;m*_M-Vt%T$;G2eG<>zUha3`Io70&BsR?g2=p zQMSOa*8(ory)$E9uVf~>Z%C_uG!3X`I^_|;QbrOT>{H|Jxt3q8JgMnSR7zK`lJmjj z_11}Ko4_SUUoW>{%eO?rE^cmuY2R5%=rmWmx<$X2Arc3vnXiHCi&skiWKjcf-TW6C z$F0Ce(?kE3r#}fMjU2ct1EiW&^dB&ny*t}5^Hj6kLr3rP8rcB5~BOq6?wSVjW z`M{0N6Key5>(oapH&oX+^^K5Ql~Z~(HLrWMx*^;oGmCKZsXeKP=*X7XMW?De$LYPR z&_+D;Z)n!Vfo03GR%7n#kd@3^ikzvvh2t&M!|3Q=GAj2}Ls zM3nd1Y6(-t9d~|!ayO*XB|Cs%K+;8ef|e!gPaV8y^9stJ6LE$<=YiO(faJp{uCC9= zRLqK}(F3-B**`xuHASdv2>upCQ=zAfcj4&`!!v`F-RUE)gmXcZ>w8`v%u|cI*xG5TN#>nm`i`djZ*_zS2 z>KF*}eX0dit%0SvX^kR^OSTD)Wq~Cm$AS|ge7YV_om$e6odDY*0n&=__ntwW=)$G6 zWIwmDTSz!Mlpq@{Sg($K$MF~X(r*Vkyv`HrB3YGDg+GfyBPz}DHI4Z?zXlb3NTeL6 zn>L=Ky&OdcqB7Q8VTH01M|n_r=C_l~mw)tAU7RI)lCcc?COO-1=BKA^@Ote4r5gf$M`9x zRTRBJK_X1gnf4Vx7z!44BSMlTO>Gk2~Z5_odnzSaN(JNd44`E4?8?aMe-9xiis1v2LAm$wd$YWH7#~_9x+8DjIm^CESpe3wT zmbU+~@AqMxclz`uR+M!Vx?b+;X=sbGe5Is!KagY!ev%ROEB z`0w1^MnvS1y!(T)c&6zx6ITBLc1~1YaPc~B``X@=%*vK%nrbAcaCcnXEAtgi)D+S^ z%aQ;#gOP(iDa^{GszE%RcVPryTs21m89K5{yY*Ad->h?88y4r z9ZvV>uy-PWe+EcTQWq9Y<_z24`Zo4UxH?)h9eCJ91(>I&;}!5!KCwx}neLH-^?Q{j zhrX71D8_`~aC+!dBTR{PSsU!KO6#n$(%p|8^?-wTKXXv6Pe?i7KE|l$$e-pfluJZ# zhG_&f$Xx=LLZ1NV&R&u=2Nui*apaFVHE*kiSSOo?8!$3d;mP`_qZ z)Nm)Rje&K0>D;^*fSSVAlzA=MFd2Dj!aLhlaqVKony0ts)kCyd(1G#KCd}ptUudTV zCM01$h}*D#_cJpMw0J!stlg+%?N`M|etKL1m^SFcx8&1!8kqgDETS4!ve3CRkZiblc?wbFf46 zRVDAlo$SmHhSyG%c&J9QwZa~CXsTDjB_j-Hr85jmTLFrnj%Hm=d9j=MH&K}1J_;lX z@%S>$MmsOp;s*Z14@OC5XqPy#b26mU<}@_+UE@S5l*9G_V1z@3p*jr>8#8=~V-K#o zASTSUM0;FYjhcznzaiWM(45ewwj0jNl3hcJD*ke{=I9I(&yD^E$n<9}EHrk^jBWjC z=|F`Eyy8&#j@(0nW9b!Y+~gaJe$HJ?F)vJ0?W((hJmhwVWeR6&0z9PvIr1ytndVs@ z|Ey0CuBVn3q0Wz#X;qqwr?3Lhv1XeS><1m#7E?#zP(is`^-qyyn&X_N zuxuzNbz4-dOES1tRs`hy2?IEo`oaq~>CfGb+SDdg8l|%h zSveT1unw-Hn*YwDf#SsX`RTT7Ny8DzhlhyA9sjE>Q=+C*yAnM63 z9%>7G23t-?;1#a4J^Z4)$XPHDY*cSNvUCf{FCA&LdK!3W9sCxf{mUE`{W1nW!vMy^ zt;@<`){pPfU(I87O!FkILEQ^W>B2Y#hviHk6@aKq6E+a{ul-wg|`UTv?g1}|!{mFDUy6L3PGYHGjf_|=wc z-?jQd7MSV%>CfKV2R_IaMW9aB+H1Csb_~Gp^*=LVHvwa>C9>Pa6I&D0 znd&y@gQA-SF*yPPbwy!`{Q-eap0MUH9QtAx?)e!S{uZjDhbMUOCeYPcbXrk-bv+n3_rH%o$^vWMW|*-LCI;s~HmO z+Ntx&Ot?Y#@}HgBUII^amOF`1GWK!maHb7>-SFQ=&U3A-=h4#7=dC_xI^?BEC{A8C+S+9z##BvY z=Uybid?J=}hp~G{`{JGYW7?V(Jr7o4P7($Kdoeu|w_g2P#8h0Iafh?|g@D|nHVK(r zu7a5tiUE?Z`ZCq0 z@A_)(A@6+aWKs!a9zTJKG~tL4X6;;`Lunf_Om;5aB)L?FiHnWrvx*G{GTYDI&v-ar zp%4FAxe@mFJDXE+Jq`?Q6b0fB4UW>@ z!Qfy#j02Nvwy5EYo!^zX{C>C2T5zZctBNKe@557Dwde@ahNzpKVwNASCeQ51K2huc zM(^spiV!e6YmiWe{)T))UZHq<s# zhW487sqH<}|zugY7{VajIu*lf$UvFck;(JuHW zKX0h3pNXD&)TQ36es*-9xCZ=8_8Z8R%c_cCT@>O!c^^|la99qi0@P*fadM0y2OW2* z{oqkz{5gMqBkptEv?mwvqJq?-3Y165fN4Yt zF2~bg;rS+kH0G$ZP|bQh*lu@9$j?B4&({uq^PBb-43U5A@P|-q$a`7-OW32#CM53O zE1=$rzh+$3X5fLS4?yy$gr37>*_IW|YbwYhI-1TdTZd{0=6xU`Bm0ZUC3@Zf^2dVYjGFXMyi=)fr0wvQbcSm8;}P2v@5AI{O^^lGi>a8w>*TYq!E zAouf#u%5T$z5d*l%~yz{MIpv0LJBR>aBbN5#iIx0UyJf5OP@wpc)jNJY&m;9m}Yx zoU&-~?*Pmb@2h>>AMvL4S7Znh#Gysz*`?A7?p`aF61D|dmi6Udd><`4(0y}j&~^=A zG}W}?Nvl>csq&mVME?ffEC##eKdw@b;TZ)_2xTcLmcxcR+Clke$4zKGD)N-;gF{OS z6=!lUwvP=PGSV@t<4qBK6cY|X^vNJ}Ut za&c~$DE?*TMkn1VBg=VM?`Yny~ly*LW8__DnA z8oKbk?mN2ky3+t4@KjF6NLRS9;OvB6QQ^Y^Quk+Xc7<}pF5%07N=dYx*5;65Wd zl;4*&88xNU{p|Dpu>z=HSxlqy1r`=H`T#~6TM5<6jE| z#k?8M4iA$sQ2>oAt|$D;%{QiaB8J(3ab3doGa1L#KG9K1RvHZvcB=a~o<$+VO1mT6 z3qx-uv#|s*CzQCkM_WatNORy@vs&iB$G9m>4_0>L?7${DGo6_L0_Ru%g7e~tA!v5- zF2rK80*hQG5#wv1GaZc4mQs=$28ppby1CMuoM|$p>N%-aQnc!FF}B2X28n55ns-86 zui}hagaT7(S!M2uCMu{ttw=BGHGX}tg0d2Ov-{T@8OcP&QXw>66I-f+xm2A9!RK-a z^bGLubUct!pxl88v!Mr~&BO$tV=)SKViff&^2GPke zby%1&*6^Xr`R9anb|ym!5(npD`RYiDOxB?0TvpVB!a$OO(-x7OFZ1xG_*! zDRq1Im|J}G!PpI9Ld&YM&*6!splE!v?2@fDAa{6kVpt>yGr!BeL6(ULDFi~# z$+K#tOfuEx6{B#`_`>H{z+(Z_Zo$o?q9{q$x5x-iEEG%lnsU`C1Fy zKzHRPX!ji6T4Kdm43jO=IXu?l7N`Lr*k}|Fms{=Xz$m2op{x2UN%+`Zw8@!Uu=&Jw zVY8|^2fZe-7}MAH9=BXA*`4UhrGNgu`q77|^jEC^#Ohx{ifTsrc?scZWm?+V^H>a* zv0qr+Fs$V4^K`hT2V}tpaY9HgZ&)J+Ssu{`d5Az+n>CqWwDCKZ&|;3OAJrHdO3x<| zl`>0X&fC8SHIr3!jS_@oV?gLF=HpT;2WY8u*H%>EStEAtJu4D`XAUQO$;DL>MuAsg zo>U{89#eH!*h8$`X$h-5(GET@zje*YE)Vo(H{AU{fc3qn-AWlP9zjvj@sT&Jpai}m z*QS8ry*@cy*(j~4|98Zd=&TgH(Ezg0EQq;Ie4M6L@DXr0d4|rr*{CPcU!&4rL6_xx z=zO|3taW!@i;UheQjBitw|9G+Z!=={cx>F#b#+3?QmiH>khscQH?>Ad$=_1*fgwyM zQ@jbFD)h_*P^*GEJZwE@#A|D`=_L{HvEJI0iScI9P^cJl6!0sbdQ`{A3&HFUur$4J z)w!w3D`&fLsjRO}Q$ba_Z{O-+iJBlaf+i3%p( zL>#T<#d0ht?C{%Lmo3-MY;ZigiG|D(`oKfX?*qA|v8ZVq<=fwQ5BvnxXxFAw$84kF; zI`jhy6}vwn(5bC~ERaNoE@}YkU<0+oHRD60$Sbx0#K$P5u24^{*Zg;B8fB+PuPttZ ztEq}n3jYDx>zqoQvEQcb+0LPwBOu3*PtdCy$uQLHF-GC3jx!|^cx{NJD*AbQMeHN= zgHJ+Sr8u&tOx40R+m7r8-Mf-Y_(rUhHta{1l40qyK&8=-43y-+LrTQ+G$jlzm_uwYrRnSuJtI@rN~03(*aTJ4)>Csf_!rUeY&6yHu%j5&!A zkFg%}6Kv68zNz`oCGSPXeSMnov(7nY68U$EZ5ZUoAK)r%ygw_)EMs7>6J>upGYOziQZDr3g%0a1lJecxWsv)L}^~5MfMLv<5v( z^jnZ}^wl=Y`O1@=KqMhfhI=kT;)B6316P>%&NyBwtCB9ZjNEmn%Gt6t4@STjN*cd) zV!r&RBawwT-LkyQz#3HB>?lM|cLBqv+ay#x;fc*Ow}t>8kQgy9bCErBwW4>crkn zcyA7J3jWNEi6NvSOYK(Pg1ZBpfH}luCt-m*MI)_z0$0QR<4VpLR9dNn1{Y ztvOT|9So>dDXUY#lqfY-U-hMHWhq+PfH z8Xjp?N1C2vib))&H`@AZ)Dze0N^UqW{y1-D@j9Ju9cbS5zBXc%XQFRN!>ZL#S6pKb z?J;7w0HRGHZ0I+3O_mSnZ^ixBF;b*E3_o8;2{yc16nqn_s!tcHVywV^Ffzo2*>)`? z2p!rRlmSA&Fi3m0NuM}~CDnGH#oFuvr<7$iByZB9j*|Vw&o!Uvv|DRLo~y;fR0m0+ z-$TiK&c6rGu zG`HSA$N8zdFMRTO$n)PS74iIO9NzS8Vi?y26C75e;27F=m%_~SSvc**jc}Na=EcQO z;3fMz^m1ykIu&BtT(2c9{Lq;-BBWvGXsRQ}Z*TPrfqynoznKklOzw)NZkYZ!LY~6D zbUX+HVw*g2iWZK0T+;J|gSR*I|6ViXjn;y3{etLG%~%?A2cF-&`sIsxhD8C^31s7R zO@AX|^PvZzfs5m=SD_#VZEBB~E|@^T>D|3XYWI9sw=04fjB6yIGRgFguH41?J;8h^ zVe4at^`3~(>w5}$y36+IX%q7))z>eoaoAp(>eb^;_Jh?G<)7}~ztE+u7aywnw0O^w=W2Z_CEt0ML$_AY9VqGr+B)E0ZS#2&HtD7805>`_{Kw?@>= z_sQ?|dj5mtXC6FMf$KP(V$5%(jK!$xAla7oi5iKt zKwe%TkjvNpy}sJ63JyA_$(j*CApPJ)mzgrs(H=Bf~#4FbW=Kxu{qx z8e8X`J2&BH==1ZbTPCA~4*R(l^2|JOzojyRynt%vW%?|*f3SN<`)k2t;Fgn4x2T(} z&LKsqTM>^7uO*yQ$vfG3u9;GVsz?s_4rW9rF)Qz6tCFEbR}i^7roQ*@%C=59m?XqTc$y<^P{+(;@-^&>)$2 zpYAET2I*Hx<`il5`|TC`IP(>@BJchgiyF+Q#&?`JZbd&B3@Rr&MkU0`NQJ^9f+c=g zTp`htG~v1Myj2kS8asD#?FWgSq9Gwi3BZu$#O8Ii35M)gI&G53Mj7ZR$jckvu|6a{Q_nv)p9F{`y!C%sc z(N2L?Zi?h^{nj^K;p&is9Lo2F8?X!XSz;dM*@z%DS6&EtL-f%@MHTV>a*Sa z?2%{Jq=&e7G}6b?Xu06*4-QL(RzTTw(2mNc8BX2QZ~!Pr1Id^mW@uJt~L$CeWS$jKc_O0h;zh3&-Fu9jHqi~$)R2y*Aurbr57u|IA zcbKHL`%CnWJ~b_1=u_C?_K#-*oN6riCa}rcjr-90_dTI4f4>DqGH5G5@+2qcbygLd z4lTY{q|)Yq>Dt>AA4_)hVhDEBzwgaD-&ggQ@(UdfE`}XkADcEbsquJVD05n}WY*={O^7Z%4^XSvZJSMO3 zKw{r0eVF9i%JebijIF~^>8-V>rJtt@%!*H@^;$jMdN2|b0|U@wZ$5Z@Z~hjZ9B_?C z-Z1MsHqO@gE0=TLd)M;sv(B5ERJJ2paO&es{nZh@MGj1l+Q5n$kaizp+}3G>d^r&pqt8SZYV7gaphon*yI_?+R1Vr2ppSn zms7cvQL1E1mK>gFi<}6Pjjj##U)s&8RhCTE2(dmm9+{@5mPTSw(WeFTqUim^v+54r z3XE-sDRNw$dj3q=gp;`lA~9f|Lu$;tVy1u5^2ua*d6+9r6)lEg8~4MfLs?%YnGp~? z3oNvB;zG-_A(!7mi89=W`@7W5hN>NTV zmxiPKQDo}o7g!V2T6)KLee7XQXzPdN`cIG`3p2eNOEByrIEaflut1NZ@j+WQBws?V zip|h?fs3-}DNiYCtiMi9?kl&y=Oj6*w`+aWFpx2%_C5Dw@Akd*>kMc2VsNplPgc2% z+o7!D<Un!4?F#Bg0Zm?8sK}db)15H&5T&${JR_Q$hTeIYGbnG}kbI;p zDPSAcULtAJgD%l2vW>0muX6nqE>?xs!8J^|?fhml@wkb&oPdU|>U*|}c0lOK^^H4~ zv$Gi5IA@4FOf$=6Fp#6;^6Go6*1@ir2nzBsvna}7j)i}0e6oDbOHOC;}RdLRzw`WKEh1lvWYN4KL zwi^c|Yjj17%0f%jMM8CH_LX_8z8?}5$!tkwlfaOZj}H}LShHS?&yIFJ)V96_+NF>{ zuIlyn%X2WcO^Nf|fjrvWoq#fot^`Vy?7Ew`9P2~(1tPX0K~Isvxek*hWV1n4!`8th zUvbQXI(wiGP{~tah8`5$Z&|qtI6@bX=Fi@Ph$o*Rq))0JB~L`dZTPuOyS=b91MQ7C zuY6}Q!Dmm+Vyp|hB*6WkVoEO4{W31S&fDie6XffoAQ(MbSH)Aa zDIDwx*@SzZPuL8Up?`1gvb&4pp;qa)T6PqXrTQ6_Ck*xqS{GlMQx89j8L~}OL@c0 z0=V)czdYenQWazGT@a0d-U*)Ao%YlZRxt}FXO{o`-N8?liLAKmdN+nX)v8j(S-Gsz zzPw=j8FrwCCY^*<9;}P3t9r-Ucd%B+qq(m9E#Kl7cNLwP)UKq#PS5j;h=_@BewRwA zo_9y7zX$7w$)gcRIx@9#Da9iL)jFI|;m(90^({(91bxw96+zxA<`3|_e2Ta%^xPQZlEc+~~3;t@f+WxZLk z(U{4V{oleuzFMsDPIh3?nbS7~dI6eC^4osg?O6omyK!K@|8x%!$e^Oz9p5RgRAYNE zV_PIE&f`j{?N}JI&?KF?zHx95Wnb)4J0>LWBf~$Kli5VP^903}dRCI89jn(LAiTfv zGbrlftW3Dv8R2!AsnJL9stdc2r{DE5&uV)ogLE&dALGC?CDm_whEmcQFO^X#q`8IC zp#rIQLGZPB)8dESSp5W;e$k4#j)JO6*zjRA?JaWJyZvOjsn`C~nNqh+%}47a}bU zSj#O@2PI-(FQAp6_#3hz{wZ&@O-q71dMwq06PKrcY7iqpjupYwA{s~-A0<&_`Xw$=+{=v+@lYne; z^pe#m$f)Bq$jD-duwvl`mg)9*GJm{Zb?iZ5?w7d%a_62SPl0KuF=zs}!aZ-7TL;eU zIgQXEr~&|N=Jc@gEUgdId1C}ujZPHFtQ6d%5ucN5aSr;cK_!F{JRR2%u%t|Y0^Yuz zK{79vb-BG2A#=Gw`-31zH1lr*A@)+WiWlE`49-DqJ=t7EY7%_6gI<%8s2Vo zgy7xw(8q7`?+!;K2SX-8WqWYXHbg4o1k!iCNzVYMNDCPEcQ(HnzqgketHF(NmE%X< z28M$WN_AeP3l&803RPzOn1(vz-q9}Jk2dMF;lOJXfx}IP2wXQvQ}00?ss4HYRQA%G zBJsRvmSabGgY;M-&is!&Hy!HVOXwh@#ob$fz{vDs-sTt8`VZ9pb7|$4Wkw+wpd9Hp zuTi_%3Ao8Mg@bdd{R&qqvCs5>ybDg&UH8GQE=(h>aiH_&+03n_MInOHZ|ZECG6WKe zey3`46vlhen{q!D7QnN~S4BIPHGG~!=$9~2`%ThGuNkm+lYPs}^QmJy=r{c=6m2yF|>|N6sdCu_b zt}#eljw{0BHMUwZ+P6PyqRnV|jT!rl!0>Qh1fU zLXj2S1w#5F)44mkTOY`+pgbJYobbZPwwBBfIEnLVVLA4iWv3G68@ExD0A#IGWHLe$ za|PT-kOT)wJiPD$r6}Y0DfDc&L>ZK>bboc$?f$H#{9(gjsYO2F8Fv{D^b{Qql3Np? z;u(V0B+eSqe+|K_boGLZg{Xuf={@~H&1!SEHanue*MQ0vhk8P()GInBy6MJ(rMj=?m! z`vkO(a(4sg&^B~>>=MWYs5$6FJVzbY)!y+hF#IX`26eOh2erHrcwUX$(UAGKG!dBV zH@DZANle^vdQR90tS+pMD!p#iEp2RSiolWXocfr}^M~g3{%_wZwaD@Hog_YMy5 zrmwtZ|n%MWd)<~$+&Cwx@6Yd=JX}d=nu}9Fb5O@zm)=7fpf{*h}DguNP!7Xwe`)4x% z9elJN%DDeoAU3W8>1_i}<&LB3ABvac{kOvZ!|Q0`~agD750{J8bzL zC0p=h)wBHH?Eh~LgrC4$==8s}Z2Mg9?Oqfe$t2E?!r~dG@rK`~6aoSF54OjU=NvLT zt#5R2rB)4g_Kyb77{$n4ituO`Cp#^Es@4Sc;w?3z)%zQq4FRGw=`L!ELL=&(g@VmH zr`XYX6S-BcvF1!XH*W#Ba#CzZ`@$MpJow8j)Lp;ULwg&WVC+#@y=xt$+AZt{rH16H zW~VFz^f4I!M+3MzHEBLe&iFvZSB)Xji;8o zJe2wf)!@=K7;1cP)_1=SJ>L5LB-66r!K#j$gEy2zWj30xz?!2F^#{XP*=Q7t&U;>hbX`S|{n zqRI^pHb+aPOzZNl-iS<(;_>!|m5CKNmru&l9D~sNIXb|iA2C%J?UUN$M->4pIYlK! z-wtJZvH>}?3E%cC{_J{MAJm0;CbE5+|RlSHk!W2A4F{ z*Nl9UWLbM8wJAe5uK-O*{{oPKA#aE^j&N08yIG?L(dwsy?2Z~=--ed7iMg?;DV7wz z2sO~cF>$;mHPX`c;BP4NG8=&%rxC5wtA6y22)jBgaLEhAf=5(P(-r{)CnqnDZeVN! z>S+WD@qU~GYq_R9IZ^g(eVHBN=#@_U4Pr`DjoPJRa`_Y;`OzUVB4T*Gtha-zKR^{B zBIyhKBj9qE(p^i26yHXxFfikTG$!`=w9l%aVp?BTx>Ja0GQX-Ey?usuj2M2+Fo|=f z(oMwhL6Px7vlVEha^#Fv<3Xtg> zVKqe|v>~*4H&h`1cNsM~O-w)MXBCNbLoXHmNgg%D@*dJV{Hrr1uNaN;H2JGa?By9z znU{#1QY?i*T}CeTI(b^r$~!++>Ct%8qsRAKlY)1Z`YJtHT*>VqY+Lv7d+VP+;2}BY zq+=$#!lB^RrIBQj=3@`+xQZ%CK=#?OEmgc&%(*POTQJz3j>Dc&C`xi68cH7vw*L5r z2g{8$+3nyi$YfbY68kmXCno2P3QTLB`6L-!DScb7)TLpzZvic;#hm0SPMm+IE5}9) z+=qMW+oRdx&H9nF)DJ#Z@qhjl{7hZ+GhB$z2Rm}lx4kB=IOpCiUP`U>?0~1Fix-4W z=gUXm9YFuyzBP5C_A+knWVLe3f>eR5+$zmIm^m*kb z1c)?6@Ce|tS?v#=E=qY7&(IW6`S?#WcU@v?@oSh)uU58q(LGoco|eF#Do|1_4iPn1hZV^#CZha~|BI~VA2CB19lN)1`y0HUYRfaZ<#k4FVvNF;_ArQc&FKW>>0auP$ z=##+zTJ7GJkJFbBszoH{af{LEWV(=BR{hNid~Ou2XeJTiQmI)i7aC4Xhr$gWK`u}pKzb1B$Src z=V9*#e~QuQ3aZDIu4NThtZHHS2J36+qz^-VpZXL^$N~C`3MSKZ-_fR(PftuFU0*nM zT{*!q5|&eHn`it)qpMt}CSd`s|7Nj4*D`jrfo51%qZ@!rdn@)oL3L{M^v{b`qzM)U zC@+=k$J>!NHb1Zy?5{23r-tx&N`7<)#YwlyMTfH_%ZRh*e8zt&^OIV(Ne3H-~)MIQ?dt>>eb*Ww(11KYp9$jA7tLC<4VD1jGkWT4#4p&3PQax2v zW{w*f2|pueD^Gk=)_$%z{XIMk0697X9f9h^!hnF5>*B@22yw3Aa#<_IIyR$3YNfPe zlG0ggwZ>l<=uWr6br7782i6WX=KA3$LI~iQulxQt-mE~4SqUT4k%JvXT4iL5UP}Pn z=`0og{9X(RIN8!6zJO~`_ejDH=G|pNe{#e*neHM9GV=~ABKUB>ppQH;Evc5zc$(C( z3z+!xmiyfGhBN|qI4g@>4xN@CGLaOP;Q9;@*1OUOIB9Q4#&c2bKvHHHhg)UKHkT@~ z*O4C9I7nz*Mq$2~=qL%pBecmL9cG8!$WF})ex`TfhG_XJ^Rj6iQL(Sw!wz)5B~?A@ zPgiE)tUdp# zpC$NN5G_|HUD4*g=EcWQvPF;^%WP;pBLMPEtD3&1t8y^*@Bqkx#!UuJM>TP>e^r3aObeg&gc_YIpwE9E;R4ROkYy9#4ZQVdB zh1jQBs(A~O2!bVk6UG?L!v<;Q;PTFfFqQAGjn?DPKxJPCx2|Tj6Bja}dJ?7O8)g}` zYFB3$8!}NO#T>LuOs~?L%37;(tqyW~^(52EYo3!P`Me5P|&;aDtnGm26dqJI>y%tzvZiIDD6I#E=*R#&>Q)w5{YtZ&#G~uTsRfnMYM@ zG=RlfGmFA>9ps;Rt8Droh7igl4@YD`Tlo_#RO`>c{5S}~S^1MAK`&m35X?gQt|ka< ztg0dtqKa!QtCZG+(HN;Y5s@(Ng?&7nO|n{(an}9ga`W}RM3jaRi<_N+t1Cd`e zL2qjZ5QDk{?UY}WHCCp?%Tnmw?P&x9wr=Q`?$>`hwwP`q&s?XtBfzi<731}qONH`f zuXbKa*FRRr@5@y`?9CfXVCQDD;!69@F&YV!R_3+y8mC9u;KdzTk_)dCC|a!1w%vS; zCY-BzHfkWIb`1aBx)HaShcIv z_#TlOUH%OHl*5pp?rq;pTqK_chNdzS+y(jJUM^A--c*ThXUAaf zB>N?z()yZ#u``TmGTCB}O~)jxy1g$+!0seq*~Ay_pDB6^8OH|-(FTu+;@)iaRqsrc z7oQlL+QLz)QJ!B_;`*Ck*RhV8TL^7*Qp4-C*z8;@Z#yIN@kh}?qV7}F@~+U_l)rcZ zd9tZ*FS)ru`rgm|ihW!#OoN^{GM9Mas{3#1NutVWp8GvhsJXQLdk8r4bY!udBA3md z_fY=#;irqeIVNPO6MWh;ta*qxndLiR--yItG9`|y8rYdaSa1o>sUn{>AAuspk86{(XQPoO$D+V zj!Thh-qA>od!zkZd;w}m^H_) zl#&_M#B+;6VyT(q>A7S?I}kENc%D_l28+bd=kkNgL;g?)ATJX};WRJorkg7mJUutG z^6)wDJ6Eq4YemK1xE8~_D8%R+zFA0Nx1Os$YbJ4m7t$D4t=X+hWwyqJ;$k{vg5FT~ zFI(req|o_^3rKm4I<;C0eM?Y}Upa_Aj>s3T)44el+3E2#gCfM#gpX(!n5G0yXv{_b z!|*SpKXaj3GbKIUf5Qf&qZJ*TUy7RRyTS&?zL!z8$ovjJMolrs?@Qeq5{^KAb2936 zB!51Y)q)TUq<=FDTm%JmTkCO_A^y<)O8DX}Tf8~szl@nm;PaqLYApabVDy@0zMo4| zr!HX(CIx6kM(z!c{XJ9}SrAs}kIJ(QWBM8pDZ!b==Q~Eadl_7?)@f)fUvyQ+d-uNs zVPWR!+fpjFlD)jpuc46@(covPALe!pNtmIzFlLp8oqdrJ8=HFS@jA@a)VgP*umMzwHPS4Jw` zGm~UP7E$k!W#Wp=w{~MU4&7%a3>*g^+TK*Xc-d);KL)*IB>U8lUpOROHYGGeRIRWL zm#<{`E5_syQLWy3`-s-|PEKo*Ypn$eY|x_I#}_-$8|jb#tnRLVWhR#2XN@L2e{~;@ z+}Y|KTuurON+QPw0}$g}3 z*_n4Y2?10Tts(K8-?NNaBs}G=@65X@_@!r9ZPoeIJ301I(^>5D%1l53i@2k8dMwTj znQ(yobq82ZK(_Q@KFD|1Huq@QNkoSVV37LJtJLf5SzBM#(XN>2p;C#`XM#Ae1tyB- z{^}NRAv<2io^$O(Tbx|6bNm` zt?}{&6P*I^6=#*#j+<5Cuqw)osUUy_z4N{ez3^6P1mR28@L#Ln9X57W-^nIF z1CIg(>*YsW*pjTlUOU4(mKec?zRRRFuw%+6GBfX>wO#^jp&a}!!bB&;U z0<0sx*WhZfwv!nYw2K(gp{-fjCk~%9fgAyl(0ZUMz zu2&IY|8U^=lE|e+_%=N;Py8A3stO61fhuH@hy#gfsKql=Ek>)>ob1yd5BSWCwvx1{ z(mmZ$*47t+Sl=U|x1qULhqcqlvo}p)7lq}j&*=&;sSA&m-YwWDq$^xz60s?h%ZvJh z6tE#G!plzyrL*R??mlm#1Iwx-2 ztz*AnZX_q__vzL(cDF%1F%A)&rfh5F1se0ZqSOx9jB$NE5) z+~4sZpz0YTjrVZT%^TU2Eto@-RevB&W%)vQ*tW9ENI~zfdd1go3Qpc->bqG#H%`pc z6*B)@`@Z$5G|&%E<|^f(JXV8*QMjqQN^jS;aTNzk3FuNfa-eZi=` zX9Fh%>uv5Sp)8(;P4mFv6fzdDxn4FnH&m!jc1) zh@nul^gG?GGIyIdWC~bW9)?YwdO?YczMi^9W0bj>VA> z$3o|5qiw(CYI${+w&x-NyT_{8_AL%shOI{OefAiiP#gF6*F2}eM+S_3i%mwF1~^hB z5u$Tcteu3Z0?{8lRA*5#u(OX*sc{YzS@L0$q?1h8o#{61nP=|$KlP0#DfL6_^HQW} zT&@fZZFkIg_seQ(Gt1J=p4%n1P6f$pve%9_UwFZP+PTC}j8vSW-e8uk7sn&>`Hjv> z%n5DLLB|THD6tA>G0GYd}vjk44Hb*XgZj&RcTS?_tpXjbMQc~ALt zD`zBpRg80gMGIfauyTE1cI^7D?ka2ujndY14cJTeKJly~DkL2a|MkF@Y|$w|Z&nv+ zPRc?cLs-}5-nKMH!N85T@3SFq4*1avQy}56qn#_|nW55W*5r1~>7+qeZtkOg6n96& zhpQ=G?#ycJczl135dNGJ$`hRLo3Y|h>zMaKMdGDfZmN1~>q{ITyV2W^f5qKiEn|@E zS#{5!bFA=rV}Yr0gZgiL8x{jItCY$**i=3cYS+45y*=+Ot|PEtp6@k~P6>Di`g?SU zQEyp&cp^`sXu?%yLmYofxZ>@rdY`x4E4$v=nwle}@d+%wbBQKHnQxe<=xh3kBva8n z&RAyE_7P+XTtx9G5^=X9jdo3+JfDKkEED;n%A~3-s@U_$n0sMoCwWE&dIPSTZTS-y zzu1PgJFY1p3m<2@B7SO>`|(Nlt{m6mEK?BqwY?|ZMn2vnIX+DNns3rz@*uZuc(H%q zfzH`Hw3r~&7B$E|RV`Pnb&Ijt7)FltsN^-WrMZZx5ZJgiKv?J(tRqS{5<=_GDmrP- zXM$8*N&+`sQYuo-&)C#VAYbz?LFbIW)HD;#5iOdEH(lH0gV#BLLfU^Mcto& zHJcalNLR@(p1%`(OCb0omqggx1yv6|Sf;L;v`5%~e&w=*uM?NGCfQc@p^^ z<-?I$6%W#cqh>M7>&ryTsX!9D)eoh~xqFLls2E~;meIdx?hS7(D%m#?*dg;m5=;q|uHf|gP(Kpc;v)nVcCqw5tn2QtFLP*XP$ zyyS;8#gF_C0}CH{b7DDG>8CMGAj**e3WDC& zrEqNF)SKEEb+8p_rpb=fTOQlh!YiD2%BOa@rGrXLvLvS!8ajlUr1eXyLI~_R?*SfP zTm&f9lGX@qXl{G^@=k>JR-Cz0_Z1U#qMx(1ibmj49NEYD1twtcKX(r1B_~Zjx zt7TS!rf+{4|6oRWNHWuIx0+E5AS)LZ8Ju07UoM^hb5YvNE7wH!UKyhvK2If^a~yQ0 zwkNlnnes-y3_1=fK@rQdT#WSsBF{9=XwC}@z;ldffjzhf=wX{D!Gc+F?-&+hjV=&O ze;N-julU**%%hNf$p_ayuYYf>HojX;IWxbG?kVR-j%*9bpP+xgCRvppPU-dcY%!GtM8OFk98GXvf`EOy^E z#I;jklT{+!Ll2l$K-@qKz9@?&TU>keKMXF$O9@oLPnwr4@zRh><}~rs6FMn^>pIn| z-}4>@&hrbSELdfJKECBHko%L8rP{m42NRB2cKyaa^*eIweO2?;{bxYGWgdflmpT5s z7k?k#`QL1e*_FS7eyb}_%URSvJL}Cdrg)F5A|jSDXs`qqLaNxSu>3RyICHKP*StLg z3Dk&G@{(HqMX5gKt4X(>^Z)qCnyl#l3otOv4|e5?3K@`5HTMY>vfktGylD%mBgXf? zMh#X}tA8K#{P)N31~TGaC1YkLyH45uv4mH7B@`f>+g+<`dUUkAv0`)i1HK12rW$QI z6iJKIx=hydYM;do==jD5t6ujvSn$dfH$1f z>I^Xg4sFybu=TWLh~}9(5ll%LuV;E8^iAYRMARCm`LwAO3>(b|F}O>U;BUiDoVU~+xvQ^JLUE=U zyedS{h=#o5sGM z{lZYw^rhb+38r?*(E?z@r5+5?=;MF+jXQbHmtp zD*AIW#9`HT)hrTN+^X?L0f0<X?)NI|ez(O#TaM|sYQGgD2xOynVhH`{&c$&x zC4Z0VK57K3$m0Z(kK!+vV73eInk+aA3xxW0 zB+@-#Cv_&sK(4Hf-)D7dfgwEnqe{z{=&S@}A|-VFV`V5wWMqmf>1qMo_QFJ-_UiHe z?jUp^wl~Xv^EUYB3Lq_CECxj~2VnQP%b0Ypd^1h@=7UpwH8_80=MzG-;cObI&`Kvo z?BPIJYx`dpAh47m%q4f$#fs{&ieRvi8L`LPP{krVl7jZ(O`e)0@??E1I2{2yYL0o{V} z{r;i;09_YBc5(Y3MljkWGmowdb>S^9kw}U~efO!Ei}ax6R^D}zo}aJvp* zQUEl9R3#R+mY+P`aqA!u5tqJWf9}Lg-kAmHzpYb(e^u{es^vF!io}Hxw8abZAZ*XR z_T?v=lGWF`6hW``)haa9>>s!ibt50bqCc)Ja~en>cOM{}ADA<^=Lc(m06pL{D<6(J zi}bf1o<5`VYpQQxi>9}uS!1Y7Z#YNX$Erl6He6=b^6;}Gy&Fo z7R(3L0f@~NGgiLBN4GmbGa4AK_$-q_UCQDL;8}kcWHc(O_r0W;(-C@>fFD>_WS7OE ztAM8e*lcV;T@xeUXk&s5rtZm6@1F8mOjl}g)r#s zPDz#d_9CN~z5q8^F}gJe@BJ&V{GIG(=xN-tf+RX@pr>HvV89GtK6ORI7_Tmm5?(;# zli!sqi0oI}z^`5uxa?&jCn?lsc7p;k&3_xELw7k!>)z1U5XPhSS551GVapR(l> z2zZ$LHnoMU$Z!?OQQ?K@3XQ0fSX-5EH@!5F|0gSz7q@0)wwoq~1q5ccsBN-^9pf}x zhN5yLepVKX-&^NWJ+_645!=6v$5h0LPNPGZ*>x@a+(I%ryVHVtwX2mCBN zG0DJ$yIa7-1M-T#4Y zlblWB^W@S7;Ri$YTv#s+1qu;Dhya=w9FGr{^m%%f`rpmarrOIR`az>W-ORKCUqvwt{4-B4-D&SNmi9z`;7aReI3`$YuC+s%~j;FOGaXDJ;9A@wPeHk0)vpWQTe&7 zZ`Bds%MQ5l@Z!6xmuR)p?6L(3)uZwa(QUW1&QI-2tm<@-itA`SJCm3uPUyoOLd2_j93iSoCPwdDf5#}6k|QlBuulga6w zYvuv%oDZqgiy2s~?0_}tI<36%Zz8VGz?I&UZVaFI`ir&R1 zX5-@ihk^6Z`c2qsR0^A3MUqC86Kx9RwCHS8Z~KhRR%Isf+^q+ z_1XSaoEH&ZoKsogIxs1+a{0G9+y}m+2iPXK5pm1xi3aA0avxZ6qK(;Ku8t)W++hyg zY1<4{N`?MWV*obQTi#2S>(TU;FIJVM9dz_@+fh%qa`qnx3WKDh8f-#pku0ImmTYmF z7Z|}jhc?0(I}oJT;nHZX#5Z@%F0M?oZ_oOu!GeO>sfPl^~~@>T8p!fnpr-tK-T zp9hP*%fmMR^nEj$@wrZ$BaupZGPb)BQg~B6fW%L~jc`hB2hCjyb>v`iIaS=(30=JL zefE?8ta$2R_{%MoO`unO1v;T{Iw_heDdt%07UcIi)2w$d2T`PseR8@mua2b+xth5= z6fdIA$iY&*EUY*vXfjyT)Z}})Fow`%Yb#YU;(hy(T0sMyDQp}1%xUP)URBV;r}raG zodP55S2`*LoUPNc`qe=wMODM$s}M<*m}%Ivy_iy;v%`P1#eBeoZ!=85FYY~GS>2L^ z491W&-#E6*IN+6K8YY0h(= zY(aH?&3+P5KLQ5ph}veAHjwZAXKQ)H-OWktZ!?Gd)GBSQ&>7e& zVn3}+%NJ=x>xET<8*2!1=)dPCkI-n}-<+l}!DLTcmAgb93VJ;w6(u{D%1J!pfVG!v z?f)(s-Tg(a@(Rwg!>g^$B%NqHvVV{5LJtA0kUF$4kCPx=F-yI|OLx#Cyi-?qQ$`=% z+r)oDZ&B8}QU{u*E#`3ewmfL$Z;|n3P$yBv14}}P%$>u%jeVBTwglz@YSgG;wa&NS zlXbQmk|i6gWjSK3ZdO`sT9uu%sY@jMBv`z^)H}a^m$M)`fQZNFw{0!&jlIzr#pjJwd%f0Tm3w|6e3!*}X zwK0I!9-c+GW1UiIF){y)ShRf+z9z5vgnhakD*>%V|p+0;hU+(Sjg2cSh#QJ)>L_>t`O|f!$Oh`pSKXO%uo9%OMXGd%cQ04zHxAQ8YHv*4^R-AWHzMUAT5eB{{k-%@{f z`K$+MeF?p~E*SCuPTyuGbo!uouG2%3C z3N8zbGzQoE^+Vb3h)FN@uEw~G#NCV0)FXRi-JeY{&tqsAW#>@iM?@)GD=TZJ9G@+N z4PHXn>DiUM)4rG4(~#3)cF5bgSw8T%pLeAx@p7h`(?5OByrw&p_nf3`P`6FBk8(`b zNWB3_1r{*N`KA~DIIkI;){b0fGp$-RFRtKb6cP#6a@S`3tts(>UY;n_<(K>BuO@T3 z%96MstdPFYRVIdw)pz2U>>K|KYGYhSE5lDJYeS}H3ySwXc$`#}rV+O}CQ!{*2e(jB zAvE>*Hp>JlCE|(&4-@OR2zi!~Vtw$onG3@$0zt5>N$ke}YGm*(=^6qjPXL?@r| z+-sNcOFtZFtG!}@W_c+te0n7|X?TdFo&=O}J$^2DY3daKH&_TAVt|G;#vKTgnH?pG z6+T6Uf(5>A#IFSq_Oo%aA623jB_FsEH&D`aQ8%D8vjul@M(G3@77=T@RThhv*Xf=3 z9Sy&}8umQa=g7U$!swAB2P9t{Lx3Mkt4fG(S*Sp!Xofp0gqQ6LZl+S1saWj6F#+eH z+D$oVL8bh`XO4fkPdSuCol!*yk<90xNj|^>WE(lQ^?Uo|QByn9Y_YyeQUW~bU)xTd8(!s6rBJCD%|B&udTpMnlTt~dsx>dB zI*13BHb3e}R@WIe`VbGa?RjlFYFM?$s+9y+_IY%sJ6ov9Ln3O^Qmv2YN*=gRxbc)y zBFmJPo!BamxD{0D%+}JSrb7a;Ce|!H)=kpR+=VhqjZP;}{HszwZ(fgNzq&?bvW`R* z_)0OL^Puh{><6zL_AabERZ}HZ<9{VQsILt~Li&L6M)b2VU#f;C+}qvY<~wNQ8s~o* zat=jl=+x3k^BTHlO@jI$uLL?4qa%u+Du6?ek*6Mu{{U+B{@UC-S3g0vY4+|Sy1tgO zrE4m&`5cx4YMH4WJll_G<99yNhj!xkPyU(IwJUu%$+!ie*@1p#`M7y0kyMr%02n;vZe(vDIrFbv?WA1LmBVE%CUq6IIU!Pa_vb_l-?AQ}29Q)Im;a_O5C1 zZAhy0)Ol*BjSDK>E;b$2Zmljk^KQI`IPq(`?S={9Vlbxe8E2d}PKl#fyi!!SjZ0Ei zwcf6FIrjO**5M7^XwhB5WPq~gO0+9bKc^pmn?wP@1m8OnyRB;DOkHkwD}$0*XsdEL z94$7|$wYXQZf;5T3!WV%v7UzU%4h|8Hk&)KAg4-IlBf{AhGD1!6BbrePR$xj@weAU zuk*nK`z(^GO$SX+Y$gprDu2WF^mjHlWXB~XGQDKVA*YPb8JwZ3#zM*>ooU^sf~Kzr zr~TIcNhytp^m|bS^oXG~oN><(IAhGOm&@$v6}asmsKiDxO)A2w)hC z^YsLOLG1BD$)c^ncz?zJ0E6u4KIFt41f^S#&+_U~k5%>9GpGST;R^k1KA@X_xAyQ+ zokzHi9-SpGKs0m9>Mxs%ctr(bdMtwadGq?Pxb!*!`|~l)`=ZS6)9`0AIH|;?;q=r ze*1d$diULcc>cEf{{Y2Bz51PK^)4#lZVBW4f2aEVbI1G7zf-LY^(*g}{a5yXq5lA0 z{{Ua7`2BtAom;Q})6h;u3-td00rd9QTk95}5A^>4eg6Ov?!&Et*LNT9ukPJ=^^J}H z0N8ub>%**ibr1*C@&4caZ+ks>dUWRDX(_-Tu0VPE5I?W=x%SDcH^_9LQ5WaaF=9>6 zw}7DOIclDiSRy|1H6+-u2mO!d+Ix@e+oe{Y+Al(-0$#OseuYv;*YW}Sem#@OdpbLe zXQ;KALmgD131w5INBDwnZT`Q%EP9X=){FO%)2=ryP_VYPW{jWEZF>*LBkTP=qM9MA z9W9B@oSui?j_c}<*4|jHwMR!Z)8#85ql`xrF+((g6`n=DgkPyY)7qOWWn#}LJ{pRX z(T${L;zd;zB-5?&f0y6G-MjI#t8p{MMk)7BQymlK8gNzOXN_2@Ic+mSBv4cXsB`Ww z=H2zT8>hF0fV7Cv5Ay#2vDDMcyIfXw=*16+K&k%#C(EkxqkWEH^)#vDcZF(5RBUGva1u{R?< zm?J-LLcZSHanB_ApD-$rs1ZXX%!65DYN}f}g_WZhk!}UKx6qoyZ5)0j!Vp}q0a|`z zG~vX5E{UhSkoZ=tgf6Zm3jYALY*&v1pGx$j$7N1-MW&>xix)`{kfYSgBPCnJNn=XL zq9`SOCeJ78AZh23t4W&lk{d)~w5camJr4j+spI9+sqGhSU2?)@l#yK^0-*l@5IJBm zP`oo#9 zKzz>wQ|iY9r55&4tW7=IH42wBDp-S%w5SRQ;G%@%siLVXq8P~Ms97bNX$Zzfq)Z|| zyCg-S){x1;Ge{Nec(=Ed$2B0Stx4@1Y3IVU^VDd1px121?U5)H57ay>z#Pz#!$QRT4_nlVoWd9}Yyupc9W;kR_~!1#ntRvoRq3E$>oB_Qe+ASZc_w zEB03=p1gBjmPaHPqDHcs7i9o2M%Gfl##ahS954k4<6fL7vvl))%_I1QDU1A*(j3Cd z09Tqtp7Tg8djaVjSn=+P@vxFMQQ=b`Bl9)M>vG!4h8d8b95;4pQRoFQK4*!~PS}cy z${6Dj=4o>D&v4Zh(j_B~F3?iaK(6itWDAxJ{=d`Puoi(8Qsrci)r}9>0O>XA!F0}F zZ+Ipjg#lsmW@aD^=Y>DR)_jd_JNRmvdU~95nvN2lCW3l~W>vWJFb0^j-I(w`wzwYJ zouDwO5R^K+uutvs&QDHR#dt3m%Q{TDII#??`#%;i27IedlQnrcux%7iB$+CCM3YMl z9$M`j5A*7)E2+2(&C zn$o=^YBTB_$%dL*b(zGqFdC?2q@!O$IjBbc%gw;hg?apYDQl8Wt3t{NsqO_=)}xMn z0U7ATS`$URRdS+$=^>kqDdmq-Ub0V7nxo3n%G1$C)6ulXnUXd$u9Y^Xf-$b1HvzfQ zFK=oa>Y=(q(xpn)n9mLXa2$NPPOoJxtcoLYs`S-TDaYa`3`g74ni*Rd8zdp6$j^{z zCa4WDhMJ1xp)m zIXL~DL!#`3-58lE;Ke*u7iiXL>Exz@Sue+oIw}2Q`rnU!UFPcY-I7QOx2XgJ{-g8h z`FTz)n)xO-!J^}&Fk%PJhtuWIX^`BpVrw0@T~0nY=%n*f(#JE%UQIx#@hR1I}BgQ1na+x2$K`<^*#Afqt=P*c?Z0Gpvh2i=$|+89LN!=hAh zkOhphIMfz5R3hTy+#kn3;q2iTQ1;-jh8cQ^cC* zPO^WoGe_r)%1NhvYvu}GzoS>g=AU3CKY7UKT^>`nfj*^hE-(7_W;IFZt~*ks#L zCb?qDauoT4<^HZ7y*^@JY~$BnaL>|jJ0gS3>7f0z=?&K|UI-HBb==j5kk$!5?Q4%t1Eo9XtC?d;qen>&rPVD& zpfI>3=~Mov`V)U^4&gF|6Uc~_^FQkU06#?QwAzC00Fp^4aHIWS=INeH)+U<0YUaz+ zR4tW3ikwR>pmhMPXJg3!0DZ@{$?em-gnIG;jImzk7>)B*9rzM!jb>(BeovWqRddc2ldyiW!y<548j z?DFVSxi=~8R<`MLaI;*nsSyu9n}4hPohzlwHs3Kxm&)p!Q4&E<%9%cj1@3g4eNR76 zYNwQKv@=|mV0^s#Ad1j#`j*PaOmx9-PxJkqJFe!+WCxoSOGh0sTZyYDRCY!e3<3jv zLjM4seW+XetDfkjNaOyOr$`RZV`_Xm*(7PJ!4{&wpGi!$T=jZspKxR8B$$shFeGv_ zUE5IBUeSxG=GVWpS2D!(icQ4>9w1Xc=KlZ>N0u=yy=G0KSrL8`#EM{36we>Cq|REG zYhr0+sI8}{%!t2oRje&FIUkW6PG3sjlVSeH+F2iMvqpIB%#1UfkLSbobZuvIzTeET zLvohYz|q>@nG~t~`c7fHE3D~OTC8nGGZe)NGDOQx!M#`483>}}3tSdH(8JApO$#QN z+MZbbzF%jbORxD)n&&AM-;Hpf)~((94o}$yT$MfjY$B}KJ(=?Ys91N={G(XRW<^B$n$0))E zsi~-zv1DCy<72L>YL^V$-6^yrpMVCGQTg`RViBGD+L>KMllw4#U>zAe0Jw@25zzL@ zp>&FWrl}t@QhhpE;`Z(bDk-ycRQXI%h_O|!l2ZZ_*B6Fjbc18b0DwNWx3h~oOBq!z zRtJff_^UzrAM9=y#FD6m!qCx9;-GiP6+>0g4~92mULi8(em=KucN3jChwpAp2-X=jwWg zjoTD;=34CQ)8i>Z3pmS9Jxj>eB)dtZQ~2-oOOt<~{Oa1)-L*@2RU@bIl56v?56i3G zZud6fE%wm!O;i4a0)Ra!@mJ?T_Vm?{%3>j{ZNIlR{d-i)QKlT6)XN%*(pFTJ z5v-i)C7GN3Pqtu@9z$tkV&F4j$n8FLB=GrhC)1@D5M8uGaosm0@YQN#1eRYa1zt4s zzysHzKOeVu7lln-4l*{dS!ta8?-#%P36JS@Cxx&d*V+6#ZQ`w6Vy~F^zn}T3&}Mz> zYYs$H&PS6D&-lsz012t-bA#FuLrtY1juw;D@xp_`vYuR_U}j76^dx&Qx3N@BAw^FR zI9L2V5pFy5lFg~5ETaIEnt4{3Kb<;M3mWhyzvt+#>iXvDRB})IWX0bAs=-V5=qG~AS{IaN;Q}`2mOz= z9t<&puX3u#{aEP}ZVM{{Et$}Kzr*R*3FgYXAkV%PO8zsK6aylri4d|RiH4sbOQ>wq-@_KJM^E={X; zhU`ZM-J(Egq_F^>Biu^Y>^1px7FG5SSi<#?;rG>ibqG{T3^P)x}d0qA@rhQdk4^QVso;eQllGg5uiYsJJJ@ zktjU1R*Fa3Nc9vw97nawYZF>r?dXy<7!L^~C)6oZtP%16`WlXz@;OYD6m5~F#o`i< zuOO);jh4hURXt-1LnQ@W3)90lnEI4c25C!q*u%c z==I`H4!09Rvx{l2Co&{>?2sv6FzWhfV*J$)-$^15R z9aE9cb-w$gpy{sjlAe}xOD<2Udy8mdHr6+G$3(0ohY^#(?-*tgl$#){tf}>m<+)jr zbhnd$YOmu&mk@wzJJ(0)wJS#bK|@VCfM8+!yuha4Z)q&xHp$k&$u%uZee%NR>?_UQAZXJbV|8AmOh$EUU+f)!)at>pE-!CfFBgn zWAhoxIUX@REGq-5Mh@QXF6V{rC4$}KVXIVFPqsE*(m$eASbQXsDrT-&+$ACy*coXv`r_^+&+MCnGDl9dAU!ZBC)=`udc3}FIgnZp@x{Ce>)7({e2&u8(&0uR^O6~sh$bZCkhN{=zoz3ct` z6tYnxIi0EM8RCX_MJj+WYFDVb%;HeNNH_HmexO{f$wr|beKB`v862)EGJnfYmsS_n zJA|5O>FMN`!6Xe^kJKY3qJmaqQA;(M9V;=jGsXxPVb3bV+1}f7QM9R`JU)J){Kjcd znBaPice_wny8*7WZa8luK1?WnUufv#>>Tk$riae~(nQNTU4)4xtsqARSk>0rfxU=f z!5+u^P3D~`t!NEv#;7Kk#}xL_Jr_WFE}_&9X5 zqG=tBrHBdpMl<5(w;#dU+e7p+>%Sz0~Gmm9l2Ch2~3>V=l-u=ouisTQK%~$ zDAWlJVQU69u(=-B25%G)4M*qs^j7g9hJ=Ar{-M`tD#=vDdQufE+JPF}4@e)2pZ5Of zB-L?Ig;7)UK40qN)gB!d;8L!}gXBE=pfBf7{GG8MHTK4PutRxzjX$xk)%2RLn)dvfw8InUv2 zlE}v1s>S7Tc|1ieK0_Cg$ISGV*!ub!w1TFNx{9hM zj%cJsk~dPU0SDPnF!HxC^4{@zwA|ju;==UQj#(HG866w~8666;ka7>LdTI^NYq^Cc z7PUqgr~v%&>JAV1PfZf<-lM7vX4=UMFcu%f7CRr!%o14pD@%Rp4Nc21{{T(?eyZ17 zLl5^D1OAt$sB`^MQ6s#xMwxC%MOxU!t-^q;K>GVxt93vCP=9AhE4DEt)PCNg8lJtW znZDjxAdLD|eDwm~^)MgzpKpopKpNu}`v*)iSrgjkpPy0}8?+}@YJ8)m$qJ&XHZA_R za1Z0#g5p}yqt8_^LB(Y22k=}^{Ou&Q?e&BF-M?4r`s(8T-0_?EI&Z>HD_v92EY1*f#Ufk)fp0N$4sy6eB4+f~o{pUr{xn5kw0oi2n{fOWMm@?Q9jHcDuFYj9vF zYp~R+t&6Wu5S$f0MRkwX(ztc7)Gu+Q+w1H<&U?7qcF|#PITubc0P^Zh->Ts)4XmqHCV8XsEI%ltmQD|U7V*Bw;#DwBCU(ZLNgP zJW95($(xphR z*^^EqtL@7GiOtAQ4ZCS7ickSkHH>=dpdMiKq!km?PYdVj<;P?ml>#PzADG3}nn=%EzN2=(}bQ{_QXObVWqNfX(k5p?EKK`q-*O*?6%rlG>RjSX^WI%0zlI5l5$ zSCEpTqC}QQtA`~=95lr1r=2mh^wlxJNTbw>(o6Ijn4UeOg2lVcrHLeJCsNRP9Uu?~ zm=!-VPexC;ujzPEMiD^(DMqV)A*`~J-bR6bKn|Sh@su-C8socT$<)%Ukk!FcxA!ex zMrwFOg>ksNhDJPW5-juI{Mz^s7CM59`%yd=QHOXXcDSZ>MCP>Ms?Dba*MQP8YeCkn zukOT)18qV$7=oo|g;WztyP|6#f$DV}3RLwUY)gTzF&g>`>;+;#Wrqz>PfHs`3lI`X z{B@EE<(X_)s3C7}ue7#PTS`hz0giAhrh@~>{8_Kr(!I&I2vnPEgq{M_G6rmsD==l{2Zm*pjM#pVdhbu+t=ZSn$Vi`#9wP z059;QjiyG|9G)ToE8W^oE31W6e7KRv(TPD7vov}2o}eVwrO3hQf*97wf~HbS%*B8< z4pe;rJbOk~66^)tWTC?j6yPd+{{U@0E78A=`Vp&b#bT)LM&eHsq;MaYubCsM*bFXK znsHf9{yKQXm02ij9Z{u~xoJGLDnM9==t$F5zg4eqcDA#YCKE=~QI-aoKD9r{0bg2h z=_cp7T18A#)j0b#;VZZ6Y6};JiUI*^uKMJb4#IbcX*Fvsi#u+ zGLJBz;1lLJ4_f1-Hfgd=Ha{q?@YJj+OIJaTs+OtpI>MJ%oHDRla&)R52ju?%LR+5` z#ENx2^Z=@ob$zGhzz^rqy|IADHMs!CQp(PubbW*8#GlwYP2;yFKD!|khl}%|pF)YzAl2SaVG5aZz z{>?gC)#V}0!$Vbu&(N$C^XRCmHMa1?hSI|YGJy;e2Vc~EN0I$Kn8|Yt<|$V21z$SS zpCCNG-#(B*6WKJ-+}Sa97#et=B3p?R^5N4~dv@beIbR)HlbhoegiS(K=_h9LuR7$^38zErPFl)baLX`pIp z4GlC#Hv*DYCRb2n7654u;s zKl?Q3!VR;R+In zASzeVEPp>+oWpuAVMLbc#EQHD{{RUY=`-!HS z6-F{ycU4h>P-S`_x@aT?(Au)5Fk(Ofw>ELl0AJXCZK z6)k2eP5%JL+10U`rwa_kMdsD=AJ5M;=oxwROK#6|2r_;Yr&8(wNa#%zaY{QVI@F6VHPTEP;<6*z(1 z2bZ7ux)31UGkuU4O}5mLN}3|7lr1_wwP1`@jFKHCPY086bL`CC+{qnnth7dO4Qa%B zf2j0A+hku+UBhO7d028~l!5&zrrhnP%-W;|P7D#-0422!F^7a1!2TxU7GCYnn9KPYo zWoH^oQsUIdsGAa(L3Iu|u`7RThR0<*RJfW+rS#$cs{UOUMa;9>U6En6!EX`#Qf8k# z`hI-~+jDBef}nz0EId@~2BR)URg!RQKU)$`usHgkVmnI+w)1LgLg^$wdWa+I_z3CULYVD(SpAGG!Wm5_xXmOqRBeW$p* zf;@@bs{YUObh6sYdx1}+kHl^j;y%uhn~SnG1jd#*P}Enet5YnL?93)xg>$Mi>bO3T zxAsSQ%r-Lkaf>Ete5xx$>;4>5p&r@Fe8&%r={}2cJE+vhnB(?ly$4l0(vrHmaXnm- zLL;(L!m?8sz~Sy2K?EBQuh;#B$fUh#=6@709+V=Uym}NtvP*4mAB6}nT(Kdm>FfTl z&!qd~@Oz3!o`tfwiinBRRS2p!_PT7=4(>^FOnud}dz^o@jD$ z;Kd}xd}Y5*H8`S-h9xMS3pD-ewEqW=J^huPALyKAQ@C8N*dFB-r3 zy?;KHHSLqc$wHJ>*w?^SKkg^mL}r0mOS^)v7+}mt)D!H=;ik4QG&d@2+lZjYpQx`z z7R_mRw2TD}U3G?N)cEk;v9h;k4ifEIgz9f9#akaU#*3lGn= z-&1OeKAr;C6vK>h`S3jxvhFjpE$zrlD&{us;pyf*YhJS9>$8=DrX1ZCO=6TV8fwr| zvbLZ`h*=6+KlnAjt^KoYHSC5@tA;|S`a++ue7@eAzJqOt!hOEt9c%pqtM-sTcjL!$g6{9cCn1i1!PE&VYH2R--+l?TTeh;)~n6~-V$qm{vR2qM)(u4Ep!X8@PEv1gOis739%@6v$YI+8$^P5rY zAjso;H!YINLdIC2q*FXnDP$DiP{kxSJ2VMqMGa^VpLI#d^%eU%1-FmLOmr316#Iu^?>xl>camJV!^MTDfW#a3 zURdOd50pkx#=S3NeSXngZ+nz7X?qVI)6B_4VfGaTTNoOsetjF*^1Nmgdp+I=E^?x7}d8o-2Q*k_j1zQqhJ`*`Ne78k}$jrxZLoQFpT6?Ql(ZxIyDus2a>u z=`=oNN&rCf)ufMAkPo8MKjNHaZQ*W22bmL@fo^n#-oRgaMq#`Q5*QPqDO#qwnm(Y_ zH35{ViNQQ5)vjyh&`U#@rp4sM`%a4&hKD8Nizf!#+#;JNE#|XS(f#%zG1^yzm(m$`r1#msm^VTl|43IEJTLlsycav3|o?l5MRxWst+O& zWmW(JV%C$ZE8341GMZU~X>C572Cy?&+!`EGof1QHw%h{K-6gfcKBbOCESkraMz0Bu zG|e3W;z%_hCC_dhi;Kmz4sSKtn9RAOdU^`l2{*)5u}T^UA)bM;xEiYLE=2heqY|br zMvyv1KZuewVI{qbN8(z$&b$eC3^D*I*h-Q(0wc{pZ6~YTMY&zOy}DW(QfgGJB~A$; z>mUxJH7aGr3ofD7y`MdBc|7(feOAem>JN|`Mk=cOWn9v|WZjjp@}#tKMZ78CUoInX z3eY3_oR@;7Cyff%jRrXcwl@LpmOFdvn`^!$BvPTl%_>KAYm<=GpeKlOHCXM&yFjWx zfYmAFP=i3fAxe3u;nfc2J7;qB{bny@Z(7<8;Mj07oOagi2}WBpwCN{bBjPsiX5w0# zd+kb?(U-!M^>gCdB}pTvkp`c2-Rv#hr@XU_+ingh{urV?JlZ2z+wCi>=jYIeX1{xO zT`#7BfcX)OA3^6qKu$wk|ze#wN=#AlyGGp z8|m{T5P1iv#-yKdKH~}Tqzr%`KqxEcK~q6rD&wiQWxx81c*$T|gZBRbtJ0rmMvrXn z?M|XugISRn7{fM;*Ut!@tYxKHh)PrBE)xSf|%pdmt&xcSF0)NZPXSjYJk-Y)ZQw{BY?*; z6!Ak2Ru)ktY#HNHO6k)fkCg|XY}-i5CalyPf0y}w-ho@qu#-?4XxKH!%}?$8#d7Bs0A9)5jftF0e+r<1*?q!m6aO2H&8ITHt_fah~09x|LapQZ*^2LCrw_05|!1 zjCVU`qcBh$9WK7K;7|Gg0Ljs#+WDB=Qzx08Ek(7fND?Z6$Y4M&u}P-qpH0oj9>n+5_Fp@bGD3~|p1&_% zmPHU)9(PK`>GSmKQU3tvW&Z#P=w9Qk-=8o(5Mt`4?aaKqsN9V~>*Kvgeb~}|m5Csz6 z@DGj;DCGlO1ovu;);NcJ+Ag-6rrmbCUl(p?W||cgbS!Gp#5ggnT0}W;ODQe_K8SgY z6?P)Fw;Ph9s>kH9^;Hx#)D^VzQdZGc(oFRAbd_|q2^{p*RMW)CByOtc>Q#Usk7V2K z#kun4<#V-f7N#r6nuJspU~;aEFzDipj4(m3%cdieD~O|>+CcC+f~+_YdSGZ6AHe*7 zz8}}wMLOPk@D8Tp;E$>Q02BT{UwWriJ!V?Bh?}4Ft@!$Xw)dhs)q2nTLBFr|ZT0+p zefpm+xB2z|)zA^#-|O!~`E_db!&&$0b+5~>5>LN%zq77Up?6gul0V1aiJ;{r4=uV^kz>=xb%cOz{1Q0w2fzr|0Cdxx|8BW&WTDVEh4N?3-FDj;~vsgqe$a3u+Q zD~lU@xSrnLIc`||AfAsl&9+(PMQUXAzJJC}pWA&E)mS~Rh{LWe1uPR)eX7V~6&@h| zZwY32i9b~r(MZh)<<$4F?a|p%-BC6k-UfCWR(;2d6;!*%jcOKhl4I!h{^84*zTQUz%4wGu1S}RSmswfv z#QksV!Y#Je_R(D3%4V)YqZJhVhH;a}kDp0q-bUAUVSS(Uiqtzz5))D64zfi~0RUim zbf%)}%KDfjDN7b=Up$VL)8sPyY)=g4NhFebTKekRwSty1W2cR#P$Tsc8LSt$NGw`9gHw=89B@%ljGjFf&CO^fQqw$3qzx*O%|f&Q231w79_L`Ey8uvhwZwI< zNJRv&$&SEKLl4`!Q7vslBXf6p{{RtbYMIz-m7IS-0Kc<1wvf?>XISImMF;#ozd!JF zQFqMH>v-BZE-nexS1LbZR)KvK51A(&Eo0c*x+-}kJF2Vg0a;#ZYUwAMtf?X~Jur@; z*-=O7c?uo{tUaoIs3dy6so2-ajZfRgzhN}sICN4s{k`N=U8w`olw|-fu9Hzuv@Lj= z)bx|e>?*v#psme{x~XyNEL476HDqzll_gc`DrCo{EEQD}s@nQx&E5T00ZhE54CE3BTRJ9N3k~j7E*e; z>};7D`nZ^fqQp%MbP%CrRGMs|oRaIiT@<|5PO&x`_Qag)K(zg;6iVhU+sjrs| zdDEjgx6Q(PXrhYjM*ale407&Mi{Jkf}#H)t3I;ED9 zc+`_dwI^J^bzrfGmMGDlD9`ZhVPI!#Gq z`2`9I@}+T;(OJ*!Y}6Zywyugiz9MQU{>p-yLm?H&Jbp=1SyfF&wFIrS@N5s`*d~3Z zXzpfV9EjrzGoP^e*QpNIbhdjaW0B&PHaeMwJ5F#w;Z6tq9VY29vA$B&RhX)bswr*5 zNmVPsI_es{Ze&)JxJ!#4sTUmkY8cQ;1Wdjl_<_cMK9);z>u*`3lv|VfYz0T#jC7I8 zR$-}WD%&MRxNtb%IVPJ0O&m~Esvc&RcS!-In5Qyu#9L4oH%B;$!81hReHVxG^7-_> z7rQSXgETVBPl`fGA0P!XE5r5^j+2zz;;DSCL01eoWD=x5#oijslLd}O0Hg~}hD#RZ zfw^1r?HHMmHix8sK+vB*km>m?P_PoAHyEyps`+}<)ARG_I@}%66%8DeE*Y}ba~Bh$ zQ-(T6h{beC0|F!${U7gM%VfHiK+)4AvO9*GHK1Z4K~nz! zuz$1BC7#UJOv^MOVj~5rSPw6drw{fz%)cUJ-!#8YwJ z3>p?mr@B)@sc<|^%2|NBTIBx#yn8gUytui%ScF8X`ICW9PxADZ{{U!)$8D1GSye++ zfVm`}Uq6uO!Pl)NEO5&vPLc`2-OGso0By91097LQAy4D!>`!peAX?lgl9~Si4?uf2 zo>J(xZqa#Cx$@~UEAc}m7E)QOGbu@S`*6N0XR-oV0;-M>kFTrQE6oDjEznn&Pm#j# zOgmfLa|;+8$ZT)RTsI!mNp_)KF0WcsUJ6h7&-o8a?Y4N#sV>{ItRxOH3h?ta1NKmkgN@9rAVYABVD?{wNDZ_eZT7C z(1U2@Yn{gGXWh3r<3K7ENYB|%^$wd5?m1Mb%E-_GikJx%meX-kE-!ltIrGQsS29+LJ8UFwUdQ@QY%7N#pIE;sh zH6ud|JRNsn8tl>)BcG@G{?Dwh3~E@kP5|FMQPE|MFI zxbPTBng-fSl&`5WMG%6O9Do>VUonfu6p~Ns`ip&S?7H)sWVU8h+rzt8$bW{N8}0m+ zcX=AhH>Qddp*3PZI#>LiB67RdhFom#lKYH1IPyKFql1CGds5cEi#D~iTXzo?e3Xx8 zlQSbDHk9%=ElnY0Ymv!OYhUPWipzBI%#c{yDPiX!{{UnBH0alG+N8GdX523s5xk=x zm+^7)^Zx)oT8-69h*ZgDQ*GjEp-EveA_*L%j~SCew~*OF@PgzYrylP6iGq?`8+Dih zCJ2CYb=!W^oOG4+@#Hs7K}$$vg(63&g^l!tbx5A*r<1D0-s6BhyBCEN zs3g6Vn(!52`Ot75Kewba!z9p1&~0%V3L4Q*^E^)hPtT!Jt8z;l)1*~0)zbii(bEB_ zqap@vUZA#X^LyII@$BAv$rPwZV;J%S(;WpO+oNv~yh@Uj=H8&1eZ2|4#TE)WN~tOg zkpiWtDLUV=%=9z zPLud5Wn~O>h~skPaPMzIvHbr4kH1}RY=cU%5?3e7^FCdA(`ISd$kFPE40(}HLFdvx zHIjmkc&cgR(^E3(e;aC9i+)Ju7~B(c`1W6Oa)`+!Ye`S1pGNjp(n}k~E7m2*ub25p zO_1a~cY3Oy6I3uM42vI%?Wt8kBFYHA`_Htia1y3TC|KYcQ~i#V$quRrs~STB@1jrhv@M-Idd_{~{!n7PfpjPyASwx8Ab0`@I0O)Qg~qO#KjRx^DQa-b zw6{Loj-ED(32QdZK6?c{Dx2+sziCTXk7q66|1;&$ZT_1R7F zwRbes`@*ctOM=~kn-i3HqsYLt6cNWmS&aTUo5kcra789RBb1dSD4|}MhSqoDSk9~5 z&1%l163j^ifV8bh^aPT8jW~6CYxlPv35jE6LsilM1!~Pw2wY^6sy<;lS;MuTprWQ03AW%zSC1>akDjIkt{+Z9XtA< zmU#6nVi_*s6tH`*8gcMajKO^vjDBbH&qvmzNS-uWd=o-wYQDJpc;oHpgKQk+*!N%@ znl@%=q+`$9iB>k46$}H@7GEMCpnXG+V6FFVNg0|oB0w@J(C?RbDJ_^Jp8?_ff63-P zb?D`6{K$lcjGc87B+QznZ`>+1JWi}itA!`gZC_ho*aGI?;`Qobu((p7gOi?*A6f1R zLPIHN&xSbt2~aQMx%D^FQ{r-dw`B*P>FhOi03@kB8;8_Sr8=-KvEENdQI47fk6X%; zm3nmrhF;-HR-Rz`(B(}H z2&Ykw?F>Ml8Nt`u+-Mw9jZZB@;sA=*Q0Ug|yzI3KC5@zLU;Lnm>SI#s0cxmWSJ5PO zF%U||+>ilZq4qD@uNp$c6Q_^FGyFhsAdVm(DiOf+0p0BqJTMx#Wl5p@B+{U%;7Iv{ z$D<>H%>dN$HA>XMG#X-biBf3O=o(1bMZ}6l{+d{RNWZbwoz9Yv;%Y*)-~j{dKEKHQ zoktsmmbH;YT4W7U2_zHpBh$;&A4AZWN0V4#3=v&agm*S27~NvJkKAAAZa$#<6Wd(~ z;{*UyVEny4f6Jha#gURirHCgZ=j-x6w})PrAyW)fw51A|JoiGPEDpKkGLq7WrB-7i6@NkX8;xI1 z2xD$P#D9;qH*+|RTrt)&kM)13{ku1iDaw&y#fUtAy%T?X>a_IgCy)FO`^WYF09*az-@5l-|JKj| z{ZG9P9c=a2z4flW@7;T;^nfWcwX6ZP&-DKQk$Y{uI(-M9mr-Sq$n50uPy4|4U?@6m zny0P;Bz+xbR%OuP@!kH z;^XQ#{{UFnA7t|m@;W|<_70UBeu8S;ojg=tspOFYv0|rFHy_Yn{pZ`UF06TVwbar8 zIQ6%;@^1Lo_qe!shT)*{y(xs#nyNQih}}Sw%?(+QB=M+g0Kv4Mr{mZ+oG(_=+*?Ck zPsW`}yr*K$f@j4&df7E`RMjS$ncl8HxBZkNqKZ8t<3lo58g3(SH31-Fem;irLPC#2=rtB03ENF14?@Qr{Xb`G1Wa*Lbi&gNPlH1sot`$ zQDWjzswR!nM$xOsW)}d1{S`ssM%v_+ON>xzKW~`Noiox)ndNj5LlY{T)af5*8q|F8 z_Iis48%;FO;UlCqL-a>K1BdoS0##tfSFZV;~P& z6X%W{ClOlCtt^{!$PIg{)dra%M4+FQLgJr3me^{1B{?rFISI1!&m@I#*oJzXteysA z8_h`!FFX$jXVT1wsb*zWu=cGa2&6{|Hv*>vEss%3<21%HKpi8T+{!^|(QN<&z3_s* zK$AiZ1wbU60#8c%eZf&#OH3&+Ih<8I?p6$oKHTuav~L>E95nP)6=-yFs9si9Ym!I| zJ-Hm$Z==Mw(OlFr8dJ)F2p=xv{EtbV(%Kh#-o+~}3esU+RiP!FPt4Il0~jQ9AmH;O zAxk_Iw3XGfOHmiz9N8adQLG+xR@C9>DdGY!5h6ldScKDZO)c){ku@h}4;RQkJd^|F zjQRo5HSLseN`_ffE|a81hF_IbNW|u(lZ^Ljz*03l^R$MOACbdN1*znQf+|?CY=Lzs zjO!4{#5XS;+V&T)9^VF8i%9CpCjvnMPx(JT%Do^B6hT#|j%dzCtwq84;=hr_Gfec$ zn!~VIo=W$Eu%TEf&23FQ(TDWAd0>^3k@VmJ`8Ph~7o! z3k_kePL&|jh6w)vSEf3F9W@LEV#wy}n$V3R38Sfs1s_FX5Z-ABxdano?^U;rd*os% ziW>g_tM+uHz0`+Qy_{g`{6K<#p8@_Jx~9aOonNmbjm}XZFRLp_9W3i$Ob|z6-bmxW zJR>G|~7d(A#17W(5P6W(k2*U$3( zy(cobeG$VPSra$z102+}i31cLf)$uW5`%sTBz|7NH+ExS0O$SZ*=FT&94i=N7!Slp_&PS(t?urn zm0{L|{s4IWqtop@6m8+RDk`d~GSnMiA6FFr0JwsNmENnyWI9B$t0H+EF(9}_Q(_4| zz}MDS5=du`(HRM@0j(?Mcz$>tN&9u|FvOO#ZZ594?jQ=&$Z@CHQ_wBAw$|^f$J9@X zhQ4_9!heNTL#hR3u#_Jjs*gH|$gujb`hoRD^mj5LDj!XFd4Hb09m9XO$10@H7&JZL z=ls<3{{SaNKYwglsjFnlnyQR^l~ip{EfqF4c_v1QktSL+@;DNWH@=&L$J6MBTSZ<9 zDt=uF>~}Enm~@5#t6f9Sg>lh$uETBm$c0W?n{mptY~g%isjDXiqZeuB0U%dnd#|ZS zmkHYpiJ$g*5BFx|pvKY6X=<`mw7vlpRI^qztcooE0Jut-9#R2P z1%W*MJ*RkelBkrgN??`AR+5GNdI6|=dpm~6jWv}qW4&zB$uo&tR*R4WhA4d_{6GT! z>n7gHq@RoVbZlNSgH;dP(yJxev^h+5I_R0Bo?|StJO*iHEPxVS`9|_Y2tVup089IA zEo1}|20Cpnl?^k~{?+a3?WJE$M~E>Qa)c+Aar>0fNQ65`Z{t^wSkf#cBQu_S(1<#?=|mF4qgAuJ5*@)+9zK#*M1>H~RAY65;R3OMgJ(#|wZ{Y- zpRcoPOZI6M3(yWHp#9d`*0GscL9YRd{(TL!d%p#Rrg4s`foefNb6aGLmeX=Iqpv)c z{01ERFn#LY2+Bbq4d&cG%lZ8JE<0t_?22ws_+CrL{3G)99Vc71w)GxKDl2kT85#8; zj-H%6@H@SU4k86udXBC*w?4|3cZFsWxo2wrU!O+fV7rn76frDmOp}5>%Ke>9s_y)p z^{`VzM40?(B~p7t6GEe%b`D9>2jq)i-EKLPaA^Qg65Me6Dc7LoTPWgZl2awmoonho zU0`1P!OWF7x;&~>X;T$Qr9xzlwI3y=RSduc`jQ9q_R{k!O05KJN)en>?a!Y|2Pw+0 z9n6qXxQd*7vE|47{UVpWcDB@`sjEsnjZBjWUEZo41j|#X#8D<_%Oa>G5NxV`oZH%H zx3OTZV6`Sj97!C1)x-Q98BNP~`;@Vymk6k}z&=BcMSnhn9q002Jy@|*-f6$T9BY%M-mqqgY5KAUX8_gVay-xI7PN{7|%YTC)tEoO@X=NsNH1 zrvr!O{>Ss^R>pSC9b9z8=PKw#;T~AyW`<84^l2nZ@zvXG!y78V460k^W73rP1%{`=5LJX@g!=I0*AwW`Upm3m}>$NgXGJuEkuPWGtW(IEpY?uSIZe3enJ4}wP$^-U zvo(CAw5Y{ER%t+XR4z!cZV&qd?!Quxt!6Y+_>NEQ&-i+zcG9axU{cIK2;uuNmxc)!$xrzQL+wNvD!ND~rl1hXKNH5Uc0+Yys;Vp%0J8Eg>`NfHnk8k5j@(6m z)x*o6L``c1&W}E&UIv_ezn`B%1oCOeP*SpwJaI=O8CO)Hn5w3=P;TE|EPa?gL=Z$r za25IIg?c5Ay5{0gdkG^PF~*hY&{b7MB|Ap(#EKR-7y5o~s^v&>FTfV|p|z_a1TXr( z!_r`pGRPTA9FhK^`46kM{~KR zvP%*Nm#6x_)n2U**CvVt0G~f!^?$0J2K$S*XeE{7T7eLV1d7!Wp=orkoo^xVg2eto zBZ2J%yV}UbK%g8m{!@?g`E zrk$+vm#0Zp=MKe%*<(@9>bKPj%`9)OLO?t!C=Z=L$^5|l>Cv0pz~~Yx9Xx1iN0vyS z{E7Ul&_R{nJD)AP5(>)3%I(=@3spx2Oh6QiNlGe@Elkl#5MF$G;sA0%KSmt1(up0* zj8{HhoOpbyI#`jx1+fvRNrwYZUok*4^P%bc?khJ6oJQQi?VL^`IS-E|majPclrOFR z^T!q{D%h5uV46|W)(GUA`&x|zi{XWh61-cF&jPse!2J3^`lQ1uE)L!!+EP z;#EkLTE)o*{=*k?Lv+mX+AoGNMy-EnBm4vN=u>SK(!;9i{q?p*03p3QNT=DKv!g$@ z_m=bCl(>0zK67bRJHaeN2VcIj*$U^L7=V_ZlB!55^iI)4byM)B*HFbsCU$oh7mF3W zzUYuS6jbpfVn`JHSrr4}81oe)pxxb`-(b@|;bAi+YGe>bpaO761XKckEkN z&%U>}aOA7983?K+p^G5zjujeQv~;5%S51n?)0oLZs3CnT!je6Qgxcisu3lMYtx2d1 zPx@lQmEnLWFb6`o;E|yEO}@^~ID*i2@EB|Vr-|syb)RC=_EdC{>pwUJ_uLP+rekgh-= zmPI+m4i6Di(H`TrLAS>=xAI1>B2Y1mh_wn-cB`HriFkR?bT(J@4(Huie2z8oyM-Z~ zPxcezve+7&%Td(7`E?X>ROB9|DFBd^Ni|DNB3nbK3G8cUw58gz&pM5D(hP{tq@MMu zB+wHZC(a4UKT58oCf-pesY%Mi>#TCJ=ROhOX`LpoDKZx789FFPj zUclW{^p$B_E<3oky-#EH^&B-qo`#*bwH1EX-ITFW$g-7_Gl`6N;0Vf%NBSv&85E!zxMfRc zPO6>f(R*{G`wm~e!BOqKrMs&B%36)Po*Rp6<1@?|Bz#iU`7`@gr3}R-$5*`2)Ka-H zPV3?!Zt3H0yK>$@zAVt!S<$7+{{Tn~Ha`&0sN>MTYq>DV;WHZ770<}zdU@A8eq9DT zHlni)m8rmGmT2qob#lOeBgxlCOtLBM%giO&qUHII%p232dB-J$kSn zx84x_wHTGl&XXWrFDzAhDjX#Al2uc*boEg-l_*}$ESI@obb?ZpA3lM*t&=DbO|8-CL7k>Gm?P+#?Aac#0aOL1J(-ntnpG;C@)>6S!DAG^$XQ zplSic;}!MeN{$~q^d`{mc+2=rQnitk74?aV`okk3H&}`Kat+BG6JZQDst%tLqMvPl zXQ%rklu6t0-jyzUiRII8??Lqh|4nb`2_`YZwe03UW+ z^78m4&YT9PkmFzF)t_$gBKn1l7Rg$UEI1EOK9!Z5j+z)CpvJ};1@ThSB5N~FzojhN zte`*9zMn(D_HjPt62l#}tbe2^ss(j7m#?p%`8p`H+GUb?ZttZ1V^?BnrF_mQoN*s- z9-;0Wr`^d78WuCE!j%R#(hj%_v*HQ^L+6h_FO`4K)0D#oMkF5J%g1c;IXyj=rswt$TsY;A? zYadw)tn@jICQ2x4Xy=TEhNcB^^!91VT)}5XuP-tPMjesVd5F zK_H4Ai2285hkLe@Z86P#oFx|N+ch+`@eM}FQKZ;{221lq7E@eW@4G?;*>?zp z@PWZKVo0k&Qw)KlKVYT^>m6ZPVKdrXxHphFjp>Yl2x@9#1E~%HHKET%_2bq3kZt`x zudv4sojo;AOj+y&&){49f1tVdy7B3=$Eg1RV&Ce2!}0w;PuJe-*QwY4*ZKbd`}bb! z-u>6Q>eSC(5=hs#)9JwE{{XS~s&%}Mq(ZZ^g+!5$-~=b}{`=<365mf~enxUXCMd|v4-vC(}!xAs;Bdg-ek zf(Mw8tXiO^wy1%%1}NnEfO2$;{s{L4^A7HJi|M2aQzQi*gMs<{>E+b#vsf*KyeUO7 zs0OF!34xcd8EWSoaYKihF<5X%u7d&(9qS+8QXLcr; zuOH6`kJ3fPBR+HC=B*GHC{Z{q0bWR6cf zkCTRrMoyy5p)SEt0qXi6YTo)QXiSl9qEcR!EKmhCtr#f`e1&*=^iI&;%^-{SjBt$v z(4dit1XHxNRC$^V`gM*i=UI@?rq|gWe~Hah#PyR&kj-VQr-v1e^0Lz{epfG(Y#thw z*-*_>;;F5vSlClRFEU44OPky0mOWOm*~A%($*7PkfD18Ejx0f~4LwEXwY9Z@Zf>vV z*7`=6)kdbLbrldh9yDD_i&3qI!eHmS1AlG&nr&=8D+j*!?DP`j>M>he9WEbfZ44vH zO&P1H#^dS^@Z3_>p^0x*T^rReuT?yC8e7))cej#CmP9;YX=fu!(*lUArIyq7cVrlRh^M5j z#Qn||n!h7e6k`(((7>f#J#2LK4m8rwI8b6p=AE3fnv3R1XR}c4cciG)11Kzh9SRDc zS}~xY3~P?IyLZ%xuI<$p#iUY7wwED6@9|uM4Kb}&y~UM4&q_RQ=Evl6H1%7rHJ{s3 zW3ezp0`4kYZZ{Q(lAWWdsCqnR-IE!Jfz_v9U);)dGO1?Zd%e82Ydn%(NjQ`!6>T(K zG_IcvB8pek@f9Z>H#AoX0FK5OC0CG>;g&4nss^T)Tb>*=j01t5hJ0UP(BoyvP*U!F zua%s_YAJ}@RT*u;lB=nWG}S?j#Lbefl0=1o4_#Q2>E)4D{>?vlDURV_xM%wz)=hsA zDoF&61>85P)1rsk-e0Dcdnr*tq5WYRCQZu48wAwyH^oP7E#yxRb4 zhw&nzp`<{_$~Xc|Km*W`Q{_&CZM9#M%2nhisZ3OH$*CLdovP-E2nx5UX`V?6sTNhy zbIpeX+0~4Ud}fwpp*#kEok{-y2iQ6!+#`Y{w@8v&jupT^kN^+2KWWcOdaOr=oiVhO z`AF%OEmKUi)b%DslI+D}XL$p=8G;-e`Qe8@FrL-j@t`)Xb;ZY?98YB#>Jd zjN*zv!T!k|9V{`*(Ob`aiE=YnZ2o`d0FHtE(;g=sO+2)^XYhPOYJ(S&m2xP(D>6g1)urMP!rRI){oTfpM=;4Bl0sB%iXK z6MfIUYO{Gkho;1$#T2aqWv2#c;cppPJd5HniGJ}M*jd@S!r!Xo6w#gZ$;0z;i3>tirM%~ZXa*ctU%Sx z36nXISiuIOqM}QhO-P)nGBt_07t$_ENmATT?CDjl#GyZ4Led}DKF*5`Cg97#9Yq8v z$rLxV)4)VZY|2WrdVZj_*XeFOwr!6dmn`EM>5mhgoad<@H(m%w9^&6%A>^_ zmhxW5O^vwY^X{hIKqMx5c1woQ+WlA-*xfiMsmCrS7c(Sq#~M7YS|t&MEhnlqLfURr z+YpJNQkXBX}5=PapODw`RbkHVdVs!;=T7JJ( zKTb(REoVGX=?9~mcrB6Hs-=iD#}1U)FOt-hFyk=zrGat`zA0)1K4~CpsEElr#;h79 zZ|vKXYw!=Z{5!$|h^V8^nWtJ!w%Me4C6JXTg-t$q{{UC>>Bx4jK9Z86w{vdHg?&WO z`Y9>gzJTGa6j4Xx2>fzLV!zi<9_Y~O6;xvVUEwB0OL${g!Qy|_Ub1!PW>-+lTU&#` zwDfNi=&#BLjzp3@ZmIi-5#o4}fIKKan_T=CYXW`1@r#^FIcyB z@7+84y>K`rtgEi7nwDy8UfiORvD96VqP;9kv8qT&I@}Xs_&(G@wq4)N;YDuF=g1D9 zwTjnnfZR^%sG!xIsrj0omw4}qA15>M(U>*{?Rq+pj^2EY9Y2y8biAfmn!F@P%uk^6 zYkhuzQ6INF#UNH2a)l$!$M`AGa_iilMzv`cUH;rirkDih@(1?xZZ?0yzmV|J($duJ z{B%@N)1x#Mxg$M54H;657M?{C269-dk;fj);P%IQ0BdN+$eRBEgP=A40J{8*;xjJd z?In1s5I>n8%yg*9{3Q7SRT-9#3%9Y==?eH=@{+Vc^|p{%C}Ule$&yZx-g>En&)c-EEtk5z7RHk!XOb<&g07>hl$VX^gVw&NhcifGrdag@YoWL#e?xFXcd+hOrjy$cNc=tD z;OJQf`?KBv_7{lpj2iaw^2z>v3;RKGn5;B(*^1m+&lBl{Wa#9L{AyG6y?lI1azJ{a??b4ah@ra$edQ3K5+R{%UkE;x}D>DIt=+vk&%cA|gr{ z(l=9}Dm08`lkh%_ZV$CG< zgUf|${-6T?073coifze)9V#f^et+uygQZdJ!Q35310&0zS8?x?M@=nMo`%5U<%-Rf0Ua404{`Dp>$FIj? zDDzc>s>4|&bV3Y#hxD}dV_2j`SwT}AZq{yCSY5c>)UZ{rkw4`0{{U8cQ8lwN2;Npz z^8j)Dy#D|)KF*O_hN~mJYGPgQzmk(1BJ2L{?Z}2s9C%MBiE8RqBdo5LZdTW3Z6H}x zTq#hD6ugXI?I-A|?yT9kI-rTiQ($&yIxtgK~ zU^t8uQ<9bnFy_MFinQB9JM&s!0a zx{*LFByy0JxK%dx+U=Lm8Ml4Ni&OYiR9DulNz^=!DdY!Ajg^d3Ey#t9!2DGM?Gyr< zPni9r^rz~7ksJ4aWofpYxJa`Vl2v`WWih)`2`=0tP+?J&$y8LWWhAuA7*ipTGXroB zw?&2ByGIbb2Hg3u0RCrB^R7B(;Ve;Ja}z9sICkOv5nts_jt>0Z8*^-Jd^2y|*&f8m zQq?U6b88qQdV0kk7met$*nF6Et%Rs}44N8c1xVl@dcC-_w~xTToxZV63~HKz0*6&p zoPkPeq4M(Rw!vqf;#aY@SuL1VB`rb@MGCsohk*jL1PQ3Ua+b(!>*zbmK!O+R}hx{GSHY23=;vFoX;UnAsvx>FX_ za05K@G*SX^g$n*!Kos=!{{R6KPmx=vZ`5S5`+Ki?=XmYvim^xUbHC|g6 zMUu@&M)ikrZ;BnewrSz06wyUfO&v}V=rXlaJWr*aVV*hEE~^8=i)kVe$qd^x7Y@di zmMEAUXZtl)HU5^ZSg0OFms>XGSqvMLu-k+1Lh_Tu(9%N40ONwCb4vM!+n438dwt@g z{{TXZ+d0Yh9a9|U$?8g6HcF0sdda4uSuq`limJ2a7URLVSUAAwl$V6^{y< zbxvP0d!{VD(#UPy_eV*Kt(JP+e4A@=;IR3Ow%uCW*3hwoC4$J-tdYia!ju)UtO1Bf zjA0a?ZL#hUJ0O+(G3dsW;D0Z)bm)rKASX>VK4XFWy?%U8pH#`XBgIKkPq;9d>Rj$m z5k(a?R)Rkb7FH}>IwZ7`RpTUSB&=Li5`vP%@=UbDOp(T6)9+h^DDjk`4V^xpIv@3C z?dWUE+loBKB~MS={!jCLoeP^6bC-@8>1F+y72=XbWkygzV;Gj&UiT$S51{-J>;rjj z8&D&-bt~A-R33+;d9im+nJLs2jG-zS8KE*8jUTt`f=6J+Jb^ry^pFJZS7xgWG1WtA4u7w{^rmrk{ISeAI@jaur~)B(5! zPa=D3x0FUTR19#(&w!{S$nhRk9S~evBpxBtLUYIb=7b+H!`6g!DACX?vCmhItJL0R z6<%Si$p}RxBdNTxN&S;^dk{Xp&lcJ_mE?w8*ERH~k@E-3KOxaUzA-#d+(X-^w@xT) z<_`iq@#YEWK*G?}!&=fz#KBJzh$f{nJSb}r4Iw1Fpemc`Hv@}(I5M@ik~@t|e@#~f zYd~A%bNPLg;n61Hc?_1JV;`*Tkkka|KBFHh;PLh9ZetserKYa?aBCx)3H3Sz^EuZW zKBHl*k^=%P-2VWFwbwSYq;q&jTC$wtr-gpsTJh;V+qqgzJ+PekZmzTjv=}t|Jt%R~ z8n-tHrFtJT`5>l+V|M+gTJIAXUy?!csQ`0gZZGVHYxvO&1&*ar#~swq?G*lb=tkRI zj()I4G_x_rMv96L$k+0rr&?0~0K%R=KGtEozoEWZ<041FcGkdNqTOB!XdwG-^VW}7 zl*885OsDQEYBT#&IMJ+)a;c0}y{+#heYM>q-#xpVZjjRd0ByO}wI?vn0+6H8WK};u z5T3ES+)c3UoW&)=r}(wNITXXGBvHShqn0kv}N~i?;MA4Rii=$gcC6z*Tw%78*__rV0<9B9X?4wxWrZ?G&%u*1(O8nIRN0nyPAO zA{UYf#=0Qs`%Mcqk~LyEaijr$Z(;5)ks3x|O9kRjrFc{P;-7DqQXDd>C^S;sC{G%3 zulck7UY+)M$5d2SN&Gu7cK!w}bu!}cwABMOUpmcB^wjdy)=``Wb7?uvfU++io@R$qiobS|7Km%TswSV4|XBHB!?_c@`vRRKi%U6s(R6 zKm+j-qO>$%1sa@aF;zLB>7)`{v6)v(YNx_HN8%|NYUn3{XRQMaRM4e!8;>irsAs`# zJhm#AJ4=a=apZS?cwn~02HeNj_^IkLhKjxS0%LP8M_CZkD74)pHZwxhf?3HM$m|S2jG3Dn|P9zpJ=*>}nrKX-J=e!^9%!OVgfB_0BGujJa z1`C3orrkT8H#nDU<|W-ZJ-G0}kjTYXwCl5Y@8Qx#O-)OH$J89QCvT)u7I7_H0;XBi zuv9U|8MxzU%z7DxDNY;)2A&`fOmXV+yfZ@UaT2Uj6WiaU>dDqYR%-Ad8dDx;p?04q zk;Ub|z1jMlwFX9~Fpo;>f!w?IIaO6)@y90Y-0|YE^43*MrJ6cwIirOF#|lQAl`ajt zt-y*?DSS4PO@41D5`M$z039QYq|lo<{38m-MjF;N3+v&$4D7+vE*`fwADBqu4f?AGSt!2$BV#YtLg?e6fZy8s;VeDOy!p_MP5vNF|wM7F5^&N+I09wBxO!SMV`FDknH$g`u z?0jAho&k@e%Vx3p{I*JX{N75K>GC-SnJ8YO;hGeUBv1e^sGTU+cf0WyRBMU>V^|#qxKd6rB;w_e68@SWebp!Se01AwBlj`rHnXRt&OKE~|{{R=# ztMb*PkF=bUXmgH)Tpw-Vpn7~IKXUI3oYasJTMv&7Q%Mx+6f8A0vtz0qC35_!s4hqJ zx3dU$t-3!B8+*&3nta=|A1{a>@SclqHcQF8OPP6g$w_Pw95Ehv4hQ^X4urfXVQy80 z>uIOKzAjrgiCC`AU;IU)7F)*?CHZLki^W$TO~y5?fX?x!(yyQr%M9M|1nxdD;1IX}1Or_=2HoiDZC zX4@li;rOxBCZ?n08lyjNpPxVnZ+v3i(BvsaNDddh>>B%TQ zui=nh_UGF-TU3xZqwBAj;r0W=_R##gINABG#%Ne9CME|ujY;{CKtHmh=g}|S9UoIX zISP81qM;FaV~6j*dU~3$expp#_|TDM`VCeb^X(8{50642xua<)byw4X9Ta`j(eO}- zKZ)fdu9c-C3Tjx4RLTfuPbgVj$lzS^+>SW4z1U2g0MAQS?m|IDpy&^*>C;P?im=w> z8y7^3!i{8cHncbU1FpXT@M*xGz7CzZn+07%2lk(|O zI~ta151&@K@%P})_w7f-=Q|Qgj4sv>OH~d6Ak>dgVPz@zLOYpKMNz3k1V3A_KE@kI zDK*naE$$;E8hP~?b62@LcEFRtwvjFM2ra}f=juATKCAfE)!l0iBzR4;iKLzg(LCu# z2$Zs)uDu$EKjX)_Pj0ZYu?Ubts(#G%jXcNCJO1_Ji;MXhB7Pl5PweQ?(^6w8qe#^v zL8ib3U!eSP>_{YuR0eM@qd8={k(sD?^%knOmYQTmOX>`l1CQ!I+xtOrc8KZ#ua`=o zww`F&i*V0eCCE}45nG#%1*~oK{CjQhBG#auu9kNJ8HY{P^>KL>QWcRnzaLxQiyzOl zw^wIa2r4>PX>TTmW{`&IBbuh9os^`02ISl?_OUE{Y_H?#A@)Q9lw=enArhK-=u9+h#Ha@w-Dz}=PHx}iz*@CejldIh% zvYdqx+$$eCkM)0-r53x@s&uZuMET!^iX)x z1^%}7-|ovq>5z2x)&(AJdv`efbxeT}2TR7rBR)($F_}cP^NFKojU0jl2-X!-$K;b^^c;xFK3v_!*NSeGCfpu& zYaB$L;8;ZVt|gX=SJK7;8U7iVGBy5FcAS!DTBDVRqmW zZD3EZsknEjW1b&xLnt=B@cdJc*nZDn^<$#rn(nHmuJKXi>KUO_mFXFPjB>^{G3k<6 z#L@s19V9QSfycH;cWRPHM@hCssB0MeeEJHvmiowKyp?siV^t*ASHwver;XM}aAcAg ztS&h8Gr4j;g2v9QRVJpS^x{Jl3!*rw^W*-n*g6cP%Vcu#iE?$b;izMWR=L24N{e-9 z>4}Zih*E3-(h1=GPqi_|s&YSXNhKf(s#N^CLg)KpEv};zf!x^IXe18;WXUqtLm}2A zI+t9UosO0#TOMuo;Yy)zgb)Ws?-*t#MX%e?50vaD(<3rc*3>gI{mm-Xv~quK<8L@R zh230U_x}J7be0HX;(so*(;9Y<+0dT7)wFu)mX{Y6JF_=LWxswyHdAgjO__g8wNg;V zoUfT@2h zI8B#{!(-#5Sv2Z}C;MuNKp)y8Pb7o&_qjHRXC(Rk(uCL%Ja5#~u z{?k*?6;oficd4Gbw<}v*@Wvj#uXk?wV~Tj?ad{S&qM_Xw5>A-WMZT6GA8touX>4@G zZ5(6zD^KurrJhFko!jj-=@(eo3JD&Pqbo;MI0iS57g%bk31#%RmQ4{!Vt)#pb8>!) zycn_BQ`eF?8zFJi&eGqMSV*OcJ-3IinxDq8%TpZWLhQ;sku0u}f>hr6xcpe!$>y_X zI+Gabd{)(_qmGOY%kB7HqMkV^(PU<1`$`hh&rur&8Wyfu;Yb-B{Wk=a9FuQojh(?H z3Rk5@-Zd2m9UV@x`45i3O-%UBt%h3aSzpUjo03e;aP!lM4vKiEmI`??HCZeybhW0IQawUq87?&o0H-m_HOj;FZ>lw?5lU0f6v*;CM?s^v z?Y1v*8bkWcP(da}H5E9iARkH(T6I*vC-FT?964zFN94^0Yb7&%-g{->_U2=M(PY-B z%;IJ^j69f}MNKtKpXU;PC^uAc0YEg`u2nRpw%0F-nrXMPh zIDbcv*}r_*1f|G#ySG4d}XpHV!fepGR9~SLyN0tjGynUN>T`pn$9- ziQCn33Y7=wLHzp-T}Q5>oJT^nd|>o)Hb(MVbcJQqRM?OS@gOBpg^L9$%sEXU8`}0B z!nanYHmKp%pY;~LeH-nMzaHu-t{NIn@~eK1Ec9^QHkhhsU1Ulo6NdP8q2CqX49RzXhq~~T*QKZud z;13!MfKQzd1L@Ugvj(cl^fxvqGr2P6M zmznn^u@)hGIDi~Sbp=LG6Y2H=^6OiV_)_-8rI+BA-p)xvvNpi^3)k7Y8rOt0)HM5w zhd;Ekbiz`%r-Ee2N9j}RHn`w>mVL7m+TU;XP=Fzp#i~9?%HV!Q0UvKs_dT?Cn_ZpU zhg69w*Yi4ceZAB_?De7ml-EiL9x7Bfwf#?T>VBbr-u;W2N;MC~)L2fg96F7Y%OO)s zN9c@tUB$VuAgT|*{{SCuM!sjJq<_M_CprGVd$^(fR)X`}bb!ur6)y z#~o}6^(m2~gmMUP$LHI4C#OiF^~RPlB*=~lRv;cfsrvh~8VdDT#Z3|EX)LLD-PuWFW9TEBTpzFX_JU@1;lrh|1WJR)q}66aBL#cY_<>eGu~2RlrNy+^ za7X9ckwzIouT8tKVky<7`~&#;xO*3N&}Hi&hA1O=TOUzX3z~P43cP{b@TbOZg!)U^ zdrP{_6_gAM_mRMHr$Vk?w0T@fBIC=g-2OE6yn72`P~)-m^wMRaRC=1}^+6p%vV-NP zouFvuDh1v(DikT;F|md>YniVu42eL%;1fy@wwXSo(!PC5wh%{e5E6qzIE?4!Dk<_l zzb=Kmq?6>TAi^ep9Ziv}k=CHq)tV|QjC>07)cv$id8CFGj4YBftYo-Tr&0Dogvj0- z+znoJG*U8gUm;AAY2}WN^{fbG`erBwC@R5@1%76=01ELrr(AQppJiOKhaDwzQ^5s1O!C#skD`^Pi4#ZL$f@Q+#X>u~*cl^^-X9WD3Xs(rOAHJS zCWlZ0g-9CLBc@Ut$tH5|p(+?shfoHUHSz?FB%103=^z8rUW%+}F5#}Z2t1}6T-`D70baCHw_knP!Lv4Cpybfglfj14~c-KLeilvR^rC)X{OzY zgvah|izN*i7pc!T0gm2#XETSx z=4Z_R0Cq6-n4Yr4e-x@SJJ#i;*$S0yPfi1@G_^I$Pfr9w(dt`@O*Bp2B%nqsLe$5Z z;phGi0-ZnN!U>Ssy2#1~uIUX102==QnG04Xr1d1^dohxuZBq8e!rRmosU-P|jNg~@)y&NJShto|lX7LL>MB+N!O&n;%9LmhxHIlqAtPs1gOHKqi#*r6_+qbn7h@>i~IcTGK@j zl>jv#ZA%~7M0aCvUbLyJ&puN#irv`yO%(WbpKZ;7rCOmFk+2vlnW4f{)l^BO2{K+f zID!-7N9Fyt#muL{%O6pJ`vAo$nh&$5Z3W84gei>Xv}&L9#-+Y=TDQ#ffZKUlRs_q| zb?(yZ7$Bw;O)Qei#fwOetaTH?940cdF$k@wdQzXy{GDi_x~sCIsWh!f zIQtLsJs8c0+51ay(^A&dZ_|Wafn`casl-)PRkH#kNnSZ8OCne(WRF+l`g>6u*y$}a zuN(P*rzh5;ygqd49n^P;+YOq^2bpXE@&<=LB6<{8d+sbgMv81^dmpeIv_hJ;39 zzO5@!JuKA{#W-MpRXXWl2EWI*W4n?kiS4dT(Td`NgXC$De=Hw9tMpcvR`QFBMz@sE z*H<5~8UiW(ERQaP><;^)`(YJ+;i<+=S0hx{EmU!}1tl_S*AujnBZje3tj5iMYara< ziAqm;@seuQ0H_{fw6CQr$D-Svx>jKD*(8BQ7KDZ;*9M-yXG=%jc(Q_{5xL^X#|D`h zY0iPA0+7=}%``S}KDveNZauv%{fnoIYkV9jt}*Gv8jSkmq;Xo^YVhu?JT`1+KD-VO zdP9)QuD&lry;u%$G;e61$ZOQ-goU9D7p+=+`lXZL$RD>fA8+#MM-P!y(Bq~P=aQ&V~?CG4;ZJdQ%6uF9D;cw{> z3MFx-TWJiEAa6?6CoodW?1zS%-&W105?RJarOQiC0mwER9PsgDVj(n zdX@2-l76;lju_@HqfuaPx3{$A>cshUbdJi2uA2T`7Jb=`iy4oSj~k1ck|mv^YLB9;%STNd37@QrK^Ed*#QGpfw1;r zx9sv>GM))uJu2Kciw&01=em?C0r`{Y2bt?YWa*Gt= z3Ba_5ni&+OKal?e&Vtns(N#K4H_3mscP4etjXIml`yaNT?s``#M-YP}B$;&Z!w7@Ic`H2j|(VTnT(O zFGc7&wjv)Dd?H`2@^!@`S4UDstav|>$o$&e`>o`pAZ0yz%G5KmvYxQgvrLAh$gEV_ z+#7vJvG&AZx|vH8Vzy&!_4t-!f=qjXAJl ze<$&B2jlvCGPk%SX(|UrS2n&IY79?Z)R;_v@FG1xi>{&cEzQT&kVhQ*^zuYg`(dbg zb*MzT{{XRSA3nIQV;e^vnIIlpdRbJr)9QF0l1cvnW9_lI+uJP~F8=_R`mxoUZoRmD zNiXUD0IT-&(_NaRc!cXpts?#vNMN`AfF3S=rJHkE5J(~J=)%`*xL5Fu;@+ zNg~lnOG{S|*ItHlRFX8Csc@phj&J@R(Z20-G$cnLSqIooJw1It*yz?Bmf8tHm06-c zkpBQ<{a$?#uF~zw$|}m0uc(H&6Dk^rS6_&Fv}v()A@zMfqY>;Ad3|v-uF}b=tH=D` z>htPF+O|l1B=Dms2bZrzM}PJrOI22A>t|VHMKjAP2ZASH6s~|&Ds|OKr7@VU+{gu6|=DI!08OllhA3n zdoww@Plh^|nj#W7=wLT#BlOv4WznpJ`f9Xe>u;~MaasXF*>UI5bcBkE;Pls99xoM& z`~Aw)wDlDMjTJo{t5s00;ZFxH+Xds6aYnf^$zG*IOeETA^f8AfHIT3=|Rq-sB!XBisJ~Oul2M0@uqO zNnOt*GtKu|S=0s#p_z+Z+s0!Io--Q}$!pvWee3Dea8uKw5Pt}-Om(>og=~{gPPI}f zDnULuAN5%HL1wU-x!~|c{{W?*TWoOY#EC$rI-QKf&6B7U=)_dKfs$Zd1dL6g5=o~_ zZ*yh`>Gk(v2bMZ|fp`vv&9m1PRiQreuN>8bTCF$SNh`U59JFr?Q5QP@04!_){GZ0W zBm$MsTk$mD40L052VdHk?^hT1VmPCutcj93hoouPs_BR^s}3cMg=AeChzxE=wB|Ia zAZMycDZnSA0g2j~JZOfe7q1^P%S@E%4HZ2FYgc%!B|BEf9YKsP#v+Wy0;_yf<9dJx2HgPK|m== z3Vpe${(T@eGe#T4zLrpYnwb9pc>}F_`{QhFoOV{KuMNCuDud6cV=D0ZiX4Pdk3yAs z(xRD}lmc|RgU|Zj226%f(Vvx zA%;N?vZOJ1z&d`Vg1H|~e!uKJ$2{A%n`_2mnnP#y^(1mF{8L*-k;)iw$EfoCqpKF! z`<`}6D55Ni>JY8JC<)-3fp-n{ur~hy9%H+kT9Rp=rNlj=of)mCo{_3nFEcB!Wn|YL zu*%=J8oZ*wYeEEW%YUWsYm!~sojF`|@-=HtJsS#@{+q*^4C4@?e&TaBbdNCORYBmIN^taNsEjzCMI8oaJnnAAfQ5z^DUJtj&iS+t>$ zDG|uw$`Pq#QV3=zf+MnecF8M>fG7?Pe80)mX}HHtO&ln6l1U>fN1xBv)6i3)F!km; zHjqt63c)mbm7ZVnsg{^)aP!l%psA*cVnnQkWQYRSy4;8(+O2MtN+1;c$R4D5fPN}u zWS$u&UH0n9oJjhR`EV8V2gs4|gM-7*0OsxKuEg7tOOHYB8wY=1_g>NKn zP$Y}X8E;T3s4h7_Uu8R&BHc7kDwU9rC9gv5tDSaB!jQX^b{H~g86Re7e6wGdUhDqU z%f41hW`L*kcgSpN$y?*)6XBU z`i_n-w#z-n6_mt=Krxz(@u5CmV;HYT*JSrZ6|ln`)1q29jlnHtHU){}Pb7VL`u;8K zXR-5)h!rH0NC19c>iPWoiub-r1iX>QQc3Eqzu`f9C3}>7RJkeuy%$F7y3^m-?&WhYfe+`Np ze@rMpB6@-S!r1P%?V3qKp8;e_kC1h5Kaf9fUpW~vMb}COSZ}4A0s|XduCJiu{g1gN z;dORrUp}F?YJ;bTP@bYTHV2D;kJtK>@5ATQCp~*we}~fFU(eJ1@7=NM*0I$5Gsg4RES?yj{Q zda^hKW1%W1tE!}l%x-9zm0ndBV6DK?f2ZS*WzR(?Iq1z)vWBKQaH_-q01Tu``Ux6X z99{V)R6kRs+T}s|-|6k8msu*@dUd1H11ZN%b5~bZMIVb&s3~Ge)LBUSen%tQqBR{b zS&aunZ&&R6j{gAM7;H4LyH71dNC}ThkQskd+QAC_f8$=;W=nLEParxlw1!KmBT8ny zZSVZMIxe3HiNVcPM?nanXyK-hAxTh`hENcX9Fikb5f}vPTe-HI5J~qMb1vzfA^!kT z{{Uq@I+pe;5ETZG(?R*ytLvz)n-#a|>2aP(+{Y2sD5s}}G(@}jmt1S*iBiZ^>E`G9 zdylVYeH2DH&S_7}JVi0({tkwg(IJz(0Ze(5{{R$x{{Yl_LE&JF6`z+kmNIVL*;PwZ zEglwyD#jaZ;VGgoNgLNZF}*%UuDO-n+Bb4pp^7FK1iQsp(V0PKRqi(J z6g8(tQYn%!fxI|%V47-UT;nxbSIl~nIz;7a>o@*=BHk5wY=qd_j0GNa)x0=fxyIB! zT8DAVv~ru6d8+qbUZWx@-zP(ecve{=F;>CtuFcfa?<|c?8&lTfvv|pJ z_-L{5RQ~`HpC=owHqWMsGqsgd<5JK>#-5OU$(na{2@ANfMr4%Ctg;Fb+5t5!U(=?d zNCJbkMy*VE18C%v!i?G?yks)98lY(lPt_+t0l1##?b4tcu**+Pxh2Qf(!m6@TXv47 zbZDrAduFz}8ov@%y?oeAc3xe%1g4=>(9p>~UZ|3@PYGd73V^ymV^@u82>3v+5Ojv8 z5DKkXjX@&{D#i_CfSsvB@$kqaSzUY&bAcN10Q^k`n{M@nH)_{ze$=)kzF{y}tUT3U z!>V$|F*O|%QEjY5*=^0Asji`kq?)HEl%|fJ8KiAA^zoUbbYE?j(5O(acyL!ENCO>$ zq|^+Sb<24SmZkmeE!sn5)r(G|)YJuNO=M~!(3~np)e1f)Gz}Gd*K0KuY&&P9I(Kl# zixA|h@;$YIt);KVtPA86 z(WZ}P%kF0xu(*D&?7}r@C zm1FWm?rQ2K5sAR#+Y;|~can)F+2XdEMXe($z>qRXN`)1|fND=29Xs^=&1@P!-tk?q zInn~K1kepsKv;~DMHCDMJr!=z?|!+!X0iDlu@=q3%4rdC8I0b+sHm;L(iya_V8>AV zj)tDDs#fx{(>#nLjaN_x#47g}FC&Cj5t>vA1MBM4KC~osB!bb5MQ4?mf@|DJK3qUj zK=P;`K8l9v>_eQ(zHhB}cK6(y*C6DkQVd7%=<2cbU^K#-o+#?;(dr$Uic<*VhBgWM zi3P~ul11)_pd2$^mIAS$R|}$pAMt%eq4^1!o9?zhXwui>GY~S&*+_CV*xk*Es9@5p z#iysH$>Pk2!$XzzUrd_Oy|~t_vDAXu^r!q^S`4Q!vW59)rDb0I?3#)y5b*(VCN0uAwDgXri5sO%ZhE>vQ!ni-->GhQ~m2@3B?QY%P z8)CI^JD)YRE6~B^f?R~_N1ULfs6s>6$4>84OEZ94IOHiHw;_1;#IOP!tCP`;MmYkN zS{{cyFUdSz9eq;K)Mi>LC}D=4Xewrwg~BmrXez2Iq=bcL=FXA}@{FU}BX2s2i0SE` zm8BS!X9w~fEui@uN1CIT7@5tPRI<+XNli5@(i>^hs9i_kgY7J^ zxkIWlbL)@U(!_=^>cA;bF;SoPI#6S~e=mrURy?~`V-SeTiAFwJkjg)O5U_%2os~&V zY53qDt1B9cjvYAgD}dStv-#7b1+%-VzFb{JRTFUvv#ez5sEkN;s4Jy(yF}Ww-H_Yq z{Z%8hVye_5{a@yc5YQu$Cf-0&VCNiPvR z`d;Y7aefc88*A8xj}^Pe54Y{|`wluQz1!!EF^)1~K7TLr{i8h!YrEx+X_ls@6<+eT=$^0Zj)>ZnTSsN$=;*%IH5C)Z5{V{|ukOh#hU^`j7CiDv{zss*)a_olDWRgWy7$UVaJU9w*^XPlUWM!+T zhFQTt0-ZOx0f1tFsJ9-*w$n7Rqe+gUtNS#!nnZ}y=Rf7?@?7OA#IQ)w>Ld#jb7Ay4 zpGZ8B^!B1l_>}}~MSs=n(Oi36?ID!`r~17*Z<}!%NiaS0Kez+`5x4r*5RWCYxa5PqLIs1t1~OG`+m-uW!}|<>nm_~F&s6o^#1^O_FFFHJ!`8;^!fB+oVRGBO*JpC%c%>$o(D5~&}Re?F5xEWkBZCkD9VP8}yReVrW>G=i!WHy%q!niluq zdV+*1P5!3;089HzcfR;UzlsKZasL1n{;c%A%a#&F3SuOASC9GY&?C9~PM07gS+WQW zdX3SMY#DzA4Up)N5J|nPN3g}#`j-TUlBfLt0P%cIeL5CdY(GdpPAng{{JeO2Q`e&7 zym!QsqE*vn%{ZiHX%#0$*0HXuX;~#^WdrC%oBHrQlTSa26@;{>&;6hEe$Iq8mS7e~ zx2~_3`vao0*&iW7v89J2EK?0jEYZAaBUBsG7%s?MQ_23(ibQ8R$q@VNjaci)pL8PByss9$|!X4&q$xUBcSqED>suVP>*Bu z3uG#xNsu@Bh~1EaE?nI4{tFQ)(r2I;IqQr&z8X^h0K(}a5~C2$6KHU%0J{lYSy}TnQ2c%3ZQ_y|6^Y2jRqHLu_RIOx^kj8xJV9H}kg;Jpi7XVtv`f=@CQ7_?M zm}+EngPfEtEN?|hjEeS>Lp5EP8x9smU&qw`Fa3R~5fe_5NvF?`Nlcbvo~eXM4D&Eg z9=C{rBZ~qNnMIhB`mg!9_VUDh$4oF&=jYOPdX}eB&nJsihUC)$AW{`b3fGU)4efq^ zueUT%SFZ{HMLNw8dZGK0w5mp>(hQm|L%Wn+Ut3%i{-i%mOK>>$=oA#{+4CJe($P{vk-c2eB#U5Rs4S&yJti`mbr!eR`U`{Z zuE7Oqo}5);XgU@)o;7BMr}$jaLs4Q@AGnCYDmBWmS)(L0WP`|Ce_Q)!#MSn6@I%Co zjNe^is;b(RJX90ZQIu0m^+`ce@&;xFVZ3!lP#6g0h`C|)3^?|ZSu_$0b>~U~K*vV& zWJ!X-e-xyWmFRNSl_XR`ixbqcRHzP>FZTv1;E+jW3lF7;Hb(`0rE8FchB+gob6d+U zhFTOIEI)(bYVk9yc^sW)YO0_{*(szoR6-c)KxwP-Q!OP`6-;pvq^(4#(gJ>@0NIi< z4J)gyr_?Nhs-h}zrfc#!2lfNh9pVyvPD38iE^az_=A?qZ$38Y#>e(WWGV)BXEjd(R zWKd*XAKI`d+N*g&k)F=96yd&;T zOqXKr%5@QHH$49NMbCJ)L9q+rHU%DlWPt% zw?Ch9F4rN7G$E)u3h#DlJZ`NBIP>T$>3W2s$kkK2vW2KeAxSzI6LKxUKA&Y=?1otF zrT&dNW04sw<(3e%9w+Sc>c#fHKvPpi5DrAn1Gu-LkSjl_kSKB(U2YAz{QHaE5Y;s5 zezk3CIvKEeoTJD*G0hnA1X-9n6pT5HtLiWMmf+gp4u2ld&1i*9M@#f7klh@vvchF5 zriP-bq(vJrXzH06>D*nkIgQa{s6VY_P6)BEJc1g$w~1<0XRWo!28+@9*f}Z+RE~fMW`YVvc`0FJEB;lF6DX>sF-doLwOU0yYU1S-5t5{K^htjk$UIa)TA%6%3<6m|v3 zw8`pHL2Uv%cCLnJ8UYk+s{`o7a5VGt83c;ZA#@dWs>VZ+mH3p8Rj(B%%kZ2K2o)P~ zi%@A}#?{AI^x=e&DwRxyJ5DsTkVq|0UrwalC?J4%2IttW#%Z7l6(7Q_Y50YF!QjK} zHTfQbH;EHS*AcP_DMEOur;!{~`Bt3;yYs0q+4;pyMJ-S;$jZ4&6*P79valBw#uZrV z>D;)vbqou7iMO`5eX7@TMiWG7Ux*4Y`%jqp;ELwG9&B98d$xd)%CsZkZslS98s$zn z159J2Mjxpr!oH}pRZjwoBrH_0MUbE}Gbm>zKm^=ajz_R8{DowX;-$+d<4@0_nsc{~ zG`*PB>*ZQ`etintlcqYqy84rR^q+6xM)B+3$J^CAXLn&`$mDSqHMok#QzR65d|g!@ zPaj!NQ4-4p(8{kAqT}geIpj;nxDc%zR&Ne~>lw`NDrS4~Las0zOb~KaLdjRavc*vXK~Dx# zcXhV$)m6808K1R^8fkO5N{ULXO>@MF9Mx10GNfxN#+i|MbGLI2(YN!4&k&B%__vD) zu9z+ohD1u#_-q+uKysn9ROzY2+siw>rgOC3uxa2F)qrGLkgh<+stqkl0>H2e7$~fd zxgn0Li~T@0{{Rth^@p+w9+Fo*X8W}N0Fy2Hzc>E?d-uHhb*hi$*ZdE;tIWkRw@R?G=aOBg}@NeXTLzp|aq zX*?ec8Y^+=Q?py3e-eO^*53aB4|bk&ZEXsChFY0xe~D zBAz#buC&HH6muiaJS=r;A5!e906biR>Cq$cr0oe^G@%6f4mkDvusS`r4AKZYDYBFNLC2s0xuBMsjXCsP@E~%lTft)0uOb1FcGB8hGk==J5-G{U~5`s zv4NJ!IrwSR3{=@>Y;{ES`9HZ)4H8uS_wibY7Pp+VsgSLI;dtDP%Q8U zF=`S?^CLfL$tAF)3YuICi>XDio5NK~A}Wed44QD`!EgXvwM_<1{{WWFP{)_A%D3?9 zd}Nd#-T3Hn6!K*%tEw5XbTQ)bESXHChIxekKP(<3j60ojGNPAV8^@K)kTkOB8bBoF zMFG^*!+coca>M|##w%JvkpkL-YbA+L2XWNhtNb<6YE1y5f_f)C$+>HGw&0SZdf}>e zz{t|UNr0qW)g5;E+_0F)IBZa&s;!5wuoYPvXO|&YQBE?m*d%oF$ZUo3M(WIpgX#uI z1Q4EG#A3As>ElzLj;zAX3Vker;|yv_ke;;wfL*9SS{)z^5sH)?{{U!q$7)y2w|3SS zHq{u~kGR|WL$7d^F;KxvUPp;&Dl?-bwN?3Apr)fD@YZB&BxZM=S4twZ+gZw7UNG>g zNDOI8@zOY-=1wY4N{`c7qXQ>%d`@XoPgB4Fo=BOw{qV>1S(eM3O?l z)`E*p2U8L>igB$!$Dp?IkJb`qt2>wE4*T5Osj(4d zDz;A9!BcNO&8tx=jBX02Z&qir*d2`~QDlvUHeR-lSYtoC8Wkhjl}Va4`aQ6;N(zD* zLId-5D!B9RsPrU&Su!-Dw(+0^xSFc`$N_aX%SzDs8fT)h*}a+tju?FrfD{#a!p7!C*L8Ji0Hsc;fdd%} zP^{#CMNdyi&{@Y>FBFafidWCltZDNINhSH3+Zh>l+-{U=i|eq9`*St*qw>9Bf|CuKduHlZq-8_4(Y;e%BXiHLa?m9 z1)!;^r=GZkiNuZ}sE&}_6BytM6l%s+X*6-tX+i72SMohxD|n%i*e`L%6aEe#pG6lB z*nN|>G8GjYLpPIIVR;QqnJP#?h)&n=Qi_N9hQqO9D1ZexulQjF~c@vGFp%oj=2r}59%-3_xY6b&6INz_v( z^5|8;cE;Goih6o1{M4BWs&D8ZOx67} zPL@S;PutU`GELt}FW+J_5le)Lnpv^|;7XdwWCgWIx2^pUHc9GL4`}VFswKze21-1XGKXpD+?b}3*-4kml2b;=7!qH_sZZ2@RIO~sDi)nC zSty{8YtXxg?97%jmO)8fJb3qYcUoDDv&9H5>*n#u4PWXOWftT5n|nnqxv4dybmF{t z)PVFd?f&eFvMOkxs2JCcWAfyjJXszj0V9aa9fy&Y_8yz@a0s(66&JjI&YfBp0-e5x zheP%QyK*u~MkTG6CnESvGSpSxW>BbvxslfD59(cJ_aF=VMry1F_qiqM~SP+BKP}^vR+*bQ|i9TP(4$QUMKnUxIzOmoF1)3V+r99*eFvwsAp1 zzt8z_>n&GwQPs&MG}E;^nSk-MfDo!r=>kipr39!pQVoIQhKDxMD=gwjYIqtk9w>67Sqxi=&0YCO`-MGJw_sCMrRk_f5e(q(t%VfSpjVGxFh-6$yKCjqa@~0>=5HowDCURVTLHlzK)n7f?1k=bFRoSf5Tw`rLci)A4Xw85cKbuBA%RczAN6OY z&L2B19MR2HP}Ppw9HzN6s72H3Vr&66y_Z#w(%#OkkATY~9Zip4FZFs?qMNX{2+^X1 zT#Dn*{a&=_TEgxcCzd*hp^6!GsRdQctgfTbqts39$J6LP*dJToLr}p2wSILq{{UC| zyn;8jbCA)rtjSM0P*cy#{a?&aso!~u9B#S{U42=NSZazVkT6wZY!}p60yq~u{XLyY zf4VKXHkOY605Ct*^5{2j%bRV@*ju~U(zL-KAN6tQ7^&SIo4WEV6%HFS076BY0}6m! zhStoc+N=l`{QCz@Z_Rt0$_1Rj*V2Rb^gN4h)kjJKBLA2LBdv!eyIu^axT2%^c* zBS?sY_cbXEpmTrFKqs3XNcK3}HeL5ZrPM;84n0QO-s8%UyGdzuKqT<{e{V`0zg+Gt zydoNzA%ZjhawJQe*?CzVucR=))7h2BEM45LndMMCz#rv36m9(Dv)DO!5t>gTPx%L* zNLsF<&QZo&8(gU%1(_KxuH1sWHNYc~PdtCG?2_k`?juj}TcEG@asL2UuR=(9`)#;- zUE30#pzt2Q>~!BA-rv-WL!>nkt%j6VP{c=L%C*9ff1&n)cCGFcnH7NY0-jX=09HDF zP2ZNM9i^4NdGr4OSD!)F>Z{yTZ6uXg3if0xq{a-2PNgQq_|$TAi~j(y{{RAe=r>BU zw%X>NV?XBT;=t{)s7N;`=zk;rUVyy!aN)5p;;)9Q6HqQcektjNm4cLSLMw}}BpV;E z=zQQxTO+D_JjHP^jVjFF>QB_LkqN|J6V#FMD4`;gzBLWC1l6^8=B$dM{XJAQX{lRb;8}4&j?hmLix~bLAAXt&l9Ig6LpbBHE_>><$ zo9cIET+eSOp;<_c3A%DD%ODCtv9TAiy}h`W>*-U|MpAh2>Iur~4dtkr0){Fj*2y3W zET~lJB#=1u3lZ%|hMrv{c?V1txmd3x6zL>$O03IJ(iXjfl^SKbkVqfv+mG;dU^vG} zB$l?U@X{lPCxQtz6x2+6o z!A1_vaHRtWaLkHD_%{~k+LVvWq;gD2s6BF*6%8^wNn#CzsWztdX#m)Q3Yie!i<{fq z-Wch>6yv6>jvg}|G8x@t{=reI6xIP$enY%tfVUun?vEazJvzF|!nn^<>BKZC5SSuq zjF{whSfQ#V3GuK4g)8*`02_a?*iAh=j#%}c8p;}p;)_q)G+td%>WDU*0wjfn-P21G z!N2F}e{~}?=}P0w^rEN9Oz&4nuu@hIP+Pe0+{nvFVn2oxmK zrIyyrQ$mX#LK=)9rJ0ecDP*UPKOCN@CYMsNBsH}GVmasW?L5$!!60ItEmEyO4NpV1 zGk0Uvs5b3FyiXhvs6rWIkQ4ON`SzMyW|D4wIgk zngCW!ICJOIS770`?&+ndo*KC;D5etm-74OenbR0w?2yx%cV?@Sl&K+=iIeDCk7t&* zM+8!}=(W*-p&e3R%3ZyOrIRdixVqS(`-9Icxf^V` zc0|=m)1te$gF^a^daX^nJlLJr6jbcdtwh8~p#4}eWF(7yKBJ#z`@~6gwaD@cvT*1x zwK28bRU^W&sryF`tV^wgm2fQ861agxZzbDNQ>9T(mIcUV{?NU@OMVBqet86Lz;GQ; z8)T%w52)zu?0h{U#Yz&HjpL9-Q=m&6s7|diBI(rc83X(e)AQ`EY1xAwj9Hk9d30&E zwpJPg0>&K`^$!#?YXRHFCqYYAw?&neO}YO7U-RrgcUKHLY$?B6; zB=aFzF-XEP^i!=utzH_sI+p}eR15gs8qvr@0exy6wvYOA#a?zO*(e z!)XWB*9}z!kjES<2?q+m@%ed-Q;j+S-dX@8Dglji#~=~$DId?s=DaJ>jNA3Jp&^CU z-i|(HY`O-Fd@^MM6j{?X@-+VdP(5l5-v0n>B%#!_r5Jyx)N~qTc4m8TRECbaN~&i461fQ{qd>gJ zNwF%I{GZ4^!}q+kI!WTgc3LCr#Bkz&E`^qS%VB*HNiBj*JcdV~!~1&FoA0-wGJmN*tNI_Mzt;NS-l_BIwCn%W`Tqd>_gfr#nH_@x zf1v*Wk$a)(!A`lyXP7V4YUlC(@;&&P4y?Iul?|Avq@`L|+tB1{0RI4I{73Y^w5Bl4 zsPwEpl>i>5V*^VpawM$`y7eOq+#WB%Cxd@&wgJaZsnyZE>;B8hPmGIcZetyFEjp2m zs*#&qN_a5F=Is&m-E2rCeLtvMbK8))xq}VnKg-aQZoh3J-eXnrJvrz0Fw4mfPZ+5v zV;an3K-z;FD}X&h$I`%ytAB^I_IE}q$06n=jRLNB`1@c6+!bl@kkpL%!0>hu6_Y_FpG_G{viN$}Gc>e&aJxTE(iX?4R zDman+_;mjOx-+oFS4~MzQ#2H~HlfHhGon^V*<88%EEOxj7Np564#rm0;GiLiKT<(| zH*i!W1wMJn;p@PEsPu7VZc3J6R(kxqS1fCeJUD0N)-0toHMCS2iRy6jRAO_OiK%e2 z!&Q`wRZB}#6*YBTJvzxivc#x>LKvf#FCv6iA*k2ERgyUu#S8@~P6)w2hsX+f`HEMj z=9IjT2}cn!HCmu~cY55XBBn?yogO8sY(8Gj5EaC;yWB-;B$dAa3^h<4Mes^3cv7SRt11hk)O6md?qf*dj8;-mmDFmX zDB4+qmZ|LwPKt&h9jHJvxcfsVxTMKuaXVulxhQiXjwCI7n{6@`H3F33(dCq6tBt74 zF;6vw@uNvAuq?|cPF>n-ndMnZ0U@Cxpz#@{NhBzz5Y;5JWwi5+uR{#M(G?TsK*gaveYqPNKymn`~H?0;mA>MNJt_W;iwc2$R;Q_m7l=cqhF)aMz=I2hnP^Lu=T>Pqn{;99mJ@QD|j?& zfYo;*oOIMG*Nt0KdFkQNUEcoyCOb=TM@}~8ev7L1q*ZVB+k2}76dRIou)Z=Xy~CBH zbC$YOTAnAZu8J5UBKip<-A%JQc-w`;O(;0Y3cnx*O>5>`27-W|nskUr!WgSjLSBwY zt$fCn&Ts~Jo`E_J{n-0KD`l+Rd2HTVqL|Y*17_CMv*e?kO(jg5{{XW5zut`HMO2RE zs4-%e30^{EVx+&eXNz=_F$Iiz6?iiNLFg5D0rNdPkwVUma&-?dGJkKcr>Cb-Wd34X z*JkbEx4N6J`h%*m)ee!(kj8c94s83 zD)EoqySh4gB$BGGi)>X_?Yu&~lEo`YDcj==Wt+(o^32S-ez*3o`n9%7s9B}Q{|R##-5rBjv2Q%Rf4)w8f^ zDh^jQTbIg9Jwxd%@=2+J*!?}6+3fM!Bc-*nsAE&41*!EkrBBTCo_o2Z@b$__Q9)eL zdJ6C#XIOGSCAS4#JT)KQ9F|Ik8o6hVf+`A1Ndr3g(b{7OGD?x$4Ir|Qpcmm{*}kf1 z?&-f5i7n7K{*zv&y1yw6Tog4G5Si*}D;r!Jl5cx^SeDa9p>!U$ zCPHdoJt;Arxw~4Oqn|TQG4V=Dw2&4R8regL;)E+0!jGc{1O0z>Fw@M}r3m_IP8|t* zf4QjVqeEt`(%Hk*{KDl68h@9^+F)+P@aRwCuFN>1=bk_?z>4>0(Wc{nA|Hy z2_%c~-%)>P<+BHf^XYVV0AL=5>Tbi17+@2*n!a5!0183%zRNr_Gouo}@yHV#OB)09 zBkRcH+9!pLKp5#lNk$dp(_Tw|i0l5~&sp~3MR}xle^W8KpjRi*mLV@?(nsdw+e-uYn(;qIg zW4k9ixHDAL6H``HFjNuG0+COr&WYuaN2EF{TIcY*SaD~>I=hQ?RVfmX5`gq$HnuR~ z+waWhBay7q>Wd3X@efcX*#M9$MpJ@9-2Qkz?})w}o{>){)OL}j2cJR)BWFpH&(Kxn z15HsHr18K56^Uce?D8n#2vDoR{C!8Z)z~#y=ceSDRu)+BygD{?nZ3VUMHKcJn6z5RM7CKU@6?OBIM_E%>?}K#;_XR0AKg^5|UHxg?b#sQYI`a$8x8 zRIbL%k}7_cMAK`Q7B}YOlUQN!=vZ`HxXN2ni3jcf01y0EMqh4ywR9;AQz@uu&Y}u4 zM9wsTc)Gg{Jbif|PiFSfq@W-@#B>+9m7{XZ4x0Yo_Bt4LZWHV)p%cX{k(m$~T)Th) z`k`T|hX51BuWn7fnOa&Uw8~jYTKVVwUY!)~S7vA*Lx9xbkM$2;k8a7E1}Wfy>8Y8t zo-D4y_v9N8LACwLyFKl=M2sr%>mK=*+i~$^lt}ci%npS*Ty7;?Nd*-;Uy?*f2`Bt? zgX~QohDczdodM>%zS34ph9~VkWs)xx;KUFCZ%DBrf5kxnA9RqA;He!|A6!H^HTCLM zLesoqoP~e(7B=GF>wEOA7M)CU(-4`J%C1+W7D`_fhf0Em-%dy8>wX6V{pZ+v>P;=$ zG0?8bJVX^e-6vj9O|%vI0By;)=kjgrvD_anj#UW!RqGs-^fhr9sun43p<7ZZ03Hp) z53lq;UwcUuE`r@wv!m-kM@8SVx^r#rIOi2unhD}?SboHM)SL1g-o*ZR{C`hm8;;dy zbtbtWLPyI#x1qkv%$N3vp)RBZe9!ngs!s0sim|nJPip6Damf&omWl=+ZOJ5l*0JhR zMTi7~2Pg6lx#jCMXORXyI+eE0d$^EC4cq{q;`8dRH@?Q+du-N4E6JFG3XKJ$E#^&b z#e{(e0^@>tHY4bLql<5iUXg%06Sm~CAUd*h&>6TfxfoStgCA4kWRuMd(Mq~i7zG4s zxdfhdet)fj_F$IUen+C|Zvi;?dI>W1*(yk95yPd7CdHh(t%w0^bd@&;pUM9K4n3@n z6Hq!z(-t3>K|WHaBUl-#1BcQ9D#n}9z_TaFj;$M}0Njw%kC@n|^oj(SRo0DV$Q zMy6#eW-LL{Re|K*_b2*s`1bHl01lZmk2BU5r>Vb?of?A%DG`fp2z1prUP}aT5ReZ}mU5=RSQ~w9{;>Axj)Ju58(iunSE$q!g1$x* zDAI*uu!qPIlnXNu3;KZo{{XlCp6wMXYC1~pO>@wZN4C+UQWhuzvWVIu2-D*>S3`Hw z?fp*|;@;F&ohFc)p0Z>qsj;gXMv+urGvs*EMe(rJsH$pp06P6h93OiGo*h#`IXwg$ zlXqe05tSic^Z@RT@Y(oE7KyVI%<)LE zv?Cz1XjB?af(xXA_6GJNkFT|M_E&dDOg8LE`E-usbla_ew7Wn@m2>>M1G4`BCibex zl=SsYJQ5EhyopmUhCyopBZ~S#Tj~D4UuH|od&8?TS`qe;EBjAHZ_Rr=aw`2mApZa^ zm3UtD#LtMIaZ6Ahf)#2sl3IBnZzB*$jpkHBH84?PdB5k{H`(uFnA^N3#-{;8{tk`c z-tA|D>LYr^>(&|{k=Tj`iK+8(EP$6tS(CtZi!(?Wi1GqRwfXl}*|#BDS;=3J=~8c2 z7*?26^d@6|LN0QJ>ZPf}$kLG%OHN2K7g=2sjyc4pJMzQ6RDN^ak7Qg4(NjBLN`&hHloLh~%sM6il z=v|=s1CqzajT^y~%E=Llq=spdR3%6fF$YRKWY}^67vr0IN^Dq`%>nB2Um}1MRQdGp zgWoTe^R-2K($~os+|Nl-98D3EQ7(d2l_!N3;HgC*u(1pEEt@h2di2lMDWwlX{>RH_ zXrOx9s34M-pm=Di>aLM~;v%qtmBjSkINOI8RzFZap39|$QO=5eoiQcS(+52bl-r~D zb}~vR@)S>1K&drctu3I6N}$UetQKV}Q4tCYw*c@|>h|OiFluIO@q(tz z!1Wb%^E85biKP9YkvMg-SzDKeTavm77Cikg>}|HrR0YwBbcw>Y3C~p>ys))YJHk2X zDN2}YW0lb(C=wGO)Y1+WM~qybp}!u*qG;r?o+(=lgb%iu=plHo7T~f(oDWBbt!f}@ zN-dJ}~OKm(!k1g2t(8?cH=R2@y_ik+Agvm@%L z2&CTjVPpOrmdj2jt0GkAq2FZD%{aU#ngi|!(L*$V|y7FAPV?84!PCdZBsvgv|~ z`g!%~Kmd{D(ctUpDrAx`x`t`;l^3CUI+(l%Gj9o5X{yzdA)Ti&AsVdJAb?xTZEYg! z$Qj}Oub)93!$1TE0wJ1=>H9|=2Q~g5N^m&)8zECuj8Y(9)nzg2KA;MNI6P3LRSO2e9<=@+Fzdv5(!51SKz+st(pr}hve1t~tB$H* z#{U2;R-6ucGTTa~iduRmsE%pnkVddeOpOv($hzHPo&=nNaeGi(r2g?VJdIauK$|RIV;Z#r1N3NAm7=dqOhtl4h4VIdL?-oNe+OmY5uC$sd7@9*vxfNheEo& zORHEKSSbX5u>SyC+Sp9QQT`wB^of}wV9^>k_&TDG=fUvmqr83-?molW$12;e<8Df; zxD#$slQll&*~>)ue#N4CF%;8Dkiu;`iE@-a5*_5CFtF1161TN;?c;g8*=`g^`@$0% zy=kUUL&7p>72Q=DzX~xtRCF8W`L3=kqMkp=k=M})Rfgy zL#WvL)s(BQm;8$hA7aOnjM(!d_HpVnn%Pl^={5WU3;whEulhy*08i8F{>S}qdhw5^ zNxUKJ*ZDb(>ba47xJCK_vO&v^vu7o%ajzc%9+KXHezyW{ox3JdZ3L>!> zW6-N0y zJw#g90L?{Kt7)eJN`ve6bUKKVR8TP^CbT2d?f(D|NnE{bQs?l~#UqHSGMS9LwT)D0 z>1k@V`AO&e3kPKzYM1Om_v zI(GK}%F;0!fhS1E8h;4lf4~61=?pLsg%L@`0pd#o#-_ci>*`Mv)a(}c+}ZV)3%0RY zT3xhqSO{sQYKn|C6$CUjblg@~pvF@zLp7o)1k~_T5hjwwbsbjjKvJxh?8-saKnNm) zoPUG?$LG<4+FC*qd086dBUEYBO+ny0znEfhK3z(y-MB1%z^=$uZ#}8Ka+1j_V0z;Z zLAZ1HXRpcBQdUVr6j(e}KGB3>>GH}Q>YlbqXNo}cf08pZ7xuQ%Sw_)bhm>SS18Gob z#eft*YIqRDup+&^E`Z#d@}EI0P|}Sv6by9LN5o90R-eP5Dv)&d;9}Yh$TZa^Qj4e`9r6n~rWlb(S6F@5GicsDsnVCV*hA;tby^M0)HPy>_ zlCU@O=m+rITcV9L{h#W`P0tHIaXkV%n|b6grEnCrnA)e* zkCCa!Wnq>I+UOAYW2lBEF`7(Ck%UpW&>HRq$g+gDSr3R;hYEUhl-mLLanLD0Y&9EI zG?aLBv$UrMu=)^vn8#?^Koze^rHG9AbRNmSaM=f1e1&G^ zXxZ7Orlh0C(5ruLCG&WtWm5kD>P?k?oZH&9vyn|o3VppGVx*C$JtiyjSh$^*`5bhhprOOn!x!(@z|kW}u+LdB zri}4*jH{4aowEiV zLm!wG>0E4mdV8YD*HOQV9h0m_i5Q`Fb1JC-=!mEZ3LxP90SDSiAx9Zd2TGO5&3bsp zc0F!Bq%KHHQ60jM9FjMWNA~nxZo$IxKA+Rtb7(30V?RE<;t;@-(4&a%Y=ta7JZ)7F z63MFhI0WFwaJp66;6_m_MaBNV#3T-}l0Qwz7ykfZ?JGdwoSJmGWCRKv^t7Yx4Y60a)%(MdR(#&BdIcPS|$#fq-U9gaZ2R)!)sO!hzV1upTqNi#fP?x3{7c{ zl|vw}6Vi(bm8yl}V>LA`Jgo_NB5xvrbr%|$Ss9%AkNDe>$GxqYUI4S3pfG2K9FqY-_ril$O?iu4z;IVPY#ZL%FJSArGzC+a@NdM zT6NIy!o^M6&2@GRz$goCHod=f|N&-yBIo1$r#opS7wysXDyR9LYF zSr7V$`ndFV`l<{pF+o`+Le*3-SsfGtE^JP<9-!bb7C%A7uYYEHb3q$xVOHoTyG?ZL z(SfBsf6e}{@^orwt7)cGF@%Y%q-nCXxF9XA0J*sSm-c_-tNf4pzt!^SIw5ggM3Mfl z^?dpjw#HP@sC{x1!CqL{{TLH)8%bOL0KVYj!t24!O@Gz?Zi8FZfV=I|DgLT|hoN?t zao1Eqr|uFI{>d$-!rxvGJo^x?=RAo|5Gwt>N7L-qu}fbFvwfXDW2>cI4JBZanXW)3 zg|GDmjmiH2U)%QgP6#IAro9#3TE=w*wxWU4u41lPX%ximtdIdwbIANyiv#U#?5`v$ zP@P{ckZsoJmjp2KF zf}jgreM$Bo@su$dg?bp-OEZN+O+U%iQ+9T0YI>^8G13?>C{r5v#f*$s)28fWPpdYP zr~3O{6PF_=qb4i>^gR;&%axLPijf;!H;{s=eJ1?)hv9WFwaF)+>+Ieb@CoXTH8Id> zQqnY=cflZ}u^y${3^ytaN}s z&R*eVOO^Uvc>4RUk1^Be#2OwwHP+YDLkmO}DtRJb9=e8Pl1(IPLXN8#aBK)Xujl%E z){N7qbk{Yuzj_ri5f2@}Xo{prvh9Ge|7HHH;CUDf+Se`!uoJZZ8}xG1Yv} zkm#>)-0gPstj*s{DB^mp-R0T6lh~5I6(p5(G?hBF(^DZziRt8EN8CEynZB1*JfCB& zzhkkpB3XcvLF>RDkpBQbK%4!?c-1ETO%2NlwaSrh0cb+=G9g)uBAf{cZTxjxUhBjF0@pA~wSxK5x{%SW@ zcl3a7e_`9L+8FMgWw0{DPsAAD`X8SP53{7O+uCk41GRzsps1yi1;rkl1(+@15?zmr>flz$U4j^@>+;obQL7$%wn8!h`59DqObj+CC z22aIH4DurRrcpfUOD%)_tol4f{{R5oT#J8SWqXdteYMVFy|rY1HS*8Tr){p{xKL7B z{EiPsXKd~mHv|my#2U(pqWhY<&m3^cM*wnZp@vd`$tNr{K!`ekEFhunB!S!;$h&Cf}cv2wSlm>_GfJ%PylWnRhZVjR+n+% zqo9JMP`QeFp(m1{1!80M+9Yxeib47>;C_9G?4>M0U~lYMd=S z!FI>YwABVi@x8(E^C1KRN`qz`gX|a07QPPWHjjaZp-)55!;~(ITWGEosh*G4(XRgh zHtH5J>emT~B1n=ire;9otdC$pTQ3*-`v*#gLSsOZaWmkg_>P#u~f5M%UW?`B6* z4<&`i*4E>XXr7p_PW;D46K3O@XycZ5@x}LlYgI@CMOcwW<6M!sR#72B-Z#=bGAPz8 zz?4#|_k6l)N2;0(o{nb7icEQ{rkf<$iXS>mT?DbqUyPL^`%JtA-QJ$66$Uz(uXrUv z^*~RwwF+pbx1i1M>IHubM6{=^8_iFsJVEmxK8|L=%S2{_?qYcJvO`YkAyuSmD&VF9gmRT!L;D#UT!af@CzOkUo?ngV*6>RVN46pibopF}PO$02Tz) zaWS97v^g=;C2+t{tw%=RZ9O$qaL*L*$vmICEFv*YB+`Z@<7lp;i#tmw)X8O888sjp zkFjN(kxGifKxAx@N>ut&@XDt&z-m+hQ`B|1B(XCqMnq!()}Rks{wSDYxhq;4)1k); zBg}wKRg{Z~N~nfyKsWCJ{$@h=V{{Ww6aZ!K;Km!&309T)vM01j*h-Nj-Kh@>Z zjyiRn7B$hWZ)s3iog@NEn{#3b{=EA%h-v{aPpJO@S0DCzD3SCrb6R>I^?uHiThFg? zo6l?REvvYoY_8ti*et%@+!*j)2`g~<+;vVfCrYzZv~?OMqN;Um1!Mr-POb^I+_G9; z+TF(~5=A1gG!+CI{(om5w}(isZljjoXbfO$QaGA_vGP1UeR}zHeB=0&y1puJ-RZRR zn2hEl`?bCEdvhC(%v48PUyj0JYJ7CRah0XLK5~+?8C^qHLtIuFD`+YbSB)eRqR*SW z_P6_ixV909=ZH!);1bzvV@(@SE5I-yVx31@g`2}|9nWz?ik>*_?&F$@{OeqB=z)I{ zll@cvpX>db{Xf^Y=h-)h{vL^S9>4$A(Fyy}U;U4? zv&z93NAYyF-ZTyxPlwZ?6E)iyx=6o;?d`upk%ZDJC5cp{eLrm!0zn_@kJs5udvx;S~MsjX3Mg&m8DbRoY=*U!SH3BdXsA*LMaDJcbdt5Em00O-w`i5dlbvGNiauLeE zXINFiHc0@zfg?@q4ZZ216v)R{S&!jvg-kYmb2U*#p25Lc5RT71EMaQVE}+Py`i`Hk z>c6xSLShWj%0cODatR1oBB=Rs>H9I%{&_!&?b@HbqI5}~o#38`sOFZMN6-A!@IuLYGz1Jp{2*h$;;6dZa`QWkyyE10Y-3hx-p@SMvDH z+G;vF+amDA2s(#X>HNQ;%1~8LxpKyel8s&@fYsB;;-Sz5Dt~Ay1V_?Ji7ZGQ5-uCw zhlOnvN(p8^%b~`~x}|v>(Ln0?=iH4^i^XCwR8dz|Wa#CrtZ1HD9z1n4l<}g*A!{%<~q)@Ty4Ga6SOmHF19gO8SaL2nG4+iQ31 z>=xbI6#JZFal3~Jm76n=tHx~ zblIbme0>ft4~C_M(wXPmdwC|V#_WtHG7S{;F6~v3k(Fh6+EQ4lO#`|p>0FX&T>6>; zU$6>!bmUQ1B!HSiF+fSL+IX=%PHD#!=v=9v6BZ&&6=r`6gQUbwO$A;P9g4{A9PUdc zl&GXM)bx~Zk%f{f2`kLC^;K0g!WCzPNYcvXD>O*U`j0>;G=WmU`d7(Ca!B+QCY=~X zB#6q^@Uy#DxR9!#1H^&Fr~-usxMBbUqW=I{y0;Bp+oi>AjHVj}PlTb(!L=~cX7PB8 z{Wja%R8oVI%i%UuS=#z)?Z-_-CaQ4+v(HkC9Bfq?{iU83oQCl$AFm1uQiKmWQog6m z^m7Cdz|Ql+%{yr=g21yL3eQS~B+w2DcvSUUowG?rv!}1e?waQQF^HnaJJM3-GqvuL zR!}8bK^0an6C`R@qf>gW#D)yu>MlVUD@evG>5h-kiB(t(AG6Es=!fSr)YTbZJtY=a zSn6rkI%WPT_B1NdKbKQAL)A?%)WL|<0XzZC{hmQ=#0AtUI&NSUMlw%H4BZ43OkSQW zE-%Il)g<|;@{?3ds!O#&e$7NXe|cNTyNAF0A^Qu0q{@+MyVw2z;tiDP7C2k{{)KCOOF`k!`4fZ@_NIq9aQBvGkkLZuiH%K$+AH@DD#z57t9 zPMCUe>IBtFidI6ZpqBCix7BU}fWNE#x%TFOe7b0n)F|uh=fqtW!$=@0VomN%$Jg`u z_p=Rrx@=OtIYpGKKqElPr`AMr>L>bY7e1Q+f5Y7jA1#c$ zw*^Y+A5qWszqZYy9xK&D(}6uU z+eX-Vt$KANrxT8sxV+=q=~loYvR%m5O^5)2a1Fk;A5ZJ;B$nWuuSPJ+2tC~`sCQ;Y zgaIKEsMG6KF2w2v#YsM;KT7~UzR}5MuUccJVr?E(=t0GH1yqshc!Whwqnc&1Ng?$p zH)wXkLE<1vAygn%0xkLmdKT{Jv=$4ldr&Yc?`ukGlm;{F$qiDIF* zjh&9IDPjV;T(nyC0%%G6peeK;e9d z7D=rlu=)Z=*V;ES8{&0^t39(e1%BraE75aBEZ0_0!PhGnFtnNrJSH z+E`7c1Pj|#ngnW1xN9(OKOWOdV@hMAb-z&&EPA+pq}#QyV`*E-Hmy3?S;n0}u_ffx zzyoeS!|{K6g4LC{o`M^V>PagAqMaHXRFKlDudYb|AGpX_ZKMk+Hy*FUa&7HqrH_S4 z`#;tDdMqWR^aJhx09WkjMZx8Sv&R4o;d*ll&Q$Em;7 zj)cs93ms1cYg1H9fTW#f{12s+*nw~H=h%|lZL*3b63JHkdIVkWx06cd7&}kPrCNUp zhMvnJyDFPn+Py!Ue^cz#HHt^tK_GNO-@GK6tb_u3O60OM%q<-|y_eEbH)0ROI4EYZU@mUFpVZn&=Klceetn1TWR_a2 zcE*+aKbJy_IHH7ymg#FxxB2wIX)`p)Sz(-lq+0&~TM|J~!-M|Y+5>5Pib}@ZIyM&@ zY|H~nym}6^+5G-Gc9CL~#vaY+f2Sl~@sL*ELH__0_8q;Obb?aK4x0S`0L{>%%WvA} zfF)O5JxBTa0{71FIVuW-b}-e51pdhU?>-Ke8+t+xSx#l9KN{4v~X4R)bQdq68a)5(>&F^w=>`7^Brj;EQ&pOoU zJpz@ru*jxEE0W-=X#@*uUUb=iQ?K>s{fD!-qWzr~%Q*GvvXvG=s7V^L5a^{qce&se zyB%%$`u_k!{XME!$3@ayQ_rCf6Gm!b@uI^Fr9_dbyl%u3rtIq9R`NN@l4B zy)QACpAZsNM;!80U-a25$*2ZvFjUY#!<%z%J=&Dv){7I=ZO1K56&9)*oP9jaAckRC zOlmCvF^5%UC1Q~^0EFCJU-9o^hZ*T~3cOf!73KE~IJ#+!(uZev4iXln;Ez$5hijt_ zK^~iZeYlCJn_2CR zIn>69(QW?XZIC1>u2YJ1SoW7qZoU5in@z{K>871LQdi90GXDT;k4F)-in1Tlq}UVm z_BOU#YdC~xap~%M4#l_6cW^E)MyL6V4vjBebY>=-_@-7mO01Nq&HN^fA`0mNHW>_z zh7;q675yv7Hb2tLUSF;k;Zifuvd?TFKZbys^lQ5Jttw!p!_j{ZTFjq zOff8N6G=O;Q_s^)>_4DV=Ij|HD%4Oq5XWY)CwK($`#P|7_jzkhwL*Sm-P0$^bRZ zYA9Bj({h~C?=o(;mvTmtgj4_q3zK7I*sUhZ(6oOTO{3_SJO>OYd=oMU4 zR=!02wN|{nblA7Ljc)>hNMZ2P3`+QzZt5J=QK)I9!1Lmbf3<72JG?uxkMV`*Q=;=<|2DegJS2A&D0ne>GKt5H+|jA;$xHcxTM z{uAcP@}}))4Dpy1i@9xJnHh;XvRJD`wfrK3=g@t+ekW`_>sd*-wZyKGe<{wq%w=nLfx~Q#mztDFDzf-L z;IQYVGSx{OIT1rfWT4zQ+RC{@%Q!Z0@gczg2IG^)m~4)y!?OM|{HN+J!>Pj5*2iD5XneI;oxrtJ z*x2gnBl1Zs`7C`!N==HI6;h%^X({I%#`a+v?|0g^OPgVJx4Q`&C3D(+DlkXv^gJp} zZFfnL!cD+q)G++=53l)paK`oy72&4EW;f2;s;F9YTDT}`*DWNHg2I%^3 zNEg2VdpEL~=mQFT`n$s%9`nRaHkv zK?n$`8j!L{q*y8*LR?5}IRyUzPhg2b^QTg^ytIoIfrlJ7_N1ZdLWWrnTYry4i(GOfT0igal9 z=3+;Xn5j}5Tggv3RhF7Y2ty?4>0nmGixqHn52^Mvw7PQD5rrd&JVD2p{j}gldX9Gs zLjodi?B*MteQS=RoaTzu)&EyS^%JpTY+@b;;qkqu(*BRR%L`Nls# zmq|6pAk!~sKb{ZEv@zKZwQkPiSHmwd2G! zOqCV0b$??PeQ;9GjDn)GZ`B0TC1}aedWYLtq^?rj*LK;?+{!+_(ai9;rCuhWmJ|F! zfn`oQbUg=oqATkW;#}Ce)(I5Q9xEcRarMnIJw_>-=wEi*9CqL^iTNBICUF+6yL??PxgBM*U(Bj#$wu?wA+DmZ})@v_R&t12jiZg zm(?b_o0h-${eR+~?@9`E-E&&>@i_|ux}Vg58*%>i`1Z*7snUi$wfS|1fyt2itVzA@ zLBBkY&Heg8LBp*?YTSA--9wRvqdP~A%8e;4t8wG$);E%;?$LbF0xuPmNgI&J(t5cc;eTlu(!QM=T8gj(k5~8b;(74mj}t{+ zb2Nt82fGjNt>An*a) zWDv&6!&b3O8fVJCD$t&WR?1nFMWksp$gL~JgN;bQ=(u)1@S>)p+W6{9B!+5@#G8jB zj>V!^nmlBb_1LV{B`#K_g=}BLC^KmVRIbhvrk#OpQP`58a#@1*P#?0n1K0NYbZ;60 z-Ob&=SI(Yf3~{LxrVkFL;4;+2tU@HqXSxircV7fXw7^m09YV zEswWaPvBUS_7bHvZuhQZA>3Ixr>|2wSL9__Af+uJr!tWGxOpU1C_ot%rvdi=0E3ST zV!bT1wsO)jE}(_0x5UP|2tNp*@=;R2iqoRK+g+JgO|rAp`Cin|!7gHoO3aSf>UeOw zD`i6IidrLx$YiPLaZ>Kbs>Q;P{{WNIwG<5ZNh(_8=~Nd)RM(#}K(E*+Iy$$tQz)0{ zz(vBD4!1e2MM=|>QJVaQIv}~-@w92OIb_E5<_|wrU5&K0o9e#1cI0RpqLwi>R)&IE zqQuLTjgXk?Druz=mM*Jx1RBJXJZJSZXYhbOpC8%Lqe9LjCPFA{j927-T@wA*RTV;g z;!;5vjoPM~N=Y7F4#kV2A_(C=HEa4tk!t~A?RZT3^{0%1(qc&^5yF&|;zXVSRMJ(< z^2I!8O|-R=5fex`(k=-8zRVUneqA7B<5SX0Cs7qKcqysTjKlY4h82nuK{~`lkUVM$ z1N4FohqncFe7ZvF1#_N})iP`HNHpj}bZ5G%#CQY^R&6BxM;_IvpdBTUil0uCl@kH2 zpHcLB77iLkVnUYs7r4LH_8#3uuSN2ZGCEGy)iiGz`)1ZxM0X$+^s5mks>(&L^x%7a zQ>2d6^65EKkciCMikSfV0ti+9g^OEN!Q_5Dys@4%$4ShC^XWfPnu!j9EOCV&l7Ad1 z4aq-K?cp6q4wAjfui_NyDsBj4W&P;Q*Ye-v{;?;4bANa6N&G!BZj&A3sp*=9$^#(` zP3>)LM>f6g06*8=L=>(%qg)T->FO$&rCnu-{-s#`1&9|mHw5rLocq&8Jvy?@QPi&w zn#==)QVA*mBht3u9!KO`+eHBC-XX1e&Z{y8&~6^r3`yqv3l0U3^uPG~p^P6ct|lYT zte#4^fGZ)?->5F3eK!FA06=ZW`wwh1Amom&CuQ@`PPAK}B}fXavXB5eSZX|23$q5j zkNV&1`%dpt3QzxYjHvNz^aa213D4wc1ziarv(Vj+?6{z%i|tj`MlrO*$tURn?xdCpc`wHt5$wKuRyClT>r0+&;ZT65L#q__w##+syDCIJW>+hpWf<*|Mo3 z$I?{P0Kwyku__zL$#JN=BH0?ng{%nxk;es>OaoAG9a2ll0@K&4McFi=AzEaM!wR7E zpni0a2?E7*mK=-yf3G)cI1A6EIU|qh`M>7sQaIVE;r{@u{a*SNlB*8+!*LNE(`r-N-^2!&v%w zYYY7@KO^b&_GN8oRG$tLUWu>w6)Q<+0e)2f09W{W74W-TEmKm4YJ&ps0--1ZkU$?% zW&`uj2ie7*-*F_v#Ft3v|&pGIA#B3@*5*n#qX1Dg3l6bM?{{XM- zd1bNN1Xh)cAD>Z{|dR42(rhtM~)K*CdRyuUvFfVXijYWyL{9eb|gi&-^ zEx~U-pYc+|7z*$Kb_Nj`7c!|P%nkV@18?j8x%Q*Nr%20|Jbe0G(7LrZ`BclS5EXT* z$^yNJ)qV&A@J;^!A5VJI!>5;s>y1Wgp=sa4S6CrPl#wK{h};qdk%89d)q9V{zr){x z2F{%Hwk4?@AS<^DMNLszQ7t+&jLfR9JdYtk%P1z+V50T_0@wclA9~S4LDJuaX-jT zI@(L&*nZU|W;&)Q;E(Sk7V)yIn$+38p2OF>v2wN5N^tq~eDYh^L=~uHBY@(6;<~ba zsOnvnw(xlzrDoHcKf5QWq&SMDik^y1txr!+RV+FBYUnFxqphNm&j132 z+!dBoAhmJnPdfS^N^}suy1klsSWY9i6{zE`v>ItjsT@NOUVweW-F4A+ZDnEKtxrXO zqp8GV=%&)7s3x~@HC;l7}4BtThIQ{~i(Uz?Q5v8_JhfmRx6 zqofkdlD#3E{_0VA3;n5|>*)l38|!~*4=GI9`guPp^t<<^qY7wKT2#}GI9L3gDmJ&v zJY=aIOV>3eOj5LlY(`1(l{ItfF*Qu^Q#@4FQpi77l^IVLzZN9D<%tHQ2y5r4aOl$B z=GJVof~0h0y6@*Mdmbi&eB))3tVJ|+8;xVjPen2kvHguzL}sR*B~lH8lmr4TeoAE7 zFYW5l5ueY8rE5;Lb+v4_f-+;$;2a^)4S3WH9*id2`B{nH6(RDQem!;3E+(z9{gs@= zQcn63Xe-_7ag!Ws89^=~l{B-JEC?Rd+FsvS$V8Bu0mh_P=Uns<-1$5@vq5**rlPT{ z5Iq3JaY2#g)ZO!u=uXzbXD}U;wP-6^u7akDwmq>7dzvhr4O}RR7FrF@Ntt}BEQ(yz zB~)M%K~?|{V_l<~?k&HyuBw74Ngtl7pSM1J0(TBxo-s>#14m5wiWL4@G=cUNJUI18 zeZ}xN>=TmR8*8%hTO(mq%97!**<2PLmm@_(TBbUDOm*{5jKI{?30Z8Sr^q8<3<5<+Z@-EzxS;7Gq2s6NHKlAA6TsM-iAgTWV zSI(!Pvb(LjFA0%@KTFs36ih2&il(Y6dR%=SGS(G{39~ucsxvq@4X zNS{)=K(DSx$O`ABwpULL%yLH`eSeqDk4A$5vNu)|o|7lJsp^>;C711}lw=FL6^Iz; zh`ci-h4c+PE8FpJU>8(kN-!g-Q*6KSV*uA!8T9DN?Qg#n)R_uwPEQ?1BaRs=GSP^G z$zf-uUl_95$4djGe_zQ==~~oK*P$$IT8CXnMh|V}W5+`dhBZE6A(^J~y2|F)j0YM@ zmH-2BamcX(#Ztmeah{f<)KiUmGy6|946xB8lHFsNidtrfNgPWg!K)y3G6(y5wFQVL zhp``@WlpTDz@C!aKyp-Ong0MM<~laJFDR9?^f0?=iiDw|uVP>L8K@wNI)IEtRvxNN zSB=J$F7{~2xx6n?r0^fh{Nv@&Q*emJ?&>?A;$P#ZnDlXq5ypcCm^Pb2zBE{px+z*( zNz63a3Tw}q!#rXpdO2xzs^)NJCP`yU`AstxiLR`m+TKXlO2~xJ;EcMFOj8=tlsb6Q zx=sk_4Yhe1(F8sLr~DfF#MgGNJ&3iJTnY{Aw>uuXijr-3ZK zw80{(<2B*X{er83<6|sNRZvJkET$0FVEhtR_xf_D>OVfkc9O=x>OxkP`#yi_$C&63 zeGIC@ON~U+?WdRevN#@>H1!DRd_X7wm8wji5ICqHWA^a;`uT`| zvXk-#{{VaZE{9M1J3s7`_M!~K0D1P!d#lotJ1Nv!4PS78aCLvk{oYDx zC#K>DSf@hv4Wy-(lB$rCBCs!~^{4<1RtDou{gh5Y46X3=bpWAOUOgF#+M0as-^XRV zx-%3JMsCBIRS1oP62-1nx#R2XFv?+?MIYI*=t)sDQNQ{i9WQ$S0CIhmRRdGq>)KfE z+7@FN151~R=g685s94|ndrKs2?WBAsqZ>IwP@jvfiT)t%cia0dGZ{)6nX9uD)HRW{ z6+1-f*&rjl7BqsCEFns}tQki9_E95SB(BSGB0 zalQGDN!%#y2lnLu0ITxoabP408U7-FV4%kiHOcbmvte@4!wy0kAS&oGON`spvDQGf z)s?u6J#*wLX{c%Bl1Qo|sLfI}Ov>SD=c#A|tiCdZ+BFEL9Mh$WsO}r_jvp?cq23hR zIX6T#cpQE^CoMKlX^P6jCPz3ikU=u!DUzzDu9dNH=5rM$I_IPiO!7iRlAwWLEeRV) zMHH=TkCi{w_MVOHZ3NDehAagL%>`>({ORRdju`Xl0lRx+eGOTd@=@bxcO+*C4Hg#{ zi^fAe4HY{r4Gsp9n;Rjf#nF;nx(Jqe-v0o&>R3Fs=2mS$mN`B{_6k$%==KX6R0s;! zL9JMlYIu@KH9v3J(PzzL>GBkrS@$I+Of;4AnQE4iQMV3yzeEbrj zB3`2*lu;&6KaiRjqJmlKCwS3f(HKO!m!i^1rAa?LenWsCm)p~bJnK?=DcLy8Ib4-B zT17I!P95nOxux?=c%Mb>C_;H#fnjS{SgwQ`0!N=sPW)(oT{YLp8kUz_k1NzuM^8mc zh>?Ef)R@U3yl^o90HHl1=i2b6ho434K(D7r46+E?VO=PezF8djg0zMe^{0(hbcmym zNU$MoZ*E4TqWK=An)Dv$CslnB8liO&hnGi!FoAWjj1am>B#Zuis#Vl}T_Bn1QP6)q zd8M4WncgzmT6&3YLNFsxRpQC@_1}?11yzo;|9D+2oT+6#1NVS#dGaN@V&Df~i|~+i*ECB~Y4ho(N0c7~>e{zt5o+qZLLS4CbnNdli+p?}goq^ZB-@%8q^ zn{~9Aj%t0qZEtU(AFB!JX@=~m=U}tAhwx*U_KNy+jvSIe2ajd*?T(x?_H?oh*(CVR zpSPiJ1DU1BBL4Ji#-PQlro^2M$%s>b~39_iJ?5ITVP(8Jctb{14XEP1`` zHFJIszfc~xsh7_kU>N3%mWoFYb8cJkZ~m+4{VjiVD5n%1Jdz$YJ!XoxB}m#;!2-&s zQvyZrs1K!^>wnL*?`n@)j+G_bp%iYFSk2K@3nMv{AJSP(*7}96FZdSb-_zO|Yy)6) zX>YlermUWX+715zAc`^fOj$Ipf4cKRQL^nY)<3NL*+RnzZL zBBZHQB9MYx#-SID7F_`HE%`i~e?#pNv}HL=bax)$jH-M=)bqQ{k(Ft#2rgNfZr`@& zg4~Tn^T#*;09)HnZ%zZJ{wyjX$e2&3KecynTa4J^($!N#>V{L+mlD8BkR?nnyv?zTN-?6uSxLK64X=_ zRSD+Owk`}|!YYrWdOn=r@%1OzF7iN*#F`F`BwbOBD^{mgqt@8UtjK~YXr4HIBJ8Xl zL3O$HkjgzoANP-IcBtO*z)?j101x`V;<^iNw+Uv9?$v+rbaQsLz{ca_j(L(ZIMT(4 z4A-})1N9as*!s_HwTJ_xYxU|h+&AmV*v70xew_)lbaXVf5k!LAY9JOrOMkKUVWKg> z4ukW}b1%f_rx@l~<`4Q55q>_L{{TU2+@E?<5%nAnlDus3mEw9=QD>gQIOCDW0^@)| z{{UlqaqQX+#m8bPJqNCKrOUg3dQrz;Jcvr67ZF@+Qf_jZlg&p zOqaf(Pda(G`+NJVw69u|)98>TDNdOxB72hGQVG5P04IVEKVN0C!qp`7XAFx$r>Gtp zb8_wthxV=gdAIfF+X5)~vEkCc5@A5A)JlU$eF39CkN3amdAGKuXqN$pN+A~mxT)wj z-&;P1b7AV~9uzV>GO95^NhL@Ff;hkX4`?qfDua`nipL3Sd;xb(5sOwR`=3msg zy_>%3t1B_zZB0_MNlQ?%krdIy!~hB4)LpK?^YlOC>@j6(@t25uo1CCK{U`u_k?^*D|oJi08BYMh>>xw=1AJg8* z^c{LKSkk!Z+6+{FTW?kuj}l}&dJp%T1(*{& z_4FwU8i`*RBhth%3f4c?#}3iPg)7_sAD2(rS~qJjs~$fttdDB-Tr|`;iMN7eDXDjM zCc2W7D~@V*n=O#5o9-g6$-_`ZNTYc#tg0)U-B{TB4&H7CB`p~kJP)AgRcB@#(G(Ig zeL6gyE!33#X)M`Hmf>B&jmN|dCKilKElmY2MwN#lxoat-6#oEaET{rN?yED#Fa7~r z&B-nXxS~EG_`N?am0ghFK@@rq@fr%BFurxCpvOW7Veg|ygNGedU}|ca;K)SuRFKd| zTq09H61_1pL2na=QH;`n z^bYmkNPMmNW0Zxuw_;?r-r3AfY2SEm3R;g}llLX7ji$3l6^I~QlW}jSxkF{-)|~{G zjix+P?E5_b0GCmBG5d|RZ46^Z)jEu*$^E`x&#N!^@BD?b8LW<7d;b8i^LgsnKHhj! zZ&k8l<%+3T7$$~d($ZJcn|Wg)<8&zTvAZe`tu`&H&B8naWu_`APso3tsHd2{*WBiY zDRzFSkbH*O5fYJmnm~^CA(Ti8l9vl1RpHZhp$I`zt7v% zyEJ=-#H9Y8PQG-qy>m`5kaQIERBNXSWu~az*rwvy^Vrm-LRM}Z%gIIXX zPD(LP+y4MkZEs}Dxk+di39Zl?P*e>60H3cOZRV>v8hAHZOf~p{C4ba>tDcG9a(}{j zx;He_i6le&|5ialbZ36_F*qzbO#XQIhK zm!5)ffUK;#;$x;o93NpV!;^Li-mxpfX@SHaopaQ+wR^&oh~8+AhJO;CA0nsE^P%$U zyR*B?v-*!Q9^CBg4&c~XWtFL*HBd;HyrU$#mRefjAA+q~Q)?2AN6>o&?%a=cVHeaa zOEs;2CCvxSaUDuKKRVd%v6Z&G48UZ0kIRqwK79^7f8Uu(TC}a8&sI>^#rE$UuvPy6 zkkojXOQx=paZ^hnRzbtY>POb#+t>#8Y*^Z{$Nqkeu4RVyCRZSX(faGo_1HU`BPKs` zKi{@yopJKhrrz3HO17-5ALUWYQ%{qV37v?94H893M^`G`M;U)ZB!WrdWmQI~&3=F3 z9Rlz6*FeQtX#mp{<}{?T9XbR2k=$->JZp|8vKaj*Lw5FPiu z`U5eTo|?11cjo%SQBt&+dYnI2XL2Pg8VJhK)a17oUaFB*n&|a3^!mLztVM^j2&^|v zCsxs=ZTLRJld6j3k<^C^p;gGQ+0moG zPncL?qOWSXDdkBSY3&r$>!=AE#Z?lpGCu?;b9DS({>vmZ6$d>njk7>8(Dk(PI{a#@ zX`Q z5U_|Pikpu?2hx3`bTPIEMK{)~DiVHVdFP{@vGQ*$u-7V5~*GiEO1sQ{m|>Y1)4utpUcb zIuZyq0GxCKzPEWCi8TN#+&>4UNc=uk0D>q;8R*CDOstt0U|8f-Uka@vsu-$GCBlL( z(D`&AQ&v?|&hX0{H9H_FD*{B07>NS9T&9}~18znBhuPZrv9Sab86UUTBZrsx zdLekBl@-;1mb^U&l|kd@!|drvip=Y(mX3Fk-U!6B;DBV3jms&S4Z}NA%jk9b+e>{( z_OjOXl79|XW&n1NJvq;*AmER%@h76|?YMXgJW8WcqaQ6;!SoC=586D3Pqh=I^ufdM z&7oWyF0=iXVPhHp0AJb9in7EXS82t3tLS|?CrF+tifPCdBhH?q*P>ni$tOww0DXVH zf8D7+?5=;=*8T&om-sLGZ2tg2ALtYB{=>tg?Ct*kPapj6{{YK1YW6e!yl-De;A!vu z(eyROtshn6apS8`X0P|p>HIk8xA!%+x_JKpr}bVZ%T9{Z{Vu%Ij=c5%(a;^1HL$(U z=bQVWC#OgqWK$Z2B~Rf00KVssdNt2p1P+{`nvJyUQm6C%2>$?j_R|B?>QwRL)72g# z86*=x9hHslfSn}%NIY8J+LA&A4@x75R-kkuVDYsyaxG+XtEzxXw<=T~Zok<)dn&n= zNGN#pYi|=R8=>19oWSI9!kDMoWFtmaAe4@y)9Sj|#z`Pr)<4(ScH$|O^$e#+@XZUL zQYilb;ptVdpj6y6v#UenN~m69!uldvQ&TFEq0PR6;^*GutyEJdr4RwGqla5M{7s_C zR|+PF?6H*fIebkX2P2pA(9t3A)7Jgt8RT@5ELAyqfwRRJRF77(Z(z;pmgI?;1^|=m z{-e}~v;!jcsVn{;mqu5#vh-&yxT+aMh19k zrd_8`CTc2dgqZr>&#Nzzt(oaouP>9y$?ArN8cC%u4Ge1(38cMDleNdYs3xj{mFW7} z91*T#qP|{VA@=Ym{2g(p+j&ZCAlHdC=7URW~LlT$HeFw~*AD17ONnE1s>a1;i+oKmQCWjwX zBEs!FJ4s2tI~OfOhmty)RLx2E{{Y;rl}M}>vbrjHWtL}XX``B`7KJyA8CjjHDfxDw zuNEF`e1(2z9V`iR;v`n0tVLPd;ZgD*iI0$|1BoNfzBlGVp0-%2f>S)NK~0jU#{p9o zKkSV1#{@NLB+^vL1QDvd5InL;C{<}rmO8f!GRjLn71CK&UbFkkf^NnkWeCPBF%NI{w zRZ8&H2~}q@nQH$4vBG2O^EI+cwCfEt zMWR_<+Tq^J6a&wu?$-7ov)X2sh5Jy7)bOW7)3#~QueQD`c0Ts2r=LIf6m(S&1a$c7 z7^HQ1CiLi$VfBo6 z@>Gawg&M%HR5SoCrKr7xY8~~Gc`47+pJ`#fY?Ac@rE9gsjikrj>C^uJ`zw@k!e^qT zqNtH%lUl!+h^^|>%CL=meKeN+RyOC_v3VKzq^3Go9@wAnzM89kDAiL>64X+7R#lEc z5>ZTCMKLO&7DW>VkglcI^;;WT-oCOW;MM&4fA?T+3D7aSJ~~5AVv83YT~xD7Vyl8` zV-JF+#k4n!7CdkTuGT+5J*bZ0vCcY6KGhzPL0?>STDPyq+{F~Lf4F(oS)?#G+DQnR z6dx|1MuDOK0L0vL?LypXBfmWmU2H;4RE%_9a=kLjlYQPkKtW|jKs5&STT7=BX#)QM z;60cn;ZP{u1g^PbPNGww;-_cs-L)Y85nAOG{{X;wnXbei(iQ&zRlhd(vn90E@l!s% z5zDsT+ZsZ~o}DN#-I}krrS}5s9v@5>(Oo!#KJqM z=zVF>-G<&+oTO^&GzqUr`l1kT&!vddtMUE=*+jO|M8qztIdP91{{X{34rX(fRs#9VSMet$mooOSF9 z^w(35h@f#hD%b#`%n0Nm3@$k&4}PyzJS(fFi6~5Em`eO|ybd@vVQ|C_5BzK1s1IHe z5y171H<4`3AW}`ns{#e>a-)OIxc1vd2;tJCxGU$>=Ctm8%gmmT04m4zamNIYrR`z#_KocQI$XPp5Ief$*|JLqkyhfxRG;mA zK^OcV>woa~L1uWKysbYr*f5wxPR4z`;3WrE0V+%6itO3ML`B8aMv7!iB;%P0oHP08T#_#WeZ%GIQ} zbW@Oe7tMVf7VA;Ob$LB^L^kd&o&c(h6mz9O^y(t_^#%k3f2XspxlNV0kI$eM=HFj2 zdgGz@6_c6c{{T2`^a>5NaK^xvw?FKCi7e-K7;JPGxwMTBqB}>eM8PbWw2%0l<^erimhQ8OE#H$Ng5`i=<%5JiUoiyQv{uk4=X+@I54g}ZgVzM9O#rurd}kg1(d`%yOwaDUr@ z{=c&E9K?d_(#xNuK*A;+E$JW+7}aar`h9<|`2By!*~Pp{R9BBddx=W9rw)nt%YTad zL*y36$zk&t_};g`??YJ}QJT7W)k%s-UDdR(lEnW2P&xL3_SKQRct?2tW6<<4<-Pkx zn>&{M6YJ&HnBOV>JnlY*-kB}GmY}JorG|MHf>BP(PgMwa3sDOfk&+V~g^AUBi*a*U z3eK9;QHK%c4?{`yCYB9UJP(oRoljejhCv*qO-kIzEpHjHC_O7{HU5^r^&g*ZkwAK5 zQ9gZR6$?@RVd9LN7}8%#qpN>s)2ZwQ$RAKY*!ypfPR8UM^@lZ-rNmQSvaX%vl>+Ec z#6K3bm6URAb+IJ>0I>H`gq#kIA(s{C2JGDKUmu7Sxk(=wD&y6Sr6eS^#zMXy9Ws#X ztT)yF0H@>H>swIFwG|zDOTfW`oQ|D31ElBNJBB^Mnt;z*w5pidQWcS+%vVQtNXjh6 z_}VgE)rT!>eSNODxLb7a*Q@RJrfGah2mD`FiLttxl1jPiw)4c8nJHnx)5nmdSZZn` ziY5Lc)M&@+0}x=p9H zVZ_f(O;e7QWS=o4jA}7dFxG=TH5`h|=ZT!fb|hNF0H)z|rnEiP=*|~d)WsA;$n~uc z0m7vJ0E5q_t<~L>yMJ$GvDoTyglwwh>GRc?ns_5Q8Y;ShJuW^*h21LYXzG<&ZgobC z!B{I03D!xbZ7IY2KQ5Y{&Lxp1nYHPmTIWdunupBSKEH2O%a-0fi`tvIgJ5;WHzl3i zRTWJ|MM*@my*(n-I;u@j;hfUbk0@d;7y4V-?$yh)?lR~IbyxEI&q1B{nJji_9(m zeSG&5G?PhJVo5(U(5;5s)f72u>XSs2@#JEqBgG#tEk3m-MovQnelAZRPj84M@fD3J zPLfYNZ)<Rg|CDdKGbaf<=`Muhc^Ead1x`Pp>}ABa48iM6A^{uTK)-VTxTqxoOtt z$sN>aTdMg0w9%)%q~9!5I{cA-dUx@MmJxWK48$~bZNFfR`!z81`)2Y-O?-5qIpqH0VANJv3k~_z<@YC1 zRaRRcoOF3BFwnSCDC>YSkpx<_>(#&){X7frT(`Gxu)gK9#IfBf)#4t1H6P^aX5|ik zH>$RKi|M(*2gv^btH|_K@qLjFVD1W<57P zA-zGL8Cg$V5x#=gRaT>nTe@qEcva7FjQ;?&kXK3c)CfLfpw;_{^)*I(sbA&(ug{`) zo9mRSlO^|AJSH?s=2QL3&Tg%@UWO3yR8~#a8}AiKU5<{kQkI6C)yEsFX^1uGP0MeBnT?XPZ8mmdBL0$y^0LNN~_G8l>AhxE@+&Db6=}Efj zcLf`?5+x;UbvR74Q@B2AAeFB8x$0nuDP>xrDJ%#}A7s1l(A~itk=q#O$Tp=+8IfsMWmkoE$1W_MVPadLX9kJeDUgLwZ-ppMfvvA=cE@Aoh?9mG`lZzK}4Vz zX3(wW)J$y*$Tf)LBrEwT+V-{3mj3{1zqTu(tL4yA{?(-N{{UC}KkDJpx!QT-f=A)#zodNijeRy6%=(33t5)IT#$cIKE;+& zOQcO4OjTO7Q(XDfaaJSCfhN3b&=+%p7iNN4R67b$g)!wr!GJz|N7+t?9DeDb$Wc;B zsyb>4-sA!pd?a~@zt=YhM?6YPuhu5ri)jVA(Wq9zpSxFh^4(b4kU~^B28V$o%AQ1$Y4gXQOE~fruaJ@a@+>t% zfvKFTx$<72Ca0NH7-mV~r5bp-u_KlP*}Qi#c%(sc%Flj+Dxzo z@Yh;vsI3J%NMYs(X3wQ*<(THq~qV zY4G~~A5Zo_E*R*pw;%7f{hyE5?fL$EbJzdU&|@D2RRk>btYbe}qjMQi{ujEF?WZMj z4@wb3aUCovaGPM2GUTR5KS=6e)R+F6;UdHQZS6BlE@-_fSYg2=^yMz!pr>_^8ae6j zaA1`iQ2ziB)+_C!GZ9Zdoe`(Yr42UX#bXn}kH$qaF$(HX81KNiYhLI4J))8sr8=3& z9W9P%;}le{OT1jT%F0P5mYu04AlXn^H5-l=_BI~M?gWVR)lt!;1syAq2!%zCx{?|U}YE)Epuqf3Bp_iwzSsl^5u-LjGu4yYFvyuBzQ=%TC#kCMTcfTvMJh{^2*BLV)Ou_-pF(S6t9;;R3*D= zYI;-9jHYV06-T%5w0PK>EKL?NwpDlw#Z65mS^Fw?A!I>G6f(~)jWIzI7Ij@s?`nmr zUmYt(SbK|Boh>1o0R}@EhlMd!)Y$6GlGf#ABC+>XdYO!sG_?^lu|5(uUj!bR5#I8R zV3`)d$Tb3f{EiXVev3PJTbje7N(CUD@&k53bMq4&UG+BsOh4B6Y70WM=?=RRRtHS z`RzK{F*$l_{ERbFRfVfr;ARm`O)-udsyJ3Z+?64spK@d@x~mw;Jt<;5 zGxO*Z*!yxSoP|znBNVgYjP&(b`PdaqtyJC?|@Rw;i`8lsT%NH-WOcrtuY_(`l;RnF`r7pgc4G z0Az~R+S_c6WVxZ1p8@_v`gE2;ZX87)3i0ylDmfGzENMAuRQnfynr~1BK9KE^H zSUs!0A7#_vDBiO%PVrEtP2q$?lr+$oXOebukh($SMhri0N3t%W2e6~w++9dwX3{l% zoe8b%VYi8HkHN&67O43OXV)L#=yJwTNl_EC6HzTOrg0CFMu3q!k*0%&PK4%>j#eHoay}C&+Fe__ zHj33vxVp~<)o+hirp!T8TT_XVWC$wqNgG2%)wwAI(WsG(kt$g5FYi}3w-#~)lA^z| zpD&l$(#s3&zi^3Uw!5eekU-QvM~wy#q399A^bA?76=veC*wR-=PZB@b(x-}|s3K#xy=ejh(Nn`kQg=^)H1gFR=0n~ypgKN z!%0UCb~+FRHc1h+NS;R1ED_2?o+kh>BHokq_NgwHNPSu8g6D5ZOD2qTQFo722wrMh z>IA5TBrzp)5lCc(Q;W#Tr;%^XzMj@YcyP+p`5uFp`!FL*$EbRbE`WW(*BQOCzkiID zN{Ty^swfx{$LUujAQV z*3TKC9U8}Wk_9@tUB!{7savYVRDoh$O^Cgeabhkn{XL^)AoQpZz-Jw0{h|W+Vph{; zEpjb;T}SEFf9vm5JzZ2|s4olz9ez9Ck`lnNByy|t`h)J^9QC3FGt^0AfkOV|OUi?x z2AinAq?P1=N&0*7Q~7nhRP*V!dnvNCUXy!;oOZOB=gf zAib@vy(Ei+bM++L{yqCZ^y;lSBace0iAhxZhZ^fBALZ2Rpm1B(p#4bT4t~7*Zdlht zW6P&4E*WQ!IH>D%kLBMBP<5^rzNOWa(#05CC}&kurORH&gf}AB{PBNr9_c8yyq$=^ zJxQ(&&84z~nsMsgaJz_P{BhE$lTMNf+eQAQvAzC+#C|{CeW6Xku9yhapYVQtA!`wC z33E^Nd2~MQT508tRz|QEBEeKCBIe+aQ6&Ba&#|7+j6e+C1h;8X4OD0SU$dbmmXRRR zON-l|rT+jI0RDOB*p(Gho!RI!H0>ZDFG>nYk$F>cKQ;gl@dWeq_Mv6~cJxzm8ypdi zooVuOnS@Ee0NkD}Ygpd@089IFJGo1Q96CWYj6yRbbgD|mSk;@8fA#NgsXY5PS=m$* z(FizeyYPB)wKP8!}IJryKeE?M9h?^9Utv`MAvdExilxFzAJyrElR@3;>6hL;Qs(#N7vYL z$D5^jgk?B3&y%tYGR!NCbjxG z7z2=cug{&o3%0k&{=Ld1IQn{h(@O(YV={5X1yog3;iQhvwk27(An-xw-K2@4adQ9_ z{6o}v{(gs{e=l#VBL42add7Ye=zNd){d&?Dz50`Obk6(C?Csf$mlKkso?vE{6AU#p z@k+z)>EvM|$qb+d7Gg%A54Fe=Xx2#0RQ~`kmqK}i{v7n(3g00sQo;C?;SLr*TK7$#3j31Y%++Hbn4f(+hdMgHFJ01XqQcFpTb&GDGZb|&bY*HU1n`>a(f!ryMS(8`9E zg=nNh8j6tGlhSOX>Fs{CffWS-Bafd;Z6NUtbd%Mi^;X5G*f=b9Qk!o5X5N~PS@9U^dd!7f^z`&n)8%TKT8x~O@p)VbV5x~jAyDZz1Y778yuPS))M`ib z=t78586`>r!~io@^76qWk4Vk++}MSyj<%w;YNW+Z;}wmbNM=~7d_`(1YGYWw-Rc1z zlVNo>2UUnEPpG(cpfvUB-$@<3PACOCI;HO^n&e+B0MJ!o;*IXI%x!THSOsw_3fh{zNREa$bQ^>kRU<(he{=Vg%vdSwM z(IZ~}06&@Q5jo44ulH-oymulI@QUJ}mJNEjstvJ(rL3W^mYx-HkjU?G=u?_4GpIJIhe%IbK=mDSFlAz{j&#f`Z3#P`u# z<^KSdf5FlyE~B|~6fLQ~T?t)N^4F+419IXv-Xn4Nv$>3>Lj^~P%28I~>zgx}Zm0esCjHH28Y8nxOamS|> zd_|d}b#WOXw2;&wfI+7ME0N{VvaQVH=&{mdYU<#o$HqT?qM?=~g$dEEnd}!!5qtjt zUuIfQc>^F5`3#<#Q>d*x_;keebQP+}9YsA#5I}gIH;vJSwJRwi%%`8nw0- zPmM}NMGsJEY1I_deO3|@C$)n{KS00I=r}*?d!S7$Y4G)HfF6>0o9NQ3Ti5g8eqUhfz5Zi-V%q)X*O~pho5jbG zrpw~0pn^w<7(+CXc;GJ_pcQ*a7gy>~c_W`;MUvxfxQ^-_SUDdrv!RaLbP3W}EQ)G6 z`P+P-=xyQgBfK)(3o%JmMTvU)$+qo8%5*GH)Dt#5%B7<%3dpXSSl%ZeTYFKy*xTL4 zHyc!-VcqBt`#nv(yS_c;qNI)u!cZSlI0ODe{?AD2eZh{8!I-UC<%O0uk*R7{o^+`W zzq*wsIV6RH3!|Y)7QlmRf(Upj4F-OF30_em=g*|}@!ao~WteWw$&sXzCyyHyURpM- zr=Bu3tbcfw2E6IulRRuWupZvEg+h_wDz$Trf2;E7mg(3%b)7y!zGKtZ_Vf=_@15a6 zTT1@`-&~v1)6_9`?5^I`rB^lY{lZ0BpDj*?pZg?ud(QMDRO^5dsuMOBni)znEzPD)zlFo6CP zeq&A2&8_6)ivE9}Q*Ob3^%0_lF2mFPU-5pO8f~?etV#$CUM`TdEJ)-^yHSmOc6Haay) zuTuq5KNkA`08eDDYNS&=2~{u_xafMoXI=+Iia{ZAQM{o6bw*T;7|I*Pa)Xj@Z>5O# zk?Jx!VrzX>6g>|+TQMuMp|1VfXO2p545!3H2M>7^0W6TJkX5dIL|EI~T8E!Rw|1U> z9uFRke#+dDiduOGnb{b%RXh~(DTP)=k;}_Q8Dyt*^#)=4W9x2jXxu5&#Qy-R)1XG@ zWWn5E1HhBV6ySXRLyt!5V(vwji^#HMosg&?G-$}A#?mD26=X(@{OI+(Po$LTCcgn$UR7W&)S#ksa{ zu8i8SK?8@c+5qU9@ZBb~k~Hx02qv}iA7Lh*e!MzWF)*$yOsT!(IfA0+XZ=?QUzv9}y+tKIpc>cHl06%X|kEXsq!`qsq`B%ZO z!;kp7W754Q`dF*~08u(VFDie>eCx)YfB)0aSY;S|O!U&!=~@h}eR>|`qNR@+1ymBDic2X=T!KK-z?=PB>;5+O z9F^F)2aiYStKo(R9VQG>q-`WkX1(M~k{E(V^}pATdj_-zs?*P-ZSh8rH(9ypsjxAF znatKjg~!CvqcJ%b5L7sKWoY6`Qrg%XfOzMhY44d91}W=%_MSO}|M&kleX^jXp1Mb{<9wwEhV-E=CDzaa~u1Ndi;G!W5^e&Ey2NwXq2! zrizw1OR`sySp-Of!>w!hiS;J5r^`R*64_bZ$no6VNYTQd3~NdnidI8Rk;E#{1Cm(M zh36$%Pc!D$c`B&jk8doH)FnMU)j7P@G*^mRSU+|+7L3b z*Q2&Wq-h?1v#QDY4VQZSm zqTEYz%zhEoCvOfTQJ%TuGE}=yZey|aRSNK8X`lFi_MPgcYnh%E)X%K8n8ySG&)|c( zW18xHF)1=N1wWTTR{~iX=|Flk-x~e{ZocTr7;xV)YUmG4%Sg5G1k%~uM`zE z?Z}QcijJQfimj%kj+&a9vW}Q*rN;!bOt|zdCyi_!$X0MTP(J6n zT*)MoOCu2E{(tdZAKBQz!Zb}P>qAdHHNifbxL3$z1JIwcDQMeu?mS9URR-KYYTI_2 zjs>U4)znKP)ipG9`h3{*Xc}E|k^&@l)IA`S+0G=H;WgC9v<^IYe7ZKcWwx@knnysf zSHvu8paDwPgJzT-WbotBhV9OhgL7?;yxlYv*jikM)7|*Y9VIp|M5&UiQk5BM>e}>_ zAf~69mEJUy_au0jo0Gx5<`E&YxQay7&SL>`3s929t4||9a%g%2So1N8`*pK0%vMND z#h(Qhv_w^h)C$6M?wDyH1KZjUilPL)_$_f->7ON)~)M({%&EiAr6 zkgvwOmC(?_Vu6&bmMec@skx>bSe`btS!V!^RmDN|;#Y+@f0w0lZCkzUkr?+mBDT~Y z!!@pxUL%6P8q|_}uxZjCx&B7=Cg|(E%MKrHM(oSoQcjRNhoGs?oq9B|<-Nuyi|aQQmK9d0r3Fbe z$kIJFG?Jb?WOI7si8Pu}@+53x z3O&0n=3Wq?JCE|}$*{~W1IJw>&)4nw`ugx-PG7ZBcwpYNr9Xf$}_h^XyPtT^VCj9IZ;};C^)B zUWA%2n)rRYjquS7BwF2|H1oqr#FZr)TF0h<-KHaj^)ih*NCy7*ZGE^z84?gh50*3M z_Vo3~FIrrX@=W80nXLx__J2R0Mdvf}2N$_3>#J(1u?p3BSt7^Nnu$Kqk|6R%TK4l9 zHQd`m{eM2yM)EF}(?|aR2VP4+gToRU3|H5n`#GNJ?A2UHbL_!SQ1e2yIqX|9K(jmf z-e*wJEVT@v035P`z&_3`w|kT&Sk*^O$!jQI(~`d<(`IvLY)sViH(BOsohj&KmN>T% zfomp`TLe!maHgo1E^MlAZ>jo&dtKB>7sTUV+0qA!Q~=7fKQ0{-uHNX^#8Fh$($dKe zZoPanP)p-_N`q9#$yEc3!Vz?}nTdOwY3BaVEpJj*03Olj*OnBLt4=)-yyn80>kTAo zeDrF5>Xo8rr$gil@Co=w^q-;p{XLzdU_Eis9q!JcohS0>xo`fXsmDn^Zx2mT09XC^ z7BQs_wJ>l!Hgp$Ke!k4@uIogQ^bOp$HbT=vv_4~?Xv0ejH{Hb46hx&Ax6ld=}V5R$y0-AVXUV>8A{Ahka;#>ben=kxf_T{pUS%?=Yx3Hafgm6D9@#J+mHkkq2t7U1ZW;=f8s>P|{!2;2U+{F0 z!rtrPu;4nck5k8~a#m5Y#{Nc-TxlLnM*jfX{YKyHY(3aSeLC|OG_j% z$e_ihR*%IBuw=ZV&gykH`+M+x!~2D^UEfZ+=(Xxt`l#(};Urc~JzMV9+BBHzXwonm zKsg^!x~=-Z)hWxXUY&*kAR3lc9SNj-42g;0pj2;2%%Y z)*}4>0I~LeWo+t6El-z3H@8u+15Hm#F&wDjB#?{gZzyx2P@cer) zwYm|tPes>OEh5o+%~O_19QwT@hEe*B!1@w?fO~#x-9+adHxAy&qZ#R+AyX8IrAf06 zFJM4hf3JQ=viqskmV&wH#?lu?)We5JoQ@T1qvw?;o-OG-f43sn_8q+2mhC7aKs7f52Un@^fO><}sM+dJW}_f@-{0R+a=>l$jxO;g>?|o(V5vjddrR z4{rFMPTx@q)+6yR`M!Rg4mo#sTZJ1|=Gpu$<`4P3M_N~J-ly!Ir|c}o+1xa8Vsg|~ zH8eBEu^5%90~8Wb7Er7z0)0TRKc8mN1h`d}Hmqm;R6QHq+cXjwoPU^)QPLW-4_CM{ z6uA0WWmfY5M3NH{&JLGZ1WBpe(tdy+@%E^Q;X?1g4zC0)DO6FD)r)nfP31Q&4$att zl7^4?d~aQq&d4uSlXTq)vByK*qiPV+Ntl#S zDk)#sJnPkjY(2|{!PM>AUCkCha^bM`^=-5ETsi@}qq-^OuCBx5CZ?j! z)GkuDElom@#Yc(67nUk|dKn{Ro!UumY|O-es=v_y*LfzkS^|8yeVsoIqS?ftv1C;l zV^$`dPnCYoh}KgvS($ozEEO@z<+9aDio`^TE6tF|R=`Z}`o(guv7c#1Tb9 zA&X5*MR=BVR2odm8Do)@0b;4CN)8qB`#P>~nIFuHVsu;; zyL)crDKneGAn}ZCH1V|5vK=8z>PP{UxUjz<6JulTL!n6ZvC|)^^ZPm~CP`)RVOqbL z@*Qh`-v0nOK3R7*TPan6%VzNS*r$>-p~h3xFjy*5HjN%sLnKg78Py!DzLLZIJ=)nV zBqiC2f3)569+jixz8 ze1oNrYcSTz4zCS>r$zGLU2Vf%j@~XHQ&|--!8kEm16CYpbl1s&==b%;-uXT9ujOA> z{DJu$SxeO0Z=^d9dP~+lTh|?Zhr{k_3T*heHPWjr zuJ+rNmG-$&MCehSwPEroz=dTXfEY4@4Ruj?UnYB~GC6&_liB&s*6a$5UUHtORrqon zYdK4o+tu;aQ@uQ2$9C>v1q_tcXmu3(*vv`{#2rp0vA^1FZsEPM+hLJN1w*vTRfP|5 zNmn={_y{EF2LL-fH)bb_ONT}ksR0dm@Fh+-A5l&|y0-1V=Be3V3O-JE2giQZ&2Amv zw7RRhH-}u))n}kdw?!@rmcE}Wv+65rD8zJ`S@Ih*GeKA+NaGU4AY!q*G9q7jeYCvg z9p7)}9!d%}4byA0+#-ar(OZbWUN}p41&Z=3m=#=_cy!dj2QTur{QJ(pziOR+m4sbJRHjBybwKXysL_qn>Dl zf*RU6G*wbfWBO!OC)`!Bb5*|L?`v>|E7-^mjfPY62R~upe2+)7TT2@1)7$0d2=xcg zqhLbG9n|U;;Qe^^F~bUu9Ux&|lKC1%W+uRkoBsf|_RNdbLDP}YHMw@}Ea_1M$YiIP zW<~``Kpci`Ru)}9gZKm3Z*a9zSe^%=1(oA~rnGTRwN(CmKM98a0P8HjWbM3kFS+*0 zN0yFycsx}S%RzP(3d%`iQBLL=V*`{bLAbZJcKMKNu()C2Fd$clsQrhjE0(u24a72v z(zHKe;y=yv>r5<0S*OF4l$~_0&pK2ihQFvZav>x9(~B_w08}mPId^N}$ka*-^)kaQ zpfU*PKHZb2g_7qVT@1IiKZ-EyZKv)js+2)d6Kfn@CSELC->qXB`_wX#{;E@=?ahKm zUJqaOasL2|=p?IElA}uF#azT&TyafuZ_bD!il#Jc{{XdnIF7naB+@@G^NxebC=z@* z=)?66X0nmuqn^H=o=6%sG}0EDwk7>>IrT;q=mZ5k{yoP0*=B|OXy9XCFepBKOMH{K z&Y(osC^Nw2y=%wv>czG_eLI+D$mOc%m5POm0wYERTKZx|Ge``9S(KHz;PLJ-xg|*j zNb4asx-dq0^%LdM!P@!6iiILb1vQxhsa0YOVWcC~AktgUvn#p_Jo24O>q?Gf5ib)~w75 z$Rz~nh_4a0nGcW1uG(ElV0pg)T^oU1nsi%pYBUhT9UHBWlFT%pcl*8{43SjRB#T2_ zO*C~WB0Ngb$sEE*Vzvb6;gpZ16$v%3^P%V!x?91gL8WRaNT|&}m->Mn8GWyssE#^1 zpW+o$8P2EDldW^Y%TMB$&rZz*%oRqZ(xmCJ)%jByAXQlE{OjfBKf%x<_SH#rF(?D< z(_GY0JX+x2i;Sa|-r*TqS2rvP>=Xd}{HQCR&+`Ye+*+_E2>y|1JIrheqAE^My{^~>EdbOn$u36JZt{|8OIL4|J2YW zB~)7l^&ijl{=Vo%dUP6jb(RWes9~t+LU||a`1%Wdedw?sZ&y?;PfnH;aO3FFc~){i zsAprx8h-=YIT_gWz9mE$>y&c&t6~T&FX>Ou*Mi^Fi+`~8(F7?cr-N08LcKkFuu#WM zBWi@F0GsLh8(aF1>+F(L4CRL&jSZB{=|dQ?1o`fwdY zQ=|Lwy9Yiq`@5H-tnltF(UGXdZK^m?CTe_qO0eX!mChVXO#*8x7XY=31IMym%5-lQ z-$5}VRnM2nN6*)xR?!(>21RN}%|##O`#QQjeqx4(p9ezA6!@A51O;m5`)H~s$}7V4 zhRHO-GaL?ENdEvfcs8;38C)?k$iPy(2d7e%veG0<=c!|V?j6fKqb*ZY4MtLYH8+s? zXwt6@iHcdV^!TvCC|enVqQ}#$aK<@j8jai96-u>FAN6OWWeXYwLH@@|<;pD-5Y=NI zH$*hh7O9R?1Su6TjU;#kWL8zfF;)U!?UKYW_Mj#@S#Cu~Lq^kvh8lmfGc13_mYXM2 zHB^-?JzY$4(^Wy2mXW1Ke-Dx4q>29kX-tgZG`5jim4E~l!07G;VpZ0)AL^$}8^B>_ zuCJ;XiY#S5J{jt%1q`*xAo~fVnx`k6mI(;SW-^F0uALD>tzn5mM4ro?xanFRh5K{7 zaU#5>n3|gTSIBw+&>Nklt&i;SHPF=Iq>c)#c2HGTLnOHQDW!&?G5Q&ug=p3%LHo_D#ZkC!%1N!?erTZsw_oL;>vUU0Q&s@0Kw4|aJ}Q0V-&Yu zC(WtE510ErY&F-oJT-pZro-(D>N-50)>Xq-Rv4w4nB!%EMJ_6eswhHLgqjmksQ%1; zO)L2z4A+fvuQ`{yQK>$4@*kZ~=h4@P9@xq*VJ6+w6;VJzUM#@y!3#l?O!;(j`ofQ| z@mZW!C$RHdW;~0{1}_UiS5}i!B{_;p%E@YIRTxxOOE0a8dI<|)0{eQx^J|Xe{_vh4 z_0lS86jG;99%TMR)1Y@S-|n+n%62<>#3UDT1s$59R4X0|20dw9=cm5l+ucT#M{(`! zmNy}~Hm*SpC3Z4LV6{@@C#a7LM-?qhGKQ>GwCb$dU}ob}1MD@w?t3gi%VBUD;y0lp zv?Q@1R02IJX<99O$m?9V+`(|-+WH1dDU;!9Q~;nCVnG=EH3F?qA=PU4r+;NOuZmc6 zFjei$om{!Rrp`>Pbaj8m)Xs)Ok;T-}Om$7Afwjhf2sb1FPcg}LGom?Y%N8qK1~{%M zo}~L8OOj+pFlm_-BFUz;Ob`Hiigi-`lk$%V1a+dH8;XgmC#tKeN~)PF(w3@Lm6@oa zX`VV2j!8?FzP6Cx>Ft!ayty$qn(qPC4z>OtBlJgZM$iKG0Lnxn~!+4!pL zrAtjv@~$vdRY+%*{cO@9dlO;LALID;HQMK?jBiy%bpKTSER92^% z0DjYsv9)K(?c`~v!E7w#kyJ})<(`tEnl(Dn3tAu*eO9<68(4iU?0aGDb^M7LlTxwu zpr`FM>Nngy&e*LamLqWyE9h(f40N+^kN*HUB#hKATVlt$jWr_cOT$y?4s+FcL*83#bg8Kro9@+%=>(~ z`l!$PRs?jcqwcJZLFAyUs4?rQH8R0gtxYOP9}{U;3PB10(_$j$38bBxD-X zrBUwo_Y4GXDN5G8E$KT;5kXx~Ukz1dHA_aW^3%I$MnKF!R=7HdBS-*p2=-d`a;F98 z$~%~4?FOTv?`8I$+uu;ZL%J57gwl|QB~Z|oh$fX;Bq5d(P=HO3BaTV;Xl0h&fMP-G zQo*Eahlffn?eX^klE>9#_SBR$l#;;HH60B^CV1RN3=>n-zL%&)7PukKpQ*XvMQ^+O z2`gu!`m^f{r=pX)I*%@KRQSx6F+`V0u1aSbB5KIFvS{Uaw<cWDQ=!o{GMAu+ushTWwl0yWSnkxdPDF&oz9Z6de^y1+CeVkif*R_v94bNjx zOCpN-^iuN}BaM}sfv2SmMd{u`@Pm6DHn`Hq=nvD{?-5u~iu4eO~87%10D$*f!-CDv48I6SZ{ypMa))2eCn z9Xj{}GG9yS`XGpUY(8{( zEi2a4nq#Nr)N~8F@y@U9AHd)NU^)K)4`~@|UZ1W%E{-q6-Gd(Z?ESS%I0gu7V5pf` z9SqU1&eeh8-|RlHMaK0iO*1LWHBZ_8uTG`~+5BLhAgBU^{a@^KXm-DAQaqt% znlt)r6_l?ff{URyBE##*zth^gE@M#t0IEegM|;Zb$yirC5BNRvLsZM-m=N~#-o;5L zQ6r9ZF9iD*T5}98z$?^$s=wgqAAQSr5u<8MkM$4m^u85w)TD12CEQ$Ezzg2s+YjLD&k1I51w{7?Kxy}Upgj;#}F01?y)ClOem>tlbYx&HuqC)!6~gQZCk zdV$nw-YJx@vYTJ}8=gle>GbE@5(wl4h7V7~vPMFjj-tn02C7-cq;OHgjY>flw;w@c z`S#p%nA^i{9X|H8r12Us$fs2S{KCEl?f%@y)^EM7i>IdDv~W#5HbyAKTCAka4M~MH zJW|IVo^Pa^{{WA*ws(zXD^yn1xct6j{Jjh|`}N%Iqqm)@c9rNg-3oAf={~cyX<}lSU@$$9Mhq0(X~vn)=(57nMvTnF<*46||JN+|5I%6_~nOm}%yMR+5$YR^Sn)+!CQG z84S&H*`_j5rh$*}gOOT)tB*(W?y^MoXnsMhWE$zR^`JQEH2!b{{VGi zn_imAred#^of$ttiENhSeSgQ;_hPUyIG##@<^F!LYuuh`H-b&N*n+3xBh%CT{cUNq zmXisJfd1H6p&#l&CH*sh4{e3m~OlUR3N zW(T6fQ^Mrdd8LZtr@*?V2?nJlw2{cY#r=r3>m|5ZE-pVTT`i(N zuG~)@BiH=hYVEP`yZg6$4x2B!j$br4CUvSSvob|pD1^%@%WK0;Q47aSH0gEVh@X`p zdnn!Hc|2ARNY?;)50L5mS!0AOae=GtpuQ#TS}nuc)L3k8{L1attio-K zZ9}9r{{U{91o;mf@Xt?GmXi)?A_X!OXy)-(wDE}+L@M#W zC`E^{F5|S?ZZ?MA{x20x52YAThEg)55m3T}9D~tSoYL7!d=}DkQfO)qk*^$i9CdUb z9)ICQ`PvS=>VNcy(YLXbn+d%;8*@8R@7>!?vi`=GZD(@%IvO^nsoY|sYTA~S z;Z)TkXb4(E?4M}l~m4Lnn>{6F?e5g`@#>hGj0wF8=_l zlU&Pw+c`_gK-Oa@qf*v{E`yAkE}#^XLqkDtUmSm#?_PYP+;#9`DJi)RPm zlKwM*ddTYLqn>&smJEE8?d+u-lvPp0>XXAIMMNR58|oC>O}WTzEjNf`X+l%Ph!qY& zCst}h0BJ&6fB;KS5=AtYM9U?Vju5xP^zHd$1boFS#)F4i^nW!@k=&b$=bv@S-%}jURJE9mY1z5Dq*P}DMHNAx+_F)K67s24*Tuj zwbqOjUTxNQmZi!5(lot$n6)V#tfuls(~*rqj;a7g)pc`WyYnPh5*aO8=_ZH)LmIuj zXz_zns2L+^b$0&%X{SgiS&P5Mf0CWU@o%;0cb?v=lN&WvRU8>?R4-85dpnQdyk-d` z@z0K{AiOeytrHVw4fMtiapa`jkZv|ocpKaxnC4Oc02p!j;%*G5hZUm$dXlz{>MbG( zz-w0G4-xYR$%pgcan|;K557|D{{WLcS%KbI8kL5+dPrlma zA@v@;8k+4E2kCp;pU?F6GLs{sigX_383c`SsYS)EFZ~Y(kJ3Gp-C?Wc(%3u~#a#3-!4d1B)Ab2yPGH%95pO5By(4-d|?Y zK_mTKI{Bb{!0GIl$FGuIqt~_6Z$V7;^6nfelmZ!W`SNlQ%T8DJ$~=-W;?@Sl1Hd)h z)ZRgBxJOS3*Yngc-{k6N*(cR#h|T(mkIT#XWAf;f?##AIN^;P>HCT=`kz%i>r>gye zNzjivJctt3wyicCSb{y4T1OtCuA@F(J-N>&hS8+s%vYd>uRE5QJWLNjuvR$ivw~! zV*Hn1_4)Q&zHRGyWg;mG;8Y*-eVqz6ZMcfZrL(0u>a5bY9eg=l0%l!Qw{kvLLIJ|Ys zT@Zc*kw@fP+EC_L1V>t^u|7NgexAbe09vPyQk{yhAOlhJ{{UC{IufxNSmP+fD?6&m zsTimY9IAB<1%=uJYo0Cj_Lfoy+0cSGiBXP){jHUej7D(79;ifOGDLUCEHkM?>t`$kM#wJYSZb?HnD5lK%3f;!kLL_~;SmdQ(7O*=+oSwXs3 z17J)tMi-qO6wyJWs)Px{x{cZvxtuW{CFu#z&{hzM$f~51&BG@2SGhl#_-I4L`}~ zMrp)!J8ilux2$tbEqyD)LpL84@oD}YAA{_Eo@W05i%;J9e7Dj5cleJw{-2L({CgcV`epF+`u+`7uMRr= z_<3|w^m~T7{aNvK`hTKnr8w~L@lVgM|JBe0F}?ljoo>BIj(I;wHva%y`ho7HM@}oA zoTx(vXM6McV}JLbY)MRXqAKy}?+JPGJP*>`eR#30}+!Q=uMMXLgP=dt4E3 z&lezZe`LjmPe$NZ?do+ZM?m6wpHhcV(UMh}F1JuXJll)?eYRgwqV(boCa0s%@!xTp z+}$;OG*Q#kQLMt5umH0+_4Y-$L!viRm2N*WdK2w3>yR)M zBZt^Jwfc#u<)gsk+`0ZJ^vYFAd8z3{1ienAA(@^PX0g7JH@NcUG|wXX9;Ew6tT7tq zohlANGFgdbs)y~VsWns5%@T;}-WnE;ClIcwU|MMASAledX&eS8i+f5Vt5l4hj6{Uc zSE2K4)JW9Ws9?tZ=1rBJj*c9CRZKB1K(bJ~#IdY3PdthVnq+uPt#@#sS;YfCjk zG-Z-8Do_l0^f0l6y$Cdne>3y>f0yOcu%4-Q=31-mC8={AeoB%$bcRD&la5(e9Z7v@ z8bKU|mG`ns$;Z<6UDeQme}IGdj;(AKli= zEK8~9s;j7#rDkG$KXV$4Ppl}1ToEHWev;52kC;f^EBhoPUVcVcs0v6myqGs z#l1(D$L#!eR}Z*0A;az5MiPX|$x&2m;>N@oW&4R~ag}1B(vesIsvU{sl34o)+}uex znpu}zj7?7u@*a#~QEwc643wt|ii{7mdGX`cY-h`Ey20l2xs8X{yOxLe%`Ghk4CgV` zn|ldUk*8UrmSa`+lq(G+5G~D|w2`>5ACS%U{l%)t%Wf4&#an^lB9=NiXQ+-;tC{>2az*26p(`>hwfbGdI*ThY(_jy} zL$l3%(3_&#Jd|}T?RzDL)E;?JOpG#Gha5orK3x%3?OxOF%(1}id}dQ~WGW>veat^_ z^w22*b+r7cB(?0kk@fd1a{mCf7dKx|IkwSns;mg1r$k)Q?gq`WK`+$aA~+qn$@u_3 z;<`Q^75u3C2e2Vs%iGxulo**UB)IH+a!o5SkSV5$mLcVGWoz zc%PTZd39+!f8u_^#L(0xKW<>@)ggr=RiUPdA_6r4MiL?bk4=TWzE$Z`*{@N%?lUuj z(y{f=LUbKBx8Z`AMT(+$(iq~ujU!+p0SYRx7A(W@?wVM&bz`K`Oy@P}*!6bQ6yIw2 z8W5~hYHDbkTB-D@Qkreg9^Ee>r42e^WN>S!*X`&U>|cpJG1zg&Hz!~1%#4uB46#o> zCW+@$OxmIXZx58lrsqjE=h}C9j}|=`+ithEr1)110r{S*i@yH=lwZdF&7rHOJ31Ub zLRlq}mb(e##?{kG>UB>O!4i2S2a~H%KauRZ;y7*>!@9RuA2FZE^eNi;zj?52a9*`3 zka7=N`23*$Q61gVl2_%ruPag5TY3eks5lIaB{Ouil;vbE4C|%}jR|pU2IKvYu$A{N zTV1q`YG~tvAMzjb^(}J$0J;nMabK^8UM>zlG3EJnS5am&n_j+rW>SK$4V=WvVywdC z>6)Ido}~toL{lxMjB&`|kD>MmzS<AJZ}$6yDI_z8L%@T_q2FPAkE_O3 z!%w=^CW=-;11_kVCPvgt5n!$A{EyN&KFBAtcuiNKOhPHww+Ew#L%p`H{(1(Eu>SxO zog$Vx*xo<5Z9aidC@3RjRR@nyHy0z5?^gFs2`WtoTYFX&?fGKUC zwPq?hBqmBqmz5EMG0`(5=TRU(py@Uwk7v;Ck(w)FgO5dX*#lBKt)BPz=T(A_DU=ww z@$ym~85kqG!wp=dX?WQNg#f>)d0*&Hv)f(4UqCJjo(G_o;k7J^?V^p*L!;R;ODv>A zsH%GGwk#6kQrHWz;1E5Z#V9H$anMHRZ_-UXx}O#SqNkTgu~h+=L5-AL@I%}mr~4aw ze46x8But~MPl}o;6~r!qh*T=RfP|qk>AI1Wjuazt-W6t_}GkpY|TpF#@Nj^i&S6%lTn+24i_{=yOrg z$RVbZCKHfMNep4hk-`Hfkyru%wZT72djs=i+O0eQ!&Bp-Un|0~Om7`~Q-{y3rS`u^ zWMo)UrdgR0BT!g?jpHFfkZJWFN#u@CxRrT&No8X1gVdHeni%0wk&6ESvE|W*+x<0+ zqgYk+iBu0zDhpcYNKkBwTlyQ=4t<H{_FGgGU!rE3u1)N#)rgZ+KI z;RZFXYtw5nRnk`!>nkvYZb>KTc>MnWU-3TF>sZE3Pfdj~H2~=~lXj5$2?F=yl59S| z)Q|U{Ww&z|_)a=HvQVEF9+B>AQbNpR1YDaB$K!$l=h-VX>PaNmp&E;3Km{q&_CF&q z39jPgaDM{A*SDnc{XU-7TV20sZi=rg<0Z7`r}HyNx`6tEZa*t-c>3{wX2wFxQPDt* zA)!4q))_S4K_{I*OJC{@kKlh#&$8=++-cE;uu9WbI!~o+krr1c{g30GZL5+001|zm zNtp=;qjt4P04vuAtVtVEn=+dbZ^;1h!2Z7W(yN+-k=2&jk!VM09Z#3-GW2rLRz{LV zIy`!0O=wluNd-tE%%_|EZ|(G%Txem^FAiHdgz+4XIp~^ij);nzJdd>~XtDETstlF& zprkc1z`VYPbul<`a6W_^Sg$_H?(Cl8M2_By=ZUUB`G2eP9Z1_>FhDHYd)H<};IybD z`qMc700n9fL~rLuaA3MaXJqo3JcJTOfX2y9NlQ^H8fcz+IT7ljrB+6cr&t44r$$kv zaO4uL)AcTr#uhBf01MY5sne?)=8pc&z-t z7x@SI`V%^{p>vg6(-zy7wr#^pob|P5#5Sg++E{uVbtLL%Ux#)erWEFMPAbN2pySw`#MxZR7f>vGk# z?=%$n$tq)d$$sINOiXS4n~|kSCicDm03OBm_X|joTT?L<=nFNYyGTj}rE5%etR@pb zo%xOOUwdwS%TXRjZEgI7_zky5Jn>{PjwE-clAO>=isG&kJi+{dVkxMSE`5z}XZkoH zv{ONh56YzeW}QcOYvHul8fz|V`EaL3TP1G+~VajytnQA!G)|!`i*SZi4z9GC9ew9OKu^pvA`I>pHTa1ISXmeLB<^ zj0a{H{VQTs7GmjECDpEmX3YqndYSXi&>!7qA~d2LQ~)3^j@b zP=nA?r_}UfByx)K*Tf_Ce7Y}_W)3!u)Jh_amrKgerG0*zl75!I`yYFvfm72=S&tr; z_^$25<0x^M$#Rk)$Ii_QKpl}%MT|Y2O@Ssc^!AuYsi*|4PgQu`sB6`-{0{klP1oJ6 zv$qkiq^!Z$QDk&)qK3VB;{IPy?P4RoWv3n~&RhO&B?wq4xbGv+1ESQ{9MN?$V<8l+}TAF2w zUpmHsH;IorfKwXt*3WshUct?FF|S|(P%*81t53wfNAmOPNaah5ebx!KYl3RRv6J{) z{KwDs^}H4{d(h{xG+A0ogr1tZmI|0%95S$#6~G05s+-@~ipO(`_R1TSYO5$c72Iv| z+gwQltr<-^YpuvdQauLD*VN6xu)dN0Jddxo<#8w5*Odx%S-X0+D5$EXsF7X|w{(N0Bz3egSKg0g69dp6GEY+0ac-l|gj61^Cn@#LksTyS;<8@*E zeX)Pyq!JWhFnI9)0Au-%g#5cLztzR9D)r(&&FB73jfYs~WWiKPjTH&5j;cfoCJQf# zq!L7QojyP!WjtQ~;$CF4`nFrOjOld;b|&(v zk_h2zmM2lw<3`8ub7Hk%9`TVuS55kkDkSnzny5RN@Ha zM2am6mNy`%DW>Ma>8cAKUzeXjox~L59aGHI3JO-a{hyyl2W8_cXrxhEqNX?@hMq|& z=%%HP8d%z)YG~$K#W2%U(#Qci#-2^cy@S#51dI=t4_}v2?DJ{hADNT~*=6e5`* z{JJ(9Ul}zRrt(m`RLA3z71AW74DAy$!t{>8V3HD{l2TNLxFdt?L2DaEQnB}7k1@o0 zc@av3>(pMPJJin{(%NP|3FLwXX$&fC&RRub zU^IbY`hd0lp1_gK5dB8fbMTS{O$XcgQl5PUuBCXSKc=NdIDk$o`F?fzbTr^`aio<0 z0CAC$v6eO-8RHPf-Vo^;uvNH88UCNtf437_M5~}Z!!h(CgB&<{9)b7wPo_@_*dVVE zYDIYQ^BpPw0EUep@F)IJwCU3i`Mu)n1E! ztm^*9@qGBxkK5(f|JM2c0Q>h|>yn!rkErL~k5*olR4)|tthOFS7axPDTK4|{U)pH_ z2c@wPN6)AIt4BZHmRK2yaij!dPu9Y~AJ6*!(OtOks837nV{a0mbUb75iv)6HGKf$h z7D9joU-1Uuu|Mo@>@_{WEute*dOwa0BV3$14>P$BxT?Gm%#kTNS5G7Z^*Vlsk80qI zh3+}&hhSR+9T|U**{6=X8AU&eC@X6z(;+s9{PAMx>P16Ge-Uxzo;APa>;dE2Ex=SA zBBT%J<}p8 z-tAb+BQVcWouBq`fN}m#mU~F9S1Ay$h6SUgiaeOq<|vaK-e}{JqG$|~r8+{dH0DMB z065o;S=a_j09upf(U>G~^XS9lcg&BDuiF?}{DSPlV6DwmNE(AJy9E_bhL#-Uu*fB* z$J7bZ2yx2(3R+O0g8IuPddo+XByb)>?D_hhj;vx;VJlO_^7(z8J7DCbsjZT&X(6l0 zWMPJSiKo^fi4;j8rw9ZQNW{iMg27M(RTf`pigYB5r2$jbZ+C9%lLxwU80;1@ zwz-7$uZ*Rnr>LD~`?V0$(qlwrs%mDJUVzVcYXM_$NuJ5Kwe;~u&!#GXPo;mzJ$Q7s zTbRTk>Kdu$eLB4V0D(UlGhZIMYaNr^aP9i8#oiG`oa`EU$tjVrv*f(BbQ@|I%|wu# zg#t7E?BTeV{JPQ1lXS61e*kv&~^gU+k_88m zBz0O}IzC)=oO-31*J^;U3LB|k8a^g=&&(X^%T*pj5wp!)w4s(MVtI^AM2$3z zJt!n4G>iWLLH-#j%Up+LVQC%C;JU7uf<9j%)<1iJ?(*#p*7k0#KAic1UzeHdZLfwu z%lBh+&d|fr)a@D?JoPkCNj+SU#Us?bQG}L%xe8e|s8go@0Gq=>EzqnN)dR_51&A} zt|ZAUYI=3u9pSLHG*Px&aN_8Jgn*Az3NyN^NozByAca3qY2@5(Az%!my%oDi-wbR= z+0cDM^JA-L#N%oxGjw@6tgdGTgQ3PyIIFIz$>+0lm<(MsQAe*;MNU$+BMW0|-0^>F z;JJ$6!yIfixB9d84w2Scl43L;E}eTrzfW7?b{6EX5WWj~)#Rz++>%s9Nru2nM^?1c zCT?k_2A)$>Cxt*#T2N2|+riSu6O&KwUuiHuraU|BG<<(W1SYBmp2GjY9*Y;DO zyASjK0IHuWHYYo{qo7FEIVtj)2r9Ao`ubU?6x8)pa@WC3&kXb3P?Z{p`dHuFFDpU` zxs8x{SI_d}*6A{+a8TLghjazQk5M&Z{|vbZH&6gS}g zJ?t=W8F(JO9H`g~EB5rJtjJ-fnjbqNN~&27l0XCza(M#d`uk;)rn-7DiZ^8?PC5p6 z#uIJiMMs_=I)&FHs{_c2x3UIsoB@7q&ApdR5`tSvudO;Vw@D}gJbbIxzdy{E;CEYg z);g%HBADEe!=2hA+)n zj#1ukc8QcEgXzi2laI^i)~oybY}V}T?S9hU)Gvd}P$LLx>LZ>AGBo;#`^r;Lk+z2@ zNVo*w{6)a`wrv?G>T&1RNbFneS0NoF1y9eHe3o7yNq;&u3GEj-*I#qMkYuE7hHJhswML<`gtJh@PEfNTPZ@P#CIN7!`JD z2BeZEApJCwEo<0&Cb(H($;j%HS}U%oTRj>t^bxZ=rkgq@&Pfa9QEMpZ>ZgdsJdVf_ zD-@RkF{Vy(Y^)kvi|{(TYM?S3kmBc*BibV>4iR-%dJqprrs z4Qvj|&geiZ8xYUN8i`(<@C zOmh}Gmf=Vj;^bTwCimlkf2F@3-FZpK;ZB+n0J-DS$CVdEgq2fXqPPfz8dXH1oy(0LR@e zu1d8kY1gi711_QkdR0SO#OemaP09L;+Q`6lhuXMS_SF8qJk#<3+k~1AIKN5 z{{RagY2~$2Dx*CthVDV}9CXCcco^My3@!c^upjIGJ(aXZGHNkijYPgE6gj6#jC4sN zps+jv$g%v3{s$-7#h_PJ9$gV$NXX23nNdKDw%}O(FZBG_AMyPAQ!ToYPLsoS%4^a$ zD~m){dji7bf(NMSxBzegx3Zg?MF5&-{f>lo7tF<0xc>lWq#ayxLhYvDDx27nR>SIf zBIE&XeUi-^AtiVL(5~ImMH;x1*Qo0nHvqG8Y#;g#FK@l zwtF20;KNnZwY;)GLcQ$j;1V4k*H>Hce?H8ZEyOIRi5(T~_Y!T_u{Zh{ZXQ(hKQ6UQ z{%Ri_{#Eyu;~i7hTLW@$3RcJEcWzdELS9L5yMIBdNM@*(3VQmCRB|lSQVCk6(SeF5 zBoAr1S7&eD7cCeg{inP(f7p|_DzJH4dRQx0Aw^vuo&-A9T3;k= z1c(^O8lreLL)@fcf#7Svk1CJn&>G;}!*pYknkqpaV2?ku*Q4Fj9eb9?<1v}4Pq=(6 zdx|<)7D(lKOl^Kbn58@w6(6~#3ZeP~FeC$Sp!ONLBqXn-fGJWux-7c4)hJR1K|eE3 z^L2JTH!Kv}ej0k_csw+eZtoLVP)bSiM;Uf!V*$Fbvn#E>p!;gg)=!ZUw40TjT8^57 z`#J~Tz#_D{n?SBdRU`3#b-z;e=5o8PsVA+-?}?_!XXnhc3@Gc8XYoais4OIguAnRU z+>1Vvq=U$m1-RU2jpvl83ruqQ@>4PX%XaPCJCiTG z@VlEeLtj%zC0sMp(B%=NF~t*BMy*GXR#_X!f!Nu@F(eOS`%49~iRDPih#~GZ<4<0K zF{)f$C-!B5$P_gExQ?}h%!%m~<)V%1Y4owIqmIU=ISCAEqUYAXP|N|x-&XveY8i>gmqo)LZ%j#0%VEPU@9F^B z{9oz)J=6R>YPqLNU9r9L8(8EY86>pT6?Enh@kr|uxF<};JNhI`{Z`x`eqPrMJ}+Lh zR4@UDpGj(5jZ9g1Yu;Zp#;8jpNZS03Bi+mDz4hwn+gCtI9GdcJ(yL}EA_X|FSIy1RyY@3+vBfi;p3rCaTh3odHBm?=5m-6k? zTkdv`7Xu>GIH4dPFv{msy3y!U!xCj(00KecC}A&r>|$#6~m@0Y5w+(1vnzu@Xej@QDsSpfx0;E%BNtL9Ft&s8NP!$i?Z zAdRFUQNt3#2`|DGV|d$uEIq#Gzuiqs3Z(N+0um)J=(s1)qmR$H^Kp&rw#edkt2U#bAWi`J zdGO=ZziT{Kn~ZF#bf{H6bt(WP@$>#eqxsix($msFt{I|F8>&QEg0k_d;zVU&w`3u& z{XzE*?k>VcBZpZ9%kjdHB9TR);nCUaikd}|2<45+BU72YbutA+MLLVBnB)v%V`c*U z5DEMPFQf_F2U0b>D)FEP%cHHb=y5est4-%7SzVGSWs*x&!qKEjA~dl&2U!#&D-c6o z$B$&+RtpuUUY;jas`PJmCJwper-mFJT6iInNd!3h+In+QQiepPG|y8chM26S*t|rj zaq3+JpKh%Bj+Lp;0njIRc+nWO#A?KGU`+>|K&5d^AIm))U6HqUlr@wvRpK)L0CiUl z8q>j4v>}#h7tKpOMMScH53e;aE`oI%gQSbk4kE#Jg#C29cUl{G!4qtyJk zmBrQ@ka2Q|!8kUDVK4TO;7|pY=H#H;E)Jq0O6oReblO01#7^YDI z12A~p2-cTndWQh(BdIj`t1YZIxYCNaXAU zGcm4CDNLO4{6p=pL*_STrHpeGng(Ph8io=`6efyti%(`$4Ejcb$S?KwF1Op3g;>=I z7;O1bX{YvJk6;%NR735Yd7gd-Y zCxP{`_OUkj=|zyzfaB%!KhCu1s!h&9d!rSp8UFwc2lAzS`g8sPRd1_(KAus34zJhr z`rDiT0IBx>0MIwj_W64M0ISQSpS&XU9DO|fKh@{g|JTp}0(c(%*SecaOXgr0F;V)o z{{Y2(w#`nSjSExLrPdCvj}S6vIaqPCz)auuobhhT>RTNX8lBTkqklZE<6BJ*qJkm}T1tgrOqM(!py%2PlqFxIdk51peEPWEnV6+*xdEqyRn=2b zNlOosc$sFZL=sfjyiOww^oZ;tUT-9qHv`xL^R`zya!*pG-a|tj4nXKg+WAQ{K0`@B zl1TXoTRB%TiFAPU^z_tXVK9}Tp%7WXBE&QPE(^%0Q%rPdtTkZp=waIb0CJh!jYpcE zdT3f1DX7FPOGhm5PZU~~lr*m;JauiV6hFB#i^wf-Qw5-7^XT^0MZojuUdLv2NYPX! zO+G+lrLLxyDEtvMWbas&6XYUjl)UB^^n_3&UK9bVQW?j@IuhEP2I?+nX>K~114CE$ zbSoY*th6!dYRdV-xkpqlAdS#~z>PxSSQ34g>7hCE=-p&epbkA?>CTzTZ>{Av`>w?1 zX(_OEt%}-pxQZ02tgp&aRL@h9+)&W9+Bk5Paw1c+nAS>^U@l?g$)q;6ix`k=lp2A= zFOdBI0KxY4w17zL(!C;IQ$SDK^6J#~&r0>jTy@S@boM55dQ{~ji5`-Rb63>0c3&}A zRK-fPbTySS%*xNMMv!TSG%UmE>@m9D*}-QuMw_s`qJUKT3Vza00n*DKs=C~5EcWsw zfVX>Ap;U1skO#;CT9bpvq8IW{j_K zOzke?XP&A!D<_sFV^2>3a`MbT(;Pufi?c8W!+>sVJ&ra$T)4lTB8n=rA5I+|Uv8GW zY%Sa>0jcO)_^0thboV}6`|Z5xs^P-YQ`KZC=)@*r1XR&9=u#u-mU#dGa7E3(KJq7L z<;y-^vQ{zbyEOZM;=0A2d-pl+?%QqKXZ8wkMi|R8^`1aYj)0Z8qMFmbBj+kcArIAjwoo6nPw>)5E#g$ zeNPE~KdgbWa+cq01h)Xl{$%GLD)bP(=3AH56`BQKFSq7;He0W)HfG`Iev|Dli`mZF ztnB)Xz9VICx;?*NT{IgrwCJnjr^n;n(BsJ7F_z`63)<}&J}*$__R z?p@_gl4AFpuHkoaB(7Rt1^hHv!O|jGnOc%dQYfevC9Bn%pb_qS#PCM2+1Wq>j?*Tl zEbUTBjTs3^ zjk&zjcJEA{^~{J8x(bTuGTA!!G~yacH((JGnll=ddxN`L%>)~*t*lo2WHQ18F{ud@ zOQsODV$R_bgvjjDI|A}EvoSU0+gq6CTN{gsCAybbGBFirda-RP0w;08BC0CUP%3~0 z6>UGB9ih=*-MKdW5^i0FwGrg9V^sPq*C|uNAPs_O^cz;6d}?dcS{${{YMbtUgBLC}N?>r8a74 zAp5*NQbdZrhE~+86wy74A+XZJRqxHcpIvNfZGU)e?XK7H55%8n^z=PnZ{Mbh;dZ^% zM0d2o9|QX7KEEzKS-}+b^khU3h5+gcG`JwxivSNE!xKbBK^+RxdXPaq0o(U!VgxmH z4@(f5SS?d2h&+_vJHqu z%F&YsGO8LiHJ(apa^R|~i5{C%eJx@B1K3E<9LXn)Dl62VwccG=h!!bG#ZGb7s2$bu z>vwfFdaf*eU2GmUl$gu7x(OLhsIGrc=jbnRFZoF|gc79^nh#QD&CGWQ;rvz-51v0~ zKo&o>cW%nb(wv+V)5%XHbH`Ioz9%tW=PE2UTclW)?y@sI_v0}14mS3xN4fT^@!v{djdfq zkab$Y65Wsm7Ki-3B|CJnGXmPsoCD?Z=(qNN#!aQ4qZ!Sp)U`6SMy7h2sbLEZwOJxU zI5IH+5CJEHem#h6_qh-RcB<2&o1L*`CscZ5>bpB9qj#1%1e3)qi0r^aBO(vpJHo0;szl}`%gjpy`937QC@-1^g+5IrDn+Ery%PRyD1A1Vn1Kf>})tc zC83q6DQe>nJn=AyN{y(P?ls*NMVjK} zt@+@KdEE5CV^*WKIxw)Y(i(P7)$4I>nXoCb7z}PcG)SYSriLU{)Il+#fJf=MOHkn~vM*2>>n1u;6MJA%7f_Nh6+kKJ68Xp`wpIo0oBC6(^-M z*wBz_i%Pf$(xf0(`f>ekZT=_PiR}LXPf{8;?CCT&wUbNKt$y0{kgKkdUFp~mFJyf_ zl39qi*4G4!`yrB9H5iD+aDLu|a9hWvWd}6K`#OX^xV+LGL;G{Kh?*jZ7xvM#4f;r_2iZR08%UkzQ13`vxsht%TjUBdV2v3 zhJ!sg(W(h`kJ9JzcmvceZU+RB?Q8*6^$rK5cLj=RJV#3kW<^k>i=Xhd%K&fvK8M-V zPM`o!LD|C=Bo34`cJ$ugo7wAl7vHD!|f2XoZdr8%i(82~RgGLDHI_#0kR50S@4c5SNrsRSz{e6{46g>gx;X^!N zk@obWp{rC-H3nbp3!4ruZT&@s{{Y``wigOG)O1gEZdr-bL(os%TPr`fc8*l+?1o1h znvR~ju8d;xwOGcQrg}MPCRt5A)}?2qk)tuVDnY;03pqN^;IX!qmGZ+&70oDkaj3?8 zx-{6YtdjB++~AH#dsORI3fE(GY*P3IwL~6w#$j9aTKg-ev*@f7* zxC8uZA(6!7Q1J3RYw{f$4!OeiCPtMq7|oZQ&R}uw*u0f?4oWPP>r*g#XsQM>Iibka zQ?!T)c%pI%waNBdWW=!xnt6HWhB^iByJ|xwi5ocX0O&E=}#*$c&LXlu5I})ubLL~v1 zVwpeeb&p%@b0BG2B4A(eAMo@r{{S@3s>&o%+1qZdWi^RY1o0>B`SIurwk4|XMo7Wb0|SQP<*=aa!C+yinwflQiD=g{q;$rR`i-kVkEY9_9ujQClMlSHHZ*e3o| z1N$G;em$ANFpyC3=!*8##!INjLCF^4-%Ec^4m?-{&yb|1jZc<(h@y>3{au|vxIa;I?Wy}>c5VPyrBEno5}s$R;r=z@ z_O4s`d+ZubnO8?$+1(+O{^#z>FR&Bm@UZqqDu;LN{n56Jl}Re$swxDuGEAVNO>#>3 zSdyP;H@l6R9%Z!NU&2S0Nnvx8bz|BGkt4Vfg0vN=VNk!hyCPn18&&0+mJb>viVZS? zgrD_hy%62evv+)~=Pk579J}ShN`IaCWIf*(*U_hew z;tQKC(q)lIc;6$_N$A69v}o`4=$0c?Dn87C{JPn*<2LW9!FBG?hwrJV<)PbB=j!B| zX<{HjLNqjllj0Tch^5OY)mhtUvab*Um*@J0J4?0(e zpV`sW+nK7W@8R{ijJ!!KbWvABN(wAec`4zNS*pa%FPfNgV1{R)nYTjZD>lCAfGXlfl5$(h_CGEE8SJJnJKcA)P{nlT1bqL)XUARaLWkWAT|akj0dTu@*kkO?v}K>K#szTK@o?^kHeW-H`=iajepUzIdnukNX`{ zPsxvjd;b9CqCFlK7lQ#$m&R1oZa)P~c*^#G#?6kvR8I^Em8%e=c^bl<8F+KRDfaEj z)>oZSv_};m;0OHOO4j=wtQO+h_TWc99VUf7p@4)^BA*xD`X-Z)dmCbbpy0Qu9- zpUV>bzVXg+-c z#?f;lv{EToQ;}5wW60E2pCMk0Ug_x`)a#X_uiV>4tm3Lu&qb4<$k1+#Y?RuVM=RFt z%8ZIphS6{)F}1C5FYf;Uyeuz4TYII}c#Ns};k4JM?QL#sBu0@Ais08*^8o(n{l)y_cIZZiwNt{{TyLQQUD-Bht^~Fe!Oprqp6kuP2qMll-L;1|aI?7$XbnAbWdH1>#67({u$gJADGg*1OHS0;M4*n;=^a-;B$46hizMWZts9YKXeLR+@?exj$&TNm1I4WuA7blS1*xGlisE)ilp`wP3 zzSZcVrpiN2R~&Uf7mT#mk5NKJn2?v~E#1+ZQpc+&%Aam>e5xtK*Q8h6&pJgn(#I5! zplQ!>Y}Aw`NgNI{O8JhBhh20&+NEeKDQoK{6w*A3^W`I2if=o{vb?mkQvl)@VD3^e zaU+{ueXO$C?dN56ld`ov!lNKofYyTq&~PWypdS0ox4LA8NK`WlVGSCUAO>NAX+cxO z4_=K11FlyY6Rk!s8C7I?Rcf~swXu;B4-}CZAI(iuC5y*kR_r*`J&NsiZvhxdZ4*!u zHBG2ca3jr0$zCHoDmshz4d_oGG2KkHAa=u~4gVpLa+FdU|_#seDZ zjZ;WT4y7+6x)XE(xc2(`3`TTKQj=fb3s<^CRv+J6W};A*MOYm6EI51(H944w6P zQ&yW_S^8=5>;C{-$H%+)SA2Y2)7SE^P5AbFJTprAesul4fB(?XDi~DRq#!T&pU3$7 zqc@P_)5xA})cGrx7(`Uy0)DM;$^3zH?XZQ7Tc=EcR*Tnos#)u*RYNgb`n^Z#`TYKU z`c_n0^|)2!emLlU#nz@b9w?!VOHk;lG=8g*>Gcj&kI%5p()iLBCX3LL1`$RTMtW$d zr8MmIby5i?05Oe?v;%Xb0(n2{eSNm92nd56I6)OGbJGe+*-GA7QaIa%y@6FfPp{Rj z?MWUQR+;L6>TZOsrIlJ-yj2i_@zAK$ibxVj-?oTcH>TRJ?7n0sHV295#@bC1BLTy! zP3k zvp_hXneqeXe!A89^A%>Mu((7}SNTI{6tKf&uLF*M?uk|9`V-ndgX zHomHz>*c3uX+=qjlr(||Xx2jEZZwifIiPBulR|4C6>xk;kMRBN_>uG zX{r`VHe>b?%`%Fbv=3?7aWpVJOosl1j=zZpa+g?>p{em@&}-^sy{#a9eU* z&RS}k`LGxW}iS(SO=fX#$v|)Rmi$x5_@Q)w>7{)411NP@<)Kev0D^y!llgm)%sipE4c4(tUX4Diy z6?BUZEn)QbB-u7&JduEvX5rB8^7bvV+<-uSo<1M^am@F&`=-xk=_GtrGpzJ<(jh5e z!NZkhD9-vpKhpmIfq!`&%Ud13%VYHtC^I!W#b0!N#F!a&%Ne_l8G-&o{Jm}I@t5Q7 z6KU;ZPPpL^`vstI^*>K$jWM2DoQm~~@3^yEYBCc1dbjKW z#O%BjmGUGs)b#KfU;NqtBaXzoX#nU0{b6r=y}ORe2_}@$RCG$_Tgie{lU}u2{%T*$ zUvYLG=gM^tRApv^ZDJ~FDfb3yl2%2jsEj;jiZ_qcR9oxFH~#@BnHcRbN^`_Ao1 zuvYywIMq+YeqNrvEZi^cb|_ZfCI<0_Pw@P{-l{jQa8%i>Zc8y)22#4FkNAA9kVak# zdFrNFjcluV9pw@$7k0P+dy=P7w%f+AfGRlpV*qpq@gH!QnIF&g^bmJHf9)-&nVSuT zpfFbBR8vioceJ%tI`30cppr=}#YN8}>+M$GHQ`2QmY|GNrDDbeSn8PvJsS^(AI>u= z@qewm*Qhq8!(4&+0kmrIwHw}-GbI-6+1sv%6_KLAZmqu*l=EY$yf0i5XKgbo#*!m5 zAX2+>x867Xn{MURxkzl1<)mhz)EhWU=8+Is_Z?5fVP-?X&5c9(Z=jmbSW>8I>{+x9VHtM{gB zb4FVx`CO$^7LeA(62S|sai0u{6l$*qIEmJ7eB;E!1)XX6aWAK=}-LUK5gQ+Z1H6DrGW zg$DWDc>e(Jjy9@KSJ}t?!lSQatc!;6{Ydu}`=4Vyy`IanMj39VzKlssj}8VCN)0@n zQIj5RUKQw5$(KuaxXo}}cxeN=SJbIhL$2IUqImBf`q2jDC$b6YkksWQ@{I~vkV7^UtodBz^i~HG#riPC*Oz#@Y z=0(zG5wl;^7XJWCdo$*H2rbqf%EW((%qyqO8_iGItEbky3PbL5`4Om_M2ytc!G~V<<)cU zDrXe6)fJ27mndrlf|RPehhyW3UAb6NA*G1*J&nJwuuvyS2hY=~6p^U_;I!(E{#tb2 z2C`hMc$%vsQlP=E1zL4!WF{!12!mZbE;%i#=j(H8(P!|172(jMZzb9?Fgl_R`|6AZ zcHv*{_TQTiOGSXkQP+v8W~-ASoTphg})@G{7|mVi@O}0h*_bB34D^iW;>*#+_J4FOgUlAdo`^ zvFF%oQugcxG18}vZdIszho?fmdueU0$%}gWY?XTPt%zHrSvEWxCtB$U(;vdDVM^f$j8kVDr_=CqBk0ZtdtcA5XjkKu)SvNnC z{@dQ#NiL-EWZ~pK&WrBuk~I2wO%Q)Sx1;|65DrE7*i>i+;IO;jw< z%E`)xARZdTkUt012Rz@OWss+a?7l?wXL1Cwt9gOa+MURZG=E)2{2#B>*!@S>{C%BA zP@u0KgEJ^DRrph@zn(lo=@@=S_TJ{3t+NhoN3iMrZ6k%IUICQq7mxaISPyplW zf32)Nh;82k7##*~BgyqWItkRDO7Z!*xCH%g$M}0NSwZ+lIzizYcO3Q0Ol+WoX5?6L zf9d|;+ufx>^XpoiH4hH3%#2~;{PLig;0-)QQTj~BM*=sOtw;%OWqlH4aUKQ(v zSpgG)&(%Q-$o`yM4^apGhqlDQ4mz{hnG~P5{aeXTa1W@9v zGehKa{u9u7SJaz}XGegVik6ycikU5+Y!Qw+_|~ObKwgqnE1@J)`-s4T$ACVFrrB?- z(#5ognEwE2p!d-HjelrAl{gFRd9RlDxi?tkUk)T6qvJ2>wweq&(A0zQkVOE=JXO`Z z6KUq?7X!Yw-UD{|mU`N(R(}mkSy3!Of+SK%$ux4LvHG5d#dL2VF z`PT=iw|3>Dd2uz5(WIoMRDhr`{8(BVk3*6=K>UmTRr&t-+H>u(-5Gt$LYTU$Y&=`j z8AXtKGmu4Al1jWc@NL#0%_UlWTCMeO# zQa(bTEPscsQ@gkR6Ak>ry6-ERtm@pSS$4h)%~e-JLra*g+nIRbl4h0)31Q09)KNU5 zHn4Fp9DO~T!zRIfq#LOqlh0D>P=3`QfPTYHn7FXu(9R0efx*Y85!G<^SMq@VW!oG{ z9^&|e*!4!9nt5fDZAXpVu**#i#QF{{vT-DUE!H)=x|@J+?OYo|$QZ-AS{2og)GANp z$SMA;^i6WIS5JWEoM-_b$exHcSNVSY&Zf!NQOEIvx?`T68jATSZ}Axr;A_u4`zpCzX1Y>p1AFi4NuD>{5=NdwYXP*@p%G|=(Rt=(0_^PzRAETq|J4w zVbN4d`elxzWA0^m^x0A>%wHP6m+>kc;l(-+rn}Zy;VgF za0n+ZNwa9R?fOTsuQ5&gqinfYBkg1>^EDLvdX+gtly9%D?VeZ}TTmpL0YGcS@D=N2 zzMA;$+%+3(Y|urs>TqbZu)|wdlX`e%dSs_U^z9t4E{G?U6gu0GEpO=r+F9-r=>h_} zj}wf3ePpq1s=@*;Z(}TgcBw5x!nhnpX`YT2(D>25%{#-mvb%E=6exb$9CR;|o`@EG zQ6ZWtc)}e(=~5IaumZ!`<+jyybtKmjs2nNWN9~~KJGpLKAekk#isD9Nn$ZJ%__6tL zt#i}+v?nv$L=L>EZYOi52q{fQu2 zVxbkIQEOV{e~+^zHu3}DfJn!c2dJmZqG#OhB6V4qsBgBX%pF{4dM*9WvT*yGZdYLP zv{ku^8r62L!Q!y_48=^C>z2u>#$)4-YMMZl;T@V!O1;%f+t_mYc?f9Hn8;0Nip;xgasrNC9$12@77eM)}pzUm-eMyf?mY zsXiriKWlYv3mdmLw(9F#MK(nCy(d^?D`{{Q6E*^785nv8%G(3J(1SAS>ckK!@K3# zlvqqA``h%D(rbZg=vtz-IG!SuwSI?Jduh4H72e+~K|T5)V-r6I?r&G~&9(C1b+-40-;*OyG5eEYZYpyuW`e%D2^3RJ8nks0yfZ9PD<`<8eYJaU zr@DesC5)hyalxo)eqe$rL%`G;5JyuE%emWc8)T9~g=bIGmN#DbUr1t-AyO;Qq%!m4J8Ns4W`T4kk`!B=S>2D=7h&B*poZ*i^4(3aFP z06+1AhWXIeofPgN<53|aKvPcY@IF$l2;u+?F+uV@8eOG^$6lhMl9>@wNMcCnsn(*J zK<%mi<{2c8zMUnNSmy%-AKz{pjin-M)M!zjH>`}j1qOHq z3q}>7q4TAB5ivNdbqXy^SePlLcTq3fVd8;2-~c}2ig#clI?95LdlBsN))*lIM70XU z=S)FGerm^tX;69wZWG+xvqbl-=mDmwiyD7L)C}UZBcUdex~^JeNd!*UdT_6eh=%%p z$r`}{mg)#LVg5eEP+nY^!Z8HpKrxDaoP79k$mk1qV``H#s3CCJkpA8tSUfS)oHTK= zFsP61nY8}sibOI8HwaFxEvDAD_4cwj!vZHzm8NJ#YvsnD>OB+BD*_A+tP0|w(w=-P zpI)&TX}}^jk?hYE)rOxMiyP_}2Uz0Y)7^hZIvI{g!Sek6eKf{nO=<-|IT^3z^6M9Y zZ~CPF05yO43s3x4^Yr&!Bh|hi=l-ugtEl=f#r(Se(a;H;ll~v?zP|JaRwq4m%P<3< zpdS5zI`&DYOUx09g%uv_HAR9po&zzk2ihBs{{XObX>2qPndnt#hXaff$d5IBN2)gp z#5KV_n~$I*TzesMXOODl2S;c;Bn0J;NT-s!AYN$_c6KeNQa+Wx(0-5&{isz)zyg%% zwq`Z!8dB9z#7TxkmSbz_AanjC3kx59W>z$=2Ubx-)9yB;(MF3Kfc6hEmAfw7e4(NTsT)Q$jSpC2iGRo)%xgt#tWsTevXBrBfB=PJQzQhH>PL+ysHv=&CxV(e8CZC!ActI>*%%AlwY`RH8 z7V-cTHy({%*vQuADxisK;sC=b$HN@*B2q(B3W>ZCYItL6r&JQSWog_EWrzSGlUL`_ z%mr&vPK`Fu>y6!$Fyki7VJM}BiwMv6Rk5(9IoO(>oJc9)nUbYrnLz+4P)|1+NnOJw z3FDtmj$xNb2jqBstJHiZ*2zb?DCseDl{=$!$(xsJ;OOZYtyPl9OkkQCSfZ3qG*iJ& zx4e-jgIh_V0}z+KNZC;ik}7}I_Vjfes~VZ4a3eudPXW=GtKPet0k?4&q=LIOi-Qfj zH;mZIEafiN+9Pjl@3V@pdG77c8bt**(yXnJ!Hm^2OJ8J`7|c^sG{J4iTt^+l83%%( z5(%X$Mv+0qkCO5GIy$h5(&A4YsFN31)r#t3?Ow>#{v{c6N+{xRX-wZMene&Wwra9! z>dbXEKOIOhn`aw@q?Z@BsBrVh)o{;*pr~)T@Z@~PcC4shx~+_)k`SzlskV)>StT;g zm5`s==sz#;@y}9il3MK+M8rvvvdqS;#+*t203g5|2UU@P#n$$o{{W%HCz5(ND`RS- z8tO9>AS)h#Jyss0`1*UEIZJ0)j8i;y)%?1NIrEy0ot4XpKUX1t&(_v|26{Iiv#_|y zKG73h3`B;7V`C~TBosGRkuUWk*SeAPKF61{YSRk0YW0O%-sL6D#J3LQyA##e?AR$O zW5r|ENXyjC1n!E!6{MqRq?N63(XOb(fAD5M>w9V(6(ICU4o8Vx@cq3NZ{~0Eu3nMo z%&sd3UX=Tzbwm6E3R-akQ%jLohI+tJ!`hk_^w_D?M?T5#VSVp)ve}lt6P->+k`6z& zhv(AR^x0V4?j!e@f;0j&z#KSyx{P;Q=ayHM$z~^|2W4-HKaAaNx>mBSDzkfo3b@>6 zGAUc_V%IasxlcDOQX`OQjZLq`?|ut6$Byx>EiH)>6H-s7OZjp+CNtd5KS59P^6H3p z9_+5%Sz7GIMxse3sh(-uQ?n7R%bQ$|0Y6V>u&9PKLF6gX)UFtwqhPnTD+5#JtFKt< zB(RYci!^ZYq9Ld0Vafjh6YRzd=-@ro=(1>JkkkQAtUu!i$!ttHx?Qu3+=~rvdaE0Z zq=I>#oILe88d!nU?vR5T$Vk*}a4+sb<&I$61eWpKO`(=mYPJOf0(16Ppl>m4H=$;l z6x5y@3JjXl80hx@06q`qXSBQj00q^*4Z6yucRmNFw*?mR?A_B!={`QQd*iS*7<@+8 z#LkymntU2$C7!BuYc$~yTmpT>Ti)!v)y%KE+rmc8YSN@7g$%MiQRD-TgapU1R+NprQy8cD}U;Bm*KhINuZ3}lRa z@z!66ovWAlzuq{BaFvy^;j>i~ry(-VQi`^ocUY0+VzDSBwZRq!+#h0ux;MLR#iWNU zx`)V)klVtkdv9{M0jPe%*59;!xryD~Ye~3as*<9rrk;f%hBqa2ND$S}EBOfVki~iY z5AgR5Z?`KHE(j&Ve=j=qHSAk^$vSBR!Yf+*>4DHUxpGTc4LvuEN%wOYp@m;VM$2H* z24rU-eMis_&#-&n8miK@KeM4v?(?aSpz5+a>KCfq6}WFQD2yc}`B_j@P~&5(s#v9* zvACXU7^i78@o?j*QWSu70dem0-2_bp5d94{TXM=AxGXSf>(WY} zrt_WA+B-)L*LyVL>Y=ZsmoJrq0}VHhl2oXlEs&g~X%Q6br^ct$&Cj$B@WzJX>GZ}w zpU8aALKmtbQJ3=TV7zxp)Q-BsEZF(9Lth0n6?4ksC!QdJUl@Hsz%jFvYhA_p904yW zATFwOR|lq}z3`?m>l%X8k1#!YY!FM2o~E2MA~l{kQktBSk{Wi?>II0lw6%(oz;Jjz z%GEoG9W^s}nIk9sy;y(6uBW4lCfvD7Kk}N^Nxe$CQ34Ap2UlQCfFk~@U;I6+g}bTv zdLqA&sPNS1t0KlmkU$bORgF+8g(M9&01wGy!2EqU`g=BvvR1G^#VZT9!dWITiImMH;BHK=;kTo@SePB($f-w zl~5ZHrCP;!YY*x4C;D^#-`TaQ)CC-A&}(pF3o#h4OA2}fKCUmpzvPZAezx{+6|(X3 z=sPvraPsNyoM;vVn|)31a&5)=x7Ypa*@Ru9o?RA7bsCY>#aRan`Q-lqPodzRKBL-% z3^;U|nGeO+B)a`b{NBguZ}2|dT8}=e)NTW(2!WJvFTh(8q>e9hZZ1!?h&6*w9VBz0 znn{{V%L`+sa0 zs=dHxr2**GQhG{P(6*)lZa$!nIKLv+`X9&o-pVd5NMnwVtuBU;b!Vh*R*k|n*7m)P z?O;zNSe`-tx8vD-(48bxp(TaNmKo^{GD#WGKTkF#ffoAyeMEw7f9dRwL}kGEdKAXU z<5Bp()&8%yrYhNFLaa#u4hbN)0Q!`JVo5i*viaGTg#Q4m=h3aKXu*IV>h$U33tkL% zGHKG}8xg?==y(J-*Ms!;ds&4(DrchY%Fu_XO4NU={X?hfoRbKNN7FD;Rh0gJ3U77f zsK3|!Z);xcg{W#juSGD~4PY|XI`mUJ7kuWnPEL;{M(8Qlc_hiK^&f2t-I_Lz z;>*KK*=&MIO4Cru8fzAYPq=v5izkibQ^*JP567|9k3a1brIqI4ZA-kX6{pL)<&qEW z>LPotb=(3bkX7F`1Gg8ls z6mUly%>_tl8et&5v2xB$%91$tb$p7}n~l^HGo-N>jHv}E1xP$k&&>LIbW68eM|FL% z+T2^DPXwYF)x#{h*pL};1w64q>rOpnUfABa8Syyj9tbhjSlT?E2XVrZ)MIjV^$__U zmTH7njc15hc*(yyh5rBv+jZWy=BTZXR8)Ox};;vsja#KrAhR-rc$AB1HfB`4i zi*M(F6h;}Nt;fX1xGFfB{{WbE8E;(t}A181Mvtv(SNs?VXL1DLz8C z7%3|mjXUa$%TDnPBt7*4rN77X>_=hGdt8jKE!qfPw9ZzZzn?&z+uKfIw+$7wjHco- z-GfH2r{&V`9i8g!!qTk`CLX?YLmbkjJu&6}t0R$qN7Nr;yDo3quE~ztaLhh@4?u0l zlR1}d3ir@FakfApGhg+6eVl&( z0Fj%)j^*enS}~xn=h1vtS8znKz6q|7a7{diK&^MgZ;cz5F|D(x#2w z!>!mwbY^JfwQ)Hbl#0=ZmOXlyn>T2|_q4e0;MkR;j_|EDH6#E^0P*^Jq+%QRu<1ZPzU;pBgBLU|*-HnTi7+D%51%4wXH$II=deqAzWYG^QX z%4^zOTs5#m5v!Tr8VZWmVgu6GlGKj%5s(Z*Pat8yzp|^%#tUhQkeI`$1+o;iaYo9L zN8txhJUTqvEUz~>Q|VP_c$}Re29Z*n8ay}(Yu;B$2PT~dJBPQi@Ji5QvyeSSH9T(5 zR}^bcAce}vi7Or%ZU`fT!S-Ky&G44+t?xmRR1#PUV9<*C^n17R1=fKj=Gww1b3mk) z6%_=5}GJY<5p68bw`;%ETawkkr4IZ&V1ORiW_gdW{Aj>02Q4Iy5IF4Ni-8i z^953m@U3$hpv41YQ5CNOK?GNcM%Ut_!D#N$-NTalaXQqURV$qUg)5Q)1x+xzg8u+G zkBnGq2ikuvdUJSocUk3n?-vc%rpV&A;HjglrQE;VwV@7}Ba4l#dfgpzaB*Kj|7P5rPGCc82G#`8m{?zmwZ=ZJoFBL#q>NV197y z+yylaH(Y$C>%GI0quTpd<^2ZLhMt~>6}$fcy!DiLUdy7SfWr<(x`RIt+a&cN&Z7EB z?4{+q$E?snB%5^AZ>Uv-7Lv`_l31c<1}sa3DcsCeBQ1d6?fk)G;^NNY4_Wr zIS^2lSr`O#$ArW_po^+QG1OTK+7DYXR=fMH+B*(RJxV-lQ?WLd_Qclge0@}C z9jAOed*3aOryNNQJu6ej#yCWN@#~r7c{cmfB?ZOEVgA}PuRqc%gpXYDsp~U&7St@4 z@%Tk!Z3G;i<_;Qz%7g%E=k|4PTOTn8@C;Tal1z`NkkdsiTyN%h<5>K0M)K0Is*+e{ofV74`cKxw*q>~cSyWswE{XswDo7j!O7~O} zpw&(f9CQHPVu~pm*+^F;kf#8e)Q}iyp-{w8xQ-de-`#E zhW_E3!%3qij54Iq*V9#UD^D-7odK>kyJSxl;FUlsaLOtv=5*5rmGk>+(w`AhsD!md z6)Q9Ajpe1Pjo_8FhE@ha#-aT`pdQVwU1?Jyux!+;0uF2E{!W8?mAf-`#K_7hKy@L8 zDNKKt?eyts9F%fHPG+frCAzSNNU8*S!5pbFFa?hQjxX%#KA6KFi7E%gpKewQS z(cLVwcyKvP_X4&500;8)>Ep{o5{5;Mm~wnfq*#zka6<;?{C%xgw2ecmsbQQ`_WJZh z@ZHG8U6?P={2rZ2^HY61rv4p&U(f2(^#1@+?f(E89v&gCn*M+BT_f-(Hr~1D> zzyH$E1Cj6DdYw$6iKeNERdq3Su>QZF_>XmN2d85My7ae}vOIjyd1>{!3xL+W&j5f$ zfF95l)(8iqEn+%Ubo(Cks>yihs~8GovcVutPYL=h*{^Z`01@pIS)_G!9ml1~cG7^1 za5_`tt1=YiUR07B2QA`KrEhV2{Rsm90Fmt!p?G=psaTF3GUv0>)>ViRlmYY#s+I(P zO}@VO3^Y>5t263qb;lD-^VP1kZ3fI<`~^ZuBpx^(^&@Fh)A6lH9Uh;L`3M1)h?2Cc z9D+Ypyo?o$g@GdEfC#<*p2Az&622k$x*YP{fD;{iIy{>ycE~{+PisTDNyOi~FVRj8U6Y3D?Z z8fEd)MIl%$>FJF6g~qK!5?Gl*7~py}wlpU>=-q9sZ9Nq(2It(_ zyo*uPLUME>fqI)@&{0I2gK+0_D`wmkv}+o{0;V=9hCg$tw(j~U?WARJv4cV8%zViM z@cC1T^PuAET{O~!L@lO;R)T{y@f@DfPrwhKbqNB5hvpZ3QEyC+U#Pa-7E+Qb9Gp;Y zOnywkLx?!dt3)c=qju8bSiw!V@b%iOVZ)>N;WY6If@&QjfD>-BUr+U;7U8NjWV3Lp zjuowG>G^dbY<9-gA-I!CdL1;)HGc^?B(52}#|jGdK^@h*WvQyGntHh_Dj2+#HI)up zqNbu%1j#2lQG{x$hyYmB1zQCJ+=a2&7nL+F2bV`1&H6_Sjr@6M#Qr6fQg#jI6x41jR*SAe+QV}us^|Z%KWwCTP zJ--_05>(OAC7_N-&`b91QK3wzk}PScpGYH)eJ6y>)seI3)FpodNvLqs(Z<@Fj-Cqa ztzyc)DtbCPRd%(txR$DM9o4*xX_T7)Kc&6A2#z)_#GaGK3j{$<;(yrdS+C~T-5D*} z-1wXf6%kZpw)*Lg0d|cf3+1Y)XjxRrD2)IX8bb?Tk83#s)ZK2Iw&3)loeTD7{Jk;G z7hgxV+1RM2zT@`vSvu>m=yz@>0Uq?Ls>E%W@-(a{X>TT1Aq^x@!-iR>P+mC0u>^|+ z)&3sjc7i)bmf;i`^tCIIo}z2dsF(|ApSh`%<($*}omOx2F7JuAXK~~)nEFa6Hckh@ zg2dC}Kxh>)@gS0UCnU8@)fENV+n!Ch`g;LvsdCayaepCeg2t8d72pT+>P)q@k8j$o zZQ|m}3!gH_{M(uKb*VRh$OEmLKETx)Pl1FEenEIL6wx(u0l77DY6-SWkV3AQ=bRcz#)X;7^ z9ma-47`m9Ig_gj)!N=*1rH?;mXlN46#sU zr^e`LTPao{0+nDX!}!)KJ-H-)dG_}3hx7=Hvz7e1B#m_3&HjRIk;{O2G+-b~kAiKOn>Uy3zd6}&2d0t0tDq#v#s)(2Z*1oUt_a4t4nAp@-l&_yd$e|57;~Z#4Iwak#6qzz{ z8(tSR5=AuyMOIM?($Xm=DeCL0gf(m_(kXSw6-)3eE^q9W<_ZcIpdAi&?YX5QR!WnQ z2cJc{kK*>?+!)I2X5Y#~xTqO)*6xbhIdM2fo#Z6aVd-aS>T(q6G=)T}#Tc+4wd^jJ z5v3W4$L;?BW1+&>Ov?~>!m$|hH2MBr3_V5suCmb27E7_WZc{f~T}1;^K~q}h7;%(w zm7>JJgnq>(BvKTPJ~Z6e20rzDxw{b!x+ro91oZ4zwl+w{h3M2eMF1y>`Tf0EcUSyC z>&~yhILR(GYg!XmlZq9NDu`hNTokfYu9>X36#*!1mZo)7t=hItr&hyFR57#HS{J+)y4vMcv_4R*cZzjk~4xCLML6%B= z14TnCvEoZ9XyayUF#doG0#CHcgi@zH9No;3L`gl~U0p8Kz)|h|OcZfN<5*%rXn+?X zblFN3Di7A?*T40@wThxNHRvTYjVzTE{Qm&e{;#v44uPU8p@qWRNhJD-x{>((Khx{& zTrL|2{a@<;09Ou+08l}%zUK@Mq36~-p#8g`RYhN@u_ngk@<28q{!hPL0j8pwK3;A#Nqu+d2)*Qa_a zC1{SjT-xA$ew-HP`ho3zv_Pq^NNz4zFw@pLiU`Nl1yXKFBKH^iT$`5qf3f%JVP8H6 ztHpHZ=6b_VAc9g7`j*4%`iNs-4u%CrJWs1JYcURf%N|XVQcbN zk7rOySuxOR<^@+FxOF}`3Iaus;`bN7=j+e-U)$>CK_K*%&@lt4u}nhhB=Rk9ul2b< zTk-8eN>o&ylDuG=Q>-mmJeqI%zZbXW{{WkPebC(i)UQshvD2!YI#6QdS0JCE1ds@~ z*5B{Hud`bzLy^%%@-l)v`g4{gV9Dt>`hShN|s;fAHto4DhK2gQ2ah z%MCR>BC@o`&YDXTr}9Dii-33xF1P;xVeF3XEHKkk{;%86mcn6GYS4eH_H@^e)*P0x zvjS{DW&*~LtRQt;xQHjXJL3AdbaxB7B7eOKwI+PW?zo#FcWUQ?$o)pMw~AN6|mMSm@^uyrP8mkGKh%TU+PSki5s#etqmKjINg6-GK* zNnBG+;f_r#r&Y@Xd+G)C+GCrFhCNSQvA>(UVRHk45yK-;ki*O$pC9!Oi`FmX20za$}%*3nR#U)X}_4`hl}CDIM%s99Zu6_V#bLiAzLI6{uBd{61p8 zE~EYXkape6m?qwhu!(@w(gH&{V@~Q}sC~OV_OEc2JD`V#}jCD*7qtb|iE+VS~y=rnMmvlZTWnz=!YHLPFOG{jZ7E%C ze_%OFdb5slnkHJ68bB(1xKgy^L&y1aZ?XRXJ#jG#Y3uVe)Ej!ew3?TxR+5D(lT@&? zs@-%reIbV`EH7_j%Rg~4;-G7Tl3~zTV9)F)PEGG$zXQ{UUnF=6w;5j$kS7*O+i?UB(t=UyT*T^L;eTb zmz>$S8#{M}^`Mc#85)IqNglMQKWFFBr!IRVmE{w0WoJW;qh@ZnG!^ZdFk zTd(J3WD`gHDQjvmiBde3FahU9i=AwQzOX!=yXm+F!M>iu=W*X}S4=Z#10Z>teE$H| z^Xfyh_J?RxXSh`Qg1isIpV{e-KWORNm*t*ICz^VckIp{ID!A$vt)TPMN}uI1D}`Y5 zM9ds5{)XnnSXFL!W{_OXC@;dC59WWLOv&xO*9DM(cK1@0s045{^dkiRS?FTe-NV1L z)iqd6zrE>`Cs`Z5L$CLRJq~ASZyYUc83{f%rb03pyp&cU7CMK6hVnv9m>X>kezMCD z+?`~aprg^CkP%7{YC{j<3<3Oz=pW1+yUVso1@_^w7PpF;F71m&b!{TI1_QE4&MH|o z3~6!Z8s_Ol`C7d0HkToTtHYpd*2}D~dfHkxf;1T^u-e(@f{CTHh5=|uYoe$E`?%X6 zF4IK^hcsikD~x3PVqTt(7$-QoB+ohL#zlCVH_lmQ{o&B}#zbkFP1_DDk4DsUv~L0H#ex%gdx< z7g;6Oe1W)*?6C(6L+A4xJpNC+lXvE$hKnnS%1d87=$Ks2BkfCKYB5O+p=8L@_~ofn zQ%OzYX1A4h6~(m0rly8aJ4%6#Lykb9`HJB59*bdw-@Vqm%400&=3J`Sz#4`L#TvSk+90YmC zZn<5#VwM%SiL0pBCaP+#Jr4p$#Z&2>Ltx!`AB^88vsmqjYbNV0!B3QaMESJz8g2W@3{SutqK> zlW%Q0Y=+Rs)6~1oQHGjY<<7~6$ks%Bm9-VwKf1_MR}IYYXO5p-bhA{gJTaP$206@WtoyNanr{5?2I)Ki)&ps@z?@SviBodt74wCKbMi{p6$ww z6cqW5Y7HyhQW;1;Zyt?C+^42#Ddt4nMy!CzUc$DY?tsv>O7ZKbXr_s!1e9qN&8`Lb zF|t_Mk%y1s`7qQg!oG&0zC_p0phfhu1(6Ta_+D$;X~#_ua3Io|0FUsE7>QmdNHRG6 z%`{#of=Ohc894P!tSKD?k;hpY*oIc}J)95gZ(_?qB09%&Yj(?|f=YOUKMer^hp0M^ zK=r3U`^_w^C9Tb(wxB={;hxjn4GB}|Mv;%((&mRdi9)f*U0EcQx?5gD8zwbs5lbT_ zJb^>3%cob3h&L=hC)w@3<6|8o7g85bH;l#@3W_PELB({FTG!O{9J<@@q}0u88msvv zfWJ>f(Q0tl=o19Q9)XRUIcLIZ;Z{v%S0k( zkhR_-DyEU7RAzEfTt2jLbp{{Qe~+`vd*o$@K_Fjkx`K@0P-o1mRSHc{DbWFCo_JdjVebFX+iVH ztqnZ-1kVVDvBq^U@*=fABVRF5Um`k}t`GH7+g^|Ji~ercztjC!wKa#;=~{6dKjQrQ zFVQ!mR+Zp*{{Y2x|I^T3k!a@{Ca`NBNwL59AJ4X2vgCB4Ft3BslNpVtrI{xWaq22= z7;$@Weus~2ysTD-rBTAFY7boVv3{P48e0xCiO)Q@)UTy}DG6ha3*l%2(qjrh%-6LQhOHb-ivTN62QHI(QcBU@!a1M*&}+4TsQke|lZcDF=rRU-@-& zVJuzp;D0`w=}N6srX+Nx03wE476bZUkPo*BB}T7{tuJp59T_f&s)9|?j-aa(_@1i% z7;Ze#NS1Nr41zDE`8?SBC*9Jvvb8+A6Y}(c-NzdeDtfd|tlCvOhj3J4Hr5v{oy@|q zD$vqWK1b}JC_GOxMpBt#MPTmo*#fU5Ti6!i{3y(f!D9o7{{UC=>Q1*&P!}iDqqEns z#fgDw_XbaHVr0h4;7t?})?}xwj-ps5@=iST?*%*n>UEb%W%PywA7#>92VF`@C!;9P zsi7SjiayoAZG0wAIf=t2QnDm!J-eUJ(He*&%20|qr_17Sy5pyDLH7%3CItP%#s;k| z?3VAxWhe;*{{Vxd7~>Aht*)%LIiX)9`|xhy1?16u#E%4WmJX z%;NSqt28@`Qn_8nk;+S1xVNQLRghQYWvZ>61w&y)W#_8lR;sPhZJ}FJw)WD^G8tnE z5ca4P3O_GDPeJqOQDbt&;+j^jk%8&?di7PC-z@n|-8^$O#EHnCj9#FmHT5*Q9}BhFXfZp%gSv6b4FE$yWGbqJl|> zpgDOp5N%`xlY0+ilO;mNrkU#Q~SC!m)=c~EcU5`5AF$?z)MUcfUD=H(mj|7#??`0 zB{)5y4A}{>`1NU9DVeFIs-~dF)JC@{Pe$m|J-@UU+?i@jn_lTOmg>?KA#=jDs}EXd z9YvS2{XEudQmo7?UqQrts%h0f{IEGlw|wwdQppOveO#K^T`tcn%cYUWrbgGOj(E4% z*b*UIi5Q9+btfx^w1-Yb2SrXei^R>%?y86d^)b0``6PQ?Pd<~^tY1&BzYKYGuD$Pn z;Oo?kBJP=dR(txbqCfhQegA1rMZ+HK6; zhzB2Ev#UE!k_$v>vSwge9z}Xee+(XSONCbivtC|4pP%p^R!+A3~_+ z#eIUU1h*4_^QnDVUolVhdDE$mCA8ai_Gs(~4IgBO&&vbl!lI=8y$zV&z1X;I%rp5J z#X3?^$jywXnLfgmqO(UV6y*So$^uP*7vumvn#wIL?jBjB0aZyLo*tCwJw5*Gbzm(m zVyR~oWf>sxsr!G;*B9+Qzh3p!SlOwPiiJ$nnN2K@QX+6=f*FXisFK#PWwF1~$Jl6Y zg6>IThyf5aRzDHX3i*FNpO=^JY|i&vQ&L1V2!yO?tN<#D7}7ZU-on=QqC0Dei_I*6$l0Mk;QKmmSF*QA?c#*!TxtU& z)cvINP4{JfSF-aMy|Ig`t7vK7MyOfK#}qoqBsKs7J=ztvu*y?ioL4NSLRQL_TNO}XdmsN9}8 zzqj6WF;tO{^?$|nNZ@fU0nR_w{!Wq+RQc;1q4Wk9zN2n#3kwAx{cryO6YM^d87FEU z-h@pUjsOoDbR*C{h!BFu(#3U;)u(_iw{Ax#{C$Zbe#QR)FG0!HvM{IY{{UyFs(CB{ z{JVkaBa44va5+=-{{Uawgd|bDPe|QrO8Ei)qtdd1a#v3ugKxm(i(bGHVgBFQrM$jf z6kSFt8?1R6fD~xCB)1Z+wr&qIt>N>b|(-CcIz?RfQT=IGJgKHDX z{{VPC(W{z*4SFz;E|LhPI$2Ojr3H`H!}<@$_!IO$UuO_YL4%%ymuac8I(UM7 z@fRQ0>Fs!?o{CwGddcIl^?f)4>2e4A&As~|=Z96-QQOC?MwK2;4Zp;FFQjqw9`)fX zHy*AhWlZ$_NIWVE^J{-lEPp?qeVSX33<5m5D!4u&AoSuV$xF6EojyNNq_Ws+P8fvCGU1_IQf^*Xn$Q*Eaxwz-jN7DRU z59{p>b#!V|NyzFAe0uGFsUEIvs`msB>UjSEU)ptFa(yQGHe*=_60${wc?@VstZS{a>^FU$djf9x4M$Q~h4Q>ixYa z=^6%6CZz<07B&rUPM}EyfVa2%(e|P<83C(9(LCZnO3>5&RO>xeEi*^tjx`}JO|5h3 zH&RWD18?=m*Zh6zcw%MLsl%qAo?!YN&U!3AAv#lOcLvs|$7k_WnIRew!lngzqJv(! zjTFO7uu8yP8Au_3Bj2qqya_`C!`IW#^5|c(?srx%NaSU&3LYkysPm`zI@SZ_M^IMu z#_g*uRaLn*oh0=G4^vfKBi$Q%G-g_Hn5U3=t0*B~NT{;vQR?T}>sdi`n(ajt@n7)M z{M}7EFEPt^3`Xb$xByi76Y~E6Ryr&Dd$;TMZdNRmbd3bkqj)kDa{mC4RJ4iXD=MRy zUM5=yz1sf(?0u2m?4`vN5EN^s~> z!}nIq%k|b%W@dB$0AW(wgBg~lnydV-nt0%-#8eu2WSAEPe$mt)NeOTd=i2Kq@GPT2 zqb)ygMAt0oy1{<{4W=@La5W*b{{R~Ox#=;w`&OE!ikBUWjtrJOREXe)3YknsStId% z+OSZ`HhYapoTNvz$;Rh(>QI%Oft%`RYJ_L#@c0wmW(=(NdtlyFCcI% z{k5{AEe8&d<=vw}StMFl*P~0c`u_laQf#VBjG~e(T_##KN@*OWT^u#E(aP$?pjqG& z%ViCBTc|%nbxpU4JV{oCYtTOPns(OQ8rU=aLr27LG&KFV{{Rm{#>~xaeYp-gX{5-> zxvA=A3lK_}-Wd#y;qaKp?3fj`21}{`01sr-#*msA$u;u+T@>z9-);tES3zV{X9m8t z^{)aCMnn71x%#Rc+Wn*zIS8qX)=2A5BUMwX(pEzo%V(*~C{Jj}(n(-PrYl3l40I%HDCjb54AaEeyk0=XBr5dr&ytEJ zT8f%d9mo;0+!kFyLV^8#sN0$;90?qF2>BQVz{y;m2iG*{n|q#k5rk+()Un{2kc5pP zvF0#nXLa3)#$s%B0>@UfO3}w^Y1T(|A4Fh9hM~#j z=IL*3Xz6VleN(9+O(~>M)X-qozax(^kd3C_dwaM<_fx;oBdFDy>uRY2r@3iE>J4*4 ziVyx~Id|D{?EJ3E$%C1jb!@)S!R`tJ9JTaWOg7-huYcz5(D)CDT14BX!iXWIGAbj)CitVPl+N6f&*rd@&Vk$*J3J451f~>3#G1jDi zC-X;qchuX?Tts+!%AM!EVaeiPh(kk&Ic?dV-0)E1W757n3fE@q8jdbSG;Cm7Bxs^t zn(gG+F0G|{${|7<6>im1SdJ}$sQH?cl6r$}wr{59YYV8MqA4+-kP6yGc#tY-UsLPR z;rR8LsZ^+=5s6^S$3SML52QT!^o^)$(H}~E^&IF-O~a^>*OX>cjJ(De%-ULtFnY`` zP;g+5stM95`v9-okGDRZTDHQ?G%-+0B9Y8XPogx`T9_n{OvN=?dS+rx(nVc@`%`t)Q;dC6iq@f?P-+rd2r^jaNftVj zEPhsK127DY7-WzG#mKNc+cz0tF*yz3>&Pe_DTBb{$cj`SPNO}~YK~=|AW%*h6mpMI zQA&*Z5NJX3@=e04%ic`5Rh_{hntI$?-IQ|G35okDsP*yz-@W%e?# z+%(AVEH1Xp4Rpxyj_v}6t3yG7{52UJ18?^K01*{omNvRVJ}A;d+r-s$up_&>`cyRs zp<4q8o{}hP4&R1)ISg`DnCfye)TB)dYnAngotd1zs}(x`0HF3P+rmo{#UZs0hJ~oo z76OMRv^hGfN@vh?2i={bo#lvKv{EfXRbvWHtN}`l4K%HLeNRGG8v%^S)0o<`Z%rbV zc;x$fcaWI~lE$6v&JW_o;1EC764}{U+%A@$)tdwzD_rN{Jbqd99RfE!*80*=>2G+b zY6#T8V;>OV^Qfm2_P(8&OGJ=V^Pyu>R ze&g1`p|47uGu2kSbkIcZZUG?K0QwC~Yz2w-l5nau6Vm&4XT>@jaT_ZDVvGCXxQ;%V z)pbROi7Rp|bNX#1!rK1;>KoZCw{nJIZvkfc;D4+0=<+LQN`rAel|Gq08vTj1K0VV@ zBVqR5_S|xSeDztJ#CWLPQvU$C6i^tPE$mI>0^Y;7cYD#OmPnOZM}?@wuasQ8BnNcj;y?u63D00x;(1aR!~Xi#QP7;1?A+bvrI_)IyVbywg3wc>&HIV#ZtPxdSvmZMsKSk*?48a*4AWY%x9`*`--eJ zG{T;f8BG?0Ottk&e2-B%VoHJ(3kx4*dy~#qNaBu>(~0x@2SN>;TdaugYJCPjZ&q)# z_vYcoMO7BqpFM(ya3u^=L58eaC90&Tr;l1qQ=w*p2?+JNxGc8k>v;O&FA#*2I$O_$ zM^df10RyfoqxN()?6_X8vPb*$udI5yp)4~>vsEQRLLNz?jjjSL(S%n3{!RU~@%GbC zN}`Zz!RSiQ(05j175f~%2M2`3(3(6*lr=?NEHx6%TPx^qBtBY-*_gBHI-1|406mtx zAZjubQhG2~khfz1IxKV;4bQsrd*+KbooOhx<`86RvZe~4)fH`*qok#zrl+Hc=E>(X zF}&U=10tGuCy=m6nETVLOKfEVlyE8PJpTY8=6++>qabt`fpe|D)n1Aw<#?*{HPtHB z6!i3KR+zd;_=hLMRWRKp@EM#{7F*XBYq)ap>j=4Fyk^MO!3%yPp`6 zFYW#JKadKm1ARnZ`oH5|$9qyLA`yeoSAU&~&c0MX;OfviOYLz~RMm94+tVDrDE(2* zJBZyMNm5p1F$E1`YzY3I&KgBY1vAt&dnA)1`BnU$5PD&LW$|x8R5RR^#??e zNJ0Tg0~@Ow{VqMUWFkVq@jV7YGOFS++S@~bEsW%VY8d#E|sI;gVl20hs5C#B?5+kHjZjfv5x{hoo3nz+1IY~a7r2H%!~dg>a9mo4^jigl8(0wpO< z9f~223oiqc{=f!r?Oqv{<$tpC{Q4Mj{FSwP7pQTSu5diMsu&zYsa*}xUyBgP?sOZ1 zEvPTO15i3%!%011k}Wb?#>@c$zN9b~{{V0AeK)JD(9z30vBMe?(lAlM{E^N70HD9S zC?=h5zdo0cVh%jD8eN_A79fIMnQlks!AG?6wn(o=7RgWu9U5>cqMu`7BrNdhA~0`A@md>1t}Y^5d^|z?O?^)71?!E9I*gElyf! zm@p~nh~M;&VXOV_DD}f&g`fC{pdVuSpF)3UQf|$(+Sw}4I0dV~{{X6|tFGH!W!61O zjmK?GuZg0>idf;L$Kz?EN_to$f;0-RPZVKM1Y+My52f$!H@%((nS(y7raphSJxVqw zblf5FmOVBIxhe+^15f(Dmq`A}$i9I`~syb-|a=k)ArQ=XR3Zwzax&EHP zoACO!lDzUR4<5rCgA2!&M<>ORxOxHW_Whj;Hto7w2e-D4HE3d7vGZf;PBbE%eKF7{ zg2e7U`9hfNPEMYeYhY!HxoV~{(#=~}A$OLMO9pu~#;ZH^nkjjAcC88T0W~r6mPEJ|~kDpKR+Fsp3UR zVRpH=xnK|C*E|uZ#;k++bO>1FEL^DY$f>WyYyPjxqa)FsT(H3o=G~qta<#1mML=C5 zUrI7T4~&H?8X-0Y?WEkB`!Bn_h&P5C1COuzzsb@$Robf(_E6K)=bny4wbYSQgoewZ z6?CXY0Y!y^*c*@Q&BwCaiR02~$NgXG{#_@I2^G7BKR%N+8<-6?( zZ!eC&K9Eljg4{Y*h^1&*x%vfB`mJCt8G`CwewQ3y*@MKz3Hfw}ITSkMsJP5|N`g3I zNn(FZl=G#StBpk4k?j?&mYEG`f7SW)VRLj0VEKQm?D_P)@f1i@9RLrl&F(nhSf8)6 z!w!(6fas7)8JfB2-i1(?W&wa8kI$%&&9BJ<-`4zldN8>pbe3|%NFJR#K~%AVc;FHV zH|KzP7W$ueNdniT?+JPirnZ@*B-jEA8v|?D52w)H+}nZe=A)q}?ddqIZUE{4VH9j{ za-@;Z1lXH@UO4)HPiR@hXx-j@D-n%e*!wktfoai9;FhQz zNtpRw5G&IR2_l?&ZmMF);9AG}pY@L-_ZPRiJ5&+n(%2LRQ|Hqm zWsie$f35!jSJ#taZ)pnw_Vi^&eED?>wtw5Y*k6DyNWV6{&j9c}u`~AIbgJ4e`W}&W zuG1G*DnC+?{8?;y`q=Po?3Q9!uqXEPCALu*QUUzBMpn@sP8pA)-n$+_`treU7TjLf z_Ej_l*1ZXBu041U0986fZO)*>%l%*Kua`|yN{m|Er|Eywa2Tin zgTTGMzv4ZjG7UzD9T+5R0I$X6(PQs_iCuNyG*Z-7$NW2R#T@a+n53hosgV|FokSHh z)1#!+=bM7R;0OoUzhk_K3r5}5Ir(~g{{WXtA>X$Rt&)lwAK@gAw1dLGpXJuPpCZ4N zC&*ouS(nQ7rFI8&V5zC<>yrbCqN<^+sE8JG6XB+5L~<}fe2~a*ZWP#i6)m;3*#VrX zKP-OUKg*$}-Osj9p=1U(s2#*oxW#yXKB_l(VEaF-@~=U>_PuV;%TlS5Y)0p&s>V$` zOmunSj=D6Crk_x^k|IE5BZ3I_U2(Fyhdv3QJVy$By$+@qin9q&kXO@tpP~GN$w1c3jg`pi-&mkfpFV~?vAZfL-RFqW%|j_N zDx~SE1|_w}9MP84rLG0VCq;a>4&%s3X_h8?U9e`Oty0ym&;{wv<0gvGBtHj-k4Mfs?wpF zp+GGgySowP!{yehlOK-8 zK80eQ_x0=Uo5l*3Hc4ET3NjUyp zNW^a(PTHZSX`M24IzP%~#!U)S$XymElf@y_q^P)Ci!e4P>+Q6-AbHoT&jZ{!A*jDT zg${8{8*Rcy^%vlS|RA3=Wg)s z66rx{ml&s?pX}*(wKsk>GEmVBNRqNxd~wI%5#BV3>SS?V*D)mU>MGi-*SG+C)6GB$ zj34!S^j~*xBgS9q2taFE*EOK+^P%X{;A$u`xPb)l?d*IDkP*~V$|9P%G4iLFMN43@ zm{742$#o&W*B;cxG*d##;v`LCwaaNfo>cWc1a1u0_d(-n-TXR&Di=`2TjqR*arShL z+}S;`L%7at=4kPhw2HrSF|R!p6Vg*dPb85Tm(Zd|RVV23Ir{$qP`>PKUi-(6RR9t2 zR006>`T6>ugj-<0ZMa%ByF0aMu8hEvMQif%@&n7FbKO5HYy9~wmDbuabQRQ96ct;N zsV16XmaRpBX($>6GG;wGS~3r(bL6EL0guO z$Pzg`vxbw%jZm@>QP!X^3aB*Pk?A)x9@%yEdu__QcdTdp8R{{*uwSi5jB#(~Kh%0< z==wLPj~xva1g%)%BJx9a^3-XS<7HOVqDG7|t$++v5zYO4FL=W5w0a4MY-zX=0JqKxAJvGoVy4yfTHAQ4)41rCD@DbS#NePZ#d^#YZKBa%{%@dkM^w zfJjrvqZyXgbz$Nu2g?-C$o-ueU8&hM6t3!LYC``2xo{03shOCeH86m*RcsNob8^?P z=h|hxn%v>a*XdO2Ds?c?M}m{YRHn7zb8`b6qL$;hvVdqritq(n_H~H z@YX{N*IinI{(@{2`;oT3XNXRME1B7-R2>n~kh>h$g8*tPP(B*a1Jq5u^1HRWnQfs} zBr*L-0apmCKt~iLP|}t7sZvKn?ms_5v71 zAbF3ny(+Pp#;c}~%}+oiGYFnoa_#G6j2AZ1qCHnEr<4&3d-Ky59g(AUGIet+uW)ZgMw^wOW_Ja_V&>9(tWpRe|R*7mRK zo6vEmA1~R*%D$Z!{Q~i+;a(npw}+qG*ZhT=9Qp zcU`)I^mA&uf|lsRV(6>!tnKGyj6x(>)&Br$WIC=9l#q0u2=*Adl^&v*=s^T-xvn}$ zZv2c@EEN_(HGgl&iMZ@>G7L6O)UUAi*Z+4+wm^hY0!BEsyom7Wxk4M5#>To8Vq z%ddHdX4%r0xACJ7D%HPW&qBSAkh!awO19OsO!2n{BT66k%|Xz~Pw=zkS6@dhc6(+d zGDgcR@KfdS)6Wb*0^UL9RaXFyPb3~Kd;23i^UIg4BZl&%pD;k^c^|UA;BB!r#QQ+f z1x}e1nttE%^l2oIDHaoMLsXSi6;wFO)xkB^rg;$~rV8qfb{1DT9y=1Vv*J^OWClBofim!GnDDeie-)GHySB1aDSC#Dzugt6Q^k!L8s?h1M?Naf$Q%$Z1jdWV6QLmaVzc`9N$bg$Cw zt=7o%um7nSZAiKSOVRy}EfCI1~W|b6k__(-y5F%r3RjKq7+&s?+bkh+Dg7<|=c$ zdk0xximR5Yd6ozXj+JA)y6!HjuN}|V=slq}mk}Q_SOAGda2Xa(MOz-Z%JF$-TN!BMb`h=vA|9cel#1 z?UoK9Q%#;o_P8K z%Nhm+Xes8$hf^Oc`%^CTVb<=lw3VS5(m4MBtIMM0uzNofna5}QBY4)-QkI&m;pt~) zX=*fHIBM23KcY|<$HnXcx8vD9(RT`3+-`fE%x)Z-4ko@||;u5SfSyBMMDL3Vr+O8)B;moT;Dn( zcEwx)=l1^qlc_6e*sN?!Q{F2*+^LLV2NU_82A}2V66(#FzPr`qu14s zugi(@=;Y%z{@IEw#vf}}Q*Lb4JtFOSrA45u#vPJgPk+exRLS~GxAy|UIu>gQi zW3_+>juEMc0&pqv`Sldu?laYA) zMne-?DdCPK@(7S5ar(5}HG#0Ype2omBaz1*!MdH;v9BNXf2zG2v`C;(5A}aOxa4;e zQnQwk!5^mQ`xf+)ps^mHc_!cNeW#XJQgfcFuq%Nf`z2i znoB>ZgJEj}e`&>Jb+4~Z_Hyn~HUj>VdHUYo_Yx5GrYqLvaAPZ81N~p0O0;!_w1Nlcl63mG2E>bB`uk`Sp|L^L+y*P=dWf<(en+RC zK>Fz8eeUx0uS1LGkV+37+*kpgJ{a>@LbP`Ce5EG=> zw;&KM2tU@`Tl{_2)toQ`hgG{oDqGK`-a2EXDLnrGTk~RV`MBo%{ymAUU$iMb1+OC- zivf_-55Q5z^VC#3QQ zD?mDUhD!^NryLXYwf_Jgi+eSR#WBO8*%Qd|>okrE{{Vo!&B#1|jnCx!Qd=16h_pXG zph|rw)%dlK=khK-x3{)f-0Z@K>nYfY)H5ubh;c6dSae17_k=yaJtlJG zc*_fwvDNA)hSV-?z`Fo{z>j6uRMJnE`oGoo^m(@ftSRH=&~K0?OixY8ZGcs!asIA9>h$#KwlbhTvbu*L5&%As57+7&{f)n` zv{<87mFrUK1!xUA!B>=yokV<+s!6jOfKX}R1|*9c0c&yX9n8vrFQ5A#>i%6lZv#0k z5^%(=f7R>JuhZd8KR@zy>`vk_ zWs!BZwRQgh5J9j4#Bu@txBmbE^!K|>$i;e~H*i1d{{UC)9Y1}wB-Rc<6eIm#>ixYK ze>tzApsl9H($!Scl2TNK4M5ff)HCpPh8z*}=ke}WwA|-=Xj(M|mxVa>3{AJ&#dmcD z#mgjZ#1q?(JbHY;%g|rh-x@m4y0A-*><+ryd5^d*W{W?Ip{$BTsESBhB{IbA9CF1W z`dZq*srGV)=0r!3G;(ptp!t8R{Jm1sf1hQznQU*%+ftpi^7EnMNBXhVDEGhoC+p*` z=gQRNI{P)f`toBHT&;=Qzhjue#ZfP=1dfKX7O0Ay8;eHE>ELtkbCC3j;teO6QJ?t9 zAGD67ZKK^Q-v+mFM$wW0CA1Pe_<}3)uT?wTU&%}5{{U3ejE7Sie%HmSO(giKWT(RB zBZfPG(Z!W`DQjC$K8V>_O~0ujEA24cM9C5u=Q*onA6$W7<P1C9(mJm_&$WI_bcId38>PD&YAj$0YmVH>RpU`(dlssj94n|%0bkZ!Df|*WlHBYv zpkk$7pTa>uv*P`Op>?+JX*dlH$}ssJoABQwarKeBHO&UKa|;s19+|JmFi5Ns(B9*V z4`km-GO6H*0<8aQNkDHE9hU0=3OiNuFj9+UYa z+6J~@O*(DouR?I_-MLWTzm=xa6g##bitq3p?7L_ z*3P1uCCOT)*VNTgOXW`mm&+E7Wr$5SEw^*YJt;lBentPaKd+fz=4{-?=jKS zMN*PQM$w}>ppX?Y9u_er^%4{V^gP?%>c=5Jmq_G}M-(o45@Pv3uxTkI6#oEokgTg_ zH8DcTO#}us@>7JUbrFcbauk9Q52Z3CE;n$%~KF0YJtp_SfzI01rv6+4Ev7 zJv>oj>*;AAiXjZN8BY}EYHl7p0cFRk0>X6H`{T z82stNwa-8U_TORmo=Y8o+Zg@9xMr!ETzV!dN{FC#h(=zLC?(MvqQ>gH$o!xKO|DAh zjyS#}sjH7O@~219_*U_`P^hA%jtAOFKj-S+{wI76+_4C=otKEAjyjf)Aeg$d7EY+e zN~p8q=b$k~K}iKn>~uVH$nP4F=`HLFQVEfTPE8d9XNb!_ zC_OTIpik#9&{)06(OZu-iQAPm`JK5zE_y1;XsFNGQ_-U2TA`+@m1Y_i7iS>rF{9Yr zXk%Tb@Fm~U1Bq6Y^{B_^UtWfLGf6Zh<|DDk+9*J8DpOCV%gd@a_@|7Drk52?@s9zH zo(Y;r&WNFDype`saAJy~iPlD_%iItTFpo97kzU=ds!@+qzbyc^@UEN=uQ#hUEe1l0 znd|1WO0dmPfufBnTap`uBa86jGKv`F#E9Q4ghPuaj;Tx_Kq)?+NPHJFfn zsJ4wHDrhxli0#OxK*;+=M?oFKa=2A!{72DHYpcGX*Wxq|JprK^8R*F1I_GXmki}cK z@EHm?;nj~v@asjYhE%Aej;zyoCZ-a~z^s96Km=a?#g=Zq3OV3=6j^e=D9$a-&dsD!jYlYIYDo+ZlgAkt9Rn}< z^PQk;k!!pphP7Q$i3J5H3X!RJcX6pF*R1jUWZ3le2Co;pbNEWcvMg0DYU!*WTtQ69 zsK}n6!(XXFpU1nuw%oApWP^3MwV%insd(dv;xkcPiXNGNcKMm35Z!Dx*EZ*gUe@75 zfN4XD8er5OlrVIz@4_E08+hSzaa|;iIcR>~d3;VZj#{Dup-Ja}NcwwS7a(qSAE~zU z1-zpK0+c3)8LJP^qFH^&**5{Qi_lEr}F7SXm|YvpS!~)dx09rxYeYU zW)LXx$k3>Y%*(;z=HHw9G8TN#Z%-D@Wnn=`^qPejBvF6Q_W2UE=PBK4@Bk}8)V?YXwVj0GjaqgXPqe%u5`SN07sudzi~I&yJ{tpHq%h5JNG6|V4_SY_6dG^$L;eEV-f3^E z$)?|<>-o3px98ixyltsp7w~$XHTyq0ai>ZD0CZi}o(K9Tp!Bb=^WpOA|JKkON&QSu z`orBT)49RwWfT7LC>pNHIUk$<08?vwqk}`!k+m3Op^ku5Jv=dhsI0@4`kQ?R2lH=a z^8r$NJcXEmIvS|w%1wraV-i%FViinLvoKS^3{&X8LT~Idb>S?>fUiO*JVOxetvXNE z;%1r5l|)A%)atf6i6js{munOB_h?)Xgw%CO5V6h=S9|=hz6$J~%BaWoe|I$rKCg+f#%Ub1jA}_WB=wY=Cg7Itk%a;^6as_*KPnH|)pYmoS=EYcrbQqS!4A01 zG{Q<*rWTP$jzox4$~7;h-{I|DjKgjW9FohUA5OdfDp-3Q8X=4F+xcZwyp|`dk`ZlarEjhc-apQtalfe zr0e~qN1dynk2O^#M3LdJHE^mL?1d^CmB-V?OEF0)X=PYt$V(oS5VwdhEdIm$gKLw* zL;lCl{M{|L1cDAf%hh!Dp5dw7`I@H4)Kukavz2w(T;^hRmKWT$K31-*$E>TOnu}=d z`j(cmu~$@cRDYajW%sK@5yz+jL4oq}uli%ae=e0xCIb0?FSG0&5{==RY=q(IkD3N~ z)&x~iB$QO>!E5wgOh&DYjudh!u>$&*#`m!I z>xn;AzTSY>*2bicj7B#x4JraG=2+yA1(>)J$f1$7I{?nQZE{Ok+v)AKG_5)#kr)~g z)_8L=G}OiC*FTh%JZV_r4P?^HzLmHii=KYI%%M$GKQ56wmEr5qi;vtZlcbXwKBhww zM+lUFW&O4iAWl`4P3%p{zt`IrP?1JnBRwjCgo;7P=z;e}*2(OB!#?H3M?9F>WW2O6 zvv}hy*Oam#3#U;$`x9(?xMfHuKde8P=n>2tAx4r|lCZb(Jvrh2K*d3g6x&*gqK_jT zH7x5dlUa_Y60GIPQZ(x))AVjH>{9LHzO7UqT>(biA|q0R(a`wc^9q|FH*OQP_Nwmu zY}lz4KgpwxDjK5~iWwexB6UI)dE^~jkI%KT$t;#j5=)_%&-wIR+dXcglHRIyaO3%Z zKAL9g4wUToTvu7`y~)126DgriP*=YGExh$)GnLmA}{NL46BG z#!Gy9ugi%w{{SaK-M?krGPSn{M z8WF_jk3wGc`74T*=&%@w)Z^$WWR|``Ac~!&gG^DPpHg_)1@+uqlk~T@Z!Z`CfqN8m z6We)o#?xHSFYCF-s0Sv$KbOm*AKJez>X!+Uz~Cx?%hXLQm365(@zBvb8!RreGpxR` za@MdxYjI?@_O}~>0E$KD^Z9fj`dd3jNevl-;9`~aJz@Bt)7^vL8LEul;IBJtt+7G! zHFa5WtN6uNrQL&LmQ+qLjmve|9 z?@&9B1sK5H@C$@r3+j1TYGtm@gLU@u-5IucAVCZhc^o|o@Q{;D6Y9Sux@F~Sb z8NDEgB6!G#_I_go+>&knKFlY!hi$Z$X)$sKX!1Ut1f=E*o#y5X8%)@0?>>J#^k1?& zrhKO9l6j=pB5RIT145a6tV+QYR(?UEhXpTYY70Eza<(WgJ^{#<%U;lzc1)&3tY zgWc1ch>0N&XJDwLFg~kkDQkc=n{vlZ>^b(5X!TZuJu9~bXipB3J7aPmyU^}QLLv(1 zSJq8$a#(tbX#@Ld+bxs5j$LKdDOTUP%_WC)keIYFy^M2QK?q z&~QKM_33*JDmh2=-E2u8Lt&&wqw8=7`rP|55sHTMAL^$?22!A}ullRgtO+@tE zAqG!QqigWo@T8wmAE+((w?5Ib4Op*BgZB4R{a@he(Ny|w3X2d!8!=E1BIBFi>+RqP zpg8{k4@n6brhmcINvPT6G9r>W1o3hYA6`DBoBse&?JTye%vneJzt#M@Q5C|f1Y@4P zPMTa6C-AoVaDTK-g@Lyt`un6&X>9T9(>A5R`Tqd1(zb>DAd+lU{*pd|+*tlc=l$c^ z+#DecFaY)M0aO#G9X(Ob@;a$3K(P9Q&(vPP^KWLB?pT3bbXjo{qLV>ho}79>2kJlG zPt^YavG!|B4D?#3xYTsXIcQ%|Cq?XeHv;zKo=Cs?-qEf=)lB@_#l z{Y)$k{N|agq{UTFq_%CAL{bx*KCZ{m+jc=N8-wLThplx{{XMn-%dTsJ1yxQoK*h+#q|*LKHF2{D5DSa z(Dc5|VJmYquGsw5W`ydPT}DKAj)ZWbsOTlO?snU3 z$}aZU<%FEnP|*DSdPmXieff`*9|bm3?y?m#PxqC@!bL1b&WNze(j;<)76c1i@(sPx z(!+C)!AP#_J29&h#C?XeH1qylA6@T!uXvYo&10g`6?7#s4+2SA5-XAk^1&7Blv~7Y zI@$3X=P5}+ku`5kOllgIN<5`KSqn}i3#Y?2t~d*O6K{2!cbj0jFz(l(CD%nJgpblb+~p_R*EKU z(W%Cy3?KD;`XK$C{H^{D_l`=Zac|y{*_kYrYga(^xSBTGwQi)^S)#1OH8GX=1zEX5 z0UX@>W-Fm9>n<8PngfxKN`fiSv3a|hHpCD^aKV*SlGJ07fZPxB_3FJhm;5JN<2_|v zHcMgezTMdrGfg;?84h-naZ!i>W{6Tvl%}YwfV833 z0rpeu^yuo_-7DCkk`(j*B+lfIL}1?0J1;fJ=@C*H}MX+?ri2m92RLJ z$L4VnJ!C`xkwUc*Ng5LG%N7Gln;&KOJ0u!42w(lHf6zdm=g@+~+-wN5FnEX#Mp{TH=8rCwFH27g0W(Gw%^Y*q20+YB;Q)`Q0f?-po?iuRTro7w7eCC? z=hHWQ;j!2!iua-83Jp+HQ27E#sm?&?@bwq+Gi*}QSN1mgT4KuZJjakBW8596lsRRPgNxyEgdwOS!uD+SHxPPYMCCMtV02a#9~ba7WVx_`)1db zlWdW$401}~Em-LkB$7&#!ju%J=f|Li_s^F+!KN0vjx=K0P--eb0YGIHt!ioy<+dSFoz16t$OflnXw-)%hli|#H9 z+&j--({o-FsbRy@PuX8Cq-8P2reukPbnzqwuCaL{^p>>bhx=Z5q0)bd=qyZh~zT3`GHO(o*qV?zFkQCzkMZ> zMz?VT9Su*N8k%&k<`2si_3KT4j5uoDvz*WDyxJUIXJ~Fb{@lva%&QGeK2Haet-)2P z(i#Fhw9XziZ7v1Y!+{oig>2Tl-Q-mLCZi$sQYsJZ>m+$q)@yrrQ^i63qQCKdUAI-5 zh;i{qVDP}RK&w!?-ybzX#pI1;pT~MCj}%^leJm~;+)FHEJ2&CzU3a4jOwrvrG%8#vFo6!GOfW^u_OJ5vE8J;5*VFm zTml0CwWeyWDve$gH0m_Iw((!bMyjD8l_h|!aL8#Q(*zMw(#nG;M2sK-wX{S{9~6_T zB!)1|j9!wUv}WY3xb}T(cM33w1FKF)!q_zVqhmOyL5tffmroRtq&5%6xfSDwT;nzA zR|Q@@BUu!nxYA;h1qGR8{U^rSLtghH*Z!Ww7WX!)it0zD3XJFFkF?{Ut;MzDyCVZm zH4Jf&o@wYaPO`2>h_EpQ8kbP;F}|iGrl{V;AFtE>aqV<>memF|0;BNy`BWeEdGuc` zjoy+ZVrYLCr=1A@09Th$XPP>_O(wGJVy7nhTwcf28tUXP(~E=c-yLVEdXi|qhx773 z;TY+ag{|nRK%%Yk{Hc-t3UwFwbq&AG{{Xvn+s6;-)o&l^{dVU5{oq0T9)64aKHomQ z^_Nxn{{Rg*x9$5py8qYEP`x>@C`E@q?Y^I0J+s}?l2_BI`1zbZR!XYid!_Q?#35Yb82=c5;$f@$?SB0rWpZ>@T=|LormEgP~24 zw^dSLsp)@|>{iS}w%J9}9r)7q*@{JLV!HoCor z8uv2+*74sHdOnA0Y)z@Q@Q}jv^mH`KUlb^pd0sCg`Bp)40*yaGd;b7VedA8?B>TSW zad5)5Vh7kbb(8y4F>O0^5R59X^XTXA{eu)3I&+8noEBCXjH+)c(N&dRW1f|rgk%wY zQRyHaMY#4K-1hMbL}Esce?A}|$oc)Bv!Q=3?=mdzvlW)qnt2vqm_Ot_6Rzi;IW{SZ zrZ}aUp<^`2(mb)wg~Qv$HNd=IRzTLcY%Jq&c2*%ghmjw%=j3{! z4e2nKDYz*qr;2*FsHmPt&=X$;7AZo7AV(d51ZoHUe{!DBA(GA~7*URbp5oa?9WDT@ z#r(No>*qJ2ox8i3UU)8>6o@&oNXKI#C}-k<6p z>f_N<+@cCOs^}paryfE&rBwu7QAcGX5SIBP-Kmd5HSaXs=zV;)*KIKwuFhG^r-2Z_1A4E`E;h~ zjol(OH3I`Q^b$oZFroF$5OA|9+Sg#F-2Fbj*WbaUc%XLq^cPr+v6TE>SfGmqlgA}? zB6u-19wJu`Q-ESeoVal@ecD%z+j zYNM%v{A(h?9b&qQX;c9t7>Lqr?;s-QkI&NH#1=Oy%g|=~Zjvr5j+GefjY3II(YPYBAPJh_8qj|DU8Rc5zEAnoob|>6VL@3}2&${eM%2`l z>mzxV(y}hAi3Pw0!}IL#Z{KC0Tc!%D=j-`&SwFXOFft=)Q<@+0b#i|gKazbOGOC*^ z-Fubt)OiP4YBtUaNhon|EMU0)Ay9u&nV1c`HMX(`G14`UZ<(Va%RJ-+9b3A6%Il5{{RolybV1EMJuvCLT(+` zxvD5K6)iq;z6nhQEhM`C0DDw$eZ^XUg^X(I;5Gdtl0hEC)_YS+s##dMCZwK)wi|VZ z*=rnd#ug>%pJeVG*7a4pY)Z!$RJ7mTNoIK%Qx?=`c%?d{Nv$Q1D5pvuG+dtjEJ&c0 zr8?EsF+KW6@GeJ4iEqpMxwvSa{ zwd7O7SdqaZ_5e?B1+}dsG$e5zokx7n&2McJEt#z3P<_6pok>pu(e{7`zoRxDO8FQ)0I-LDaHukPN821@`N-%&74>tb*FzOq==1c9S z68AEsx9)PpVmkV8t9cHLM%C-hx!1U?lEXDVCelSs4mJQhuVSjY<}7AyI=QgYstx{@ z_veP%!V7|A2-T$r6Z!G`e1}1Mz1I7Cy0jh>O0*=o;6A~_?DHpwuR-5)=a(CXddVwg zd7dbukM|2Q-CV3OAvU?N2b=nbKEd3_xDgQjQe1&gm&kN1h%#;4E z9ag?`bV-Vps@i=LmU$VDxeKU1p>uE^B(?48zx&K#GnHzdJx=!4sUidmfz~>H=%*CT z7u_PppblkXRFCsy*pubcC*W8p=KPVRm8tUSCDzoTt4#h~H2(mk*fOD2Woej()pylr zZFg3i+;& zuSVx?xmt8kLy!q9Ly~wUn#2MDBag+thuEgts)IE@pFwM*Rwsw-=uXF*+UsyFdlPO2 z>@F@8lW*zl!B42@j$gN@30a+xC?I-umJDn-xz%6~A5ZoF0K?mESd{|^s?0|=8g38b#0v`! zZT>#=R=KBM*QTlu+tZvN00FrN@IJQvNAdXjbL~VzlppH#=@g`#j-|9}Q0PDpJb-P_ z()?ddkLTKx7%FJJFs^kCP16LWV`c;bNdW0%a(S}yqq*Wxb0H2|;H@Uy~dsY~Vs2M#Mn1Q1) z!0LSxd02l^f5zPL{=Wy>yL8mUq_-`hPfD6t^l}E4AXxoBuN-{`v&a)q3?7K5eOM-= zr)1JV)qkf0@_D%apHF5A1qFI9YJzn27OId+j92__Ip_Rs^*0}1&Hd6?gMvp-!Ej?> z4@vps@o6XNYk#mj0!{8esQUXr<4;EMKDyJUiCi!sTv+`)}GQ>88{h zS5RsxqmfxSHy5|meMlcbPZzzo=h{hQR;cMrGdd96A+uPRS}SK*(-Boaq)PhPOY{*lOl2A+ev9 zKh^8dvf5ge%}38a>h$QSb{%8WR132Kc4h&z0i`SomatMRE>JQV?a(F($uRNCXt0j2(bR&B-k`~l+PxXJR z&!g+GbN)!_UPl_46+s$@A#e5i>HenH{CkwSe{j^1nGbOv>i+)zb-;!>vZ_oI1?QNy`pR`m;IzxN5{Tb9~VsG_+f9j`69naUh zJ9*Tg+*oMaB$Wvy74u0VNfV(^*KI(QDz-L1LVeQm!)@H<7M0dOln>j@Tk^$gz?W@jb+oX4Oo{CgZ93QlgLF?02ypg@x z#S%+vR@Q3Ek&hsFRQevBWKE}*rG~1OL03^6h$;TuH1x8ID#}8tviR)W6T$Yf8{M+{ z1$gAwAR|tksrBLI_Viu!yXN0;@XZ&80a9C46^ExB*X++q40b8vj-T!5DMdP`f)p_b zq;-c?tV7R|@t+u6meQmQA168L-oI3}KcofF<%#P2tYJNTsPCba^-K=JBCIJKfR zb5v76)l59>@(_yz2*~ZAkFBqBd!BvVM9{RdOB$IeT$)f~zvn$P_X6ZW95S$ixFM#09UXxWh_;J-&u877OmZR+?fyz_C;xfk5Gk|1eU_@bb z+n?#|hI{q1lpBpSdg<#UJ+{6#TY8x*<10{u#8>t#VwR>D=8jr{1h70)7^2Y~HcFl`CZ?y5td?sn*c-r&sbynRLxc8t!_^$_jz7I=(t&S82A05q1xaC-^BI0{J5 z9w5!y6;zbFz$TB>nuX0WJHW{qs0SQ67$_Gr6j8?hD-Sgo#DI-P zq)>VqQ>BhNmvAb^616HLSml{1t6)}InrjgYMNt!i#dH-mu~Tk2_IGV-xu``;kn2K1 zy3`f&qXY6F(<2z@GkbBhRmS5 zB!8Q|wEb^u^M9}V4{JWPKaB9N#pV95Kk{@{`?_D?6|FuWKEMCa&>BKPwa+5|0PEk~ z0O{7_)1?kJdW91OWsDGY{VsmIe}(@5KH8R0nDgmO5SJmmx*G5mN^#;c&#EQmf%=d* z{{UQH*mmt|<-CtVD|1By%ygolmTZKVKv>4yf_bv>$L8RBLg)}@rKrWt2Uauuy!KTd z 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≫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,*W%lk}BJh(Bt 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%0A?&rzQ67N00G;>t=(yw^nYN4M-$fs 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 literal 0 HcmV?d00001 diff --git a/html/_images/wsgi_middleware_onion.png b/html/_images/wsgi_middleware_onion.png new file mode 100644 index 0000000000000000000000000000000000000000..17f486b240c30276ddf29762a8d0174e9f18e63a GIT binary patch literal 8554 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 Z4+D+4vNy~*;KLILl{@N+g}2O}{2NqM! set + ALLUSERSPROFILE=C:\ProgramData + ... + + +.. nextslide:: Setting The Environment + +This can be manipulated: + +.. rst-class:: build +.. container:: + + In a ``bash`` shell we can do this: + + .. code-block:: bash + + $ export VARIABLE='some value' + $ echo $VARIABLE + some value + + or at a Windows command prompt: + + .. code-block:: posh + + C:\Users\Administrator\> set VARIABLE='some value' + C:\Users\Administrator\> echo %VARIABLE% + 'some value' + + +.. nextslide:: Viewing the Results + +These new values are now part of the *environment* + +.. rst-class:: build +.. container:: + + \*nix: + + .. code-block:: bash + + $ printenv + TERM_PROGRAM=iTerm.app + ... + VARIABLE=some value + + Windows: + + .. code-block:: posh + + C:\> set + ALLUSERSPROFILE=C:\ProgramData + ... + VARIABLE='some value' + +.. nextslide:: Environment in Python + +We can see this *environment* in Python, too:: + + $ python + +.. code-block:: pycon + + >>> import os + >>> print os.environ['VARIABLE'] + some_value + >>> print os.environ.keys() + ['VERSIONER_PYTHON_PREFER_32_BIT', 'VARIABLE', + 'LOGNAME', 'USER', 'PATH', ...] + + +.. nextslide:: Altering the Environment + +You can alter os environment values while in Python: + +.. code-block:: pycon + + >>> os.environ['VARIABLE'] = 'new_value' + >>> print os.environ['VARIABLE'] + new_value + +.. rst-class:: build +.. container:: + + But that doesn't change the original value, *outside* Python: + + .. code-block:: bash + + >>> ^D + + $ echo this is the value: $VARIABLE + this is the value: some_value + + C:\> \Users\Administrator\> echo %VARIABLE% + 'some value' + +.. nextslide:: Lessons Learned + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * Subprocesses inherit their environment from their Parent + * Parents do not see changes to environment in subprocesses + * In Python, you can actually set the environment for a subprocess explicitly + + .. code-block:: python + + subprocess.Popen(args, bufsize=0, executable=None, + stdin=None, stdout=None, stderr=None, + preexec_fn=None, close_fds=False, + shell=False, cwd=None, env=None, # <------- + universal_newlines=False, startupinfo=None, + creationflags=0) + + +CGI - The Web Environment +========================= + +.. rst-class:: large centered + +CGI is little more than a set of standard environmental variables + + +What is CGI +----------- + +First discussed in 1993, formalized in 1997, the current version (1.1) has +been in place since 2004. + +From the preamble: + + This memo provides information for the Internet community. It does not + specify an Internet standard of any kind. + + -- RFC 3875 - CGI Version 1.1: http://tools.ietf.org/html/rfc3875 + + +.. nextslide:: Meta-Variables + +:: + + 4. The CGI Request . . . . . . . . . . . . . . . . . . . . . . . 10 + 4.1. Request Meta-Variables . . . . . . . . . . . . . . . . . 10 + 4.1.1. AUTH_TYPE. . . . . . . . . . . . . . . . . . . . 11 + 4.1.2. CONTENT_LENGTH . . . . . . . . . . . . . . . . . 12 + 4.1.3. CONTENT_TYPE . . . . . . . . . . . . . . . . . . 12 + 4.1.4. GATEWAY_INTERFACE. . . . . . . . . . . . . . . . 13 + 4.1.5. PATH_INFO. . . . . . . . . . . . . . . . . . . . 13 + 4.1.6. PATH_TRANSLATED. . . . . . . . . . . . . . . . . 14 + 4.1.7. QUERY_STRING . . . . . . . . . . . . . . . . . . 15 + 4.1.8. REMOTE_ADDR. . . . . . . . . . . . . . . . . . . 15 + 4.1.9. REMOTE_HOST. . . . . . . . . . . . . . . . . . . 16 + 4.1.10. REMOTE_IDENT . . . . . . . . . . . . . . . . . . 16 + 4.1.11. REMOTE_USER. . . . . . . . . . . . . . . . . . . 16 + 4.1.12. REQUEST_METHOD . . . . . . . . . . . . . . . . . 17 + 4.1.13. SCRIPT_NAME. . . . . . . . . . . . . . . . . . . 17 + 4.1.14. SERVER_NAME. . . . . . . . . . . . . . . . . . . 17 + 4.1.15. SERVER_PORT. . . . . . . . . . . . . . . . . . . 18 + 4.1.16. SERVER_PROTOCOL. . . . . . . . . . . . . . . . . 18 + 4.1.17. SERVER_SOFTWARE. . . . . . . . . . . . . . . . . 19 + + +Running CGI +----------- + +You have a couple of options: + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * Python Standard Library CGIHTTPServer + * Apache + * IIS (on Windows) + * Some other HTTP server that implements CGI (lighttpd, ...?) + + Let's keep it simple by using the Python module + + +.. nextslide:: Preparations + +In the class resources for this session, you'll find a directory named ``cgi``. + +.. rst-class:: build +.. container:: + + Make a copy of that folder in your class working directory. + + Windows Users, you may have to edit the first line of + ``cgi/cgi-bin/cgi_1.py`` to point to your python executable. + + .. rst-class:: build + + * Open *two* terminal windows in this ``cgi`` directory + * In the first terminal, run ``python -m CGIHTTPServer`` + * Open a web browser and load ``http://localhost:8000/`` + * Click on *CGI Test 1* + + +.. nextslide:: Did that work? + +.. rst-class:: build + +* If nothing at all happens, check your terminal window +* Look for this: ``OSError: [Errno 13] Permission denied`` +* If you see something like that, check permissions for ``cgi-bin`` *and* + ``cgi_1.py`` +* The file must be executable, the ``cgi-bin`` directory needs to be readable + *and* executable. + + +.. rst-class:: build +.. container:: + + Remember that you can use the bash ``chmod`` command to change permissions + in \*nix: ``chmod a+x cgi-bin/cgi_1.py`` + + Windows users, use the 'properties' context menu to get to permissions, + just grant 'full' + + +.. nextslide:: Break It + +Problems with permissions can lead to failure. So can scripting errors + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * Open ``cgi/cgi-bin/cgi_1.py`` in an editor + * Before where it says ``cgi.test()``, add a single line: + + .. code-block:: python + + 1 / 0 + + Reload your browser, what happens now? + + +.. nextslide:: Errors in CGI + +CGI is famously difficult to debug. There are reasons for this: + +.. rst-class:: build + +* CGI is designed to provide access to runnable processes to *the internet* +* The internet is a wretched hive of scum and villainy +* Revealing error conditions can expose data that could be exploited + + +.. nextslide:: Viewing Errors in Python CGI + +Back in your editor, add the following lines, just below ``import cgi``: + +.. rst-class:: build +.. container:: + + .. code-block:: python + + import cgitb + cgitb.enable() + + Now, reload again. + +.. nextslide:: cgitb Output + +.. figure:: /_static/cgitb_output.png + :align: center + :width: 100% + + +.. nextslide:: Repair the Error + +Let's fix the error from our traceback. Edit your ``cgi_1.py`` file to match: + +.. code-block:: python + + #!/usr/bin/env python + import cgi + import cgitb + + cgitb.enable() + + cgi.test() + +.. rst-class:: build +.. container:: + + Notice the first line of that script: ``#!/usr/bin/python``. + + This is called a *shebang* (short for hash-bang) + + It tells the system what executable program to use when running the script. + + +CGI Process Execution +--------------------- + +Servers like ``CGIHTTPServer`` run CGI scripts as a system user called +``nobody``. + +.. rst-class:: build +.. container:: + + This is just like you calling:: + + $ ./cgi_bin/cgi_1.py + + In fact try that now in your second terminal (use the real path), what do + you get? + + Windows folks, you may need ``C:\>python cgi-bin/cgi_1.py`` + + Notice what is missing? + + +.. nextslide:: + +There are a couple of important facts about CGI that derive from this: + +.. rst-class:: build + +* The script **must** include a *shebang* so that the system knows how to run + it. +* The script **must** be executable. +* The *executable* named in the *shebang* will be called as the *nobody* user. +* This is a security feature to prevent CGI scripts from running as a user + with any privileges. +* This means that the *executable* from the script *shebang* must be one that + *anyone* can run. + + +.. nextslide:: The CGI Environment + +CGI is largely a set of agreed-upon environmental variables. + +.. rst-class:: build +.. container:: + + We've seen how environmental variables are found in python in + ``os.environ`` + + We've also seen that at least some of the variables in CGI are **not** part + of the system environment. + + Where do they come from? + + +.. nextslide:: CGI Servers + +Let's find 'em. In a terminal fire up python: + +.. rst-class:: build +.. container:: + + .. code-block:: pycon + + >>> import CGIHTTPServer + >>> CGIHTTPServer.__file__ + '/big/giant/path/to/lib/python2.6/CGIHTTPServer.py' + + Copy this path and open the file it points to in your text editor + + +.. nextslide:: Environmental Set Up + +From CGIHTTPServer.py, in the CGIHTTPServer.run_cgi method: + +.. code-block:: python + + # Reference: http://hoohoo.ncsa.uiuc.edu/cgi/env.html + # XXX Much of the following could be prepared ahead of time! + env = {} + env['SERVER_SOFTWARE'] = self.version_string() + env['SERVER_NAME'] = self.server.server_name + env['GATEWAY_INTERFACE'] = 'CGI/1.1' + env['SERVER_PROTOCOL'] = self.protocol_version + env['SERVER_PORT'] = str(self.server.server_port) + env['REQUEST_METHOD'] = self.command + ... + ua = self.headers.getheader('user-agent') + if ua: + env['HTTP_USER_AGENT'] = ua + ... + os.environ.update(env) + ... + + +.. nextslide:: CGI Scripts + +And that's it, the big secret. The server takes care of setting up the +environment so it has what is needed. + +.. rst-class:: build +.. container:: + + Now, in reverse. How does the information that a script creates end up in + your browser? + + A CGI Script must print its results to stdout. + + Use the same method as above to import and open the source file for the + ``cgi`` module. Note what ``test`` does for an example of this. + + +.. nextslide:: Recap + +What the Server Does: + +.. rst-class:: build + +* parses the request +* sets up the environment, including HTTP and SERVER variables +* figures out if the URI points to a CGI script and runs it +* builds an appropriate HTTP Response first line ('HTTP/1.1 200 OK\\r\\n') +* appends what comes from the script on stdout and sends that back + +What the Script Does: + +.. rst-class:: build + +* names appropriate *executable* in it's *shebang* line +* uses os.environ to read information from the HTTP request +* builds *any and all* appropriate **HTTP Headers** (Content-type:, + Content-length:, ...) +* prints headers, empty line and script output (body) to stdout + + +In-Class Exercise +----------------- + +You've seen the output from the ``cgi.test()`` method from the ``cgi`` module. +Let's make our own version of this. + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * In the directory ``cgi-bin`` you will find the file ``cgi_2.py``. + * Open that file in your editor. + * The script contains some html with text naming elements of the CGI + environment. + * You should use the values in os.environ to fill in the blanks. + * You should be able to view the results of your work by loading + ``http://localhost:8000/`` and clicking on *Exercise One* + + **GO** + + +Getting Data from Users +----------------------- + +All this is well and good, but where's the *dynamic* stuff? + +.. rst-class:: build +.. container:: + + It'd be nice if a user could pass form data to our script for it to use. + + In HTTP, these types of inputs show up in the URL *query* (the part after + the ``?``):: + + http://myhost.com/script.py?a=23&b=37 + + You've seen this before, right? In your Pyramid learning journal? + + It's how we got the ``id`` of an entry to the edit form. + + +.. nextslide:: Form Data in CGI + +In the ``cgi`` module, we get access to this with the ``FieldStorage`` class: + +.. code-block:: python + + import cgi + + form = cgi.FieldStorage() + stringval = form.getvalue('a', None) + listval = form.getlist('b') + +.. rst-class:: build + +* The values in the ``FieldStorage`` are *always* strings +* ``getvalue`` allows you to return a default, in case the field isn't present +* ``getlist`` always returns a list: empty, one-valued, or as many values as + are present + + +In-Class Exercise +----------------- + +Let's create a dynamic adding machine. + +.. rst-class:: build + +* In the ``cgi-bin`` directory you'll find ``cgi_sums.py``. +* In the ``index.html`` file in the ``cgi`` directory, the third link leads to + this file. +* You will use the structure of that link, and what you learned just now about + ``cgi.FieldStorage``. +* Complete the cgi script in ``cgi_sums.py`` so that the result of adding all + operands sent via the url query is returned. +* Return the results as plain text, with the appropriate ``Content-Type`` + header. + + +.. nextslide:: My Solution + +.. rst-class:: build + +.. code-block:: python + + form = cgi.FieldStorage() + operands = form.getlist('operand') + total = 0 + for operand in operands: + try: + value = int(operand) + except ValueError: + value = 0 + total += value + + output = str(total) + + print "Content-Type: text/plain" + print "Content-Length: %s" % len(output) + print + print output + + +.. nextslide:: Break Time + +.. rst-class:: centered + +Let's take a break here, before continuing + + +WSGI +==== + + +CGI Problems +------------ + +CGI is great, but there are problems: + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * Code is executed *in a new process* + * **Every** call to a CGI script starts a new process on the server + * Starting a new process is expensive in terms of server resources + * *Especially for interpreted languages like Python* + + How do we overcome this problem? + +.. nextslide:: Alternatives to CGI + +The most popular approach is to have a long-running process *inside* the +server that handles CGI scripts. + +.. rst-class:: build +.. container:: + + FastCGI and SCGI are existing implementations of CGI in this fashion. + + The PHP scripting language works in much the same way. + + The Apache module **mod_python** offers a similar capability for Python + code. + + .. rst-class:: build + + * Each of these options has a specific API + * None are compatible with each-other + * Code written for one is **not portable** to another + + This makes it much more difficult to *share resources* + + +A Solution +---------- + +Enter WSGI, the Web Server Gateway Interface. + +.. rst-class:: build +.. container:: + + Other alternatives are specific implementations of the CGI standard. + + WSGI is itself a new standard, not an implementation. + +.. rst-class:: build + + WSGI is generalized to describe a set of interactions. + + Developers can write WSGI-capable apps and deploy them on any WSGI server. + + Read the WSGI spec: http://www.python.org/dev/peps/pep-0333 + + +Apps and Servers +---------------- + +WSGI consists of two parts, a *server* and an *application*. + +.. rst-class:: build +.. container:: + + .. container:: + + A WSGI Server must: + + .. rst-class:: build + + * set up an environment, much like the one in CGI + * provide a method ``start_response(status, headers, exc_info=None)`` + * build a response body by calling an *application*, passing + ``environment`` and ``start_response`` as args + * return a response with the status, headers and body + + .. container:: + + A WSGI Appliction must: + + .. rst-class:: build small + + * Be a callable (function, method, class) + * Take an environment and a ``start_response`` callable as arguments + * Call the ``start_response`` method. + * Return an *iterable* of 0 or more strings, which are treated as the + body of the response. + + +.. nextslide:: Simplified WSGI Server + +.. code-block:: python + + from some_application import simple_app + + def build_env(request): + # put together some environment info from the reqeuest + return env + + def handle_request(request, app): + environ = build_env(request) + iterable = app(environ, start_response) + for data in iterable: + # send data to client here + + def start_response(status, headers): + # start an HTTP response, sending status and headers + + # listen for HTTP requests and pass on to handle_request() + serve(simple_app) + + +.. nextslide:: Simple WSGI Application + +Where the simplified server above is **not** functional, this *is* a complete +app: + +.. code-block:: python + + def application(environ, start_response) + status = "200 OK" + body = "Hello World\n" + response_headers = [('Content-type', 'text/plain'), + ('Content-length', len(body))] + start_response(status, response_headers) + return [body] + + +.. nextslide:: WSGI Middleware + +A third part of the puzzle is something called WSGI *middleware* + +.. rst-class:: build +.. container:: + + .. rst-class:: build + + * Middleware implements both the *server* and *application* interfaces + * Middleware acts as a server when viewed from an application + * Middleware acts as an application when viewed from a server + + .. figure:: /_static/wsgi_middleware_onion.png + :align: center + :width: 38% + + +Flowcharts +---------- + +WSGI Servers: + +.. class:: center incremental + +**HTTP <---> WSGI** + +.. rst-class:: build + +WSGI Applications: + +.. class:: center incremental + +**WSGI <---> app code** + + +The Whole Enchilada +------------------- + +The WSGI *Stack* can thus be expressed like so: + +.. rst-class:: build big-centered + +**HTTP <---> WSGI <---> app code** + + +Using wsgiref +------------- + +The Python standard lib provides a reference implementation of WSGI: + +.. image:: img/wsgiref_flow.png + :align: center + :width: 80% + + +Apache mod_wsgi +--------------- + +You can also deploy with Apache as your HTTP server, using **mod_wsgi**: + +.. image:: img/mod_wsgi_flow.png + :align: center + :width: 80% + + +Proxied WSGI Servers +-------------------- + +Finally, it is also common to see WSGI apps deployed via a proxied WSGI +server: + +.. image:: img/proxy_wsgi.png + :align: center + :width: 80% + + +The WSGI Environment +-------------------- + +.. class:: small + +REQUEST_METHOD + The HTTP request method, such as "GET" or "POST". This cannot ever be an + empty string, and so is always required. +SCRIPT_NAME + The initial portion of the request URL's "path" that corresponds to the + application object, so that the application knows its virtual "location". + This may be an empty string, if the application corresponds to the "root" of + the server. +PATH_INFO + The remainder of the request URL's "path", designating the virtual + "location" of the request's target within the application. This may be an + empty string, if the request URL targets the application root and does not + have a trailing slash. +QUERY_STRING + The portion of the request URL that follows the "?", if any. May be empty or + absent. +CONTENT_TYPE + The contents of any Content-Type fields in the HTTP request. May be empty or + absent. + + +The WSGI Environment +-------------------- + +.. class:: small + +CONTENT_LENGTH + The contents of any Content-Length fields in the HTTP request. May be empty + or absent. +SERVER_NAME, SERVER_PORT + When combined with SCRIPT_NAME and PATH_INFO, these variables can be used to + complete the URL. Note, however, that HTTP_HOST, if present, should be used + in preference to SERVER_NAME for reconstructing the request URL. See the URL + Reconstruction section below for more detail. SERVER_NAME and SERVER_PORT + can never be empty strings, and so are always required. +SERVER_PROTOCOL + The version of the protocol the client used to send the request. Typically + this will be something like "HTTP/1.0" or "HTTP/1.1" and may be used by the + application to determine how to treat any HTTP request headers. (This + variable should probably be called REQUEST_PROTOCOL, since it denotes the + protocol used in the request, and is not necessarily the protocol that will + be used in the server's response. However, for compatibility with CGI we + have to keep the existing name.) + + +The WSGI Environment +-------------------- + +.. class:: small + +HTTP\_ Variables + Variables corresponding to the client-supplied HTTP request headers (i.e., + variables whose names begin with "HTTP\_"). The presence or absence of these + variables should correspond with the presence or absence of the appropriate + HTTP header in the request. + +.. class:: center incremental + +**Seem Familiar?** + + +A Bit of Repetition +------------------- + +Let's start simply. We'll begin by repeating our first CGI exercise in WSGI + +.. rst-class:: build + +* Find the ``wsgi`` directory in the class resources. Copy it to your working + directory. +* Open the file ``wsgi_1.py`` in your text editor. +* We will fill in the missing values using the wsgi ``environ``, just as we + use ``os.environ`` in cgi + +.. rst-class:: build center + +**But First** + + +Orientation +----------- + +.. code-block:: python + + if __name__ == '__main__': + from wsgiref.simple_server import make_server + srv = make_server('localhost', 8080, application) + srv.serve_forever() + +.. rst-class:: build + +Note that we pass our ``application`` function to the server factory + +.. rst-class:: build + +We don't have to write a server, ``wsgiref`` does that for us. + +.. rst-class:: build + +In fact, you should *never* have to write a WSGI server. + + +Orientation +----------- + +.. code-block:: python + + def application(environ, start_response): + response_body = body % ( + environ.get('SERVER_NAME', 'Unset'), # server name + ... + ) + status = '200 OK' + response_headers = [('Content-Type', 'text/html'), + ('Content-Length', str(len(response_body)))] + start_response(status, response_headers) + return [response_body] + +.. rst-class:: build + +We do not define ``start_response``, the application does that. + +.. rst-class:: build + +We *are* responsible for determining the HTTP status. + + +Running a WSGI Script +--------------------- + +You can run this script with python:: + + $ python wsgi_1.py + +.. rst-class:: build + +This will start a wsgi server. What host and port will it use? + +.. rst-class:: build + +Point your browser at ``http://localhost:8080/``. Did it work? + +.. rst-class:: build + +Go ahead and fill in the missing bits. Use the ``environ`` passed into +``application`` + + +Some Tips +--------- + +Because WSGI is a long-running process, the file you are editing is *not* +reloaded after you edit it. + +.. rst-class:: build + +You'll need to quit and re-run the script between edits. + +.. rst-class:: build + +You may also want to consider using ``print environ`` in your application so +you can see the dictionary. + +.. rst-class:: build + +If you do that, where will the printed environment appear? + + +A More Complex Example +---------------------- + +Let's create a multi-page wsgi application. It will serve a small database of +python books. + +.. rst-class:: build + +The database (with a very simple api) can be found in ``wsgi/bookdb.py`` + +.. rst-class:: build + +* We'll need a listing page that shows the titles of all the books +* Each title will link to a details page for that book +* The details page for each book will display all the information and have a + link back to the list + + +Some Questions to Ponder +------------------------ + +.. rst-class:: build + +When viewing our first wsgi app, do we see the name of the wsgi application +script anywhere in the URL? + +.. rst-class:: build + +In our wsgi application script, how many applications did we actually have? + +.. rst-class:: build + +How are we going to serve different types of information out of a single +application? + + +Dispatch +-------- + +We have to write an app that will map our incoming request path to some code +that can handle that request. + +.. rst-class:: build + +This process is called ``dispatch``. There are many possible approaches + +.. rst-class:: build + +Let's begin by designing this piece of it. + +.. rst-class:: build + +Open ``bookapp.py`` from the ``wsgi`` folder. We'll do our work here. + + +PATH +---- + +The wsgi environment gives us access to *PATH_INFO*, which maps to the URI the +user requested when they loaded the page. + +.. rst-class:: build + +We can design the URLs that our app will use to assist us in routing. + +.. rst-class:: build + +Let's declare that any request for ``/`` will map to the list page + +.. container:: incremental + + We can also say that the URL for a book will look like this:: + + http://localhost:8080/book/ + +Writing resolve_path +-------------------- + +Let's write a function, called ``resolve_path`` in our application file. + +.. rst-class:: build + +* It should take the *PATH_INFO* value from environ as an argument. +* It should return the function that will be called. +* It should also return any arguments needed to call that function. +* This implies of course that the arguments should be part of the PATH + + +My Solution +----------- + +.. code-block:: python + + def resolve_path(path): + urls = [(r'^$', books), + (r'^book/(id[\d]+)$', book)] + matchpath = path.lstrip('/') + for regexp, func in urls: + match = re.match(regexp, matchpath) + if match is None: + continue + args = match.groups([]) + return func, args + # we get here if no url matches + raise NameError + + +Application Updates +------------------- + +We need to hook our new router into the application. + +.. rst-class:: build + +* The path should be extracted from ``environ``. +* The router should be used to get a function and arguments +* The body to return should come from calling that function with those + arguments +* If an error is raised by calling the function, an appropriate response + should be returned +* If the router raises a NameError, the application should return a 404 + response + + +My Solution +----------- + +.. code-block:: python + + def application(environ, start_response): + headers = [("Content-type", "text/html")] + try: + path = environ.get('PATH_INFO', None) + if path is None: + raise NameError + func, args = resolve_path(path) + body = func(*args) + status = "200 OK" + except NameError: + status = "404 Not Found" + body = "

    AQ|ep)0AjXJ3NjOuBslw=bC(}V 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