From 61aec364b2c20b15cf494e19f156fec74910fdce Mon Sep 17 00:00:00 2001 From: Lee Hambley Date: Wed, 12 Jun 2013 22:44:00 +0200 Subject: [PATCH] Commit this stuff before I lose it all --- .gitignore | 1 + Gemfile | 6 + Gemfile.lock | 50 ++ _config.yml | 7 + _includes/footer.html | 28 + _includes/header.html | 5 + _includes/navigation.html | 31 + _layouts/default.html | 47 ++ _layouts/post.html | 8 + _layouts/table_of_contents.html | 1 + _plugins/gitactivity.rb | 32 ++ _plugins/table_of_contents.rb | 30 + _posts/2013-05-18-welcome-to-jekyll.markdown | 24 + .../2013-06-01-release-announcement.markdown | 529 ++++++++++++++++++ changes.html | 4 + css/capistrano.css | 66 +++ css/syntax.css | 60 ++ .../installation/index.markdown | 86 +++ documentation/index.html | 1 + .../introductory-demo-video/index.markdown | 38 ++ documentation/upgrading/index.html | 5 + images/CapistranoAvatar.png | Bin 0 -> 9186 bytes images/CapistranoGraphic.png | Bin 0 -> 26920 bytes images/CapistranoGraphicWireframe.png | Bin 0 -> 66430 bytes images/CapistranoLogo.png | Bin 0 -> 9803 bytes index.markdown | 35 ++ 26 files changed, 1094 insertions(+) create mode 100644 .gitignore create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 _config.yml create mode 100644 _includes/footer.html create mode 100644 _includes/header.html create mode 100644 _includes/navigation.html create mode 100644 _layouts/default.html create mode 100644 _layouts/post.html create mode 100644 _layouts/table_of_contents.html create mode 100644 _plugins/gitactivity.rb create mode 100644 _plugins/table_of_contents.rb create mode 100644 _posts/2013-05-18-welcome-to-jekyll.markdown create mode 100644 _posts/2013-06-01-release-announcement.markdown create mode 100644 changes.html create mode 100644 css/capistrano.css create mode 100644 css/syntax.css create mode 100644 documentation/getting-started/installation/index.markdown create mode 100644 documentation/index.html create mode 100644 documentation/overview/introductory-demo-video/index.markdown create mode 100644 documentation/upgrading/index.html create mode 100644 images/CapistranoAvatar.png create mode 100644 images/CapistranoGraphic.png create mode 100644 images/CapistranoGraphicWireframe.png create mode 100644 images/CapistranoLogo.png create mode 100644 index.markdown diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..c08f9add --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +_site \ No newline at end of file diff --git a/Gemfile b/Gemfile new file mode 100644 index 00000000..5ebb2f9b --- /dev/null +++ b/Gemfile @@ -0,0 +1,6 @@ +source "https://rubygems.org" + +gem "debugger" +gem "jekyll" +gem "redcarpet" +gem "git" diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 00000000..45024e23 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,50 @@ +GEM + remote: https://rubygems.org/ + specs: + classifier (1.3.3) + fast-stemmer (>= 1.0.0) + colorator (0.1) + columnize (0.3.6) + commander (4.1.3) + highline (~> 1.6.11) + debugger (1.6.0) + columnize (>= 0.3.1) + debugger-linecache (~> 1.2.0) + debugger-ruby_core_source (~> 1.2.1) + debugger-linecache (1.2.0) + debugger-ruby_core_source (1.2.2) + directory_watcher (1.4.1) + fast-stemmer (1.0.2) + git (1.2.5) + highline (1.6.19) + jekyll (1.0.2) + classifier (~> 1.3) + colorator (~> 0.1) + commander (~> 4.1.3) + directory_watcher (~> 1.4.1) + kramdown (~> 1.0.2) + liquid (~> 2.3) + maruku (~> 0.5) + pygments.rb (~> 0.5.0) + safe_yaml (~> 0.7.0) + kramdown (1.0.2) + liquid (2.5.0) + maruku (0.6.1) + syntax (>= 1.0.0) + posix-spawn (0.3.6) + pygments.rb (0.5.0) + posix-spawn (~> 0.3.6) + yajl-ruby (~> 1.1.0) + redcarpet (2.2.2) + safe_yaml (0.7.1) + syntax (1.0.0) + yajl-ruby (1.1.0) + +PLATFORMS + ruby + +DEPENDENCIES + debugger + git + jekyll + redcarpet diff --git a/_config.yml b/_config.yml new file mode 100644 index 00000000..55e2e260 --- /dev/null +++ b/_config.yml @@ -0,0 +1,7 @@ +name: Capistrano +pygments: true +markdown: redcarpet +redcarpet: + extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "tables", "with_toc_data"] +table_of_contents: + dirs: [documentation] diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 00000000..7124869f --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,28 @@ +
+
+
+
+ +
+ + + +
+
    +
  • +
+
+
+
+
diff --git a/_includes/header.html b/_includes/header.html new file mode 100644 index 00000000..fce1f88d --- /dev/null +++ b/_includes/header.html @@ -0,0 +1,5 @@ +
+ + + +
diff --git a/_includes/navigation.html b/_includes/navigation.html new file mode 100644 index 00000000..a3b0034b --- /dev/null +++ b/_includes/navigation.html @@ -0,0 +1,31 @@ +
+ +
diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 00000000..73d188ce --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,47 @@ + + + + + + + {{ page.title }} + + + + + + + + + + + + + + {% include header.html %} + +
+
+ {% include navigation.html %} +
+
+
+

{{ page.title }}

+ {{ content }} +
+
+
+ + + + + + + + + + + {% include footer.html %} + + + diff --git a/_layouts/post.html b/_layouts/post.html new file mode 100644 index 00000000..83bae3f4 --- /dev/null +++ b/_layouts/post.html @@ -0,0 +1,8 @@ +--- +layout: default +--- +

{{ page.date | date_to_string }}

+ +
+{{ content }} +
diff --git a/_layouts/table_of_contents.html b/_layouts/table_of_contents.html new file mode 100644 index 00000000..692bc9d8 --- /dev/null +++ b/_layouts/table_of_contents.html @@ -0,0 +1 @@ +Why is this here? \ No newline at end of file diff --git a/_plugins/gitactivity.rb b/_plugins/gitactivity.rb new file mode 100644 index 00000000..e22b004b --- /dev/null +++ b/_plugins/gitactivity.rb @@ -0,0 +1,32 @@ +require 'git' + +module Jekyll + class GitActivityTag < Liquid::Tag + + def initialize(tag_name, text, tokens) + super + end + + def render(context) + result = "" + g = Git.open(File.join(Dir.getwd, "..")) + + index = 0 + g.log.each do |log| + if(index < 10) + result << "
  • " + result << log.date.strftime("%d %b") + result << " - " + result << log.message + result << "
  • " + index += 1 + end + end + "" + end + end +end + +Liquid::Template.register_tag('gitactivity', Jekyll::GitActivityTag) \ No newline at end of file diff --git a/_plugins/table_of_contents.rb b/_plugins/table_of_contents.rb new file mode 100644 index 00000000..832935c7 --- /dev/null +++ b/_plugins/table_of_contents.rb @@ -0,0 +1,30 @@ +require 'git' + +module Jekyll + class TableOfContentsTag < Liquid::Tag + def initialize(tag_name, text, tokens) + super + end + def render(context) + result = "" + g = Git.open(File.join(Dir.getwd, "..")) + + index = 0 + g.log.each do |log| + if(index < 10) + result << "
  • " + result << log.date.strftime("%d %b") + result << " - " + result << log.message + result << "
  • " + index += 1 + end + end + "" + end + end +end + +Liquid::Template.register_tag('table_of_contents', Jekyll::TableOfContentsTag) \ No newline at end of file diff --git a/_posts/2013-05-18-welcome-to-jekyll.markdown b/_posts/2013-05-18-welcome-to-jekyll.markdown new file mode 100644 index 00000000..2d544278 --- /dev/null +++ b/_posts/2013-05-18-welcome-to-jekyll.markdown @@ -0,0 +1,24 @@ +--- +layout: post +title: "Welcome to Jekyll!" +date: 2013-05-18 15:09:49 +categories: jekyll update +--- + +You'll find this post in your `_posts` directory - edit this post and re-build (or run with the `-w` switch) to see your changes! +To add new posts, simply add a file in the `_posts` directory that follows the convention: YYYY-MM-DD-name-of-post.ext. + +Jekyll also offers powerful support for code snippets: + +{% highlight ruby %} +def print_hi(name) + puts "Hi, #{name}" +end +print_hi('Tom') +#=> prints 'Hi, Tom' to STDOUT. +{% endhighlight %} + +Check out the [Jekyll docs][jekyll] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll's GitHub repo][jekyll-gh]. + +[jekyll-gh]: https://github.com/mojombo/jekyll +[jekyll]: http://jekyllrb.com diff --git a/_posts/2013-06-01-release-announcement.markdown b/_posts/2013-06-01-release-announcement.markdown new file mode 100644 index 00000000..407e2f58 --- /dev/null +++ b/_posts/2013-06-01-release-announcement.markdown @@ -0,0 +1,529 @@ +--- +layout: post +title: "Capistrano Version 3 Release Announcement" +date: 2013-06-01 00:00:00 +--- + +After what seems like years of work, the Capistrano team (that's Tom and I) +are pleased to announce the first *major* release of Capistrano in almost 5 +years. + +The reasons behind the length of time between the last architectural overhaul +and this one are numerous, but it can be summrised to say that Capistrano is a +widely used tool, and when working around software deployment it's really a +question of downtime. If we had changed something significant in Capistrano we +could have taken a lot of sites offline, and made a lot of people very +unhappy. Until this point we haven't felt that the time has been ripe where +the benefits of a slightly rocky upgrade path are worth the risks of downtime. + +It also hasn't helped historically that we've only just gotten to grips with +Ruby 1.9, and that Bundler's near ubuquity means that now it's trivial to lock +a Gem at a specific version. With other tools in the Ruby eco system it's +become easier for us to make significant changes to a tool upon which many +hundreds of thousands of people rely. + +### Design Goals + +We had a few goals for this release, in no particular order they were: + +* **Get away from our own DSL solution.** Great DSL alternatives (Rake, Sake, Thor, + etc) are already widely used. +* **Better modularisation.** to enable people outside the Rails community to + benefit from Capistrano's *best-practice* workflow, and to enable people in + the Rails community to pick and choose support for components they use + (Database Migrations, Asset Pipeline, etc) +* **Easier Debugging.** A lot of problems with Capistrano come from weirdness + surrounding environmental issues around PTY vs non-TTY environments, login + and non-login shells not to mention *environment managers* such as rvm, + rbenv and nvm. +* **Speed.** We know that in a lot of environments speed of deploment is a + huge factor, since Rails introduced the *Asset Pipeline* it's not uncommon + for a deploy that formerly took 5 seconds now takes 5 minutes. This really + is mostly out of our control, but with improved support for parallelism, + rolling restarts we feel confident that things are bettwe not. +* **Applicability.** We've always maintained that Capistrano is a terrible + tool for system provisioning, and that more often than not servers are + better being setup with Chef, Puppet or similar, whilst we still agree with + that, the new features in Capistrano really lend themselves to integrating + with these kinds of tools. + +### What's missing? + +Before we get too carried away it's worth shortlisting the things that don't +exist in version three, *yet*. + +* *Run Locally.* `run_locally` was always a bit of the poor relation in the + family, it didn't quite work the same way as other things, and I never liked + the idea that you were binding a tool that in principle should be cross + platform (Ruby, and Capistrano) to locally executing shell commands which + probably only work on POSIX-like operating systems. I hope that + `run_locally` will stay gone, and that as a community we can find better + ways of doing things that always relied on locally creating tarballs, or + writing configuration files, or similar. +* *SSH Gateway Support.* SSH Gateway support hasn't been implemented in + version three yet, I hope that this will be done soon. As I have no direct + need for it, I haven't the means to test it with a view to implementing it, + yet. +* *Mecurial, Subversion, and CVS Support.* These have been removed as we've + been able to implement the Git SCM in an incredibly neat way that isn't + compatible with the others. We wanted to break the cycle of always sticking + with the lowest common denominator, so we are **actively** looking for + people who are interested in contributing, or sharing expertise on the + *best-practice* way of speedily deploying from your respective choice of + source control. +* *`HOSTFILTER` ,`ROLEFILTER` and friends.* These have gone away because I + always felt they were indemic of a bad design desision about using + Environmental Variables. These will be coming back as flags passed to `cap` + on the CLI, and options that can be set on the Capistrano::Application Ruby + class. +* *Shell.* The shell has been removed temporarily pending a neater + implementation, we've got something that we are playing with internally, but + it needs better readline support, and some more controls around what to do + when things go badly on some servers, but not others. +* *Cold Deploy.* The `cap deploy:cold` is a really old legacy component, + orignally from the days of the `script/spinner` where deploying cold + (starting workers that weren't running), and deploying a *warm* system were + different (restarting existing worker pools, which wasn't fun!) By and large + these things have gone away, and it's time `deploy:cold` went away. It's + safe in every case we could find to call setup, and seed and other Rake + tasks without things blowing up, and that should be the approach we take. + Tasks on the server should be idempotent, and if something is called twice, + let it be. +* *Coloured Output.*✝ The capistrano-colours Gem was (fairly) recently merged + into Capistrano v2, this has gone away in favour of a IO streaming model + inspired by MiniTest/Pride. Read more below in new features. + +### What's new? + +Each section here really deserves it's own sub-heading as some of the new +features are awesome. + +#### Rake Integration + +We have moved away from our own DSL implemenation to implement Capistrano as a +Rake application. + +Rake has always supported being sub-classed, so to speak as a +*sub-application*; it is however poorly documented. By subclassing +Rake::Application one can specify what the *Rakefile* should look like, where +to search for it, and how to load other *Rakefiles*. + +The *Rake* DSL is widely used, well known and very powerful. As Rake is +essentially a dependency resolution system, it offers a lot of nice ways to, +for example build a tarball as a dependency of uploading it and deploying it. + +This has allowed us to do away with the *copy* strategy all together, as it +can now be implemented from scratch in fewer than ten lines of code. You can +check out the [replicating the copy strategy][] screencast and acompanying +documentation if you want to explore that any further. + +The guiding principle is dependency resolution, and interoperability with +other tools, for example: + +{% highlight ruby %} +# No description, this is an internal method +task :notify do + this_release_tag = sh("git describe --abbrev=0 --tags") + last_ten_commits = sh("git log #{this_release_tag}~10..#{this_release_tag}") + Mail.deliver do + to "team@example.com" + subject "Releasing #{this_release_tag} Now!" + body last_ten_commits + end +end + +namespace :deploy + task default: :notify +end +{% endhighlight %} + +The last three lines rely on Rake's additive task declaration, by redefining the +`deploy:default` task by adding another dependency. Rake will automatically +resolve this dependency at Runtime, mailing the recent changelog to your team, +assuming everything is setup correctly. + +#### Built In Stage Support + +#### Parallelism + +In former versions of Capistrano there was a *parallel* option to run +different tasks differently on groups of servers, it looked something like +this: + +{% highlight ruby %} +task :restart do + parallel do |session| + session.when "in?(:app)", "/u/apps/social/script/restart-mongrel" + session.when "in?(:web)", "/u/apps/social/script/restart-apache" + session.else "echo nothing to do" + end +end +{% endhighlight %} + +This always felt a little unclean, and indeed it's a hack that was originally +implemeted to facilitate rolling deployments at a large German firm by a +couple of freelancers who were consulting with them. (Hint, one of those guys +went on to found Travis-CI!) + +The equivilent code in under Capistrano v3 would look like this: + +{% highlight ruby %} +task :restart do + on :all, in: :parallel do |host| + if host.roles.include?(:app) + execute "/u/apps/social/script/restart-mongrel" + elsif host.roles.include?(:web) + execute "/u/apps/social/script/restart-web" + else + info "Nothing to do for #{host} with roles #{host.properties.roles}." + end + end +end +{% endhighlight %} + +The second block of code, that representing the new Rake derived DSL and +demonstrating how to use the parallel execution mode is a little longer, but I +think it's clearer, more idiomatic Ruby code which relies less on an intimate +knowledge of how the Capistrano DSL happens to work. It also hints at the +built-in logging subsystem, keep reading to learn more. + +Other modes for parallelism include: + +{% highlight ruby %} +on :all, in: :groups, max: 3, wait: 5 do + # Take all servers, in groups of three which execute in parallel + # wait five seconds between groups of servers. + # This is perfect for rolling restarts +end + +on :all, in: :sequence, wait: 15 do + # This takes all servers, in sequence and waits 15 seconds between + # each server, this might be perfect if you are afraid about + # overloading a shared resource, or want to defer the asset compilation + # over your cluster owing to worries about load +end + +on :all, in: :parallel do + # This will simply try and execute the commands contained within + # the block in parallel on all servers. This might be perfect for kicking + # off something like a Git checkout or similar. +end +{% endhighlight %} + +The internal tasks, for standard deploy recipes make use of all of these as is +appropriate for the normal case, no need to be afraid of scary slow deploys +again! + +#### Streaming IO + +This IO streaming model means that results from commands, the commands +themselves and any other arbitrary output are sent as objects to a class with +an `IO`ish interface, the class knows what to do with these things. There's a +*progress* formatter which prints dots for each command that is called, as +well as a *pretty* formatter which prints the full command, it's output on +standard out and standard error, as well as the final return status. It would +be trivial to implement HTML formatters, or formatters that reported to your +IRC room, or to email. I look forward to seeing more of these cropping up in +the community. + +#### Host Definition Access + +If you didn't skim over the *Parallism* section above, you might have noticed we +did something clever that wasn't possible in Capistrano v2; we accessed the +`host` inside the execution block. + +For a lot of reasons in Capistrano v2 is wasn't possible to do this, the block +was essentially evaluated once and called verbatim on each host. This lead to +disappointing missing features such as not being able to pull the host list +out of Capistrano and examine the roles to do something like controlling chef +solo, or similar. + +In Capistrano v3 the `host` object is the same object that is created when a +server is defined, and is internally used, for example to pass to an ERB +template for rendering a last-deploy message that is dumped onto each server +after a successful deployment. The last deploy log includes everything +Capistrano knew about that server during the deployment. + +> Users of Capistrano v2 may be familiar with the perenial `cap deploy:cleanup` +problem which came to light when servers differed in their old releases list, +imagine a scenario with two servers, one has been your bread-and-butter since +you launched, it has hundreds of old releases from all your wonderful deploys +over the months or years. The second server has been in the cluster for about +a month, it didn't quite slot-in cleanly, so the list of old releases looks a +bit weird, you deleted a few by hand, and anyway there might only be ten-or-so +releases there. + +> Now imagine that you call `cap deploy:cleanup`, old `capture()` +implementations silently only ran on the first server that matched the +properties defined, so server one returned a list of ~95 old timestamped +release directories. Next Capistrano v2 would call `rm -rf +release1..release95` on **both** servers, causing server two to err our, and +leaving an undefined state on server one, as Capistrano would simply hang up +both connections. + +This cleanup routine can now be better implemented as follows (which is +actually more or less the actual implenetation in the the new Gem): + +{% highlight ruby %} +desc "Cleanup all old releases (keeps #{fetch(:releases_to_keeo_on_cleanup)} +old releases" +task :cleanup do + keep_releases = fetch(:releases_to_keeo_on_cleanup) + releases = capture(:ls, fetch(:releases_directory)) + release_to_delete = releases.sort_by { |r| rn.to_i }.slice(1..-(keep_releases + 1)) + releases_to_delete.each do |r| + execute :rm, fetch(:releases_directory).join(r) + end +end +{% endhighlight %} + +Some handy things to note here are that both server one and server two in our +contrived example will both evaluate that independently, and when both servers +are finished removing old releases the `task :cleanup` block will have +finished. + +Also in Capistrano v3 most path varaibles are [`Pathname`] objects, so they natively +respond to things like `#basename`, `#expand_path`, `#join` and similar. + +**Warning:** `#expand_path` probably won't do what you expect, it will execute +on your *workstation* machine, and not on the remote host, so it's possible +that it will return an error in the case of paths which exist remotely but not +locally. + +#### Host Properties + +As the `host` object is now available to the task blocks, it made sense to make +it possible to store arbitrarty values against them. + +Enter `host.properties`. This is a simple [*OpenStruct*][] which can be used to +store any additional properties which are important for your application. + +An example of it's usage might be: + +{% highlight ruby %} +h = SSHKit::Host.new 'example.com' +h.properties.roles ||= %i{wep app} +{% endhighlight %} + +#### More Expressive Command Language + +In Capistrano v2, it wasn't uncommon to find commands such as: + +{% highlight ruby %} +task :precompile, :roles => lambda { assets_role }, :except => { :no_release => true } do + run <<-CMD.compact + cd -- #{latest_release} && + RAILS_ENV=#{rails_env.to_s.shellescape} #{asset_env} #{rake} assets:precompile + CMD +end +{% endhighlight %} + +In Capistrano v3 this looks more like this: + +{% highlight ruby %} +task :precompile do + on :sprockets_asset_host, reject: lambda { |h| h.properties.no_release } do + within fetch(:latest_release_directory) + with rails_env: fetch(:rails_env) do + execute :rake, 'assets:precompile' + end + end + end +end +{% endhighlight %} + +Again, with other examples this format is a little longer, but much more +expressive, and all the nightmare of shell escaping is handled interally for +you, environmental variables are capitalised and applied at the correct point +(i.e between the `cd` and `rake` calls in this case). + +Other options here include `as :a_user` and + +#### Better *magic* Variable Support + +In Capistrano v2 there were certain bits of magic where if calling a variable +and NoMethodError would have been raised (for example the +`latest_release_directory` varaible). This variable never existed on the +global namespace, as a fall-back the list of `set()` variables would be +consulted. + +This magic lead to times when people were not recognising that magic variables +were even being used. The magic variable system of Capistrano v2 did also +include a way to `fetch(:some_variable, 'with a default value')` incase the +variable might not be set already, but it wasn't widely used, and more often +than not people just used things like `latest_release_directory` never knowing +that behind the scenes an exception was raised, then rescued, and that +`:latest_release_directory` in the variable map was actually a continuation +that was evaluated the first time it was used, and the value then cached until +the end of the script. + +The system has now 100% less magic. If you set a variable using `set()`, it +can be fetched with `fetch()`, if the value you set into the variable responds +to `#call` then it will be executed in the current context whenever it is +used, the values will not be cached, unless your continuation does some +explicit caching. *Again, we are favoring clarity over micro optimisation*. + +#### SSHKit + +Many of the new features in Capistrano whch relate to logging, formatting, +SSH, connection management and pooling, parallism, batch execution and more +are from a library that fell out of the Capistrano v3 development process. + +[*SSHKit*][] is a lower level toolkit, a level higher than *Net::SSH*, still +but lacking the roles, environments, rollbacks and other higher level features +from Capistrano. + +SSHkit is ideal for use if you need to just connect to a machine and run some +arbitrary command, for example: + +{% highlight ruby %} +# Rakefile +require 'sshkit' +desc "Check the uptime of example.com" +task :uptime do |h| + execute :uptime +end +{% endhighlight %} + +There is much more than can be done with SSHKit, and we have quite an +extensive [list of examples][]. For the most part with Capistrano v3, anything +that happens inside of an `on()` block is happening in SSHkit, and the +documentation from that library is the place to go to find more information. + +#### Command Mapping + +This is another feature from SSHKit, designed to remove a little ambiguity +from preceedings, there is a so-called command map for commands. + +When executing something like: + +{% highlight ruby %} +execute "git clone ........ ......." +{% endhighlight %} + +The command is passed through to the remote server *completely unchanged*. +This includes the options which might be set, such as user, directory, and +environmental variables. **This is by design.** This feature is designed to +allow people to write non-trivial commands in [heredocs][] when the need +arises. + +The idiomatic way to write that command in Capistrano v3 is to use the +separated variadaric method to specify the command: + +{% highlight ruby %} +execute :git, :clone, "........", "......." +{% endhighlight %} + +In this way the *command map* is consulted, the command map maps all unknown +commands (which in this case is `git`, the rest of the line are *arguments* to +`git` ) are mapped to `/usr/bin/env ...`. Meaning that this command would be +expanded to `/usr/bin/env git clone ...... ......` which is what happens when +`git` is called without a full path, the `env` program is consulted (perhaps +indirectly) to determine which `git` to run. + +Commands such as `rake` and `rails` are often better prefixed by `bundle +exec`, and in this case could be mapped to: + +{% highlight ruby %} +SSHKit.config.command_map[:rake] = "bundle exec rake" +SSHKit.config.command_map[:rails] = "bundle exec rails" +{% endhighlight %} + +There can also be a lamda or Proc applied in place of the mapping like so: + +{% highlight ruby %} +SSHKit.config.command_map = Hash.new do |hash, key| + if %i{rails rake bundle clockwork heroku}.include?(key.to_sym) + hash[key] = "/usr/bin/env bundle exec #{key}" + else + hash[key] = "/usr/bin/env #{key}" + end +end +{% endhighlight %} + +Between these two options there should be quite powerful options to map +commands in your environment without having to override internal tasks from +Capistrano just because a path is different, or a binary has a different name. + +This can also be *slightly* abused in environments where *shim* executables +are used, for example `rbenv` *wrappers*: + +{% highlight ruby %} +SSHKit.config.command_map = Hash.new do |hash, key| + if %i{rails rake bundle clockwork heroku}.include?(key.to_sym) + hash[key] = "/usr/bin/env myproject_bundle exec myproject_#{key}" + else + hash[key] = "/usr/bin/env #{key}" + end +end +{% endhighlight %} + +The above assumes that you have done something like `rbenv wrapper default +myproject` which creates wrapper binaries which correctly set up the Ruby +environment without requiring an interactive login shell. + +#### Testing + +The old test suite for Capistrano was purely unit tests, and didn't cover a +wide varity of problem cases, specifically nothing in the `deploy.rb` (that is +the actual *deployment* code) was tested at all; because of having our own DSL +implementation, and other slightly odd design points, it was painful to test +the actual *recipes*. + +Testing has been a focus of Capistrano v3. The *integration* test suite uses +Vagrant to boot a machine, configures certain scenarios using portable shell +script, and then executes commands against them, deploying common +configurations to typical Linux systems. This is slow to execute, but offers +stronger guarantees that nothing is broken that we've ever been able to give +before. + +Capistrano v3 also offers a possibility to swap out backend implementations. +This is interesting because for the purpose of testing your *own* recipes you +can use a *printer* backend, and verify that the output matched what you +expected, or use a stubbed backend upon which you can verify that calls were +made, or not made as expected. + +#### Arbitrary Logging + +Capistrano exposes the methods `debug()`, `info()`, `warn()`, `error()` and +`fatal()` inside of `on()` blocks which can be used to log using the existing +logging infrastructure and streaming IO formatters: + +{% highlight ruby %} +on hosts do |host| + f = '/some/file' + if test("[ -d #{f} ]") + execute :touch, f + else + info "#{f} already exists on #{host}!" + end +end +{% endhighlight %} + +### Upgrading + +The best place to go here is the [upgrading documentation][] to get deeper +into the specifics. + +The simple version is to say that there is *no **direct** upgrade path*, +versions two and three are incompatible. + +This is partly by design, the old DSL was imprecise in places that would have +made doing the right thing in most cases tricky, we opted to invest in more +features and better reliability than investing in keeping a backwards +compatible API. + +There are a number of *gotchas* listed below, but the main points are the new +names of the built-in roles, as well as that by default Capistrano v3 is +platform agnostic, if you need Rails support, for migrations, asset pipeline +and such like, then it's required to `require` the support files. + +### Gotchas + +#### Rake DSL Is Additive + +In Capistrano v2 if you re-define a task then it replaces the original +implemetation, this has been used by people to replace internal tasks +piecemeal with their own implementations + +#### `sudo` Behaviour diff --git a/changes.html b/changes.html new file mode 100644 index 00000000..6d0d3005 --- /dev/null +++ b/changes.html @@ -0,0 +1,4 @@ +--- +layout: default +title: "Recent Site Changes" +--- \ No newline at end of file diff --git a/css/capistrano.css b/css/capistrano.css new file mode 100644 index 00000000..65f01441 --- /dev/null +++ b/css/capistrano.css @@ -0,0 +1,66 @@ +a { + text-decoration: none; + color: #52C1DB; +} + +body, p, a { + font-family: 'Open-Sans', sans-serif; + -webkit-font-smoothing: antialiased; +} + +p, h1, h2, h3, h4, h5, h6 { + color: #1C1B39; +} + +.header { + height: 195px; + background-color: #1C1B39; + background-image: url('/images/CapistranoGraphicWireframe.png'); + background-repeat: no-repeat; + background-size: 275px; + position: relative; +} + +.header a { + color: #52C1DB; +} + +pre { + margin: 1.3em 0 1em; + padding: 1.3em; +} + +code, kbd, pre, samp { + font-family: 'droid-sans-mono', monospace, serif; + background-color: rgb(250, 250, 250); +} + +.header a.brand img { + margin: 6.5em auto auto 7em; + width: 300px; +} + +h1, h2, h3, h4, h5 h6 { + font-family: 'Enriqueta', serif; +} + +.post-date { + font-weight: bold; +} + +h1 { + font-size: 36pt; +} + +h2 { + font-size: 18pt; +} + +.nav.nav-list { + border-top: none; +} + +.content { + margin: 1.3em 0 1em; + padding: 1.3em; +} diff --git a/css/syntax.css b/css/syntax.css new file mode 100644 index 00000000..2774b764 --- /dev/null +++ b/css/syntax.css @@ -0,0 +1,60 @@ +.highlight { background: #ffffff; } +.highlight .c { color: #999988; font-style: italic } /* Comment */ +.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +.highlight .k { font-weight: bold } /* Keyword */ +.highlight .o { font-weight: bold } /* Operator */ +.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ +.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ +.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #aa0000 } /* Generic.Error */ +.highlight .gh { color: #999999 } /* Generic.Heading */ +.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ +.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #555555 } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #aaaaaa } /* Generic.Subheading */ +.highlight .gt { color: #aa0000 } /* Generic.Traceback */ +.highlight .kc { font-weight: bold } /* Keyword.Constant */ +.highlight .kd { font-weight: bold } /* Keyword.Declaration */ +.highlight .kp { font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ +.highlight .m { color: #009999 } /* Literal.Number */ +.highlight .s { color: #d14 } /* Literal.String */ +.highlight .na { color: #008080 } /* Name.Attribute */ +.highlight .nb { color: #0086B3 } /* Name.Builtin */ +.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ +.highlight .no { color: #008080 } /* Name.Constant */ +.highlight .ni { color: #800080 } /* Name.Entity */ +.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ +.highlight .nn { color: #555555 } /* Name.Namespace */ +.highlight .nt { color: #000080 } /* Name.Tag */ +.highlight .nv { color: #008080 } /* Name.Variable */ +.highlight .ow { font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #009999 } /* Literal.Number.Float */ +.highlight .mh { color: #009999 } /* Literal.Number.Hex */ +.highlight .mi { color: #009999 } /* Literal.Number.Integer */ +.highlight .mo { color: #009999 } /* Literal.Number.Oct */ +.highlight .sb { color: #d14 } /* Literal.String.Backtick */ +.highlight .sc { color: #d14 } /* Literal.String.Char */ +.highlight .sd { color: #d14 } /* Literal.String.Doc */ +.highlight .s2 { color: #d14 } /* Literal.String.Double */ +.highlight .se { color: #d14 } /* Literal.String.Escape */ +.highlight .sh { color: #d14 } /* Literal.String.Heredoc */ +.highlight .si { color: #d14 } /* Literal.String.Interpol */ +.highlight .sx { color: #d14 } /* Literal.String.Other */ +.highlight .sr { color: #009926 } /* Literal.String.Regex */ +.highlight .s1 { color: #d14 } /* Literal.String.Single */ +.highlight .ss { color: #990073 } /* Literal.String.Symbol */ +.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #008080 } /* Name.Variable.Class */ +.highlight .vg { color: #008080 } /* Name.Variable.Global */ +.highlight .vi { color: #008080 } /* Name.Variable.Instance */ +.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ diff --git a/documentation/getting-started/installation/index.markdown b/documentation/getting-started/installation/index.markdown new file mode 100644 index 00000000..944d33c2 --- /dev/null +++ b/documentation/getting-started/installation/index.markdown @@ -0,0 +1,86 @@ +--- +title: Installation +layout: default +--- + +Capistrano is bundled as a Ruby Gem. **It requires Ruby 1.9 or newer.** + +Capistrano can be installed as a standalone Gem, or bundled into your +application. + +
    +It is recommended to fix the version number when using Capistrano, and is +therefore recommended to use an appropriate bundler. +
    + +### General Usage + +The following commands will clone Capistrano at the latest `v3` revision, and +will build the gem and install it locally. **The Gem is not yet availalble via +Rubygems.org.** + +{% highlight bash %} +$ git clone -b v3 https://github.com/capistrano/capistrano.git +$ cd capistrano +$ gem build *.gemspec +$ gem install *.gem +{% endhighlight %} + +### Usage in a Rails project + +Add the following lines to the Gemfile, to the group `:development` ideally. + +{% highlight ruby %} +group :development do + gem 'capistrano-rails', github: 'capistrano/capistrano-rails', branch: 'v3' +end +{% endhighlight %} + +There will be a Gem released via [rubygems.org][rubygems], but as most people +are still using Capistrano v2.x, the v3 release will not be pushed to +[rubygems.org][rubygems] just yet give people a chance to lock their version +in their `Gemfile`. + +The *Capistrano-Rails* Gem includes extras specifically designed for Ruby on +Rails, specifically: + + * Asset Pipeline Support + * Gem Bundler Support + * Database Migration Support + +The documentation for these components can be found in +[their][capistrano-rails-asset-pipeline-readme], +[respective][capistrano-rails-gem-bundler-readme], +[READMEs][capistrano-rails-database-migrations-readme]. However for the most +part, to get the best, and most sensible results, simply `require` these +files: + +{% highlight ruby %} +require 'capistrano/rails/assets' +require 'capistrano/rails/gem-bundler' +require 'capistrano/rails/database-migrations' +{% endhighlight %} + +
    +
    Help! I was using Capistrano `v2.x` and I didn't want to upgrade!
    + +If you are using Capistrano `v2.x.x` and have also installed Capistrano `v3` +by mistake, then you can lock your Gem version for Capistrano at something +like: + +{% highlight ruby %} +gem 'capistrano', '~> 2.15' # Or whatever patch release you are using +{% endhighlight %} + +This is the [pessimistic operator][rubygems-pessimistic-operator] which +installs the closest matching version, at the time of writing this would +install `2.15.4`, and any other point-release in the `2.15.x` family without +the risk of accidentally upgrading to `v3`. +
    + +-- +[rubygems]: http://rubygems.org/ +[rubygems-pessimistic-operator]: http://docs.rubygems.org/read/chapter/16#page74 +[capistrano-rails-asset-pipeline-readme]: https://www.github.com/capistrano/asset-pipeline/bundler/README.md +[capistrano-rails-database-migrations-readme]: https://www.github.com/capistrano/migrations/bundler/README.md +[capistrano-rails-gem-bundler-readme]: https://www.github.com/capistrano/capistrano-rails/bundler/README.md diff --git a/documentation/index.html b/documentation/index.html new file mode 100644 index 00000000..879ae949 --- /dev/null +++ b/documentation/index.html @@ -0,0 +1 @@ +FUCK YOU JEKYLL \ No newline at end of file diff --git a/documentation/overview/introductory-demo-video/index.markdown b/documentation/overview/introductory-demo-video/index.markdown new file mode 100644 index 00000000..f7c5e04f --- /dev/null +++ b/documentation/overview/introductory-demo-video/index.markdown @@ -0,0 +1,38 @@ +--- +title: Introductory Demo Video +layout: default +--- + +The video below was filmed on Mac OSX 10.8 using a more-or-less standard shell +without much previous setup. + +It covers using Capistrano to install an example Rails project on a previously +unprepared server, covering all aspects of Github access, as well as +privisioning the server using *Chef Solo* and Capistrano with *Rake*. + + + +#### Show Notes + +The *Chef Solo* recipes can be reached at [this repository at +Github][capistrano-chef-solo-example-recipes], they rely on a fairly new +version of *Chef Solo*, spefically any including the results of [this +ticket][chef-issue-3365]. The aforementioned *Chef* issue adds environment +support to *Chef Solo*. + +The provisioning can also be done using any other mechanism, it's generally +accepted however that there's not much point in automising your deploys, +unless you are also automating provisioning of your servers for a known, +consistent state. + +Using `sudo` with any deployment can be tricky, so it's better to avoid it. +Rebooting services without `sudo` is typically the first place people run into +trouble using Capistrano. The [trouble shooting page for `sudo` +problems][troubleshooting-sudo-password] may help. + +**Note:** Some long sequences have been shortened (nobody needs to sit and watch me +sitting and watching Ruby compile, for example!) + +-- +[chef-issue-3365]: https://github.com/opscode/chef/pull/359 +[troubleshooting-sudo-password]: /troubleshooting/sudo-password/ diff --git a/documentation/upgrading/index.html b/documentation/upgrading/index.html new file mode 100644 index 00000000..4937e7e3 --- /dev/null +++ b/documentation/upgrading/index.html @@ -0,0 +1,5 @@ +--- +title: "Upgrading from v2.x.x" +--- + +Lorem Ipsum diff --git a/images/CapistranoAvatar.png b/images/CapistranoAvatar.png new file mode 100644 index 0000000000000000000000000000000000000000..d4acd4438a40db11a5cf2e9fbc46e3fd0f35d4bd GIT binary patch literal 9186 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 literal 0 HcmV?d00001 diff --git a/images/CapistranoGraphic.png b/images/CapistranoGraphic.png new file mode 100644 index 0000000000000000000000000000000000000000..c42ee367297f76c5d6f11fb8f861d14d7cce04c0 GIT binary patch literal 26920 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 !-T519ML>VIu9Y#GAiAE)AR^fTmGR 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 literal 0 HcmV?d00001 diff --git a/images/CapistranoGraphicWireframe.png b/images/CapistranoGraphicWireframe.png new file mode 100644 index 0000000000000000000000000000000000000000..16c4c26979903261a84c3115e2b5d1b70506bb48 GIT binary patch literal 66430 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 z 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ℜLYr_SR)GsB!- z;36PEHM$D#jPVn>uhokS!SO&qdQ^qrC~6=pop^$s;!tGIA~U^27@_u=jreLfF7z#@ zFkN^+6x9ImPY=AN;Kr%sN6t5r1Snj1>o4Ar zS#oBsHnflQbDcE!fbG2s+4!UaQEyx+hPWuo45nxo3$2|$j)Xit@Kgw25S)qG0_$dd z(@9u{8P%qKcsgLc>^O*g#B9I|^H#(&am}yqxZJ)+7L$v@wLqTX07;4G-3Y3#=@-w& z43LVAcWwv&5oD5PSFo0ofF-@1kn9sn8sU_}EPnH2;=m^my}b1*9Ld&h+}-=DB^(bI zxy#`KU5FjZ17XpCm(q^)j|x+5oE=3CoQ7Jwoai+x7MN4}spMtz1qU95?&L5FDvGry zWM(Q#oua8jzSOOtDXFk>lFQOHpDH{{iPBJEM%=ZV^#x;FG(5(s0p=Gu=ZKp&jnhf}R22JaB5H=?LV~tuxWTMjp+PJJl;G{iCuWK>Vkmvu*GERKCKd@rXp)6kRXc z(b?M{bu(h9TnXUarF}D72sFV^J`lJliDj|fFosN~nt{ULV+x>7WB>d7sK%N1Wz;7o zYN1B@tn1+_lRPM~NIK0>)RYM}l%fn%xfb#7R6M->g-IMbdYQz2bmlK3g2liZ!1y~W z14)kgGUV_qg33s4-z}T-_KV9H+bFkN8Q@|U<84=ZkmN4ea=y&i1lgSIy=K#)q#d0kUQ^j7`yV$dVAilkz-Nm`L+{D43R~jAQ{}sKN1UP zAMnn;q@(6?UV2W-DoJE~f*Vr&uJ)_d37%^f?QZ3{EB*whIvkOMa+Ie~hBdH)T!0YR zyNj{-yT=C%ULpmnCu9|0XfTCHZ>`#cSg6--zDjBu8A>@EC(3<*#VFJ9;nDBlU#m;L zP`4M!)2-KjLHxG8En>PkY)8vk- zZl8x7)ujC8hoKQMyv#KiNHvX)+lTPYuuCN?@|fnrn#8y17C!g{{qbKPLfZNc=dy{A zcWjV~BFh!%%-Kg5zYR4!^rt4ENCG}}N@_;k1VtmUq^GNTDAdz@nb4pI4rL^@F}q({ zKA2w^lez}k(0r`A-Ngu|=q|(}thPNB72=%l5IsTIZ^zp^?GNA#gXeDdTc;5gmV7e$ z`@T_`P~N5Q=u6{81vBi>nHIL6MfDy_N{gDTW){e6T+sxhLT9 zk&!1mX6sV8=JnBgp+>v(CJyylOB?ZdN!HB$*_rc^y(nU}N=ER39+e5c3a#mqY|g{t za07~-)Pg2)A$ySIo@NL7bPc<}45XSXAN_A_Aa z(ld0?xw*#mjNv)a?MrwCD||Op`>?J>_;|ANHFAdiCw8?!+XC<=OJ9eItO_B@(AYC5 z2e@Q*irGaQ&otsJa>_SoDsyUB#UyniH5<|i;h43RlOKhTjAd20bn6;@RXe`wNOWHU zXF7?R^z*ouh>?KCAOJfhmbZm0L?5yw6Dl!+355E|Yi z`L>dtNhHYR+HR%OVQB})z+*IsM039xDo1o@l1b1CFnibxV_dutLgSkV9fF`2UfzyfX~H?c>G%6hq+4;}iS5`=po}V)$+%ZhTx!;c4(uT|lh)@n` zmmqyE0%Y<|aXkFhUFMFpL-grQ=?Z}LFrl-j6<{Xc3@$V-x+IYYYHmwvF?#$PXR)p+ zao(ajF;FQXq;_SmmOL*hXPurUD7gS-i%u@M9Mc57xB#~ZPp&0Rpxb*!lE!7i6e!-~ z;gBjZ6eypU1~7SUKk1|k>9qr(LMb;;G_ECAvr(|u=spuQ#h4Sa*Y7Y3A@lcAtOdZv zektuKrGQNS?klMW??^cJrQZLQ4l*Y>*GUDK$pqlCK_aVUaOo_@o@P z#DkzorKT0?yF}X)WofWRab^F7L~eVQ^%EKR^R!q?d#p?uEr=d)8YB>O77b zmAD{DVW+S;p=IdvNzaCt7_`9wW`@sKufWj-;I}EH6|~>6t-j=m)}<5PZI`D4sk< z&{b!|9BqPy;8y` z9o7Z&!vTM@g8~7!@R)2sp>mUn$`)mnDLTx=GOPhOZyQ|FPM<&ehbF2CCrNNooU3^9 znEn5;uzipI3j3s*haR4w#XW;KILif}aI*yUz5% zvG3t*Owft)3L`jkeastsWJfn=hmbX%^Hw!$?2SESmH(W^r4{LXIKzajfa5hUB4ae@G#Qc9D&*C`t zxrCkhb6pmFJ)?PpM)4~XwMdmNAU6bjgPZ zEl0``XU9%~wL`nD!Ds!u!Mlfcgro;Oka&5Pftg_m*?H!-9sy->!Dsl<%8hC#6pA+8i)0gd!`<(FGntJ^f_mj zT^M>6?k9HOa=AT({>B~NZ5_|i&3K4$EKey2Sh_jlcYGi$dlH%C=NlC#C)@F3LGwXl zgJ%jlLq5>FwFizSsw+GmxciiJFG4|i$v+pdY{zhlIq#uWcV4JU)ysNE*cJxJ zQ~-y&n{1@Z1T@HLafGb9Q{o-3@_*Wf!emlXBnTZg{Jx+Q(iI_F3U;n>bWnS%4WzuWKtO8%ku31QAl0|u9VGS6~`gZ7%75}^uwuP`1CnpoK)ua2e53O}_( z5FxE~yob=KX zJ-P1J+c74&J|^>7#!b|#d}yEmCe!HeHu6K`06HjLf!ua{(EV?qpZem7D$&A!V}XvlIyjo0`!P1q-G+@fP}N!wKZf3 zK+_d$2k-^e@tnY%)5sp>fnUhT9FY=MiKxGT%tbNt<) zY>BRqY3JGCJf{Z=VA3;k54i%8twsQy>m-Dk=|R2UM8xRrZRQI_^jL`2Iu(fHjke7O z^eo7gfwb{z^_&fQTNc@IpTxrV0$WGIA`dQWHYb27B_T3#YsjJv5|(}Y9l!Nlh*b!@ z5_5YyMbKi^M?$T(0LQ_SR=iT`AlG!`JPDDxfa+snKh&A;Qhk7FA9S2ba!UBYM%SBN zl01R5V3GWDxqlG7x@fyXB(i&oG*MC#-$@W{ykgG@kIx=@SJo0J+$MO+l3GWiKl7O4 z%XzB6>q5?Ks@9MNp0&^Lu5n#~_5|hyckPI~mYDOBW*!dF@b*IfM|Jz5en+Hde^JRi zJqRM3XGmUehROjlrz;OI$prwglwR|4h6lSYaKju){_zOj0B3X3TR?UJmp%23rI*%O z?JI;o;|hj%045#JavQDSj|3COCAE(HnTfg=4XkjVFA~D7?z=T)&N}5*o;9ZzksyN% z?0o?wXt<1V7~F|V%n@YXY;q`MULeSH-F`Mn@7fmYSH42VYYv~z(h$`%UfL*R8a34IlQ{KNNF7juhYa*3Seecv>0=%OX+J>z1=Jv|5?GgRkbj=FYuzP>fPZCrSqN z%y;>|iG|7+9X@=xDgYA?IOAFw37zBHd>Lm2u%6%;-9|<7Ra$$Ghrq$~5|Vah5!Uy@ z>~ED&7p>J?w(ycm^nAP&(GK!rX@(8whUYj=z+65xQFVcBDgQsLcW1%-e{S`4E4j!- zB~`k0QE9aMx}WF`!NSkVZV|{3^A{yXO&p*~GB@g>M@-ZiX=B;Rk?yQzrN{a6e$=lK zU$E|clMVw=1HeHIqFD&{62ke{NUh*PiXsfuao0Jq5&)ClwF&!BHNkUqfNdm@%?yBc zzbjqgeQ&R1W#Y{Ee%p!vd*ff@&&&AdIVyYq_hJtmXjff> z@8M1XKnM*19xS?hPr~!JxmO)dz>JC^@M?~gq5pj@dY1Y-ub-Ray>Qh1#XTPiK*ssK zfVHco&T-sC?YT#h2NOKN^icDdRPLn*PBus{@k50HEB*PnCnIhFN(0Jyfy=V3NUr+~ z!NZO;9wz>beZJ8k=)K_rzOZc1J{9d-ku`@lQP9+3=pdS>U|h zAP`zEY`ro$JH9uwsAuGwqJVgApK=E|RMFdK9Zy2-Sl@ndcOrUP4d0?~dfpZ5q8(9EO^3-n?=wZh*X3k&E z!+>m|8w;iMNC27M9851xfTA1+89E9?Mn%cP1m2kq7GTIBRM+;3!( zH$n!OP5Uv)D)K&wdWjKGPRDU}jPTI7rwm?88#eVkZpfm&u!!d^Q-OMO_#+c}#QL5C z-vi2KoRhcGkm^|{!1zs4U`->lPGC9Y0m>Pvl$iMU^dbXSbcgWW|Uvv*4+0 zdLX8uFi*^Tta-rSe^1jLN+iJ`ze?bKER0T)RrG>hxDNzWWhe|}ddWOl82jRDPR8DK zDV%!h;|UH#Ehgerncx6s(y~OnKv9eut^US~w2DJ1sGbK|m|iGY;<*s@C4tKp7emj_ z?ET+eMJox`8{8tvQjga_jDbpAAUmnd)JqwT&i0K0!}oU-*yKg|tiZikX!)8L|GH-` zAoZ`9;^9Sr%slR#P?B>!3P;hU^Tth7&aFvc+0t+f5nv`ROB4$|AS9SOKQokq>Umme zc_sgNq1{~qv!G$nT#!_;7a0=ovR7}Fq(n)yM^Eto!2^{$JWx5%S>6=@o8Zci^W8eI z`L}lb&!*%WoGk#xWn~q$_CQl&-QXFk(h~Swt;x9@io65ZoR|lo4#-h7fAP7}2zMbgN$i9B5jDys=L>jaz7&&Sa)Fa3Q>p*Zyt-SG77T8UxZ ztRqhzt!Td;m*k;CLn^|~CIBzyc%LJZG)2R3DrrmZ&;TaTGP1HK`t;Z!WACOMJa=!< z3O`l&Iu>G?Wu*iHYDd;}o}Pz$w}k2fp5ia1{u_b`Sx)xi+zSR^ z(%PLNfIHB~&jAQPStG~K%*6UB`=ah)o`rHt`VC`*0xny4KU%dVYjEF*YS&25>*tER zP|3?1C!p9uK+#aBHSj=li2Gu~GdQM;;@jq3mZ%S%(z1J+=Vg0E8f_>KkXc6U<$(B@ znHol3Daa;)WzYIKB!G#BYb15eCR8L)UguMKk}vSzktUE#GGcN~3H{bHPffN0ngn^;PdO zBTF!GDTxrlr8jpM3jeMhw-^C@%LMNxm!t+NEEtBch~dqiDl7b{5+u;9nFSif0q&pa z9M9~C;B)H08E6Dw3|K!V2AQ!a*rg>=d7P(si*Oo3>cmYt0HCM8Wyd`{XMN$VPylAr zctzE7-tZ_Eenk)M5`(CDDTN>EDe;b8V-Jjugr+>bXL#LydI8<$XyVafzM>PU zym|KQh3B&YT;iQfWTmIY158(M$v$wcAS(r-m{qix#=322scrWpTjt%`dG%9QQlN#7 z5Y};Jl{-nPK>OM!UMUNNSf;WB0V*na>@kUr2NLM>kEmZp0|uFGqf}+KA?~tIE|9Fx zd*Km#(cuFGmW?dua$Ep=aFQc;!3HPlzu1m5?bt_8TBi#co~cU&Z?<77qx+>OA%aE# z%d^2D;v9XY0uuLzfWhTS_!) zAKtTjZ<^usG&&O8#(M(LEo+=Ux8tAK@oPKYB&Z1SJ>nh!edyH|20HQu9+v_xIp4Ym zG^MU7KqVSdJlA0#)mW8hhQ`@w9{gs}9?T-WmmL6P+qRQ=*PhDg8Q?DeweZ@J^T{v# zmiTfT37+RDB6>)fo@ugZy{-<%C? zt?wsx{9Ka7+T($Cr9?V~dmayfji56J5$Rsai^q{#5*Rg#oC1_uvC!@G+iyf zmK;sVWr-QWLX9(aD%JX9rl}ETT1ioS$&%$RrS+n#kJZ{HU zpLZ%v_zalm1My3n+#?uT_#9PmsUma_!`jT*u(7L0_EL<(UC0 z*8*hn*+S8wYiQ8^ogI(aaVNhgU9PZWS$tm!GqQeR#~+!{Cblpf#F(T}}w-^3aDD^!Z$JmbRP2>f_MVv`} zG!>PC_j27V&^Z7IKm$33qb68CCXRZf)k`Hm-x05?%hWaj)c5SC?qrU0a(mphcbq6o zUrY61P8vbp%b373xYNF{HRNCJwqr9ugM>^z&H;SJ>jF5OE@OPHn=3zIsk`jRHG=03 zCBCayCGKTT{zUk_d?)wP953b(%?eiuQJ8f;%6nysdi#)YaJj}TRHN9|!?WVw!jpNn zL zCT(8&u?HO^s+FX7Um}XrGMPuZer)ruO1r1*99%uvnh}r~?L?vnbJEE5UOvDBKNquN zT)}WyjVQ0MhpzLYHyJ|X;yFbWD386JlqW$lxPY6baEh|Z2In3^=y{nWzErF}8ZO>5 z6pzdErEXABz!*|;j9|x*RkaLdW`#IMM>{u)QUAjc7olP4rs-k=ncRStuQHNu^~9+wC%A!0n3Wq0lA zGB+rmRDEg*8lJJ^3?8o4IUQb6nQUDw*i>HDSTXZUizGi3-DW&!JG7rTDJ1(<7@1ra&9Iw~-gTlcj=J_N+_EgHXoa0)) z1*^7*40Esd?_+ruFQ!#rSmq?dg0oasqY5rnROZj&EGb&hQ8V_OOwkZ4LeJc2ddwK_ zRezd=$Wb9Q02Xg!l#c6lD&QtD$Q99|>56Plan#Tnf16V%t(dlOPa;q63<2XoxW^j_lN ze}VJM%EEyHLG~i}nJ{&yv9UbE8YklTzVdcOHEFh z9l}%n6A7$VB}4BK1se+2z!o___N{hM{_kkUPv4Ar5H(U7#o$=Z9_2EbwyE=dDqT&ESuy}R?aI{EXT zFp)?2!VE3tLcwL5HM==05Xi)ZyR-b6Dk_5_o;TC=bDquU=Vlt&Nday%^<;XrqIcz0 z4W`UB>v3&?AGY*zhj5=kKV$8Jk1$E_U`}#DrEL&^KX?Z($%Mf3#;8H~;)tPkOOnA`V z$bv^t2L_xA7nbx)nR+rAb=geaSoSefLkbgAR5Cf2qXe3`yHd5{^SJmci>ii^r{3#V_on!L&QrQpI3KfX zZA|8%OnLjMS(UR=wg+>Pm!C9niOq|$LWOq3p*Irz%y&%0&up}@eo*#kuW)d=i3(@5 z!1Y6z2OSl*_R3+5bSDOBI#u&gHD9*P5hx^?JYDNO1JB zfaihniY|03)96itD3n+mDGKcI?whZVDSW%2Hs)xnNECUN4dS5r1~XLxm!$$sdN0=* zf#Gozan*K}QTB(WcmOPrz~b6YKH38OULti<(Zh<;KKB>Bh74_e3ai+QYLzZ~od8 zSXa}VGl2bvc_eveI7b)|Ncefg*U@wUKsPr~J*TRAy0j2E4S#N8j~(|J`H4M+w#@3F{9xU7ZI4De#FC_~D@%A57sBeu3)PUgib^TxbJQ%fnrs^~ zFQN=tM)zOW*0tU}xw~XNFP<*uCHx@r_#e$ed&kOmOe-@)?s^_elhVAGZ7iTW*cD(m z5B^D9JE_VRJkk?QlvGl-Mc%bNnn$!hPwJX_A*>tPB^R)S%CymtxQa^A=My3GI=`GH z;A|!Mcl)J+OFoO=x^_()UGpgKqQ}dA7J3Lli`p!;bP@IUzoibxKB=?4W98fNmg2!A zsdZcm*R6$BHX^Mnj_1XKckomrBoQSxN0Eha+Y!*cq^c3gU65jm{is%QESwH&IMebe zDk>_e?~q9oYvor)E7%Mi1?a$YRQq9uqn8mkZ}854krckSFxGZDvd8QV^75;RAIq<2co>Lagm2d(l=9$34QigGT5!^-eD!a+}x zTo2{du;T!&Vg;8fD&?M0fC)rzrd(lm>Y8&x0hfFZP_Qu9H>qoe3F1)IVx_>$ZImuL zL&|;VC0aH(Mh6XCLJId_GUIMqT3blr-b?UIUNW)PQ&e0?lmb8VrZNvb6KXDy%46gl zp?r{h^dIc_XGVCLrw-5Iydl5CMW%hkRaC^CQOC;!{btw*FQ?PtIS?`XM?3x#lVLN9 zob`LDcX;US9kY}&JeX3sm)|gQy_X;d&&Eqy(4z(K9Qc_}_tSQ=&jW?f_$oWD7jBi` zVL!fW$CvE*ZNP^6%~=X2GN9X5?p>_$E$%p3Zi;{0DXh-vt$n}_4~VJ ztu@OI0ZfjYfZIC;3ouzi1z|~17rWQBXPvYc)sxj(T}bV9$UE+4oK4 ziTg~iH8M+*!b9aOJA^d?jScM`5e{$YDJb5939z(9VD=O)?cGAHvqZd5ww(mQ8T`!4 z$j_W8;BYng`|APh_n+ADp`GhF4CSMQ(Vh?#zsKo8=xtQ_mMSWu1$q%R4ku#`AU1_C zc_#B9q3~uq|3Bfqa-(!z$$RpC7~y$452%x;=&->1uK9^wD#ZiLaU;`v`2`b&GbCD& zC-(y05cVZ_+G3*84e#~apS#Q2i4To?KzP`AorS3QUy-i(=?!Uc?)5pU8NPz_SE~nKTj4QVo6y z0Mp3yUgAKV!?{U2>;O9-b?V%b0A#whli+8fcGJ8ctHTuu=l3G z@E#8N{Q}<$4#c6XH!}H|C~xzkiTIgsr{rgX+p;%+gXWTYmM2^vfMv9d{I!V+43|P^ z_rT?ZDl-)o@!)dEGX@hmQRvh-uWXP>ZaR{A?oS#m~n z%h7^YDN4Ob?uFKQ_<;OHbsC}dbrn5(l9ZKe37KmVaQ+?uFi-^09cEn;Z=~dc^ex`+ z4Qc1;wL~kl7<&v{POFMiQ3(QErlPTUyhl{DxTHv(N??oMe_a|Ly=$&vgm)<7JeMWC z>)8xu(nReYCz2WsD#uC@9!&63BqsMD1pTbQcLML_!Ms5Y`I!iZtR;}zlQ87*fE_!8 zE0i?^mmAW~lU`47cpfe)6hw>p4F#7fD#3`$vK~+KpS`FFI&-~Q1T}}5;=kqZT$(mX zlL?aO?jyR0Jm-0GH$6_CCG;);WrI9R1((7B=D3lU+%v(Aw_e!1pj;5Pzo)>%w~dzF zgC^o#y&x& z$s1%+w?mg9ndh?^I0}%heY(V~_?T>@9v|-TE}avsrXA7(0GKSXA~CrK#mk=;_&y5p zUbazkNP=-~CsFHckAE1+)dcvxN%)?2yvuq<>*5pg-_Aq%E4Wlq2@YK1%)(JIo&_(j z2$0EgZAj*MK4CIX(s={CT`8H5$vgGkI2J+XKifOvzCiZ>xbiFm0hmT$au0#h63$JM z!YbT**-BXun62cu_PI_yChCX2S8~luhCt3SUNQBI*5&1x@?VkRoJSR0s;C47E^%h3 z2uL!ce#Jp%#&d>;(UohsdB*cZUTq$BeM> zxQR+h>=no%EX{k_3Q*C)-M|C+iHZ80Um{rP1N8O9yG#JS(TejeDAO#gbuXbu!KI2y z7~ryI7LxEX2P8ho%!-!7pM$b;YrBto(E#^{MKwc05y~6 zne`KY`T?1-WS)@%qEA=QA+bs5`$N2zv+LF+#nU zriEvf{7i5W!Oy(RuIoqrw4KZV06%G>kX7NyNBo_*08TRrGCyM>Hto=(q7nwU95<2o zYpm#yD#77(CJH@2nqaQ@H)w?Mcvh7(QV6*ErIjvBsC^x3i1yX-Lq$cU z6g}vwJk-l_n9z_#wB&|PAd{hVM4Z-^S>riYx@bkg?+dyW?+M^~MB6)73}7+@xY$J9 zVbCe(D!g!p5jT~jB(TX5*8R3H<@KloYXbKMEWWN~i3sjS?0CmS{LDr{-6$rw$F7jD zSj@Ud^3T>bmq1?~KU7py3fIpyvry%s)MQoaVML8?j2p2`=6TOV$vi71l#=6}2G0I- z1-&cqEb)#eP2_2=E6=im0MkUF1cU(p238ckJK*j8%#K^_Cis*|B1INu{WCj$AuzcI z-pefl6)OOF;%s|*@s{&F1N807v%Mk#tZP{*=AF`Ouz{Y2hBse;^}aiPsHmtErUMcj1cQXc^(Y#1WlBvBF0ll58MNGPA3RduCRu8r{(atXR`zAerML}PQrVQ z#*4(u340ve&^cZRpl6J#MXjO|48R0PLB{x)(79c}dvuDrdb!Yb#9aVR=*lebcp3l` z95cim8Vav6z;xwT?28^s`0o)iM|J%#;4qsgq<(LfS#SIuw@L$Y1aS>%eZ4(}Fw*aP zpdtj16Iq4hStuBSx2;(#tQ^*Hn4SgfyFZpx4^~A*rQ_M1HjFq(1ub@thwR7aV8E8i zx9q_oa3+&Ov-o-ACJKc&2`p8&3YDxwo7^5bg)z`i2vz=>>ENkO0X zU0Hy9dO%0`<*tnQnNM(jFAG0g@UH%j29qj46_qf+CGIeIEyo0dO8~adQoqy#SXQj( z8U5br{U7^ zF16$DOjL?zhqOpoi@5__-j?QWp+21=P@Php8jc*7;RZrTq3_m^th2b9A#IdqIK@Py zX4G5U-ecJVY|3|pflDX}Py)Uwa6jBlWtB%S?``BvBB|+CmatmW!@9Y$Np}Wtu5d{; zRS~MF1OqNd%>tKCBDjS91LX!4TF&D=ImbKl%Cc$^_n`mbP~1-vOX=|CEo8Droc9BDKCOC0?TpDXjD-NMxc9sWyjjGYBhJzDJb`b zq{hdYuh7nDhr#|M(Tf~8RREOl>+rm;y(6&1Bzcw%-J)SiCLBx`UO)}1f)5`owm&0i zgZ$i(uSp{GDeVqriOOP~z>M}%OD6I6L+Rl6A5~6@-c4{;w@A*GWKrf>g3B3IEh;MV zC03&rQL-Bd=GF_CTZ2aUh9r?2`|p2iA}{As;cJfabXkFz?MHd8LOr0Wj?{Ib>*Opkz0b z=PF@7!vvM9OjJK}gi3as)I&rsNG)w)dKDFw!q2RubRCm1?l(#(+8gNA&;8IuNiDr* zT)Rpj(skzB_5+R}REhzZoX}8s_2jq=HVVQEL&7rekgYsJiwNKne9e7j_Cq%dy}jpz z?SZ=qd_{=I&%Bu6a*-X^2*0S@P*G8l4=zWkk6UJp6PN*5o=s0;QS$<@McJWal6iX2 zpHtN5PY7Or+{-`X{fy|luCpm*tlxDv|S1k^Rs) zr^LOz3tTH$yQrzQPT<~j9_a7daXDxY(n@hqQR1S~q#hNOFu+pk0A5C z3>rjqo0m)G+0n1plm_~TWrq3Ntv$;Q0Yv|;9j8gJ3Zhazz^qFGm{z`H$NTXzK%MxS zDe7ycnbSdm-Dgnvc9%e}D&#)S?c023FPey-`L>{P9Ll>?Q3*>LCTh{!71($n^F%w| z%nM}V{xMN<(ft{giMzr?C4od_#j`_FlXw9%G3^~b0MZu+(`C*k?LA)5Mh3Uz)uacN z2N0Y8Op_B|lSxNUNlH|a$_e$X`D3!}so(+T5aQa&e=}Fo9ASxrcRZ?UL`6luxQy{$ z&upxN&UqQ%4G6*G=U)_=BO!;~bM_J(7rov!0(#(s`4WZ-E)`&=0hp3D4MNfHq$Ee@#n-%@ zhg_1fbv#vZ0ExBV4t45P?zNo+2wg{x)I>q^a~!UlCAO4PQBgVO%#PFPFxF34mfXm` zK_>4KcrKC5^Vyt@{7dXOoniPw^drH%(~UK4@2CJX?M1uF$l_mq-DJ=jGGo3bJZ*Og zd+#U%^b3LQDu)T~?@4N*^Btj!#b$b)^X6wlSvHlNuA&kIxJ0x8XLURagV0OBNd+<) z6+<%5^F@?EB6xLmCs*XW)?);gbrY3;(&R@4n5hMuX{VG8-&{m{Q}7W$#T z-K`%w!?zy@tVaeA_d|jE5y1Cgui%YYlOz0cSEsgKe09 z!e~#z`QYDOX`%w?W$^Lg5IQ-_P&vcl(_Cka(X7{6C2UEZMQ%41JePGr-FuKd{zB1* zw_QJUJO18|mrTS#k<__ITt++Rm1*yImx*r2Av020SDOU zYr-}BsY%G!EJ(g#$14K&A-oNlCmnfhClPx8oQdcR+f&YON)@S!ig<7dBM^pkAqghb zS!+#{MDu9On1`d`HQotQqFA`Q&*+st#Ii%U^PR_1+dHb{3NWQ*kBiytv|Nv~2k;~# zq#ruHgeXn)ZDALJo7Z@rmjJo5;AdV&e&$5N`Aza?Oscw2Q4tL;;k85$?y(}HYoy;m zx7-NbPoVj*iIREhlGcbo_kKHWOXBb#&k~-`eY|69%Cl5SDm`;BNuGYsj#C9?ki%2B zQcBsKc6`Eie9a=V%xQgozKGHoJ3F_r!E-6OA38v-sM17b6?`W@6J?FSM|z2c^jlf;u-vB=T&k#u2A8h+!AyzZ68hsR zf=h7kUlqP=u2=b*7S95nSvRuymsi{InjmGjh9KsSE+8j$ea)00 z+z2cVURuF-kDqz5iD(S_VjQYE_xhx&2^AI50#FHW+;|zkoQ?q`^L#+V^*!kTlR9^o z9gld=0iNXy!TPkecT_10U`pa&0*L*Ep!uLRoTajm|G^^w_{CD=_ zPfS!+PfHG|WGct^`0u5aC;C%6B!MOu9`Bpn%@9VNKNlV~lo$eE6Iqhz4)jpM(DE%N z=MG0H1>VaI0?)+t+*1>(9#mAs0wd@~=)&bCflDNEF0_V^%w|wO#kBM8(`Lj0n7_b#9x#mJ%`5=g3T#f>dtCLStjr`-!a|07hP`0gTj=X z$aa+!%<13Txjn7wK}AI*xCC$mP3!uin|+Yl1AgTa(G3t8=&nVXCh|2WVr!Hr;iv>b z3&*DfUR*WKO}&>YDl)+(=vmVyN?0CTb`2iDoQNL-&cTEl+)jrp0!U1K0 z=K&YiJ<3B;Q4uTfTp|ykP$SUeRPIetvls0ocOhZ33}fH^-g$4Oi4u6Urmsq2(u)VP zZe)eWrOgN7@lwDpGohC=*=eJR>T4pi5j7@170{y6m%EL?c9rBLjZzV-sHn(0qd1?d z%z_uLsNef2!R6y=8bXkN>AL5vD001+ObMMf$r{WGE>#p@CXjRNki?T~SzNsYusKB~ z2!-~E9cROGb@eq%z967n!ChJ>@GMN4h?AsciBwbs3ZrKTIZv`YQ4u-|cOJTaZRjWJ zLeC`{J3LpwoYCHKn)fxvsJ3@h2?1b=2#*&Xj!p=iJ|m3lI1Xi&l&@KkAdJ6PT1Gp) zmo=l_OBIz6Kqk&>oggYNoiNNcwkQ*~Hlu_@gsM+uDYU%i4ZYs9V~D_VQjKO6(EyX7 z2_uMqc@2Pypmn@O(tH>aM-9h^_}Tz;ob2 zNUDfcRKfw7^C4g+{$#DIkj#VV&(f?M88oa>25qcWi^hJ9WILL4ENFX26%mp&$p-+l zA!y#{l<Y5@gx|U^PpS z*_S7iZFvDMcjN&sy?NL9`x<@Bb%;FFeY~4%3NBR?VD=B_;C1_0P-g^b<&s=@yeGih zOMT6hUV+8ZN)yq0X;d+*s00l($NL4DcMIJAlSaLlDk=jFGMUVSj%RC&O4KA( z2>rjG>tUYYS z5Uk3v3L^fNdM{N}Dg-iJd7dPkOfQ)Svb2OK6w0+BLbSb;*OX44DLOMIg|^sLQ8`AE zgvha}8-nIMBn4nH^!tgRa!IMe;|Y~_TD~ScsviiVG&q?w>b+D^sT{~OQTVu{CzHAx zp3D6vYWp}>!d&q?(HP^(R?RTTvxJV?$7iZ3xKybcz;q;P2>{CRFQtUYQ7%bRxV{iR zXpel&tBkO|<6hUE8C3x)DwUIQeol3`N07|(3XSH{bT|RyyLS8}Hpg+^yU>;>dv}=!wN(IF)VT6!5y_ycV zA=-k@JdX=XI=tFM)T0T4%1IjU0F`P4s{|_@J(w)8J}2lRUS{Nl>m`AwBgNHAQ0lGv zq5ruZhXLlK^g}0~scy7ukBUmAK_<`nn2V|~nFru^Q zJE(?%&O9Rmn>|1$!I|?5!}gB)_Ef4M-9qG&_?IrBMoO~C*X(#p(7QyKR#}$J3`_M;Y)QL?K zl^ts68&erHfH^H>u1Ki)m7ujd*N*QCnhyY+q;g5O8?W|d0>0)q3ostWVK8a!I2DzF z0-2!b;Ezv&B2#wsg48nr%bJPG4o&M@QW->mxlE8%^+gk9EK9IF0p?CJvdSfWMp)?Q zd^@gdqwve>hd#lfqM|Z*AQQk2_gN_s3`S5U?f8}*_ZUqyRH?We*WobKjjZk~0CiFd zzTad7@h?r}-Q6qYMG^3tB!IW5e&`HG870oEs0^&QWS_zl{AfrwP2{!I_Kqq8A)P#! zlK7VZm&Xe#GAoUL31dJ~xg>G+tF8Qu-hGffjwmPWL_qspMm@of%@v<^Nf zu>NBqbAdNi68{q6=#9eW^I*=G1HirGYa)bxi#eLFd6)B`k^^Ow`=p|x(!%gWJ4rNN zNbO9ajsd@WzRs@d8Woie0MkU_@uq|c5jamx_vtJb|GOZ{~EjP&s*)lf0Aa{e;$4R0b7bF1F)h zcX*iCf~23CiL&FC*zYZ(_15G-5%ldjB)^~}&|O^SDG5HXUhfey7irwotBtI3 zNw^Sp=w+ayqLNS$sheR|d6PWL3Eo$^6=hdZ85n?R`ph6F7~IwZET##wuO={+BCuw+ z3z^H;jJ#g)cL@WS8pcvlQAv7t&6g}PQI{Wg4{F&V6_tzu=4=j!H%*uw@+rKcWqUCR zkUthwU>)4lJ0(oSD^Ijd$b2+BuA-unMkaXwO=^2b6_xA(X5AE&7?B{%ezP4YIU^yP z9R@}DuMv!GC`aZfZf+U;8|uiJ3y_J1Rp%> zenI=_3_G3{G@rVOLR~5@}DrEyq5}OZ-KnM|V>{`@3VKzHFZ0q_Avr9_w5mOt~ zD?TrUe+ls2)QnFR6%`eg|DV0Lfw8kX(*%#f43Ku(W?&o0(Brb>U1W)j?G1}y0dqTa zLuP@+h(TbMSt?+y=-otJaj?KiS`1YS_@Ke?>{0zgmP+%tsL%M7n!Di{9 zP|#+O94Kp8el*EoH*^dgLhX6#dk#LnzPIk*_w%0bK96*C>-XMs&Uemxp7Z_+MhK=W zD8Q#rKr7j|4_$|7cKB1m2D>AP9mW*ddq=XQV8n z%X}?=mG_&rN=(jtn@EWi%*fFNrV%12?Z5pvA(^PGLBrb|DE#*6QoL7n(M;aO{x(U`jC>fcvg+r-V0DTF`yn$9 z)JRy(SPn&*b_SXP-1uLj3ujbsc8hM2TC74}GwG5JT9h1ooh*VkKE*gJS*?>0rByZ- zYW2-Wnd6}D1Pg*&;WOj$y#MxjSprRV=D3Of?e)QBHig_Aqa1?myRTLp&;zo+d!^wM zYswP={(lk6w zEcOh)3-~Qm8ZK-cT9i6e1KOttywRhVYEPB!hqsEdYSV-@!_>O8-$lA48O1dzpO(B5 zmZWxRNWgb;7{!HE5ovOqe7gq}!U}=moxwC2V_=$dC8s60!bpY_)j3R&2Evhz@)^-o z8Zv5&xkF72p00>w06pR5Aq^|YK&9a>3D_mlm@dfi zcXr}oCNWl~pBNcDeKl)2UP#tFhGfjKteV)1NUH5uvP0}Qf};_T@pSTg<;(!2k&S7z zkp35v>rV=_0>^bM$u$>V+lU~o?OJS%CpvNO1!6f&UKol%`f0Fj(8$w_OUgcXo<5a- zBPW6sQtWMC`P`WCFl?e#;rT^X=^EDYySkCU?MXQO)L>?(3FFe3m9|UYgN>xY+dOMT zjY>OFgmI^T@r?AA^(h?A<2pm$8qyDISLxn(-djdMML=4e($lxFnK$W$#&)t{>!(nc zLKICsJ9oP*DNvhVq8%>sCOw+JU}HbbkKIyUp!%}Tg!$bF(ZA-`q1Sc4w4SOq)V@3J zBD+^J1u#inmDnaaqTN>fSMF!*X^HJlDT;v8FAxL|8mfb5JbWAF(m2F`;4~lg^up%x zjGUWmTeR^#7Hu?{2lbMzUN~|nCzbSW1d>)TTQONAa|CXF9ojHn%R+qe^K`=Uw$_Vg6@2owP(U*`8djlg<5v1P2j zjIVc5lhkSaGNTdB*{zC#oCr>$Stf@)`KY3S#H8!jjCw{fme;*4>NEx7x|2<)5znig z@DoHu_+w&=HB3umk{%RbgWTpvFwDuY+vPM<1IkSC$n*CQ!i_sPt5mM6G8WI()E^knyu1( zP1b3-O%*lx@FuJt*kcXG)*7oyx;1_o!ty6V1oB`Oh}F=ONwE=+rx^~hR_Z+uV1cc{ zoFXCP6AV+*v(CC#4IY##*#ZBXqdt)rJLDMpVDBE3>ozsYNB$LATKp|? zKT$B_sj5K6DPM{7hu`mK z`k#>h_b&xBV;`vO2j7tyHGQ8BU_bRX?w8H{FJtm7fnNnUx?s~?f@2wMoj3nZ)A{Gi zcps2IuY=UK&}_jN>P@y_ErCeFw+4UdS-gdQPGdg~MAQR;uE_tHQsVnMZdyvj&t`_d z>*g$ht@vvbYL*9r6AAbcQ#e=0oz1oP^ZFC^Ki!D{|3&QwZ2rTD=szIjiNa*C9c?%`&*t|CuFpkhVLpfryT#gQOc5IpatNHWDiMxzlYQe} z%-u%z5Y?=~&NvZRu}^6Qer4QrTIjyxC~XNq%P15zrT&junRp?@4`d6Q5zn=IyiHSW2$#8@nIV{h)S<`ARa3uo!Lv)1r-T?qk=`0GdF_6Qn1k> zSG>_MA1b9fXMB(2TWe1r9Wy5UL!__E?;N?_MvgYa+{u`c_^Bg0qmVqFNfD-G`VG+K z&!C@U7;^V_gkc$Ktr;?xYB}jk&n*14BsYN&8Ip7TdPT0g)46}T&$hI9wr_j)cQc?p zP6_GQ8JLs7tepH1Is^fQ0=s(vcjF;hXNAwyNehA`Ql!0~?=vm0orszrF*V-Yjxd?0&N1vs%23 zItgVK?Z>G9r*h z>&2x}!S0S5=_TKd*HlH{mesoBh$a9ngJ-Z7mXzIvNFmk$0Kz zM1Y%WsRirT9Z4YQtVPlOf1we}Va&?((EyAK6+cri=}x@H(Z}b2Z9GkSRO54L0Jpe??5Qd&inNI`+Ii-C15+x z*e1QAD^+j(%G+=6@AU>_v7_N{L?s28yd-Rl=`DH2+&XU`l=c-wQ-kAukO)FzoIg%l zYv)x0vW!KA$QT(Zd6*GvvY9_5F%1CecC?x=Pj|8}PfMqOKQh7G;r0;Lkz>RP(w55~ z6|I3KC$SO1bN;I}b)?CMhll&t>=y|q6@IuZQTV*=MNc{oMEvQhI-Dx=L_6`N{eIK2 z+tabXM8l4p<5g-xc77ZS9J%NVLtQ~QFZDApxU{k9J`onY5HUK2qDij`HN5@(XlDNf z+bgJ3rdS2ViEn(E$J9)PIzhutU&Pc&BW#{Z>Ax^T1Of?pCnbt|nVR zk{s7f!X%F{CiXVh=oQ&NRLyz*4^CBq>a`zLtOmM~Tl*>IXXA6Dm%iT%L;+gDg|jWx zj2-#{bCrA#boj#pDN?yQmx|WVRjSX}a$6=~8J|08n#Fg<7kp*eC?^ojk+bukUrKgVg?9bwn;5IA0U8cXKkclUGS4tC=p{XR2uMh04wQp0?$=R@&{^ zU{>;|MHRBs+Igmv^AW?|u)D6_A4KW93kDr~Bl;ryOov@yLjj(AZ$S@XZT z;2BlS#>R#zvC8!kKq*c9MoJ7AJkmnCkhI~Z^t>zC=(PC`?so&*mrw~MoS;Z7FX`mp z<&lz-DLcU>aNlX>9}|;ZMS7*C^~E`P-POxGJQTmrC}QTWX=lI6o;*4AM0pO4>7ep~ z$I1DHISq=F-Hs-M2&}k2bP>4>xqaopG*V5M&kRCq3PicnkOuvnm-jI%BFidwqke0@ zb9hby^;U3>n_VZWPIwwfWU?gii@{vv_Row5)1zC_fGwLokbgh1>0t ztI5CTnS7`QK|w8C>wuS9WzEqysu6Q${MF`gC_KpkeyIb5Dnf&&*-3ULdUR%R+@FKnmoY^hOU4(Ig+N)+A6>&8l3w;iGDxnX{8t zAgo3I*vGm11HzX<-%xt9p3Gz}i3FRos0~Y|r$i3%UqpBW1ys-oPK-JRNDhv5Fs)pP zs$lUC{03GNy(z5%XI{VZW=!Y3;kt3GD(rG>3CvnWiZ-r40PvpY&9dK7k4V8;G}l$O zBU8mU7<|H!#y=jZ_P)CK2{^NZU-q~AH5anC7zSUPoIQV_D=*aCwY(OoZpuTX2`S+h z7ZFb@d*Xr)UlaE=TTRj3#KKe9h80<)FL~RJfQ;k?EHCmz50?B4%`ETf@k!B)6!bjo zCPd1nxR#O5vT-a)E&vZ<%}m^x`C5AcGU$C&x!3f{cvLbQ9Qc6o3$VKJgpCa9+vj2E z>DL1CTj%Yx*Yw^1_?l5OV|weQ!Fja$|6GDTM$(faqog}iXw1lI+g((|59QW94fS9v z_DBSh;hW7h*9W%M$xc~hV2|S~7vz1Fp&+QH5~|L-5Rj?D;(bBq$j!ihWy@(Xeuz9T z0Jd9DAhlU}r6C&eEg% z_ANj3*ZjfB=iQH8n{yllj^jfct!Z@Ef*%WmLTkyRp!g9RgxewRLcj8W$a5X_ z;`+IOw5Z!VZ$}PQ4gny0f8XGRpNh>x;dQJmUJ7$|>?b5$TW|R}@t9W_RXU8Fs(+tC zOHiw2TN=yH%;0}m3%yno2*sSlQTR=bt7I>8G%zz^^FuS&tT8YKB|Q7^g(X|?9ok~g zpV=qSjzyhZqx*>Bi(1FK6ol?(SD(tsp6zof-h})-ilvRR-!lSLORgD#To~k) z2;0de1i3qD|C-U5x(~Q6ShpGo<&X*SV z=4d)|4wp{!JKc6l_iSkxIX3h*dK&?W8qR_b++_w!xP@Cyj2^OZBLwi%;{a`9DXJ*+ zd^0WA%NCfrhE(VgTPQ=}9K?@hI*a<7v4 zk7#d=U*WI!-LHegpyL|YvZ!z^WH^XbJfBoYwJfhn+LmS z9m{hAwu}a1B$yt!ixq0?Nf?X^c8;bDJC!qwJAJaTF{Jme@n5A(8hV$ROaj31U>!pM7k=96m9ePEI#a z$3UY;zAxZwjYbqm=!GZ;TBb(b2c)pY@f6II(tn~6jgo1X(tHB4NHz2)LuU}j&Y`1= zDdrYw_Y1f0B?N+TBpY-=EEJVt#rIQ9l@q`gemAJTbuMW(*p3uRQGM4P{FmT2nq{6M zoyQ}YEX(G`qwDuXn%*CaYg}xixBmHAkbi7kxY!3|uvr>)C)^7;4e1NK9&LmTiD*+% z^)xovJM7PDj;Oh;jdc8J`D?zR?{9%7ud#%Bk`ii9UC=kbVaDd1T8;>sYDw$dkKlJb z-Su2@NNZNR*TY{`mKx4!8+IVciY4~vfJqpkB&qkfnvP{8?_~dN2Eu@TeeMf0^D5P& zU(K(cj{F8}7W?p)-f1TOoJQ^m$0>a&T_dWXCzl&EXYSW- z)2$igNm@`*Metm3d#(g?nh`y)hCj)8QC&Ptw9}2fVrkOB&3eQkryBji$F1n4*P*cl z&a|knH9j^FRakIK#9+BG(Pl<$vc5~3Msw_vt7^_ra{9189nX9cIYGCA?BqS$4{?`` zq2R2lefLHGp-r)1?U{EczAq%J$<02Eig}5|^<>vv6s_8~dqqJp6?^|qQ0j#Khb$adf+lE>2dvNP~i(f#yOQK-IkI}HF)!*-JW~?GB zFT?a`)!tE~=;RY@h$CJ76Ur;D87{>gt}n`46^pMdDa~W%EVMfznv#GYII@3+1L#9Z zc62igE~%3KJa8`j>-&#);WOiUZH0R9HMgCQ3C&CbjNb=joz-_S3LEE4hnO$JuVfYg z)kSw#pJejz=Sg*1x9pa3_bviwPk~vT{VCd|4;7m+kt+UCSLwu4jLGNNR*S{;n=h7o zjRMS^D>lTC{@pX0%mkMGun#%>r9oM~CbJyhII0Fx%vC5a+P?g&Vhv=J4yEe!$25lbZg z@GO_p zF0!D~iGsGA3_+#V;*Z*63?mylkMr%vp)v_amgX)ZTrW=dA1A};P8$N?W2TP<^E|~^ zj_(s169^1Kt3(>3y<~O=w`Mz75v5+3Z#+S87S~mDcU;vqQ0#?DpdvJH`jxWQNdq5u z3#bZM`Kd}@hEc^6dK^ff_WZtu5tfa`t`+*~#bZ;=QgQ`Qcktev`dc$dt(Qfgyx5Xg zrpkeft?Q$#A1T`xP9f&n?V6K#*@tuT(~7f&IBHixH8P?4va2A*5y$b4tvvf7QLiX-ar@(H zg&5SPj$(xT3uY%@Bc5ePPyq~nIi(>If7Lv7;cZ^1d~Y2n{7E=uFw~N*viT#RfZ)Aq z*UMyfr_NjWpX{aexmL_+1!q&utHB?mBo&1tj?x!_bXZ3z9j_tEYYEu<{)(&jLMRRK zvYn)v@dXlket{I|CD1Y_I7W;RKD9}`zuvn&rfL$|{?&a@M@}{T==0=?gU%T8FKB*c zPOv5ca41sJWo~emOMfM?Ba{b^NUpmtK6|3(MIa!^VEaSSTd;AS^K*la{g@lSCXz@u zw~{lf1|RDOIB%V>BJhCYa)&*mq_=JMxb)cevk%VIy}gwLydT5Yq?1zUZ@7?XUw)h0 zzg-LsF6YeqF+g$BoE^39<)Xaeh|Mc<%~MO6AFNg%k0X0wx@3%ZC0|l?$12Ezr7)6l z9sz9Y#wktu9Gx8_0~s{pdHp$C_t)4_@4N0UBc+!G2EfPA^bAk!aKk!^aV8h~_empGEeMe~>xa>NFY5w`Yb zxUH>-1h>dTWfc~%+4bdYs|!p~e0dbur2r+=I+X5|9vkHSxKZhu3@46ekSA(O6ilS5`zS&_B&Y>b3sv$l zWz{cdgW|EvWnpN2G-Y$b)iO9|5>za1Qs!mHnwR7g{vOt-IA$!PVAJwt$L`-)JTk+U zD$TNanGh;9?ITH;tqX`x}yvI|{(+RGGCxo!T zVF^P1oN`Zb?MG)2HnaX z3ohNN_17k>XQ3*XD_csPz3E!12 z!3hZ%r0r*tJ6brD`N<9kJYdhXR#U8o)u`JA~6{9YzLG zlUYh^oaaVC2jX@Zazx`COKY&|X#LM!pgcl#^=!9V8uES9Bw3isbo{!83s#oei!Zu4{CS8f`;;|$otH6Ny4bOv`SPpZvdi&fnC>;0 z(GHrHnxH?mO88c1(kBJn@>CU>#2F3)0;zGYyxEUwI4-vj!fp>3aG2{g__~f4*LM32p8x@1pPNu=z z^~?RJmZ>)r1{gbKe?91HJmu$@_^cl|;x8KC_KP40?&BQMgs7k13P-SBh+UVxNd-Vw> zl3C>61~vf?nh^)kYY|Jh+$rBzKey9{5H!{i* zU+l2Lpave$Zcf`gdPXRyVZn%|m>QyEP+q?lnqoSO#x6cA^( z3wTUz+PaB)frb5MU`!>Bm^H;zlZ5fognlid(?+x;UNV)y2|m!VFl_d|sPBXTe22Nq zn!?^}Ymq+L0HT$*MTg3=K>4vs4qs*4*F|V{*N@S1YU2{ln;tZ0d$J7SUOQCoQS0Wf zMCo&yL7Abf`EKe$F73U;GAdp2r>K;X=bK4&g*2of!{7ubHyco`Ybs#g6~y5>`+uIK zpn7`6*j3)!*tXDzK1)(8hfPh!W=|2OcfL_Su;jI%aPTr!@uZIv&++5?^gxTI?&s$x zKj`h^0=hBG0F(S<6Iwps=Gh=4QiCtDN;HV& zeoy^e*`9hLKQ-{gybhHhXg`uuIIx*&CKoxA%y+TLw-sWbVN$ityr)-!cxk+Q%OMd4 z+I-ydu^EWA59UlB3<8ke*-FP^P(P)$8_1Aw6R-_sEY{}hSK}*#P}gLvZBtzNR+S8R zp}vH7sOYXR1z_;7a0>6Kb8>gD*$Iz}YYhpqOGounT~KEsKHEMyVEG!j)bjZSF^orZV|-MN_rcQURmkh= z_1r9atKgp6+rcj}(novPhROX`0fg{=GW83{nTxW5#PcCJ2KH>|ank&$#wRi5$;h$mlu0eYc$FQMsz6nEGc+hL`M7PcWG>_JjixtbSa9`lwfzot7xAc#hJj zS)kdk*UA|2SRLyq91;7o@~O-n9n9TF$6O0JsD&`?D91Wm4mcR_1B~fSCB8qKI0a3V z%be!=@udFa1tusYff+3Bd!fkcG)2j&0ejJHOk94tlfMQGkuVl6|M>P_XPUE6%;jE( z2tQaLtXHTR5F4J{pN^GVGU_l!I?{l@a9M(Lro2wA`DKD5M+?<6abnqM{p$IxYXmq= zm|p@ugpt6|WR(WQL5}g>-?Bq=%Df2}V2Bx`!ogzKpFcGaUMsH9uY%5lNDlYP6x^OtL8Rnhbh+Imme5D$o!Np4O4N!#Ax*Z0e2EE;pG+893 zZW-3R{_glOt|Q^5z0a$gu>U;;67+`PBDGBT~~u z_@yH&7VpKX5INsR%N4+5kOS^)ibww}#bBe*z?U_uhsD_Ce_cO@w>C-b^kxu5WiD8u!o^85x(0B_fu z()>cs;N~c&{cI$*w}42}v`^BZu+kjMmn#i>Rnz9JS2e_oD>v640*AW2ql@edpi~)A zWG>n~^1h5kp68H(8ac~7GjnaU=elyE8(dM|`j(9P9xCoS?6|~mF7jno_2kx`xQzq- zfF*4=MLC9xeLExFWAk(CmP*ETWro1;2nsY_?pfj{we}~&E3;grc@*+O6=~AbEe3`^ zr&h;qA`a)e(#y$QRCt)oI$h3$e#ZsuC7EYQke2gC1W>^wxhzrd;x%4+l$-pviP*u- zn+G6-AtU@&UE;6J(J;Z=Hn`MZ-J?w_JJadl`eK8P&o0eQiEs1$F3+bsZ%AE1E*J%) z@9^DHZk(K}4Qu`3uF*u%awtSJ80ib%Vd4!j*;@jL68 zi?(dBFI)uO^KH!_4201d(CuOukosfm?2T*2$zkZ=P<<)FX31ml!>7Nm*%+DZZCat? z+5C(msDyop5OZwmN)@bIl$z@|wyX~bal^UQU1uPM>j@Hooju0|8CQ*$S`sYM8N7vI zk_UpnhGFL9XF>1KU61PW^PWLAYwB~xky4L5R^AuSwU+*rOx(n-v@L4KXgtms5BLV| zQfNecBLFZl+05jdXYy<8O$*Pvb?$Wq4WDI>7b?k3USz%@!|bTbTZwIdsSK5UpJRCR z>c(nBiQX+)-4RZa63KTJ{*pV!+~MbvqtC4sSJyA9lS9|ZX)A&|nx&xrmfb33qS#p% zH^gwQR{5m zJaFfO8a$}_@ZzrIw;3U={WswAUQH*#%u%nbA6UjvvuT3L6jgl$lFwVbE}kMFRE08n zt1F$Pb-}PT08$&hRcbB??i$cuU{Gjxr6hk@W`zk( z_?Lo9r$;>AdrM0(P8LfH11ZaK+spvIN$?Iz9@?QDV^DV@Q77GbznT1|xNUB%B9lhl zx<)B**M;hRf~mEbJRzbg~7uXzm z7fIVTQ?jD%0|{u%bt~%kwt6FT4AO2@EO}w@!w}F=*C#$mGw-CHM{#Yu?1+6bct&?D zV$%cUZ|JpTu=S7ee*Z;~IaCU$digX>H>D*^lr-;q)%mGKz>9_G!X~z;sbCe2%~Wy=k#}TUeXhbPAO#mM=1WpP+5kp;9}X!lb4D%0uZ|pr zZbBsX-A|*>Cp6^Onerdn+NU@B@4j=eG0k%64Au(=t=U<=XEZL3rY<6PNRIqj)%%sG zIz=~msEPP1gmcB4yFJVgG$W%KR7@uK#|L$e?{q_Q^dAn;IAsd31(UT{w7V);{#u zHZ~0P;kEu$g7^ZqG*@*lRnA?GFUEuh`;i1fCDj;Vos(tl03qO-j%6SfKka)rHNz;Y zjlfFf;$=04yO>Zs#LY5cO9>XKT5*M$HK<6Hx>DgrP!i+hSDc-1rCZ!aiI;vhMw}LI z^#*@n`^<&&5cWHcwD*fx$=7*-NDHIF=7~01;E+@O*HF!E4Q>cY>s$X?^|EDDC`KpW zuG(c9r5E*0Xs;3)Oi^~FXpIi)*L#^Sc9Y$8MlR3ujPmPt!r6XdhuT}Rbs*nFgHiB! zl)zyP*K>H`Xy)Oh>;?Z_I}muJ%1E2?Ldiv$t0x>Ce~NYBG}Qvx6$I>x)%W*<&iq$@AK(E!^Uzw z2AzRhkcDDMw38ioyVHT~QBNJAR1 z{%R{C@gI=rvSGs1fcgB%8mi$&Z9P=o{p4p8Y>!C--@%6_%bh}t+&Pj!PA9c`|7D4g z(&8;7iTrS#IW(%u09nxd*XYKHK#fN?=7!ZMaaSeM(O!iH-U@lgtH-8%3u0u461sl! zk_$2xTgS~c2_3~R@y){?}+Q$Gt=J@qF( zGJ$Jba1@tS8+Hg$TpBPKT;!a@BebG9)ll}fzkH%lNEu#ZKgd^ zmG5M@ee6$&1b=q6r@jPowjono=#cN71m;PxoY2X{b#vwKkPMAR42 za^0iRav|L)D}wsOpym4fEMCK=Fjn^lY{<~#e_LD$jjXw3hLHS|mk4M)_A@A|8my)JNI$Iu5E5v-C|PNXUeu`u7J6j}%#PkAW0 zj+^t1*Tak8?UX5{L}@aLLU*0OJHFB6M(hC{_#jnhIE$W939on{Uh(Du39caH$xiDu_y!0*Vob3rzJ(A-NAt*+qiWhR~H zgT<{?zs$XL9}y8;c8Ww>s`DUqdHZJVu(q!yZ=P}7Ofi0NaEB#>Al`$WQXyT5EQt2I64)h^TGFPdm zy`s5#PBY;B+~?*);NBN;w`MH^`?YM7NmcxPV^@UT(~_{5W2zQSzR%|afQz5y*QjOz za$K$(uWn>#HCpqjp9xNlaekM8LEy(!LES+iq85HO9YQI;WM^gEg<7$ctm!<{ml|Ye z)m}EF!{gKKOoyowEN*H!uFQqqAyEO%kNNVR;rzQr4<;p5nO5@2kxc!vPFg=#EtdS@ zcJa%)zVNs>d(Q`)#LAbhCh2$@1!2Hn)1Db=MGFF&d;-i61aEFc-{ZzUUN2?z(&J^u zTU0y`ynWwv79>umN7?gE;+H)C-uaSa@al0H9X}5fudV_67T=YxTUygtQ70S`#KUz& zA~mrxnqRQEGS_9XmGJ2WZAF2%0c=dC{Kt|1{onjeq&9%`uIH9 zO7>XF&NcjRS89d?z$JGx?1#r|3rq!B=JGDdDb89-wMrk7;iu{1Oam~j&Kr)UbjnK7 z`TeYqj{+Y7zUJMgWJ@dH_Zo)&Rm{`rr*incApiI`zzKEGJX;22Nk0G?A9BzQzqw7! zdxCW;F{oy_jP6xA4r*IyIWzByw9r$Nsoe}ecwI!!@QcTCQRR(~244Y&MG|!@>um|l zT+O3Ki)Is-84^J-uao|E-h+Y3qxsUe)nG#97yYda|ddc`Wh!; znvX{@O`zQas;v=*Cfe%#!dowrQ3ppPMK_|(K`r$A*nq$GzCtp!^sS5}z`_`{^(DT0 z<;4(|4h&3-z+w<-L$g-+gPIMiGf_67*wQR1OJ>U{qfXxXUCm3oSkhD5fT5Ol5Yh4v zQCnVW@gIGi(r(54jKZV4Y93E|FiKX>@P_{YKeUpi$LcN_Uftfv@_Ean$;+>OV8K}J zLwtv|(6s5&Dp4H#C1KA&2PuNZ2!JICaV-;e9^eN;sZtJDFLF$u72#1|kPmPYQjXM*ePz z^}*iGOYLNh@s;gSv-B`&8`_e}*`A}dwBDA09x2!4RQ=f@F!4+G`%_uKJcb>etYQ9I zp%Ix|3hEBW*=NHXA z)lpW0@V^Jnw1CAqA)M|NFQby@nG@GJEO3aN&SWOz^Vt-Hj6CrUf1YT|hnXF0qz+;R zItBmjKLW9bFCNUDjp@*|`N(UWOS7DWOGuRewW9YRr4+0;Vq#cfxhTV&Qp5TLikCH& z=YIXi45lBroQh-+<0dF7uU{EL}nrz^;Xt zs*{}}M#V%%3(N}>5xsn(zw+*1qj~f-ERXHlXT=erUg$Lhv}5>_bm?sg)40&ka_q5~ zdWnAV43~KG$g9ORN^K(`S{>sq%8D<{bN=TI^NdwTo|=Wv+b(C8tNDO2In2D&TmY6R zE;LWjBzZ6(7y)#SvSqH7BTG|Kqqe(81P6o0&}t2_wS4+N_De^8PFL?vurW5~`v)3AimM zD^#x@d-9Xn-I^pww;#&!F`&-w49&B>(axszu{)deH_vXIcV6frB{?IQ<}X(Lp~ zhY{xn029hY$i@XmdF^;F{r2J_S7MYD z2xhXm{>(Qyz-)prtB}~&kLgH_wB;WK5&{wS#KRiq8@Mj^ivlCc6(tZ(N>r;!MA3`b zVYVnHncpqSzSdnavFz2AuPQifZ=|$gCGQ(NZbKD&2s-altvX8n@`?FR@ym<62fLi0 ztN(aC(pj^r0^;n~dcyoJVV4O~cEFl)(=o2xulV#gi~iokknF?6DGs3RMCi{vzi7%+4?u+x2^}J+>0u@{MOX? zx1VsHSpWGk-vt^}Nk!{~wr%ipAt}E!H&M%K!ZoVN9&amP2I-ZQuipBr#) ziJ@fL{1KVP+vz75Oknw5Y z1%DVB6(Yd=aoO^91i_d=uTjGESeq0obv%R2kkFvMme){K!JcqLz{UM=7PlMn-pe}O z`ckG-L6=CWjMng{@N3z&zerAB}!PJzAq-6;u+CZ4LS6qq&~8M;XO)?!xoyeDny7Q|^8je8kX6Wm&4r&97FwN~_6v{^=1pi9c)b_%U` z&+wfE@X7eB+I`4q(Gpo*sk3r5RKbZtu9$Y56Nh0^>B<{c-{CE|Jf>b**SwPHfw6iM z3r>O`qt}FrUvu&9fvTCQ~h$%1M6p}$fXG+)o|8mxh;e$YCn+3AIPqL#C5 z0>?1Gx#`4?PF;0zKKI{N_d?{O#@#V=>FLnCjR0r0&^bKOIlrA}&(S^nB>Ii>+PLUu z)+|B7>(YAl)!gbmO_3Bchcqm<0`DT%w&UpS8SBI6-863v6!<=W18jKWL1jr$Tk+7I zC(=Zhw}djleKKecbTcI0)>hU}PN}hPmhv;?JmZuUd6qCCxQOoFV_&$3 z8S?}&f;w9|b0SeI<7g2TV%BLZ#Y&`x9TZHq3D~J`LcE!9o&7%MbyQgl8r$qK9v@f*tDs z90U;;@9-J{T)a7Ub(WE7@oy&#-T#Jf2ABey4Zn#qwlG-bePOlv6A3Lmt3X>{dNFj8 z`KjLyZ2mKV`M$NAXUzdIC!6F8FBfux`rPXuNHapTx7xRC2WSS0JrGMyKo_Y~!O0_bui7iq8$7)((dmxhY z!eL=$b|@k(yR>8Lt`sNc$!Pc=*4zwb)FA?k++LvG6MD8houkn@QcatA`=+5`$?apY zc%@E4j6(9?X38SVE|n$Uzc6QBS3R+CP+3g<``#u6vG7zWljYAwV9Y!4=f*6xnPcaS z^-l8zXxJN!#B+yQ(%F@KwwZxWDHzbxGYoj8_Iq}S;Ia*vk->AJka`)lJIUIaxaXbu z>T0N-1;&ed91+ybS*Oim@WyKZ+rf^jivy!cOsf$&U%0t9#W04?s)0>$0k-QA&RDORj#vEuF& zw-BHdP4NOZ?|1VvPv+#z%sw--*Is9>fM^md@H3)m(iT18lSzGvw&1$L%+aS|#!UqH zm`}POj;0tE05F`9fNGGK)&Oj>K1bun$}p-pN7`29p7l_IFxr;taT(KcgH$5}TgURf zjIQQ}zoEWi^`P*JobFr@sF)Gqx5KtEWN5vbU86c(RI)(fy~vh6ebcDjB$j0KrC&_)0G;gwNNH}5HtUiqWNW!M4PjL ztEFEco{^f6pvD!jAzb*(0!Hua-n&i1>T)_DPV+u~czw&Y!hR(Wh?p4Ry=XZZc0UWQ z5+#{C|L8kT%3IZi!{q52-X86qs671eyG4NNuRF%XH6}V-dHfZ)T-CEAw#1PGTlGG| z#~QjOP?7r?U8xjD?TI_?_%UhHkkc0^^5;;fvL)XTY%JDdxemw8fZ%+=?QmggJM)x1 zMNp%aCD5orwI;7Zjub;bpzd{*A|M1N=xg z^AHcQV=bCB}czS!Or6Z6fF%DJQI6FZK3$3LfK8`&C*^3rNF z2wnyV?Y>{{PDc*2rp*-~# zvr;RF(%;wjqCZHZ`0v1KuMfqtXf^MF28B}YGaqOV7DGsQ(A`uYYF%~wlhR3-=c>T5 zvyVYtyHIAHeC@RQDaBVMu!nboBA%bWV&kRf0A$tSeGK-pnxr_Jvd)>r2;+C_>SdywjQNO#=vpgJkRPU%df5KB={H$Bha zTN77R@ef&+2j4;~29Wv>p2A)4A>4%z`Ey-V0`<(ZpT3FR_TF*X zbCdqcP5rALv}yF4KrgQ?xR2{10)*DuDPq!+lVF+Csxrj=5s|RPU?J90>cXLQb#Ik4 z>eC$LTpxlKd6+1OYnI9%3eEPusDNpCE zRdEzD%`hk-r~a$57%5+2q;#YRn(Oa(!6lF5K3nol`$s*h|55jkAom|q7fJTq;^WsP zT-x|u5|-%__bLGKl;VVX)!fID$WPNSh>diD%G)SS?({VehI_lM-FB+ZI9vzx!e3sj zMk$=rAe8D?(Pe!Zl#zldWcAh)+JoW6OuU^RLq-j=`|VH>kYr!Q`(EV#%`O)3sqyZY zLj(0khpYj3(#!X42-1nHO;4Z+E>G%RZ&5wN>3 z6!SJP=5h(-c`g@B-w@9ojc~M$=n+h_A+L%uWyH})mp~)^H;#a`J)gMF1*HrmdX@$L zb&_>>2ga+c1u53+1~nC0%P1!rD@>bfo)T=^V&VQJpBMS7Fxf-o5KbbuTzQlai-bL) z{sljVN9OpOgFS{{Qvjuo+By4FQxPQXvRmaz#d?OJ(&S(xzF_Ra4 zi&VwX)_yCdC>%kuwEae2d|)E2%%}vpjAH}}dnBvo zW{c3&$^VyP`QnBw+q~vELVZTL9V%ABt(7+7vt=W-QH8^hqx9xY>9R4kdz>`q1!9Kh zcnn!y{f~T{7(N$|o5M}!((H~YBkP3llQ6W4dr}+<#Jm5z;umbNIhWbNy<*s2%t-Gv z6+fVI$T?-mjs0;6EJ5^huG9o7^7e#Y5eDr!dIrtO2~)U^v(?}5slmt}`6cJyCv zg1$<{nI-WXo?LZjTR)X&3AXjB@NiFR|9nWr23+saW+(h1803k-4cUv#i$yOgGa&L# ztWZ4*ak?n~9g-_>KOZA0(}E>ueqYdd_4X{>XO`+M2Vaap!i8;*WGH^AUVe*|x2Of& z8M9VX)_&FMsZSA}g=eGCti4`G@4AX|-Mz(*a`HX^d+?~<{6;u-%8CjqAc1kC=w%Q) z5@cya;%RixXgdi!^tBODJnmE`nKIFS-+glI9mV^LXt7mSYZI7H8ueq@&v0}E!1?lt z{Mb!1dIxRj!(s3+^GgTvYU5mD(U!6tIJ&-=S}6-FBHa}Wt_UI*a$xw*4rj7%`)NAlAt zE0O_P2_kRy?t6I;bh(!=Q$f7$sv+~b2eg3b?-mGPB? z@PdQtR-ySOT>Wb4b~nD1IA*{dXLs6*iJNAnOMd(Zth80fV5&AHk2~h^CS9=5GrE6I zGso_GLoISktQOIwRAfCQe(ns>$r0gotBN1Q&TV5@e<@>;+CrtZWYPw+Jj%={&~~1L zb=dl|ejAtP`229~@C_WaB9a{42|I02v!Vvotnw3oD@A4g@iYVlB-2qKWttlCHAk^~ z`zmlzZrlCn43!hC)wLn#QX`XI{M3#G*%$3x=%8#cDT7G?GhPmeg|m1@qS^jfaC43b zQK2|!NwqD9Xw&60CB-d^_h5d;^6(L3Y}Dy}In1~*ZbIT_D3}j2HKJem*YYu%^00HD zeU_QsYjkNVb@iHiHz%7KZ%u(~_axd-Xdk${%7Qn)mXb7Be9B(LhnZY#jZLme(=4W6 zR~6^48RiKxzE30>r1~Q}CM%s>Z9;`KQ)q(%U5>U^Vu?@e?tP5xZGtpB-VO(W=;`)0 zJ@@GlYKRxOuDir3w4CPpfprVg(x&k2;a3uiuVEm^i?{ZS8V_zq94zvX>mP^~i(afxefF_mAeDb2 zhsbdihN(cS*ekgi29-`%82@qiWEsU_hUr<2&gX$Lr&uoF^HFyAKJvlpI{c-m$&^SN zZQ?+O*?`@dwCOMPzg}KkoOVi@2H_Fk45lbZF@m3&Mo6B~VQF(mH-A*l$s3 z9AHZFccN^W-8@3Ihrk5S?gY8P-M{l;f`IN!o)RMrw@h?+4pqAU_Gj?lkJn)e2n!ZY z*Ri~z$>r6m<-P9-M0PBe&!j+z=oTtv)ujOL3E)o;t|f=&tFuMp)RUS`S(>-)S)fZ_ z-3N)68p(Y1@|Sxv&_9L9YXDRX0W8-zj!uNCPV6Hxe(8ppyj?{QBcMxjDns6gQwBLk zOuR1eqJu79i$nvc`gdr?-D2<~1`CwBmtM<&iHH}HX;%Hd^{QTYLCaGzlxX_6IOwxB zJ2rV3#ZV7ZF$xMp2#;!I6C1Vvq?|%D%Wf_Mzu#4p>8C-9++eu1zZihi1! zYb|+U%+Y|K=gc5OSK+R>J@wic5C@YFhkoM$p{jl^9YxU*jt>OJh}!8EYY`IPP3G8< zYLVCXH@}uYPhm0>{P@Z9s;*~$@2A;YQWFFTEJwQ5HYhXEAA|yb1J93)ci)Vrg0oRt zA4~+=^4{HQnSi1;6yIbyK2P-WjS&&>cKxZ#F!gYH2m&YcX4&pTF^DjxRF^xL{{Ep& zY%35++OI(yUl+~%iP7gFUQm#bBn_3V>kGyTGAEYk_1J+Kf&_?(o4 z9f1nKcDw7VLz89{n@FACd9MX6CEvOT{+l|7@fyJT>Zy08JKgq@$uxqyVNgOFO%Z&faYlScLWT&KOtY!* z8sx{d=T$eQr6Xg9jDz?8<%wt2IJuTmB1uU`D<$0r>eyN{wdD&R7th93Vh!!LP}G0i zD#LwxG@ibNOP-ep`TosV5WDIW`Qt5TE@H=xP03iiZ}6Bi)#i$(5V0COY(wm>sTRD* z9_jwMaN7T(j5><_$<@p@qLf$2g-xKOvdCy>?4c3z+Jx9er5UVu6* z`K6~Y{4&n$LM@Jr)-uQsfG6{1{BJ-C0RHOJhF&HIurw>C5N zQFpbld_tQ|WqvU<%)2Kf%~vUWp#}YT_D0h`iP6J9cihH14W+evB(s+#^YEAY zU~m+o4>eUCV+H{%M7+=JH0k|F81x-mY(Go-by|dLXrs%b>p<9fF;)mCH?Q$=!1Ohr0)P*x~lzhs@-OFmP1v5)7H<)TwkK>d|Rt`6N zgH5747nz%yvvHDaV9Z=HpLh?D$ecz)Cv{xo;tAtIeZ(psFQ)z69;5so3# z-9aW&k51?Bnq*%Yh?y?N&tn7TczrL9_wRXb#K`=9QGKJ4Eg=}Rws3b#0?TTbe{q#y z48rb6@HMr4Dw&@06|I_5!aX}W(sV3*{(}?pT&1gOKpF9Z9uF3i+xD?$?_#qly%$Lj zNO){jCwL8NLk>&=bVmphR=Yne0wT5(k6DJUi+6aRaU24`G+18uhtAEpOaO+vuKuX$@^H;_&QEDhLtN>+cmJ?bj)2Z%GdtVm|-cJ^oqf z?CRc(M5~487Bjebyy{SilmjJ*_hqQyZLyz49Vp8Z{Dv?3Pb2q{v+v#EClqe(Nfrjy zb$Nd1X`rzMkzH z^Mxo4{Yn76rcbqHGWOaXh@Kz5=@w_v+WInC?&@Y9!@WsV>PGUsA>IFW2DE-#9+Ip< zr13QxO~6$IoXb*x0#P43)paw;AE~AGDRF$Wz};UiP$h6z0@;^;4w_J|!8xGsd;|tK zLUDjgZuz?_*G&B3UUGHeZ0lOAz&Un%Uivz`{Fh5rCdB;VaD;}}sRosPdU8G1GX&6x z#ozNc&wSA!Uks@+(PT=N8yIyPrk7Jwn^FiS$c;|#PE*GRZDMk>XRLF4kVt?~#uN&S zKD(OfH&H^sp~i%to+@#`EHGlZN33?Utlb;zRf0^*52ej_L0kkNsnEPZ{4F1ZdwziS z;M47Q#|l}Y5UYR+023F6l!EzzG!;s+WGVeB#JjENNPDugyxFopwR_kMtiZd(kdGJQ zsM9s$_OtX?(ZAe2ng8%RvwtOGXaRX5bWCYDNa&+HpsjtXxyubAet0Bl+1*iw41pmM z6#{`0x8pqTd|HV&%Q*T_&?BGkrq)?El zah9RnI2sqmuzxT5&wc(%)VH&XOy=eRw{XXH)n;QsQ)IW}ZMy$5suLIf%0ET@!-eZY zY#!Amm77b(1m8yWrD}G{A20j!tnX~@j~ngGTwsguL92$k*O`h(xFmsY3nD@^=gKs^n(t@Yzr9v@zY^zh z!3j9lkw6XECvoeUsL<>hY>qW8p$z;|en-OduZDtZ=^ZTWrvIw2Oa{(Soa*qR-~Z92 zwwH8F|JSjZK(X-a{SOot)g}C&kvTE-otIZyJ?vGHLRD-xaiHCFhbq8X6{BjSPpACr zRz)!Y@BOUh-G;4um zRDcfz)<)u&%s}U#XoJs)NBWJ5(nY?wjQ_7RL{l!a01t^ThQ%k4_7Iic%qq`rN3B8i z>%d^IK}LmJko9%MGIQVICc8eMlRJ)iD^Bx75HCJ==>E~1JwyF3rT6G1#Z}U}yy9rG zUMWwTTnY{$Z010j)|&dNz*G5n%ZOG_vN@@z@qf!5%Jo|Ufde=M=M9KSyBrG&iq)6Q zy=Hhp(4yXbZ`0`z(&tE8Hqx)E~-NbI=$83688YX?zB4GoZ#;Y z*My8el>myoOU(J1HklxdFiQW{EuDcp7L{*l6+Fn9q7HkrU{TVTIEY@~3)9NW;G-Cu z>U)e5-&l{>>NwX&A1a=t3BoCsBsqFZvm6gVTJ$0OQvsyJIIh~K^0a{6-89@(=(q0c zdnC^X72ArvWDh~)ffq%GXq9hxx0soa6`;(I*#mSh(=iCgpNSWGo1&WcV{o}|g$Z|P zNINfXG%+F(QSTO`j@ZVr1cF2Lhjzr8m_Cq?#!T@b*jxy5D9?Rl3gwL_rGAIj(fCn* z_5fk5{l7?P)ntM;!6dxdhOX(5^o;OFm<-lLdfr2PJGn*{`y!65O6-6JyM!>{5Q7Ps zP~)K@IL)sdf}fl35`A#b0Vqn;o<-URIu3Us6SAjKFv%)2SKTTSOtH{0ZxA@Xo^zKE z({frh$eB0!p#^RSn+QmrYKxx*_V6@>N}bVICN{IM@<+;u@oMi)^{qbX z<>v}#d_C_i(hor|3xpfL8+dss zN%aL9@oZ9hU3^=6O{#_#`b{r3b1+J8S-SD**f5R|K9Q4oo8uh*3@kbT_P1rhXPzf! zU{%3~lan$@p)8xfL5sk{!S&uLlV)!2ve8Z6dPc}9WxK~mZEBC`2&w!>3bPZd36R6) z6Hu2}O>=UZ=@3t7Ci$7gqO5hX`zoJfT`93APl^i&}X|p z@cwYnLTKE88}OrS0V}0@ZLlARbm0UP>06uJ+0_V_STp3n26Z$Eo9SzN;CaNi+L^+_ z&67+8QV(Nx(BdmWRp(!B0X6n=K!0tfzdu58kxV<5%*H*sDP&3~`d8 zJ-g|m%?)_@kgIq%r$&&4@xaVeHz)$5PpC={6{nL^!P_wYZE7nLCu!8=oVxi`(=XN* zCC$y5Rx>B+{-Th>4}k}Ja9tM-GUUl=S$~vPWx?4vbx~yzG{@~CU>rs5Om2ca_>jWV zFJtV7TeH$}XzI){uZ2s6zUMK5@yxQiJW3HugwgBKX#cdHO~?#BW==}wcMqO5Qtcfl zVOx|-h-moL_WN(W5~+h4x!s_OOcZttEv8SUgIQPJs=<{>xfR!$ALU!PGl6~FAN~? zlK$CAXOi9U0sg|t1P3V1{da(XOpF(;U` z)%epG4*iXy9aFi7Ymzv2u!^a?HWe4anQ26Z*&*0PYhh~?3l~+pv&e@GHE!+gV6&ga zN=ZK&MnUt#-cmk*!bS7zgWI*(4EB`ThC8_98?DmRJ7b-lY-Vei@eYlrTD|oDe6Ui9 z6h+#zbuCOQ?$AtYTZvC;!gFSc=PX}yZCWr6(}!YYsBUdYp9A|xD(vO7R;N{^7gM!U zBDBatVc+d$#gn3;AZ({V&&6_A*m3)^O&pmJ-DqSEdl_r|)ioX0ZOyNeO8=gJwiS*i zL0?vct=rLdP|y=;8ZUUV$gaDYvE$IYmUf!RNo5wNVarogp+Nd<)6v^|55i5Yc`^S) zA3eTa)Zv>y#nb+q3-9&PvBLlXoDOQVW&$wJ_W^(4nOc=KMCJcOMwx+C0X*_uNwGXW zgSTD^DuehvgR4Vg2A-n%{z(i21ghwb>!@Y1{@og*uhebcay6^HAM?$z?*h&tjE3-&HzPYpg5GzRo@N z@u(>X(S12jilYh@&r__O=AvN@MJ9#a5l-CtR$Y)R*e21k`tAK7Ej(+do;uBvq8)K(=Avn-B%I6Nam?gQL)aenoxlpPR+ zfXz$D-+XxPHw3+za*?)1=#F0}ZS3O|0M7#-GzQ;gfWACPA4emPFVV`>sU8@OHJjs$ zmQ_^yD?4+y2e|3?_syP_>Da3{a0x3KCzh@EE`)}rfnUU9R76VF`8W2n_j51O^yi13 zVps^G@!x$u?f@+5ny=YNjlL7RY3`Qd`r|6Cd?l*j^-m$TYxp%3K5F@hO2wY&s^<;v zX3p+)mWht=F^w^Sm$oiYs>$-nBfoUVrXda=ncd}N^X$vIGX-Z6bnaqF0i|W#POR5g z*M3K1M4?CKO-DFgE3;F8qn9_iTmFK&6Y2BKTK`El6A~%;TWEX7%>vcGpFWl89ta^% zs^r`u%%&5`i2 zsu&$Lc$-6CdKumr1$@u^(3MfJ4OxBGe$9EXWpmlUzy|sq>#5EOB^BVO7|ZGAb*fsm z9mSmMFJ z`Of4uXKoiK$g3GAH#14@=Z}~1i{)YkU`J4_rz z=@Jo6C5JfnT_l3(ns&u=8j?5tEK+%$babI$VdJ!kvf|hLDUJaU6Og5nJFo(WB$+J{ zC4$_d;=ocX(fh$egY&QDOtQyTyU!cJAd$AXh}&jeHltTfn}P-cd7q_0RsDn=06YH# z#$TOFLc`jkOl!JgG)H-tNK?6&oi%RkfYf>_S_IjQ2TakP6ae6wm^2F<--~4gzMNbkc%{Bk zzamv{;;LrIWtCJzfzXlBOpod%Z22r*iI2IGWBn6~zeGh@1g3A-ELS2jL zgSlHa%(}jR{c5RhorQN8-Or(&Iv5Q2AbRqQ_)UvQO5XwmwytFL{Y1No)<7z0oEbg* zg`!juttdMN_@_-l&>&Ll+APi-mUH=t7}_8!-vokaHvv;tZI-D*8{9Hmh+sfr89ugO z9Z17qi3|ZD--juY@t>F-ZQ&Tv`0WytPGl1NrMKqH>aULAKqkHq@yD++(yJKNb{jMI zswtL2`NP=}Ul_&}09Y;Ylz{h3h#KZv?REW|HN3(a0%wL#DJ)yD33sWEi+A*~c1~iZ zOMj2mNjiH`r5Ah@$P1PuG5_^Z7u=iAi=coM!B*vaT@k8x8Rm{#tlw5am!%BW_($NB zEK>(-0@6XE-;7>|g&zo5Ja<3Y^#Er1=SRdAnD7IK?@zxJH1sc?SsY(cZQ%3RO}rwS zaQ=Z6%S~guuQ11xTO06?8Emw4Po4A_99_32m|zd%a*Evtou9Cy1IDnNef)2bz!V3z z(O_rwwQ(j9aH57iVH9{g*8IiRaYpxayv14r!#=V67u<17<+MA7h?))^7@j6UMOVrK zIj%q>F$^!D=8HVlrMmNmZEn7%#c>cJ|jVy*o4T#bw;F4{7TOf~|cP+5^Bt{)}R z0gVXd_T>WBvWBKQ2Ss9dHvL~?4&@S>4kx$znR3v+%L1li@#kaqhBIdV!USwuh#LeD z{UfRg0GLY~9t?RyS9mjNSyaw3x6^e*D)R^2?y&?oxstSjDgtx&=aRWcd4U~v;TlW- z)OP!fIs`|%#J_CY5~ysqRmXT>SK@5+N^=J6F1ABH=2lH_$bRUm9degG-K0jjlN88- z7O3wwVJG|-3^AG3vx|IG2v!C7A$t3^7^lI+bLep_L3#$A)1eNOZG@n6ZKOS(JK5r| zUlqd8@4|cvRHv`x43r0SgIr|6rxN-LFg{W!Uj)9^w=|YG_U#n*clzE1h3$P-X8Rx` zlVgVeOq1q+SQeDM`vnL8{<~0S`sk&}R-R z@9Q_@IXL?ivpMtuanM;Y$(i$Laz%9V3tneyp|srNh7NYd7w*38cXysu9tioo)nw!R zb!IFuj{sS=3MR%lW)LM$cGXNJUDVs*dCajbp(hH%4HdlXpq8i8K=WF=fb~FJB0(G` z1a9ewSdiL;jaoF#NzO&%$zU{GysqAuO2rTNO4~H%AC9p)Qc@$dRJzfb8Fuw^BpC7n z8n&_LFTFi)Cz@tYlE4iq_%h@nT&{Eq-c21XYlPLX)7~x>&pBFU1V3XshzT)`Sgc=; zq}sZH51k*r|0o|Q4sj!y?6I(uac}7>cPwQh^{5wS$zS=-B zbz@Z544virr)I8!1E<9Y0TDogmdK&)6#)LGL*SB&Y|(fXGf@y(ZUo6eN;D9U>y@}K zgD|qXgbv04kR1vmUNGYdy_(H9>Vc-Qk>LXmnY z4uIyG(-eL`luS^kx!)fZJ8~THdl8{^%fCDsxKN&UB;WZ|9A_g*hh1%{Xc=zF;Ejtk zgN3ZwKZJom^9blzb1S(Mv=>a*f#N?oTqFevo*DnIYz}&MTU4HJb-q8|K`N>1T5Y~A>hOT zETk3s1}%Jzcn@yO5wi@{{31vdt7u^Rca(M<;iS4|H zBHU^`ukOzh+jtc=Mkdwh{!}Hl-(;qr&T=c*QS^S#_0jczV&5ysW8_bmyZX4-{C$%h z+1ukJPaAVr2Yd`3My@K6?1rob;f6y_I1zu%@MiUGJquQ~eDZmYzm<0hfV<o-xHc@z553Dnxpl6*HAr$4QLm}ZBE)bJjSTa zz3}#0x97{n_Ekwte%fE!ptv0?@9GkriAYNrpmon*4=QmJDxASTIj{&BFX;Lyrab>m z;>SCq={Tnn{PZyEaTfK^?rv+exY1~;_>Q%P(H7dZBHE?$g7itqo4jDjS*OUj>;DF&tBkn1fXheIX7m3uFv|#k%x(dF1ZJJG7?m{_OjdPm8fUoTBb zCPe>)p+I^Nr|m&Pk@~3BLzFM~sAeR^eLutU9h*VUs_wi*j^q~f9M%{Sw@4<3r zuFD@U(jp)IwvjEe-`7i6x2+fv@LQ|;ctabAiP$5K?e zrB$%LV{tAN-SSj`mQx~~v1<7pzR=4tCzp~H-0MdXW=BV;QZIbJ+KyekrlI4GmYRz4z+cPmeJYK1#@z=rmV7ffkUKy>K7H>*M zv3z|ugEU6BcwFOArilN8&mV2$OX=hHx)o-+B*E;;?cizkVh!+8C)Go9gJUa=+oQ;s z&BjF4zZKTpv@FPQDk}QeuA|_pLOipzEpI$$nDPk)ESr=^d_or_Llc-)7^o%G(4`j5 z%lKX?Dp!nZH1EMMGBNV{9H=4|dWvH&CadJ#S%ogqzxhx!w|9g9My__T6UFPiZJFAl zEzvZ6&J8*p|AK&9ew8j0+<@R0WloP>&D(~iuw+9qa7{$LQhOWl;qzh|x^$_&^>DiN zY|Hu0`G{B^<5}e(xK(~{Mif@FSBM^!&6ser_iNUy2HX8Z>)y=RXr&s3Q~fLgTb;1D zzjPHbEetzqD`ZwHQlagBJ%#4mQSg9LuZ|*dSwTMYK0>^xufE}aAu=}+{fZ3d#XmEE z)e*O-(i1w5Tsb!c-=dB&+U72MK%9>PrN}om=DNyq>j-3*x!Z8E8pMR^_FTxYy>vX? zZWhx3G7k#3yECN#x)+^n-WNp1`N<4P6TYA1Z7to~%yzn0057FqiO`g5BDHZMpmPH` zu8T%L!DK{bpLX5y{R6Aba^T)VIv#WR%`yWOG_HwveOO`oV)qoUk27|+nEo;>9U`+Y69EQZ`1x#pLD7ZdwYO54yD^V$ z`2J3Utg@U`ki&)$ZH*PtSo^~3*NuJ&r-k4u4|~NRlRU9Z9dl&Au1Z?=E-(i8F>ve&6RYqms1hPSaUC}JLhRk&IUpbq}0_kUins-+!u^Rtd zK^Y42*X;!e{$@`9KwHf3C}mNTzo5;qUfG8mDWX|ct3xiiKd+{zgx&{j>JRkAy>OOB zVQGJ*A0)75AdUJL2MH;tP*MSWejio}QAmM!GU0}P7_TNd^~14?UO||@;voli@#33h z-O%M!q=zyCnmGS`a>DB(f*HtJiQr_bKG~Pcwmx=C6TM@$`w54t-k>fIfLmq=)vNnT z@{AB}pLqJ44}@05_`Lnhh{aZPbmYBg^P2q;V++4t4i?R9cQVnVwpkmA?{~{)u&Qua z0|iPe1i(Bo-`e)$raZ(kZsE458{OiUPiN7Cvr`lVM2?hH_?h@S|LgjYm4c@pA(+p$v4@jH1;Q(13GkB*-WOwR&E?>Fpflk;qMgX!x(n&1zu#qm$yH~ z{f<=1L}8^pL@30n#^qtzri#HZ~j)yE9+efC=;<9w? zSW+MFjbzd6<%oF6lJ+IEo=YzLD>4~^e0K^TrO13PV=sFHTMJxwd-K`h%(PoMt~x_C zkIr;{cklY`Wckd`ro1%3$?(GOnU>cwba9>ovo<>I7ECpqO_hpkmDEfq78e?IAy-qF z+0}u_H20x7DOiq?fi8FR!!4f+;3ClB64NwN9ReC5DMt<|^$Y8uqe29&WTD1n z__oLuwVqMjMZp(?jTd@n+I&NOpX5vv^z}hDkFXFyIkA-mUgF}z#vGx5n(d$6Ay86I zQ|>Q3K?ReZ4odpore{zuy}Hf6$Y)jar{7(EX;kir=zou5^gv&iMItQg$8JuMS!0V; z;_p}AYvh1hC^e4E3y!xw6BRLHx^i;G)i?z`BC33KCdqjFw&GI z*k66~f{Hh3xYj<*c9hoW`rinVuojMWY7S&0>UkihNLqXf`hDg~FjX_8Ris_x$FBJ&5kn9Ym6vN~Vn zW|5?&7*Uovq$HaN6gt zMD{KS#F^aCa6U!Z^{h?I&}BV!ZK5&%7piCMMLXkbEJe-fzNb#J*Tj@VM2gH;HEsB# zZ`^sGdp4uBdsEQOcK++WHFFV1Y9O!>huudfgtL|Hm`UXr%ybI6?8y=$U3Bbsvu!=b zwXayInE=xf^}8=TRXh&$U`@iq0-=m*KS{IzfT@RvOwBBXws>0Aymq?Cg_u1Ys4vWs zugFrD0&-Yq6#H)`;k>F^`NFAY(r2AF9gv{j0nS7tnJOz!gbbU2^fjG@@$EP;jZ4QD&j1IIpiiGi5ZUp}q|jx587tRPeAoFx+%K5hkEy$#~t|Rz1Q# z#rv--102K91uFMi4O5AO+Gms16`CWRAay1ub_642_dg^*@I~AnJ6c$siMsdyz-Pfj zEfHjJh7K1`O>(J&d+l8}JI;p{{?6Z}mORhDpYNNFBri`50WcStkdBA`?4pDTMyPNg z!qMfyy(dycGG6Ly4l$w(CegpIM zkn}<0t8L{E0C2MWdy%=pCP-3%n*kb@0VZJAfMCa0E`X=bU?&%T9dAcBmuD`H&Y^w- zE=mA^&>tQ3r=}tEhq>OqJhRO!j89l7Iysrx?hO{WBgXX#v@6&qKjq|{Ykt;S8j#&n zZx)+2Tqw)RGS7x2E|zKS2Nb8dDezX~n2PMV%i3Qw`^y*<9a!h-EG)*?l=b+0;pr-H z8Zh)qC{{;E--+ixzZM0c#wbl$gQo}$$hCJ|jJyw;V~__zc4#M*%cJggSawbOTp7u<0+!9`BmrOms(k?t{#JoU&Y z@k+d{Kbnq?FZpWLopkp$#Jjop1s&e;kbe@MBMGd@OPy_w@Ugt%tGR?I#M&Evqz7=3{ZA9un}^$qi(Lhm&L?MNuwJYr z$K7jU(YR(f`TB??0APZ+bRjoN3a5{c^h90LeI!%t>*vQq%(wtAL|*;R0wW!Pu3kUR zpj*l>HIMn@jP6EL#2S&1oaOiDjk@k7O3iGIb~{A#;c9_Ux3M5{b7-He1*slDH`-^o^PS zcwVn*=0PP@HqDbYBCE)IlFNPF^Vke%Hs6YWV1^ZOyqY9_Dm)@A!Z+fKBuFSU&2Q`!fE*9`X7q~L@A?$e1#gh?fYEPJ1O%25 z0O(ZimQuZZFURVb@A_S_HL>4IUz*lT>Mo*-=|U8hf5=J zvLQP;9X>w0ck ztWr)6HXL}qk^S4NAse};@eW4?0IX`SaTX90|I&a_(ks~x^F&L%w(9!k3__5=T=&O| z{dX4h!$Kvq%T3HSShUuf*iEv^S7<)X)axWwuC-Y~oC&XOR;zcuK5;7fMtfd65#1na z-@nqUlo!{H;&Y3r#&YJgmggpTqr**@De2vP=e7!xzlcD9kliGXA^@I9H7sAbC zMpch#0cg@TjGnJy+ipEaV=j6p#uoFaMG}arwJ_VgJ-t_G#sQWO>m4*=S8pjgiW&tE z+%X>9QmBrj#%UE3y4ZlRI6h~28^~D2gBwgxQW(@TLv%1MoD$*$to4EkUl4FjG(Bd= zqDL8)1dTi{j8h7w-D~u*VYN6x4WW-Bq9U`s1Jt*lQG7+VmsVcl`htcp;{NThv;vip z2>*D#;?7tCv~IOC!-uh=oi`y8>d|LSt9=n`QTcG(b3KE}3=X`q;oxSv`fd2>`g7Zn z8L4xuG$*l80@vk8#Mgy{ ztgD{-a(^Dlj#(eH3p6V9Uw!oYmk6>f(2rJ+K)~I5!x7@2k2c+wIt)0K(2OP{_k#Ty zUYm9u{27M)5Rk9E>b_7t3u+r$*MqW)<4Mt8Wpb|LEb;tpW94H`Xt7+O9({A@2YB9@ zi?FnTfN)ZK%@3c4}elFN_Aq4S-}`MZ~YBy zMjY4kd?3AZ+O$?sok(L3c}*Ag?62aAm)_5K73M$7oR%jkuo8{<2@avxx21NBzK~X6 zDTcSfP-SYg9-?_lg5x-%7Z>C=FCaoyZ2sDm#T_&0K3A8ybOO>&gEs+eh>#!d7x^7> zDjZIpgt@#YYR`Rt7koPm^I1U`icFB;Fs--oEL|CdMAC*Mee5xD+;qhiCrRpb<@J3X zLLUr#7$ucI3tO0s3>>)IvqD=OI-kE|43Y@aS%!%A7X8;soRoJ<-!aMM5Td!dBAH`D z$gEw}u@``%&j~(S-%WI=Pnpm=AK8v(QD(>8eX(oOqL+%N2}2q5N1u3k>OwB;!2V3Q9116 zfDWSaBzHf%auFZG?(D_k(++G1`f}-0i_G@Zm={li4#(I3^7J~5@ts_fP~&2S2t;jI zE3N7-qmRa&I=w<)H!B|<&upzZ2B|Z__CzRs?qEc{PJ7>*eK64#BY<(S= zaQg-T@KrrU{8j%o1ZYkGC%(TuCUm|>Wpk)_?$>_!P{C?tNlHR>rL}M9FJO2aM{c_+H-@Um7zw!xPI|2ZB zH#aj?$+i~%=uR8)8~ZFhgUaNdw~uuA&q9%HlA>ws%8$mC%#oUV$hN;OLqj78vyhQ( z&6T9d_`v87sJ}tk8TMV5e5-xzwX+3XkbER$=`f({#?k2uJ0MBjEM?_$M$?5nvZrlm z2nPO{0}rY_Ab_NL+{d#GOINv~u77!29rJvL;g!W69#WBk@;_xD<@FauFF&V5R> z7mW;uBBQoVKhEltR8f64ALOs_vi&Ldfw*266+2u-Y}6Psp3P9$W}|K#NCxOsNP)FQ zs?nVV*b^VM?=7vA8ZOZxFKg3K^|U$yxC#ak9YUCF*>Nind9}GS(EY4pN+dj*Pxy=E zx#}S!_3M<(w*PJd++vx1Ii~+SKxQrAJ!m}t_HGT zLOiury)Vg5%^De1Ox(j(d>T*pEYvUwnCSsoEKcaxzS-IuNI?mxP5s`A|4di^L)8a? z&Y=;C?*RrYCpuZHL;2Jrx8i|-(XX;o(Ei=n{sjxxNKmx=(wQ5`g5`=+05?d{fOVNf zLSNkt4xV9nvm!+S9p8Sg(G&R|9sZH*{x$NicmFeCioAOppw|6_959tRVSE*yY*&iK zcG#OfEy?08ks97ZNm0cL4iCdX`BK!_uqGZuU|}8T9!BS$5Q-#ZtnJR&r}gaPY21i+ zyHFtx+#=Tlj^4Frdjs6=ZhKUG8+WHi>)d~De}nxu8L!~&FZ#CBYWm7v^oUB8OgoyW zB+I=GPCX1aOQl?+PqA|Bo8l$xE7%BTf(4Ex?yGw3{pQ^pi(Aa}<49657+AP>cH6gb zmyyO;k}CE@exLnHTC z)3Fbgjzh7h2Xzjh%DkLs6b@%Q$eOqBXNEY5$M$*t?#sDVPcZf_l1JN21)#iho!Ar* zO?88*^SQFlB9(C@Z!hGmSK>z581#+fEg;}MJEYgZMjO+()Legz^m_5a>+YW!CQrJ+ z5lU-w!VE{ptS4rBsFsd6*BctFy_sW&E_wZ~WWd+Ac6G?;ORIPNZiYHDDygO2cOTZ#hGYqSMCDY0baCYAJ%!L%Ds$c%$1S!Ri%&Mp~j|kyM@Av(Tck>~*Y+ z#s*g9@7b_mO0GNwxqf85+N{CA%K$i+XeJobcnpDM`6{UHsY;`sdX zvx=APU@4&~(`w!U1(!eYN(rG|W2~jh;b{)i%`=?ZK1eZNBY0fl|5eHud&CBI$A7S( zBU9RcrG-TUu>zDJC^zU1j(+G~5&mB1T`|!Q2_eZkOl=^w?=3phKF7RT1D%+3u11bc zKi90d-IcNZH_nWrnfpT@OyuO&{U%Z~{f-vOpK&TikWPb_JF~rX_|FRIK`9=xK7GGV z(<-oqjdUA>$3RKVbYBhjHC)gC#HHKb282jJ^EjaC)oL&q@N#3Tma!I$^6Aj>C%kPMTyWt2e?OmLP29PQWHp8> zY~1<5lzPX#sPM|Tu>5LB|B%7-kiL!`R{XQ~o~>@Ew@7ZDEpe|~Q06%C7D!?8Prxi} zEHE^&H~kgR=2l18yBuYiy$8xwmlo>3Ao8#N^YKOL+Xvg|q;d6B*^xrs^MZ zMiP{!CFm^jWq9jer4e9hea>?Zr3IpJ{$QWM9UpCm3cv|FV{C{OT<8B^y=| zq4r5`Uf2L$UNy{G>}Jjq|4Zz4CFaP}JD$&V(9`3y;4?|7gRgcG21rm?uKHo%d*ND`jL8K*o{3;Bb4S9fe86OM=6&syXaTwG&@CoRN0-Fia{ zHXq-XM#AkF06G|kgt7!w{ilQ8o%ab$k>b5LfQIA`F3uNfOZQ^ih*j2~uXQt;7xwY} zv+ZeV0oU(smp+6X1K}{tbv;-=Z6>Fdz+Rw6hN$0wYy~$V)3ymo%JeanCs)<#MhjI z*w=Ug5H3@f?am;aE2=+Wd-6dlV^9M8^O$LIK@nwB{24~Z`vsYZF0+}m>EMl{NmYXF zFY;UVkjwgv_o_hK1NTyfy2nn=Uo9E(9F0uj&(3yFW5h5tKu=fas$E!H{#yBz!@HL^ zA6Ha&;J>CC?|P5}Pj4KVp#KDTpZ>s9FnlX{+3RohAw$dg_8m@qO|)#$O)HppgHJ3Zh)3DQ`ZU83kD zAXfgY@R9Qb>(s}*+JaZGiI9;rq(z8D97FN!pyV~Zv)5JO>J7G~n=aoruhe@l`Kqf8 z6~5c;N_d*um0o(N|5QPos%MK&GstYP8H&Xdp0?j$P4k2(J;oB{;qp}jx z$0+C3B=DyDK^~DLs1J6>Pkg4BCx2Lnu^ozIv)$ zS^|l8TLRak=os5=a!K)#OvQZl?DC3?`Ed*?+6*+M>t{rBHTSq_*t9W`$*6v1*7{tK z!>;^Rqn{zQquxu@JJ#}2yM7Jg=dJ)y=@diZ)-(6E#Jvh*0fMn|;9L{xGTVs~I!Coc zRbl{FfWC6#h z@1p{(bB2_CY)E@nK{ZVE{59(%r!=>XSEa8Ne@r<{SEYPe)_R;;Qg}>!yr{;vB7>BMHr$PQ+2Xk}k({5-ipJKpDSv6wl4@(SR z)ARw~Q^`^~pt#lbpY!X*{CKsx%*4FZtH6HIDY~W9BjkRIh5^ zDiLPV-*okOhmfARZqzjf>QGp%wrEQ4k7LVReaEAU^p4FA&GV}%ZKCG+t#}ID3#|`o z9M{~sI;~l0{(F+@d(R`5Zs_~Wtm4li)TgGhP@f5f{hi(~#A)Xr24DMImTxA`n@WBj z{OwSNO5r&^zZxN<21cQHZuxHCVKEGc-L@$g`T}B@*CE_+ec9Wf5W-o?dD{DRRKbnI zKvUop4dP}YoIR9Dh(^r{2R=u*48;zPF`M%(@oYxYKmHpz5pX{bDf>r%=wmAk`K%9W z613+O6}DET;6|lOj=!BwO{A4AlFB(qC*)u+ENfbGMldRm4Tvjv;_{yH`PTcLGhSpk zDcA0z3ATMACVWrU&)#}feM9fN?RJ+Iolj<8(iDR^Yva#VGyr$V9oU)^!m4SNAoU99 zSX4?o2LGoMEze*(!0It3wV8D2bB9F_gV~(?E1l@yjL1N4p%4XR29AGo>|dcKufG1v)&r%OfB1=`4vDlbK=|m%8UQk%yxCkW)h@@eOqYkR1(Hmq4zDlgzJ)Kwy3b#vPVCz_6KnKHSS1Q-dj0F!jHO;(%Vc$!& z-W@gDx^*KHx2*Nv0gg=>JyDkKt1DK*Jf)?af%ovy!+9>> zRI-eC=LTYzTc_p+RTk?N&l-siP~2I=Uja$nu^ixifmhRe-N@j$+-zR~dXMmSU@I+; z{A?&*OtZ7pOClM6imQoqX)&g3O+1(O7c^UrQZU z>W@Ac9GtMKcerjxwEIkMAy<)RZkF^YglXF7dWx%AXw=lbU$SqhY+nMDhNc8T(WN7$ zoN})|-Y)R$^}yA0pV$UrQ=sV%&xRG$h9{=&XLaA<(mobhgrnr;sdhzHt;LtlGtwr+}yDOpBRGb)kjgk zg$w)??cMV1-b_P$w;i&6>0A8_%lb~f0hXJkE1w^rVMp`Tg~SaA{M2l7T*JzSSUE(7 z7t|6HoDWQLUmJK2rJN)c8QjIoauRa`#c;f;7`5BoXbxh|f`z0~!I~o5G0;2~&#*A% zR$Syq*IK84Lo}q_kRCaY_BrLEU^UavSXfZ7n5E+}O3LG{6&VwxrL?JAd^OET(?N}0 z`ElpGYx%vi8x)ic`<16DMRU{hm~F23$wN=+D**w*>7Nx)K}VtNV3+-$rg#cc>7A7p zihXGK_=T3`=N>(Y{#U>Bg(f^h=@0?o8$q23%kb{j_{=7|j^u9p*|kG6YpL&|_$!Wk zB7v4E{@Z3uA}%hFFx!veIDu`nlC&x`+*h=RA?n)z6~Etq<-+J4sq|w^xY$^D7PK!- zkINrD+Y-htM=dXc0sjW@52d@(Q>!_>CGNdry5F+x5L@?tpY3T;fA<5w6<>y-DMvbp zy=2D?g~0n63Gwfr*;zgCT#H(`yf`Scdn5}L7UPKx+n4tnVYjX`eGx3NEh_gA*yv%A?D(>zU7bai*hMM`s&i(1Bqr^BCOg%>U zcK?npl!qhj34@TJOX;&MRueWUQR;!1UMDk}eN{yJSzG_43@swn#C6-FT)AB1;{Hp1 zgFed(_!v#@*!R2d-M+hT{xL1KF_ZH60CcScKFd#5;@_`brXF&PJ=VH_80`h;IaQzc z^HII;C=)ZEs+5X7AMz8JV*zcq+j49^@V=!kemOGJygQU1KX4!Xd9?Y^YUJ!-fX7_s zG8D#Q(ljNOXq^$|oU5fr;ifHQK;@!o(0rhCa7#blU-ckLCU3dmZKY6;@@_U_!ZYcu z?!5VFRBD8{+mkA(?!_x=Xneo?+}7>ywfPW6poJB_cSv|v|NA#b&HBM)ut?%a0^ zuFq~_)I0In4+Lm5-CJD3=e2qs+vK+moJb3>&XyuxCVx7J?WzgV^%>`yOSdXI(phpm zt^=8JQ{Y8vM024n^z{IPW4w)CsKv>2d70i}72VA-3$C4*)8YZ27*Jw2*x zjdEjb6M=bIus9`aA3@Hwr+HJEM1-_)k?s~)J-~P`@$;^Te4&`Tf@OyvCIW?c^>vq`Ss2^4Q~;}kDMOG z2;K+ciw`SB9U6`b>`aAWTI!dN93AJ1+g1we%e9Qp#Y3+yOw;czJvU-M1A6NPhbl|F zaLhy827WR;A&{bVt}mt936A310lwc!8oI7mad{NM-_vU!cH}4j(~o~aV#^BQU}$O7 zq^0rePQn#)AwyYd#ATqYK228sg93+mQ`SP0qfy!vuM`svZS$aqiCFKuxyLWZtv>DP zX3D+%rHq(UfnjaUdjCiAamxNG4Kzx5c;}(>}NcAl=R>;XUp|4E+w>Rp>?6(U!FJxL@t?|wA*G`lL zM+?PTao63sQuHX%PEc_Xy~87lP89A5t>c(n{EWLM+`39xpu;hWFVoW$4A<7{1Oe_H`#{f7+UASk`GoF3rS!bSq z7+e&Q`&5l%ETF+}yYb|;VOpip9oIhwbX43S_;;;{)8~WE(a1D)SY`)g#l&*(0Iv0Y_2(U2 zkK~y{r(lB&i41l4*(XJj(nHib?m*PEi;JJ{MbXXEV_g-?Q8r+&mSDFZ!jJuZ4vTge z!h5@G`I!3bU0? z*m5D`R#JE*!&_WceIisVEYC zeZ|t!b>T=~=%V?62Zn!eHIQAOSN2}AV6qtNJO=6P9p*G4ORcFUidEd=cDcZU2+G+ z?0-2&mXnYYW&F78)BU@st&^qc(f;vx>6}uq+!`vSln#IWBOR;;?;Zn0qM2!L=_41q6{X;ewP@xEkW~eeak3IkNr|qSS z(|jI%eO#VhUmKiKE&8ON`UB;4b6yBi-%B8WbBh?H@?kv>lF=J|ZnsqcW$Wc4E#byb z*+zB@+}@USXTN@+yxXkrA!g;wtwwy`KdcF^A@yEy^eHJ5@J+r+_y>ly0|_`zbu!>(=Kk7P`}Z$(M*O5KsWj(kYYKgSNo8t=69d9g&q zL#`4bi0+}kej7f%fT(?kECuvi*G%OP0n}Bat_kCws zJ;2VlK+7B88Tf?5Lr!rH+M5qM#`}9!ENv|5Id`@#R1&@CzrYEnKsnjb&epas3HT#$ z($XvtvWrbxGki$MMT%V=y6Df5AXyDr<6H+#j{MFXjXX?dx8e%!AyK_Paxyssc+VYgBW2o)&7!b6#`EMf|?Zz`{bq&`AQvZH1WL(0_@XFgu!* z#7@AS`yu*~B);%R)8}%D-||PhEs~+gqBstOa5g80rJ7{9`yd;Q%IOC5Z{--pLmLRl z7(;_=6H5I+c~AH1;(s6?q0jZ&h=uxY9mFLVUa9N)9Fq77=`=J8Uz{GdgJ`X8N)=9K zF@jG`#V1t=zvWAinh(X6Q|P1nfVlqh?KN=?){2NrWc$aHOCmcZnnbkvk_JTRl5t>Y zwW3(0d}N@sa`4)*TI8C+fkMf(g@*wb@>mL`5d#?UY8iUjQQhrS?4fwPg#7CQ{ZoIL z+R@mHH1MlN+RDheY}SY?9=2c2>+SsSoXJ!y>Htmne}2r+&nwEA;yllWC%)rY-pl}) z+(Z0JfMS~e1lxBk*Kf~^MBPHdWB5)sL^vZuE=Z{DgGgD6r9nb7IKV6JcUotwNhD!y zMm`*`W`pW8Vk0emsvb2&A4LXH=yF~oUP1!}(mQ~&wtW{6laTWgV+xYQ53#k3n}A<; z-p(zc8A$Y|ZRLf*)wyufDxU`8UuF0nYwv_wAsoWo2=`AxR#}pOkaLpnC%H5oJ^q*P z8BwenWOlxO1bA1kvF=L=}&UiIf93hQ37~_*Pq1{J_REZ~hO{Gpiy1 literal 0 HcmV?d00001 diff --git a/index.markdown b/index.markdown new file mode 100644 index 00000000..e2031f03 --- /dev/null +++ b/index.markdown @@ -0,0 +1,35 @@ +--- +layout: default +title: A remote server automation and deployment tool written in Ruby. +--- + +### A Simple Task + +{% highlight ruby %} +role :demo, %{example.com example.org, example.net} +task :uptime do |host| + on :demo, in: :parallel do + uptime = capture(:uptime) + puts "#{host.hostname} reports: #{uptime}" + end +end +{% endhighlight %} + +Capistrano extends the *Rake* DSL with methods specific to running commands +`on()` servers. + +### For Any Language + +Capistrano is written in Ruby, but it can easily be used to deploy any +language. Popular extensions add support for *Wordpress* blogs as well as +*Symfony* and *Node.js* applications. + +If your language has special deployment requirements, Capistrano can easily be +extended to support them. + +### Demo Video + + +