From 44d73a1bba076d3e2f4f5550edc42c338d7b281d Mon Sep 17 00:00:00 2001 From: Trotyl Yu Date: Mon, 21 May 2018 23:14:44 +0800 Subject: [PATCH 001/760] docs(guide/comparison): correct size stat of Angular CLI project (#1638) --- src/v2/guide/comparison.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v2/guide/comparison.md b/src/v2/guide/comparison.md index 5bf94f047e..994110231d 100644 --- a/src/v2/guide/comparison.md +++ b/src/v2/guide/comparison.md @@ -182,7 +182,7 @@ Both frameworks are exceptionally fast, with very similar metrics on benchmarks. ### Size -Recent versions of Angular, with [AOT compilation](https://en.wikipedia.org/wiki/Ahead-of-time_compilation) and [tree-shaking](https://en.wikipedia.org/wiki/Tree_shaking), have been able to get its size down considerably. However, a full-featured Vue 2 project with Vuex + Vue Router included (~30KB gzipped) is still significantly lighter than an out-of-the-box, AOT-compiled application generated by `angular-cli` (~130KB gzipped). +Recent versions of Angular, with [AOT compilation](https://en.wikipedia.org/wiki/Ahead-of-time_compilation) and [tree-shaking](https://en.wikipedia.org/wiki/Tree_shaking), have been able to get its size down considerably. However, a full-featured Vue 2 project with Vuex + Vue Router included (~30KB gzipped) is still significantly lighter than an out-of-the-box, AOT-compiled application generated by `angular-cli` (~65KB gzipped). ### Flexibility From 3d1fdd88a9afab190d20a5329f0b6a4dbdf62518 Mon Sep 17 00:00:00 2001 From: Alexander Sokolov Date: Mon, 21 May 2018 18:17:32 +0300 Subject: [PATCH 002/760] Update client-side-storage.md (#1640) --- src/v2/cookbook/client-side-storage.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/v2/cookbook/client-side-storage.md b/src/v2/cookbook/client-side-storage.md index 40296e4273..ffeb70fb77 100644 --- a/src/v2/cookbook/client-side-storage.md +++ b/src/v2/cookbook/client-side-storage.md @@ -56,9 +56,7 @@ And then finally, an example in Microsoft Edge. Note that you can find applicati ![Storage devtools in Edge](/images/devtools-storage-edge.png) -

-As a quick aside, these dev tools also offer you a way to remove storage values. This can be very useful when testing. -

+

As a quick aside, these dev tools also offer you a way to remove storage values. This can be very useful when testing.

Immediately writing the value may not advisable. Let's consider a slightly more advanced example. First, the updated form. @@ -175,4 +173,4 @@ While the Local Storage API is relatively simple, it is missing some basic featu ## Wrapping Up -While the browser will never replace a server persistence system, having multiple ways to cache data locally can be a huge performance boost for your application, and working with it in Vue.js makes it even more powerful. \ No newline at end of file +While the browser will never replace a server persistence system, having multiple ways to cache data locally can be a huge performance boost for your application, and working with it in Vue.js makes it even more powerful. From 5bd7be01b10362f205902f1e052448f7b3f62bb7 Mon Sep 17 00:00:00 2001 From: Alexander Sokolov Date: Mon, 21 May 2018 18:17:51 +0300 Subject: [PATCH 003/760] Update creating-custom-scroll-directives.md (#1639) --- src/v2/cookbook/creating-custom-scroll-directives.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v2/cookbook/creating-custom-scroll-directives.md b/src/v2/cookbook/creating-custom-scroll-directives.md index 927179a314..3989f2722c 100644 --- a/src/v2/cookbook/creating-custom-scroll-directives.md +++ b/src/v2/cookbook/creating-custom-scroll-directives.md @@ -50,7 +50,7 @@ new Vue({ We'd also need a style property that will transition the intermediary values here, in this case: -``` +```css .box { transition: 1.5s all cubic-bezier(0.39, 0.575, 0.565, 1); } From ef9b64e753afb133946d2d6bee774ddff05af74c Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 22 May 2018 16:37:44 -0400 Subject: [PATCH 004/760] chore: update ad code --- themes/vue/layout/partials/ad.ejs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/themes/vue/layout/partials/ad.ejs b/themes/vue/layout/partials/ad.ejs index ec329972a0..1a904321d3 100644 --- a/themes/vue/layout/partials/ad.ejs +++ b/themes/vue/layout/partials/ad.ejs @@ -1,11 +1,8 @@ From bf5a3312d76331a3028b67126494c52df05ed950 Mon Sep 17 00:00:00 2001 From: pipopotamasu Date: Wed, 23 May 2018 07:48:11 +0900 Subject: [PATCH 005/760] remove unnecessary word 'know' (#1641) --- src/v2/guide/components-edge-cases.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v2/guide/components-edge-cases.md b/src/v2/guide/components-edge-cases.md index 0dbfe792eb..edf05b7816 100644 --- a/src/v2/guide/components-edge-cases.md +++ b/src/v2/guide/components-edge-cases.md @@ -159,7 +159,7 @@ You can see the [full example here](https://jsfiddle.net/chrisvfritz/tdv8dt3s/). In fact, you can think of dependency injection as sort of "long-range props", except: * ancestor components don't need to know which descendants use the properties it provides -* descendant components don't know need to know where injected properties are coming from +* descendant components don't need to know where injected properties are coming from

However, there are downsides to dependency injection. It couples components in your application to the way they're currently organized, making refactoring more difficult. Provided properties are also not reactive. This is by design, because using them to create a central data store scales just as poorly as using $root for the same purpose. If the properties you want to share are specific to your app, rather than generic, or if you ever want to update provided data inside ancestors, then that's a good sign that you probably need a real state management solution like Vuex instead.

From 9e977cdc7c629115bde6af01bb38c74607f0b3cc Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Tue, 22 May 2018 18:49:08 -0400 Subject: [PATCH 006/760] Updated broken links for the Vue Test Utils documentation. (#1643) --- src/v2/cookbook/unit-testing-vue-components.md | 4 ++-- src/v2/guide/unit-testing.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/v2/cookbook/unit-testing-vue-components.md b/src/v2/cookbook/unit-testing-vue-components.md index b4bee60785..f990e5763e 100644 --- a/src/v2/cookbook/unit-testing-vue-components.md +++ b/src/v2/cookbook/unit-testing-vue-components.md @@ -82,7 +82,7 @@ Automated testing allows large teams of developers to maintain complex codebases #### Getting started -[Vue Test Utils](https://github.com/vuejs/vue-test-utils) is the official library for unit testing Vue components. The [vue-cli](https://github.com/vuejs/vue-cli) `webpack` template comes with either Karma or Jest, both well supported test runners, and there are some [guides](https://vue-test-utils.vuejs.org/en/guides/) in the Vue Test Utils documentation. +[Vue Test Utils](https://github.com/vuejs/vue-test-utils) is the official library for unit testing Vue components. The [vue-cli](https://github.com/vuejs/vue-cli) `webpack` template comes with either Karma or Jest, both well supported test runners, and there are some [guides](https://vue-test-utils.vuejs.org/guides/) in the Vue Test Utils documentation. ## Real-World Example @@ -231,7 +231,7 @@ The above test is fairly simple, but in practice Vue components often have other - committing or dispatching mutations or actions with a `Vuex` store - testing interaction -There are more complete examples showing such tests in the Vue Test Utils [guides](https://vue-test-utils.vuejs.org/en/guides/). +There are more complete examples showing such tests in the Vue Test Utils [guides](https://vue-test-utils.vuejs.org/guides/). Vue Test Utils and the enormous JavaScript ecosystem provides plenty of tooling to facilitate almost 100% test coverage. Unit tests are only one part of the testing pyramid, though. Some other types of tests include e2e (end to end) tests, and snapshot tests. Unit tests are the smallest and most simple of tests - they make assertions on the smallest units of work, isolating each part of a single component. diff --git a/src/v2/guide/unit-testing.md b/src/v2/guide/unit-testing.md index f6190dffb7..57593cb3c8 100644 --- a/src/v2/guide/unit-testing.md +++ b/src/v2/guide/unit-testing.md @@ -131,4 +131,4 @@ it('updates the rendered message when vm.message updates', done => { We are planning to work on a collection of common test helpers to make it easier to render components with different constraints (e.g. shallow rendering that ignores child components) and assert their output. -For more in-depth information on unit testing in Vue, check out [vue-test-utils](https://vue-test-utils.vuejs.org/en/) and our cookbook entry about [unit testing vue components](https://vuejs.org/v2/cookbook/unit-testing-vue-components.html). +For more in-depth information on unit testing in Vue, check out [vue-test-utils](https://vue-test-utils.vuejs.org/) and our cookbook entry about [unit testing vue components](https://vuejs.org/v2/cookbook/unit-testing-vue-components.html). From eee7fcda0e902d8a2c4cfb33f50335f326300fe0 Mon Sep 17 00:00:00 2001 From: Chris Fritz Date: Thu, 24 May 2018 20:53:20 -0400 Subject: [PATCH 007/760] Reorganize component props to introduce prop types earlier, fixes #1644 (#1646) @BlitZz96 brought up a good point in [this issue](https://github.com/vuejs/vuejs.org/issues/1644) about users lacking the necessary background knowledge to fully understand Passing Static and Dynamic Props, at least as it relates to booleans and potentially other types in the future. To fix this, I added a new Prop Types section right before it. --- src/v2/guide/components-props.md | 45 +++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/src/v2/guide/components-props.md b/src/v2/guide/components-props.md index 2f27cdbb46..1714ab33f7 100644 --- a/src/v2/guide/components-props.md +++ b/src/v2/guide/components-props.md @@ -25,7 +25,29 @@ Vue.component('blog-post', { Again, if you're using string templates, this limitation does not apply. -## Static and Dynamic Props +## Prop Types + +So far, we've only seen props listed as an array of strings: + +```js +props: ['title', 'likes', 'isPublished', 'commentIds', 'author'] +``` + +Usually though, you'll want every prop to be a specific type of value. In these cases, you can list props as an object, where the properties' names and values contain the prop names and types, respectively: + +```js +props: { + title: String, + likes: Number, + isPublished: Boolean, + commentIds: Array, + author: Object +} +``` + +This not only documents your component, but will also warn users in the browser's JavaScript console if they pass the wrong type. You'll learn much more about [type checks and other prop validations](#Prop-Validation) further down this page. + +## Passing Static or Dynamic Props So far, you've seen props passed a static value, like in: @@ -36,7 +58,11 @@ So far, you've seen props passed a static value, like in: You've also seen props assigned dynamically with `v-bind`, such as in: ```html + + + + ``` In the two examples above, we happen to pass string values, but _any_ type of value can actually be passed to a prop. @@ -56,14 +82,14 @@ In the two examples above, we happen to pass string values, but _any_ type of va ```html - + - + - + ``` ### Passing an Array @@ -82,10 +108,10 @@ In the two examples above, we happen to pass string values, but _any_ type of va ```html - + - + ``` ### Passing the Properties of an Object @@ -148,7 +174,7 @@ There are usually two cases where it's tempting to mutate a prop: ## Prop Validation -Components can specify requirements for its props. If a requirement isn't met, Vue will warn you in the browser's JavaScript console. This is especially useful when developing a component that's intended to be used by others. +Components can specify requirements for its props, such as the types you've already seen. If a requirement isn't met, Vue will warn you in the browser's JavaScript console. This is especially useful when developing a component that's intended to be used by others. To specify prop validations, you can provide an object with validation requirements to the value of `props`, instead of an array of strings. For example: @@ -200,9 +226,10 @@ The `type` can be one of the following native constructors: - String - Number - Boolean -- Function -- Object - Array +- Object +- Date +- Function - Symbol In addition, `type` can also be a custom constructor function and the assertion will be made with an `instanceof` check. For example, given the following constructor function exists: From dc9b6cb430f1712ca3d5366c21c0f37ee4e1acb3 Mon Sep 17 00:00:00 2001 From: mgdodge Date: Fri, 25 May 2018 00:17:16 -0600 Subject: [PATCH 008/760] First stab at SFC to npm documentation (#1558) * First stab at SFC to npm documentation * Clean up sample code, clarify .vue usage with SSR builds * Run build tasks in parallel, fix dependency order * Backtick all instances of .vue, minor edits for clarity * Fix typo on link * Update url to vue-sfc-rollup utility in acknowledgements * Fix order, other edits suggested by @sdras * Additional explanation about sfc-to-npm recipe package.json --- src/v2/cookbook/packaing-sfc-for-npm.md | 216 ++++++++++++++++++++++++ 1 file changed, 216 insertions(+) create mode 100644 src/v2/cookbook/packaing-sfc-for-npm.md diff --git a/src/v2/cookbook/packaing-sfc-for-npm.md b/src/v2/cookbook/packaing-sfc-for-npm.md new file mode 100644 index 0000000000..90cbf4b5f8 --- /dev/null +++ b/src/v2/cookbook/packaing-sfc-for-npm.md @@ -0,0 +1,216 @@ +--- +title: Packaging Vue Components for npm +type: cookbook +order: 12 +--- + +## Base Example + +Vue components by nature are meant to be re-used. This is easy when the component is only used within a single application. But how can you write a component once and use it in multiple sites/applications? Perhaps the easiest solution is via npm. + +By packaging your component to be shared via npm, it can be imported/required into a build process for use in full-fledged web applications: + +```js +import MyComponent from 'my-component'; + +export default { + components: { + MyComponent, + }, + // rest of the component +} +``` + +Or even used via ` + + ... + + ... +``` + +Not only does this help you avoid copy/pasting components around, but it also allows you to give back to the Vue community! + +## Can't I Just Share `.vue` Files Directly? + +Vue already allows components to be written as a single file. Because a Single File Component (SFC) is already just one file, you might ask: + +> "Why can't people use my `.vue` file directly? Isn't that the simplest way to share components?" + +It's true, you can share `.vue` files directly, and anyone using a [Vue build](https://vuejs.org/v2/guide/installation.html#Explanation-of-Different-Builds) containing the Vue compiler can consume it immediately. Also, the SSR build uses string concatenation as an optimization, so the `.vue` file might be preferred in this scenario (see [Packaging Components for npm > SSR Usage](#SSR-Usage) for details). However, this excludes anyone who wishes to use the component directly in a browser via ` + ``` You can browse the source of the NPM package at [cdn.jsdelivr.net/npm/vue](https://cdn.jsdelivr.net/npm/vue/). diff --git a/themes/vue/_config.yml b/themes/vue/_config.yml index 8300f88561..a1a7fce09a 100644 --- a/themes/vue/_config.yml +++ b/themes/vue/_config.yml @@ -1,7 +1,7 @@ site_description: "Vue.js - The Progressive JavaScript Framework" google_analytics: UA-46852172-1 root_domain: vuejs.org -vue_version: 2.5.13 +vue_version: 2.5.16 special_sponsors: - url: https://stdlib.com diff --git a/themes/vue/layout/layout.ejs b/themes/vue/layout/layout.ejs index f460a72ad7..77b6689743 100644 --- a/themes/vue/layout/layout.ejs +++ b/themes/vue/layout/layout.ejs @@ -58,7 +58,10 @@ - + From fda94a9366eabbe7f04478dfa60ef29ffb53c7ad Mon Sep 17 00:00:00 2001 From: Chris Fritz Date: Sun, 3 Jun 2018 15:12:52 -0400 Subject: [PATCH 017/760] add text versions of image code examples --- src/v2/guide/single-file-components.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/v2/guide/single-file-components.md b/src/v2/guide/single-file-components.md index 7c2ca16d4f..ae72d1cabc 100644 --- a/src/v2/guide/single-file-components.md +++ b/src/v2/guide/single-file-components.md @@ -19,7 +19,7 @@ All of these are solved by **single-file components** with a `.vue` extension, m Here's an example of a file we'll call `Hello.vue`: - +Single-file component example (click for code as text) Now we get: @@ -29,7 +29,7 @@ Now we get: As promised, we can also use preprocessors such as Pug, Babel (with ES2015 modules), and Stylus for cleaner and more feature-rich components. - +Single-file component example with preprocessors (click for code as text) These specific languages are only examples. You could as easily use Bublé, TypeScript, SCSS, PostCSS - or whatever other preprocessors that help you be productive. If using Webpack with `vue-loader`, it also has first-class support for CSS Modules. From b0d792b3d89a90b9549a871f440c9fb26d943801 Mon Sep 17 00:00:00 2001 From: Chris Fritz Date: Sun, 3 Jun 2018 15:24:35 -0400 Subject: [PATCH 018/760] remove extra comma in components --- src/v2/guide/components.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v2/guide/components.md b/src/v2/guide/components.md index 30968ba9eb..0ed6bcdcaf 100644 --- a/src/v2/guide/components.md +++ b/src/v2/guide/components.md @@ -185,7 +185,7 @@ new Vue({ posts: [ { id: 1, title: 'My journey with Vue' }, { id: 2, title: 'Blogging with Vue' }, - { id: 3, title: 'Why Vue is so fun' }, + { id: 3, title: 'Why Vue is so fun' } ] } }) From cffbc40145f5bd1231eeab16f7d5aea3c775cf4e Mon Sep 17 00:00:00 2001 From: K3A Date: Sun, 3 Jun 2018 21:44:28 +0200 Subject: [PATCH 019/760] TypeScript project generation in @vue/cli 3.0 (#1668) * TypeScript project generation in @vue/cli 3.0 update information about generating TypeScript project using new @vue/cli 3.0 * tweaks to Vue CLI 3 TypeScript support docs --- src/v2/guide/typescript.md | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/v2/guide/typescript.md b/src/v2/guide/typescript.md index d65676dfc0..80a13033ce 100644 --- a/src/v2/guide/typescript.md +++ b/src/v2/guide/typescript.md @@ -12,8 +12,6 @@ A static type system can help prevent many potential runtime errors, especially Since these are [published on NPM](https://cdn.jsdelivr.net/npm/vue/types/), and the latest TypeScript knows how to resolve type declarations in NPM packages, this means when installed via NPM, you don't need any additional tooling to use TypeScript with Vue. -We also plan to provide an option to scaffold a ready-to-go Vue + TypeScript project in `vue-cli` in the near future. - ## Recommended Configuration ``` js @@ -37,11 +35,23 @@ See [TypeScript compiler options docs](https://www.typescriptlang.org/docs/handb ## Development Tooling -For developing Vue applications with TypeScript, we strongly recommend using [Visual Studio Code](https://code.visualstudio.com/), which provides great out-of-the-box support for TypeScript. +## Project Creation + +[Vue CLI 3](https://github.com/vuejs/vue-cli) can generate new projects that use TypeScript. To get started: + +```bash +# 1. Install Vue CLI, if it's not already installed +npm install --global @vue/cli + +# 2. Create a new project, then choose the "Manually select features" option +vue create my-project-name +``` + +## Editor Support -If you are using [single-file components](./single-file-components.html) (SFCs), get the awesome [Vetur extension](https://github.com/vuejs/vetur), which provides TypeScript inference inside SFCs and many other great features. +For developing Vue applications with TypeScript, we strongly recommend using [Visual Studio Code](https://code.visualstudio.com/), which provides great out-of-the-box support for TypeScript. If you are using [single-file components](./single-file-components.html) (SFCs), get the awesome [Vetur extension](https://github.com/vuejs/vetur), which provides TypeScript inference inside SFCs and many other great features. -[WebStorm](https://www.jetbrains.com/webstorm/) also provides out-of-the-box support for both TypeScript and Vue.js. +[WebStorm](https://www.jetbrains.com/webstorm/) also provides out-of-the-box support for both TypeScript and Vue. ## Basic Usage From 4a734c253ec659b3ce203d585d201472e4226b06 Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 4 Jun 2018 10:02:46 -0400 Subject: [PATCH 020/760] chore: update sponsors --- themes/vue/_config.yml | 4 ++++ themes/vue/layout/sponsors-page.ejs | 10 ++++++++++ themes/vue/source/css/_sponsors-page.styl | 6 ++++-- themes/vue/source/images/dopamine.png | Bin 0 -> 40878 bytes 4 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 themes/vue/source/images/dopamine.png diff --git a/themes/vue/_config.yml b/themes/vue/_config.yml index a1a7fce09a..66ddce0881 100644 --- a/themes/vue/_config.yml +++ b/themes/vue/_config.yml @@ -60,6 +60,10 @@ gold_sponsors: - url: https://www.pubnub.com/vue-js/ img: pubnub.png +silver_sponsors: + - url: https://dopamine.bg/ + img: dopamine.png + bronze_sponsors: - url: http://tighten.co/ img: http://i.imgur.com/T7fQYLT.png diff --git a/themes/vue/layout/sponsors-page.ejs b/themes/vue/layout/sponsors-page.ejs index 84857c52ff..d2ed9bd394 100644 --- a/themes/vue/layout/sponsors-page.ejs +++ b/themes/vue/layout/sponsors-page.ejs @@ -121,6 +121,16 @@ Recurring pledges come with exclusive perks, e.g. having your name listed in the <%_ } _%>

+

Patreon Silver

+ + +

If you run a business and are using Vue in a revenue-generating product, it makes business sense to sponsor Vue development: it ensures the project that your product relies on stays healthy and actively maintained. It can also help your exposure in the Vue community and makes it easier to attract Vue developers.

diff --git a/themes/vue/source/css/_sponsors-page.styl b/themes/vue/source/css/_sponsors-page.styl index 77b397e982..2052feda2b 100644 --- a/themes/vue/source/css/_sponsors-page.styl +++ b/themes/vue/source/css/_sponsors-page.styl @@ -23,8 +23,10 @@ .open-collective-sponsors img - max-height 80px - margin-right 20px + max-width 140px + max-height 60px + margin-right 30px + margin-bottom 20px #one-time-donations a, svg diff --git a/themes/vue/source/images/dopamine.png b/themes/vue/source/images/dopamine.png new file mode 100644 index 0000000000000000000000000000000000000000..3d688c7a554b2b9607ae0833a3e97ed9431810ca GIT binary patch literal 40878 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 literal 0 HcmV?d00001 From fa7fe2fd85df356b804a7f4d4e51f6e26cc7d4c1 Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 11 Jun 2018 16:54:37 -0400 Subject: [PATCH 021/760] chore: update sponsors --- themes/vue/_config.yml | 10 ++-------- themes/vue/source/images/vuemastery.png | Bin 0 -> 7624 bytes 2 files changed, 2 insertions(+), 8 deletions(-) create mode 100644 themes/vue/source/images/vuemastery.png diff --git a/themes/vue/_config.yml b/themes/vue/_config.yml index 66ddce0881..6a3f09a718 100644 --- a/themes/vue/_config.yml +++ b/themes/vue/_config.yml @@ -27,8 +27,6 @@ gold_sponsors: img: htmlburger.png - url: https://chaitin.cn/en/ img: chaitin.png - - url: https://anymod.com - img: anymod.png - url: https://www.frontenddeveloperlove.com/ img: frontend-love.png - url: https://onsen.io/vue/ @@ -43,22 +41,18 @@ gold_sponsors: img: icons8.png - url: https://vuejobs.com/?ref=vuejs img: vuejobs.png - - url: https://leanpub.com/vuejs2 - img: tmvuejs2.png - url: https://codepilot.ai img: codepilot.png - url: https://teamextension.io/ img: teamextension.png - - url: https://jsguru.io/ - img: jsguru.png - url: http://aaha.co/ img: aaha.png - url: https://www.valuecoders.com img: valuecoders.png - url: https://www.nsoft.com/careers/ img: nsoft.png - - url: https://www.pubnub.com/vue-js/ - img: pubnub.png + - url: https://www.vuemastery.com/ + img: vuemastery.png silver_sponsors: - url: https://dopamine.bg/ diff --git a/themes/vue/source/images/vuemastery.png b/themes/vue/source/images/vuemastery.png new file mode 100644 index 0000000000000000000000000000000000000000..45e2358762381eec01af149f02b98f0d8872beb7 GIT binary patch literal 7624 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
  • A-6wvR`jF^qk|FrJ1Z}qz8lrYU9If9mRB*UjG^nCE zN=>a%7~HsY)bIk;2y`n{P+op$QlFJqr?6}ARGE5-Q}qkV6EWSu(;KBSPkIhwrQPtu%=+2=_=>bmhI@>bTQrNIk`Mi3y} zCyn(Q3VuN&oNO@#Zs~?LE!u#J};JUTm3n~)5kaH zo|2OD;Q9zh$oH`{F@eDwt*1QFE`QeC3FzJ0jpF&G z%6mV9L*p&~A?^oK(*sE{B61kS zeo$Q;*aW55@Ci4NO!gD+MB$XQU|2eoFHL>x-6z7d(drHoHWEo0AyF$<-Hoz_lq!F) zZL7j8)}Gpew)8$x70`dc>&LVaQ~eFIq0IG}!j7O<8vVw~qNq+@rHE@2OX+mGVwrt$ z{iQYP_}t0p9F8r=epAf+6`GpF>-kV<6ZltBmk*Hy;{BSWsWd4XZLgi!sICjs8X`cb z+BAV$-c8$FL#=sOuVs}h`fhUUxoml0u{WXRn2w2ESE7RFR!2Har1~tP!vHH2xkafK z(x;K6clR@U#Oj%zVgXUX!y87+byVP$YSPvX{3u35GnOsYf`SP@GfS(efsoGPrugs@z|yVcQ-Z1;mx^n`?N@|Q=ib$(@)|!wh?zFufJLpvk0`9 oh}cuo9KW4iG8U8;_xOyooz8V275E|?QJMuP$*H}sk}(VYe^1?#od5s; literal 0 HcmV?d00001 From 49ffe8eafa38ba59033bbe50efb29b0bd3abd29b Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 11 Jun 2018 17:39:52 -0400 Subject: [PATCH 022/760] update CLI docs link --- src/v2/guide/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v2/guide/installation.md b/src/v2/guide/installation.md index 4340c1c188..94fbf778aa 100644 --- a/src/v2/guide/installation.md +++ b/src/v2/guide/installation.md @@ -58,7 +58,7 @@ $ npm install vue ## CLI -Vue provides an [official CLI](https://github.com/vuejs/vue-cli) for quickly scaffolding ambitious Single Page Applications. It provides batteries-included build setups for a modern frontend workflow. It takes only a few minutes to get up and running with hot-reload, lint-on-save, and production-ready builds. See [the Vue CLI docs](https://github.com/vuejs/vue-cli/blob/dev/docs/README.md#introduction) for more details. +Vue provides an [official CLI](https://github.com/vuejs/vue-cli) for quickly scaffolding ambitious Single Page Applications. It provides batteries-included build setups for a modern frontend workflow. It takes only a few minutes to get up and running with hot-reload, lint-on-save, and production-ready builds. See [the Vue CLI docs](https://cli.vuejs.org) for more details.

    The CLI assumes prior knowledge of Node.js and the associated build tools. If you are new to Vue or front-end build tools, we strongly suggest going through the guide without any build tools before using the CLI.

    From aeebd0e98e9b4293ac280e22711b871811311197 Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 11 Jun 2018 17:43:31 -0400 Subject: [PATCH 023/760] add Scrimba links for preview --- src/v2/guide/index.md | 10 ++++++++++ themes/vue/source/css/_scrimba.styl | 31 +++++++++++++++++++++++++++++ themes/vue/source/css/page.styl | 3 ++- 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 themes/vue/source/css/_scrimba.styl diff --git a/src/v2/guide/index.md b/src/v2/guide/index.md index 98415eceb7..38a212895d 100644 --- a/src/v2/guide/index.md +++ b/src/v2/guide/index.md @@ -32,8 +32,12 @@ or: The [Installation](installation.html) page provides more options of installing Vue. Note: We **do not** recommend that beginners start with `vue-cli`, especially if you are not yet familiar with Node.js-based build tools. +If you prefer something more interactive, you can also check out [this tutorial series on Scrimba](https://scrimba.com/playlist/pXKqta), which gives you a mix of screencast and code playground that you can pause and play around with anytime. + ## Declarative Rendering + + At the core of Vue.js is a system that enables us to declaratively render data to the DOM using straightforward template syntax: ``` html @@ -105,6 +109,8 @@ If you open up your JavaScript console again and enter `app2.message = 'some new ## Conditionals and Loops + + It's easy to toggle the presence of an element, too: ``` html @@ -189,6 +195,8 @@ In the console, enter `app4.todos.push({ text: 'New item' })`. You should see a ## Handling User Input + + To let users interact with your app, we can use the `v-on` directive to attach event listeners that invoke methods on our Vue instances: ``` html @@ -265,6 +273,8 @@ var app6 = new Vue({ ## Composing with Components + + The component system is another important concept in Vue, because it's an abstraction that allows us to build large-scale applications composed of small, self-contained, and often reusable components. If we think about it, almost any type of application interface can be abstracted into a tree of components: ![Component Tree](/images/components.png) diff --git a/themes/vue/source/css/_scrimba.styl b/themes/vue/source/css/_scrimba.styl new file mode 100644 index 0000000000..2a5d16e966 --- /dev/null +++ b/themes/vue/source/css/_scrimba.styl @@ -0,0 +1,31 @@ +.scrimba + background-color #e7ecf3 + padding 1em 1.25em + border-radius 2px + color #486491 + position relative + a + color #486491 !important + position relative + padding-left 36px + &:before + content '' + position absolute + display block + width 30px + height 30px + top -5px + left -4px + border-radius 50% + background-color #73abfe + &:after + content '' + position absolute + display block + width 0 + height 0 + top 5px + left 8px + border-top 5px solid transparent + border-bottom 5px solid transparent + border-left 8px solid #fff diff --git a/themes/vue/source/css/page.styl b/themes/vue/source/css/page.styl index cbb59ad9ab..5e9ca12b45 100644 --- a/themes/vue/source/css/page.styl +++ b/themes/vue/source/css/page.styl @@ -12,6 +12,7 @@ @import "https://github.com/_team" @import "https://github.com/_style-guide" @import "https://github.com/_modal" +@import "https://github.com/_scrimba" #header box-shadow: 0 0 1px rgba(0,0,0,.25) @@ -255,4 +256,4 @@ &.tip background-color: rgb(255,255,255) border: 2px solid #e8e8e8 - border-left: 4px solid $red \ No newline at end of file + border-left: 4px solid $red From 1a16aa2bdd4519abfceddbf8b0c369bd7cc57360 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Sun, 17 Jun 2018 01:55:26 +0300 Subject: [PATCH 024/760] Fix example indentation in the Unit Testing Vue Components recipe (#1683) --- .../cookbook/unit-testing-vue-components.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/v2/cookbook/unit-testing-vue-components.md b/src/v2/cookbook/unit-testing-vue-components.md index f990e5763e..7bdfa5aae2 100644 --- a/src/v2/cookbook/unit-testing-vue-components.md +++ b/src/v2/cookbook/unit-testing-vue-components.md @@ -149,22 +149,22 @@ import { shallowMount } from '@vue/test-utils' describe('Foo', () => { it('renders a message and responds correctly to user input', () => { - const wrapper = shallowMount(Foo, { - data: { - message: 'Hello World', - username: '' - } - }) + const wrapper = shallowMount(Foo, { + data: { + message: 'Hello World', + username: '' + } + }) - // see if the message renders - expect(wrapper.find('.message').text()).toEqual('Hello World') + // see if the message renders + expect(wrapper.find('.message').text()).toEqual('Hello World') - // assert the error is rendered - expect(wrapper.find('.error').exists()).toBeTruthy() + // assert the error is rendered + expect(wrapper.find('.error').exists()).toBeTruthy() - // update the `username` and assert error is no longer rendered - wrapper.setData({ username: 'Lachlan' }) - expect(wrapper.find('.error').exists()).toBeFalsy() + // update the `username` and assert error is no longer rendered + wrapper.setData({ username: 'Lachlan' }) + expect(wrapper.find('.error').exists()).toBeFalsy() }) }) ``` From f55d69362a60766b7b038acc00a3f58c4a637d31 Mon Sep 17 00:00:00 2001 From: Alexander Sokolov Date: Sun, 17 Jun 2018 02:01:14 +0300 Subject: [PATCH 025/760] Update debugging-in-vscode.md (#1662) --- src/v2/cookbook/debugging-in-vscode.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/v2/cookbook/debugging-in-vscode.md b/src/v2/cookbook/debugging-in-vscode.md index fd2f0eb5af..9e9751c838 100644 --- a/src/v2/cookbook/debugging-in-vscode.md +++ b/src/v2/cookbook/debugging-in-vscode.md @@ -53,19 +53,19 @@ Click on the Debugging icon in the Activity Bar to bring up the Debug view, then 1. Set a breakpoint in **src/components/HelloWorld.vue** on `line 90` where the `data` function returns a string. -![Breakpoint Renderer](/images/breakpoint_set.png) + ![Breakpoint Renderer](/images/breakpoint_set.png) 2. Open your favorite terminal at the root folder and serve the app using Vue CLI: -``` -npm start -``` + ``` + npm start + ``` 3. Go to the Debug view, select the **'vuejs: chrome'** configuration, then press F5 or click the green play button. 4. Your breakpoint should now be hit as the new instance of Chrome opens `http://localhost:8080`. -![Breakpoint Hit](/images/breakpoint_hit.png) + ![Breakpoint Hit](/images/breakpoint_hit.png) ## Alternative Patterns From 912d564e694995524e6f66aa60ac2a66860a3fe4 Mon Sep 17 00:00:00 2001 From: Kevin Young Date: Sat, 16 Jun 2018 19:05:04 -0400 Subject: [PATCH 026/760] Added link to vuemeetups.org to the ecosystem drop-down menu on website. (#1685) --- themes/vue/layout/partials/ecosystem_dropdown.ejs | 1 + 1 file changed, 1 insertion(+) diff --git a/themes/vue/layout/partials/ecosystem_dropdown.ejs b/themes/vue/layout/partials/ecosystem_dropdown.ejs index b81da2dcfd..5a137e774f 100644 --- a/themes/vue/layout/partials/ecosystem_dropdown.ejs +++ b/themes/vue/layout/partials/ecosystem_dropdown.ejs @@ -5,6 +5,7 @@
  • Tooling

  • From 4fe97c474286e59b9801d7caf3c19e4618d1effe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E7=BF=9B=E7=84=B6?= Date: Sun, 17 Jun 2018 07:27:02 +0800 Subject: [PATCH 027/760] Correct mistake of Migration from Vue 1.x (#1686) --- src/v2/guide/migration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v2/guide/migration.md b/src/v2/guide/migration.md index 60c4ba7e8f..9802143ede 100644 --- a/src/v2/guide/migration.md +++ b/src/v2/guide/migration.md @@ -364,7 +364,7 @@ computed: { Or with component methods: ``` js -template: '

    message: {{ getTimeMessage }}

    ', +template: '

    message: {{ getTimeMessage() }}

    ', methods: { getTimeMessage: function () { return Date.now() + this.message From 171e1985775baea7d3b5f13643ea3584a10f572b Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Sun, 17 Jun 2018 16:25:54 +0300 Subject: [PATCH 028/760] Fix code style in Form Validation recipe (#1682) * Fix code style in Form Validation recipe * More style code slight improvement in Form Validation recipe --- src/v2/cookbook/form-validation.md | 139 +++++++++++++++++------------ 1 file changed, 82 insertions(+), 57 deletions(-) diff --git a/src/v2/cookbook/form-validation.md b/src/v2/cookbook/form-validation.md index c525dd5a81..0832c632db 100644 --- a/src/v2/cookbook/form-validation.md +++ b/src/v2/cookbook/form-validation.md @@ -54,19 +54,28 @@ The final thing to note is that each of the three fields has a corresponding `v- ``` js const app = new Vue({ - el:'#app', - data:{ - errors:[], - name:null, - age:null, - movie:null + el: '#app', + data: { + errors: [], + name: null, + age: null, + movie: null }, methods:{ - checkForm:function(e) { - if(this.name && this.age) return true; + checkForm: function (e) { + if (this.name && this.age) { + return true; + } + this.errors = []; - if(!this.name) this.errors.push("Name required."); - if(!this.age) this.errors.push("Age required."); + + if (!this.name) { + this.errors.push('Name required.'); + } + if (!this.age) { + this.errors.push('Age required.'); + } + e.preventDefault(); } } @@ -122,26 +131,33 @@ While the change here is small, note the `novalidate="true"` on top. This is imp ``` js const app = new Vue({ - el:'#app', - data:{ - errors:[], - name:null, - email:null, - movie:null + el: '#app', + data: { + errors: [], + name: null, + email: null, + movie: null }, - methods:{ - checkForm:function(e) { + methods: { + checkForm: function (e) { this.errors = []; - if(!this.name) this.errors.push("Name required."); - if(!this.email) { - this.errors.push("Email required."); - } else if(!this.validEmail(this.email)) { - this.errors.push("Valid email required."); + + if (!this.name) { + this.errors.push("Name required."); + } + if (!this.email) { + this.errors.push('Email required.'); + } else if (!this.validEmail(this.email)) { + this.errors.push('Valid email required.'); + } + + if (!this.errors.length) { + return true; } - if(!this.errors.length) return true; + e.preventDefault(); }, - validEmail:function(email) { + validEmail: function (email) { var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return re.test(email); } @@ -197,29 +213,36 @@ Note the set of inputs covering the five different features. Note the addition o ``` js const app = new Vue({ - el:'#app', + el: '#app', data:{ - errors:[], - weapons:0, - shields:0, - coffee:0, - ac:0, - mousedroids:0 + errors: [], + weapons: 0, + shields: 0, + coffee: 0, + ac: 0, + mousedroids: 0 }, - computed:{ - total:function() { - // must parse cuz Vue turns empty value to string - return Number(this.weapons)+ - Number(this.shields)+ - Number(this.coffee)+ + computed: { + total: function () { + // must parse because Vue turns empty value to string + return Number(this.weapons) + + Number(this.shields) + + Number(this.coffee) + Number(this.ac+this.mousedroids); } }, methods:{ - checkForm:function(e) { + checkForm: function (e) { this.errors = []; - if(this.total != 100) this.errors.push("Total must be 100!"); - if(!this.errors.length) return true; + + if (this.total != 100) { + this.errors.push('Total must be 100!'); + } + + if (!this.errors.length) { + return true; + } + e.preventDefault(); } } @@ -237,16 +260,16 @@ In my final example, we built something that makes use of Ajax to validate at th ``` js function main(args) { - return new Promise((resolve, reject) => { - // bad product names: vista, empire, mbp - let badNames = ['vista','empire','mbp']; - if(badNames.includes(args.name)) reject({error:'Existing product'}); - resolve({status:'ok'}); - + const badNames = ['vista', 'empire', 'mbp']; + + if (badNames.includes(args.name)) { + reject({error: 'Existing product'}); + } + + resolve({status: 'ok'}); }); - } ``` @@ -280,22 +303,24 @@ There isn't anything special here. So let's go on to the JavaScript. const apiUrl = 'https://openwhisk.ng.bluemix.net/api/v1/web/rcamden%40us.ibm.com_My%20Space/safeToDelete/productName.json?name='; const app = new Vue({ - el:'#app', - data:{ - errors:[], - name:'' + el: '#app', + data: { + errors: [], + name: '' }, methods:{ - checkForm:function(e) { + checkForm: function (e) { e.preventDefault(); + this.errors = []; - if(this.name === '') { - this.errors.push("Product name is required."); + + if (this.name === '') { + this.errors.push('Product name is required.'); } else { - fetch(apiUrl+encodeURIComponent(this.name)) + fetch(apiUrl + encodeURIComponent(this.name)) .then(res => res.json()) .then(res => { - if(res.error) { + if (res.error) { this.errors.push(res.error); } else {            // redirect to a new URL, or do something on success From 779c5d5d332a645ed38c9e1d6beabe96fd0158cb Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Sun, 17 Jun 2018 19:21:31 +0300 Subject: [PATCH 029/760] Fix code style in Client-Side Storage recipe (#1690) --- src/v2/cookbook/client-side-storage.md | 37 ++++++++++++++++---------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/src/v2/cookbook/client-side-storage.md b/src/v2/cookbook/client-side-storage.md index ffeb70fb77..364e67dbbc 100644 --- a/src/v2/cookbook/client-side-storage.md +++ b/src/v2/cookbook/client-side-storage.md @@ -22,12 +22,14 @@ This example has one form field bound to a Vue value called `name`. Here's the J ``` js const app = new Vue({ - el:'#app', + el: '#app', data: { - name:'' + name: '' }, mounted() { - if(localStorage.name) this.name = localStorage.name; + if (localStorage.name) { + this.name = localStorage.name; + } }, watch: { name(newName) { @@ -75,12 +77,16 @@ Now we've got two fields (again, bound to a Vue instance) but now there is the a const app = new Vue({ el:'#app', data: { - name:'', - age:0 + name: '', + age: 0 }, mounted() { - if(localStorage.name) this.name = localStorage.name; - if(localStorage.age) this.age = localStorage.age; + if (localStorage.name) { + this.name = localStorage.name; + } + if (localStorage.age) { + this.age = localStorage.age; + } }, methods: { persist() { @@ -106,7 +112,7 @@ As mentioned above, Local Storage only works with simple values. To store more c

    Cats

    - {{cat}} + {{ cat }}

    @@ -122,14 +128,14 @@ This "app" consists of a simple list on top (with a button to remove a cat) and ``` js const app = new Vue({ - el:'#app', + el: '#app', data: { - cats:[], - newCat:null + cats: [], + newCat: null }, mounted() { - if(localStorage.getItem('cats')) { + if (localStorage.getItem('cats')) { try { this.cats = JSON.parse(localStorage.getItem('cats')); } catch(e) { @@ -140,13 +146,16 @@ const app = new Vue({ methods: { addCat() { // ensure they actually typed something - if(!this.newCat) return; + if (!this.newCat) { + return; + } + this.cats.push(this.newCat); this.newCat = ''; this.saveCats(); }, removeCat(x) { - this.cats.splice(x,1); + this.cats.splice(x, 1); this.saveCats(); }, saveCats() { From 9969aad615d4c7c0608e95ca2a981fb6bd068332 Mon Sep 17 00:00:00 2001 From: "Bruno J. S. Lesieur" Date: Sun, 17 Jun 2018 18:24:19 +0200 Subject: [PATCH 030/760] [Doc EN]: `typescript.md` (#1679) * New in with + symbol Signed-off-by: Bruno Lesieur * Review of 2.5.0 doc Signed-off-by: Bruno Lesieur * Review Signed-off-by: Bruno Lesieur * Fix syntax typo Signed-off-by: Bruno Lesieur * Add space between new line of documentation Signed-off-by: MachinisteWeb * Add @posva review Signed-off-by: MachinisteWeb * Add french str Signed-off-by: MachinisteWeb * Change directeur to director Signed-off-by: MachinisteWeb * Fix EN doc Signed-off-by: MachinisteWeb * Subtitle for typescript.md Signed-off-by: MachinisteWeb * Revert instance.md Signed-off-by: MachinisteWeb --- src/v2/guide/typescript.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/v2/guide/typescript.md b/src/v2/guide/typescript.md index 80a13033ce..b4d7723208 100644 --- a/src/v2/guide/typescript.md +++ b/src/v2/guide/typescript.md @@ -35,7 +35,7 @@ See [TypeScript compiler options docs](https://www.typescriptlang.org/docs/handb ## Development Tooling -## Project Creation +### Project Creation [Vue CLI 3](https://github.com/vuejs/vue-cli) can generate new projects that use TypeScript. To get started: @@ -47,7 +47,7 @@ npm install --global @vue/cli vue create my-project-name ``` -## Editor Support +### Editor Support For developing Vue applications with TypeScript, we strongly recommend using [Visual Studio Code](https://code.visualstudio.com/), which provides great out-of-the-box support for TypeScript. If you are using [single-file components](./single-file-components.html) (SFCs), get the awesome [Vetur extension](https://github.com/vuejs/vetur), which provides TypeScript inference inside SFCs and many other great features. From edbbf1a4a01a50492da9bcdf8f49b999ef2d58da Mon Sep 17 00:00:00 2001 From: Fabrizio Cucci Date: Mon, 18 Jun 2018 18:48:47 +0100 Subject: [PATCH 031/760] [cookbook] Dockerize Vue.js App (#1483) * First draft with 'Simple Example' section * Fix typo on Docker 'build' command * Fix copy of multiple files * Remove unnecessary whitespace * Fix typo in webpack template link * First draft of 'Real-World Example' * Update 'Real-World Example' with multi-stage build * Add 'Why Dockerize a Vue.js App?' section * Rename 'Why Dockerize a Vue.js App?' as 'Additinal Context' * Add 'Alternative Patterns' section * Minor fix on 'Alternative Patterns' * Fixed typo * Update order to avoid collision with other cookbooks * Clarify why NGINX in real-world example --- src/v2/cookbook/dockerize-vuejs-app.md | 134 +++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 src/v2/cookbook/dockerize-vuejs-app.md diff --git a/src/v2/cookbook/dockerize-vuejs-app.md b/src/v2/cookbook/dockerize-vuejs-app.md new file mode 100644 index 0000000000..3491268038 --- /dev/null +++ b/src/v2/cookbook/dockerize-vuejs-app.md @@ -0,0 +1,134 @@ +--- +title: Dockerize Vue.js App +type: cookbook +order: 13 +--- + +## Simple Example + +So you built your first Vue.js app using the amazing [Vue.js webpack template](https://github.com/vuejs-templates/webpack) and now you really want to show off with your colleagues by demonstrating that you can also run it in a Docker container. + +Let's start by creating a `Dockerfile` in the root folder of our project: + +```docker +FROM node:9.11.1-alpine + +# install simple http server for serving static content +RUN npm install -g http-server + +# make the 'app' folder the current working directory +WORKDIR /app + +# copy both 'package.json' and 'package-lock.json' (if available) +COPY package*.json ./ + +# install project dependencies +RUN npm install + +# copy project files and folders to the current working directory (i.e. 'app' folder) +COPY . . + +# build app for production with minification +RUN npm run build + +EXPOSE 8080 +CMD [ "http-server", "dist" ] +``` + +It may seem reduntant to first copy `package.json` and `package-lock.json` and then all project files and folders in two separate steps but there is actually [a very good reason for that](http://bitjudo.com/blog/2014/03/13/building-efficient-dockerfiles-node-dot-js/) (spoiler: it allows us to take advantage of cached Docker layers). + +Now let's build the Docker image of our Vue.js app: + +```bash +docker build -t vuejs-cookbook/dockerize-vuejs-app . +``` + +Finally, let's run our Vue.js app in a Docker container: + +```bash +docker run -it -p 8080:8080 --rm --name dockerize-vuejs-app-1 vuejs-cookbook/dockerize-vuejs-app +``` + +We should be able to access our Vue.js app on `localhost:8080`. + +## Real-World Example + +In the previous example, we used a simple, zero-configuration command-line [http server](https://github.com/indexzero/http-server) to serve our Vue.js app which is perfectly ok for quick prototyping and _may_ even be ok for simple production scenarios. After all, the documentation says: + +> It is powerful enough for production usage, but it's simple and hackable enough to be used for testing, local development, and learning. + +Nevertheless, for realistically complex production use cases, it may be wiser to stand on the shoulders of some giant like [NGINX](https://www.nginx.com/) or [Apache](https://httpd.apache.org/) and that is exactly what we are going to do next: we are about to leverage NGINX to serve our vue.js app because it is considered to be one of the most performant and battle-tested solutions out there. + +Let's refactor our `Dockerfile` to use NGINX: + + ```docker +# build stage +FROM node:9.11.1-alpine as build-stage +WORKDIR /app +COPY package*.json ./ +RUN npm install +COPY . . +RUN npm run build + +# production stage +FROM nginx:1.13.12-alpine as production-stage +COPY --from=build-stage /app/dist /usr/share/nginx/html +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] +``` + +Ok, let's see what's going on here: +* we have split our original `Dockerfile` in multiple stages by leveraging the Docker [multi-stage builds](https://docs.docker.com/develop/develop-images/multistage-build/) feature; +* the first stage is responsible for building a production-ready artifact of our Vue.js app; +* the second stage is responsible for serving such artifact using NGINX. + +Now let's build the Docker image of our Vue.js app: + +```bash +docker build -t vuejs-cookbook/dockerize-vuejs-app . +``` + +Finally, let's run our Vue.js app in a Docker container: + +```bash +docker run -it -p 8080:80 --rm --name dockerize-vuejs-app-1 vuejs-cookbook/dockerize-vuejs-app +``` + +We should be able to access our Vue.js app on `localhost:8080`. + +## Additional Context + +If you are reading this cookbook, chances are you already know why you decided to dockerize your Vue.js app. But if you simply landed on this page after hitting the Google's `I'm feeling lucky` button, let me share with you a couple of good reasons for doing that. + +Today's modern trend is to build applications using the [Cloud-Native](https://pivotal.io/cloud-native) approach which revolves mainly around the following buzzwords: +* Microservices +* DevOps +* Continuous Delivery + +Let's see how these concepts actually affect our decision of dockerizing our Vue.js app. + +### Effects of Microservices + +By adopting the [microservices architectural style](https://martinfowler.com/microservices/), we end up building a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms. These services are built around business capabilities and independently deployable by fully automated deployment machinery. + +So, committing to this architectural approach most of the time implies developing and delivering our front-end as an independent service. + +### Effects of DevOps + +The adoption of [DevOps](https://martinfowler.com/bliki/DevOpsCulture.html) culture, tools and agile engineering practices has, among other things, the nice effect of increasing the collaboration between the roles of development and operations. One of the main problem of the past (but also today in some realities) is that the dev team tended to be uninterested in the operation and maintenance of a system once it was handed over to the ops team, while the latter tended to be not really aware of the system's business goals and, therefore, reluctant in satisfying the operational needs of the system (also referred to as "whims of developers"). + +So, delivering our Vue.js app as a Docker image helps reducing, if not removing entirely, the difference between running the service on a deveveloper's laptop, the production environment or any environment we may think of. + +### Effects of Continuous Delivery + +By leveraging the [Continuous Delivery](https://martinfowler.com/bliki/ContinuousDelivery.html) discipline we build our software in a way that it can potentially be released to production at any time. Such engineering practice is enabled by means of what is normally called [continuous delivery pipeline](https://martinfowler.com/bliki/DeploymentPipeline.html). The purpose of a continuous delivery pipeline is to split our build into stages (e.g. compilation, unit tests, integration tests, performance tests, etc.) and let each stage verify our build artifact whenever our software changes. Ultimately, each stage increases our confidence in the production readiness of our build artifact and, therefore, reduces the risk of breaking things in production (or any other environment for that matters). + +So, creating a Docker image for our Vue.js app is a good choice here because that would represent our final build artifact, the same artifact that would be verified against our continuous delivery pipeline and that could potentially be released to production with confidence. + +## Alternative Patterns + +If your company is not into Docker and Kubernetes just yet or you simply want to get your MVP out the door, maybe dockerizing your Vue.js app is not what you need. + +Common alternatives are: +* leveraging an all-in-one platform like [netlify](https://www.netlify.com/); +* hosting your SPA on [Amazon S3](https://aws.amazon.com/s3/) and serving it with [Amazon CloudFront](https://aws.amazon.com/cloudfront/) (see [this](https://serverless-stack.com/chapters/deploy-the-frontend.html) link for a detailed guide). \ No newline at end of file From e93b8371d73e4467dd8152703ddf1db423f489a2 Mon Sep 17 00:00:00 2001 From: Alexander Sokolov Date: Mon, 18 Jun 2018 20:49:38 +0300 Subject: [PATCH 032/760] Update debugging-in-vscode.md (#1663) --- src/v2/cookbook/debugging-in-vscode.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/v2/cookbook/debugging-in-vscode.md b/src/v2/cookbook/debugging-in-vscode.md index 9e9751c838..2e133dc5a6 100644 --- a/src/v2/cookbook/debugging-in-vscode.md +++ b/src/v2/cookbook/debugging-in-vscode.md @@ -24,6 +24,16 @@ Go to `config/index.js` and find the `devtool` property. Update it to: devtool: 'source-map', ``` +With Vue CLI 3 you need set `devtool` property inside `vue.config.js`: + +```js +module.exports = { + configureWebpack: { + devtool: 'source-map' + } +} +``` + ### Launching the Application from VS Code Click on the Debugging icon in the Activity Bar to bring up the Debug view, then click on the gear icon to configure a launch.json file, selecting **Chrome** for the environment. Replace content of the generated launch.json with the following two configurations: From 53b11fbbef932f3ba2cf0596fe198d6be8d70e23 Mon Sep 17 00:00:00 2001 From: Chris Fritz Date: Tue, 26 Jun 2018 10:27:38 -0400 Subject: [PATCH 033/760] remove outdated information about polymer from comparison --- src/v2/guide/comparison.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/v2/guide/comparison.md b/src/v2/guide/comparison.md index f0f11eabf7..2c606826f3 100644 --- a/src/v2/guide/comparison.md +++ b/src/v2/guide/comparison.md @@ -216,15 +216,9 @@ There also seem to be philosophical differences in the API design which if you'r ## Polymer -Polymer is yet another Google-sponsored project and in fact was a source of inspiration for Vue as well. Vue's components can be loosely compared to Polymer's custom elements and both provide a very similar development style. The biggest difference is that Polymer is built upon the latest Web Components features and requires non-trivial polyfills to work (with degraded performance) in browsers that don't support those features natively. In contrast, Vue works without any dependencies or polyfills down to IE9. +Polymer is another Google-sponsored project and in fact was a source of inspiration for Vue as well. Vue's components can be loosely compared to Polymer's custom elements and both provide a very similar development style. The biggest difference is that Polymer is built upon the latest Web Components features and requires non-trivial polyfills to work (with degraded performance) in browsers that don't support those features natively. In contrast, Vue works without any dependencies or polyfills down to IE9. -In Polymer 1.0, the team has also made its data-binding system very limited in order to compensate for the performance. For example, the only expressions supported in Polymer templates are boolean negation and single method calls. Its computed property implementation is also not very flexible. - -Polymer custom elements are authored in HTML files, which limits you to plain JavaScript/CSS (and language features supported by today's browsers). In comparison, Vue's single file components allows you to easily use ES2015+ and any CSS preprocessors you want. - -When deploying to production, Polymer recommends loading everything on-the-fly with HTML Imports, which assumes browsers implementing the spec, and HTTP/2 support on both server and client. This may or may not be feasible depending on your target audience and deployment environment. In cases where this is not desirable, you will have to use a special tool called Vulcanizer to bundle your Polymer elements. On this front, Vue can combine its async component feature with webpack's code-splitting feature to easily split out parts of the application bundle to be lazy-loaded. This ensures compatibility with older browsers while retaining great app loading performance. - -It is also totally feasible to offer deeper integration between Vue with Web Component specs such as Custom Elements and Shadow DOM style encapsulation - however at this moment we are still waiting for the specs to mature and be widely implemented in all mainstream browsers before making any serious commitments. +In Polymer, the team has also made its data-binding system very limited in order to compensate for the performance. For example, the only expressions supported in Polymer templates are boolean negation and single method calls. Its computed property implementation is also not very flexible. ## Riot From 9fa45f08194f9b80d07d5d6332ca7930afd9217c Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 28 Jun 2018 10:55:46 -0400 Subject: [PATCH 034/760] update React comparison status --- src/v2/guide/comparison.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v2/guide/comparison.md b/src/v2/guide/comparison.md index 2c606826f3..072bbe69dc 100644 --- a/src/v2/guide/comparison.md +++ b/src/v2/guide/comparison.md @@ -22,7 +22,7 @@ Being so similar in scope, we've put more time into fine-tuning this comparison With that said, it's inevitable that the comparison would appear biased towards Vue to some React users, as many of the subjects explored are to some extent subjective. We acknowledge the existence of varying technical taste, and this comparison primarily aims to outline the reasons why Vue could potentially be a better fit if your preferences happen to coincide with ours. -The React community [has been instrumental](https://github.com/vuejs/vuejs.org/issues/364) in helping us achieve this balance, with special thanks to Dan Abramov from the React team. He was extremely generous with his time and considerable expertise to help us refine this document until we were [both happy](https://github.com/vuejs/vuejs.org/issues/364#issuecomment-244575740) with the final result. +Some of the sections below may also be slightly outdated due to recent updates in React 16+, and we are planning to work with the React community to revamp this section in the near future. ### Runtime Performance From 78be5fca77ede2ae7e20036947b34f9f60efa126 Mon Sep 17 00:00:00 2001 From: Evan You Date: Sun, 1 Jul 2018 09:45:07 -0400 Subject: [PATCH 035/760] chore: adjust sponsor placement --- themes/vue/_config.yml | 7 ++----- themes/vue/layout/index.ejs | 11 +++-------- themes/vue/source/css/index.styl | 3 +-- themes/vue/source/images/bit-wide.png | Bin 28222 -> 28340 bytes 4 files changed, 6 insertions(+), 15 deletions(-) diff --git a/themes/vue/_config.yml b/themes/vue/_config.yml index 6a3f09a718..a997f01584 100644 --- a/themes/vue/_config.yml +++ b/themes/vue/_config.yml @@ -6,13 +6,10 @@ vue_version: 2.5.16 special_sponsors: - url: https://stdlib.com img: stdlib.png - - url: https://www.bitsrc.io/?utm_source=vue&utm_medium=vue&utm_campaign=vue&utm_term=vue&utm_content=vue - img: bit.png - wide_img: bit-wide.png - big_width: 120px - big_height: 120px platinum_sponsors: + - url: https://www.bitsrc.io/?utm_source=vue&utm_medium=vue&utm_campaign=vue&utm_term=vue&utm_content=vue + img: bit-wide.png - url: http://tooltwist.com/ img: tooltwist.png - url: https://vueschool.io/?utm_source=Vuejs.org&utm_medium=Banner&utm_campaign=Sponsored%20Banner&utm_content=V1 diff --git a/themes/vue/layout/index.ejs b/themes/vue/layout/index.ejs index aa01560739..af60370265 100644 --- a/themes/vue/layout/index.ejs +++ b/themes/vue/layout/index.ejs @@ -29,17 +29,12 @@
    diff --git a/themes/vue/source/css/index.styl b/themes/vue/source/css/index.styl index ba607920ed..347a87b7fd 100644 --- a/themes/vue/source/css/index.styl +++ b/themes/vue/source/css/index.styl @@ -79,12 +79,11 @@ body margin 0 a color $light - margin 8px 0 a, span, img display: inline-block vertical-align: middle img - margin: 0 15px + margin: 15px #highlights background-color: #fff diff --git a/themes/vue/source/images/bit-wide.png b/themes/vue/source/images/bit-wide.png index d6bb2b04c9d4d1911d31c105fc940336a1c51210..574b9de4030c3c0d51d5f2187abee626f8142691 100644 GIT binary patch delta 27615 zcmZ^KV|XA-w{>jWwr$(CZ5xwx?1^p6#C9^VHL-0cGqEPgH|MHb!m{p03%@+6KCgQ=N9GW#mE;lS z<&Y8;Ws#JUl;9Q@m1Io`1S9yLPQ3r$PMu&@DcN9T(C!{;mR5WgDe_<(DJkHhFq>RL zq#z)6>nWSyj(`XW3Je5Tu*j^?;y3tzjK9}mCb0jt`qBPvBtZ$G{7<+4V?oIO_g0wn z{~6?eEfj`-2Z8`2)%nkm|Hl%m|37Yk|1|%vpJv3ZtJ>drqxnnQaN~bM$4{QgQ6vjc z9`>K1DWIiLb2+=Q zjIK&^O*8GtE|l{8msraj*n@XpZU&M1%D2j@TA{C1Y}FG;Er3JS>knPVox+dpl8L;^ z&8i8$yNs?@lXlhdo3hA|W18ssZSrrI28BQ&hBwSN!Vs?~s`nhPCOddv&z}q2sSQRr z+t!3}S3N?n41XgO@)FrJBjkUL&LA2Vpy~UKF0#U{oDQ0Xts#Sq@I5y`0)ooST|-s8VWpU|e5+Q@R-KSxh0upynsNE9HLvA= z^i60UiMrKuJ|z zNj1#5?DdTL{H|@$?Sb2k{eN66sa}?hjaFge`i1W^R*^O^u%e@KYoV^)s6`Lcm1stA zQQ}jA?%IrQQ(s5~zeQ+R-W+5`m{Dr6$CbP<1brgheE7uin~tn67Ld05kvu<$g>kLY zD~`g-Et&9iJBI`d{+s_ch-3?i@O+@nZ*jl9hUK@v3)L+TMO0^nTIl98)RDN!g^%BN z#W{R$(7tiD9m8t;nu7W8lqzzgn~HTYG0@dlosfvy*Br?HHV5JSU4Yq0bjC_RG2ppL z&nNBm4_b%Rf1|Y&|KXEHM%PB)c%v@Kmk*}!((eXK2E6rS2;s7Lf|9YsYKl1|lQ6_E z7=;ZHeChMT88tvPwra<7-62jW^KRE|4p4(0xteH|Y}y%0$Z8N+DkWcfa<0%^u7WJ9 zVx!53{5NaF>MIMSQDeDj&2EBT|5(mCi8hm$sd?v0n(ccsB!k60gB0vabKS`vVflog z*4YC;(e9^=vpnfxJ3|;&xApSdA){G2y-Uq^R~O;v7k3gWkoDXz6g08MkI4Q-0F-K~ z!j&MbQwah20Hd?4pxYtdD?XCDxeg0@QuWQn;mSR+N>UrNu*2r?ocd%*o4Yy>{N@+^ zeP#(E$s`hHjDjnZV7gyglKRct;L#|R|HU6t9R%viTkcuVttfhSVSOrACDG;3mqYl_ zp&>H13Q$@~;b_b$O1{%2(M{=S6bb-i7qC$FhS)K~Dow2r^KaxZGK~G654v6~=|@%k zA2cG>0eP!(>mY;07R_y?BFDBtN7V-b4OXR)l9`tfO#B`XY8~KK4xq7Rki&CXhegg) z2nww=wG~qhMKg$JDNc^rdZQ)J=tcWtAY_#9OluN>a zWUdBM0W2a~jgB;wJh|>xxJM;qg81Ch&tb9U5zhX@PK zsz@TGg^<$?HyA*O?oQ!K!q8aBtA7-ocBSNwMl9ACf8|^~PTyZc#fUS+^M3^U!TkiW2Aun{?!R>5ar7OO)4kk;mi{K*;*!+**5E z6c&bt4Z{AXdZJXnz!(&bJP22@eqcs1gusDQkWex`Zi-lcWv~DQ<>RKtu(L6^g$839 zS4ecX1%*nOC%MOt?}{83$)*@Ih8R>*j}fO@mCs0qEg0AhlG2Q*lVK?&df z5StlAt0z^d64h;~&;A~))O+(Nx#pb+xyOGcBWu$Mt_PV70xl%)#Q*Oq>CfJnk~@&# zTs5xxU{a1wrQ%Sa5p;J-vbHQ*+_yl-Ff&yH3?fLkun60TiiZIP=fVal((fZI8@~tD zAsT7pZBc}H$4m1%;-bGZwHWYTflB%C=*m@_;$(8;xRZG)V33433Ey7Pn%l$Pa9rMv zo)6+5F8_Dh9kDAF{cmKGULjdG(CB7~LlBfhv7s!Nj*`z0DUEY2^-d_q!Cd8 z2_OskDIM~u|FrIjx$=vollXt1EFiaN z!v9VNLYo_=vw~#j`Jm$<`!|tLLc))ekUwx&0qVFyK=@uOHd;3U6M7}S_~@@kbf{N^ z*o#t;-2l)Re%-XYL#=#n-{m#X=be>QID{PQ`BHZ0nA0kRQ*ne8{pb2@#s z3NfcGz8G!-$uW9mpBuuxE^2)tFp2XC7yoHlsZf4P*FpKW+=~2G>HE@X(yfa)VjUJ0 zWlsr=$4-`lk)bv=AKKKPM2KpNj%7#ida9wbVd=FYbkHT+7ZMD}QNj?UpXT%hwoqQM zyUG7U4t9%zI-L7sq%SfmZnGLKO0(X+%2gY;ck>U{JMiC{6-+r7=>}=+waYzGKd%?o z+}l=oq7G2ii5OQ3^En?%wOmK)Th+27Bm>q_|C9@`Ok}KTYSA(?j~FXhF(K4S3p`bE)41FWCXN?Y|hQ#_Uk910qo3a%d%9gTalmRAy7S4M} zfASptN9Y9Z5tM$bqq3HI>g9(tp+t!{Tq#x@ec%%1|GH^G?zS`eD0=;oi4LP*ll%4d zl!YkvK9SR}%+@}Nz6d*|-9lWxo8apFZanIz9Zaq{4a!;b(tLkPC`kfF@;G^>@(|jU z7gPRu<%Bxw*}mLeDuBw*maT75mww|E7^P5-`C>aceekr@`$PZGD;{%kMf?+E5n3AL zg3~wqpS&y#g@A8hltgSlsS=LNoFQUm6(IW#pQ)ETiv(xw3-Yp?09q9<*_^09!eS0- z1D*Hd%v4O`>uhUnQ5i_WSzzOP*^5uEUsBQ}OC*_F<8@&kpf*aDn_8WKJLmQtmu8w< z$HJ3r!tIk}9qeUH{hnkMYar-l;!?XzsMADgNAOh#@4P_D(a%ZapSTMgvT%oP!YXNl zFT*czFwowRq%4Osum#y(i%w)J*`>K2@8~X*~ZbU|+?XyL3D`?sv#JEe~N*q8lf{CP93vIc}4l3@DlmSFqv*`IzhhctWX6 z4Y9E>HM9Cw+5=Ocl&TQvf7Y4ZWFh-jFjN9GvofLbAL;ZXYP^p*OJN)I=-EX<513eU z)roX;a!JtSfwE8CjicYB77F0BA_HKK$cgy?ff*i^2+_E>uw$ZT?;uAKNqLCn%O956 zg7~kP|Hus7&$&{@BZmq^VL9)5~}cwZLy&?;GvLk>$90<;)L&in*vzX zOf`g|UU3C>3|(2e)|8W2GFL!i64Jh)W$EILbKj&|MVe&Q=Vni<9tCws*W0Q5!jF{t zWpPROFHZFpzGE>sY=wjeeO7!J%G=^_HTI{g(ZfQ~Kr^Cro4KA zQ8CnP3eOqo=zv8eo++Qj2I%Is*RBd;fy(M5gOlXV3boX8;v6YI$zT5Cf~zVrN(7<=y=SVt+AtxX$kVGJJ!{mjWoN(AFT zz#)bC@!|ls-}V*k3h-)!Ups9?tKZQD#!K{1lZNUkuwKzY=DCW+12^w%h=qAHPzm-S zI!;EZTS{Aq)s9?*MdukX-hmpVMQ+^udD{Q5m!|2uAfbv0r$DQokUSmHUC;b-!2>RItLs zN9o;^)NF9SG76PuKm(w&*^@n&UPc>s9hIlikDIjj2Xqe6YYHu464Zse0+nBO32qrKX)d{I3B5jhyiFCq}Ga@3?t{CX)V1J^e zf5r7Z$5)ULn?p}k4i}}(ag{-`mOm&#`3jWV(BzNDx5b!G<5aNnQ>^@!j0Q)`GO-gQ zL%)@?-AF>0XeQt3(qWk@9_q_2C|6W9bP^yyx0Q4=8`)fKR&l^h`6vRy z$HD`(NX{ho4=zlFK~~9CqK37Vo4%liWp(j>pFd&^7MqMM?KPM3LSg6#4I3l*4Xnl4 zv`$uYtQm8J1}LD+X2XtZ9CdUB)5AkfcMU11Z7)x=S%j;B6Ii{ND;%J^s#17Z-BF%j z6?O5!&h;}~A+j`%M3a%5roRf@6tJp0w?PXfE;7pPU8T&7kO0jPzwo&Qm5ra=1X5-{xwzi?A_%B6n$(GV@Gz_;1q z*mv8@!$hMn2I74Z?7SxXRX=)|p(=)jAW#B*3YJ!rmm92IfCtDA}z)ax#PD8lf+;Vh1 z-zu*v#wykJD82@-nU+}nz3)YhxOu;g#rVIw6%!;>2EQ`AMQs=Q6yf$1LU9YVqr*r~ z>I#opa@hPVMvfasQgW@^QxMkObf(&^Sm~%5V=XgtEP6>_h@qxs6_yet67^!TTbSgk zfFo2!`-IcO&rlaXLZ_+mB+!Q=8iO?dTLiK6{<=)DAb{BoZ=D+oLJ}N;%bBo_sSKO} z5|ECjZ|&F{O*h>MMNo(y@RP{KFIV1iK7VNbSdfGa` z5Ag;teRi!qm?zSQOW@r~s2b{B#ANcp`Zh*`r)y=Af5Foi++jPogIXq`~hO$5Bc{xRr;cuBEfen1DaJ7+Fc4%0au<~t7E0Fdry;V<&DSV%vrC^)n z^tL+`98e=5LxME_=y6$OI*Ob0Kgxyc9?VnZ5LR^pMM}94HW^Xz^hXyLx+(z$r7?A} zFfc&Y+w05Kxma{g2__N#2J-80Ieaknk9xM*2E}CysL3`%okFkn_-7o?2@f%)l z21)&1C$_eLYI{w`wR~Fvjf%60U~w*&$}Y~`G-&uZ9goC@0Xh8A6L9{`ABFly@hbfl z8HO*^ztCC@N&oACc=u?VMA1}CeO*q97YlO&_s<;;>0x40qKH*_Z5OQ{k!=x6H0?R` z)L(AQqT1hJHXcBNAzeZ)l42VK8oWqV5N$}c2z;yA{C2kTbQ=%Ve(@(1-dn8189`*f z?r-vms03ZN-c{|M#=VjBvv&uh2QXnY2ATA&@5>mjIY}V6rxg1*CzMgJ3gK{VyKsLq zjzoR+XdMos9KrNN)^$%L#4d#xwBnT|J5$k2HSa3U6>8l7Ml-z|lV6D>_oI&Y0N9ja4b67E4vH|+GIE#mn z3jryt)_vf?=>8M0YfeTB_3a}OReb&t!;}99Z?Oqb)I_{f7Uw{`r^4-rMA9Q3u)1ah zujP%gsU)Z#bkLpG!;BoMBk-^XR9;q0(6Or|lIp)Ax_0|U+0Nhn#d9zH(vBU&DR4K% z>0fUZZnbog<+oh8`Vj6gZ1Lo%f;+!Anm+ku-@|o~9Km4XP&6DmSUO zR?viMCiL9{7iOw5vQAdXHP&b#sszbZZR&X@hz~2)ycE+sEH->wkyumjq6!gl?8HSVq7fev{qtx7=>*v%NbAA zM4c@5`9Il(1Za~z72H(wFR;Mk_C+V?Lw~$p*8}(&Vr8xaR4f}f+-N&puf|bM0)Z5;-}8H{j2H%*sD;|&!J|Lo2lwEjgdmy0PxPnuw~;=;^)=}fgG9dE{faiE z$$XNgy4N0Fz~#hhDZPfJF+iX-&eZ*U?}VOWCL+!LXA{`o!00h5;Z*E|v~|D~uVT^B z>JXk(E!}6dBchYDhp71;%_6q*uc1rP0OX$0F5Lp%WP|X+okeApqc7%be$wzyPp+8D z0m*THr#)a)`9%>(`=R+FBkQK=@hPa3)}+y4oHip$AWuOvqWZVrpB;PZmYtBJyRYcc z9bU6THxh$9Yjbk8U6>@; zwHQNEgj~P~{HA)e(g*T3BKC^i0qBgt7djk0zCsvn?;(JH{`~^PMXT)Ua3Ixa&DA8g zod>QG=W~5&337w$TEoH);nDvPZ}qOwut@sK-@*dHsrOMx$NNA^r_+!09{Ewc#K^k; zpuq|>rbD|D5IF&x@pWZ-q<~}X~S@L zUuTi*f?E_lUgY6H<2ysmW7?MEZehcp`@o zYSy0d2?`>g142IUx-*dhM8~5Ch>S#G*u7V@BAy|!y)KlOjb5-6><}ro&H_sGYrv+6 zIPFhYx0|UrPPQ1^<%{#${?I4KP)U01K6{}D0-oCn=#7K-Aq)e*?O%J)1s|A;)UZ$) z_Z7e+?u4nuArI7rrqvCrUvOnYS4Nk99q-=WU#Vih9{IKMPbZs-_soJT7(5#{6OBUTP z&gBNHIw?&nm}OCtOy1Lsq=NFs8H7uDWio&l-z@ez_WMO>W@Wt-_=l1;vA0K02kzl( z^-b!TC~DCG!69v z3y6Z!qItiH5*jNhRbmoesh~)$5a{cRnHpMg;6{TlM1&SY&_eHrTY`aPoo@Hm?zugXAlSqfr@!PMa*g7(I8ALShWl zHk^;6jy8UgQQE3JU9CLwXK?Z}h}A|K*xeV(%+7VQ6)_1q(Za3|9iEdNJg68!zue>l zn+bept@rzt7VgM*ycRjwz$`$(wbPb&=E@6;o7WMg+m%e8DT0(`wowW(g$n4&Z2C-d z9ikXMnT+d=e(?(b$$$%saNla4CT=b`*~(wah}}%36G}dJ+0PXndky7^@~S}1_N7MP z1o94LJ>=WgX%l5bVd!ZAb(ts&G%S`Nmwr0$d{mWtr=FUPvuL_W8G4(9Qzj?t0k#;{ zM=s*X=7hK}m|l^qS0(5}XEZ=6cO`;bM8dsByy2bhjiNib${@Z>d_bO3KWQ|%TW>x& z%qRTk8N6s&TivmWAN^x?K2pwn;JybBq=cW^HK_9xmED7kT?uzVKfK&jA1C}J-;}2!jL3G6MrU)w@15#hR8UaFHmt>LZuuj76f7T8nSF0B5hs9p_Vz3d!q zRLkqK`oygFIYLoTSOgG3$)vqF>{Id?dAkA-xHg+0p)!#Af~D)i2NQOX9|MN$9?1Vz z4K8UkOupa3O%kO1>^+chS!v^#9!D3ietM@T7^5drkha$Bh`Qv=+#U9*s>lduV*>D#gCss1c{o$!V4?{aEl z2ypnuXcB$mP0)-l2XxP89lepHk{Cbyf8<)s>$o)c@Yfj#ufMoB_%2z=BKY=3u<1xo zBB>t@q}Q1c?gHEVxWgu*C5#joX$z}bDJ8P*Gp%krA96(AA-)idHvHO$Xtjw8q?zgv zvBmvg8OB48!E2iYvTC3V%t#a_|5(;O)95X{9B3j0mn2Jv&3e?OU!;8D3kg&sy72!r zL3YqPW@B*w*J7SpGU#?{TDJx}&7XQS8&S@(GMay9}Wt|6Vp|{6hL?LB9Y) zwd+&plWa z=7zL_;Omu<{igu*gsnDh1k5L80)M|if0cf_HcxYYTE6Qubd>u(rLs9AV=?$qLYNQM zuL(3y+Xvw3?l2YR7^1(JLFim&j8sBWHi9t}f^xd0ecJ-1mFh^>RR<>3eyiaQr!*NX zx>bFAk12Xmw6xKLmfeSn;`)3@;xW1fp~lY-`(CQJc*P))KG#Lfow2P7a7AAny+~>n zC+F)4`Vu@a%~;~nm*fvIjycLYBZR^9dELSy#05YGybBsxQ(Yl+fG1sKG>pSCHBgq0 zU`CD>9hnRj!q`8?TIVQm)(bdQfv@SU7|&5xm2zF>J4lC|h?8Q;Fu-5U`&ZHdNPoO? z=rXEqKc`sj(hgU!SVU_gJ<9~HA?`q46>r`do&4+QKA{@y8`i`PbG{kFG^p6lT@HC? z`T>w36E^+`S{yoPNR_J2&V5}LQx=pwO4eH)DZDR_Lm`<-wBQu|W4v}dsfl<~k5iP0 zm2o+_AZl_kEb4T94l_}~tv;lB7V>7ejfIek%mOEE_1E!;;a4wP!z+W%z&*B3s}(Cp zlzjcGg4Y)hu=F}RA$>QS@erAKGdX$Tdf38Fni2Vf7tThc|?Kj7e6oYwtakD*!d5 zkvq=@6cXwaSU7!n$EJ4R$?xW{v(->(;Yso%UJB>F59_a`n88G#Ht;6KSuh%Of_OO) zg(vjfetBMCc7C*TE}sBif70*Cml?wZfCtPjtfZkLdOYS3xM?GnoJUQ44u2s7}qzA~LKG2Rxi451`1{$Y_mek zSMckYnR5 z(_!-wk`>i~XG!nsK@5oO>+oy>OCz24b#&=Hc7Afv3|zm3tWj30VZ(*(AC+^4I>qD$SP$x)o2GPwAZEt%mi7 zrU8K{L+lL9k&lOR3n@rS>;Wq58Q-@HlyvVu5jxz94(^&CZgALt zd*z5enni7CZ0OsJ3X4>4f9is39B3_Hvv9~f@S-!oyH%QM4R}L z;sn1u<2txvLoQZw?uzQhe~DL{2&>OF*eFN%JU#>-6J47oXa*4O*f9jiTNe>OvA_G| zo{e(ylD7wrFBYNqa?Z@|2wA|STcw;c8KKXQI6rQ2dSKud(VTdXCNEDVs_6|9;|AN5 zGg3*FnwUATkpY6^wRT%D-S6GA8!LJCsyFN5FBXgwW#wL*3p<1zkR=q;oMG2vl$nIl z<{(W8X_Yw=#fF>%%e)yB*bl6b)$-|OEFy(sp8h8|@;L2{J)78NtgtH1`oHXAAuobs zE-o_B2oFE(Gv8)|hkt2(ry2VtBaY{}o-d43HTc=`H<_|Ua?Q?-wA^xrM`8-C&4dyJ zQ+vNn063FM^ghHx*QF@&Tv*8^KL>?L!}&%|(t;nfaf%;p7Q8KQEEYzkGYkN3^?aM@ zy@DxM0|9u5_ve_6FY72z9Wf`_LIE1#j$WKcuqe=PpK}K4*q-HIU(bA!JC@_=8hWUr zsqyVq=KzfxFR>kPVy+c0+)J|wbCP@zkERal>4GPSShJ?Bd`1UsA_aIET+WKBbLVhv z(;BFQ7?qk{cX$Mb>rl)p?EVSC3>vnjlnLYWoi?Xc(46ZXELk#!MbHCzXcE=0WpDvS z){xhmTu}U6$b*&L8H3l**I=BE4cV20ul}ul;DEPd#8D+;clMVhLQU4V6l(jIh`BuT z*`)=@3+D|meeNrV&R4XX&KR*%E)y3!{TY6&Te$GJxisRHZvzuZp8{t^ zMn4qfd*=JXalt#gIpfFm5c?I=X$I+o2z|Cawh(|>8cz!ob)@hj2O(H zs2wf6+5kpSP#0S%PPs1~k$*2=pSxdC`xCMD)$AOhW%QGN;AHPlg4@ z(U6^uAWJJ2eA^dHWmJZpUR~Uk%zit~;j4T6`h497**lh8^ael% zho0Y-A0P)|cb`T7o`kOr{(RYYHr;Z}F=^}0fMgWjTr2Z8wQEF5LHG388ZAJS7FtVq zF=#bI?YcKEK-k(c{2e;;j_0)&5WNJQgW2IXA)64Evh#j_UNR}dEbw+Xdi3!TvH;Ta zK%CJpY5W>sA$m~ZCf0dw3K;qaB?@&BQWMKnr#3MqIFi5diN`<@2FzdETp?9}pX-L9 zcY_F~EXd}R{ES?`x;@8gHMEr(e*2koV?7mW#&uK5)lJ^5n1)~Y#pGjyU#6BvDRTAw zz9ab}BagDukp2_al|febQtS7I>c~3BY_QO*(~rqG&C4>v>tB^@R6uWL=r<8#_Pku* z@?YG9gXN6XCraj1D`77@nLlQkiF$+g6GP8L;JJHc(tdfqitr`Hx^(!h8E3|Su{ps| zke0r6N09=+`Q#5zZNKwrfSjcU?(b*IUJLKXXtyG%-*?mKZBugoV4$PWHXT?3SN1e*?i$Rpo+xomIXz?8fqU4#(;Yh%QA92=Cg)Rl_`-aY) z6`Wp}o8!1=nOtodV?!aKxYJhJHFbrgOfpSqANm*dbve5<)kBQM*8?1S|U9iHY z<$-RcDQ40lFamf%Z3XXUJ|h*<{ovkC@!-pIc}5wq6-r79{mF)r*(p7S*aP!h5hhkeEyhJ^^Phcq>3*pYEv+h&%*s zUkY8vI0qI8%DR3@@H|3B_P@ti*lHJTVOuEHRISMWbi5Z@!AHa~SX{X=pR@HKduL=@ ze~zb26x*+adE}T)y zIPh4s=ppXIl_;eeJ55Jg8NJs&V&mbGcb2>8;t23$7tlFhGcWThzy64kP?g7Z$R=N5 zoCfQdpLL!ssI2da$M(G<0H97+%dw|-Kblh~dS}=}(%PZ>v90!(<2B3#V7;i=c^YMi zBEtxpvM9;7n7`9{C89G@m8O;2WQp1@+fVbLJ_`6y{?&%XrJL}daIzjP zI{-L&+Yq&6WmfVALqo&*fJvLt1oM+e)$)f$oQ8@0y7pRKH=!m79urhsp&u-K9~|G~ z6?r;5=@fg-rv-7JETn4Lw6F^N@yN`V94c(oIN3njO;=W9I0aAP@|Qr13#rp>nw~H* zYe3y0{aQ6}lg4AM+70#4Z9a7`v1?Y2pa4a0{9+@>^`B)+(+TX7GcrHEnGrgl7KT?( z=d5jpkv{_To;fk=T9$D-yjTt1TH^43U)Nw$7^O{n*jrex1}zh7puhmz~+rbG=JS{8r%B7BWGNdCIoBFVDa8H-ZvA-Bkl z)b3khmM(r(Z+6D*B3N=%iIhupRSV35zBA|S$?HRx+j^dyMMV&5nGrfN+HmqvHFz2L+ z9sEl94IQhR4#J*(3h{JQkzTBf54t#?vjcmGtjYf8`}&0ZiY?{x+{&aX<04Q~6UOIs zui>88HI!JWG({KC*&#h?vS{#QhGWImP0>D&zQ(?6ka_}+-+n3d#OoaFY=~hX@a?tf z{mW2Dp_u#G7(T}x8a&^(Sly8^*k-b}@P)pJx7NOv-X3r+;d(^8#VD8sQt4~RH{#Y( z55iG_3*z0A&j8L%zn|~*9xH(8@%%TejSSSW;3A_{pBb*_^--p9Zs688NwR9|`Is6& z^4@7@od+Xtv|Jj0%czQTTXCXEKszd6MqrdILw5USpHxZ=Q9Ud*y7>Kl7w)0wj@u^m zBCyH#)YkJ?o5$|3>_v|a=N+=APvV?&+`43iHK*OM*H!22f=WxN#uA_t6CjTUMYvmK zJ&nkhG4z?)`o|eGdOkEXANA<~?rQye=zAHYQcLFL*Acz%Zz`iWXVD12v@eMUtjjXE zQd05*a-8M4u>A59hs|f)Ku-+!qC=UjY$5cqIGxj-R+Kg9kCpp2jh7-)IL$EG0@E?C zq*ir$J~h4`W#w|%Zbcw)US~*XcBH2oZM%@ML2`M;7-w?Xo6cZCuk3fiU9gF#H5P)| z5G-Nm0knl>Yk61nN3D~Z%7vhb;CO@+1d)N!)#~)y{micQ&MUgZ1`C3rAWVxMBGpJ~ zAy5uY^pXm`cL)G@)vGnWG{H`TB?W#g2A}wxDhnvjYn2sp0Py3HL8r$K)!-o|XV;NC z5EV(tP5G4gG&WiK*Jl*x@8%4woge1p2fss^KcKuEa6@~7pKqh~hws%LJ;0oLj*WD@ zC#iHA>|BEgiabljM@@~PB_Z(K>Oeow$I;zHoWe7O{HP0CeR(;w%3WPdD3rhi1G<*F zeDmOIe&F5y76leyiNhYvb8x!=+~+GRb`t~Lo6HG0!aw~8bnAj8I}Wv+5_>(#8^$(K zrfb|QN)XBRhFpxQH{WBlgatPm9WIx&-KP^`o4!&W@3Q@hBs_(8bRv$pec{XK-xOJT z?y7?rOS8|K^E84!vRb0@u>Sf99ne@*+1_*6F7l&U(LuRI}yhtv4&+Kx%C|COXMnUMR>Pi+Df{yyo7LZy$K`y zG5@QutPI*~2e9n2 z2Wd20i~%uk+ObJBx?mgJU;Acy0u)oHPkQ)?!qAocG}J@BFP;9CR;qS`H`@A()4_Aom424zM$KqmvZ2ZlP=1fJ%I9R(7jF3axJfW zStdMyIq88mKPuTAKwt!z3vYI11(biIEMpKdsRrbCobCcXDyTx+T8C`9E9L1IJH8Ec zJ`LXQ%T>}`aIbHA^G}6-zGAg5)gCp56c<#e{Q6D_n@-gqTiEg^%C}tm@*pc$HaoI5 z#zI{`M9Ap2^COJb^5z)~{%}s^=lg3F+M!%Y-aN^=VyE`FXO#lYv#D%I3tVZ|jrlPQ zmKs1FjW^1H6mce~+i^pK3I3J({)H_S3vwVX`UOuflafGbOAFR~(u&r~RrnO8m&!YZ z44YnyIU;(_kD;j#Nt@ba`@*zp_c~{JaP3zQjL`3vlD8C6 znI^vb8Bq89dU~D6P*@MrlFSQN#+@6*#{@ue71WQ*4vfwpou;B}_^el>agf}7!pLj9 zR_HimZ3^F`i)$|WWhJ7xEFa5LFmuvu^S`gek-C(6uXBq$DuFm?G0#pCLFll6u`Dg? zpX!&Mu7c$qJ~cR2KDkFA2+oeQrboLzhc{Re^2ke2^}9tK7qb5~-H6DraJ{q;%<@l7H)T8H1?5>zs`H+(n32*_i@aoyWEWsyugJq?iuoQM|`m*1(`w9SG{68Po z+yko0P9JRTqaQy8JheB^1P3aTAt$G5aSz62Fvx|pM$SUw zHq%XG|JXx-=f$V8Rvvb-vSoK_*Lb;Ba8$Ql-7Yuike_$7>2B?a^YgjG53>VD9&@5Q zpLPuT3#=K8++kNg+5cS5zJFxEK~xdqu!K$|9rwQ@M;I_hbcCL@S5KBA%~71L!@be@ zC)|4!GCwH(=ug~X)3KaBGq$=R&}w1(Y#iwH^D6Sv6)ZY@9iJ2*bJVtks?Jxqx#Qi; zkPTeUhg;Fq^^n*o|9g@iJ<<+@{5aYgyyQ$9gN;+-NM@m)#TWNXx(XivQLQgSFKt4O zu7A}Pp>D_PZ){%lxYtG8t1QUySJiFsD_SqLVqmHyYS@Cn3ETJaD!${`=X|nMX{1<5~%@O&am{7m1!V z*;Ac3?d-_1_>y&juboCnOZ$B5;T5>6kyQSCGLLU4Gc1egO$qpBeyarJ+6w{KwH33} zno$PY;nagJ(68SrT~0}xz94C98+^9LTxgRfz#|qRnbyHQ*m(X~%Pi_B9^f=Ql5C3k zZe~}zb?Q6HF%RPkVbxs;1lJ+1gP7cKX5x~uGzn8~P(N_TJ(Qx78CPV)IF4#8%njYC zP$joqD`^P-VB7xddm?5U#$?c)GWP);mHQXQ~e4*kOjNdi}LTkjWMzf3<5z!Ss zd!=eXIhNtS4sR@uZ!Ff5Jh9C#d>003ur<&xrqU}HhlUakz#_^wB&^o|q2j^jz}Q&H z*=GdeP7TtjuERI^wgcAVAi=MqS-iWddmUNH^!+R5O5OSNub&Oi43#RQ5x(;oS0gr& zwP%m$44i#e^-%8?fC)!*8omRFV-TT-Xq*6LL5i3a%FnU1t!EEGDXnDH)pe$t71#ll;f>}kQ%2Jr->f|nBzQQhy6?CK7dPieI%immX zCE_+w-48lX>VqG7r>F7p)T|1AM2HiqgF(VJ#PqJ@_J{yp!1=U9xd$Jm-0LPcXuI8( zf=->-Y;YqnyYoy&OZ~g~UQy@?p8ZmmN-l!#tkG#^=TE}&HaoA-GV#cT+$pxok#@$Z zhTW-7%rXe9pKiwX7iWlfLm`-1I1A-wLeG>9l8E=wpv3i)Qk`74)yybVE(=r%yy=uZ z#Ft{3cvXXkfW)03HAVTkEB1pp`7E-gC9nG&1(}Mn_Yw`YZ%7xUg1S6-%sNUm2SPesu)YH z(JKLKqCDtxm-j)(Rp%9k2g`u;I@=oD=XYP%CN&2*U`sWP1En>PQmZ4|CR;n8$*(G$ zw?%jZyyfWnI(I-Y?RoRseIcIPsk+Kq`O`%Uoy+2jK{EU{)vuqZ!# z%GPHe0a_KDUPJqkmMG*@Cm%#DoG+VP>RynOp1JvBm-Tj($ecJC!(7*SuC+TiSKAUct>`Db^f3 zwEC_>TbfH!A!c1Vy9&R8a#8CR~*r6J&(P56+u48Rv%Ixi}9$JYDa; z@)l({>na^Z%<7!!V#(ba2fr8s_a-0ice4kc zVaC2=ss+p5ON&pD>VHWrWuq9B%_hKbDuXNGTRl57Kua<@`+L$o6RI^Zq4{%b;;+IA zrLO)U17EFakI1|J@C-Ajh@LjZKxL7^JPwG2ZPM&+Ed-7_70|~ z!aw$vh4H;?%QNUOc-u)SjBlfKsg7c8UtDTDfocwar9rv!DjljyA1V z-^sx`d>qxpK5T4k4S2DVMrYbEteph0Qx*sLRtMp$ z#M8!J0Zp&`Y&Efda$6bxUfbs8@n3ZfQor~k~2HT6`X;fWG$ge~k%DCLp?;Wl|bV>1Ok#;*#n(C(%1B-4rAV!9lmDPTT+=iq)@cuVh*v5voZJmQ`c!ne3h9mL(H0z&%vqY@IGlg6*?m zoGln<)>hZO=iH_no_ujE19o^pF5}28TTL$bwUzXDtb46gWCyhPTLrA9u=x1oIT+y) z@D%U2>TmY9tdqNA4hlUea0E*wJtGNb2X}V%TC0Yf(>n-1amiN#Jm7n5&^+fnQm98# zJTGkbxq7<$-=0t{eVv0S_O(6SmV78Q(X2-`B?5e$h&7P8_RHCL5D31bw7X@XGpSEw zjBlEcvQcl{(LDG`YeibeHq()d)Vm#CW^we^&v2n5@>I0H{&~P7^zU?7gN6%z33M_{ z2|S=GozeX2>b7JEux;}6IqwbR*KBhYLjO7pBUgws{3zz1`#X|+uzrRC%M403qOMds zFJ4x7gFFiu%PM_&a%C@_lWbXlAdc5z?EYGz-%LI#LhZEAyTU`DoM| zg|(Gl0Ix!Z?T-~9S`{BnRVPa3h})#b_mi*r+Js^R7Rq9703R$7c?V`Ov=0WMvwB^% zg4&a>&2>2x!Q1T1X%>RFI8N(Bt{qI!K!}Mm-5>+1vV8ze%Wn~K=-OB+Zy`9})G&kA z*)*@v%L10Cz(O-rKLaCQzO$=O@!pE?z!mFfPH@+hCRa*!_CyPO=!D+?eN%ga&qd<~ z%e3Tf-qA}2Fmil48QBs99yagOQ;jC?BvrX(NOK?HRY~(&mr~%>y(fR_BElXn$poU85^xKOKLr2Ydc`U zU*X4X0-7n>6hy=(c+rpe~m~lBQKUFG*X$k%DKGP)nP1*t*klCRbQR1 zlt~1)V|%Lcyf!d~R3$J_;vkcy(X>G*Bh|JXkj;AEh@e*CU@MrVFZ$W^b=~b@=Cz&$(i4d*9+1Tfng9x4L5$)ywCR3-$N( zFK+Xi9S@AaT_#0(M1{wQTuD@Ew<5i_tD05*oUoe|WcltIv0#Duem-BlzAFGb@SqIV z&3ex%#VV@XoShT12d%)1*OcWCQgYr7qiL)ZK*8ggHh8PXE1qXvcjiUk0KG2QN+Sue z9y^Nzd?GsYyV>~ZBsc~T0h>r(%!y--d(JV^s2waV{23Uce5O#{`5fJ|WRo@kr~ki9W{qT~b^D z(qVcVqODf8gOJYs33SAbemC^>bLY9uD_!q|5?r6bec%#of03vP@cr6?ckVW8Z~cnW zcATZr=lk6@AjJk#sA~>{@Y+0KHTca?x}E6Tl|3ahE$0=C80mzx`D4a+1U;TEIPF)M z4dY|J?!A{z5&U8w>8#61n?tU?3S5B_08||Z9!(JYh;;-k0cX{g`AFZNVGd%%2Rb<4 zfitZn?h;9;ptB~rfnnTyP# z8Z+4)?%7!96kIZ5+cG^(&W^7goE;4d+@%f%3}(8`zDP;V`l(ACvHlB09oiZypxdmb zxU>w;z$J76#em zvnoqq0piZuZ?WW#6sA8)w^VOH7^F!gN{aK_`9ir<4KI_wB%- zj^XV+ZzmRSdEm4wRYY^J&?_tq@JdzLT3QR&@@?Mr@d9smmI7SH;c>i`4?^GLlu5Cc z!|=DV_uELWBje92;O*|OjjzGvG?+l_D7w7-1ww_pK2qh~9#3#uQiJ2ApzjK2Udzf4 zdTwHarE(4CIvcwJM_lD??RzgYQzG7jydG};PFTFG`A`qHYMxp{7mx_;0NWJ9?*91P zjP&6TB@x(M7O0obZ$>wi`OWC6NGxXDvzI+rsbs*+Z_SB`B{RqgB0QTTnZ0jVsw?aZ z>Z2pVXIj+yFu#GJo!m}}Im!^r4ievmxoM4KheDLIBobr6=MDZm;pZi`Croz_ji;$I zwj)mIH+4Gf`yLp?HhZ7%03^=8#QBc*U1O^ua@syh15X3ITYKZWeaLC``7PVKZ|Lj} zsx;jN)-O4_syaJqGIu?0n-BQRMWP^ioiXnFWg_Q z+mNdtI*%A_EB9Uqk8`(mmU=kWHH1P6=`?&z{DZ80Y81R}bFJ)f0El+-A2+;|80!^t zuv*Itm*0J%6Dq;4LNf9&D(GnAa{Jz_IHuWL@@u08eHg;l=62^fyMSKW*87v5j&e3| z%d#_wiaOiWxC`yQ)B55a2Q3}Fcg5y@oAF$7?ws_b(m=d}4I-$h`vcUL1#H|pYZj9j`< zIE(q#uP!nvnk8#x1$!<#A)AcUKOW6b3VuXv*%-cyd>x4s1jGyW^me;rKJX-!do>}Z zxy$MEM7>oxyt`yp-C~xp7u6BWUS54v*1aEn?l=9o5M1;8t&RP-sAav)+pg6lLr%XU zb|DX`$5E~q)81$;CG#ysR}yM=a9m~IN&GmQqv@0s-V!dq({8gSpn$*aW17zK5ad?C*|M{ELe z_t0j!@5gr5yD76>fKG!kGKKir2|ubv0o{<`WQW@Uij|(<$`3s(ynR$88&jQKn&KRy+?<)|Hic;Kv|NQ}^*AeV&~W&xLZg zMXIEy7HW~nx;|f!-2#(iPmTaM4I0WzPx1%pdWV`}13slG?HG0R=;25ZAI~&0YlV|u z@gTRz5TF>n+G*om%6D0G*W2O)($90(jo<`GupzPITk3=6_q*%N=)QYG1=DzAZSpa5 zmztcla#(^=EhCZ)yNcx`QZ6GSTf0amsmj6k0k-Y!b0zC0yFrK_T3vC6=&Ch>oY&g> z>|$V^sFki;T4WxMeq%Fcy8zuDIOV3+SetO?1t1lp)n+%qaptUnUXC5ot}P%)>!&IB znR)A45GSah@sS7XaHoROEi`*s@8ZA*)0_gZCY`| z6)?H-BCqz#56g&-uC;9U#GHOEA4Bu62*B&AP~xs`;4~Q?N)5}_Pa8wHjIPsNaniKU>nB! zyoaQLlMQvnFs8wzd}yRbD$st0uhlM?0I(6c;q-WsWjN4bH`|&|>7KL{k3ewfO-Gtv zEV(he=a;Tnd_GX>i)G(ga1T!>@ci&~w|k>i6tmYguUVFirlEqEDGIq*y}V4(IIh^% z)3{xDRChf5giGE*Np#{MyJE0Z*m{m(z02{yb>{1Xtgy)$bACO<>C<|mo=_CDH2|UV zmFH=8wlL~7v$c=9Y|r^=igu|y=ze=4l;5k88cU;YlT{=IC$q=q_IX)2Lqa4B)GfwL z94gxYwh=Ce=Z1-qZ|I@n=!mF{u(j;fV5XrnAIxt4^hO)(*mt2yVkC)R9ro2@&s3RDRUpOL`8X)*b>~uty$|9D6Ce-28lUKd6T5>b=)r&Z?zRYR_>ag%tYDrPUFiG6csn zwz30toDyX!ELVt=8>GpF7-0Bl+Ib0|(`{Of1Kf~mx`T(T-Y61#(pIwju$8iz`c8vP zOVHzN6LDWt%b4%G%8Re#DdI7!`7q5a+Jr+N<{X%Klv1Ujv&)TwUQNk-zIDiPb04~R z4pC1(uj}7kdyoDH%hmAut%#Uu9o5Yx%I!F;Jk^b}9_Y5cX#Sx8z(4IJL{6nq{=J-mjg)vW|{ z_FsNRkF5ty+$j=#WdL}YLq1Q1iK_>wyDfo6uo?F9+l5fuZRow@+5OqhduMBZV1d47 z2MGnSXw9HtuBwnMb93FvXO|>%GnBlqikj`#Om}zg15d}IWX+Cik2L{3TTM*!JB8ws z!feSRlp7LqD2bmEh3lQS4Wp%BGP@{o8%T(}wixFPugciifW?tjI1^Gd#s(AA7Q0{N z;Y$>4zZD+)4L&@uqLCE(Yiv@fjl*Uw1uy;L8RK!oVAr9Bj@sr!2-@Y>QS%B->Z~U? zgdYjNgUCI!yb-b@nGn$Y*dnr_w(l8=2jRnb1sJ~2XNw?E!A88FsDive0wjjs&dnhs zctcLF@Fso@12A7M%}OlcrW3R8-LY?qwj+BWwMY!!%x~00q(x?h6Kh#~bs?jsblzl~ z=~usIyhyXXlVG^L;35@SMbVT}(Z$l)qq+qlr_fw~C%h;OOtT1CDLs`#}YT5JVc zy}$Op8Srp&n}0x;s2gmSzjXy*POYmIfzs1No+(!fNBAP&T93mDvDw+)+R*-R$(2|ACA2BO#?9jSxa zD+%16kz;I%LJw-+$v3brMU|0!Dd4Ij{=Qo6N|6V{TUPAue5UqdK6`ejDW;)5-9p93 z@7WrEUAnnh78pM7?LzyLF?UIJpb(VwSHyb$X#oGQbG}*>R{9s`)t|)M4v_tLlRA%% zQ0onOp5D5)kZW${20EomrG7SxDuo)ENtG~5Y;@X%y0pwldUTBKv+>bJER36r!DJ`h ze!=BMM(b`Dtm`S^nKi6f*FlGz7Bsz@Is%C7Z?*TUsadxjYsn}seh$IUN!Z-MK~ryy zc>u1`mtQ!n`!i+jge`b9dv=HT+e{*M3!;ZghrgB|?`sabFWDcP)JZ?GtY(%PT?s>F zzg}8h7KGM2Zkf}1c{-)NWOC2ju9&<$L577lliv(NQBjh{zGq90x!uFH>MvWWk$T7e&ycY2zI`%yw35 zp@(m2r?x8znN}^xP6!>jO3q#;C}8r-2ZpSLw=A1o8)kmu6i*F78RP@F_ImPAe{Z2IvI@5a|4HChXhH3E@lTm!3v-JP2?&o(y>Fk zxInS>8sblJeD~KnEj=^gTH!O}_PL*v{B$=*sDr#c<~WT8m3G0Zr{$aVhJBv?sBdv{ zu}p(I71?pNECd|4jSt&Y2>Ipq`Ew8;dPz6Hzg&{ODm2=dua4U}KaP&$$%IGq;73LU zr8QAk@IP{N)K?92GywsdeYuQb=!$52!2un8ExHNKL}9dbEy`brWsTQh?39JlMM8yN zonE1GyxP^uar)piLG);h*Dn>XF;XZ!m%XZTmbs#%a^Du~@$F)Me{n+kONTO?My|TT z>vFf*5oiDAf+`#hj=aXik4~azh(@SRAi5nPV2e;@3n;;z0?A-!M8u02$lIe*{oA@Jo5H=#RHe{0!vTnTPrV#*5V)z^QACJc}haBzb& z$n=~~K@TDK?R%Xa&r!L~kgl69xTCBWr(c}WKwO?Yq~HpfR6w0>xT%MR@(TUs6EL!X zN0ERgYZwM;@8hQh6RiV@@zm;jUxaCwBSv(H;rtKlbuO>7EqtlazKT*9ZnU;(feE0J z;sc-8q2KoJ9hnQrf58q>O0Hqj@8D*^O+_~4dpt8snT3WgZ7r|X}pAV2zL_O z)M;p!sjkT~mINEWLaf(PX3I~4ez^*ZH4H;y^qe;QIQtJC2)mDYEX)P2H;riAJO^PF zXvr}+7=l7PNb8ZEo(hsCg%mrDSY8k5eP}9di`o_&;KmGy%IpbXNkM*A9gRnTJMTaa zTAX1y0dnK7)pz>tYaK>5aB{y5m68=Mm{;2K=gjjNAg3=1eljz?Rhd8m8Ht_A$*Xfft!NDjh&)u>%LAD)rIy-Y|Mt|*WX%G! zR&mSbq}docmx0T%*e&U5^#?MDU*Z$a>4~Fl+p`q)Sb~%{h^d}2WlIH29U!2J^cE_~2l9d{hAB&2#ZG2CU{O zQU2w0@qE23qvzpX0`!CRwq0iLBKUBKv5mWzzRC3KWO!-=j-X4gwQG%<%OqA@zi61QY z%O78PaGaF$l7GM*&|U`@qY2_eWDs3ymXd}RZkL7Us-Q@laT!lT)2iSfewf=BzsIMw z%)qcrlLjA#(R1V0q`NV z!1Y$7kkN^Rg+}E9_AW`>3~@6_+W6dv3(YCA-hjlaR4M|XSxmi2zy*3YE5dYkW+UZD z>Z)CU@f>I054($4rD6GqH8|4qXzLXy77Uw{@P&i>-uI7Y^*LzSGxZ?+x{2Ifv(%n< zqNnkL{R!2(@Nh{*B5xxg{<&!a3eA)pI_N8BsX!VEn0WAhl^VWa9l;v_rA05)S(Y4o zJe^1h;OAg-iLR1jQ!vk5^P~r%eA8ZE`~|~v=ojIWL^7S2sId-hAnhWay+H}_;Ur{O zUv>MeRr<9NF^t;`%*`0w&g$1W^?8ktZi$qbMj*Z^M3LZkl4Qz=zmyzqnYxN~(C}l_ z`^QQUF4*H#Aez@hjv*YQEHU$1)z2sDmW4%tzwpo^xZW885EVObv7PVGhO3PQ&Q61@ zHQeaQgYH#f74`sycv4{oEtA49qO(w;#&-Px@+NHl3)gnFCPSMr!4+2G7-XYP8Bwa- z-!i%v2w4~mOvkewArnEvrhFXFoUrS|cIVq;-QfEK zVoTZZoqs`{TeeQyrKLB>y7ygU23FWor=||ZslfOb&^b9?&};6d{{mk~L1DBBCW0s~ z-zeR?K!OhWDtbllQv<@*_w~M>o_KFnUAFDx#1(;m4Pv2azp(P*-<7~82-7ChK8?Vd$X6{KJJ=nl-FSnYccAU+%mjth`xcHn>jC^BmIa6nMpcr%Yt# zQBB=CImRQ2LX&f+)d~B*xM~gNS1`_#g=EXMt;d|wT21P&A6l7$I6Mq`1Foq5+BDvM zyPp~v*BN2xhlZ$KZ7|O4ig#3YbKj2o{b0z5xNmV3S+PrI@1Fq~OJP!nN0t=bglGl; z7%9ZkDZ`J~SE>d4unB_DRvv0qwPQ{k3-zs=$q;sh>Mt=B_go=k>uME0?Q6D0HEnd@l;bwqJ3{SH7sG&UD5K5$YsLd4jX!l6c-(@M!irtC>N(y zQN+t9NT1i%)y`er{yZCGE6Z>La8%v|w)=sJku-6?OJgzpt2~ge0$v%Du6XdAzuy2V z8srRlHoG&`ihyvK%(8<;7uL&dHma%QOYD3ouOEyG4h{BN5a>663XGRVwsKt8F1eJQ z`&GFQQL)LRp%;{)Dnd{~@w%TKtoOg~mqha-8?x51k$Prg1E9o7C-Y^_sY=Duo*>G@ zu={=(gO<*<)<|@S{8C=6O1Dzq-I^2Rw&FQj<#R!a1^l{GAT=(LVac(*2IDqSZQ0(PJ( zEc2q483C~lV7y{*L=|Ct@BeUGFLkAMu<7Xnb%ItBp(ghqpyeo|!C`7%E#xVNHOMQx zf?amW`;hGS02{;h{)5!DK@OO;3EE+ia#i7Rk$5Xg%{;I_P$IEI{=7We>{WH#T?6F% z>|FPxAz%&uQSw}FkVVa#ZleOxu6ZE(u>=~vY=Bz5H7iaTI!+hAEn(h~qQ8CJL$9P;o5TBpw%-AX&>rL|bPu?&ogCB3G0QBIrgg5{@fEoXdo< zIf;nCq6@~C?6DahQ3R?onG_(rXsUClM{HlbO_Fdhvt7XyoM+*gs3nFihQ~y_B)io< zfXT%31ZM0o#6Znpo20e)@AHEVr+B9o!G329l9Ztl3WkO|V*IA{g)=h^ZosD41CL~# z+dYq}tSZ828-iep_%Si28v}$$E3*1VyiVn_7%F*O3hCT>P#!p{d5tf27hPl)S!PPB zA<2FM?rxh*W;`4%+(G4POa;}Xc25O3dyVcbBp49O{$@-eKJM&UY4*u8t4-Wc`fCUz zj7f>-lgG@2XFfwnUwca84gHjNG4^X6qh)&{_Jka;xX!k4W#;}>8CgcgY)TYT5{bz| z5h^@k5o^>lg}ot`o)Qc#p=bMdv74nCrZs9eDrI+GtM$BS;{duwv-Tibd?(iz?Dlzz2Bv}5= zx-OWndoEj}b6U_(8&!gyH>GGKq_|c*a~VcQl*f(X$!V_ZWbbfO>hNp{Lvd!1+{;h} zRH>Ksg=h4pqSNVH=dPSUz~TM#PwidPc7%VP2HfUyr>G)Zoi;8b0Wr$SbCA{osa+H- zhsbjhhT6goTFT0~f0@>k$k^}Ab7UHD2%IKQ11=9#I=UbqXq7X{>bgkb`Un%O;E}WI z{xzU*-63Ij{y58i{bq{wH94fRMowBhgDC!=4(9!+A`AaPfTVb=yH~tqya=dB1iGFx z2D3u*p?)K42Q0b#ZLu86O_Bg=7RE{StN2nz>BI%)XP=)bwF?$jW#1nZ>z!Y=JRMbB zKDM9t9DYUfwgIC8fe5DI^n<6vL`wz!=M)gj#4Qw__eLECu!+n~kBN{# zlO4^iZqXyass~c%S$^Y(Yb4M`_4((f*Jon&S>%N6(W#mms(kL%E6cPE{2M8udnBeQ ztA8MsyYM2y0{7gS!f0p+CQK0sn-h$#xP}i&$c}X3jmhD-tmPb&vvmQH)%a+MLmX*b zhdCPD&C=x(H&WS+VW^5;slx1RQXO)>#8r7P zAAg}XwGeHJ$fkoe+vuk4gSuY0$xpD$2U&BrAQ#ThvDDfgB@W$*Ur>xOT@tbvcoX(r z)krx5{tx@^3F8$)T?mqXQU8l@3r-Zbp zVlUhAsDs&wpAUq4_tys3pV5`dtzlFPrHJ$X7%?}{M16?&Zy~2i^hN()>Hx1t&8(V4 zuI?5+`#uACycRsR_Aj|E#Kxao5k)BHe}c@XZWqlvg-pBtgAGIS_$3zCVy;7)fepODqc>RQ&M+WG z1azz$LhF#>qlj?^k15TX1nCKRfMC%QJ432~aBmni*fBcyh&#|VH?Xv(aDiWC<0h(H zQq^Pu=l`bv&lXA*_TO?B*?TxM%71ohlADS}gLPaOB`9-#5;=pWF3dcz4p$;Gu4LAm z7Ubb2;6sL_kFlB(w#)vYPPiiDU}Dp*8r>L1$dfiB_(rM#q_CEcV*_XdvaH|BPxpx{ zbg5bs|AimGHaHE_n{M&@mQ2cuaB;y9YhBw}TqB~RX2k6r5_s!(tE}v75DLsYQN)Zf z^A{!pYC=5BNP|+r4eT$)pjxzrf40$wRp(g1G%B2HHiiF<9=Z>fDUYEXuu^t|`I!)M zD~t)C%MYcc0SXxy>fYVAM7C7#a4RWi0RX5X6Yie04 z-sJypSJZ(Na28^~fSsk&s~n++g=kJE&;g6BkZ{!uvmffCFybSTOTb0k1bKo^$hxSP zSHk=6ox1e@ZCnu;N^L+9=!-t&5lWo~@WlPx_JMs7h1gi+gr)D@aac8dHJldQxP6AY zKl*{JQ^j91UZ+d=-^Q5~*QFJ_YA7*ps?X`#js|9+;3vAg3|b1gh`bQg4bjE{{a0Q@0RZ+IMnH zUjHc-?{#{q8QM27Sz>s8wV% zuaK`_2{mQe6_lX=H>EEbB+#XCh$HzX*R4MT`C1c^XqV6Xf*qrl&tr@w`zZ|-@h?f7r5W+A=IyT z3@ZQgxkTVL`uprE?^$#Uo-h9?5Jjw!ThOYTQ1G`xlp1CkbG~#O7YB9%MIiSeXr6YI z^aPo$%7Ks?yCA+#t<=(%byw%&k$1t*IoZFa1Qmk1{(!&+A)Ksp^fLj){w(7KA|)m- JS|e;2_%lQhW_G)ZII&M&srG)@}ZY;4^5wGcdmoS<02Ho!GM8*`QHbzCy>*Dht|qtK_uxyk|zNWgh^zO6iL4zOsII+`1m-u z*!h_F*!g&vI89i&nE1FjjhHyujM&V0%-D^&dDxOfA+h)kP3(IjBxr|NNjF~tM&DfdP*m#VXc-gpEnT%LD`FJ=@*mzi3&60c|#o>Z%nK;3~ ztdx=lA#H)&ERVxl^TtMDvRhP|oZUFIMndo}EU|!SuMKoP@t}2v>pYJFqc#mrp*w;SuhW z0PYbf-2gF!WmxV;huoi{jfz$AZ+f?wjY$sB*g*TatD8cz8`NvrjVuU7ZC?e1qGDpi zBE|p0_ZkkT*nfZ^TV*DgxvgaqnvnMND0hFkQMO(*dS9elIT};Oxz_*(1rZ?1%7GTR zKthx|dR<0TK5C4$yCT3H#3%XbYy6MjXv4L4EheKcVC%`!$?+W4DcNc3dGvP;Cf1EB z@4(4i%E@ju=sAQQNL8aj`)3WUq7~*G(JRo1c}fN8;26C}Ue{reEF_JUB3xGOAfGBu z#*{>1tuCdFI^wor+4j)uWY#t2m1)EGmrn})6o(YcoZW!J!X>T@V7&BGlS zQ44MHI=q=NZVn>W7jxA6L#)Os{x_&H@Ky7EEN5fRuL3m9b)O1MoMx2fs@NMUx0WcO6%{IgT7hiG15MN zxRAaa&*dD?IF_`JEvZz>`Xl>$LM7(|{Rb2Big=S_UH(Tl2Ay!!tdX8}8gAM>Iy*$# zqP>|&`gUdVAuzyjv=UuhiVA2TR;%XdQ!Iu5hnRTH>I`YMs^q?#6t`cQ?2wxOClM`X zF%yxrURuZ^W>F}!TKVwL7{O8r15xp5L8!|pyJ-wNV@R5m7q7e5cPKnjP0AAejA||3WPaz-eIL(HULSNHLPA~)E&VzL{_+Y=@f$yrb;$%u^z06F#mTOYLm!}HZ6cl zSC$Lvb6|XClLMwk9h~h)id_&lpzszlTug_t7qU}N%&4-zQDzaf=uL($j{RS@lR-uO zmIQsk@aGabnjV;sQ4M|?_F~QPF^o^slBD4xE8L^44Q!Q!?cfi8r9%(gi-UNJJ3Efu z)*0_jW(Qd)rw*1|*Uoc@>NLm#Q<7N!vx#T`fS5I@ep7_cEt>2>*islFl991S_QT1g zm%!G|vu#%>qkzN@oJ@KSqOVla3x;UDA2jBJc@s?O>Mim4&XvS(v>Djq0)J!NueF}^ z=`YaBj8szngSlsmx+hY$e+cXtM~W(TtOONiSiT9l5Go847hqpAZ5XD}$Da`!qX==c zW;BB7Htz5d(3XChUS;`uE*Y0;_`);_K8)4S&BvWB&U#9C_mY6;sScoi*_UrT%CMS& zXf6B?>!(+8tvHa&w*ATF@ef&Aaf*W$rlNK%{}KhR$LmOJ=<7yBcuz(TIk_Aw ze{&y{YXK1i4vIK!7<K&7wo6s-j2HZS_pX6Qhaw7 z&571tOKgv}nNbTnVdHyNTntF4Bx7NKONIUJpSR}TUr3f3kgX_sCDuCeAJ$OTAG_9) zPx{Hqo!yO$2@*!buJ9D~y3mDqPGyH}YBM=ta^weg#xFlL=!qpW#(6WD%NOAjXumtO zey08N7%vXxbc|qEDjpUFkl%I{33%tc93GN^U;SU4xkv*T=373@xdyu+5~NfN{h3=? zL0YtFC_~-ssifS`5kA%ILst4Ugp@?;L@QF6^e$FggIvgZV?gNJyK}~iOUb&^{}$IT z!QTFTGWFStQDmH88UK>ZELgr1({S1}HKNM+g^z~MZBv9wI$9O|OG86J_gR=~_F&*# zf@!tkUT|UqcUtR41=Wn8BWJS-c(WfmCY#ilEH*-IvyF9;$n-JKW+&Y%N*$R`G4Ut( z&+ek-q5!5rxA}-I?f)$j&KcU4nI$l<)(czvpAu$+L*Wa}Cz)<47?Zzd+60O-Dn^d6 z7Ods(E=n{!#qA?=F47guH95L#0)S;6j4D zg)vs@kBxwkoIaQ76f(78BF_%>{m}CD2wDfc{^z#)H9wb!zR8LbE60a{I8tI-Zm@?V zTBvVuEEQIsF`Lsbb9_t6s|qDW4RUHWy9&&;xOP;Qf>GqaM?csM4ad_g9(Xhk1rkxR z4}_cDS2YZIv}r9@O|I9t@a4mW=D3mb|K}pg6El}8&_j(l;-ExM0VI7*>Yl*ZwX?&F z-o7C3CIbtMNV{#a^a}rd5^&9H4}HgQElak4MtesH{nCTEEiSUc3H1^W+eMjK_3@s$ z9{B&Ze?`tE3Q*26pbc| zRLBy&-+xE}Db>TabpI>SaUANN_9PM8Cop0>*n5P4pt~;SX5Znp_dZi`SL36n4ZmK|97D$qEVy4RWB_fsQ}%k~zx{a7<#}f}J_=c#`6+W4s}SfD zAJB{CC(HCdT}r`_Ky5jNV4wV?v6Z0PMF;wQ#Idzv1B4kMaPI8!clCR&yA)I4LEosG z3;wYJ2|}7OP6bbS&r>uSx??4kr{jvcD3y3>DiQL-I%^3%oc0`Rv67Yep!jJjxu%p8 zaa;39F@!b2@i@iMU5>b~gv`Qf+0v zoh3apaU#ak6KNiQK`*ugorFvE3^)aO%EIeq7=vJ=2gj{=; z6n}vZM8ROpf56U#3_l9Y)dj@-GlK65D@=Ivw$ISC5lYGrEyW$B9&)R&%l#u|bw~~^ zFjOu^6ru88OOX=F#q(LieD;Y%61EO?dxQ-N1vD4#gZY5Rk|2varJngf$ARj$|G!Md zL!Kt`xQIG{>kMI7o>KpXgm}<6fuv6QlG7I1k^0UEgiZ zqLPumu>l4Pwc$8UV|Zp2VCT8cJVJ`$CFrY*Tz6R8Y#Yi=e>h3w)L7V^@DEfZl@^H` z)K0X5lM?UQD8E*5LJmB`L{%tBYG05_>X4CoMv_3SiQ}>A|9C%{m%$xBZkHidka(Xf z`8*Xv{}1;tq64#dfu3WlZZE_1P-WPOg%D@=aijpr1orqI&}- zHR3N_keN{A$A<u3 z{3Hr7LQ`Yu3&m&Yvps`VdcS*mxMy0{UbhLoOgBpVpB5n3vc-2P5}4k;-rg_WjR5`( z*S$&hiL{-;+ESpWw}qh?Ix@-q}S6W`tGqpWDXkpFlJuVE`Nq*A8_?Mh^!%lZ>?pESU|tZGHw0~R7W zCf^s-5PuzYw$<{jPL{w6QotQ`(A88r*QfOhLYn0?g45$;asu{}7ZeIURoGV}9AGeZ z@f)qS_(!nB@GX*=7Z&`!gf!B#S2$GFb_yw#{luZ-Mu8p4kxASNy5wPpvhOR){c%gH z%dO-R*g|xa%0D;)0VHS3lR1TXFfR;Rp*^j%GZjk3FdG5?wG9-avfr2pYuN*pbRRGM zaHQ<~Cb0eHSj?0NN6SIorO?C>DZ~-pf<8K60%$oz^wQB^6ACrZ7d0Iy`hNLd+dlE_ z*dmpS8u**7%t!s|r0}C5L8XD+&kUdlS3?ZL9!h*-_;*48mrR4kJp$dT(PDDmt0W0R zan6y(o0g_RR=#cEmK{UYKNOr2%8)1Lv*=sXm)wmDH*!Kf4TuMUQx;DbM4?2y)P8XQ zLUdKyWjM~8t&?B>zwKLcj}6pBg{(zc@fyFFs>W z(}GqerhswH8cYT_LD6_|u|+-*I@Woj9OvHon2tz|a(||hQzs=h8ZB*$u&7jePUiFo z0vgCE9K&eR@c@(ZRj}nS(uoGS=4X-Uge*=Hi7=Yxs0rV z3Kc8=K1Lwg(uaaMGI-LaQ?f%SS(BEWKdrC>TzZlBiwV`ZY7XrOhuO(_D$vbPZ&|pv zSX7)w)Lb|e@`FxjWe$hQTAw~A0N+wV+K#CXd2GJ!QO)W;GmD*z6Jj2O8%X_czxZTY z`?cc8$(Kcvnh}XEJlt#%a$y3^$XXw`L(n1c_}dqPS4;w>jtsSFrXciC$XR%H1p+oi zbQSTtOfZ+QZM4Lc=(s5$7|Qs0MD<}AY7_y>nEv+Rw?L)zqUNv{3#j7|YUl_5_MV_3 zeioW5NiFMK$8l?DnGggtN?8!#9IHWM-aWtxIA2{uziQC1tVSzqxOGHGfo~T zb*Ucof?#KQ1M6OA9IjZF`Brm5m4f0$)x%LALeoiY(l1X!43NRB&kkVE=rLrsPqPcR z2AtxlaJ$Qq@0T+852=f5=U4juuC<+HyXECE7>cS83vbG0$OklrH`j$}oWc$N-ohiW zzNjdqPzS#~uCzEcUZl7otGWx#_F(+WK!Yl@ijIXR4+7RD<#<*H29#DRvfpsE_ha%l z<3@#aasD2_A_0QgJh+Lxx+IC1Q)9JYzUeu7)*FDPRNWWD$H$)ANfc7IO} z26rW;B=I`vpKIaYeNef(uQ- z1^NirZZan`M*niZ>ss>da;cbe0f7s|}qZ$ED zIEFer9~#h3EpB|8=9R9QG6L@@565@@^KEwk2L-A8>xKM-;S67eJk9x5P9eRJm-Jf@ z=Eh(6VNbH4Y-Ii0|M8$%xB)f+7@CrX@jQmRKT_-4aF);kRG9a*IAbU9DJvKUZ@E1CpcAwX<{Ty2Hj2UA zBLNU2$l=9H@b}P)ky8ZQLH$yzUP|@nib$dwr61Bizj+wua zkiQWmG)!`dY84l{`L;O&=AH#O{8qBKivgE?OZgXOgy{`8KWw5bM^Y+}A|8kQsSt4-G$bt@qEd#n zm~cZoRjkYN>tw1y*uFu+i_p7MR`Hz4CIGLdza{^I+#02Bw>Q~fnUPkGinuJ&DOxjm zPDUdWYv7q+W+j|RNppQfn8#`0HUXU}n002fVU$j0JvmmTi>SEst?ZozB~s0mE4S04 zcy(e6x|Kl1)E)!_DlM;*OYzSAd@J)e2P8&S>f7o0Iik4Ft&uajO4%uh=j@=ifRE!4 ztL+MGLLXMTmx%2sZ;Fu9PqRZ##vQ--_38{0L|&H+u6+DWD4qh-KU!kG`L~v153HeA z8`HKNaN$PztiHNV!3L5tm?g`bk)z160lKX~on@o^ppUXqP}$#}wqDtK{^%$6Y`6pXmx=ep zb%BjpYTF@eP-~AMX%+WWR9E`pkmrFX1y02SJ0t4UqpgmX#ciEjfNd@O=S>7faq9pF z6{QaK-oB%T1g66X>t1iT&`H=>N~)g7P5U>kH(^@4+qwtI&CS04nflCqz;8-K2J4K) z^}ULRsHVty1W zuf5-teLI!2560jDBWp!xt;`4*49?Q&`k2WQMk_q`gOdCrzvET`Z#|w|;pHz;&32#!ETS7_a&9=a!75Mrorn#4Qm2Uzq4Msy}M)niBXkW@( z_bIQa00m_-Fh7=F`Y}^rIR+_Uuu>-FFbk{XFA=x0G^*O-yvC~Qa&fsm%c2i0p#Y2Z z`y|#wrVStln>=aA(oLIX5I~8>#FY`l-qmk!Ycp6I%!*Wu>G6xxh4dzAV7M#sjf;-% zIbYg@J+)hhQ_y4y{^;?um_KFo5L{#wb-zUi)pCPU4d^CJq1 zid5#z_6;|bhqtn!*TX}Nut^X}DnqTfc28CovssYIwdSB!%~Cq#idhY*0>eX+i-W@i2^H%;^Ow*B zb&{J)u2^J8s3zji8;>c=LxyLHo>WX;C%_-+FT+-goIck~^}Tug${Pr}+G!SoE>Uv0 z#;pq0TVxI}2{m9pj~TM0evKovpey84V$S{n)JjXUO?c^TaCuyH+SXX?LwHOSXG6*e z-y3-U%1H}Un0gg@+n(zRe4*;uP841cmf(wy_9ZYh{VZal8(a4=b=PYIk&K=Z?~ByY z*)$bJE;CZg7BDY4km93eQzF`jER#}>JZCG8%OR~Fk&N`y%PD~&H z^wqXlybh-{f$1S+O~AI5(~GF>cMS3`o-LG&BK7dYL2@C51RaAmU#(NVbkGEF;%a!8q`dPL^0JM8y^1=DE;hk$JT zO(c2jw)*Zi{lz+HFLHNA8NfqgBK02uBD@&!M&&4I`k~lW`x;<}7idLA^cCgB=j{c! zeQcu_;tVNDccU+iB&B5<3x)C#wveH zLQ_YaMbfh=tMka>ls~UhVHT7ES=y(}l2LuLa9zi@Bzpbt7xu8&f2T={*#&z{#E?Jp z@EtzgQ?lg`!1|^}Pa*2_6!_=!QfmnD?P#T45_U98vj3As^2_?!uC1KP)O`EE!`9Vz?5U}Z1;bc)^zT!62uphVx zW$i$fF0@SJII}^9BA#Ec8?S8fUGAU7&04UmmzR; zRnk;IIA#4SxQVtiM2=bYWzBR zgF<1ApJ6)uV(epr;kIIpPvmCPs&yDf3XsjeSe4njn)i}^eNnMgOxx6iG;leDve{_C zkEqn1Wl($ZNM1Wq+kU_?Y4x#-?-teNd>J#|=fTu-QX zQ}^~PIPcX_qr=nnYfopKR;3@+vcuAWY`!?`hj}WUiTPl&D0w}5Yhaa+p1v|-7GLyU ziKC$?5;oK5Q4&)Wuy<^6_p?|iM5VlGX>CwJ-Fv%0yKRZbzyCA*0cr#Lll!5p4$Qs_ z+*dK$iK@5&Rd%Gj{(u!H1RCd_qLXvO&oo<`p{-qFJr7z2JwG#dx7S`4Imf6qdURqI zX~)lDE68oO1d)6Zy?)=D3!#$S?*$nch;gHvoCXPOC)(>m10q6?kE{jZM(+0ClN1RM zV;9{IQ%+?BNMo6*R~aM7FPBtcPAygp%XF7-uqz?*Ow-!Du8_(S40xR;Q7|mUO}0U3Tyz#dUH9*N(9d@r+U@ZAA!OM7_zus{ z6Xfc>Q?rW6Tv+TcQu$(w1t0betk&o?yi}%Z!}>hu5D?`%ryoH3-L>aPn?~#5iui~S zwpc&Qf$|5;QR&y7WksQsOYU0&+SHDoc0P0EhhKIkMo%W0R`P%hF+5*z3EfDIX?$*f zE6!2|Qtx7cAOi|wfK#P_8%dwKD%p%1J>NRDBj2z(4x=f|RB*puR@$&|ZE7A!`7&@* zR{bu046qNuRI;ktce`h?3w-eqN_4Z39KwxfQCV&^#X{kAiX&^?;XPOh>)qe#z!@AW z%B}7iIvp>_B6lZqdS~b6>!EJypKsZ@;%y*`#=|n4@VmB2DuqcMvUMfXIelSxF!hlnuE)ALdW?N0@4*{SV2fj)Bh0O`uaw^az5lKYyA@6kUhpoWes1l-wa zx3aa+IM_}7sqpw@&NDDngI2Oz3&c_!lQ2c)<C>O<-000%K7W(CXS`-Jo zht+p^FnFsX^{`TK!zLzFgec&4$4>mbn$gTg1zz?izMUh3o|U^iseO*`5dR8i0M+ZI zjXghL(l1HkqO3=~mn&XZ*BXv|Z?Y zKA-N?&VdZwW(iU(lUV8irFg63XHyP+FoICZT4Iz=J`T9gUhT_%*}=p*=6PPvT3t`x~wNpm+(S`y6}i}>)8g20WzdT*uRcfg=JLz zA|yZ#yvQbC)LKSuzi4DEtI3XM&?ge!O;)!xGeYm8I@D^ho}2?bLpT?59|?Ii+Jnc? z>Tb_6jXwyn@LE-WKY8?A%<;Kd$!razmDF6ImkBN*k=#PR1U$NcvP(wE(X4%4@r{0t zL@SB*a``$^xW zwhvqOW{Fdscc`wb|2Wn)9^}325Wd?H%eG|p#o^t{S@@3Y**6^f%p8Fq=X?Zhs&jK{ zy-(<@wyb(rC#KN;nDK7cuZT2`2fxcs^8r5avKEHaGi#%|F<>pe`ZUqm z9vVwQiM9WBp*5S1uPSf-L`jK;+&IubjHMX;S-OCB1yo6x*W88c_1fmlME|XwHK#)A z8EYZd`=y<-*&w;UHFTP|6{?=n5y{}8R@F60wxL{lng1|xFJHLG-*w~$3kFWT#O{*F z7#>n{@%t;V!$|{vVtcA*TWcVs;^<4Pmj8DskL*m!U-Pt4h6VjhY$^LwY3&x)*!8K4 z`%DKjTupIfOx~`3SquG6as040?B=`rGpg~5CG=&`@&;D#%%HeagXa@%fy&U+FZP-b z1c`YP+m|ZFY@3&-qr}rovr)_mzPBX4*eLUWTvC0&F+-VfM_BV(cdj_DtY)IBNDzF- z;EzbU^+`TT;};QPW%i}jFVu@mRM#fPO!VpWn@UIC+kFSC%t3mJo=E+e{&w7t{m-}A z248HN*6KsfdxI>&KmDX}1-(~Z(N`=O=%Sb1yW0f>4EWX<-BW0_9%4upd8s}tyuU6Y z3mD7+?`srt!6EzxKF45GW!LI?EO!;%S!;s^LkEUhjgL;t@7;R2MNArMu3Eqpj>mS@ zM2&7^o@P>Y+fVvX#~Tx-E!H+?q&BZMgLhjUgVUm{&yO1xoa(R5y@TydJ=-_nugxPc zcc>4&iF%aSiwtvg6Jr&wf? z#~)owgw}G{M3#&+=4m~@u>Za*)DER;gnS8jBe@k_bQA>@ABZ&h>pIRBti36Ma7u1o zF?=8CIC6a(N4(N?t>og&73)c3S%aQgK%V&hiLe|2GU7zAAe`0S$9+EeiiUwJLhJ~@ zapt*eS`g7?HM@Ovc@h)3$KF)6N6{n%kCjD;CC5w%HvLt5s>rXlws%4Yaq(mtek{rC zh;y}Z>-YK31c8f@YF-SI+dBz^DM-!U#1zE5V%pQ*h->)eIz!rZ=Tn-NA_TA^c?1b1rO?Pz&Y*zX#}cY53!t#|2?*NCNS0Ej4p%2G;L6 z4n+Hw8|Iedvi5xAOO5`RuMatB0&#rws*ppoF-T194y_)N zeVFTkvC!>~!#^Aq8$k2AtJkX+rK5@-iR&BqRX&dpx}Rqc*OiF=8&gHQE#_I%V_oik zn82$Gi{j@+L#KR{>er|G-@~-8Y&l~ZjDg=jPLuN5+Y$Y)TJ`&w+gWOX7lV2VO=Z60 z1c#gUoNvA^_(vh;Id3iNTlx+J-OV4n>@7zMU2%*Sf*>VXO`!^FRJ7T!=G{Gsh!m&A z{aRZSeRJ8F+@H#;#FZQ5uA)Lw4*9sb=1%;U&JE8h?RwufdYc%KOFgAkLAve9~9ggln|Q`826pTMYA1`Pi+?5eH% zkJ`xhhQ4<_(BK}fb3E3Obx{%r>iv6>FH7bQ9TFD00JG9jX!^1_kmcq7N7j31=57s}isiCN&reb%>X=M7Gliy4s3_N>4K_?W&#gj}4A8 zCM0g~>z~kUiow64%A3ySyAWD$DvCv^R57()sE^z?K;I77o}6~5w-!k3jS|N{TwV!3 zRJDBA!0d)yv9LPVq3|>G-Ri7AB=RX$;Sgf9w)DL|+lLzi4F`lhy(v}(I%!f`Nj%*} z{bS+L5MODiYw)z`_M;hImF$FQ^6EHp+w0&tLh_^_uO904k*0X>={&Y4Cmg%^+vZN$ z$rnZt)WH7nf>PbDL`XzPTt-#y#q}wkbQAsxBOVMz*^@lsKB$A zj`2M0Z^BRsw5@(UaHl6wW9;ClGkK1vGugsY4WQM+F>s}hdND6kaIK)xQk!$d{-_O< zD!|V+VKm~;-o{GXn#O5MQotAw;aIN9OFW05yPT?Oyt*67kb2t3#|!U9Yf(}FDk^KL zQaM|EQS`conyx#U5zhyOb9cD;`?sI?J{WnMq3eWzEZ_TajzB4e?$L!rT)smkhN_hiEm%+fGmU?IntEOLSW;P3Q>NB(?j z;9ZmpG&w?dPlnWHICxD5qyiSZrOQ)-bPd@vB9q36_xTv7N0vM86Ata!La;A1E*-z@ zLSYqzywB!Q7B=(~=&U{keRke!8_*`xBzQr7`P-9Px~8bk+MNO;CcN*(U(ZQZeSY+m zuEBUDd+JqOUrmsYrtO(Dfsw%(39>*QUs2=)FhNogC*1WW1+Rsi11L`U1N{xNSWFxi z6J8Vew7uD|)xk`JZbuewyCjrzos61>pFXR|-+VHoYAP>BY_i8ce{wuq7e;8zCZN>N ze#2hkQkXPP1%qXzm@vnc9?B`2uZ5>=Rw_JpA8)1I%^n{H4UXD_?^Ygh3szj$!=_%PgXONl|tRc=tqTciG+tzcB?Ih;Q zMcbbnR-YY!(IUc^QW2GOFZ0FRt}usI~SboMLtdi znRg4&R{^!Hu}Rinr?@N1h)X0;Lit?*(Q{g@aKt(-d?!I>6Xaj4>JKe z>h*W*=|#{4VUznAUZ{I?Z{<=|P>&QOcPn)2Ji!^&dIaAmq2gp>XEO&X25XF3pru?f zIr(y^!^lIDw7m%qM#mjpJXtB?We}W)1vKtdLaf2~4pU{`pt}$-_j3cAKlhI*hmYkc z7+2+mAn{C1pM1s7O6Uo*xJr(Ky@etXmx_?ZS=tndi|0KRVs|@y7wbQk7+;bD`_G z%af$Gp?Rg()w+@%Syr0Vvb{dgloO|grf$JZ>=|VC%}6ZFg>4LvFF<1tXmTJ}cG$vc zd02AqK7ef!3nD-_^vVvw$2yNl zc)0?j|GHdwb)YQFQfJXfxb?O-_4|U5NBXOQWK#vd=O3q(FBhxG`(N_kZbR}4kM6`` zU6^L?g8UnokJ8#2NOkiz0rw9WTZavMZd9Sli}zHNU%ZwZxRqufc_^stFEL-*>Fz6} zE0?SEaJ>l17L&^e6l(3|dUGLt?#Elj4ile9=TiSLk$v%UnC95=)6LUscd7Z)&|Qj? z)G?z~?m~KkM=6x>dx{S=m>zu6tNW8`-A6#J;=B3COE%1T&X;A)YalfJoRbOuuG>d; zz;+Yin$h4f{UeoLgi|svlJ%GaX@z;#%}Po}e(3QSo-40;M42FJ8FqE~JE)hifx2n< z6q@Iv2x-y z&zukZw=*3e(3UVX4=9Jt(cnBDPqw=p5|yBgT) zj%6~Q=0VdZ`SL5xuPjEXdtzxF@zibwia~=3C7!Zj(&dQv3^>gV7nQi++SV8H6h|4Z zM4OYjgqr7O2^&PcFuFvlpqnd;Qt*o?PtRg^vD9)wP6Dj&A>pS zrd=8&k|rkAZhn_B(HKg%uIcoOh|I?LdaxQH>Qp&aL`~nRK66rRu9F(m@nSXk?C983 z+fSr>@LmJy3*=3l_o)c$AF`(rmJsATrhv6NF>$m_p633YX+bG7k!iJOY?W^-hI5@n zI_ML=ei4z)(Q?`#73Jf}ZNliB`E|w>H0kBA@QY0A<$OhXB`~{jfJW{IdKleWU_}Wb zz&b@~H(X)tCos-!veuSvxRFKpdr1F<`0nnm`{K1a8fcC-gIuIocwp!Rh}S*e->(90 zKk(hO=X5VGYlhB|$23?1Bd+C+j!#kIBU6#I9sgLd)p02pycVH9tu$9h%s#KX4+S~& z%Eej9*EA5k|81>c3p%`VYc)8D3cYZM{~VBR)Nu$Y(|N4PM*iVmWK*@L55I~W*&ktV zWZRo84N&q06MX6rCJU1{&EXpu{JK_kR{O2{GlT!)CcJH?f4==$SO!l$YD&Xi@&IhK z>+zax=ak5T$<<;iUZtk1WeERwb*)Fgv~Rj{*rxB&8LxI>o>%%?y-ll)x*95X9M~rv z4OBg|R37LJsibVE_mRGWNgQ&w)1U+!D~0JH1>oCK4r?JJiM~OAAVFEHJ^%{TwQNu$ zkZhNGq;IuLfrl1hl&jI`;pFfeC+ZQmqWZF%HrT`3LCe5HQfQQW9W1OLI-4(=#>S>E zfmk2hSGq=TXtTmNz<2>mytA}tr@Ch}a5BKk_BGBFXZiOD)VQ~h4feY4oEPuw25t{* zC*Yp0DIhMnWAwL*E*wm_KEttbT+8T zJEd2c;Z1n|i4$nAl^`%gX|SSIFGSxlEPz-iH|b5d>GQqcWPIM=lfB5!hSJ5lSOIAs zF-)a};+Po~+dK_#+emmDjIh=$ko#iJl*kZM=SY952+#zV!0|s6SFC+bYS&v+tZ5>g zZLJH$wkIFA(|}|OZPgFC2O#zb0=lffMUPsY6V3MXtKDm}&Cyx!Z(4p^cjI_;0cJ`( z1d<xy`K!nK~4jr%Voeex3ydu1P)T2=eqMjsVxLHKu+PCkRD>CpVkJFTM#gD+qv zLK@=$%FDQfxvoP6j|}0#rPt+w99=^M@d!$jQY$qzJyy7!T=)LgiG`j)gGGI9K6;>V z!8$1EQ;|cJFi+YwT>0QsG0@Lg3?%$WtPqw@V?G{nx6uo;`1yGiL5}HrxH~*maHsj( z#F_Ox22YmKj2gH1yg>i766+j~06cNjwfybXyrX(X@t38sysx@4?W|mouhS;Vup@q? zJNTiiP7jU}il`aJdsb~z8(i2g1qcbJWmhJ67os`p*eF6KsZ+mCB7xH_4aax-J;yxq zdGa$*9!X`a2q6cjrg}?J`7aBNT6M*VMna*>G-(3z*zO8VuB%2dLNLZo7!C<2vxj1n z*Mg7G+D%UJJ%)SL+VeCk{&WwLvi>So>hMhMFX<-u20i)UEte0US=mxi6LZ_ojuI5J<;A27Q&Ug-6H@Vk9d9oW6Y$%*WyAmL}uw z3<#JqDIS`6wXSg;KI5G$FEk81{0%@0qcRz4r~qtL+Y!j623!VO|o^ z^{9Khc&fLrzC6g)8aGlYv{Fi=5oQ_D-~vk29YMj|^N&vV_ZYwewoD$2NMP(;WudU4 zcIO4O@!Y|OlOu(FvdpUdQn!J3KFzh^7gz|>LcExpgA`3u>lB2Xi(C`L9G+0T=d3!6 zl#kz9N0?JJG%U}KptDwZ&wuPa`ZY2Qo4GWq`6p0<%U!vJg1Wh+E1*=KN6T^dG*V(@ zV+Ex|cL`fX4FdMH)XIrghSIT=vcnSujO=tDiMXeQhgLi#Bu3AimmG$T<#Wl%HLf4i z=Wvgvls10Ar6?6k%H_P$fN54{z@LKP_*EW^56++KaGC%{L6<9C<4S(a$Ru*aRYYR7 z=2pmijS0Iemm`PtByH&hyyg%-oJ{TJo#gI(?F(yLA)v!BTdRfw)0hA>4%!uXQ^FukO z{CpHWv9?~~VW%hlz1gns6B?|H5-H}1XQygMIP^K=$}e(BRiPp>!3dZ5Mr^HJA)UfaD*PC0|!ZISj_RGCrn zn82?ONkWnX1+!9?=J6fR`TTy;OLf9kVQ7TiX6w&2IM)HQ$kjavLH1QXCI;`*ZErm0 zPFdIm-(X?_n(+HavX&*NHIk%_;-P}j>?RsAKX=f^ zOM%ZHe8cUxrF(P!5VoV`%7zGQ33zUGuoe^i-Qf56yux74e{n7wpc3KNd3;5ZDE{^A zFkpLkUI5CuuTZSyDbfR9%`bKRwaJb8nrl-rTtJ@m&U7Io(mgmn77^?CnohrUbXEI4 zpSfE%?WpzD<{_%yf#jmHmTu~e~ntY zYav&A{DB)V)DB3J;Z}c^A0|a+ieVTMSGB}))cT#bCmi zz%GRx`gb@^@_Greu`$u^*4K7EZ9$gAZBaWU@qSnXVpaxeWi*w1p+xDN0z$6a!vg`l~NS#A&j$nAxL7#!8_c<&IFezKozg+tRYz!kqS zNZGJ%6@*-mH~#GmiMqCnd}#lf_8HGk4{WzzLn|-D)VBRe?<{iT0+e;r*2Z|lqhq(^$kMYYV|ztOUB6YfEQ|az*knV1zLqO@~MZeGQ{R4J(=Q^|JOq}_glGEjK z$`i>hp|d;m?6e!8H;40^zF&rqaYvDQMkTDZftL?Y2RcAX09KP#JYy?rM>^N<1fLL9XF$HBOhKzqo z6VJ@Fhd^c}&}dnlzsp3{%#=j-W3*K)eGREqsxZ@ka8sF9UUi}tXeu>Qu-SY2;biQN!VA88%#DY?xRwJ-~jei$a=j4j4xtZo(81!qmAFS~nDB&IP@`3-2e;T&OYFl5(+i}= z*te2hg|d>^3)A6a#UksSH%eAUR zmo4@U){K-sn>UAC-0IXsPhmPbKaO&v5&NaK*6N4Fwb4uz>$6Du`$wEW`MQkPphJz@ z7#@QjTN+nT6i{Iis>Oh$4?{baqkei8^fP-m;i-C&;_eT5>;|c$4=a;q8A ziMq$p$+_B#N_cPROO5$MURysw!bezP>PVh1-w7oh$&U7(F;6``6=32qT^2Mq<`C9=JY*B|Dq*%bQGr+a@qn^j`jfB_8)&;qa1RMY zhcufxfM3<(q=*V@)gn3dR=j=k)hFjRxNF^`$A6_IW8nwimB0A5*THoq6(%)4qG+zT zffDD_muDoRUD$EXO@vrZ$t~e-&3zR1JS778rH^3(0x+Y4KaYiGFlEI`9UIEuHn7)< zuT;7)`hbz8#)#k2dM(A(^!G1QVI72;`AUicRcsD3OXDy@J6>cOapCr1Z-JMXgkj^X z$MDR#p*3rosIJnPr@C9G(GVb(Guv5G9J8x1<8;-lDh1u_^t_-BaL9pDnsX|BY62xz z2Cr=l*4z#i+m})g?%Y4kpU+&qdrv>YcDLTcECWqGJg%@OGtJH2AKsH#@LrD<?LX^Y@(0UIizg>ctr#!E8EOv`%DN>>uBx{U4z|P znpsRA=rF40Lxwl5{o+a6x~CfG?Xt*s@)opH8^Ss^cFu0HSk@`L*VrVAl)9e#C3%<1aJ`3)scF1?Iu*o9VowQMW3f|E8MDFE-+ za$;DottRv)`&Imf8sDYRn%jU+?`byAh_{7XZp^tT38f-NR z%Xv^Z%yo}{7aenX%SIk)Y9+?FHr^~d=G?uotxT`mfe3(0sqhNb017%WDN=x4eYx96 z3^Bkg)KZ(h#wT;N4u8_YY!U;BLuf=m3i?#ej5c3 zKQoLp5Olu4xt~d`4jCMSWn9wkDy+=H9y^y_dnrow@bZ#mCv@s+>KL-Oo(YhyDiFdW z2sq5X#7oOagUTQ~^bPPp0X9IZF8WGHxCIOTcZ6XMng&~t8&_Y-AMd1|=t@)?_RE}* zoK?O~-PpuUuvaqn=T96PDV@k>Vg8Gt&H_hALc){}*e z)pf6}Rg8-$_dBV4|0zakyaytFX>fzZOR%5w6w!yDy~t};d-ndXow$7<A)udN{{g3t-M)$&BD_KRsq@p^cbwxC_@gDir2ww+lebLv@G~1C?&k2xpJh^WM|+kI?6;L{jO3kCHI}n_X))Ts1BHo*$6y&cKDGjraM@R3 zT7Dtm4&d(1U)MNU=3(!)TA`U<{11(ig>Ia1dpJ|Kz}wFnu?W6~r6ltdKoy~K{3%QE z-m3C2(by4jvt%z*UCcFpRIjYJULjfco#1P^{xX-VP{imguZ7e%U@f>Iy+hYfh!>&T zY`>Z|A;W=F3`j|36j+RS%mn;$o6gw(=ry|Rk2ytWU+b=#j1x}v2-aRyDSzjoZb`t0 zvfq|C6{H87L!{YOsbsT+#E^6Xt>HH04|#aR`dtYcM@mR!K;xF%dWl|kcs@oTGxnYp8iJiEi} z39jQJ*{P4Y%S*6g)5~X6%$`5`8J3YcT>FcO?jRV*wp^Zp21*;-pJB5&PM zKj_ftK9ZELcN^Y>6o_5@foSsgEWT}K?1SD`>FC-8Sw-PK4yVAzI3>Y#k9?!I^Ve5b zkeLK!X<%!HN}Hj*IV5+w#mr$?Df^6lnQ9YijI2&sbm)rHquZM?^WT&xtIpk_--GM` z0I}8_+fXU&@A2p6chR9Q{Ok28ze(JSwggVG)DA&~swYF^{W7QQ^jYg+)7Kg^eHZ?B z$BSvN(~SIxb3Nc#M^KmF?^|sFm5gQcL2n%uGb-8dzTu+Jfx96mf1i5mm3-an2{a6m zc3uyPG?&!kq_9K}ny16Ymiv{E%&5!&Xv3w;|n3H01ujIOwJpfwFpy3-5!JZfIQtWHZiY3}bJ zfHEyh*u<~A9E7&?Xs)b}RPw57$BzQ8geWjl9he5B8K_XPOoH`8}!{_vOm_a<^>eKEc`zZK;Z7+5XuM zk2JRKN3mCi5@&_iqEdiI&j9E4#O4LXgq?{Y;VaDcoWOj?L02&IL_0wa5|tDHowdO+ zJ+Es1{$Z61Y4kF0;e6$BSLE`3|K~h}k^FZ(u_5Ax_lowb-yvHmhJVO!{4agmjDZ^5cH?cPvhPerunv(5Ju$W{B0KvVo#%-(I!tI zR_~>;E|e|7Lj=4{-PcgPq4JlZW8shs;Ez|0c`9iS(>Q}Ne7Zxx4E)$6;2@UKA{Xqa zY`~L3b$T*?CM9&-i)L|-6TADJg?!3IQ(NqTqTpeg9ZniHz>^8;SC0KscK%#y1!u4? zeIDOZc6Z95@g46|YP)O+)I6Bs%ys#|P zp-_W5&NEjTNVJ-l9zWqW9`oD?=516}a}QL~2|>D4%==I-I;4H6#9p_aycwD9V!%Sp zz~x~4=`35!tYsf6g7tHr8i)n_(h2S-<=a~=pWTsb%t8=0>L(Tf6Av5}DGnF875|q< z470J{w=T;a{?vaDqx|1$5N`RLwU_-a_G{KY%74=h5sw19L3Wq+h(S^AiLKm?szK^+ z>lTFb+N}BL*y&HS4%}(!ydMn8YY$L_45#1?C(%X77U6JhbofhCJU)b25hKuRGlu1C zI^q#$M|{U&dfEgye>Z1xNf8*#!^xI}xgME6mC%Z@)wvOV>;U*HR=>~+?6^Gj28LG# zeeyIyfDC@b`(k2m4k6{K(APAvFRJC z!d9qT38^IMjBqxB$kz5nNlWg=I7vdW%8Q@b%G$EnR_8dDL$7XP{U(aI|F!;~B@+3) z@-2lfTNxWTJ()|7qPQ{RTAy-2b`tu@OnvKx$iM2eI15MJPiSB#?@6qcr%qNJ!QY{( zP~P~w7;6>)HR68g^HW*SUyJ8Z%<~Xf%jKUI^847(A(F~l=`-ia!c2f6?Tvy(Q2SZ-noUq+Gnvk#`Sm_3XaRO=(GUWVi|1IxQFJ|t+OxKStTeBJmvsV^ z&C_QFN}WV~9i_dL`bx;i_^ka*%@Nu@+tyegLmU}RXOa(To_l-LStw?4fM=9(8yg3% zdR4+8-{@kJXPa6bkLE|TSnO5W8<_{b;Su#qU?~^IwE}s#wkLQTk%S*&%{oqQK4V=J z0&@VXfu4Fa!F-ro>Nv!BxrN@1@W)l`_;N~u&s6zV7y9#zf-5K^VFE`Y$Ni*>Ln}i% zC=IrMAlOAvGP(DjCPci0eNI1~i|F67JHTn zIa=}{zZ{whmmrbV9wsa^Bc5VoDUQX1L!lk0%9d)!P@PLTfbgFtJhX?#vpXH?EqZJG zxaR6+$eqb%I(hMx1;7vwcdls#ZrKktw)lfBpYb`D`aR7gJ0`Mr`7KKvGKK|4*Vi7q zHW${HHV$$YZTA57v)0d`$^Q7`e!&UBc@~_iwHQfe=5sY8b?J<=&kDp_+i10(;#`4y4T)d4XN z^}tV(m{AcLc&CXdVsY*bZS8sGAHMFx_fCkZQ;7QSZ#43hWM}!0thpI} zwDx-YEW8?CnyRRDG|$t>6JS_97upMOX%|jts7QajDF|}Qj&#yFQ|HDyv)eRW6`!I0 zoNraVmTxygb<;}xew$z9_p~TAoYs>Y`eU?z0f$ z{$A5m*|)F+O)AkEDm=r|)9-F;0f9{k>`Bue6ell>ws<7WM`$?uV}x!%1nORV zegq-iWs&fm*HYcqv{FNMdF6$9-w1iC#x;LYDS0n8S?GG3z@=Zho|e-^%2(BzFAg({ z488y39`dHa&$P%V23C)!N%SQ0tM@vAUrHhrS2kzqNB{XKwXuFl+UWD>hi1%u2F52>*%_>ADnH}#WV>Z;M zmuvB?&1;A0q&EIq5?;yF#%N33^tv@kvXQZwaOTHQer5!FY znBCenevOwCOyS32;6YU>c&i;@4Z|}?xk_*-+O_mweC00$=U4!cIoiPT?9_4y|IrFO zf(rjYp10Ru6A~p#z&#}W#KV_?m*2_Q?RFbO_)vjKAJ4yxc@Pg_E0)Eg!o3Wlufy4k zhhEg8BMFgZ;Llg2gL4~Ju@-iG%Ts4=rsE{{21m@ZlT=tELg*^Eq?po+YnuB#HT^TpUz==*a6_ zmY;DFi7VL*uM1Up#pR36VNUk94)3;rvHSK`t!5hlG_2U-#yai2CL#SlHcL50U+^5! z$&_RjXE@;)7Pf@h6__nO*HEq8KC}xpBCCWW3pql7&>xcb^K5fja48N3`fM}7y4#Vs zOnb6pqD=9Ipuii_G0d&6X1ofr;yr4~(&mZlfmn4>t@TKkt8upyP#5Nb;y4ej{XMM9 zz~Qs<$yoL5tG(B8nYdX6DnY*kHqk%KB3i`(jm(*+A zQs)8Lv8$3dCdygtN5*3oU?z{D^&S;x^~pPAvOTr1A_rc~^M>Y*%V zW-nTC^gf^C2(gBL|7&}O6k<_4Bn`V1Vtqv-vJxb#ewpw}04(7nRyz$;}F<>dul zU7y7nV*3ouvLVth=H%&BAxF^I)bY0(6s*sF8tbTBc4WT~(9?`)Rd7Xfj$?Yv%!mGOYYRU?tC9D-S-onbKG2Zpmhl}FGa-ZRFWhO zt@IhVV1e`^S8{n^3gxa;__oDyYA1d^9+|g+6OkZa=(&$Xru{0DSSD7zpI>2*;6|4k zxwXQLh+q5U=yW{wKc=WcKM!&%)ALSja-spyM#-Ft*u_duLWiIp6n+vlJo}A(mKc zlq^-RxSfkI$Z`?z>r4Va;hM%j`cP#Xgp>1oHaiK78K~k&7kA$$OSrGvFH97xw;duv zBoWY@esG_%QLwhJWS+u)I>xUxq%15)xrr3AR=5SgqYQ%oK{|qrQ@r1nR{FZ_VdWDn z0)NW-JNSVsrNwwa*NbLB%&a7Mgk<3rs}SU9Km;*h81Ex;L_U}vgO6tE;jq>?xPpMp1V!|{Uf#VVs5&Jc= z1%OT{7+BVdB8fgs;7uJK#D=v)q;Mq90gL!jeHzZxFTj{fbvew-_XtiiBn+?=A;ECR5VH@%u2-LBFCE!R0;%{Gw%M; zT#V_;3XGqQ6z>xe%AIc$1D7X)n%_v*-~+)^O&Rz$eTYHFW(E_YpjDoHt@DUr+UmJ>ppxfu)Nyc@|xGCrh{8?pB_AP!t%F`@*%yO(h<_G0{xsT7M@ zaT%OUrv2MwO=DLMCWH+oJh*1$L%evDjt|t(hSf3?u4g_vVgTx1^q+=`OIL_m2e;sJ z_$bObB3Fz3TX?jYbvGQf4(hST{lU-si9c(0w7X(KvY`!XQ($Ek@Nqy{b zvBgF(3A0xY*@jKizi~z+)T@<+YVwFBytI6oT=zdSkka0g-?>*hb}(N}D$3)3Dvj8=jwGX>XZ&@+QTr6esQ z&#p7j0Ae?ZuX)Iq5!TBx|14?`hZTvq+TsmfKVN_>T`B5A|o8JfFNF-p5 z1Q&zDL0)}@wke?P_%S=WMu-jSD?B>k-{eD+=c@24HiMGHHxw z8pL8?$S~^}wq%nZ9mA({k)rRRb0E1fyO&dEuK$)z-#aqZy)j;X-@dSdd2VfGy~W$s z!Lw#wN<^q-MY{HC%DpSKSemr`g)RIegD*&mTcuOl5(D8svn~YS1UQvnP9)>yeG{6L zK{~|2A|qs4fk(au2k7J4FY+>@^yAamf-E9N#)#o`Uuad$elVDtkG*8QPV6<*c{6Sr zA`rv|8N?*jn067IpcM<%$!fI4SoF%m6RQJva8y$@X2f&YCr|kG#9o6BmXOwU)F|$_ zh@iiYolmx=h}*dL!@SOCTy=*U_7>-bOE8;D4EQ8*ieE?on^3+h9K5Sqztx`0g1gbj z5i*10Tiqg}XpTz;5e4%N6bsjG{zW49k=SogKg&9G8$VA-6s?%^;%8)`Y6^Yg-EE4UioA9J!h&WBT0=)dOv(bQP zW}5X$nPlc}G#;hj8)1eB-;t^{_d&cqu(YOyNkVqo`TrMJ9eS8Ge5|el84ug#i!Pfy zpr*&18)ti$bwqN&M(uL7R=oVz)&96}qXXkkeWK+z^15M;yM&ruLfSi39Xt#aX$1HX zWnQv`{}epn=$*Z9At+%vc{)ro9+=z}@CP3_NpcP=PGHFai(DBfe-<#zM^IWixrc;cBPhZ9?F}Xextr7%g zVl1pN?W7Y#s0L4ltOV$f&1ciDe(~rKN%?YEX2+6bThc#o4rC?O$p1Hh#i7cx=eDsO zwf22{_z{XNXi4~DJ?N$?&CpTDn>Sm63PaC1kxso;jdMvkJ*em|h}l8pUW!Z7-HM?% zSec$deFY|LzZNR2kPL;09Z3|+tUIPC{6Og;e^ogG(0WgL&~Du{4bSV#;@ z2l4efL`_mO>y5SeZez6~CTTY+^)H%5z2I8E9!~`*RVzMD8wzqAca~-GJDrpG^>Nge zMg9+HiGMJ*etESZ(kX^)ocpu%>)d>I+A)(eGJ|%@I$P#F73r7sL2sHAIT;@~wlk(`$*KMx=->O%D$V+uqz5viM zX}4JXh&36tEKArG+k;SvwVO0G@~!&7%ZCUKWMb1Ozq*T=O912!)O_r}o}v735-t;! zG6#VCm8g8Gy8GI3k)cNtj=@<$E%%Mkm|^_-%xskK^$ww2ZTc*R=6{|h#CU?pS0iOE zYM+&T)`XQQE^Yr8X{vP|CPf^t=zawh3A6LW2QUKJhhTJtEa#D7MaTyvBY@}`J>vD}0 zk2f+rqlAh9?a&LY4+vGd# z^nAyZGfh|wc|FrXI+Zg#4*3s5Pi6vas;_E1&|!SCh!`D}SZ`!L5UR6*_ni+be&c%& z-@qb8wUEM{yr^2(t>J8dFA`z-TIvzuhYJ%gBKO-|r3Bwty4+NK<-ZFVv6=&+D$RWo z&d)|pNl2++76biCGeI#hDlCIa5p5=V)O=6yD>c((CRlk?Oo3xZQOe)Z3}iL@#|_c} zct$=cB}Oa?Mf{cPGnYNpC3{oRuGLPxLvYQHRYI>ij{JWO3)h<=yj(JBVvF_$Lwxe0 z!AEN0F1%mkFmYMQzMX)r3?nEK`YR@aE1_O8-+nEX@*d1z?;}SYG8T#cd4&XA1196? z2i^fRLRW&agbKdlvtpwX)Tc7n>~-M(u3VNLNr zO}Jm>k)L79{=8~sW`#s((rmCT@BP3S>~oeQO6~9g-|Qf=h6Sp=$!GPvolR z^67PiL!6SSKkc2uX#DAH!;tLwOK>k|*JsY0ljqp0y`6~``7OVZt_OT1;?&vGPQZ*?G3u zP(((Ul*m|uz9fGyc%nlYT2zD<7@~(thK;!Dp2<6LP;9D;=E*IK#pApvK}~_`M{tVe z{H|^lzgY{7|6l3Adbhc(Leu*;Bu>pt!J$4YowHtY2e;yipde}I5YN-b0W%eFbkyJFc&sxh*_0kGR zi@nHoiHYM{sZ%HQ31Lk?0f`j)eXW0t)$NN+W6Gl3==tt1rI&gU91UqOI9@L%kOyc0B+-(|Z<&2*be}D^Av!}R{bj$(q86JnlGmjFYe{n2{AWdk09uFMODFrVe+D|WlJR{-J6Zx= zeFZR&z}tJIQ=5^cM?PC>wgl#>3T%CQbxa+T{O@VaX_fskiJG_qyeXA^Hs#<>d{NQd z65~t)>0W5OXXH$K;&FWIFG6p5uN_#X(F;SG_@FWI|DK(LdeulNrYoq;r6X2HJTF%W zAjytCq&yv&3oI6q1gSEh0nUa+L|MYB+wH8A4(j`eWrS5-LV77qA7*L)%JA-ywe(%u z=`IR*luo^4Altb^Ws>BR#Y*FNS4I%GT+Oyx+i>!g6E7q5r{(s6_p@oBd}?Zt$N7aL z{`>g90jPkuF$YU!uy(Eand@8QjE-EtJDx8PIW(o?_Hu;3hEzXs8> zHAuXCDj9{)gwZ%=J%k~jl~4)S*;cnxwMh?gC=)0dg^38h;4E#^uk=cN^kq)w&iJ>~ jBRK+l?FNGc(;lu-3AAnWcrT#^CJQU6BvB=19Q6MHr-gu5 From 6ba2b3fa3cdeb26a49ea7f7813c56077859c8b59 Mon Sep 17 00:00:00 2001 From: Evan You Date: Sun, 1 Jul 2018 10:14:23 -0400 Subject: [PATCH 036/760] chore: sponsor meta --- themes/vue/_config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/themes/vue/_config.yml b/themes/vue/_config.yml index a997f01584..02145da466 100644 --- a/themes/vue/_config.yml +++ b/themes/vue/_config.yml @@ -10,6 +10,7 @@ special_sponsors: platinum_sponsors: - url: https://www.bitsrc.io/?utm_source=vue&utm_medium=vue&utm_campaign=vue&utm_term=vue&utm_content=vue img: bit-wide.png + alt_img: bit.png - url: http://tooltwist.com/ img: tooltwist.png - url: https://vueschool.io/?utm_source=Vuejs.org&utm_medium=Banner&utm_campaign=Sponsored%20Banner&utm_content=V1 From 8dfad33c364f74a5b3d8d5585afd1d0ec9c4d599 Mon Sep 17 00:00:00 2001 From: Evan You Date: Sun, 1 Jul 2018 10:19:29 -0400 Subject: [PATCH 037/760] adjust sponsor naming on pages --- themes/vue/layout/partials/sponsors_sidebar.ejs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/themes/vue/layout/partials/sponsors_sidebar.ejs b/themes/vue/layout/partials/sponsors_sidebar.ejs index bc2f052e08..2b22b4f2c6 100644 --- a/themes/vue/layout/partials/sponsors_sidebar.ejs +++ b/themes/vue/layout/partials/sponsors_sidebar.ejs @@ -1,6 +1,6 @@