From b1958b2fa9fbe2116a246edeb6ee3017636c015a Mon Sep 17 00:00:00 2001 From: Addy Osmani Date: Fri, 28 Nov 2014 17:35:24 +0000 Subject: [PATCH] Push latest release --- backbone-fundamentals.epub | Bin 5151379 -> 5151442 bytes backbone-fundamentals.md | 53 ++++++++++++++++++----------------- backbone-fundamentals.rtf | 55 +++++++++++++++++++------------------ index.html | 55 +++++++++++++++++++------------------ 4 files changed, 86 insertions(+), 77 deletions(-) diff --git a/backbone-fundamentals.epub b/backbone-fundamentals.epub index 27b8d3f83b39c6f3833cc8e7ed00c2555c5d64f7..df8ce701ec4242d1f015e98c5195dc6ac6955d85 100644 GIT binary patch delta 63129 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 delta 62801 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 YQoWb|PPX<2T#*7KhMNooLT;S@1J57ervLx| diff --git a/backbone-fundamentals.md b/backbone-fundamentals.md index bd893034..0f6ba628 100644 --- a/backbone-fundamentals.md +++ b/backbone-fundamentals.md @@ -152,39 +152,39 @@ Topics will include MVC theory and how to build applications using Backbone's Mo Here is a peek at what you will be learning in each chapter: -Chapter 2, Fundamentals traces the history of the MVC design pattern and introduces how it is implemented by Backbone.js and other JavaScript frameworks. +Chapter 2, Fundamentals, traces the history of the MVC design pattern and introduces how it is implemented by Backbone.js and other JavaScript frameworks. -Chapter 3, Backbone Basics covers the major features of the Backbone.js core and the technologies and techniques you will need to know in order to apply it. +Chapter 3, Backbone Basics, covers the major features of the Backbone.js core and the technologies and techniques you will need to know in order to apply it. -Chapter 4, Exercise 1: Todos - Your First Backbone.js App takes you step-by-step through development of a simple client-side Todo List application. +Chapter 4, Exercise 1: Todos - Your First Backbone.js App, takes you step-by-step through development of a simple client-side Todo List application. -Chapter 5, Exercise 2: Book Library - Your First RESTful Backbone.js App walks you through development of a Book Library application which persists its model to a server using a REST API. +Chapter 5, Exercise 2: Book Library - Your First RESTful Backbone.js App, walks you through development of a Book Library application which persists its model to a server using a REST API. -Chapter 6, Backbone Extensions describes Backbone.Marionette and Thorax, two extension frameworks which add features to Backbone.js that are useful for developing large-scale applications. +Chapter 6, Backbone Extensions, describes Backbone.Marionette and Thorax, two extension frameworks which add features to Backbone.js that are useful for developing large-scale applications. -Chapter 7, Common Problems and Solutions reviews common issues you may encounter when using Backbone.js and ways of addressing them. +Chapter 7, Common Problems and Solutions, reviews common issues you may encounter when using Backbone.js and ways of addressing them. -Chapter 8, Modular Development looks at how AMD modules and RequireJS can be used to modularize your code. +Chapter 8, Modular Development, looks at how AMD modules and RequireJS can be used to modularize your code. -Chapter 9, Exercise 3: Todos - Your First Modular Backbone + RequireJS App takes you through rewriting the app created in Exercise 1 to be more modular with the help of RequireJS. +Chapter 9, Exercise 3: Todos - Your First Modular Backbone + RequireJS App, takes you through rewriting the app created in Exercise 1 to be more modular with the help of RequireJS. -Chapter 10, Paginating Backbone Requests & Collections walks through how to use the Backbone.Paginator plugin to paginate data for your Collections. +Chapter 10, Paginating Backbone Requests & Collections, walks through how to use the Backbone.Paginator plugin to paginate data for your Collections. -Chapter 11, Backbone Boilerplate And Grunt BBB introduces powerful tools you can use to bootstrap a new Backbone.js application with boilerplate code. +Chapter 11, Backbone Boilerplate And Grunt BBB, introduces powerful tools you can use to bootstrap a new Backbone.js application with boilerplate code. -Chapter 12, Mobile Applications addresses the issues that arise when using Backbone with jQuery Mobile. +Chapter 12, Mobile Applications, addresses the issues that arise when using Backbone with jQuery Mobile. -Chapter 13, Jasmine covers how to unit test Backbone code using the Jasmine test framework. +Chapter 13, Jasmine, covers how to unit test Backbone code using the Jasmine test framework. -Chapter 14, QUnit discusses how to use QUnit for unit testing. +Chapter 14, QUnit, discusses how to use QUnit for unit testing. -Chapter 15, SinonJS discusses how to use SinonJS for unit testing your Backbone apps. +Chapter 15, SinonJS, discusses how to use SinonJS for unit testing your Backbone apps. -Chapter 16, Resources provides references to additional Backbone-related resources. +Chapter 16, Resources, provides references to additional Backbone-related resources. -Chapter 17, Conclusions wraps up our tour through the world of Backbone.js development. +Chapter 17, Conclusions, wraps up our tour through the world of Backbone.js development. -Chapter 18, Appendix returns to our design pattern discussion by contrasting MVC with the Model-View-Presenter (MVP) pattern and examines how Backbone.js relates to both. A walkthrough of writing a Backbone-like library from scratch and other topics are also covered. +Chapter 18, Appendix, returns to our design pattern discussion by contrasting MVC with the Model-View-Presenter (MVP) pattern and examines how Backbone.js relates to both. A walkthrough of writing a Backbone-like library from scratch and other topics are also covered. # Fundamentals @@ -216,7 +216,7 @@ Martin Fowler has done an excellent job of writing about the [origins](http://ma ### MVC Applied To The Web -The web heavily relies on the HTTP protocol, which is stateless. This means that there is not a constantly open connection between the browser and server; each request instantiates a new communication channel between the two. Once the request initiator (e.g. a browser) gets a response the connection is closed. This fact creates a completely different context when compared to the one of the operating systems on which many of the original MVC ideas were developed. The MVC implementation has to conform to the web context. +The web heavily relies on the HTTP protocol, which is stateless. This means that there is not a constantly open connection between the browser and server; each request instantiates a new communication channel between the two. Once the request initiator (e.g. a browser) gets a response the connection is closed. This fact creates a completely different context when compared to one of the operating systems on which many of the original MVC ideas were developed. The MVC implementation has to conform to the web context. An example of a server-side web application framework which tries to apply MVC to the web context is [Ruby On Rails](http://guides.rubyonrails.org/). @@ -404,7 +404,7 @@ URL routing, DOM events (e.g., mouse clicks), and Model events (e.g., attribute #### Models -* The built-in capabilities of Models vary across frameworks; however, it's common for them to support validation of attributes, where attributes represent the properties of the Model, such as a Model identifier. +* The built-in capabilities of Models vary across frameworks. However, it's common for them to support validation of attributes, where attributes represent the properties of the Model, such as a Model identifier. * When using Models in real-world applications we generally also need a way of persisting Models. Persistence allows us to edit and update Models with the knowledge that their most recent states will be saved somewhere, for example in a web browser's localStorage data-store or synchronized with a database. @@ -1272,7 +1272,7 @@ var Todo = Backbone.Model.extend({ }); var TodosCollection = Backbone.Collection.extend({ - model: Todo, + model: Todo }); var a = new Todo({ title: 'Go to Jamaica.'}), @@ -2689,7 +2689,7 @@ Note: If you want to follow along, create a directory structure as demonstrated 2. Download jQuery, Underscore, Backbone, and Backbone LocalStorage from their respective web sites and place them under js/lib 3. Create the directories js/models, js/collections, js/views, and js/routers -You will also need [base.css](https://raw2.github.com/tastejs/todomvc/gh-pages/architecture-examples/backbone/bower_components/todomvc-common/base.css) and [bg.png](https://raw2.github.com/tastejs/todomvc/gh-pages/architecture-examples/backbone/bower_components/todomvc-common/bg.png), which should live in an assets directory. And remember that you can see a demo of the final application at [TodoMVC.com](http://todomvc.com). +You will also need [base.css](https://raw.githubusercontent.com/tastejs/todomvc/gh-pages/examples/backbone/bower_components/todomvc-common/base.css) and [bg.png](https://raw.githubusercontent.com/tastejs/todomvc/gh-pages/examples/backbone/bower_components/todomvc-common/bg.png), which should live in an assets directory. And remember that you can see a demo of the final application at [TodoMVC.com](http://todomvc.com). We will be creating the application JavaScript files during the tutorial. Don't worry about the two 'text/template' script elements - we will replace those soon! @@ -3364,7 +3364,7 @@ Now let's look at what happens when we click on a todo's destroy button: That's all there is to it! -If you want to see an example of those, see the [complete source](https://github.com/tastejs/todomvc/tree/gh-pages/architecture-examples/backbone). +If you want to see an example of those, see the [complete source](https://github.com/tastejs/todomvc/tree/gh-pages/examples/backbone). ## Todo routing @@ -3821,7 +3821,8 @@ Create a file called `package.json` in the root of your project. It should look "dependencies": { "express": "~3.1.0", "path": "~0.4.9", - "mongoose": "~3.5.5" + "mongoose": "~3.5.5", + "body-parser": "~1.9.1" } } @@ -3840,6 +3841,7 @@ Your folder structure should look something like this: ``` node_modules/ .bin/ + body-parser/ express/ mongoose/ path/ @@ -3859,6 +3861,7 @@ Create a file named server.js in the project root containing the following code: // Module dependencies. var application_root = __dirname, express = require( 'express' ), //Web framework + bodyParser = require('body-parser'), //Parser for reading request body path = require( 'path' ), //Utilities for dealing with file paths mongoose = require( 'mongoose' ); //MongoDB integration @@ -3867,6 +3870,7 @@ var app = express(); //Where to serve static content app.use( express.static( path.join( application_root, 'site') ) ); +app.use(bodyParser()); //Start server var port = 4711; @@ -3964,8 +3968,7 @@ app.post( '/api/books', function( request, response ) { return book.save( function( err ) { if( !err ) { console.log( 'created' ); - - return response.send( book ); + return response.send( book ); } else { console.log( err ); } diff --git a/backbone-fundamentals.rtf b/backbone-fundamentals.rtf index 331e0ab5..05c2edcd 100644 --- a/backbone-fundamentals.rtf +++ b/backbone-fundamentals.rtf @@ -177,23 +177,23 @@ GitHub site . It won\u8217't take long and you\u8217'll be helping other developers avoid the problems you ran into.\par} {\pard \ql \f0 \sa180 \li0 \fi0 Topics will include MVC theory and how to build applications using Backbone\u8217's Models, Views, Collections, and Routers. I\u8217'll also be taking you through advanced topics like modular development with Backbone.js and AMD (via RequireJS), solutions to common problems like nested views, how to solve routing problems with Backbone and jQuery Mobile, and much more.\par} {\pard \ql \f0 \sa180 \li0 \fi0 Here is a peek at what you will be learning in each chapter:\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 2, Fundamentals traces the history of the MVC design pattern and introduces how it is implemented by Backbone.js and other JavaScript frameworks.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 3, Backbone Basics covers the major features of the Backbone.js core and the technologies and techniques you will need to know in order to apply it.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 4, Exercise 1: Todos - Your First Backbone.js App takes you step-by-step through development of a simple client-side Todo List application.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 5, Exercise 2: Book Library - Your First RESTful Backbone.js App walks you through development of a Book Library application which persists its model to a server using a REST API.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 6, Backbone Extensions describes Backbone.Marionette and Thorax, two extension frameworks which add features to Backbone.js that are useful for developing large-scale applications.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 7, Common Problems and Solutions reviews common issues you may encounter when using Backbone.js and ways of addressing them.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 8, Modular Development looks at how AMD modules and RequireJS can be used to modularize your code.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 9, Exercise 3: Todos - Your First Modular Backbone + RequireJS App takes you through rewriting the app created in Exercise 1 to be more modular with the help of RequireJS.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 10, Paginating Backbone Requests & Collections walks through how to use the Backbone.Paginator plugin to paginate data for your Collections.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 11, Backbone Boilerplate And Grunt BBB introduces powerful tools you can use to bootstrap a new Backbone.js application with boilerplate code.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 12, Mobile Applications addresses the issues that arise when using Backbone with jQuery Mobile.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 13, Jasmine covers how to unit test Backbone code using the Jasmine test framework.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 14, QUnit discusses how to use QUnit for unit testing.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 15, SinonJS discusses how to use SinonJS for unit testing your Backbone apps.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 16, Resources provides references to additional Backbone-related resources.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 17, Conclusions wraps up our tour through the world of Backbone.js development.\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 18, Appendix returns to our design pattern discussion by contrasting MVC with the Model-View-Presenter (MVP) pattern and examines how Backbone.js relates to both. A walkthrough of writing a Backbone-like library from scratch and other topics are also covered.\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 2, Fundamentals, traces the history of the MVC design pattern and introduces how it is implemented by Backbone.js and other JavaScript frameworks.\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 3, Backbone Basics, covers the major features of the Backbone.js core and the technologies and techniques you will need to know in order to apply it.\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 4, Exercise 1: Todos - Your First Backbone.js App, takes you step-by-step through development of a simple client-side Todo List application.\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 5, Exercise 2: Book Library - Your First RESTful Backbone.js App, walks you through development of a Book Library application which persists its model to a server using a REST API.\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 6, Backbone Extensions, describes Backbone.Marionette and Thorax, two extension frameworks which add features to Backbone.js that are useful for developing large-scale applications.\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 7, Common Problems and Solutions, reviews common issues you may encounter when using Backbone.js and ways of addressing them.\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 8, Modular Development, looks at how AMD modules and RequireJS can be used to modularize your code.\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 9, Exercise 3: Todos - Your First Modular Backbone + RequireJS App, takes you through rewriting the app created in Exercise 1 to be more modular with the help of RequireJS.\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 10, Paginating Backbone Requests & Collections, walks through how to use the Backbone.Paginator plugin to paginate data for your Collections.\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 11, Backbone Boilerplate And Grunt BBB, introduces powerful tools you can use to bootstrap a new Backbone.js application with boilerplate code.\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 12, Mobile Applications, addresses the issues that arise when using Backbone with jQuery Mobile.\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 13, Jasmine, covers how to unit test Backbone code using the Jasmine test framework.\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 14, QUnit, discusses how to use QUnit for unit testing.\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 15, SinonJS, discusses how to use SinonJS for unit testing your Backbone apps.\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 16, Resources, provides references to additional Backbone-related resources.\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 17, Conclusions, wraps up our tour through the world of Backbone.js development.\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Chapter 18, Appendix, returns to our design pattern discussion by contrasting MVC with the Model-View-Presenter (MVP) pattern and examines how Backbone.js relates to both. A walkthrough of writing a Backbone-like library from scratch and other topics are also covered.\par} {\pard \ql \f0 \sa180 \li0 \fi0 \b \fs36 Fundamentals\par} {\pard \ql \f0 \sa180 \li0 \fi0 Design patterns are proven solutions to common development problems that can help us improve the organization and structure of our applications. By using patterns, we benefit from the collective experience of skilled developers who have repeatedly solved similar problems.\par} {\pard \ql \f0 \sa180 \li0 \fi0 Historically, developers creating desktop and server-class applications have had a wealth of design patterns available for them to lean on, but it\u8217's only been in the past few years that such patterns have been applied to client-side development.\par} @@ -222,7 +222,7 @@ origins }}} of MVC over the years and if you are interested in further historical information about Smalltalk-80\u8217's MVC, I recommend reading his work.\par} {\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 MVC Applied To The Web\par} -{\pard \ql \f0 \sa180 \li0 \fi0 The web heavily relies on the HTTP protocol, which is stateless. This means that there is not a constantly open connection between the browser and server; each request instantiates a new communication channel between the two. Once the request initiator (e.g.\u160?a browser) gets a response the connection is closed. This fact creates a completely different context when compared to the one of the operating systems on which many of the original MVC ideas were developed. The MVC implementation has to conform to the web context.\par} +{\pard \ql \f0 \sa180 \li0 \fi0 The web heavily relies on the HTTP protocol, which is stateless. This means that there is not a constantly open connection between the browser and server; each request instantiates a new communication channel between the two. Once the request initiator (e.g.\u160?a browser) gets a response the connection is closed. This fact creates a completely different context when compared to one of the operating systems on which many of the original MVC ideas were developed. The MVC implementation has to conform to the web context.\par} {\pard \ql \f0 \sa180 \li0 \fi0 An example of a server-side web application framework which tries to apply MVC to the web context is {\field{\*\fldinst{HYPERLINK "http://guides.rubyonrails.org/"}}{\fldrslt{\ul Ruby On Rails }}} @@ -377,7 +377,7 @@ var todoView = new TodoView(\{model: myTodo\});\par} {\pard \ql \f0 \sa180 \li0 \fi0 {\pict\pngblip 89504e470d0a1a0a0000000d49484452000003e7000001620806000000941ca9fe0000000473424954080808087c086488000000097048597300000b1200000b1201d2dd7efc0000001c74455874536f6674776172650041646f62652046697265776f726b7320435336e8bcb28c00000015744558744372656174696f6e2054696d650033312f332f3133614c947a0000200049444154789cecdd7d7c9b777defff77eeb85b6389524a1717a4a45d1b7707aca4ccded97a90ecba1d834364bb9cad405ad9a1edd680633bb44dda94f8065212bac5760c8171135b49b8d9686d2bc0d8a8634b8cf3d8ec431bf9c7394bda1f6de4d2047e0768647b034a9be8f7877c5d9164c9967c77f9e6f57c3cfc68235d371fc9d7f7f2f5f9deae88c56231010000000000cbacb43a000000000000963b927300000000002c46720e0000000080c548ce0100000000b018c93900000000001623390700000000c06224e70000000000588ce41c00000000008b919c03000000006031927300000000002c46720e0000000080c548ce0100000000b018c93900000000001623390700000000c06224e70000000000588ce41c00000000008b919c03000000006031927300000000002c46720e0000000080c548ce0100000000b018c93900000000001623390700000000c06224e70000000000588ce41c8bda2f7ef10b7ded6b5fb33a0c00000000981192732c6a3ffbd9cf74f050bbeeafa9d12f7ff94babc30100000080692139c7a2f7fb6fbf56bf7bddeb55b373a77ef39bdf581d0e00000000e48ce41c8bde9ad7bd4ebb1f7f5c57bec3a13f71bb75e6cc19ab4302000000809c909c63c9a86968d0bdbb77ebc1471fd50f7ef843abc30100000080ac919c63c958b56a956e2bafd04776d4aaeaa31fd5d1e3c7ad0e0900000000b2b2daea0080d976f32db7e8cbdff9aef6d5d7e957172ea8bea6c6ea909694152b5668c58a15568701ccbb582ca6582c667518000060892239c792f48eebae53c3e73eaf838f3caca1a1211dfcec6775e595575a1dd692b062c50a3dfbda45abc300e6dd8dab57591d02000058c2e8d68e256bdd3bdea1bf39fe35bde1ad57ebaeea6afde77ffea7d52101000000405a24e758f26a1b1b759dcba5f75754e8d4a9535687030000000013909c63c95bbd668d6a1a1af597f7dfaf1d0f3ca0debe3eab4302000000802424e75836cabce5fae4e73eafbb7d3efdc3134f581d0e000000009848ceb1acacbff1461d3dd9a7634f3ca1864f7d4afff11fff6175480000000040728ee5c771fdf57af8608b86ce9cd1b6fbeeb33a1c000000002039c7f2f4d66baed1e3c78eebf7ae7e9bb65456eadcb97356870400000060192339c7b2f689c71ed3e65b6fd5f6fa9dfaf18f7f6c753800000000962992732c6baf7fc31bf491fbb7eb7d5b3fa2db6ebf5ddffece77ac0e09000000c032b4daea008085a0f4bf7f40f9df73e8f39f6ad6c8d898b67ee8435687040000006019a1e51c1877e3bbdea51d4dcdfafa934feaa1871fd6af7ffd6bab4302000000b04c909c0309aebfe926edeff4ebb9175f54f5bdf791a003000000981724e7408a37bee94d6afebb2fe9cd6f7fbbfee2235bf5939ffcc4ea90000000002c7124e7401a6f7cd39bf489c71ed39fbcff7ddaf6577fa5e79e7bceea90000000002c6124e7c024fec7b68feaa3bb77cb5d52a2c0b7bf6d75380000000096289273600a7f726b99bef28fdfd3578e1d53dbe73ea7dffdee775687040000006089612935497ebf5fc11ffed0ea30300dbffecfffd4c58b17e7fc3c37bcf39ddaf5b707f590cfa7b367cfaaf56fff76cecf0900000060f958118bc562560761b5c71e7b4ccfffea65dde6f55a1d0aa6e19a6baf55bed3392fe77ae5b7bf55d3c73fae55affe4ead8f3fae6baeb9665ecebb90ac5cb952cfbe36f71522c04273e3ea55ba74e992d561000080258a9673496bd6acd15bae7eab6ebee516ab43c102f7fa37bc419f3c74485fffc2616dafafd7673ff5295d7ffdf5568705000000609163cc3990a337bee94dfae8271e504965a56e71bb150e87ad0e09000000c02247720e4cd37beff8a03efda52fe9c14f7e525d3d3d5687030000006011a35b3b3003ee3f7f9faefefd756afde4a37a261c56c39e3d5ab3668dd56101000000586468390766a8c0e552eb37ff5e83e1b01e6d68b03a1c000000008b10c939300bdef87bbfa7c7bef2559dfdfffeafbc1ffca05e7cf145ab4302000000b088909c03b3c476e595daf7e52fabf03defd15f6eddaa9ffdec67568704000000609120390766d95d1fafd14776ecd07b4a4af4831ffed0ea70000000002c024c0807cc813fabbc43575dfd36ed6f6d552412d187efbc53ab5753dc00000000a447b600cc919b6fb9456fbeea2a3d70f75dfac9f3cfab99c9e2000000006440b776600e6dd8b8519ddf7f4a675efca9763ef490464747ad0e09000000c00244720eccb13cbb5d0f1d38a0918b97f4d73535faf9cf7f6e75480000000016189273601ed8aebc52bb1f7f5ceb5d2efd37b75bfffb7fff6fab4302000000b080909c03f3e8ee9a1daaddb74f8f3435a93f14b23a1c000000000b0413c24dc34030a8c15050456e8f8a3d9e8cdbb537354a926a1a1acd7db255e4f6e4b4fd54e7586bb7abd8ed5181cb95d5f1a68a37d7e3216ee5ca95fab3ca3bf4e6b75ca5c6cf7c46fffe7ffe8f3eb67dbbd5612147d9948f8242d7a4f7070000002011c9f9340c86826a6f6e56cd5e4d9e9c37374b8a27cec63ed9aad9abdcb6cff21c1b0b0b75bcaf5f7976fba4db651b6f91dbadc35ddd531e6fb13b1789685f7dbd7cb5b5b3927015b9dd5a7fe38dfaeb2d1f50746c4c7b76ed9a79909837d9968f6ccbdb6c1a8d46b5afbe5e953e1f95030000008b08c9f93ca9f455a9c8ed497a6ddfce7a9d191ad223070faaa030b905fa5aa733a7ed1355dced53a5cf97f4dad84854879a9a74666848db2b2b74bcaf3fabb8d31d4b924e0f85d5ded4a4c15048feb656d534346675bcc5aacbdfa9de1301f96a6b67ed986fbde61a7df1c4b7f5f8430feaeeea6d3af8f86775d55557cddaf161bd5ccbdb4cf5067ab4abba5a63232369cb2d000000162e92f37992ef742adfe94c7acd684dcbd4fd35d7ed0dd73a1d69df2f727bf4eeb75ca9c15048a3d16856ad79998e55ecf1a8a0d0a5bb6e2d55675bdb924fcee7ca5bafb9469f3d7a4cad7bf7ea8ebffc4b854e9eb43a24e4e8d8c9be0965642018d4ae6dd53a3f3cacc15048e7229109e5792e9c0e8735363232e7e7010000c0ec23395f46f2ec7615b9dd1a0c85743a1c9e71975763ff74c9c04030a82ebf5fe78623cab3d955e471abd25735a14260341a8db74a070292a44a9f4f95be2ab537352adfe954a5afca3cde6028a84a5fd584242775db5c6348dc4e92cabcdea4edbafc9d1a189fbcadcbefd7602838eb951175cdcdea686dd10d1b37eaf8d1a32a2a2a9ad5e3637e157b3cbac3e733bbbebf94929c9f8b44d4d9d6a6d343614952bec399b61b7ae2d8f6d46bdf98d3c2b8f613af53e9f2b59aba5f6ab9282bf7a62d3b89e7358e5dec765311070000304748ce9799d16874d68e35100c4a92d6391c49afefaaae56f7517fd26bbd2702eaf2fb93c6df8e46a3da5a5aa2334343e676462b637b73b38adc6e336930c6f816b93d1393f3946d7389a137d0a3ed959549db0d86426a6f6ad289674e29dfe91c4f72e2498f71ccb94850aaebeaf5077ff8876adcbf5f357ff5577aefedb76bc58a15b37e1ecc8fd3e1cbd77562855097bf53bbb76d4bd93aa4eea37e55dcedd3818e0ef3d5c4b1eda9d7fee5d7dde309f4e5eb54ba7cad26ee97a95c74b6b525958bc4f30e8442e67147a35192730000803942723e0303a19034de7ab5180c04833a3334a4b5365bd6ade62f4586cd243c516f20a02e7fa724e9d19616f3f5f6a646751ff5ab6c8b57350d0d2a70b9341a8dcadfd6aaf6e6e6a4f1b7ede363e0cbb678b5a7a545f94ea73adb5af5d8ce9d33fa9cb9c4f0e9fa7aadb5d974b8ab5bc51e8f399956f751bf3adbdab4a7a5457b0eb6a8b3ad4ddd47fd538ef79fa95b6ebb5d57fffe3a6d7bdf9faba9a141f7dd7bef9c9d0bb3c368a14ef4542060563aad7338cc550d7a033d6662beb1b0503b1a1ab4d66697bfad4dbd2702ea3eea579eddae3d09652a5bc618732391aeb8dba76b9d0e5d3b9e981be54292cab678e5abad3593f0c9c6c62726fc7379ed0300002c7724e7333098d0a2b490a4ab34381d1e52ef8978d7f1aa1c2635eb3eea9fd0d26658e770e8404787cabce5e66b4ffafdf119dcbbbbcdd7f2ec76b3b5adbdb959a7c36115b85ceaf2776a9dc391b46d556d9dc6a2d19c66aa4f954b0ce787879392a73cbb5d073a3a74add3617eae02974bd73ae3bd03e66379ac1bfecb7fd1b7fef5dff4d9871ed44be7cfeba14f7c42575c71c59c9e13d397a97c48d25a9b4d5fe8ba7c1d7ebabede7c3db1a5bad8e3d1d6d292f8048b87da54555b9bf318f54a5f95ce4522e63d29b59bfc93fe789c1b0b0bcdb261bcdfdedc9c716cfc3a87435febebd75abb5de722919c6202000040f648ce6720d34ce686bb6e2d9dc7682ecb5469b0d66653556d6d4edd528bdc6e15bbdde6bf9ff4fb757e7858655bbc49c9af149f8ceafcf0b0ae753acdf1b0895e8a0c4b9206c65b19e3334a574dd8aed25735ede43c97180a5c2e730c7ec986f52af396abd8e35699b7dcf2aebb6fcbcf57dda73ead47eeb947effac33fd4073ff8414be3416ed6da6caa6968489abbe05c24a2f3c3f1ebafcc5b3e61ee834a9fcf2cb703a1a02a9d55b3168f512ea4780553626f98b50971a43bef1d3e9f99b0e7b96839070000982b24e73390692673aba5ab34c8b3dbcdd6e15ca44e0055d3d0a8ada525ea3d11d0aeeaeaa4f1b1c678f6a97a148c45a3e6b67976db84f76732ab752e3148d281231ddab5ad5a83a150422f816d495dedad70fec517f5c83df7e84f8bfe88c47c8133666b3f178998d7d2d8c888bafcfea4caa797125a9d8d9e1889f21d4ef3ff67bb853a71ae89c97ac3a43b6fea928e000000981b24e74bd05c571a1ceeea56c986f5ea3eead76de5dea46eedd2d43d0aae753a931295b9904d0c52bc22e0785fbf4e87c3eaf2fb35108a8fcbef3d11d0bf0f85157ce1ec9cc699ceff3338a8af3cfe596dfd1f1f64ccf92292ef74ea7057b739c9e199a121edaeae9ed0c3c46aa9bd6192dff3cc6f3000000030919c2367c6b8eced9595da555dadfe173c492df3a787c22af6744cd86f341ad55834aa7ca7d3ec4afb542030a10bf9e97038eb58525bfa728961341a556fa047f90ea78a3d1eed19df77341ad5eeea6af59e086820189cd7de11bd811ef95b5ad4f8e8a37aefedb7cfdb79313bf2ec761defeb57c986f51a1b1951ef89807a033de343263ce676e9ae7b63394169ea2439d796f5c45e33f90e67d2b9cf45227a29125990bd80000000969395560780c5a9cc5bae22b75b6323236a6f6a9274791df5334343e64cee89b65756a8e4ba0d1a08069567b7ab6c8b37edb6c6f112ad35973e0b24bd7e2865db5c6290a4dddbb669d7b6eaa46ebf7976bb79bed471c173e9898e23fac2a73ea5a35ff90a89f92266545e193e5d5f6f5e5f1577c77b73a45e9ff19e1bf17f6f2c2c3413e5c4f1e089d77eea759fced848f2355d34de5ade7dd46f56808d46a3fa486989eebab55437ac5a39ab4b2d020000203724e798b60347e20988ff509bf9b0bfe7608bd6da6cdabd6d9bb69696a8bda951fbeaebe5d9b05e83a150bc4bed78e251d3d0606ebbabba5aed4d8df26c586f4e1897e8b6f1aef3fe436de6b65b4b4b747a68622b7bb631e4d9edaab8dba7f3c3c3dab27993da9b1acde3761f8dcff89e3a4e7fdfcefab413cdcdc4d8c8881edbb95303fff44feafed6b774c30d37cceaf131ffcabce52adbe295249d1f1e96bfad5592b4a7257e6d4af18aa12d9b37696b6989bc376fd6d8c888d6da6c66b9922e5ff752fcdadfb279933c1bd6ab37d093f6bc897324ecaaae36af7f295e2e0cde9b376b6b6989b66cde644e1457b377efbc56460100002019c939a62ddfe954cddebd92e249ab14ef3e7bbcafdf9c05bdbdb959fe436d3a3f3c2cdf8e5a1d4e5856cad8769dc3a1eea37eb537376b2c1a4d6a754c3cd7fe2347b4d66633b71d8d46931299d4e36613c39e961633416f6f6e3697942a72bb93b6abf45569adcda6334343e6526cb3e553351fd7eb5efd9dbe71f4a8aebbeeba593b2eacb5bfa3c34cc48d6b26cf6e57ff0b67935ad08d890b8bdc6e1defeb4fee829e70dd1bdb1b5de7d3317ab448f14a9fa435ca5d2e1d3bd9a7758ef8647483a190ce0f0fc76796dfbbd7f2150a00000096bb15b1582c667510567bfcf1c7f58b4b9774ef830f591dca92628c659534e578d6d3e1b046a35173bb1b56ad3493955446b7f86c669fcf3686d168d44cb80b5cae8c2d884677f8d9189ffbc299336ad8be5db7badfa3863d7bf4bad7bd6ec6c79c0f2b57aed4b3af5db43a8c25c1b89eae753a275d19c0b83eb3bdee8df29469fb5cca262ebb71f52a5dba74c9ea300000c01245722e92f38568b2e47c2938f5afffaa8e837fabbff8c00774d7d6ad5abd7af1cccd48728ee58ae41c0000cca5c59311004bc40ffef99f547fe79dface77bfabf7dc728bd5e100000000580048ce8179f2daabafeac9ce0efdaf9327353830a08d1b375a1d12000000800582e41c0bd273179756d7d1dfbdf28a3ef3894f68e467e7d5ded222e724e38b010000002c3f24e7c01c1b79f9653d72cf47f5f6b7bd4ddfeeee9e7a0700000000cb0e4ba90173e8853367d4b87dbb6e292ad2e75a5bad0e07000000c00245cb393047068241b53736a876fb767df8ce3bad0e07000000c00246720ecc81ef7cf31bfafae73ea7038f3da652d69106000000300592736016bdf2dbdfaaa3e5a07e120ecbff95afe8a69b6eb23a24000000008b00c939308b3ef3894fe8c24b2fe968c7115d75d55556870300000060916042386016bcf8fcf3faab2d1fd0b56fb6eb1fbef17512730000000039a1e51c98a1f32fbea8439ffca42adeff7efdf53df768cd9a355687040000006091a1e51c98817febefd3fbdff54efda5778b6aeebf9fc41c000000c0b4d0720e4cc3c5d75ed377fefe9bfac18913fa4130a8cd9b375b1d1200000080458ce41c9886b6c6469dfe5f83faca17bea0ebafbfdeea70000000002c7224e7922e5dbaa49fbe705683a190d5a12047976297b4e1861b75f5ba75f372bed1685407f7ec51f4fc39059f7a6a5ece0900000060e95b118bc562560761b5e79f7f5e1fbdf75ebdfef5afb73a14e4e8d7bffeb52ead5aa5cede93737eae7391885a1edda3ebf2f3b577cf1ed9edf6393fe742b472e54a3dfbda45abc300e6dd8dab57e9d2a54b568701000096285ace255d77dd750af6f5591d06a6616868481fdbb973cecf1379ee393db075ab767cfc63fa6855d59c9f0f000000c0f242720e4ce15fbeffcf3adcdcac8647f7a8b2bcdcea70000000002c4124e74006175f7b4d47db0f69e0e4497deee041fdf11fffb1d5210100000058a248ce810cbef4d903fa515f9f9ef8e63775f5d5575b1d0e00000080256ca5d501000bcd2f7efe73edb9e71efde617bfd0937ffff724e600000000e61cc93990e0c22f7fa94fd57c5c7f706dbe1edfb74f6f7deb5bad0e09000000c03240720e8cfb3fcf3ca32d9b5c7a7f5999f63537eb8a2baeb03a2400000000cb0463ce0149ffd6dfa7bfffc21774fcd8319595965a1d0e000000806586e41ccbdedfedff8cbe7decb8bef1b5e3dabc79b3d5e100000000588648ceb16cfdee9557d4ded4a4f3cf3dab534fff486f7ad39bac0e09000000c03245728e65e9e55ffc428fefdaa52bd6acd6912f7d89c41c00000080a598100ecbce2f7efe73fdd5960fe8ddffe50fd5f9e52febaaabaeb23a2400000000cb1cc9399695c150480f6efd88eef5f9b4fb8107ac0e070000000024d1ad1dcbc8b7bff1757def1bdfd0a7f6ee55a9c763753800000000602239c7b2f0b5c39fd7d73ff739fde377bea3ebafbfdeea70000000002009c93996b4b191117daeb9592b7ffb1bf5f5f6eada6bafb53a24000000009880e41c4bd66f7ff31b357d6cbbde66b7eb6f0e1c505e5e9ed52101000000405a4c088725e9b91fff581f76bf477f78dd75fad2e1c324e60000000016345aceb1e43cfdc31faaebc8113dfad043fae01d77581d0e000000004c89e41c4b4ae06bc7f5c54f7f5a47befa55bde7965bac0e0700000000b242728e25e1d5dffd4ec73ed7aea78341fdf33ffea3aebbee3aab435ab262b1986e5cbdcaea308079178bc5ac0e0100002c6124e758f42e5ebca8e61d3bf4bbe8057de5f061bde31defb03aa4258d0405000000987d4c0887456dcd9a353afbecb35a7ff5d5eafa877f203107000000b028ad88d10c8645eebbdffdae6ebffd76ad59b3c6ea5000000000605a48ce0100000000b018ddda0100000000b018c93900000000001623390700000000c06224e70000000000588ce41c00000000008badb63a0000407acf3fffbc9e78e209ad5c99b91ef5d5575f557e7ebe7c3edf3c4606000080d9c6526a00b040794a4bf5fb7f7083debe617dc66d7ef57f7fa14ba323eaf8f297e73132000000cc365ace0160817afdeb5fafff7ee79d2a72bb336ef3f40f7fa87f3e76741ea3020000c05c60cc3900000000001623390700000000c06224e70000000000588ce41c00000000008b919c03000000006031927300000000002c46720e000bd46b172fead2a58b5687010000807940720e000bd4effddeef69d5aad55687010000807940720e0000000080c548ce0100000000b018c93900000000001623390700000000c06224e700b040ad5ebd5aab56adb23a0c000000cc0392730058a0fef33ffe43afbdf69ad561000000601e909c03000000006031927300000000002c46720e0000000080c548ce0100000000b018c9390000000000165b6d7500403682c1a082c160daf7ec76bb3c1e8f5c2ed7a4c78846a3eae9e9514f4f8fa2d1a824c9e3f1a8bcbc3ce3be89e7b5dbedaaababcb78fcc6c646f3ffabaaaae4743a278dc70a8d8d8d723a9daaaaaab23a1460419a491931ee170bb1fc53f60100580462c022d0d0d0109334e98fdbed8e5db87021edfedddddd319bcd96715fafd79b76dfd4f34e76fcc4edfafbfb67f3e3cf1ae37b9a8eb367cfc6bc5eef82fd6c4bd1edef7d6fec785f7fecb98b9732fe7c23f48358d53df7581dea9231933262dc2f166219a1ec0300b0f0d1ad1d8b8acfe7537f7f7fd24f4b4b8b0a0b0b150a85e4f178cc5671434f4f8f2a2a2a343232229fcfa753a74e29168be9c2850beae8e890c3e150201090c7e3c9785e9bcd661e2b1da375ddd86e29eaecec542010b03a0c00f38cb20f00c0fc2039c7a2e2743ae5f178927eeaeaea140e87e5f57a35343494d4f53c1a8d9add383b3a3ad4d9d9697661b7dbedaaaaaa52381c566161a186868692baa6272a2f2f97a48c5deb7b7a7ae47038a6ec5a0f00000000e9909c63c9e8ecec9424f9fd7eb3f5bcb3b3d36c31cf34d6d26eb79bfbb6b6b6a6ddc6e974cae170a46d390f87c31a1e1e9eb4e53d9d6030a8c6c64645229109ef3536369a31199fc3a838e8ecec342b265a5b5b27f41430b4b6b6266d9749341a556767a7cacbcb932a3c122b223a3b3bcd7f27c692fa79aaaaaacc71fc99624bdc6eaacf80e521f19aeae9e931afc5c4eb36180c9aafd7d5d5a52d37c6fed95c8752f665c4387fb6c79d0a659fb28f856baaebb4a7a72763f90d87c36a6c6c34cb4c62594fbc8755555565bc872596c9aaaaaab48d0294256009b3ba5f3d900d632c674343c3a4dbb9ddeea4319fc6bfbbbbbba73c476161e184f1a289e7adadad4d3b9eb4a5a5c53c47eaf9b3f94ce9b655caf850e3b8460c893f8585854963e12f5cb8607e96c41f9fcf37e1b867cf9e8d391c8e8c63f13b3a3a92ce9ff893c838f654b1a58ecd377e6c365bececd9b3537e67cbcd7219733ed9f55d5b5b1bebe8e8487bcda4ce0191ed75984b19c9e5b8d98e39a7ec53f6b13065739d1af7a396969609fb1be5e1d4a953b158ec72594f574e52affd4ce5d728ffb9c40860f1a2e51c4b8ad17a6dd43487c3e1a4d7b3d9d7d827d3fba9ade7462b97d1f57d2eb5b5b5a9a5a545b1584c67cf9e35bbf227b68eb5b6b66a6868483e9f4f67cf9e552c1653474747da56ffbaba3a0d0f0fabb6b656172e5c30c7e2b7b4b448ba3c037d6b6bab7c3e9f24a9a5a545fdfdfde6311a1b1be5f7fbe5f57a93c6f337343468686828e97ba9abab93cd66537f7fbfb99dcfe7d3c8c8c8942d9758fa3a3b3bcd6be3d4a953b2d96c6a6b6b535d5d9d3a3a3accebbeb0b05023232349d7b4711d1616169ad7e1d9b367e5f3f9265c87b994915caeefb944d907e65e36d7a9715d27f67031641ae2e6f7fbcdf29be9da37caafd7eb35cb6f7f7fbf791f349e4d284bc01237cf9501c0b464db729eba9dd2b4f4e4728ed4d76c365bcce17098ef5fb8702126c5677b8fc526b6dc6773be5c5acf523fff850b17620e872366b3d9ccd752634c3d5fe2716b6b6bcdd85319e79c2a5e87c391711668631fa3154152cce1704c68f16c686830b7c165cbade53cb5878bd15a9c7add1b2d4789afdb6cb6b4ade989c737aeb15cca482ed7f75cb69c53f681b997ed75eaf57a6392925aaa8dfb52622bb7510e125f8bc5e23d5752cba4517e53cfdddddd9db45a02650958da58e71cc881c7e351201050241291d3e9345ba4721d6f3e5da9e3e68d35defd7ebf59ab3e323292767c7d5555959a9a9a925e4bad650f06838a46a30a0683197b102432c6db3b9dceb463518d3175c160502e974b6eb75ba150484ea7d31c53575e5e9e71223e2c2fa9add076bb5dd2c4f265bc6e0887c3e6dc12a9ef49f16b3f140a993d6ab22d23b95edf7389b20fccbd6cafd3aaaa2a050201f5f4f49893d01a2de98993d21a52ef6d4ea733e9dfc63dacbcbc7cc23dacbcbc3c697fca12b0b4919c6349311e2a8d3f7c0e8743c3c3c366329dcbbee994979727fd413692f3f9eada9a2e36e3b5c4c960d22528e9f68d46a36a6d6d556767a7868787738ec7386728145228149a72bbcece4e3351f2fbfdf2fbfdaaaeae96d7eb556b6beb94bfa3a5eefcf9f37af5d557cd7fffeed55775297669cafd5ef9ed6f27fcfedef296b7e88a2bae98f5181722e3faca74fd24961163db6cca48aed7f75ca2ec03732fdbebb4bcbc5c369b4d9d9d9daaabab53341a552010506161e1b4aee5a9ee61d38911c0e244728e2525758cb9d1b29458bb9d89d1aa36592b78e298766356e3e9fe315e08cacbcb150a85e47038e4f57ae572b9e4743ae572b954575737e94377a2c966c3972e3f70389d4eb365ce98057a686848814040e17038e3ecb5cbc1f7bfff7d556dfba8deb17ebdb47285f9fa5557bf6dd2fdaeb9f65a9dffe52f755fcd0ef3b5732ffd548d8f3ca20f7ef0837316ef7292edf5bd9850f6818972b94ecbcbcbe5f7fbcd99d8a5893d5cac8e11c0e243728e25c3680172bbdde60361555595fc7ebf5a5b5b55555595b655498a77f11c191949da371da7d3a9c2c2420502017399b6d9eed23ed91fd670383ca1fb6c62d77aa3f6dd58ea2575dfd47f87422179bdbcf2003f0000200049444154deb4134665f307de88251c0ea7fd1e8c964aa7d3a96834aa9e9e1e73ad7aa35badb1167d20105030189cb721020bcd2db7dca23fb8f106fdd99d77ea7f7cf49eacf7cb773af5e5effea3f9efef7cf31bfae7af7f635925e6c67598eeba375e37b69b6cdbd43292cbf53d1b28fb138f03cc975caf53e3f9a2a7a767c6bde812cb53bab8cacbcb555555a5f2f272ca12b0c4315b3b9604a36b99a4a407538fc723afd76bae439eeea1b3b5b555f5f5f5e6ff4fc5f8a3973a736bae8c8a82d487e3c9c68da5be67d4987bbd5ef3986eb75b4343431366924ddd77b2eebd8d8d8d5975759dec7c52fcbb59bf7ebdd9aa505d5dadaaaaaa09dd708d1832559e2c076f7ad39bf4d5bffb3bf57677eb27fffeefd33ac6f04f7ea26f1f3fae839f3d30cbd12d6c935d8746eb92cd6693c7e3c9a98ce47a7de712af44d9a7ec63a1c9e53af5783c72381ceaecec342bbba65b51679427a3f53b516b6bab42a1901913650958da6839c7a26274e14a644ca422491d1d1d136a8c3b3b3bcd2e9c2e974be5e5e5e61fd09e9e1e0d0d0d99fb6633a9537979b9dadada343434643ef04f477979b9eaebebd5d6d666b63019933265120c06e5743a555555a5482422bfdf2f9bcd96f4f0dddadaaa4d9b36a9babadadc3eddc3b3c7e391cd6693dfef57341a95cbe5325b0e86878765b3d9343232a268349af4c7beaeae2e69f299d6d656793c1e555757abb3b3d36cc5338ee376bbcdefc8e7f3c9eff7cbe57299ddff82c1a042a190dc6ef79c4faab5d05d7ffdf5fac85ffc85da1b1bd4f60fdfca69dfdffcfad7dafbd77f2ddf873fa49b6eba698e225cb812afc39e9e1eb95c2e452211f5f4f4686464441d1d1de6759c6d19493dee54d777b628fb55e667a2ec63a1b0dbed395fa7c6f380f1ff33d1d8d8a89292126ddab4493e9fcfbc2f844221d96c36b3f71f650958e2ac9e2e1ec886b11c49ba1f87c311f3f97c592d5fe4703826eceff57a332e3f926909379bcd96b4849a2197a5d462b158aca3a3c33c96a458616161ecd4a953199753eaeeee4edadee170a48dbdbfbf3fe9b3da6cb6b4c73d75ead484efc4e170c4babbbbcdcf6e2c6f75f6ecd9a473279ef7d4a953668c893fb5b5b549cbbd5cb87021e6f3f9266ce776bbd32e81b51cbdf2ca2bb1bbb76d8b351d3e3ce9126aa93f9fd8b72ff6a1ad77c55e7df555ab3f42ce5297ee32645ac2abbfbf3f6db99cec7a4e956d19318e9bcdf59ded526ab118659fb28f8528d7ebd4285b92d2be9fcbb289b1d8c4f26b6c9358e6284bc0d2b622168bc5b24fe581c52f128998dddb17cab8ac603028bbdd9eb1c6dbe3f128140a29168b291a8d2a1c0e4fbabd211c0e2b1a8d4ef9398dedb239e66413e765fbdd1a9f418a8fb5a31b5eb29ffffce7bae1c61bf5b560481b0b0ba7dc3efc6fffa6bfdbf7697dbda343575f7df53c44b8b019d7e16c9691c4e34ab377efa0ec53f6b1f0647b9d86c361b3a53b53ef9be930caa5d3e9ccd8559eb2042c4d24e7c02290f8808ee5e1647fbf1e3fd4aebd9fffbcde7acd35936ebbd5e351c3230feb7def7def3c4587f942d90716aebaba3ab5b5b5a9bbbb7bde965405b0b431211c002c40b79694e85d3715a8a3a525e336972e5d52cb273fa9cd85ef2231078079d2d8d86826e60e8783c41cc0ac2139078005eac1ba3abd128daaef3bdf4efbfed33ffca14e7677e9c0be7df31c19002c5f3d3d3d6a6b6b93cd664bbb1c21004c17ddda016001fbf18f7facdbfffccff5fd679fd31bdef846f3f5f32fbea8a68f6dd7679b9af4ee77bfdbc20801607931e65860ac3780d946720e000b5cd3a73fadf073ffaf3ef5c52feaf56f788324a9f1631fd34d4e87f6ecda657174000000980d746b078005aee1d147f59b975fd6f7bef50f92a47f7af209bd3a36aa9afbefb73832000000cc96d55607000098dae39f794c0f3735e9adbffffbfa4c5d9d7e100a292f2fcfeab0000000304b6839078045e09def7ca73ef0def7aa69fb76edfbcc6774fdf5d75b1d12000000661163ce016091f8cd6f7ea3175f7c5137de78a3d5a10000006096919c03000000006031bab503000000006031927300000000002c46720e0000000080c548ce0100000000b018c93900000000001623390700000000c06224e70000000000588ce41c00000000008bad9e8d83ac58b1422b56ac988d43018b4a2c16532c16b33a8c794579c772b55cca3b651ccbd55228e3945fc01ab375ff98b5e4fcd9d72ecec6a18045e5c6d5abac0e61de51deb15c2d97f24e19c772b514ca38e517b0c66cdd3fe8d60e0000000080c548ce0100000000b018c93900000000001623390700000000c06224e70000000000588ce41c00000000008b919c03000000006031927300000000002c46720e0000000080c548ce0100000000b018c93900000000001623390700000000c06224e70000000000588ce41c00000000008b919c03000000006031927300000000002c46720e0000000080c548ce0100000000b018c93900000000001623390700000000c06224e70000000000588ce41c00000000008b919c030000000060b1d5560700000030957391889e0af4683018d2e848549254ec76abd257a57ca77346c71e080635180a4a52d2f132bd6e8585144baa74bf9b8242978a3d6e9579cb33ee371a8daabda949a787c2e63e55b5b50beab30173e97438acd1e8f8fdcce3b136182c082b62b1586ca60759b972a59e7dede26cc4032c2a37ae5ea54b972e591dc6bca2bc63b95a2ee57d2196f1f6a646b53737677cbf66ef5ed53434cecaf18f9dec331f9233bd3e9746a351edabaf57a5cf97743e2b62c9c654bf9b8d85853a70a443052ed784f7b66cdea433434349affde8572f2bcf6e9ff538b3b114caf8422cbf736d6b69890643a1b4ef15b9ddaaf4f954e9ab9ad139da9b1a67748f49d5d9d6aaf6a6268d8d8c24bd5e71b74f7b5a5a2c2b0398bed9ba7fd0ad1d00002c58bbaaab9392bf8d85852a72bbb5cee1305f6b6f6e567b53a305d1cdaede408f4a36ac57f751bfd5a164655f7d7dd2ef669dc3a122b75b456eb7f9da99a1216d2d2dd1b9482469dfd3e1b099986f2c2cd4b1937d3adcd54552825935180a69f7b66dda555d3dadfd4f87c3f26c583f690554ae3adb5af5d8ce9d13127349ea3eead7d6d292593b17161f92730000b0200d048366a26a2470279e39a5e37dfd0abe70568f1c3c686edbdedc6c760f5dac4e87c3691fd825a9a6a151cf5dbca4e72e5e5a10ade603c1a0fc87da24496b6d36ed3f7244c117ceea785fbf8ef7f5eb47bf7a59655bbc92a4b19111edda969c1c25feae6ef37a55ecf14cda051e988a718f307e1e3978d0acc4eb3eea576fa027e763f6067a747e787856e3ec6c6b33e3ed7ffe053d77f1927ef4ab975571b74f52bc426b3ab1626960cc3900005890fce30fb192d2768daeaaadd35834aaf6e666adb5d934180a262578e7221175b6b599639af31dce09ddc5676220185497dfaf73c311e5d9ec2a2bf766ec3edb1be8d1533d019d1b8e489a385ebecbdfa98184aeb95d7ebf064341739ba9c69c67fb59538f331a8daab3ad4de78623ca7738b5a3a121ab31df89bf9bc35ddd13ce9367b7eb7077b7d9e5783014d2e97058052e57fcb3062f7fd68150486a6a5491dbb3202a1eb038e5d9ed49d74fb1c7a34a5f95b66cdea4f3c3c33ad4d494747fe80df4a8abd39f344f42e29c07a965b2bda951f94ea759c6a7da3f1323d92f767bcc6df3ec76ed696931ef0fe92a1abbfc9deaed096874249af17ed3e5efd4b9482429ce4caf27be5650e8d2be9df5ca7738cd6ef5a3d168fc9c81c0a49f2ff5de53e68dc7452f98e961cc3930034b617c5aae28ef58ae964b795f4865fc8655f10e7e456eb78ef7f5a7dd66341ad558343ae181b1cbdfa9dddbb6a5dda7e26e9f0e747498ff9ece98f35dd5d569bb9f6f2c2cd4f1befea407d34cdbaeb5d974bcaf5f052e57c671b3c679278b65ba9fb5e26edf84b8d6da6c3af1cca929130ce377b3b1b050279e399571bbde408fb657564aba3c3740a6cf3ad3b903666a2994f185547ee78b713d65ba4f18ddc8a5cb731a649a2b21f1fa4f779d1ae7c866ff4c12e75a30c6c42726eaa946a3516dafac485b66cab67875b8bb7bcaef22ddebc66beb1c0e8d45a366af9d1ffdea658d45a3dab279d3849e3ca99fef7438acada52513b64b771f5cea18730e000096ac8160d0fcffe28431cca9f2ecf6090fb5bd811e3359dd5858a8c35d5d3a76b2cfec66dd7dd4af7df5f5d38eadbda9d14c6acbb67875ec649f6af6ee9514ef92babdb262d26df71f39a2b5369bc6464674fff8b6953e5fd258ed8abb7daad9bb57d74e9124cfe4b3761ff5ab66ef5e1d3bd9679e7b6c64c4ec769b49f2efc633e9b64509ef1bad90953e9fd98537be8d5b357bf7266d0bcc9682c2cb3d6e8cd9d18d6bbce26e9f8e9dec936f47ada4f8f5ffd47897f2d43259b377af2a7dbeacf7cf64cfc116f3ff8d31f125d76d888f6d6f6a9cd06adeded46426e6467935ee37bd270233ba9749975bf28bdc6e6d2c2c549eddae7df5f51a1b193187ac1ceeea32ef59879a9acc7defafacd0d8c88879ef31ee6d678686661cd77245720e2c00af5ebca8071f7e58d1591e2ff9b36854bb1f7e58172f2eaf5a746021a29ccf9f4f8f3f141a2dd365de72157b3c3adcdd6d3e6cfb0fb54d98a42c5b4ffa2f8f833fdc1defd25dd3d0683e300f8642e6b18d87f8750e87b96da5af4a350d0d2a72bb7587cfa77391882a7d55499510953e9f6a1a1aa76cc19ec967f5eda8554d43a38a3d1e1d3872b975dde89e9a8d3cbb6d8af727b69c55faaa54e9bb9c9c17bbdd661c8b09657af13ad0d1a19abd7bb5a7a545c51e8ff6b45c4e98c7c67f9fa965b2a6a1d1ec129ecdfe99147b3c0a3cfd4c52e22fc593e4f6e6666dd9bc29a9bc76f93b258d57d88d97939a8646b382cb787f268cb9228ef7f56b341a55ef897857f69a860655faaa54e62d574d4383cab67875ad333e8e7f20183413fb03473a54e62d57a5afcafc2e16cbc4960b0dc939b000dc575babbfd9bf5ff659eefef306bb5d07f6ef576d6dedac1e1740ee28e7f3e35c24623e309679cb2724878949e1c0f8d8eb5c9c0e87cde31714ba34100c9a3f6b13ce35100a264df0765bca646755b5753aded79f55029ec94c3f6b99d76bfe3f6b8be78e32bd38e5d9ed6622d91be8d1befa7a6dd9bc69def697a40297cb9c3871ff9123aab8dba7b5b67845d7f9e161b3d579201834ef2189e539f1df63232349bd5972b5cee130e7f3c8b3db753a7cb9722eb1d741556d9d0e77779b434f0613ee29bd819e7857ffa6c6e4f9246610d772c58470f32871129674b29908e55c24a2a7023d1a0c869226a028f6b833ce726a4cf89028754cd7b9486442cd1b13b3cc8f1f0c0eeadb4f3c31a7e7f8d6134fc8e7f3e98ffee88fe6f43c88eb6c6b356bce271b3f9958367db5753a1d0e4f3ae113162fca79ee12bb739f0e0f65dcee5c24a2d3436115b93dcab3dbf552c2df3ba3852751bec399b46fae12bb9c761ff5676c1d3a1789249d6baa16e6e998ebcf9a49b6bf9bf8fb971ff413e359ec28d38b47624f102309dd575f6fae36301dd3dddfb85f9d0e8755d3d0a83cbb7dbc274995a40e731cb8d1723d1fa61a3a938dd95c6a6eb923399f4783a1e014176fb3d6391c3a70a4236d529c69f289c15048fe436dda5858987636dbf88cafc99348a43ef80fa489ad66af48cee7d8abafbda6fbeebd570fb5b468d7873f3c67e779f8e041dd73efbd7ae6e9a7b56ad5aa393b0fe24e8787cc07f64c955ca3d1a839a66b9dc3a19a86c6a47b44d12493c36071a19c4f4fbed3a9750e87ce0f0f6b2014d468349ab68bf4a1a626b3bcc5c745cedf0444456e77c6f1f04b79fc74e2efa6f74420e3ef4652d29250c59ecc73072c2694e9c52571e9b23cbb5dbd811e33b12edbe25565954f05852e955cb721abe3cd64ff8150d09c23a2c0e59ad0b05650e84a7a664f4c9c8d99dcd3fd7baa043b97652613cb72e2398c86bc22b747052e57524f2163a23dcc1cddda1798f3c3c3baebd6d2a49a66295e4397983caf733854e476278d57393334a4ada52559d58ea7766f4bec8282f9b3afb55557beed6d7adf873e34a7e729fbf087657feb5bd536c5243f981db7955fee2adae54fdfaad61be8c9d8dd154b0be57cfaee48e8b6b9afbe7ec203666fa027a9e53ab532eca9c0c4d6a7de84d7a69340275680e73b9cf1b1e6e33f95be2a15b93de6b8d0c46d535b980782416d2d2dd1befafa6977fd9cebcf3a993b12bad8eeaeae4efbf07f3a1c369f5dd6da6c4b661d73caf4c2341a8d260d33e9f2776a6b698939f463474383a4e4de1cfb3be263a573495e67b27f6219d8555d9d5479d5e5ef347bb11acff746459814af8834ce331a8d9a13b315b9dd132af38d89ef8cff376687cf4681cb659e33f119e6505393da9b9b75d7ada592929f5d127bdf6e2d2dd1cd57be59bbaaabb33e272e2339b7c8b1937d7aeee225f327f0f433e6ccaa92ccd95ba5f81f70a386ce983531f8c25973e2861ffdea6573dfb19111edda96b93018852d3519379275e37dccbd678787d5f299cfe8935ffca2f9daaf66f9e73f12ceb7fb8b5fd4a7f7edd34f7ffad3b9fd605099b7dc1c3bd69b61d6d6de9ecb0fcd55e3e30a6b1a1acd7b02bd569606caf9ccd434346a6361a1a47817f22d9b37c52bab9b1ab5bda2c25ca24b8acf626cb4dc1813259d191a4a7a683c1d0e9bffde585838ad729667b79b0fcedd47fde683fa6834aa8f9496e8ae5b4b75c3aa95666bb2b16def8940d243bdbfadcdecf996aec5696c24bb87fdb9fcac93f1d5d65dbecf9d0868cbe64dea6c6bd54030a8de408f765557cb7bf36673fbaadada25d1b246995eb8ce0c0de9ae5b4bcd9fdddbb699add01577fbccc438b1d26ccbe64dda5a5a9274adbe141936ff3fb17578cbe64df26c589fd3fea9f2ec7673e2c8b191116dafacd40dab56ea86552bb57bdb36b3d2be666f83b98f3159e3f9e161956c58afada5252ad9b05ee78787b5d6664b9afddd9847626c64242936a3ac66cba8c8180c85e4d9b05e5b366f322b427d3b6acd55328cfce3b19d3bcdef673014d2d8c8880a5c85399d137124e70b4481cba5c3dddde6457e7e78d87ca8f727d4981eeeea36678a34e4d9ed49b3b20e8642135ade0d378d4fec90d8729e38a1cc4d09133f60eec424dd77fffdaa7ef041bd7dc37837a8152b74d52cffbc63c50a69c50a49d2dbafbb4e55f5f5fad8c73f6edd075f468c8780b1919109097ae24ca81b0b0bcd1aef8160d09c50255d0f98816050bbaaabb5b5b444db2b2a26cc1361ec9bfa7ae27153ef0d99f6c1cc51ce67c7f1be7e33413f3f3c2cffa136b53737278dc934663136ec6969311f46776fdb96f4906a2c0f94383b79ae121f86bd376fd6d6d2126dd9bcc9fc5b9a5851b0e7e0e5588c6d3d1bd69bf157dced331ff6135bbf8cb2dede74f973a58d658e3f6b267976bb8ef7f5274d62f5d8ce9dbaebd6526dafac4cead190fafb59ac28d38b4f91dbadfd478ee840c7e53250e62d37973e3b3f3cacc150481577fbf4c8c18392e295eaa30933b61b0d57678686747e7838a7fdd3a96968d423070fa66d10db5858a86327fb922ad38a3d1e1d3bd9175f8f7c64c44c7ed7391c3aded79f545910efbde336633b1d0e6bff91231386bc4ea5d257a5470e1ed45a9b4de78787cd9677df8edaa499e9f777742455101a1506357bf7aaaab62ea773228e31e70b8cafb6d6fc837d3a1c5699b73ce9217eb29aefaada5ab386b037d093b6201679dcea3d11d0f9e1e1f864354e6752a26ebc8fb975e45bdfd24bc3c36a7be001f3b51f5fba34e7e7bdeba187f4972e97babbbb55515131f50e98b6dbcabde6c3e9533d81a4ae6c89c97ae2ecab938d39df555d3d61e2a9de130175b6b5e9785ffff80cab43ea3d11d05a9b2da912afbdf9f21aa9a3d111ed19bf37247639351e2a307b28e7b323cf6ed789674e8d77f9bc3c87ca5a9b4dc56e8fcacabd692badfb5f38ab7df5f5ea3eea4fead259e4766bcfc1969c1f561315b85c3a76b24fbbb6559b0fe7464c55b5b54989a8312bf3be9df51a0c8592c693a63ee89679cb55e4f69b0fdf83a1d0a46bbccfc7679d4c81cb659e3b71a88e616361a17634342c99eeec94e985e9785f7fcefbec696951556dad5e8a4474add369febd4d4d28f3ec76055f386b0e3d31ca52b6fb6752555ba7aaf189608d443ef138a98a3d1e055f386b6e9f67b7a72dd746a599b15d81cb654e3a976aaaefcd8831f1b3a7f67ec9b3db75a0a3437b5a5acccaff74db217b2b62b1586ca60759b972a59e7d8db518a79238a15b6aad58a21b56c53b3414b9ddaad9db608eed48fd239e6a341ad5bbdf72a5b9af51e88c991f2529f0f43366d79bfd478ea8d257653ef4afb5d974b8abdb3c5fcddebd4ba2a67b2eddb87a952ee5f887f917a3a32ab8f146b57675c9f55fffeb1c4596d9a97ff917edfed087f4ec9933bae28a2b72de9ff29ebd9baf7cb3d972f5f4cb17ccd7b757549895608993a864ba4724be5eb6c52b5f6d6d4a221f2fef5dfe4e73a21963ffc4fb82147f583ef1cca909c7ed7ffe0526a09b422ee57d3197f3a558c68d87cbc91e7ea7eb5c2462ce9a9ecd8a2bd96c3bd503f864e6f2b34e2531d1588c0fe89395f1c552a69762f9051683e9e404e9d0ad7d11996a19966cfe0816b85c66173463dcb9d1725ebc8467965d286292ea1f7e58255bb658f2c75d9236fdb7ffa63ffdb33fd3a38f3e6ac9f99713a3a63ab16b7b6297f6b22ddeaccaed93e313b26c2c2cd4e1ee6e157be2134e19e3d60643219d8b44525ae703e3ef05938e756668c87c783626904aec5a8f99a39c2f3cc59ef8447173719de73b9de6f1676bdb02976bc28472d99acbcf3a1523ee628f67d125e693a14c03982f24e7cb9091840f848249e3cd8b96c812270bd9530303faa7ae2ed51f3860691cb58f3faeaf7de31b7ae699672c8d63a94becb2ded5194fb013c7769725ccea9ec9e970d82ca30585aea499681327aa19080593269f322add8c4a3863ccae74793c9cd1fdf536efd471207b94736069a14c03982f24e70b4ce2245079367bd2ba85a9cbb0a44a9ce829dfe1ccb89d91849f1f1e4e4a1468399f7b75f7deabddadad96b728d8aebc524d8f3faefbeebbcfd23896bac4e5488cb5808d654952c785679238a94cf7517fd24cb48feddc69be67dc3b8c995acf0c0de95c24a2a7c65bec8bdd1e33411f088692c6bd2f95f1a00b05e51c585a28d300e60b13c22d30a993b319eb1b9e1f1e361fee33fd71487cd82e9ea415bc206146f62713d62f2c70b9a6bdd62ab2f3d52f7d49deca4afde97bdf9bf3b216b3e9d5975f56d3830fea7bdffb9e65312c17b779cbcda510fd6dad666bf57412e222b73be3e450c61ac6b779cbcda4bdcbdf69b6ba9779bdcab3db74666828e93eb3cee198b3c9a2962bca39b0b450a601cc175ace1790d16854879a9acc7fdf36fef07e4742d7d8ddd5d5699767489c7579adcd36e9837fe25837b34bfb14b3c16276fcd73ffe63957bbd6a7bf861cb625821e9d0430fe9ce3befd4e6cd9ba7dc1e3393d8b5bd33615944636df3a92426cef90e677cacf9f84f7cc994f8f873a35ce73b9d660b7962e55bb1c763de17ce0f0f9b09fa6db49acf3aca39b0b450a601cc175ace2d125f0e2668fefba5c870d23224be1db5e6642ebeda3a75b6b5c527953a11d096cd9b54555bab824297c646a27aaa2790b4c452556ded945daf8adceea4e55ca65aaa05b3e7f1fdfb75c3c68ddae2f3e95dc5c5f37efee1fff93ff5fdef7d4f67ce9c99f7732f4746d7f6f3c3c366f9cea5b5da18473e180aa9fba83f5ef65d2e8d46a3fa48698959c19638eb7ba5cfa7c776eebcdc6abec56bc6b2d666d3d8c848528b3a661fe51c585a28d300e603c9b94552d72b4e54e476272d9966ac59b8b5b4c47ca84e1c6b9aa8e26e5f56cb9f15a724e7458c379f37369b4dad2d2d6abaef3e7df3e9a7b57af5fc15c335afbeaa07eebb4f870e1dd2dab56be7edbccbdd1d3e9fd9b3c5f8772ef61c6c319740f4debc59456eb75e4a98ccb166efdea40ab9d4f92312277b2cf3969bf79fb5365b56334c237794736069a14c03980f24e70b48d916afcacabd6927892a70b9d4ffc259edabaf4f6a61376c2c2cd48e8686acc7b1c693f1cbc9020fe8f3eb4377dea9239d9d3ad6d2a2ea071f9424bd73e54a29169bfd93ad58a11f5fbaa41592bef5b77fabf54ea7eeb8e38ed93f0f32aaf4552525e7d94c0497a8c0e5d2b1937ddab5ad5ae78787cd8ab5b5369baa6a6b2754c825b6d64bc9c97ab1c76d26e74c0437b728e7c0d24299ce6c20185c50cf92a3d1a84e87c32a70b9e67c22bf816050d73a9d8b7a49d27391885e8a449467b7a7edd9773a1c4e3bac36ddf6c6b1e6e3bb4f67341ad5b9f1f32f462b62b199df5156ae5ca9675fbb381bf1204b8985c4aa8b1fd28dab57e9d2a54bd3daf7ecd9b3dafcee77ebef9f7946eb1c0ebd73c50acd42714c7241d2952b56e8c7b1985e894474fbcd37ebe9a79f9673067f4028efd632fee84954aacdb7e994f7c558ce9773193f178924ad6222c52bb353cb5a97bf336975154959f55acbd54030680e81abf4554debe1bfbda951527c3e8a5c2b06979b6ccaf8422fd35694df7df5f59294d4ebd36a03c1a0eebab554c74ef665fdb7f27438ac7d3beb75bcaf3fa773ddb06aa56af6ee9d937bc07cd95e51a1de1301adb5d9f4f4cb1726bcbfb5b424a9c76da2750e871e6d69312bfcdb9b1ad5dedc9cd3779fc9747f275b366fcaa9d17236cc24274844cbf922b5586b8370d9faf5ebf5c0030fe8331ffb98dabff39d393dd71b253db87dbb1e7ae8a11925e6b05efe22af9d5f6e28e78bcb4b9148522f1749aab87b78c203e6a1a626b3678a612e1ecc074341339e22b7677ac9b9b9bf9be47c1650a6939d0e87d5e5ef54ff0b67ad0e65c67a033d1913d0a5ec5c24a2de13016d2c2cd499a12175f93b33de2b8e9dec4bde7738a27df5f5da555dad13cfb866fdf964babf933d075bb46b5bb58adc9e45d780c96ced80851e7ae001fdfcec593df5e493737a9e7ffbd6b7f4d24f7faa9d19e62a00307728e78b5be2d28352fc41363531c7f24299be6cdfce7a55faaad22640e722110d04833a1d0ee774ccd3e1b00682c1b4dda8b3d96f32464cb91e3fdbfd8c6da67b9cd16874ca63241e27d7ef361da3b7d017babab5cee15057c24a2fa98a3d9ea49f4a5f95f6b4b4686c64444f252ce99c8be97e16e3bb4ab75fb1279e94fbdb5aa715939548ce010bad59b3465ffdf2977560c78e393dcf437575fae217bfa8356bd6cce979004c44395f9cd6391c92e24b0f2676614f4cd68d6db0bc50a6e34e87c31a0c85262c0d3a1a8d6a7b45854aaedba0bb6e2d95f7e6cdf26c583f65f2351a8d6acbe64df2debc5977dd5aaa920debb5afa468c6580000171549444154be5e37ac5a3969b23a1a8d6a6b6989b9dfcd57be59a787c269b73162baebd652bdfb2d57aa733c7933ba624bf16eeac67090a9f6bb7cfc116dd9bcc9dc26f5f366739c2e7fa74a36ac37dfbff9ca374f186633ddef76324ffafd2a72bb95ef74ea0e9f4f83a1d084613b93c977382549633956a64cf55932fd4ea4f8508a77bfe5ca49bf83aadadaa4256c170b9273c0627ff2277fa20fbcfffd7372ec378cfff77def7b9ffef44fff744ece01606a94f3c5e7a6c2cbc3c71213f281e0e50919af9da20b6797bf53db2b2ab4b5b4445b4b4bd4d9d69ab1d56d2018d4aeea6a6d2d2dd1aeeaeaac1299ceb656f3d8fbeaeb737aa03e1789a8bda9d1dcdf38c6542d7688a34cc797055ee7704ce8cabcbdb24203a1a06af6eed5b1937dda7fe488f2ec766d2d2d99b4d5797b6585ce45227ae4e0411d3bd9a7326fb9fc87a64eaeb65756e87438acfd478ec4c739bb3d135635da575fafc150c88ce9705797361616eab19d3b752e125191dba3a2f165856bf6ee3557319a6a3f8311e7e1ae2e1deeea92a4a4cf3bd571ce4522dabd6d9b8add1ef3fd7ca753bbb76d4bfacea6fbdd66d21be8d1f9e161558eaf22637467cf25a935e6c5c875c8ed549f25d3efa4bda951fe436daab8db67ee37168deafeca8aa4e317bb3df165a8a7d9a26f15c69c030bc0e1cf7f5e972e5e54341a957d16c7c6bc128d6adbb66d3a7cf8f0ac1d13c0f450ce17970257a10642418d8d8c682018321f5a8d44bdd8edd1e848fa8761a395ecccd050d2eb83a190da9b9a74bcaf3fe941b6cbdfa9dddbb6256c1952f751bf361616a63dfee970d85c5e35f1d8fe436dda7fe4c89463cbd3ed9f780cdf8eda0535b9d742b5dccbf4e9a17052259674b9353d7532b0326fb94a36ac5797bf5355b575138f35be5fe2f55becf1682c1a55ef8940e61832ec674c7066c8b3db274cdab6d666d75db796eaa54844c51e8f0643c178029db0cd54fb191513eb1c0e1defeb37bbf71714ba5472dd06f3f34e751c436595cffcde0a0a5d491583d3fd6e27d3d5e9d75a9bcd9c382ddfe95491dbad2e7f67da7b4062ebb5240d84421a0c85b4b1b030a7c9d7b2fd2ce97e279d6df1c4fc404787f95a9eddaea77a023a97f03bc9773ab5d666d3e9707851ad4e43720e2c006bd6acd157bffad5593faedd6e9f93e302c81de57cf129767bd47b22603e20278e372ff2b8d51b489f342426e6468b8f3171d2d8c888b69696e8c433a794ef749a2d6652bc357e4f4b8bf21d4ef9dbdad2262546e23f3632626e9f67b7eb505393ce0c0d69f7b66dca7738279d25f9feca8aa4fdf31d4e8d8d44cd63f80fb5a9cceb654588292cf7326db4042732ca4a3ca90a26bdb7d66ed76030943681345a375393a8ca2adfa4c9b971bea9f633124d63c593d343e18ce53751b6fbdde62d4f1a779fef746a6361a17a030155d5d64d799c02974b6b6d366dafac5491dbad32af57b779cb932adaa6fbdd66624c0457e47627f5d42928746930144a3b315cea8499eb1c0e55dcedcbb9326fba9f652018af30bdaddc9bf47a99b73c6d025ee072692014524d4ed1598be41c0000208d228f5bbd2702e6b8f3c456ac62b727ed437a97bf3329314f6cf1c9773875d7ada51a1b19d1a1a6261de8e8489a44694f4b4b52eb9f67c3fa0993cff5067acc16ef031d1de6036991dba3920deb353632a22ebf7fd2c4da38e65abb5dc509b3c0e73b9cea0df4a8c0e59ab2cb3e908e31ee383589334c755da54e2cb7d636798f04e37c53ed773a1cd6fd951549e5299b3923b2dd2fcf6e4bf3dae518a63a4e9eddaee37dfddab733defd7d3014d2633b77aac8edd6e1ae6ee5d9ed33fe6e5319e3d9074321dd756b699af7fd1392f3e72ece7ca93069e6d7c954d7c56246720e00009046f1f8184729ded29338de3cd3f84a631b49131e6c8b3d1ead7338747e78f872cb51c2f6a92d3fb7a51973dbdb73b94260adcd9e34463cdfe9d499a1a10933cca732964c3a3f3cac92eb36689dc3a162b747c51eb77ce35d708199f8d1af5ecee93a5a3bbe6d62b76429be545736fb8d46a349e71b4b187262f436c9773ab5a3a141f90ea70a5c2e9d0e87d326a5d3d96f343a9276ff6b1dceac8f53e072e9785fbf5911d8db1350ef8980f6d5d72775e1cef5bbcda4b3ad4deb1c0e1d38d231e13da3e7cee970784e976f9eee67194b33a468ae639d2f4c080700009086d1d5548a27dd89e3cd33494c26d2adf96bb408192d6889e3d6531f52d3b5c6256e6fccea6cfc182df6532df576e04887f9b98cedbb8ffab57bdb36bdfb2d576a5f7dfda4fb0352bc92e7a548f2b5665430659a653cd3e45cb765d86fb265bda4cb653175bfa7122ab14e87c31a1b19d19e83f19e29c6325ba9dda953e5b25fea3262a7c3619d191a5291c79dd5717a033dbaf9ca379b951395be2a1deeee5691db6dde53a6fbdda6d3e5efd4d8c888aa6a6b272c8f56ecf1a8a6a141526e13c3e562ba9fa5d8e3d15a9b2de9f72bc5bbbb7b6fde3ce1782f45222a285c5c093b2de70000001914b8e2e32f07424133e92d70a59fa86dbea58ef7cd5681cba5fe17ceaa37d0a3de9e8039f19dc17fa84d79765b52977c205541a16bc29265052e978adceef159c88755e6f526cd67e01b5f766d20181f6b6c5c63f94ea77c3b6ad5dedcac9722c3bad6e930271b9b348684f38d8dcff0dd1b082425774685d8be9df5da73303e36bacbef57f7d1f4897f6fa0470585ae9cf61b1b4f2a7db5b5e6fc126b6d3655faaacc2edc931da7a0d0a5b19111dd5f59a11d0d0d5a6bb35f9e0c6dbc9c4ff7bb4dc7a8f4c834796481cb353e66be47a3d1d99f1c32dbcf62307e27f94ea7aa6a6bcdeef0953e9fce0d4774a8a92969623b299ee89f1f1e5e30f7eb6cd1720e00009041f1f8523e89add14593b49c1bdb4b9ad0fa331a8d9ac986b1445062ab4eeaf269a7c3c9b3bda76e5fe9ab524d43a3f953e4f698af4de57438ac62b74787bbbbf5f4cb17d4fffc0b7ae4e041f3fd81299222e0b672afce0c0d4d58c2ef7057b7cab678e53fd4a6bb6e2dd5f6ca4a9d8b44b4ffc811732e84c15070c278e33d2d2df2eda8556fa047edcdcd1a8d4693aec94c0e77c55b98db9b9b75d7ada5eaf2779a2dbf523cf1df7fe488ce0c0d99bd4c0642411deeead25a9bcd9c3ba2cc5b6e4eca76a8a929ebfda478597c6938a2bb6e2dd5ee6ddbb4767c0c799edd9ed5718c6dce4522da5e59a9bb6e2d557b73b37c3b6a93caf374bfdb44e722110d86422adbe29db44b79a5cf37a74b9165f359527f279254d3d028df8e5a751ff59bdfb7a4a4d9f2fffff6ee1fb6912bbf03f84fbe6b1db2760c907680fca9285f806b491fae3e725d1b20d51a70c4ad025c6169bb5416f70ab72481d4bb54ea2022cb18b8135919296249402e6544f9dae426c562c614ff48a2a4f5acc8cf07206c49338f23617eb3f3e57bf35ec4ea4906df753b4992240f6de4bdf7de8bfff8dfff7b8ce38127e56f7efeb3f8f39f1f67728ca742bdb3adb6a5deb7b9c6ff7d38cc9e014d27739bfd5e2a9d14e9f35f7d9a85edf47b7f3c3f8f4fffeae3887833ec77f686f11ff7f6b2deb26f5ebd8a5fd71bd7dafff56feaf1cdebd70bc71211d99243abb6efbdec646b3bcf2e85f6d73f7bd30ff3cb6a357b9e353dbe0f4aa5f8973f9c66c7f7dd781cf5bfff4544c4c25245db60136afca7aedfdac71f456b7f7fe9ccdae9cce41171ebccff3f4ca7f1a7e974e151907f3d1ec4179f7d16c7bfffc3adcf137f371ec70fd369fcddeeeed2d0f9c3741adf8dc7f117c5e2cab6966d7397fd52e91c10cb7edfbbb693b6b1eaf788b8fd6ffbf9af3e8d7ffeb7931b8ff55d71dbefb2eaef76dbdff38b67cfe2fd62f127bb8e3dd6f543388707d8847fc8d7a5ded956db52efdb5ce3cbc279c48f0137e2c7901bb13c9c47bc590b38edb94a278ffbaf9965d8e683ef6c3b1f944af161b91cdf8e46f17ea1900d379f5d0f78760de7d9edd3f73bf9fe2cbba99f0fe7ab8e2f22ae0d21be4b18da349b50e33f75fdbeeaf7e2772f5ec4f0fbb307b5937e30f4dbafbfce82fe0fd3697cf1d9b3f86e3c8edfffcfe5631cee5648ff6e4f259cbf0de9879027fff9fdd2b93fde86c7ba7e18d60e0070835fce0c559f1db6beca970787f1cdab57f141a9147fbaba8a6f47a3f8ef8b8b78bf50882fbffa6aa127271d961bf166f87cfa9c696beeb9cbd43f75bbd1fc87fd6bdba7c7393fb473d5f1fdf6ebafaf1d5fdac6df562a5b19ccb99fcf9aadf8b05c5e98886b5db3cf20ffe6179fc4e7bffa343efdf8a3f876345a7b0ded6df7c7f3f3ecd9f66df5bb172fe2cbafbefac982f963d2730e0fb0099fb2af4bbdb3adb6a5ded5f8e35a67686fbaed4dc359e7a543603f2c97ef75239a0e057e481b9b62136a3c8ffafd613a8d57fdded2a1edf769277d96fb2f4be5f8acd9bcb56e60d6639d8feb32ac1dde019bf00ff9bad43bdb6a5bea5d8db3ad36a1c6d52fe4c3b076000000d810c239000000e44c38070000809c09e70000009033e11c00000072269c03000040ce8473000000c899700e0000003913ce0100002067c239000000e44c38070000809c09e70000009033e11c00000072269c03000040ce8473000000c899700e0000003913ce0100002067c239000000e44c38070000809c09e70000009033e11c00000072b6932449f2e0467676626767e7318e079e942449e2114ae84951ef6cab6da97735ceb6da841a57bf908fc7ba7e3c4a3807000000eecfb076000000c899700e0000003913ce0100002067c239000000e44c38070000809c09e70000009033e11c00000072269c03000040ce8473000000c899700e0000003913ce0100002067c239000000e44c38070000809c09e700000090b39fe77d00b08ee17018c3e170e9cf8ac562d46ab5d8ddddbdb18de9741a83c1200683414ca7d38888a8d56ad1683456ee3bfbbec56231daedf6caf60f0f0fb3ff6fb55a512e976f3c1ee0e93a3c3c8c72b91cad566bed7dd3eb8aeb04001011b193244992f741c05d1d1e1ec68b172f6edca65aadc660308862b1b8f0b3c16010ad562baeaeae96ee5bafd7a3d7eb2dec3bffbe9797972bdb7ff6ec59f6f5c9c949d46ab51b8ff729393f3f8f76bb1ded767ba37e2fb8af9d9d9da856ab2b3f34bc497a5dd9a4eb846b0400dc9f61ed3c49cd66334e4e4eaebd8e8e8ea252a9c468348a5aad96f58aa7d2e07c757515cd66334e4f4f234992b8bcbc8c6eb71ba552298e8f8f6fbca12c140a595bcba437e8e9769ba6d7ebc5f1f171de8701bca35c2300e0fe84739ea472b91cb55aeddaabdd6ec7783c8e7abd1e93c9e4dad0f3e9749a0d3bed76bbd1ebf5b221ecc562315aad568cc7e3a8542a31994cae0d4d9fd56834222256f6920d068328954ab70ead07000098259cb3717abd5e4444f4fbfdacf7bcd7eb653de6ab9e0d2d168bd9be9d4e67e936e572394aa5d2d29ef3f1781c171717f71eca993e7b9a3effdee974aef5fe0f0683383c3c8cf3f3f3a5fb1f1e1e2e1cf76d6da6dba4ed0e87c368341a51abd5a2d56a5d7baf5eaf977d28d1ebf5163ec0987daf5aadb6f4bde031cc9e7f83c1203b6767cfffd973b9dd6eafac9bf451979b6a24d5e974ae9ddf37b94bedadcb350200365c024fc8c1c1411211c9c1c1c18ddb55abd52422929393936b5fbf7efdfad6f7a8542ad7f69d7fdffdfdfd859f2749921c1d1d65ef31fffeb769369b49442cbc2a954a7279799924499274bbdd242292a3a3a385fd4f4f4f9388489acde65a6dcefe6ecbb62f140ac9d9d9d9b5bfe1ec2bf5faf5eba5ef35bb3f3c96f45c4c6b71f6b5bfbf9fd5cafcb9387bde27c9dd6be4f2f232bb2eccbed2fdabd5eabdda4d6bef2ed709d70800d87c7aced94869ef75da8b331e8faf7dff2efba6fbacfaf97cef79daeb9e0e7dbfabc3c3c3e8f7fb51afd7af3d077f70701093c9246b2ffdefb21ebbf47be936776d7356bfdf8fa3a3a36cdb66b31957575759db9d4e279acd6644441c1d1dc5c9c949b66fbbdd8e42a1102727272bf787c7d6ebf5b273eef4f4340a8542bc7cf932daed7674bbdd489224cececea252a9c4d5d5d5b59a4d6ba452a9643572767616cd6673a1463a9d4e4c269368369b71767616499244b7db5d3a82e63eb5771bd70800d812b97c2400f774d79ef3f9ed62ae1767ddf798ff5ea150484aa552f6f3cbcbcb2422927abd9e24c962cffd4d4aa5d242cfdbfcfb9e9e9e2649f2634f57fa756afe78d66933fd7a7f7fffda766767670bbd82ab7afa222229954a0b3d930707070bc70a0fb56a244cda933e7f7d487b6d67bf5f281496f6a6cfb69f9ebbf3f5954aeb61b646ee537bb75d275c2300603b58e71ceea156abc5f1f1719c9f9f47b95cce7ad0d67dde3c7d4ebd5c2e2f9d842e7d9e73381cc6eeee6e341a8de8f7fbd1e974b29efac16010575757d9b3f4ebb6999aef295b67dde56ab51aa3d128cae572f63c6aa3d15839b11e3c86f973365dde70be0ee7973d1c8fc7d91c14cb96446cb55a311a8db29137b3f535bfddec128bf7adbd9bb84600c0f610ced948e990f4f4e6b1542ac5c5c54516a6d7d9779946a311c7c7c731180ca2dd6e67e17cdd21abe96448a3d12846a3d1addb351a8d8509e9d21bf0f4c67bdd361f43afd7cb024dbfdf8f7ebf1f7b7b7b51afd7a3d3e9ac75130f6f5b7aeeaf3a2fd3ef4fa7d36cdb65217e7effb7517bae1100b03d847336d2fc33e6b55a2dfafd7e16a66f92f696ddd40b3efb4c7bbbdd8ee17018954ae5de379837cd221f713d04341a8d78f9f265f47abdec43824aa5b2d013b74e9b0f552e9763381cc6783cce666c9e4c26717c7c1ce3f178e5ecd1b089de46edb94600c0e613ced938bd5e2f2e2e2ea25aad663797ad562b1bead96ab596f68245bc99d0e8eaeaeadabecb94cbe5a8542a717c7c9c2dd3769f25d4d29be5f178bc74ffb4e76ef6585aad56bc7cf932068341d6b3357b837d9f361f623a9dc66030c8d69e4f27774ad7963f3e3e8ee17078ef25e6e0b1a535922e3d362fed75deddddbd71dbf94923df46edb94600c0f6305b3b1ba5d7eb653de3b337d2b55a2deaf57ab60ef9b25e9a4ea713cf9f3fcffeff36e98de4fc2cc8eb28168b51ad5663329964434f67351a8df8e8a38fb2defc883737d6e90703cb86d3dfa7cd87dadbdb8b56ab756d186cb158cc3e0459f56108e4e1a61a497b760b8542d46ab51bb79d0feb6fa3f65c2300607be839e7494a8745ce4a27798a88e876bb0bbd30e910cfd168944d9c94f60c0d0683984c26d9be7799ac291d3a3a994cb21bf9fbe8743a51abd5626f6f2f7abd5ed46ab5aca7291d0130df76abd58ae7cf9fc768348a7abdbed0c3759f36d7d16eb7b3c99c8ac562349bcde8f7fbb1bbbb9bf5d00d87c3188d4651ad56ef3cf915fc54666b643018c4eeee6e9c9f9f6793a775bbdd2c30763a9df8e4934f626f6f2f86c36194cbe5a5a176beddc7aa3dd70800d812794f170feb4897e959f62a954a49b3d9bc7559a2838383a4542a2dec5fafd7572ee9b36a09b742a1706d09b5d43a4ba92549929c9e9e66fbccbef6f7f7972ef5942edd161149b7db7d509b372de71473cb249d9d9d65bf73cc2cb5747979992de134fbaa56ab4b8f1f1e223dafe7ad3a974f4e4e96d6efe9e9e9c2b5a0542a2d2cd196b631bb6da150484e4f4f176a246df7a1b537cf35020036df4e9224c923647c7872cecfcfb3e1edefcab38e6fe398de469bab26cd9b4ea7d973b8bbbbbb86aaf224a435522c166fedc11d8fc7319d4eef544b4fa59e5d2300e0dd209c03000040ce4c08070000003913ce0100002067c239000000e44c38070000809c09e70000009033e11c00000072269c03000040ce8473000000c899700e0000003913ce0100002067c239000000e44c38070000809c09e70000009033e11c00000072269c03000040ce8473000000c899700e0000003913ce0100002067c239000000e44c38070000809c09e70000009033e11c00000072269c03000040ce8473000000c899700e0000003913ce0100002067c239000000e44c38070000809c09e70000009033e11c00000072269c03000040ce8473000000c899700e0000003913ce0100002067c239000000e44c38070000809c09e70000009033e11c00000072269c03000040ce8473000000c899700e0000003913ce0100002067c239000000e44c38070000809c09e70000009033e11c00000072269c03000040ce8473000000c899700e0000003913ce0100002067c239000000e4ecff01b800f9a34b9b965b0000000049454e44ae426082}\par} {\pard \ql \f0 \sa180 \li0 \fi0 URL routing, DOM events (e.g., mouse clicks), and Model events (e.g., attribute changes) all trigger handling logic in the View. The handlers update the DOM and Models, which may trigger additional events. Models are synced with Data Sources which may involve communicating with back-end servers.\par} {\pard \ql \f0 \sa180 \li0 \fi0 \b \fs24 Models\par} -{\pard \ql \f0 \sa180 \li360 \fi-360 \bullet \tx360\tab The built-in capabilities of Models vary across frameworks; however, it\u8217's common for them to support validation of attributes, where attributes represent the properties of the Model, such as a Model identifier.\par} +{\pard \ql \f0 \sa180 \li360 \fi-360 \bullet \tx360\tab The built-in capabilities of Models vary across frameworks. However, it\u8217's common for them to support validation of attributes, where attributes represent the properties of the Model, such as a Model identifier.\par} {\pard \ql \f0 \sa180 \li360 \fi-360 \bullet \tx360\tab When using Models in real-world applications we generally also need a way of persisting Models. Persistence allows us to edit and update Models with the knowledge that their most recent states will be saved somewhere, for example in a web browser\u8217's localStorage data-store or synchronized with a database.\par} {\pard \ql \f0 \sa180 \li360 \fi-360 \bullet \tx360\tab A Model may have multiple Views observing it for changes. By {\i observing} we mean that a View has registered an interest in being informed whenever an update is made to the Model. This allows the View to ensure that what is displayed on screen is kept in sync with the data contained in the model. Depending on your requirements, you might create a single View displaying all Model attributes, or create separate Views displaying different attributes. The important point is that the Model doesn\u8217't care how these Views are organized, it simply announces updates to its data as necessary through the framework\u8217's event system.\par} {\pard \ql \f0 \sa180 \li360 \fi-360 \bullet \tx360\tab It is not uncommon for modern MVC/MV* frameworks to provide a means of grouping Models together. In Backbone, these groups are called Collections. Managing Models in groups allows us to write application logic based on notifications from the group when a Model within the group changes. This avoids the need to manually observe individual Model instances. We\u8217'll see this in action later in the book. Collections are also useful for performing any aggregate computations across more than one model.\sa180\par} @@ -1011,7 +1011,7 @@ console.log("Collection size: " + todos.length); // Collection size: 1\par} \});\line \line var TodosCollection = Backbone.Collection.extend(\{\line - model: Todo,\line + model: Todo\line \});\line \line var a = new Todo(\{ title: 'Go to Jamaica.'\}),\line @@ -2122,10 +2122,10 @@ Backbone LocalStorage adapter {\pard \ql \f0 \sa0 \li360 \fi-360 1.\tx360\tab Place the index.html in a top-level directory.\par} {\pard \ql \f0 \sa0 \li360 \fi-360 2.\tx360\tab Download jQuery, Underscore, Backbone, and Backbone LocalStorage from their respective web sites and place them under js/lib\par} {\pard \ql \f0 \sa0 \li360 \fi-360 3.\tx360\tab Create the directories js/models, js/collections, js/views, and js/routers\sa180\par} -{\pard \ql \f0 \sa180 \li0 \fi0 You will also need {\field{\*\fldinst{HYPERLINK "https://raw2.github.com/tastejs/todomvc/gh-pages/architecture-examples/backbone/bower_components/todomvc-common/base.css"}}{\fldrslt{\ul +{\pard \ql \f0 \sa180 \li0 \fi0 You will also need {\field{\*\fldinst{HYPERLINK "https://raw.githubusercontent.com/tastejs/todomvc/gh-pages/examples/backbone/bower_components/todomvc-common/base.css"}}{\fldrslt{\ul base.css }}} - and {\field{\*\fldinst{HYPERLINK "https://raw2.github.com/tastejs/todomvc/gh-pages/architecture-examples/backbone/bower_components/todomvc-common/bg.png"}}{\fldrslt{\ul + and {\field{\*\fldinst{HYPERLINK "https://raw.githubusercontent.com/tastejs/todomvc/gh-pages/examples/backbone/bower_components/todomvc-common/bg.png"}}{\fldrslt{\ul bg.png }}} , which should live in an assets directory. And remember that you can see a demo of the final application at {\field{\*\fldinst{HYPERLINK "http://todomvc.com"}}{\fldrslt{\ul @@ -2695,7 +2695,7 @@ secondTodo instanceof app.Todo // returns true\par} {\pard \ql \f0 \sa0 \li360 \fi-360 4.\tx360\tab {\f1 destroy()} also removes the model from the Todos collection, which triggers a {\f1 remove} event on the collection.\par} {\pard \ql \f0 \sa0 \li360 \fi-360 5.\tx360\tab Since the AppView has its {\f1 render()} method bound to {\f1 all} events on the Todos collection, that view is rendered and the stats in the footer are updated.\sa180\par} {\pard \ql \f0 \sa180 \li0 \fi0 That\u8217's all there is to it!\par} -{\pard \ql \f0 \sa180 \li0 \fi0 If you want to see an example of those, see the {\field{\*\fldinst{HYPERLINK "https://github.com/tastejs/todomvc/tree/gh-pages/architecture-examples/backbone"}}{\fldrslt{\ul +{\pard \ql \f0 \sa180 \li0 \fi0 If you want to see an example of those, see the {\field{\*\fldinst{HYPERLINK "https://github.com/tastejs/todomvc/tree/gh-pages/examples/backbone"}}{\fldrslt{\ul complete source }}} .\par} @@ -3045,7 +3045,8 @@ on the website "dependencies": \{\line "express": "~3.1.0",\line "path": "~0.4.9",\line - "mongoose": "~3.5.5"\line + "mongoose": "~3.5.5",\line + "body-parser": "~1.9.1"\line \}\line \}\par} {\pard \ql \f0 \sa180 \li0 \fi0 Amongst other things, this file tells npm what the dependencies are for our project. On the command line, from the root of your project, type:\par} @@ -3054,6 +3055,7 @@ on the website {\pard \ql \f0 \sa180 \li0 \fi0 Your folder structure should look something like this:\par} {\pard \ql \f0 \sa180 \li0 \fi0 \f1 node_modules/\line .bin/\line + body-parser/\line express/\line mongoose/\line path/\line @@ -3068,6 +3070,7 @@ package.json\par} {\pard \ql \f0 \sa180 \li0 \fi0 \f1 // Module dependencies.\line var application_root = __dirname,\line express = require( 'express' ), //Web framework\line + bodyParser = require('body-parser'), //Parser for reading request body\line path = require( 'path' ), //Utilities for dealing with file paths\line mongoose = require( 'mongoose' ); //MongoDB integration\line \line @@ -3076,6 +3079,7 @@ var app = express();\line \line //Where to serve static content\line app.use( express.static( path.join( application_root, 'site') ) );\line +app.use(bodyParser());\line \line //Start server\line var port = 4711;\line @@ -3141,8 +3145,7 @@ app.post( '/api/books', function( request, response ) \{\line return book.save( function( err ) \{\line if( !err ) \{\line console.log( 'created' );\line - \line - return response.send( book );\line + return response.send( book );\line \} else \{\line console.log( err );\line \}\line diff --git a/index.html b/index.html index 9c1db48a..2a204865 100644 --- a/index.html +++ b/index.html @@ -385,23 +385,23 @@

Setting Expectations

The goal of this book is to create an authoritative and centralized repository of information that can help those developing real-world apps with Backbone. If you come across a section or topic which you think could be improved or expanded on, please feel free to submit an issue (or better yet, a pull-request) on the book’s GitHub site. It won’t take long and you’ll be helping other developers avoid the problems you ran into.

Topics will include MVC theory and how to build applications using Backbone’s Models, Views, Collections, and Routers. I’ll also be taking you through advanced topics like modular development with Backbone.js and AMD (via RequireJS), solutions to common problems like nested views, how to solve routing problems with Backbone and jQuery Mobile, and much more.

Here is a peek at what you will be learning in each chapter:

-

Chapter 2, Fundamentals traces the history of the MVC design pattern and introduces how it is implemented by Backbone.js and other JavaScript frameworks.

-

Chapter 3, Backbone Basics covers the major features of the Backbone.js core and the technologies and techniques you will need to know in order to apply it.

-

Chapter 4, Exercise 1: Todos - Your First Backbone.js App takes you step-by-step through development of a simple client-side Todo List application.

-

Chapter 5, Exercise 2: Book Library - Your First RESTful Backbone.js App walks you through development of a Book Library application which persists its model to a server using a REST API.

-

Chapter 6, Backbone Extensions describes Backbone.Marionette and Thorax, two extension frameworks which add features to Backbone.js that are useful for developing large-scale applications.

-

Chapter 7, Common Problems and Solutions reviews common issues you may encounter when using Backbone.js and ways of addressing them.

-

Chapter 8, Modular Development looks at how AMD modules and RequireJS can be used to modularize your code.

-

Chapter 9, Exercise 3: Todos - Your First Modular Backbone + RequireJS App takes you through rewriting the app created in Exercise 1 to be more modular with the help of RequireJS.

-

Chapter 10, Paginating Backbone Requests & Collections walks through how to use the Backbone.Paginator plugin to paginate data for your Collections.

-

Chapter 11, Backbone Boilerplate And Grunt BBB introduces powerful tools you can use to bootstrap a new Backbone.js application with boilerplate code.

-

Chapter 12, Mobile Applications addresses the issues that arise when using Backbone with jQuery Mobile.

-

Chapter 13, Jasmine covers how to unit test Backbone code using the Jasmine test framework.

-

Chapter 14, QUnit discusses how to use QUnit for unit testing.

-

Chapter 15, SinonJS discusses how to use SinonJS for unit testing your Backbone apps.

-

Chapter 16, Resources provides references to additional Backbone-related resources.

-

Chapter 17, Conclusions wraps up our tour through the world of Backbone.js development.

-

Chapter 18, Appendix returns to our design pattern discussion by contrasting MVC with the Model-View-Presenter (MVP) pattern and examines how Backbone.js relates to both. A walkthrough of writing a Backbone-like library from scratch and other topics are also covered.

+

Chapter 2, Fundamentals, traces the history of the MVC design pattern and introduces how it is implemented by Backbone.js and other JavaScript frameworks.

+

Chapter 3, Backbone Basics, covers the major features of the Backbone.js core and the technologies and techniques you will need to know in order to apply it.

+

Chapter 4, Exercise 1: Todos - Your First Backbone.js App, takes you step-by-step through development of a simple client-side Todo List application.

+

Chapter 5, Exercise 2: Book Library - Your First RESTful Backbone.js App, walks you through development of a Book Library application which persists its model to a server using a REST API.

+

Chapter 6, Backbone Extensions, describes Backbone.Marionette and Thorax, two extension frameworks which add features to Backbone.js that are useful for developing large-scale applications.

+

Chapter 7, Common Problems and Solutions, reviews common issues you may encounter when using Backbone.js and ways of addressing them.

+

Chapter 8, Modular Development, looks at how AMD modules and RequireJS can be used to modularize your code.

+

Chapter 9, Exercise 3: Todos - Your First Modular Backbone + RequireJS App, takes you through rewriting the app created in Exercise 1 to be more modular with the help of RequireJS.

+

Chapter 10, Paginating Backbone Requests & Collections, walks through how to use the Backbone.Paginator plugin to paginate data for your Collections.

+

Chapter 11, Backbone Boilerplate And Grunt BBB, introduces powerful tools you can use to bootstrap a new Backbone.js application with boilerplate code.

+

Chapter 12, Mobile Applications, addresses the issues that arise when using Backbone with jQuery Mobile.

+

Chapter 13, Jasmine, covers how to unit test Backbone code using the Jasmine test framework.

+

Chapter 14, QUnit, discusses how to use QUnit for unit testing.

+

Chapter 15, SinonJS, discusses how to use SinonJS for unit testing your Backbone apps.

+

Chapter 16, Resources, provides references to additional Backbone-related resources.

+

Chapter 17, Conclusions, wraps up our tour through the world of Backbone.js development.

+

Chapter 18, Appendix, returns to our design pattern discussion by contrasting MVC with the Model-View-Presenter (MVP) pattern and examines how Backbone.js relates to both. A walkthrough of writing a Backbone-like library from scratch and other topics are also covered.

Fundamentals

Design patterns are proven solutions to common development problems that can help us improve the organization and structure of our applications. By using patterns, we benefit from the collective experience of skilled developers who have repeatedly solved similar problems.

Historically, developers creating desktop and server-class applications have had a wealth of design patterns available for them to lean on, but it’s only been in the past few years that such patterns have been applied to client-side development.

@@ -420,7 +420,7 @@

Smalltalk-80 MVC

Developers are sometimes surprised when they learn that the Observer pattern (nowadays commonly implemented as a Publish/Subscribe system) was included as a part of MVC’s architecture decades ago. In Smalltalk-80’s MVC, the View and Controller both observe the Model: anytime the Model changes, the Views react. A simple example of this is an application backed by stock market data - for the application to show real-time information, any change to the data in its Model should result in the View being refreshed instantly.

Martin Fowler has done an excellent job of writing about the origins of MVC over the years and if you are interested in further historical information about Smalltalk-80’s MVC, I recommend reading his work.

MVC Applied To The Web

-

The web heavily relies on the HTTP protocol, which is stateless. This means that there is not a constantly open connection between the browser and server; each request instantiates a new communication channel between the two. Once the request initiator (e.g. a browser) gets a response the connection is closed. This fact creates a completely different context when compared to the one of the operating systems on which many of the original MVC ideas were developed. The MVC implementation has to conform to the web context.

+

The web heavily relies on the HTTP protocol, which is stateless. This means that there is not a constantly open connection between the browser and server; each request instantiates a new communication channel between the two. Once the request initiator (e.g. a browser) gets a response the connection is closed. This fact creates a completely different context when compared to one of the operating systems on which many of the original MVC ideas were developed. The MVC implementation has to conform to the web context.

An example of a server-side web application framework which tries to apply MVC to the web context is Ruby On Rails.

@@ -565,7 +565,7 @@

Implementation Specifics

URL routing, DOM events (e.g., mouse clicks), and Model events (e.g., attribute changes) all trigger handling logic in the View. The handlers update the DOM and Models, which may trigger additional events. Models are synced with Data Sources which may involve communicating with back-end servers.

Models

    -
  • The built-in capabilities of Models vary across frameworks; however, it’s common for them to support validation of attributes, where attributes represent the properties of the Model, such as a Model identifier.

  • +
  • The built-in capabilities of Models vary across frameworks. However, it’s common for them to support validation of attributes, where attributes represent the properties of the Model, such as a Model identifier.

  • When using Models in real-world applications we generally also need a way of persisting Models. Persistence allows us to edit and update Models with the knowledge that their most recent states will be saved somewhere, for example in a web browser’s localStorage data-store or synchronized with a database.

  • A Model may have multiple Views observing it for changes. By observing we mean that a View has registered an interest in being informed whenever an update is made to the Model. This allows the View to ensure that what is displayed on screen is kept in sync with the data contained in the model. Depending on your requirements, you might create a single View displaying all Model attributes, or create separate Views displaying different attributes. The important point is that the Model doesn’t care how these Views are organized, it simply announces updates to its data as necessary through the framework’s event system.

  • It is not uncommon for modern MVC/MV* frameworks to provide a means of grouping Models together. In Backbone, these groups are called Collections. Managing Models in groups allows us to write application logic based on notifications from the group when a Model within the group changes. This avoids the need to manually observe individual Model instances. We’ll see this in action later in the book. Collections are also useful for performing any aggregate computations across more than one model.

  • @@ -1207,7 +1207,7 @@

    Adding and Removing Models

    }); var TodosCollection = Backbone.Collection.extend({ - model: Todo, + model: Todo }); var a = new Todo({ title: 'Go to Jamaica.'}), @@ -2293,7 +2293,7 @@

    Header and Scripts

  • Download jQuery, Underscore, Backbone, and Backbone LocalStorage from their respective web sites and place them under js/lib
  • Create the directories js/models, js/collections, js/views, and js/routers
  • -

    You will also need base.css and bg.png, which should live in an assets directory. And remember that you can see a demo of the final application at TodoMVC.com.

    +

    You will also need base.css and bg.png, which should live in an assets directory. And remember that you can see a demo of the final application at TodoMVC.com.

    We will be creating the application JavaScript files during the tutorial. Don’t worry about the two ‘text/template’ script elements - we will replace those soon!

    Application HTML

    Now let’s populate the body of index.html. We’ll need an <input> for creating new todos, a <ul id="todo-list" /> for listing the actual todos, and a footer where we can later insert statistics and links for performing operations such as clearing completed todos. We’ll add the following markup immediately inside our body tag before the script elements:

    @@ -2873,7 +2873,7 @@

    Completing & deleting todos

  • Since the AppView has its render() method bound to all events on the Todos collection, that view is rendered and the stats in the footer are updated.
  • That’s all there is to it!

    -

    If you want to see an example of those, see the complete source.

    +

    If you want to see an example of those, see the complete source.

    Todo routing

    Finally, we move on to routing, which will allow us to easily filter the list of items that are active as well as those which have been completed. We’ll be supporting the following routes:

    #/ (all - default)
    @@ -3228,7 +3228,8 @@ 

    Install node modules

    "dependencies": { "express": "~3.1.0", "path": "~0.4.9", - "mongoose": "~3.5.5" + "mongoose": "~3.5.5", + "body-parser": "~1.9.1" } }

    Amongst other things, this file tells npm what the dependencies are for our project. On the command line, from the root of your project, type:

    @@ -3237,6 +3238,7 @@

    Install node modules

    Your folder structure should look something like this:

    node_modules/
       .bin/
    +  body-parser/
       express/
       mongoose/
       path/
    @@ -3251,6 +3253,7 @@ 

    Create a simple web server

    // Module dependencies.
     var application_root = __dirname,
         express = require( 'express' ), //Web framework
    +    bodyParser = require('body-parser'), //Parser for reading request body
         path = require( 'path' ), //Utilities for dealing with file paths
         mongoose = require( 'mongoose' ); //MongoDB integration
     
    @@ -3259,6 +3262,7 @@ 

    Create a simple web server

    //Where to serve static content app.use( express.static( path.join( application_root, 'site') ) ); +app.use(bodyParser()); //Start server var port = 4711; @@ -3330,8 +3334,7 @@

    Connect to the database

    return book.save( function( err ) { if( !err ) { console.log( 'created' ); - - return response.send( book ); + return response.send( book ); } else { console.log( err ); } @@ -7562,7 +7565,7 @@

    Suites, Specs, & Spies

    // Create a new spy var callback = jasmine.createSpy(); - // Execute the spy callback if the + // Exexute the spy callback if the // request for Todo 15 is successful getTodo(15, callback);