From 6999a7e3229aac390fcb200f1e3178e4f026489e Mon Sep 17 00:00:00 2001 From: Nick Dimiduk Date: Mon, 11 May 2015 12:44:20 -0700 Subject: [PATCH] HBASE-13665 Fix docs and site building on branch-1 --- pom.xml | 177 +- src/main/asciidoc/_chapters/configuration.adoc | 1097 +++++++++++ src/main/asciidoc/_chapters/developer.adoc | 1971 ++++++++++++++++++++ src/main/asciidoc/_chapters/hbase_apis.adoc | 135 ++ src/main/asciidoc/_chapters/mapreduce.adoc | 596 ++++++ src/main/site/asciidoc/acid-semantics.adoc | 114 ++ src/main/site/asciidoc/bulk-loads.adoc | 19 + src/main/site/asciidoc/cygwin.adoc | 193 ++ src/main/site/asciidoc/export_control.adoc | 40 + src/main/site/asciidoc/index.adoc | 71 + src/main/site/asciidoc/metrics.adoc | 97 + src/main/site/asciidoc/old_news.adoc | 117 ++ src/main/site/asciidoc/pseudo-distributed.adoc | 19 + src/main/site/asciidoc/replication.adoc | 18 + src/main/site/asciidoc/resources.adoc | 22 + src/main/site/asciidoc/sponsors.adoc | 30 + src/main/site/resources/.htaccess | 8 + src/main/site/resources/book/.empty | 1 + src/main/site/resources/css/site.css | 3 + .../site/resources/images/hbase_logo_with_orca.png | Bin 0 -> 11618 bytes .../site/resources/images/hbase_logo_with_orca.xcf | Bin 0 -> 84265 bytes .../images/jumping-orca_transparent_rotated.xcf | Bin 0 -> 135399 bytes .../site/resources/images/region_split_process.png | Bin 0 -> 338255 bytes src/main/site/site.xml | 68 +- src/main/site/xdoc/index.xml | 20 +- src/main/site/xdoc/replication.xml | 516 +---- .../xslt/configuration_to_asciidoc_chapter.xsl | 92 + src/main/xslt/configuration_to_docbook_section.xsl | 66 - 28 files changed, 4814 insertions(+), 676 deletions(-) create mode 100644 src/main/asciidoc/_chapters/configuration.adoc create mode 100644 src/main/asciidoc/_chapters/developer.adoc create mode 100644 src/main/asciidoc/_chapters/hbase_apis.adoc create mode 100644 src/main/asciidoc/_chapters/mapreduce.adoc create mode 100644 src/main/site/asciidoc/acid-semantics.adoc create mode 100644 src/main/site/asciidoc/bulk-loads.adoc create mode 100644 src/main/site/asciidoc/cygwin.adoc create mode 100644 src/main/site/asciidoc/export_control.adoc create mode 100644 src/main/site/asciidoc/index.adoc create mode 100644 src/main/site/asciidoc/metrics.adoc create mode 100644 src/main/site/asciidoc/old_news.adoc create mode 100644 src/main/site/asciidoc/pseudo-distributed.adoc create mode 100644 src/main/site/asciidoc/replication.adoc create mode 100644 src/main/site/asciidoc/resources.adoc create mode 100644 src/main/site/asciidoc/sponsors.adoc create mode 100644 src/main/site/resources/.htaccess create mode 100644 src/main/site/resources/book/.empty create mode 100644 src/main/site/resources/images/hbase_logo_with_orca.png create mode 100644 src/main/site/resources/images/hbase_logo_with_orca.xcf create mode 100644 src/main/site/resources/images/jumping-orca_transparent_rotated.xcf create mode 100644 src/main/site/resources/images/region_split_process.png create mode 100644 src/main/xslt/configuration_to_asciidoc_chapter.xsl delete mode 100644 src/main/xslt/configuration_to_docbook_section.xsl diff --git a/pom.xml b/pom.xml index 3e91394..72419eb 100644 --- a/pom.xml +++ b/pom.xml @@ -837,14 +837,21 @@ + ${basedir}/hbase-common/src/main/resources/ hbase-default.xml - ${basedir}/src/main/xslt/configuration_to_docbook_section.xsl - ${basedir}/target/docbkx + ${basedir}/src/main/xslt/configuration_to_asciidoc_chapter.xsl + + + ^(.*)\.xml$ + $1.adoc + + + ${basedir}/target/asciidoc @@ -881,62 +888,6 @@ hbase/checkstyle-suppressions.xml - - - com.agilejava.docbkx - docbkx-maven-plugin - 2.0.15 - false - - - org.docbook - docbook-xml - 4.4 - runtime - - - - ${basedir}/src/main/docbkx - true - true - 100 - true - true - ${basedir}/src/main/docbkx/customization.xsl - 2 - yes - UTF-8 - - - - multipage - - generate-html - - pre-site - - true - true - ../images/ - ../css/freebsd_docbook.css - ${basedir}/target/docbkx/book - - - - onepage - - generate-html - - pre-site - - images/ - css/freebsd_docbook.css - ${basedir}/target/docbkx/ - - - - org.apache.maven.plugins maven-resources-plugin @@ -962,18 +913,37 @@ - copy-docbkx + copy-htaccess copy-resources - site + post-site - target/site + ${basedir}/target/site - ${basedir}/target/docbkx + ${basedir}/src/main/site/resources/ - **/** + .htaccess + + + + + + + + copy-empty-book-dir + + copy-resources + + post-site + + ${basedir}/target/site + + + ${basedir}/src/main/site/resources/ + + book/** @@ -1008,6 +978,12 @@ velocity 1.7 + + ${basedir}/src/main/site @@ -1015,6 +991,81 @@ UTF-8 + + + org.asciidoctor + asciidoctor-maven-plugin + 1.5.2 + false + + + org.asciidoctor + asciidoctorj-pdf + 1.5.0-alpha.6 + + + + target/site + book + images + coderay + + ${project.version} + + + + + output-html + site + + process-asciidoc + + + + hbase.css + + html5 + + + + output-pdf + site + + process-asciidoc + + + pdf + + + + + - + + + + + + + maven-antrun-plugin + ${maven.antrun.version} + false + + + + rename-pdf + post-site + + + + + + + + run + + + + org.jacoco jacoco-maven-plugin diff --git a/src/main/asciidoc/_chapters/configuration.adoc b/src/main/asciidoc/_chapters/configuration.adoc new file mode 100644 index 0000000..01f2eb7 --- /dev/null +++ b/src/main/asciidoc/_chapters/configuration.adoc @@ -0,0 +1,1097 @@ +//// +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//// + +[[configuration]] += Apache HBase Configuration +:doctype: book +:numbered: +:toc: left +:icons: font +:experimental: + +This chapter expands upon the <> chapter to further explain configuration of Apache HBase. +Please read this chapter carefully, especially the <> to ensure that your HBase testing and deployment goes smoothly, and prevent data loss. + +== Configuration Files +Apache HBase uses the same configuration system as Apache Hadoop. +All configuration files are located in the _conf/_ directory, which needs to be kept in sync for each node on your cluster. + +.HBase Configuration File Descriptions +_backup-masters_:: + Not present by default. + A plain-text file which lists hosts on which the Master should start a backup Master process, one host per line. + +_hadoop-metrics2-hbase.properties_:: + Used to connect HBase Hadoop's Metrics2 framework. + See the link:http://wiki.apache.org/hadoop/HADOOP-6728-MetricsV2[Hadoop Wiki entry] for more information on Metrics2. + Contains only commented-out examples by default. + +_hbase-env.cmd_ and _hbase-env.sh_:: + Script for Windows and Linux / Unix environments to set up the working environment for HBase, including the location of Java, Java options, and other environment variables. + The file contains many commented-out examples to provide guidance. + +_hbase-policy.xml_:: + The default policy configuration file used by RPC servers to make authorization decisions on client requests. + Only used if HBase <> is enabled. + +_hbase-site.xml_:: + The main HBase configuration file. + This file specifies configuration options which override HBase's default configuration. + You can view (but do not edit) the default configuration file at _docs/hbase-default.xml_. + You can also view the entire effective configuration for your cluster (defaults and overrides) in the [label]#HBase Configuration# tab of the HBase Web UI. + +_log4j.properties_:: + Configuration file for HBase logging via `log4j`. + +_regionservers_:: + A plain-text file containing a list of hosts which should run a RegionServer in your HBase cluster. + By default this file contains the single entry `localhost`. + It should contain a list of hostnames or IP addresses, one per line, and should only contain `localhost` if each node in your cluster will run a RegionServer on its `localhost` interface. + +.Checking XML Validity +[TIP] +==== +When you edit XML, it is a good idea to use an XML-aware editor to be sure that your syntax is correct and your XML is well-formed. +You can also use the `xmllint` utility to check that your XML is well-formed. +By default, `xmllint` re-flows and prints the XML to standard output. +To check for well-formedness and only print output if errors exist, use the command `xmllint -noout filename.xml`. +==== +.Keep Configuration In Sync Across the Cluster +[WARNING] +==== +When running in distributed mode, after you make an edit to an HBase configuration, make sure you copy the content of the _conf/_ directory to all nodes of the cluster. +HBase will not do this for you. +Use `rsync`, `scp`, or another secure mechanism for copying the configuration files to your nodes. +For most configuration, a restart is needed for servers to pick up changes An exception is dynamic configuration. +to be described later below. +==== + +[[basic.prerequisites]] +== Basic Prerequisites + +This section lists required services and some required system configuration. + +[[java]] +.Java +[cols="1,1,1,4", options="header"] +|=== +|HBase Version +|JDK 6 +|JDK 7 +|JDK 8 + +|1.1 +|link:http://search-hadoop.com/m/DHED4Zlz0R1[Not Supported] +|yes +|Running with JDK 8 will work but is not well tested. + +|1.0 +|link:http://search-hadoop.com/m/DHED4Zlz0R1[Not Supported] +|yes +|Running with JDK 8 will work but is not well tested. + +|0.98 +|yes +|yes +|Running with JDK 8 works but is not well tested. Building with JDK 8 would require removal of the +deprecated `remove()` method of the `PoolMap` class and is under consideration. See +link:https://issues.apache.org/jira/browse/HBASE-7608[HBASE-7608] for more information about JDK 8 +support. + +|0.96 +|yes +|yes +|N/A + +|0.94 +|yes +|yes +|N/A +|=== + +NOTE: In HBase 0.98.5 and newer, you must set `JAVA_HOME` on each node of your cluster. _hbase-env.sh_ provides a handy mechanism to do this. + +.Operating System Utilities +ssh:: + HBase uses the Secure Shell (ssh) command and utilities extensively to communicate between cluster nodes. Each server in the cluster must be running `ssh` so that the Hadoop and HBase daemons can be managed. You must be able to connect to all nodes via SSH, including the local node, from the Master as well as any backup Master, using a shared key rather than a password. You can see the basic methodology for such a set-up in Linux or Unix systems at "<>". If your cluster nodes use OS X, see the section, link:http://wiki.apache.org/hadoop/Running_Hadoop_On_OS_X_10.5_64-bit_%28Single-Node_Cluster%29[SSH: Setting up Remote Desktop and Enabling Self-Login] on the Hadoop wiki. + +DNS:: + HBase uses the local hostname to self-report its IP address. Both forward and reverse DNS resolving must work in versions of HBase previous to 0.92.0. The link:https://github.com/sujee/hadoop-dns-checker[hadoop-dns-checker] tool can be used to verify DNS is working correctly on the cluster. The project `README` file provides detailed instructions on usage. + +Loopback IP:: + Prior to hbase-0.96.0, HBase only used the IP address `127.0.0.1` to refer to `localhost`, and this could not be configured. + See <> for more details. + +NTP:: + The clocks on cluster nodes should be synchronized. A small amount of variation is acceptable, but larger amounts of skew can cause erratic and unexpected behavior. Time synchronization is one of the first things to check if you see unexplained problems in your cluster. It is recommended that you run a Network Time Protocol (NTP) service, or another time-synchronization mechanism, on your cluster, and that all nodes look to the same service for time synchronization. See the link:http://www.tldp.org/LDP/sag/html/basic-ntp-config.html[Basic NTP Configuration] at [citetitle]_The Linux Documentation Project (TLDP)_ to set up NTP. + +Limits on Number of Files and Processes (ulimit):: + Apache HBase is a database. It requires the ability to open a large number of files at once. Many Linux distributions limit the number of files a single user is allowed to open to `1024` (or `256` on older versions of OS X). You can check this limit on your servers by running the command `ulimit -n` when logged in as the user which runs HBase. See <> for some of the problems you may experience if the limit is too low. You may also notice errors such as the following: ++ +---- +2010-04-06 03:04:37,542 INFO org.apache.hadoop.hdfs.DFSClient: Exception increateBlockOutputStream java.io.EOFException +2010-04-06 03:04:37,542 INFO org.apache.hadoop.hdfs.DFSClient: Abandoning block blk_-6935524980745310745_1391901 +---- ++ +It is recommended to raise the ulimit to at least 10,000, but more likely 10,240, because the value is usually expressed in multiples of 1024. Each ColumnFamily has at least one StoreFile, and possibly more than six StoreFiles if the region is under load. The number of open files required depends upon the number of ColumnFamilies and the number of regions. The following is a rough formula for calculating the potential number of open files on a RegionServer. ++ +.Calculate the Potential Number of Open Files +---- +(StoreFiles per ColumnFamily) x (regions per RegionServer) +---- ++ +For example, assuming that a schema had 3 ColumnFamilies per region with an average of 3 StoreFiles per ColumnFamily, and there are 100 regions per RegionServer, the JVM will open `3 * 3 * 100 = 900` file descriptors, not counting open JAR files, configuration files, and others. Opening a file does not take many resources, and the risk of allowing a user to open too many files is minimal. ++ +Another related setting is the number of processes a user is allowed to run at once. In Linux and Unix, the number of processes is set using the `ulimit -u` command. This should not be confused with the `nproc` command, which controls the number of CPUs available to a given user. Under load, a `ulimit -u` that is too low can cause OutOfMemoryError exceptions. See Jack Levin's major HDFS issues thread on the hbase-users mailing list, from 2011. ++ +Configuring the maximum number of file descriptors and processes for the user who is running the HBase process is an operating system configuration, rather than an HBase configuration. It is also important to be sure that the settings are changed for the user that actually runs HBase. To see which user started HBase, and that user's ulimit configuration, look at the first line of the HBase log for that instance. A useful read setting config on you hadoop cluster is Aaron Kimballs' Configuration Parameters: What can you just ignore? ++ +.`ulimit` Settings on Ubuntu +==== +To configure ulimit settings on Ubuntu, edit _/etc/security/limits.conf_, which is a space-delimited file with four columns. Refer to the man page for _limits.conf_ for details about the format of this file. In the following example, the first line sets both soft and hard limits for the number of open files (nofile) to 32768 for the operating system user with the username hadoop. The second line sets the number of processes to 32000 for the same user. +---- +hadoop - nofile 32768 +hadoop - nproc 32000 +---- +The settings are only applied if the Pluggable Authentication Module (PAM) environment is directed to use them. To configure PAM to use these limits, be sure that the _/etc/pam.d/common-session_ file contains the following line: +---- +session required pam_limits.so +---- +==== + +Linux Shell:: + All of the shell scripts that come with HBase rely on the link:http://www.gnu.org/software/bash[GNU Bash] shell. + +Windows:: + Prior to HBase 0.96, testing for running HBase on Microsoft Windows was limited. + Running a on Windows nodes is not recommended for production systems. + + +[[hadoop]] +=== link:http://hadoop.apache.org[Hadoop](((Hadoop))) + +The following table summarizes the versions of Hadoop supported with each version of HBase. +Based on the version of HBase, you should select the most appropriate version of Hadoop. +You can use Apache Hadoop, or a vendor's distribution of Hadoop. +No distinction is made here. +See link:http://wiki.apache.org/hadoop/Distributions%20and%20Commercial%20Support[the Hadoop wiki] for information about vendors of Hadoop. + +.Hadoop 2.x is recommended. +[TIP] +==== +Hadoop 2.x is faster and includes features, such as short-circuit reads, which will help improve your HBase random read profile. +Hadoop 2.x also includes important bug fixes that will improve your overall HBase experience. +HBase 0.98 drops support for Hadoop 1.0, deprecates use of Hadoop 1.1+, and HBase 1.0 will not support Hadoop 1.x. +==== + +Use the following legend to interpret this table: + +.Hadoop version support matrix + +* "S" = supported +* "X" = not supported +* "NT" = Not tested + +[cols="1,1,1,1,1,1,1", options="header"] +|=== +| | HBase-0.92.x | HBase-0.94.x | HBase-0.96.x | HBase-0.98.x (Support for Hadoop 1.1+ is deprecated.) | HBase-1.0.x (Hadoop 1.x is NOT supported) | HBase-1.1.x +|Hadoop-0.20.205 | S | X | X | X | X | X +|Hadoop-0.22.x | S | X | X | X | X | X +|Hadoop-1.0.x |X | X | X | X | X | X +|Hadoop-1.1.x | NT | S | S | NT | X | X +|Hadoop-0.23.x | X | S | NT | X | X | X +|Hadoop-2.0.x-alpha | X | NT | X | X | X | X +|Hadoop-2.1.0-beta | X | NT | S | X | X | X +|Hadoop-2.2.0 | X | NT | S | S | NT | NT +|Hadoop-2.3.x | X | NT | S | S | NT | NT +|Hadoop-2.4.x | X | NT | S | S | S | S +|Hadoop-2.5.x | X | NT | S | S | S | S +|Hadoop-2.6.x | X | NT | NT | NT | S | S +|Hadoop-2.7.x | X | NT | NT | NT | NT | NT +|=== + +.Replace the Hadoop Bundled With HBase! +[NOTE] +==== +Because HBase depends on Hadoop, it bundles an instance of the Hadoop jar under its _lib_ directory. +The bundled jar is ONLY for use in standalone mode. +In distributed mode, it is _critical_ that the version of Hadoop that is out on your cluster match what is under HBase. +Replace the hadoop jar found in the HBase lib directory with the hadoop jar you are running on your cluster to avoid version mismatch issues. +Make sure you replace the jar in HBase everywhere on your cluster. +Hadoop version mismatch issues have various manifestations but often all looks like its hung up. +==== + +[[hadoop2.hbase_0.94]] +==== Apache HBase 0.94 with Hadoop 2 + +To get 0.94.x to run on Hadoop 2.2.0, you need to change the hadoop 2 and protobuf versions in the _pom.xml_: Here is a diff with pom.xml changes: + +[source] +---- +$ svn diff pom.xml +Index: pom.xml +=================================================================== +--- pom.xml (revision 1545157) ++++ pom.xml (working copy) +@@ -1034,7 +1034,7 @@ + 1.4.3 + 1.2.16 + 1.8.5 +- 2.4.0a ++ 2.5.0 + 1.0.1 + 0.8.0 + 3.4.5 +@@ -2241,7 +2241,7 @@ + + + +- 2.0.0-alpha ++ 2.2.0 + 1.6.1 + + +---- + +The next step is to regenerate Protobuf files and assuming that the Protobuf has been installed: + +* Go to the HBase root folder, using the command line; +* Type the following commands: ++ + +[source,bourne] +---- +$ protoc -Isrc/main/protobuf --java_out=src/main/java src/main/protobuf/hbase.proto +---- ++ + +[source,bourne] +---- +$ protoc -Isrc/main/protobuf --java_out=src/main/java src/main/protobuf/ErrorHandling.proto +---- + + +Building against the hadoop 2 profile by running something like the following command: + +---- +$ mvn clean install assembly:single -Dhadoop.profile=2.0 -DskipTests +---- + +[[hadoop.hbase_0.94]] +==== Apache HBase 0.92 and 0.94 + +HBase 0.92 and 0.94 versions can work with Hadoop versions, 0.20.205, 0.22.x, 1.0.x, and 1.1.x. +HBase-0.94 can additionally work with Hadoop-0.23.x and 2.x, but you may have to recompile the code using the specific maven profile (see top level pom.xml) + +[[hadoop.hbase_0.96]] +==== Apache HBase 0.96 + +As of Apache HBase 0.96.x, Apache Hadoop 1.0.x at least is required. +Hadoop 2 is strongly encouraged (faster but also has fixes that help MTTR). We will no longer run properly on older Hadoops such as 0.20.205 or branch-0.20-append. +Do not move to Apache HBase 0.96.x if you cannot upgrade your Hadoop. See link:http://search-hadoop.com/m/7vFVx4EsUb2[HBase, mail # dev - DISCUSS: + Have hbase require at least hadoop 1.0.0 in hbase 0.96.0?] + +[[hadoop.older.versions]] +==== Hadoop versions 0.20.x - 1.x + +HBase will lose data unless it is running on an HDFS that has a durable `sync` implementation. +DO NOT use Hadoop 0.20.2, Hadoop 0.20.203.0, and Hadoop 0.20.204.0 which DO NOT have this attribute. +Currently only Hadoop versions 0.20.205.x or any release in excess of this version -- this includes hadoop-1.0.0 -- have a working, durable sync. +The Cloudera blog post link:http://www.cloudera.com/blog/2012/01/an-update-on-apache-hadoop-1-0/[An + update on Apache Hadoop 1.0] by Charles Zedlweski has a nice exposition on how all the Hadoop versions relate. +It's worth checking out if you are having trouble making sense of the Hadoop version morass. + +Sync has to be explicitly enabled by setting `dfs.support.append` equal to true on both the client side -- in _hbase-site.xml_ -- and on the serverside in _hdfs-site.xml_ (The sync facility HBase needs is a subset of the append code path). + +[source,xml] +---- + + + dfs.support.append + true + +---- + +You will have to restart your cluster after making this edit. +Ignore the chicken-little comment you'll find in the _hdfs-default.xml_ in the description for the `dfs.support.append` configuration. + +[[hadoop.security]] +==== Apache HBase on Secure Hadoop + +Apache HBase will run on any Hadoop 0.20.x that incorporates Hadoop security features as long as you do as suggested above and replace the Hadoop jar that ships with HBase with the secure version. +If you want to read more about how to setup Secure HBase, see <>. + + +[[dfs.datanode.max.transfer.threads]] +==== `dfs.datanode.max.transfer.threads` (((dfs.datanode.max.transfer.threads))) + +An HDFS DataNode has an upper bound on the number of files that it will serve at any one time. +Before doing any loading, make sure you have configured Hadoop's _conf/hdfs-site.xml_, setting the `dfs.datanode.max.transfer.threads` value to at least the following: + +[source,xml] +---- + + + dfs.datanode.max.transfer.threads + 4096 + +---- + +Be sure to restart your HDFS after making the above configuration. + +Not having this configuration in place makes for strange-looking failures. +One manifestation is a complaint about missing blocks. +For example: + +---- +10/12/08 20:10:31 INFO hdfs.DFSClient: Could not obtain block + blk_XXXXXXXXXXXXXXXXXXXXXX_YYYYYYYY from any node: java.io.IOException: No live nodes + contain current block. Will get new block locations from namenode and retry... +---- + +See also <> and note that this property was previously known as `dfs.datanode.max.xcievers` (e.g. link:http://ccgtech.blogspot.com/2010/02/hadoop-hdfs-deceived-by-xciever.html[Hadoop HDFS: Deceived by Xciever]). + +[[zookeeper.requirements]] +=== ZooKeeper Requirements + +ZooKeeper 3.4.x is required as of HBase 1.0.0. +HBase makes use of the `multi` functionality that is only available since 3.4.0 (The `useMulti` configuration option defaults to `true` in HBase 1.0.0). +See link:https://issues.apache.org/jira/browse/HBASE-12241[HBASE-12241 (The crash of regionServer when taking deadserver's replication queue breaks replication)] and link:https://issues.apache.org/jira/browse/HBASE-6775[HBASE-6775 (Use ZK.multi when available for HBASE-6710 0.92/0.94 compatibility fix)] for background. + +[[standalone_dist]] +== HBase run modes: Standalone and Distributed + +HBase has two run modes: <> and <>. +Out of the box, HBase runs in standalone mode. +Whatever your mode, you will need to configure HBase by editing files in the HBase _conf_ directory. +At a minimum, you must edit [code]+conf/hbase-env.sh+ to tell HBase which +java+ to use. +In this file you set HBase environment variables such as the heapsize and other options for the `JVM`, the preferred location for log files, etc. +Set [var]+JAVA_HOME+ to point at the root of your +java+ install. + +[[standalone]] +=== Standalone HBase + +This is the default mode. +Standalone mode is what is described in the <> section. +In standalone mode, HBase does not use HDFS -- it uses the local filesystem instead -- and it runs all HBase daemons and a local ZooKeeper all up in the same JVM. +Zookeeper binds to a well known port so clients may talk to HBase. + +=== Distributed + +Distributed mode can be subdivided into distributed but all daemons run on a single node -- a.k.a _pseudo-distributed_ -- and _fully-distributed_ where the daemons are spread across all nodes in the cluster. +The _pseudo-distributed_ vs. _fully-distributed_ nomenclature comes from Hadoop. + +Pseudo-distributed mode can run against the local filesystem or it can run against an instance of the _Hadoop Distributed File System_ (HDFS). Fully-distributed mode can ONLY run on HDFS. +See the Hadoop link:http://hadoop.apache.org/docs/current/[documentation] for how to set up HDFS. +A good walk-through for setting up HDFS on Hadoop 2 can be found at http://www.alexjf.net/blog/distributed-systems/hadoop-yarn-installation-definitive-guide. + +[[pseudo]] +==== Pseudo-distributed + +.Pseudo-Distributed Quickstart +[NOTE] +==== +A quickstart has been added to the <> chapter. +See <>. +Some of the information that was originally in this section has been moved there. +==== + +A pseudo-distributed mode is simply a fully-distributed mode run on a single host. +Use this configuration testing and prototyping on HBase. +Do not use this configuration for production nor for evaluating HBase performance. + +[[fully_dist]] +=== Fully-distributed + +By default, HBase runs in standalone mode. +Both standalone mode and pseudo-distributed mode are provided for the purposes of small-scale testing. +For a production environment, distributed mode is appropriate. +In distributed mode, multiple instances of HBase daemons run on multiple servers in the cluster. + +Just as in pseudo-distributed mode, a fully distributed configuration requires that you set the `hbase-cluster.distributed` property to `true`. +Typically, the `hbase.rootdir` is configured to point to a highly-available HDFS filesystem. + +In addition, the cluster is configured so that multiple cluster nodes enlist as RegionServers, ZooKeeper QuorumPeers, and backup HMaster servers. +These configuration basics are all demonstrated in <>. + +.Distributed RegionServers +Typically, your cluster will contain multiple RegionServers all running on different servers, as well as primary and backup Master and Zookeeper daemons. +The _conf/regionservers_ file on the master server contains a list of hosts whose RegionServers are associated with this cluster. +Each host is on a separate line. +All hosts listed in this file will have their RegionServer processes started and stopped when the master server starts or stops. + +.ZooKeeper and HBase +See the <> section for ZooKeeper setup instructions for HBase. + +.Example Distributed HBase Cluster +==== +This is a bare-bones _conf/hbase-site.xml_ for a distributed HBase cluster. +A cluster that is used for real-world work would contain more custom configuration parameters. +Most HBase configuration directives have default values, which are used unless the value is overridden in the _hbase-site.xml_. +See "<>" for more information. + +[source,xml] +---- + + + + hbase.rootdir + hdfs://namenode.example.org:8020/hbase + + + hbase.cluster.distributed + true + + + hbase.zookeeper.quorum + node-a.example.com,node-b.example.com,node-c.example.com + + +---- + +This is an example _conf/regionservers_ file, which contains a list of nodes that should run a RegionServer in the cluster. +These nodes need HBase installed and they need to use the same contents of the _conf/_ directory as the Master server + +[source] +---- + +node-a.example.com +node-b.example.com +node-c.example.com +---- + +This is an example _conf/backup-masters_ file, which contains a list of each node that should run a backup Master instance. +The backup Master instances will sit idle unless the main Master becomes unavailable. + +[source] +---- + +node-b.example.com +node-c.example.com +---- +==== + +.Distributed HBase Quickstart +See <> for a walk-through of a simple three-node cluster configuration with multiple ZooKeeper, backup HMaster, and RegionServer instances. + +.Procedure: HDFS Client Configuration +. Of note, if you have made HDFS client configuration changes on your Hadoop cluster, such as configuration directives for HDFS clients, as opposed to server-side configurations, you must use one of the following methods to enable HBase to see and use these configuration changes: ++ +a. Add a pointer to your `HADOOP_CONF_DIR` to the `HBASE_CLASSPATH` environment variable in _hbase-env.sh_. +b. Add a copy of _hdfs-site.xml_ (or _hadoop-site.xml_) or, better, symlinks, under _${HBASE_HOME}/conf_, or +c. if only a small set of HDFS client configurations, add them to _hbase-site.xml_. + + +An example of such an HDFS client configuration is `dfs.replication`. +If for example, you want to run with a replication factor of 5, HBase will create files with the default of 3 unless you do the above to make the configuration available to HBase. + +[[confirm]] +== Running and Confirming Your Installation + +Make sure HDFS is running first. +Start and stop the Hadoop HDFS daemons by running _bin/start-hdfs.sh_ over in the `HADOOP_HOME` directory. +You can ensure it started properly by testing the `put` and `get` of files into the Hadoop filesystem. +HBase does not normally use the MapReduce or YARN daemons. These do not need to be started. + +_If_ you are managing your own ZooKeeper, start it and confirm it's running, else HBase will start up ZooKeeper for you as part of its start process. + +Start HBase with the following command: + +---- +bin/start-hbase.sh +---- + +Run the above from the `HBASE_HOME` directory. + +You should now have a running HBase instance. +HBase logs can be found in the _logs_ subdirectory. +Check them out especially if HBase had trouble starting. + +HBase also puts up a UI listing vital attributes. +By default it's deployed on the Master host at port 16010 (HBase RegionServers listen on port 16020 by default and put up an informational HTTP server at port 16030). If the Master is running on a host named `master.example.org` on the default port, point your browser at _http://master.example.org:16010_ to see the web interface. + +Prior to HBase 0.98 the master UI was deployed on port 60010, and the HBase RegionServers UI on port 60030. + +Once HBase has started, see the <> section for how to create tables, add data, scan your insertions, and finally disable and drop your tables. + +To stop HBase after exiting the HBase shell enter + +---- +$ ./bin/stop-hbase.sh +stopping hbase............... +---- + +Shutdown can take a moment to complete. +It can take longer if your cluster is comprised of many machines. +If you are running a distributed operation, be sure to wait until HBase has shut down completely before stopping the Hadoop daemons. + +[[config.files]] +== Default Configuration + +[[hbase.site]] +=== _hbase-site.xml_ and _hbase-default.xml_ + +Just as in Hadoop where you add site-specific HDFS configuration to the _hdfs-site.xml_ file, for HBase, site specific customizations go into the file _conf/hbase-site.xml_. +For the list of configurable properties, see <> below or view the raw _hbase-default.xml_ source file in the HBase source code at _src/main/resources_. + +Not all configuration options make it out to _hbase-default.xml_. +Configuration that it is thought rare anyone would change can exist only in code; the only way to turn up such configurations is via a reading of the source code itself. + +Currently, changes here will require a cluster restart for HBase to notice the change. +// hbase/src/main/asciidoc +// +include::../../../../target/asciidoc/hbase-default.adoc[] + + +[[hbase.env.sh]] +=== _hbase-env.sh_ + +Set HBase environment variables in this file. +Examples include options to pass the JVM on start of an HBase daemon such as heap size and garbage collector configs. +You can also set configurations for HBase configuration, log directories, niceness, ssh options, where to locate process pid files, etc. +Open the file at _conf/hbase-env.sh_ and peruse its content. +Each option is fairly well documented. +Add your own environment variables here if you want them read by HBase daemons on startup. + +Changes here will require a cluster restart for HBase to notice the change. + +[[log4j]] +=== _log4j.properties_ + +Edit this file to change rate at which HBase files are rolled and to change the level at which HBase logs messages. + +Changes here will require a cluster restart for HBase to notice the change though log levels can be changed for particular daemons via the HBase UI. + +[[client_dependencies]] +=== Client configuration and dependencies connecting to an HBase cluster + +If you are running HBase in standalone mode, you don't need to configure anything for your client to work provided that they are all on the same machine. + +Since the HBase Master may move around, clients bootstrap by looking to ZooKeeper for current critical locations. +ZooKeeper is where all these values are kept. +Thus clients require the location of the ZooKeeper ensemble before they can do anything else. +Usually this the ensemble location is kept out in the _hbase-site.xml_ and is picked up by the client from the `CLASSPATH`. + +If you are configuring an IDE to run a HBase client, you should include the _conf/_ directory on your classpath so _hbase-site.xml_ settings can be found (or add _src/test/resources_ to pick up the hbase-site.xml used by tests). + +Minimally, a client of HBase needs several libraries in its `CLASSPATH` when connecting to a cluster, including: +[source] +---- + +commons-configuration (commons-configuration-1.6.jar) +commons-lang (commons-lang-2.5.jar) +commons-logging (commons-logging-1.1.1.jar) +hadoop-core (hadoop-core-1.0.0.jar) +hbase (hbase-0.92.0.jar) +log4j (log4j-1.2.16.jar) +slf4j-api (slf4j-api-1.5.8.jar) +slf4j-log4j (slf4j-log4j12-1.5.8.jar) +zookeeper (zookeeper-3.4.2.jar) +---- + +An example basic _hbase-site.xml_ for client only might look as follows: +[source,xml] +---- + + + + + hbase.zookeeper.quorum + example1,example2,example3 + The directory shared by region servers. + + + +---- + +[[java.client.config]] +==== Java client configuration + +The configuration used by a Java client is kept in an link:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/HBaseConfiguration[HBaseConfiguration] instance. + +The factory method on HBaseConfiguration, `HBaseConfiguration.create();`, on invocation, will read in the content of the first _hbase-site.xml_ found on the client's `CLASSPATH`, if one is present (Invocation will also factor in any _hbase-default.xml_ found; an _hbase-default.xml_ ships inside the _hbase.X.X.X.jar_). It is also possible to specify configuration directly without having to read from a _hbase-site.xml_. +For example, to set the ZooKeeper ensemble for the cluster programmatically do as follows: + +[source,java] +---- +Configuration config = HBaseConfiguration.create(); +config.set("hbase.zookeeper.quorum", "localhost"); // Here we are running zookeeper locally +---- + +If multiple ZooKeeper instances make up your ZooKeeper ensemble, they may be specified in a comma-separated list (just as in the _hbase-site.xml_ file). This populated `Configuration` instance can then be passed to an link:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Table.html[Table], and so on. + +[[example_config]] +== Example Configurations + +=== Basic Distributed HBase Install + +Here is an example basic configuration for a distributed ten node cluster: +* The nodes are named `example0`, `example1`, etc., through node `example9` in this example. +* The HBase Master and the HDFS NameNode are running on the node `example0`. +* RegionServers run on nodes `example1`-`example9`. +* A 3-node ZooKeeper ensemble runs on `example1`, `example2`, and `example3` on the default ports. +* ZooKeeper data is persisted to the directory _/export/zookeeper_. + +Below we show what the main configuration files -- _hbase-site.xml_, _regionservers_, and _hbase-env.sh_ -- found in the HBase _conf_ directory might look like. + +[[hbase_site]] +==== _hbase-site.xml_ + +[source,xml] +---- + + + + + hbase.zookeeper.quorum + example1,example2,example3 + The directory shared by RegionServers. + + + + hbase.zookeeper.property.dataDir + /export/zookeeper + Property from ZooKeeper config zoo.cfg. + The directory where the snapshot is stored. + + + + hbase.rootdir + hdfs://example0:8020/hbase + The directory shared by RegionServers. + + + + hbase.cluster.distributed + true + The mode the cluster will be in. Possible values are + false: standalone and pseudo-distributed setups with managed Zookeeper + true: fully-distributed with unmanaged Zookeeper Quorum (see hbase-env.sh) + + + +---- + +[[regionservers]] +==== _regionservers_ + +In this file you list the nodes that will run RegionServers. +In our case, these nodes are `example1`-`example9`. + +[source] +---- +example1 +example2 +example3 +example4 +example5 +example6 +example7 +example8 +example9 +---- + +[[hbase_env]] +==== _hbase-env.sh_ + +The following lines in the _hbase-env.sh_ file show how to set the `JAVA_HOME` environment variable (required for HBase 0.98.5 and newer) and set the heap to 4 GB (rather than the default value of 1 GB). If you copy and paste this example, be sure to adjust the `JAVA_HOME` to suit your environment. + +---- +# The java implementation to use. +export JAVA_HOME=/usr/java/jdk1.7.0/ + +# The maximum amount of heap to use. Default is left to JVM default. +export HBASE_HEAPSIZE=4G +---- + +Use +rsync+ to copy the content of the _conf_ directory to all nodes of the cluster. + +[[important_configurations]] +== The Important Configurations + +Below we list some _important_ configurations. +We've divided this section into required configuration and worth-a-look recommended configs. + +[[required_configuration]] +=== Required Configurations + +Review the <> and <> sections. + +[[big.cluster.config]] +==== Big Cluster Configurations + +If you have a cluster with a lot of regions, it is possible that a Regionserver checks in briefly after the Master starts while all the remaining RegionServers lag behind. This first server to check in will be assigned all regions which is not optimal. +To prevent the above scenario from happening, up the `hbase.master.wait.on.regionservers.mintostart` property from its default value of 1. +See link:https://issues.apache.org/jira/browse/HBASE-6389[HBASE-6389 Modify the + conditions to ensure that Master waits for sufficient number of Region Servers before + starting region assignments] for more detail. + +[[backup.master.fail.fast]] +==== If a backup Master exists, make the primary Master fail fast + +If the primary Master loses its connection with ZooKeeper, it will fall into a loop where it keeps trying to reconnect. +Disable this functionality if you are running more than one Master: i.e. a backup Master. +Failing to do so, the dying Master may continue to receive RPCs though another Master has assumed the role of primary. +See the configuration <>. + +=== Recommended Configurations + +[[recommended_configurations.zk]] +==== ZooKeeper Configuration + +[[sect.zookeeper.session.timeout]] +===== `zookeeper.session.timeout` + +The default timeout is three minutes (specified in milliseconds). This means that if a server crashes, it will be three minutes before the Master notices the crash and starts recovery. +You might like to tune the timeout down to a minute or even less so the Master notices failures the sooner. +Before changing this value, be sure you have your JVM garbage collection configuration under control otherwise, a long garbage collection that lasts beyond the ZooKeeper session timeout will take out your RegionServer (You might be fine with this -- you probably want recovery to start on the server if a RegionServer has been in GC for a long period of time). + +To change this configuration, edit _hbase-site.xml_, copy the changed file around the cluster and restart. + +We set this value high to save our having to field questions up on the mailing lists asking why a RegionServer went down during a massive import. +The usual cause is that their JVM is untuned and they are running into long GC pauses. +Our thinking is that while users are getting familiar with HBase, we'd save them having to know all of its intricacies. +Later when they've built some confidence, then they can play with configuration such as this. + +[[zookeeper.instances]] +===== Number of ZooKeeper Instances + +See <>. + +[[recommended.configurations.hdfs]] +==== HDFS Configurations + +[[dfs.datanode.failed.volumes.tolerated]] +===== dfs.datanode.failed.volumes.tolerated + +This is the "...number of volumes that are allowed to fail before a DataNode stops offering service. +By default any volume failure will cause a datanode to shutdown" from the _hdfs-default.xml_ description. +You might want to set this to about half the amount of your available disks. + +[[hbase.regionserver.handler.count_description]] +==== `hbase.regionserver.handler.count` + +This setting defines the number of threads that are kept open to answer incoming requests to user tables. +The rule of thumb is to keep this number low when the payload per request approaches the MB (big puts, scans using a large cache) and high when the payload is small (gets, small puts, ICVs, deletes). The total size of the queries in progress is limited by the setting `hbase.ipc.server.max.callqueue.size`. + +It is safe to set that number to the maximum number of incoming clients if their payload is small, the typical example being a cluster that serves a website since puts aren't typically buffered and most of the operations are gets. + +The reason why it is dangerous to keep this setting high is that the aggregate size of all the puts that are currently happening in a region server may impose too much pressure on its memory, or even trigger an OutOfMemoryError. +A RegionServer running on low memory will trigger its JVM's garbage collector to run more frequently up to a point where GC pauses become noticeable (the reason being that all the memory used to keep all the requests' payloads cannot be trashed, no matter how hard the garbage collector tries). After some time, the overall cluster throughput is affected since every request that hits that RegionServer will take longer, which exacerbates the problem even more. + +You can get a sense of whether you have too little or too many handlers by <> on an individual RegionServer then tailing its logs (Queued requests consume memory). + +[[big_memory]] +==== Configuration for large memory machines + +HBase ships with a reasonable, conservative configuration that will work on nearly all machine types that people might want to test with. +If you have larger machines -- HBase has 8G and larger heap -- you might the following configuration options helpful. +TODO. + +[[config.compression]] +==== Compression + +You should consider enabling ColumnFamily compression. +There are several options that are near-frictionless and in most all cases boost performance by reducing the size of StoreFiles and thus reducing I/O. + +See <> for more information. + +[[config.wals]] +==== Configuring the size and number of WAL files + +HBase uses <> to recover the memstore data that has not been flushed to disk in case of an RS failure. +These WAL files should be configured to be slightly smaller than HDFS block (by default a HDFS block is 64Mb and a WAL file is ~60Mb). + +HBase also has a limit on the number of WAL files, designed to ensure there's never too much data that needs to be replayed during recovery. +This limit needs to be set according to memstore configuration, so that all the necessary data would fit. +It is recommended to allocate enough WAL files to store at least that much data (when all memstores are close to full). For example, with 16Gb RS heap, default memstore settings (0.4), and default WAL file size (~60Mb), 16Gb*0.4/60, the starting point for WAL file count is ~109. +However, as all memstores are not expected to be full all the time, less WAL files can be allocated. + +[[disable.splitting]] +==== Managed Splitting + +HBase generally handles splitting your regions, based upon the settings in your _hbase-default.xml_ and _hbase-site.xml_ configuration files. +Important settings include `hbase.regionserver.region.split.policy`, `hbase.hregion.max.filesize`, `hbase.regionserver.regionSplitLimit`. +A simplistic view of splitting is that when a region grows to `hbase.hregion.max.filesize`, it is split. +For most use patterns, most of the time, you should use automatic splitting. +See <> for more information about manual region splitting. + +Instead of allowing HBase to split your regions automatically, you can choose to manage the splitting yourself. +This feature was added in HBase 0.90.0. +Manually managing splits works if you know your keyspace well, otherwise let HBase figure where to split for you. +Manual splitting can mitigate region creation and movement under load. +It also makes it so region boundaries are known and invariant (if you disable region splitting). If you use manual splits, it is easier doing staggered, time-based major compactions to spread out your network IO load. + +.Disable Automatic Splitting +To disable automatic splitting, set `hbase.hregion.max.filesize` to a very large value, such as `100 GB` It is not recommended to set it to its absolute maximum value of `Long.MAX_VALUE`. + +.Automatic Splitting Is Recommended +[NOTE] +==== +If you disable automatic splits to diagnose a problem or during a period of fast data growth, it is recommended to re-enable them when your situation becomes more stable. +The potential benefits of managing region splits yourself are not undisputed. +==== + +.Determine the Optimal Number of Pre-Split Regions +The optimal number of pre-split regions depends on your application and environment. +A good rule of thumb is to start with 10 pre-split regions per server and watch as data grows over time. +It is better to err on the side of too few regions and perform rolling splits later. +The optimal number of regions depends upon the largest StoreFile in your region. +The size of the largest StoreFile will increase with time if the amount of data grows. +The goal is for the largest region to be just large enough that the compaction selection algorithm only compacts it during a timed major compaction. +Otherwise, the cluster can be prone to compaction storms where a large number of regions under compaction at the same time. +It is important to understand that the data growth causes compaction storms, and not the manual split decision. + +If the regions are split into too many large regions, you can increase the major compaction interval by configuring `HConstants.MAJOR_COMPACTION_PERIOD`. +HBase 0.90 introduced `org.apache.hadoop.hbase.util.RegionSplitter`, which provides a network-IO-safe rolling split of all regions. + +[[managed.compactions]] +==== Managed Compactions + +By default, major compactions are scheduled to run once in a 7-day period. +Prior to HBase 0.96.x, major compactions were scheduled to happen once per day by default. + +If you need to control exactly when and how often major compaction runs, you can disable managed major compactions. +See the entry for `hbase.hregion.majorcompaction` in the <> table for details. + +.Do Not Disable Major Compactions +[WARNING] +==== +Major compactions are absolutely necessary for StoreFile clean-up. +Do not disable them altogether. +You can run major compactions manually via the HBase shell or via the http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Admin.html#majorCompact(org.apache.hadoop.hbase.TableName)[Admin API]. +==== + +For more information about compactions and the compaction file selection process, see <> + +[[spec.ex]] +==== Speculative Execution + +Speculative Execution of MapReduce tasks is on by default, and for HBase clusters it is generally advised to turn off Speculative Execution at a system-level unless you need it for a specific case, where it can be configured per-job. +Set the properties `mapreduce.map.speculative` and `mapreduce.reduce.speculative` to false. + +[[other_configuration]] +=== Other Configurations + +[[balancer_config]] +==== Balancer + +The balancer is a periodic operation which is run on the master to redistribute regions on the cluster. +It is configured via `hbase.balancer.period` and defaults to 300000 (5 minutes). + +See <> for more information on the LoadBalancer. + +[[disabling.blockcache]] +==== Disabling Blockcache + +Do not turn off block cache (You'd do it by setting `hbase.block.cache.size` to zero). Currently we do not do well if you do this because the RegionServer will spend all its time loading HFile indices over and over again. +If your working set it such that block cache does you no good, at least size the block cache such that HFile indices will stay up in the cache (you can get a rough idea on the size you need by surveying RegionServer UIs; you'll see index block size accounted near the top of the webpage). + +[[nagles]] +==== link:http://en.wikipedia.org/wiki/Nagle's_algorithm[Nagle's] or the small package problem + +If a big 40ms or so occasional delay is seen in operations against HBase, try the Nagles' setting. +For example, see the user mailing list thread, link:http://search-hadoop.com/m/pduLg2fydtE/Inconsistent+scan+performance+with+caching+set+&subj=Re+Inconsistent+scan+performance+with+caching+set+to+1[Inconsistent scan performance with caching set to 1] and the issue cited therein where setting `notcpdelay` improved scan speeds. +You might also see the graphs on the tail of link:https://issues.apache.org/jira/browse/HBASE-7008[HBASE-7008 Set scanner caching to a better default] where our Lars Hofhansl tries various data sizes w/ Nagle's on and off measuring the effect. + +[[mttr]] +==== Better Mean Time to Recover (MTTR) + +This section is about configurations that will make servers come back faster after a fail. +See the Deveraj Das an Nicolas Liochon blog post link:http://hortonworks.com/blog/introduction-to-hbase-mean-time-to-recover-mttr/[Introduction to HBase Mean Time to Recover (MTTR)] for a brief introduction. + +The issue link:https://issues.apache.org/jira/browse/HBASE-8389[HBASE-8354 forces Namenode into loop with lease recovery requests] is messy but has a bunch of good discussion toward the end on low timeouts and how to effect faster recovery including citation of fixes added to HDFS. Read the Varun Sharma comments. +The below suggested configurations are Varun's suggestions distilled and tested. +Make sure you are running on a late-version HDFS so you have the fixes he refers too and himself adds to HDFS that help HBase MTTR (e.g. +HDFS-3703, HDFS-3712, and HDFS-4791 -- Hadoop 2 for sure has them and late Hadoop 1 has some). Set the following in the RegionServer. + +[source,xml] +---- + + hbase.lease.recovery.dfs.timeout + 23000 + How much time we allow elapse between calls to recover lease. + Should be larger than the dfs timeout. + + + dfs.client.socket-timeout + 10000 + Down the DFS timeout from 60 to 10 seconds. + +---- + +And on the NameNode/DataNode side, set the following to enable 'staleness' introduced in HDFS-3703, HDFS-3912. + +[source,xml] +---- + + dfs.client.socket-timeout + 10000 + Down the DFS timeout from 60 to 10 seconds. + + + dfs.datanode.socket.write.timeout + 10000 + Down the DFS timeout from 8 * 60 to 10 seconds. + + + ipc.client.connect.timeout + 3000 + Down from 60 seconds to 3. + + + ipc.client.connect.max.retries.on.timeouts + 2 + Down from 45 seconds to 3 (2 == 3 retries). + + + dfs.namenode.avoid.read.stale.datanode + true + Enable stale state in hdfs + + + dfs.namenode.stale.datanode.interval + 20000 + Down from default 30 seconds + + + dfs.namenode.avoid.write.stale.datanode + true + Enable stale state in hdfs + +---- + +[[jmx_config]] +==== JMX + +JMX (Java Management Extensions) provides built-in instrumentation that enables you to monitor and manage the Java VM. +To enable monitoring and management from remote systems, you need to set system property `com.sun.management.jmxremote.port` (the port number through which you want to enable JMX RMI connections) when you start the Java VM. +See the link:http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html[official documentation] for more information. +Historically, besides above port mentioned, JMX opens two additional random TCP listening ports, which could lead to port conflict problem. (See link:https://issues.apache.org/jira/browse/HBASE-10289[HBASE-10289] for details) + +As an alternative, You can use the coprocessor-based JMX implementation provided by HBase. +To enable it in 0.99 or above, add below property in _hbase-site.xml_: + +[source,xml] +---- + + hbase.coprocessor.regionserver.classes + org.apache.hadoop.hbase.JMXListener + +---- + +NOTE: DO NOT set `com.sun.management.jmxremote.port` for Java VM at the same time. + +Currently it supports Master and RegionServer Java VM. +By default, the JMX listens on TCP port 10102, you can further configure the port using below properties: + +[source,xml] +---- + + regionserver.rmi.registry.port + 61130 + + + regionserver.rmi.connector.port + 61140 + +---- + +The registry port can be shared with connector port in most cases, so you only need to configure regionserver.rmi.registry.port. +However if you want to use SSL communication, the 2 ports must be configured to different values. + +By default the password authentication and SSL communication is disabled. +To enable password authentication, you need to update _hbase-env.sh_ like below: +[source,bash] +---- +export HBASE_JMX_BASE="-Dcom.sun.management.jmxremote.authenticate=true \ + -Dcom.sun.management.jmxremote.password.file=your_password_file \ + -Dcom.sun.management.jmxremote.access.file=your_access_file" + +export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS $HBASE_JMX_BASE " +export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE " +---- + +See example password/access file under _$JRE_HOME/lib/management_. + +To enable SSL communication with password authentication, follow below steps: + +[source,bash] +---- +#1. generate a key pair, stored in myKeyStore +keytool -genkey -alias jconsole -keystore myKeyStore + +#2. export it to file jconsole.cert +keytool -export -alias jconsole -keystore myKeyStore -file jconsole.cert + +#3. copy jconsole.cert to jconsole client machine, import it to jconsoleKeyStore +keytool -import -alias jconsole -keystore jconsoleKeyStore -file jconsole.cert +---- + +And then update _hbase-env.sh_ like below: + +[source,bash] +---- +export HBASE_JMX_BASE="-Dcom.sun.management.jmxremote.ssl=true \ + -Djavax.net.ssl.keyStore=/home/tianq/myKeyStore \ + -Djavax.net.ssl.keyStorePassword=your_password_in_step_1 \ + -Dcom.sun.management.jmxremote.authenticate=true \ + -Dcom.sun.management.jmxremote.password.file=your_password file \ + -Dcom.sun.management.jmxremote.access.file=your_access_file" + +export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS $HBASE_JMX_BASE " +export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE " +---- + +Finally start `jconsole` on the client using the key store: + +[source,bash] +---- +jconsole -J-Djavax.net.ssl.trustStore=/home/tianq/jconsoleKeyStore +---- + +NOTE: To enable the HBase JMX implementation on Master, you also need to add below property in _hbase-site.xml_: + +[source,xml] +---- + + hbase.coprocessor.master.classes + org.apache.hadoop.hbase.JMXListener + +---- + +The corresponding properties for port configuration are `master.rmi.registry.port` (by default 10101) and `master.rmi.connector.port` (by default the same as registry.port) + +[[dyn_config]] +== Dynamic Configuration + +Since HBase 1.0.0, it is possible to change a subset of the configuration without requiring a server restart. +In the HBase shell, there are new operators, `update_config` and `update_all_config` that will prompt a server or all servers to reload configuration. + +Only a subset of all configurations can currently be changed in the running server. +Here is an incomplete list: `hbase.regionserver.thread.compaction.large`, `hbase.regionserver.thread.compaction.small`, `hbase.regionserver.thread.split`, `hbase.regionserver.thread.merge`, as well as compaction policy and configurations and adjustment to offpeak hours. +For the full list consult the patch attached to link:https://issues.apache.org/jira/browse/HBASE-12147[HBASE-12147 Porting Online Config Change from 89-fb]. + +ifdef::backend-docbook[] +[index] +== Index +// Generated automatically by the DocBook toolchain. +endif::backend-docbook[] diff --git a/src/main/asciidoc/_chapters/developer.adoc b/src/main/asciidoc/_chapters/developer.adoc new file mode 100644 index 0000000..ee03614 --- /dev/null +++ b/src/main/asciidoc/_chapters/developer.adoc @@ -0,0 +1,1971 @@ +//// +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//// + +[[developer]] += Building and Developing Apache HBase +:doctype: book +:numbered: +:toc: left +:icons: font +:experimental: + +This chapter contains information and guidelines for building and releasing HBase code and documentation. +Being familiar with these guidelines will help the HBase committers to use your contributions more easily. + +[[getting.involved]] +== Getting Involved + +Apache HBase gets better only when people contribute! If you are looking to contribute to Apache HBase, look for link:https://issues.apache.org/jira/issues/?jql=project%20%3D%20HBASE%20AND%20labels%20in%20(beginner)[issues in JIRA tagged with the label 'beginner']. +These are issues HBase contributors have deemed worthy but not of immediate priority and a good way to ramp on HBase internals. +See link:http://search-hadoop.com/m/DHED43re96[What label + is used for issues that are good on ramps for new contributors?] from the dev mailing list for background. + +Before you get started submitting code to HBase, please refer to <>. + +As Apache HBase is an Apache Software Foundation project, see <> for more information about how the ASF functions. + +[[mailing.list]] +=== Mailing Lists + +Sign up for the dev-list and the user-list. +See the link:http://hbase.apache.org/mail-lists.html[mailing lists] page. +Posing questions - and helping to answer other people's questions - is encouraged! There are varying levels of experience on both lists so patience and politeness are encouraged (and please stay on topic.) + +[[irc]] +=== Internet Relay Chat (IRC) + +For real-time questions and discussions, use the `#hbase` IRC channel on the link:https://freenode.net/[FreeNode] IRC network. +FreeNode offers a web-based client, but most people prefer a native client, and several clients are available for each operating system. + +=== Jira + +Check for existing issues in link:https://issues.apache.org/jira/browse/HBASE[Jira]. +If it's either a new feature request, enhancement, or a bug, file a ticket. + +To check for existing issues which you can tackle as a beginner, search for link:https://issues.apache.org/jira/issues/?jql=project%20%3D%20HBASE%20AND%20labels%20in%20(beginner)[issues in JIRA tagged with the label 'beginner']. + +* .JIRA PrioritiesBlocker: Should only be used if the issue WILL cause data loss or cluster instability reliably. +* Critical: The issue described can cause data loss or cluster instability in some cases. +* Major: Important but not tragic issues, like updates to the client API that will add a lot of much-needed functionality or significant bugs that need to be fixed but that don't cause data loss. +* Minor: Useful enhancements and annoying but not damaging bugs. +* Trivial: Useful enhancements but generally cosmetic. + +.Code Blocks in Jira Comments +==== +A commonly used macro in Jira is {code}. Everything inside the tags is preformatted, as in this example. + +[source] +---- + +{code} +code snippet +{code} +---- +==== + +[[repos]] +== Apache HBase Repositories + +There are two different repositories for Apache HBase: Subversion (SVN) and Git. +GIT is our repository of record for all but the Apache HBase website. +We used to be on SVN. +We migrated. +See link:https://issues.apache.org/jira/browse/INFRA-7768[Migrate Apache HBase SVN Repos to Git]. +Updating hbase.apache.org still requires use of SVN (See <>). See link:http://hbase.apache.org/source-repository.html[Source Code + Management] page for contributor and committer links or seach for HBase on the link:http://git.apache.org/[Apache Git] page. + +== IDEs + +=== Eclipse + +[[eclipse.code.formatting]] +==== Code Formatting + +Under the _dev-support/_ folder, you will find _hbase_eclipse_formatter.xml_. +We encourage you to have this formatter in place in eclipse when editing HBase code. + +.Procedure: Load the HBase Formatter Into Eclipse +. Open the menu item. +. In Preferences, click the menu item. +. Click btn:[Import] and browse to the location of the _hbase_eclipse_formatter.xml_ file, which is in the _dev-support/_ directory. + Click btn:[Apply]. +. Still in Preferences, click . + Be sure the following options are selected: ++ +* Perform the selected actions on save +* Format source code +* Format edited lines ++ +Click btn:[Apply]. +Close all dialog boxes and return to the main window. + + +In addition to the automatic formatting, make sure you follow the style guidelines explained in <> + +Also, no `@author` tags - that's a rule. +Quality Javadoc comments are appreciated. +And include the Apache license. + +[[eclipse.git.plugin]] +==== Eclipse Git Plugin + +If you cloned the project via git, download and install the Git plugin (EGit). Attach to your local git repo (via the [label]#Git Repositories# window) and you'll be able to see file revision history, generate patches, etc. + +[[eclipse.maven.setup]] +==== HBase Project Setup in Eclipse using `m2eclipse` + +The easiest way is to use the +m2eclipse+ plugin for Eclipse. +Eclipse Indigo or newer includes +m2eclipse+, or you can download it from link:http://www.eclipse.org/m2e//. It provides Maven integration for Eclipse, and even lets you use the direct Maven commands from within Eclipse to compile and test your project. + +To import the project, click and select the HBase root directory. `m2eclipse` locates all the hbase modules for you. + +If you install +m2eclipse+ and import HBase in your workspace, do the following to fix your eclipse Build Path. + +. Remove _target_ folder +. Add _target/generated-jamon_ and _target/generated-sources/java_ folders. +. Remove from your Build Path the exclusions on the _src/main/resources_ and _src/test/resources_ to avoid error message in the console, such as the following: ++ +---- +Failed to execute goal +org.apache.maven.plugins:maven-antrun-plugin:1.6:run (default) on project hbase: +'An Ant BuildException has occured: Replace: source file .../target/classes/hbase-default.xml +doesn't exist +---- ++ +This will also reduce the eclipse build cycles and make your life easier when developing. + + +[[eclipse.commandline]] +==== HBase Project Setup in Eclipse Using the Command Line + +Instead of using `m2eclipse`, you can generate the Eclipse files from the command line. + +. First, run the following command, which builds HBase. + You only need to do this once. ++ +[source,bourne] +---- +mvn clean install -DskipTests +---- + +. Close Eclipse, and execute the following command from the terminal, in your local HBase project directory, to generate new _.project_ and _.classpath_ files. ++ +[source,bourne] +---- +mvn eclipse:eclipse +---- + +. Reopen Eclipse and import the _.project_ file in the HBase directory to a workspace. + +[[eclipse.maven.class]] +==== Maven Classpath Variable + +The `$M2_REPO` classpath variable needs to be set up for the project. +This needs to be set to your local Maven repository, which is usually _~/.m2/repository_ + +If this classpath variable is not configured, you will see compile errors in Eclipse like this: + +---- + +Description Resource Path Location Type +The project cannot be built until build path errors are resolved hbase Unknown Java Problem +Unbound classpath variable: 'M2_REPO/asm/asm/3.1/asm-3.1.jar' in project 'hbase' hbase Build path Build Path Problem +Unbound classpath variable: 'M2_REPO/com/google/guava/guava/r09/guava-r09.jar' in project 'hbase' hbase Build path Build Path Problem +Unbound classpath variable: 'M2_REPO/com/google/protobuf/protobuf-java/2.3.0/protobuf-java-2.3.0.jar' in project 'hbase' hbase Build path Build Path Problem Unbound classpath variable: +---- + +[[eclipse.issues]] +==== Eclipse Known Issues + +Eclipse will currently complain about _Bytes.java_. +It is not possible to turn these errors off. + +---- + +Description Resource Path Location Type +Access restriction: The method arrayBaseOffset(Class) from the type Unsafe is not accessible due to restriction on required library /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar Bytes.java /hbase/src/main/java/org/apache/hadoop/hbase/util line 1061 Java Problem +Access restriction: The method arrayIndexScale(Class) from the type Unsafe is not accessible due to restriction on required library /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar Bytes.java /hbase/src/main/java/org/apache/hadoop/hbase/util line 1064 Java Problem +Access restriction: The method getLong(Object, long) from the type Unsafe is not accessible due to restriction on required library /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar Bytes.java /hbase/src/main/java/org/apache/hadoop/hbase/util line 1111 Java Problem +---- + +[[eclipse.more]] +==== Eclipse - More Information + +For additional information on setting up Eclipse for HBase development on Windows, see link:http://michaelmorello.blogspot.com/2011/09/hbase-subversion-eclipse-windows.html[Michael Morello's blog] on the topic. + +=== IntelliJ IDEA + +You can set up IntelliJ IDEA for similar functinoality as Eclipse. +Follow these steps. + +. Select +. You do not need to select a profile. + Be sure [label]#Maven project + required# is selected, and click btn:[Next]. +. Select the location for the JDK. + +.Using the HBase Formatter in IntelliJ IDEA +Using the Eclipse Code Formatter plugin for IntelliJ IDEA, you can import the HBase code formatter described in <>. + +=== Other IDEs + +It would be userful to mirror the <> set-up instructions for other IDEs. +If you would like to assist, please have a look at link:https://issues.apache.org/jira/browse/HBASE-11704[HBASE-11704]. + +[[build]] +== Building Apache HBase + +[[build.basic]] +=== Basic Compile + +HBase is compiled using Maven. +You must use Maven 3.x. +To check your Maven version, run the command +mvn -version+. + +.JDK Version Requirements +[NOTE] +==== +Starting with HBase 1.0 you must use Java 7 or later to build from source code. +See <> for more complete information about supported JDK versions. +==== + +[[maven.build.commands]] +==== Maven Build Commands + +All commands are executed from the local HBase project directory. + +===== Package + +The simplest command to compile HBase from its java source code is to use the `package` target, which builds JARs with the compiled files. + +[source,bourne] +---- +mvn package -DskipTests +---- + +Or, to clean up before compiling: + +[source,bourne] +---- +mvn clean package -DskipTests +---- + +With Eclipse set up as explained above in <>, you can also use the menu:Build[] command in Eclipse. +To create the full installable HBase package takes a little bit more work, so read on. + +[[maven.build.commands.compile]] +===== Compile + +The `compile` target does not create the JARs with the compiled files. + +[source,bourne] +---- +mvn compile +---- + +[source,bourne] +---- +mvn clean compile +---- + +===== Install + +To install the JARs in your _~/.m2/_ directory, use the `install` target. + +[source,bourne] +---- +mvn install +---- + +[source,bourne] +---- +mvn clean install +---- + +[source,bourne] +---- +mvn clean install -DskipTests +---- + +[[maven.build.commands.unitall]] +==== Running all or individual Unit Tests + +See the <> section in <> + +[[maven.build.hadoop]] +==== Building against various hadoop versions. + +As of 0.96, Apache HBase supports building against Apache Hadoop versions: 1.0.3, 2.0.0-alpha and 3.0.0-SNAPSHOT. +By default, in 0.96 and earlier, we will build with Hadoop-1.0.x. +As of 0.98, Hadoop 1.x is deprecated and Hadoop 2.x is the default. +To change the version to build against, add a hadoop.profile property when you invoke +mvn+: + +[source,bourne] +---- +mvn -Dhadoop.profile=1.0 ... +---- + +The above will build against whatever explicit hadoop 1.x version we have in our _pom.xml_ as our '1.0' version. +Tests may not all pass so you may need to pass `-DskipTests` unless you are inclined to fix the failing tests. + +.'dependencyManagement.dependencies.dependency.artifactId' fororg.apache.hbase:${compat.module}:test-jar with value '${compat.module}'does not match a valid id pattern +[NOTE] +==== +You will see ERRORs like the above title if you pass the _default_ profile; e.g. +if you pass +hadoop.profile=1.1+ when building 0.96 or +hadoop.profile=2.0+ when building hadoop 0.98; just drop the hadoop.profile stipulation in this case to get your build to run again. +This seems to be a maven pecularity that is probably fixable but we've not spent the time trying to figure it. +==== + +Similarly, for 3.0, you would just replace the profile value. +Note that Hadoop-3.0.0-SNAPSHOT does not currently have a deployed maven artificat - you will need to build and install your own in your local maven repository if you want to run against this profile. + +In earilier versions of Apache HBase, you can build against older versions of Apache Hadoop, notably, Hadoop 0.22.x and 0.23.x. +If you are running, for example HBase-0.94 and wanted to build against Hadoop 0.23.x, you would run with: + +[source,bourne] +---- +mvn -Dhadoop.profile=22 ... +---- + +[[build.protobuf]] +==== Build Protobuf + +You may need to change the protobuf definitions that reside in the _hbase-protocol_ module or other modules. + +The protobuf files are located in _hbase-protocol/src/main/protobuf_. +For the change to be effective, you will need to regenerate the classes. +You can use maven profile `compile-protobuf` to do this. + +[source,bourne] +---- +mvn compile -Pcompile-protobuf +---- + +You may also want to define `protoc.path` for the protoc binary, using the following command: + +[source,bourne] +---- + +mvn compile -Pcompile-protobuf -Dprotoc.path=/opt/local/bin/protoc +---- + +Read the _hbase-protocol/README.txt_ for more details. + +[[build.thrift]] +==== Build Thrift + +You may need to change the thrift definitions that reside in the _hbase-thrift_ module or other modules. + +The thrift files are located in _hbase-thrift/src/main/resources_. +For the change to be effective, you will need to regenerate the classes. +You can use maven profile `compile-thrift` to do this. + +[source,bourne] +---- +mvn compile -Pcompile-thrift +---- + +You may also want to define `thrift.path` for the thrift binary, using the following command: + +[source,bourne] +---- + + mvn compile -Pcompile-thrift -Dthrift.path=/opt/local/bin/thrift +---- + +==== Build a Tarball + +You can build a tarball without going through the release process described in <>, by running the following command: + +---- +mvn -DskipTests clean install && mvn -DskipTests package assembly:single +---- + +The distribution tarball is built in _hbase-assembly/target/hbase--bin.tar.gz_. + +You can install or deploy the tarball by having the assembly:single goal before install or deploy in the maven command: + +---- +mvn -DskipTests package assembly:single install +---- +---- +mvn -DskipTests package assembly:single deploy +---- + + +[[build.gotchas]] +==== Build Gotchas + +If you see `Unable to find resource 'VM_global_library.vm'`, ignore it. +Its not an error. +It is link:http://jira.codehaus.org/browse/MSITE-286[officially + ugly] though. + +[[build.snappy]] +==== Building in snappy compression support + +Pass `-Psnappy` to trigger the `hadoop-snappy` maven profile for building Google Snappy native libraries into HBase. +See also <> + +[[releasing]] +== Releasing Apache HBase + +.Building against HBase 1.x +[NOTE] +==== +HBase 1.x requires Java 7 to build. +See <> for Java requirements per HBase release. +==== + +=== Building against HBase 0.96-0.98 + +HBase 0.96.x will run on Hadoop 1.x or Hadoop 2.x. +HBase 0.98 still runs on both, but HBase 0.98 deprecates use of Hadoop 1. +HBase 1.x will _not_ run on Hadoop 1. +In the following procedures, we make a distinction between HBase 1.x builds and the awkward process involved building HBase 0.96/0.98 for either Hadoop 1 or Hadoop 2 targets. + +You must choose which Hadoop to build against. +It is not possible to build a single HBase binary that runs against both Hadoop 1 and Hadoop 2. +Hadoop is included in the build, because it is needed to run HBase in standalone mode. +Therefore, the set of modules included in the tarball changes, depending on the build target. +To determine which HBase you have, look at the HBase version. +The Hadoop version is embedded within it. + +Maven, our build system, natively does not allow a single product to be built against different dependencies. +Also, Maven cannot change the set of included modules and write out the correct _pom.xml_ files with appropriate dependencies, even using two build targets, one for Hadoop 1 and another for Hadoop 2. +A prerequisite step is required, which takes as input the current _pom.xml_s and generates Hadoop 1 or Hadoop 2 versions using a script in the _dev-tools/_ directory, called _generate-hadoopX-poms.sh_ where [replaceable]_X_ is either `1` or `2`. +You then reference these generated poms when you build. +For now, just be aware of the difference between HBase 1.x builds and those of HBase 0.96-0.98. +This difference is important to the build instructions. + +.Example _~/.m2/settings.xml_ File +==== +Publishing to maven requires you sign the artifacts you want to upload. +For the build to sign them for you, you a properly configured _settings.xml_ in your local repository under _.m2_, such as the following. + +[source,xml] +---- + + + + + apache.snapshots.https + YOUR_APACHE_ID + + YOUR_APACHE_PASSWORD + + + + + + apache.releases.https + YOUR_APACHE_ID + + YOUR_APACHE_PASSWORD + + + + + + apache-release + + YOUR_KEYNAME + + YOUR_KEY_PASSWORD + + + + + +---- +==== + +[[maven.release]] +=== Making a Release Candidate + +NOTE: These instructions are for building HBase 1.0.x. +For building earlier versions, the process is different. +See this section under the respective release documentation folders. + +.Point Releases +If you are making a point release (for example to quickly address a critical incompatability or security problem) off of a release branch instead of a development branch, the tagging instructions are slightly different. +I'll prefix those special steps with _Point Release Only_. + +.Before You Begin +Before you make a release candidate, do a practice run by deploying a snapshot. +Before you start, check to be sure recent builds have been passing for the branch from where you are going to take your release. +You should also have tried recent branch tips out on a cluster under load, perhaps by running the `hbase-it` integration test suite for a few hours to 'burn in' the near-candidate bits. + +.Point Release Only +[NOTE] +==== +At this point you should tag the previous release branch (ex: 0.96.1) with the new point release tag (e.g. +0.96.1.1 tag). Any commits with changes for the point release should be appled to the new tag. +==== + +The Hadoop link:http://wiki.apache.org/hadoop/HowToRelease[How To + Release] wiki page is used as a model for most of the instructions below, and may have more detail on particular sections, so it is worth review. + +.Specifying the Heap Space for Maven on OSX +[NOTE] +==== +On OSX, you may need to specify the heap space for Maven commands, by setting the `MAVEN_OPTS` variable to `-Xmx3g`. +You can prefix the variable to the Maven command, as in the following example: + +---- +MAVEN_OPTS="-Xmx2g" mvn package +---- + +You could also set this in an environment variable or alias in your shell. +==== + + +NOTE: The script _dev-support/make_rc.sh_ automates many of these steps. +It does not do the modification of the _CHANGES.txt_ for the release, the close of the staging repository in Apache Maven (human intervention is needed here), the checking of the produced artifacts to ensure they are 'good' -- e.g. +extracting the produced tarballs, verifying that they look right, then starting HBase and checking that everything is running correctly, then the signing and pushing of the tarballs to link:http://people.apache.org[people.apache.org]. +The script handles everything else, and comes in handy. + +.Procedure: Release Procedure +. Update the _CHANGES.txt_ file and the POM files. ++ +Update _CHANGES.txt_ with the changes since the last release. +Make sure the URL to the JIRA points to the proper location which lists fixes for this release. +Adjust the version in all the POM files appropriately. +If you are making a release candidate, you must remove the `-SNAPSHOT` label from all versions. +If you are running this receipe to publish a snapshot, you must keep the `-SNAPSHOT` suffix on the hbase version. +The link:http://mojo.codehaus.org/versions-maven-plugin/[Versions + Maven Plugin] can be of use here. +To set a version in all the many poms of the hbase multi-module project, use a command like the following: ++ +[source,bourne] +---- + +$ mvn clean org.codehaus.mojo:versions-maven-plugin:1.3.1:set -DnewVersion=0.96.0 +---- ++ +Checkin the _CHANGES.txt_ and any version changes. + +. Update the documentation. ++ +Update the documentation under _src/main/docbkx_. +This usually involves copying the latest from trunk and making version-particular adjustments to suit this release candidate version. + +. Build the source tarball. ++ +Now, build the source tarball. +This tarball is Hadoop-version-independent. +It is just the pure source code and documentation without a particular hadoop taint, etc. +Add the `-Prelease` profile when building. +It checks files for licenses and will fail the build if unlicensed files are present. ++ +[source,bourne] +---- + +$ mvn clean install -DskipTests assembly:single -Dassembly.file=hbase-assembly/src/main/assembly/src.xml -Prelease +---- ++ +Extract the tarball and make sure it looks good. +A good test for the src tarball being 'complete' is to see if you can build new tarballs from this source bundle. +If the source tarball is good, save it off to a _version directory_, a directory somewhere where you are collecting all of the tarballs you will publish as part of the release candidate. +For example if you were building a hbase-0.96.0 release candidate, you might call the directory _hbase-0.96.0RC0_. +Later you will publish this directory as our release candidate up on http://people.apache.org/~YOU. + +. Build the binary tarball. ++ +Next, build the binary tarball. +Add the `-Prelease` profile when building. +It checks files for licenses and will fail the build if unlicensed files are present. +Do it in two steps. ++ +* First install into the local repository ++ +[source,bourne] +---- + +$ mvn clean install -DskipTests -Prelease +---- + +* Next, generate documentation and assemble the tarball. ++ +[source,bourne] +---- + +$ mvn install -DskipTests site assembly:single -Prelease +---- + ++ +Otherwise, the build complains that hbase modules are not in the maven repository when you try to do it at once, especially on fresh repository. +It seems that you need the install goal in both steps. ++ +Extract the generated tarball and check it out. +Look at the documentation, see if it runs, etc. +If good, copy the tarball to the above mentioned _version directory_. + +. Create a new tag. ++ +.Point Release Only +[NOTE] +==== +The following step that creates a new tag can be skipped since you've already created the point release tag +==== ++ +Tag the release at this point since it looks good. +If you find an issue later, you can delete the tag and start over. +Release needs to be tagged for the next step. + +. Deploy to the Maven Repository. ++ +Next, deploy HBase to the Apache Maven repository, using the `apache-release` profile instead of the `release` profile when running the `mvn deploy` command. +This profile invokes the Apache pom referenced by our pom files, and also signs your artifacts published to Maven, as long as the _settings.xml_ is configured correctly, as described in <>. ++ +[source,bourne] +---- + +$ mvn deploy -DskipTests -Papache-release +---- ++ +This command copies all artifacts up to a temporary staging Apache mvn repository in an 'open' state. +More work needs to be done on these maven artifacts to make them generally available. ++ +We do not release HBase tarball to the Apache Maven repository. To avoid deploying the tarball, do not include the `assembly:single` goal in your `mvn deploy` command. Check the deployed artifacts as described in the next section. + +. Make the Release Candidate available. ++ +The artifacts are in the maven repository in the staging area in the 'open' state. +While in this 'open' state you can check out what you've published to make sure all is good. +To do this, login at link:http://repository.apache.org[repository.apache.org] using your Apache ID. +Find your artifacts in the staging repository. +Browse the content. +Make sure all artifacts made it up and that the poms look generally good. +If it checks out, 'close' the repo. +This will make the artifacts publically available. +You will receive an email with the URL to give out for the temporary staging repository for others to use trying out this new release candidate. +Include it in the email that announces the release candidate. +Folks will need to add this repo URL to their local poms or to their local _settings.xml_ file to pull the published release candidate artifacts. +If the published artifacts are incomplete or have problems, just delete the 'open' staged artifacts. ++ +.hbase-downstreamer +[NOTE] +==== +See the link:https://github.com/saintstack/hbase-downstreamer[hbase-downstreamer] test for a simple example of a project that is downstream of HBase an depends on it. +Check it out and run its simple test to make sure maven artifacts are properly deployed to the maven repository. +Be sure to edit the pom to point to the proper staging repository. +Make sure you are pulling from the repository when tests run and that you are not getting from your local repository, by either passing the `-U` flag or deleting your local repo content and check maven is pulling from remote out of the staging repository. +==== ++ +See link:http://www.apache.org/dev/publishing-maven-artifacts.html[Publishing Maven Artifacts] for some pointers on this maven staging process. ++ +NOTE: We no longer publish using the maven release plugin. +Instead we do +mvn deploy+. +It seems to give us a backdoor to maven release publishing. +If there is no _-SNAPSHOT_ on the version string, then we are 'deployed' to the apache maven repository staging directory from which we can publish URLs for candidates and later, if they pass, publish as release (if a _-SNAPSHOT_ on the version string, deploy will put the artifacts up into apache snapshot repos). ++ +If the HBase version ends in `-SNAPSHOT`, the artifacts go elsewhere. +They are put into the Apache snapshots repository directly and are immediately available. +Making a SNAPSHOT release, this is what you want to happen. + +. If you used the _make_rc.sh_ script instead of doing + the above manually, do your sanity checks now. ++ +At this stage, you have two tarballs in your 'version directory' and a set of artifacts in a staging area of the maven repository, in the 'closed' state. +These are publicly accessible in a temporary staging repository whose URL you should have gotten in an email. +The above mentioned script, _make_rc.sh_ does all of the above for you minus the check of the artifacts built, the closing of the staging repository up in maven, and the tagging of the release. +If you run the script, do your checks at this stage verifying the src and bin tarballs and checking what is up in staging using hbase-downstreamer project. +Tag before you start the build. +You can always delete it if the build goes haywire. + +. Sign, upload, and 'stage' your version directory to link:http://people.apache.org[people.apache.org] (TODO: + There is a new location to stage releases using svnpubsub. See + (link:https://issues.apache.org/jira/browse/HBASE-10554[HBASE-10554 Please delete old releases from mirroring system]). ++ +If all checks out, next put the _version directory_ up on link:http://people.apache.org[people.apache.org]. +You will need to sign and fingerprint them before you push them up. +In the _version directory_ run the following commands: ++ +[source,bourne] +---- + +$ for i in *.tar.gz; do echo $i; gpg --print-mds $i > $i.mds ; done +$ for i in *.tar.gz; do echo $i; gpg --armor --output $i.asc --detach-sig $i ; done +$ cd .. +# Presuming our 'version directory' is named 0.96.0RC0, now copy it up to people.apache.org. +$ rsync -av 0.96.0RC0 people.apache.org:public_html +---- ++ +Make sure the link:http://people.apache.org[people.apache.org] directory is showing and that the mvn repo URLs are good. +Announce the release candidate on the mailing list and call a vote. + + +[[maven.snapshot]] +=== Publishing a SNAPSHOT to maven + +Make sure your _settings.xml_ is set up properly, as in <>. +Make sure the hbase version includes `-SNAPSHOT` as a suffix. +Following is an example of publishing SNAPSHOTS of a release that had an hbase version of 0.96.0 in its poms. + +[source,bourne] +---- + + $ mvn clean install -DskipTests javadoc:aggregate site assembly:single -Prelease + $ mvn -DskipTests deploy -Papache-release +---- + +The _make_rc.sh_ script mentioned above (see <>) can help you publish `SNAPSHOTS`. +Make sure your `hbase.version` has a `-SNAPSHOT` suffix before running the script. +It will put a snapshot up into the apache snapshot repository for you. + +[[hbase.rc.voting]] +== Voting on Release Candidates + +Everyone is encouraged to try and vote on HBase release candidates. +Only the votes of PMC members are binding. +PMC members, please read this WIP doc on policy voting for a release candidate, link:https://github.com/rectang/asfrelease/blob/master/release.md[Release + Policy]. [quote]_Before casting +1 binding votes, individuals are required to + download the signed source code package onto their own hardware, compile it as + provided, and test the resulting executable on their own platform, along with also + validating cryptographic signatures and verifying that the package meets the + requirements of the ASF policy on releases._ Regards the latter, run +mvn apache-rat:check+ to verify all files are suitably licensed. +See link:http://search-hadoop.com/m/DHED4dhFaU[HBase, mail # dev - On + recent discussion clarifying ASF release policy]. +for how we arrived at this process. + +[[documentation]] +== Generating the HBase Reference Guide + +The manual is marked up using Asciidoc. +We then use the link:http://asciidoctor.org/docs/asciidoctor-maven-plugin/[Asciidoctor maven plugin] to transform the markup to html. +This plugin is run when you specify the +site+ goal as in when you run +mvn site+. +See <> for more information on building the documentation. + +[[hbase.org]] +== Updating link:http://hbase.apache.org[hbase.apache.org] + +[[hbase.org.site.contributing]] +=== Contributing to hbase.apache.org + +See <> for more information on contributing to the documentation or website. + +[[hbase.org.site.publishing]] +=== Publishing link:http://hbase.apache.org[hbase.apache.org] + +As of link:https://issues.apache.org/jira/browse/INFRA-5680[INFRA-5680 Migrate apache hbase website], to publish the website, build it using Maven, and then deploy it over a checkout of _https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk_ and check in your changes. +The script _dev-scripts/publish_hbase_website.sh_ is provided to automate this process and to be sure that stale files are removed from SVN. +Review the script even if you decide to publish the website manually. +Use the script as follows: + +---- +$ publish_hbase_website.sh -h +Usage: publish_hbase_website.sh [-i | -a] [-g ] [-s ] + -h Show this message + -i Prompts the user for input + -a Does not prompt the user. Potentially dangerous. + -g The local location of the HBase git repository + -s The local location of the HBase svn checkout + Either --interactive or --silent is required. + Edit the script to set default Git and SVN directories. +---- + +NOTE: The SVN commit takes a long time. + +[[hbase.tests]] +== Tests + +Developers, at a minimum, should familiarize themselves with the unit test detail; unit tests in HBase have a character not usually seen in other projects. + +This information is about unit tests for HBase itself. +For developing unit tests for your HBase applications, see <>. + +[[hbase.moduletests]] +=== Apache HBase Modules + +As of 0.96, Apache HBase is split into multiple modules. +This creates "interesting" rules for how and where tests are written. +If you are writing code for `hbase-server`, see <> for how to write your tests. +These tests can spin up a minicluster and will need to be categorized. +For any other module, for example `hbase-common`, the tests must be strict unit tests and just test the class under test - no use of the HBaseTestingUtility or minicluster is allowed (or even possible given the dependency tree). + +[[hbase.moduletest.shell]] +==== Testing the HBase Shell + +The HBase shell and its tests are predominantly written in jruby. +In order to make these tests run as a part of the standard build, there is a single JUnit test, `TestShell`, that takes care of loading the jruby implemented tests and running them. +You can run all of these tests from the top level with: + +[source,bourne] +---- + + mvn clean test -Dtest=TestShell +---- + +Alternatively, you may limit the shell tests that run using the system variable `shell.test`. +This value should specify the ruby literal equivalent of a particular test case by name. +For example, the tests that cover the shell commands for altering tables are contained in the test case `AdminAlterTableTest` and you can run them with: + +[source,bourne] +---- + + mvn clean test -Dtest=TestShell -Dshell.test=/AdminAlterTableTest/ +---- + +You may also use a link:http://docs.ruby-doc.com/docs/ProgrammingRuby/html/language.html#UJ[Ruby Regular Expression + literal] (in the `/pattern/` style) to select a set of test cases. +You can run all of the HBase admin related tests, including both the normal administration and the security administration, with the command: + +[source,bourne] +---- + + mvn clean test -Dtest=TestShell -Dshell.test=/.*Admin.*Test/ +---- + +In the event of a test failure, you can see details by examining the XML version of the surefire report results + +[source,bourne] +---- + + vim hbase-shell/target/surefire-reports/TEST-org.apache.hadoop.hbase.client.TestShell.xml +---- + +[[hbase.moduletest.run]] +==== Running Tests in other Modules + +If the module you are developing in has no other dependencies on other HBase modules, then you can cd into that module and just run: + +[source,bourne] +---- +mvn test +---- + +which will just run the tests IN THAT MODULE. +If there are other dependencies on other modules, then you will have run the command from the ROOT HBASE DIRECTORY. +This will run the tests in the other modules, unless you specify to skip the tests in that module. +For instance, to skip the tests in the hbase-server module, you would run: + +[source,bourne] +---- +mvn clean test -PskipServerTests +---- + +from the top level directory to run all the tests in modules other than hbase-server. +Note that you can specify to skip tests in multiple modules as well as just for a single module. +For example, to skip the tests in `hbase-server` and `hbase-common`, you would run: + +[source,bourne] +---- +mvn clean test -PskipServerTests -PskipCommonTests +---- + +Also, keep in mind that if you are running tests in the `hbase-server` module you will need to apply the maven profiles discussed in <> to get the tests to run properly. + +[[hbase.unittests]] +=== Unit Tests + +Apache HBase unit tests are subdivided into four categories: small, medium, large, and integration with corresponding JUnit link:http://www.junit.org/node/581[categories]: `SmallTests`, `MediumTests`, `LargeTests`, `IntegrationTests`. +JUnit categories are denoted using java annotations and look like this in your unit test code. + +[source,java] +---- +... +@Category(SmallTests.class) +public class TestHRegionInfo { + @Test + public void testCreateHRegionInfoName() throws Exception { + // ... + } +} +---- + +The above example shows how to mark a unit test as belonging to the `small` category. +All unit tests in HBase have a categorization. + +The first three categories, `small`, `medium`, and `large`, are for tests run when you type `$ mvn test`. +In other words, these three categorizations are for HBase unit tests. +The `integration` category is not for unit tests, but for integration tests. +These are run when you invoke `$ mvn verify`. +Integration tests are described in <>. + +HBase uses a patched maven surefire plugin and maven profiles to implement its unit test characterizations. + +Keep reading to figure which annotation of the set small, medium, and large to put on your new HBase unit test. + +.Categorizing Tests +Small Tests (((SmallTests))):: + _Small_ tests are executed in a shared JVM. + We put in this category all the tests that can be executed quickly in a shared JVM. + The maximum execution time for a small test is 15 seconds, and small tests should not use a (mini)cluster. + +Medium Tests (((MediumTests))):: + _Medium_ tests represent tests that must be executed before proposing a patch. + They are designed to run in less than 30 minutes altogether, and are quite stable in their results. + They are designed to last less than 50 seconds individually. + They can use a cluster, and each of them is executed in a separate JVM. + +Large Tests (((LargeTests))):: + _Large_ tests are everything else. + They are typically large-scale tests, regression tests for specific bugs, timeout tests, performance tests. + They are executed before a commit on the pre-integration machines. + They can be run on the developer machine as well. + +Integration Tests (((IntegrationTests))):: + _Integration_ tests are system level tests. + See <> for more info. + +[[hbase.unittests.cmds]] +=== Running tests + +[[hbase.unittests.cmds.test]] +==== Default: small and medium category tests + +Running `mvn test` will execute all small tests in a single JVM (no fork) and then medium tests in a separate JVM for each test instance. +Medium tests are NOT executed if there is an error in a small test. +Large tests are NOT executed. +There is one report for small tests, and one report for medium tests if they are executed. + +[[hbase.unittests.cmds.test.runalltests]] +==== Running all tests + +Running `mvn test -P runAllTests` will execute small tests in a single JVM then medium and large tests in a separate JVM for each test. +Medium and large tests are NOT executed if there is an error in a small test. +Large tests are NOT executed if there is an error in a small or medium test. +There is one report for small tests, and one report for medium and large tests if they are executed. + +[[hbase.unittests.cmds.test.localtests.mytest]] +==== Running a single test or all tests in a package + +To run an individual test, e.g. `MyTest`, rum `mvn test -Dtest=MyTest` You can also pass multiple, individual tests as a comma-delimited list: +[source,bash] +---- +mvn test -Dtest=MyTest1,MyTest2,MyTest3 +---- +You can also pass a package, which will run all tests under the package: +[source,bash] +---- +mvn test '-Dtest=org.apache.hadoop.hbase.client.*' +---- + +When `-Dtest` is specified, the `localTests` profile will be used. +It will use the official release of maven surefire, rather than our custom surefire plugin, and the old connector (The HBase build uses a patched version of the maven surefire plugin). Each junit test is executed in a separate JVM (A fork per test class). There is no parallelization when tests are running in this mode. +You will see a new message at the end of the -report: `"[INFO] Tests are skipped"`. +It's harmless. +However, you need to make sure the sum of `Tests run:` in the `Results:` section of test reports matching the number of tests you specified because no error will be reported when a non-existent test case is specified. + +[[hbase.unittests.cmds.test.profiles]] +==== Other test invocation permutations + +Running `mvn test -P runSmallTests` will execute "small" tests only, using a single JVM. + +Running `mvn test -P runMediumTests` will execute "medium" tests only, launching a new JVM for each test-class. + +Running `mvn test -P runLargeTests` will execute "large" tests only, launching a new JVM for each test-class. + +For convenience, you can run `mvn test -P runDevTests` to execute both small and medium tests, using a single JVM. + +[[hbase.unittests.test.faster]] +==== Running tests faster + +By default, `$ mvn test -P runAllTests` runs 5 tests in parallel. +It can be increased on a developer's machine. +Allowing that you can have 2 tests in parallel per core, and you need about 2GB of memory per test (at the extreme), if you have an 8 core, 24GB box, you can have 16 tests in parallel. +but the memory available limits it to 12 (24/2), To run all tests with 12 tests in parallel, do this: +mvn test -P runAllTests + -Dsurefire.secondPartForkCount=12+. +If using a version earlier than 2.0, do: +mvn test -P runAllTests -Dsurefire.secondPartThreadCount=12 + +. +To increase the speed, you can as well use a ramdisk. +You will need 2GB of memory to run all tests. +You will also need to delete the files between two test run. +The typical way to configure a ramdisk on Linux is: + +---- +$ sudo mkdir /ram2G +sudo mount -t tmpfs -o size=2048M tmpfs /ram2G +---- + +You can then use it to run all HBase tests on 2.0 with the command: + +---- +mvn test + -P runAllTests -Dsurefire.secondPartForkCount=12 + -Dtest.build.data.basedirectory=/ram2G +---- + +On earlier versions, use: + +---- +mvn test + -P runAllTests -Dsurefire.secondPartThreadCount=12 + -Dtest.build.data.basedirectory=/ram2G +---- + +[[hbase.unittests.cmds.test.hbasetests]] +==== +hbasetests.sh+ + +It's also possible to use the script +hbasetests.sh+. +This script runs the medium and large tests in parallel with two maven instances, and provides a single report. +This script does not use the hbase version of surefire so no parallelization is being done other than the two maven instances the script sets up. +It must be executed from the directory which contains the _pom.xml_. + +For example running +./dev-support/hbasetests.sh+ will execute small and medium tests. +Running +./dev-support/hbasetests.sh + runAllTests+ will execute all tests. +Running +./dev-support/hbasetests.sh replayFailed+ will rerun the failed tests a second time, in a separate jvm and without parallelisation. + +[[hbase.unittests.resource.checker]] +==== Test Resource Checker(((Test ResourceChecker))) + +A custom Maven SureFire plugin listener checks a number of resources before and after each HBase unit test runs and logs its findings at the end of the test output files which can be found in _target/surefire-reports_ per Maven module (Tests write test reports named for the test class into this directory. +Check the _*-out.txt_ files). The resources counted are the number of threads, the number of file descriptors, etc. +If the number has increased, it adds a _LEAK?_ comment in the logs. +As you can have an HBase instance running in the background, some threads can be deleted/created without any specific action in the test. +However, if the test does not work as expected, or if the test should not impact these resources, it's worth checking these log lines [computeroutput]+...hbase.ResourceChecker(157): before...+ and [computeroutput]+...hbase.ResourceChecker(157): after...+. +For example: + +---- +2012-09-26 09:22:15,315 INFO [pool-1-thread-1] +hbase.ResourceChecker(157): after: +regionserver.TestColumnSeeking#testReseeking Thread=65 (was 65), +OpenFileDescriptor=107 (was 107), MaxFileDescriptor=10240 (was 10240), +ConnectionCount=1 (was 1) +---- + +[[hbase.tests.writing]] +=== Writing Tests + +[[hbase.tests.rules]] +==== General rules + +* As much as possible, tests should be written as category small tests. +* All tests must be written to support parallel execution on the same machine, hence they should not use shared resources as fixed ports or fixed file names. +* Tests should not overlog. + More than 100 lines/second makes the logs complex to read and use i/o that are hence not available for the other tests. +* Tests can be written with `HBaseTestingUtility`. + This class offers helper functions to create a temp directory and do the cleanup, or to start a cluster. + +[[hbase.tests.categories]] +==== Categories and execution time + +* All tests must be categorized, if not they could be skipped. +* All tests should be written to be as fast as possible. +* Small category tests should last less than 15 seconds, and must not have any side effect. +* Medium category tests should last less than 50 seconds. +* Large category tests should last less than 3 minutes. + This should ensure a good parallelization for people using it, and ease the analysis when the test fails. + +[[hbase.tests.sleeps]] +==== Sleeps in tests + +Whenever possible, tests should not use [method]+Thread.sleep+, but rather waiting for the real event they need. +This is faster and clearer for the reader. +Tests should not do a [method]+Thread.sleep+ without testing an ending condition. +This allows understanding what the test is waiting for. +Moreover, the test will work whatever the machine performance is. +Sleep should be minimal to be as fast as possible. +Waiting for a variable should be done in a 40ms sleep loop. +Waiting for a socket operation should be done in a 200 ms sleep loop. + +[[hbase.tests.cluster]] +==== Tests using a cluster + +Tests using a HRegion do not have to start a cluster: A region can use the local file system. +Start/stopping a cluster cost around 10 seconds. +They should not be started per test method but per test class. +Started cluster must be shutdown using [method]+HBaseTestingUtility#shutdownMiniCluster+, which cleans the directories. +As most as possible, tests should use the default settings for the cluster. +When they don't, they should document it. +This will allow to share the cluster later. + +[[integration.tests]] +=== Integration Tests + +HBase integration/system tests are tests that are beyond HBase unit tests. +They are generally long-lasting, sizeable (the test can be asked to 1M rows or 1B rows), targetable (they can take configuration that will point them at the ready-made cluster they are to run against; integration tests do not include cluster start/stop code), and verifying success, integration tests rely on public APIs only; they do not attempt to examine server internals asserting success/fail. +Integration tests are what you would run when you need to more elaborate proofing of a release candidate beyond what unit tests can do. +They are not generally run on the Apache Continuous Integration build server, however, some sites opt to run integration tests as a part of their continuous testing on an actual cluster. + +Integration tests currently live under the _src/test_ directory in the hbase-it submodule and will match the regex: _**/IntegrationTest*.java_. +All integration tests are also annotated with `@Category(IntegrationTests.class)`. + +Integration tests can be run in two modes: using a mini cluster, or against an actual distributed cluster. +Maven failsafe is used to run the tests using the mini cluster. +IntegrationTestsDriver class is used for executing the tests against a distributed cluster. +Integration tests SHOULD NOT assume that they are running against a mini cluster, and SHOULD NOT use private API's to access cluster state. +To interact with the distributed or mini cluster uniformly, `IntegrationTestingUtility`, and `HBaseCluster` classes, and public client API's can be used. + +On a distributed cluster, integration tests that use ChaosMonkey or otherwise manipulate services thru cluster manager (e.g. +restart regionservers) use SSH to do it. +To run these, test process should be able to run commands on remote end, so ssh should be configured accordingly (for example, if HBase runs under hbase user in your cluster, you can set up passwordless ssh for that user and run the test also under it). To facilitate that, `hbase.it.clustermanager.ssh.user`, `hbase.it.clustermanager.ssh.opts` and `hbase.it.clustermanager.ssh.cmd` configuration settings can be used. +"User" is the remote user that cluster manager should use to perform ssh commands. +"Opts" contains additional options that are passed to SSH (for example, "-i /tmp/my-key"). Finally, if you have some custom environment setup, "cmd" is the override format for the entire tunnel (ssh) command. +The default string is {`/usr/bin/ssh %1$s %2$s%3$s%4$s "%5$s"`} and is a good starting point. +This is a standard Java format string with 5 arguments that is used to execute the remote command. +The argument 1 (%1$s) is SSH options set the via opts setting or via environment variable, 2 is SSH user name, 3 is "@" if username is set or "" otherwise, 4 is the target host name, and 5 is the logical command to execute (that may include single quotes, so don't use them). For example, if you run the tests under non-hbase user and want to ssh as that user and change to hbase on remote machine, you can use: +[source,bash] +---- +/usr/bin/ssh %1$s %2$s%3$s%4$s "su hbase - -c \"%5$s\"" +---- +That way, to kill RS (for example) integration tests may run: +[source,bash] +---- +{/usr/bin/ssh some-hostname "su hbase - -c \"ps aux | ... | kill ...\""} +---- +The command is logged in the test logs, so you can verify it is correct for your environment. + +To disable the running of Integration Tests, pass the following profile on the command line `-PskipIntegrationTests`. +For example, +[source] +---- +$ mvn clean install test -Dtest=TestZooKeeper -PskipIntegrationTests +---- + +[[maven.build.commands.integration.tests.mini]] +==== Running integration tests against mini cluster + +HBase 0.92 added a `verify` maven target. +Invoking it, for example by doing `mvn verify`, will run all the phases up to and including the verify phase via the maven link:http://maven.apache.org/plugins/maven-failsafe-plugin/[failsafe + plugin], running all the above mentioned HBase unit tests as well as tests that are in the HBase integration test group. +After you have completed +mvn install -DskipTests+ You can run just the integration tests by invoking: + +[source,bourne] +---- + +cd hbase-it +mvn verify +---- + +If you just want to run the integration tests in top-level, you need to run two commands. +First: +mvn failsafe:integration-test+ This actually runs ALL the integration tests. + +NOTE: This command will always output `BUILD SUCCESS` even if there are test failures. + +At this point, you could grep the output by hand looking for failed tests. +However, maven will do this for us; just use: +mvn + failsafe:verify+ The above command basically looks at all the test results (so don't remove the 'target' directory) for test failures and reports the results. + +[[maven.build.commands.integration.tests2]] +===== Running a subset of Integration tests + +This is very similar to how you specify running a subset of unit tests (see above), but use the property `it.test` instead of `test`. +To just run `IntegrationTestClassXYZ.java`, use: +mvn + failsafe:integration-test -Dit.test=IntegrationTestClassXYZ+ The next thing you might want to do is run groups of integration tests, say all integration tests that are named IntegrationTestClassX*.java: +mvn failsafe:integration-test -Dit.test=*ClassX*+ This runs everything that is an integration test that matches *ClassX*. This means anything matching: "**/IntegrationTest*ClassX*". You can also run multiple groups of integration tests using comma-delimited lists (similar to unit tests). Using a list of matches still supports full regex matching for each of the groups.This would look something like: +mvn + failsafe:integration-test -Dit.test=*ClassX*, *ClassY+ + +[[maven.build.commands.integration.tests.distributed]] +==== Running integration tests against distributed cluster + +If you have an already-setup HBase cluster, you can launch the integration tests by invoking the class `IntegrationTestsDriver`. +You may have to run test-compile first. +The configuration will be picked by the bin/hbase script. +[source,bourne] +---- +mvn test-compile +---- +Then launch the tests with: + +[source,bourne] +---- +bin/hbase [--config config_dir] org.apache.hadoop.hbase.IntegrationTestsDriver +---- + +Pass `-h` to get usage on this sweet tool. +Running the IntegrationTestsDriver without any argument will launch tests found under `hbase-it/src/test`, having `@Category(IntegrationTests.class)` annotation, and a name starting with `IntegrationTests`. +See the usage, by passing -h, to see how to filter test classes. +You can pass a regex which is checked against the full class name; so, part of class name can be used. +IntegrationTestsDriver uses Junit to run the tests. +Currently there is no support for running integration tests against a distributed cluster using maven (see link:https://issues.apache.org/jira/browse/HBASE-6201[HBASE-6201]). + +The tests interact with the distributed cluster by using the methods in the `DistributedHBaseCluster` (implementing `HBaseCluster`) class, which in turn uses a pluggable `ClusterManager`. +Concrete implementations provide actual functionality for carrying out deployment-specific and environment-dependent tasks (SSH, etc). The default `ClusterManager` is `HBaseClusterManager`, which uses SSH to remotely execute start/stop/kill/signal commands, and assumes some posix commands (ps, etc). Also assumes the user running the test has enough "power" to start/stop servers on the remote machines. +By default, it picks up `HBASE_SSH_OPTS`, `HBASE_HOME`, `HBASE_CONF_DIR` from the env, and uses `bin/hbase-daemon.sh` to carry out the actions. +Currently tarball deployments, deployments which uses _hbase-daemons.sh_, and link:http://incubator.apache.org/ambari/[Apache Ambari] deployments are supported. +_/etc/init.d/_ scripts are not supported for now, but it can be easily added. +For other deployment options, a ClusterManager can be implemented and plugged in. + +[[maven.build.commands.integration.tests.destructive]] +==== Destructive integration / system tests + +In 0.96, a tool named `ChaosMonkey` has been introduced. +It is modeled after the link:http://techblog.netflix.com/2012/07/chaos-monkey-released-into-wild.html[same-named tool by Netflix]. +Some of the tests use ChaosMonkey to simulate faults in the running cluster in the way of killing random servers, disconnecting servers, etc. +ChaosMonkey can also be used as a stand-alone tool to run a (misbehaving) policy while you are running other tests. + +ChaosMonkey defines Action's and Policy's. +Actions are sequences of events. +We have at least the following actions: + +* Restart active master (sleep 5 sec) +* Restart random regionserver (sleep 5 sec) +* Restart random regionserver (sleep 60 sec) +* Restart META regionserver (sleep 5 sec) +* Restart ROOT regionserver (sleep 5 sec) +* Batch restart of 50% of regionservers (sleep 5 sec) +* Rolling restart of 100% of regionservers (sleep 5 sec) + +Policies on the other hand are responsible for executing the actions based on a strategy. +The default policy is to execute a random action every minute based on predefined action weights. +ChaosMonkey executes predefined named policies until it is stopped. +More than one policy can be active at any time. + +To run ChaosMonkey as a standalone tool deploy your HBase cluster as usual. +ChaosMonkey uses the configuration from the bin/hbase script, thus no extra configuration needs to be done. +You can invoke the ChaosMonkey by running: + +[source,bourne] +---- +bin/hbase org.apache.hadoop.hbase.util.ChaosMonkey +---- + +This will output smt like: + +---- + +12/11/19 23:21:57 INFO util.ChaosMonkey: Using ChaosMonkey Policy: class org.apache.hadoop.hbase.util.ChaosMonkey$PeriodicRandomActionPolicy, period:60000 +12/11/19 23:21:57 INFO util.ChaosMonkey: Sleeping for 26953 to add jitter +12/11/19 23:22:24 INFO util.ChaosMonkey: Performing action: Restart active master +12/11/19 23:22:24 INFO util.ChaosMonkey: Killing master:master.example.com,60000,1353367210440 +12/11/19 23:22:24 INFO hbase.HBaseCluster: Aborting Master: master.example.com,60000,1353367210440 +12/11/19 23:22:24 INFO hbase.ClusterManager: Executing remote command: ps aux | grep master | grep -v grep | tr -s ' ' | cut -d ' ' -f2 | xargs kill -s SIGKILL , hostname:master.example.com +12/11/19 23:22:25 INFO hbase.ClusterManager: Executed remote command, exit code:0 , output: +12/11/19 23:22:25 INFO hbase.HBaseCluster: Waiting service:master to stop: master.example.com,60000,1353367210440 +12/11/19 23:22:25 INFO hbase.ClusterManager: Executing remote command: ps aux | grep master | grep -v grep | tr -s ' ' | cut -d ' ' -f2 , hostname:master.example.com +12/11/19 23:22:25 INFO hbase.ClusterManager: Executed remote command, exit code:0 , output: +12/11/19 23:22:25 INFO util.ChaosMonkey: Killed master server:master.example.com,60000,1353367210440 +12/11/19 23:22:25 INFO util.ChaosMonkey: Sleeping for:5000 +12/11/19 23:22:30 INFO util.ChaosMonkey: Starting master:master.example.com +12/11/19 23:22:30 INFO hbase.HBaseCluster: Starting Master on: master.example.com +12/11/19 23:22:30 INFO hbase.ClusterManager: Executing remote command: /homes/enis/code/hbase-0.94/bin/../bin/hbase-daemon.sh --config /homes/enis/code/hbase-0.94/bin/../conf start master , hostname:master.example.com +12/11/19 23:22:31 INFO hbase.ClusterManager: Executed remote command, exit code:0 , output:starting master, logging to /homes/enis/code/hbase-0.94/bin/../logs/hbase-enis-master-master.example.com.out +.... +12/11/19 23:22:33 INFO util.ChaosMonkey: Started master: master.example.com,60000,1353367210440 +12/11/19 23:22:33 INFO util.ChaosMonkey: Sleeping for:51321 +12/11/19 23:23:24 INFO util.ChaosMonkey: Performing action: Restart random region server +12/11/19 23:23:24 INFO util.ChaosMonkey: Killing region server:rs3.example.com,60020,1353367027826 +12/11/19 23:23:24 INFO hbase.HBaseCluster: Aborting RS: rs3.example.com,60020,1353367027826 +12/11/19 23:23:24 INFO hbase.ClusterManager: Executing remote command: ps aux | grep regionserver | grep -v grep | tr -s ' ' | cut -d ' ' -f2 | xargs kill -s SIGKILL , hostname:rs3.example.com +12/11/19 23:23:25 INFO hbase.ClusterManager: Executed remote command, exit code:0 , output: +12/11/19 23:23:25 INFO hbase.HBaseCluster: Waiting service:regionserver to stop: rs3.example.com,60020,1353367027826 +12/11/19 23:23:25 INFO hbase.ClusterManager: Executing remote command: ps aux | grep regionserver | grep -v grep | tr -s ' ' | cut -d ' ' -f2 , hostname:rs3.example.com +12/11/19 23:23:25 INFO hbase.ClusterManager: Executed remote command, exit code:0 , output: +12/11/19 23:23:25 INFO util.ChaosMonkey: Killed region server:rs3.example.com,60020,1353367027826. Reported num of rs:6 +12/11/19 23:23:25 INFO util.ChaosMonkey: Sleeping for:60000 +12/11/19 23:24:25 INFO util.ChaosMonkey: Starting region server:rs3.example.com +12/11/19 23:24:25 INFO hbase.HBaseCluster: Starting RS on: rs3.example.com +12/11/19 23:24:25 INFO hbase.ClusterManager: Executing remote command: /homes/enis/code/hbase-0.94/bin/../bin/hbase-daemon.sh --config /homes/enis/code/hbase-0.94/bin/../conf start regionserver , hostname:rs3.example.com +12/11/19 23:24:26 INFO hbase.ClusterManager: Executed remote command, exit code:0 , output:starting regionserver, logging to /homes/enis/code/hbase-0.94/bin/../logs/hbase-enis-regionserver-rs3.example.com.out + +12/11/19 23:24:27 INFO util.ChaosMonkey: Started region server:rs3.example.com,60020,1353367027826. Reported num of rs:6 +---- + +As you can see from the log, ChaosMonkey started the default PeriodicRandomActionPolicy, which is configured with all the available actions, and ran RestartActiveMaster and RestartRandomRs actions. +ChaosMonkey tool, if run from command line, will keep on running until the process is killed. + +[[chaos.monkey.properties]] +==== Passing individual Chaos Monkey per-test Settings/Properties + +Since HBase version 1.0.0 (link:https://issues.apache.org/jira/browse/HBASE-11348[HBASE-11348]), the chaos monkeys is used to run integration tests can be configured per test run. +Users can create a java properties file and and pass this to the chaos monkey with timing configurations. +The properties file needs to be in the HBase classpath. +The various properties that can be configured and their default values can be found listed in the `org.apache.hadoop.hbase.chaos.factories.MonkeyConstants` class. +If any chaos monkey configuration is missing from the property file, then the default values are assumed. +For example: + +[source,bourne] +---- + +$bin/hbase org.apache.hadoop.hbase.IntegrationTestIngest -m slowDeterministic -monkeyProps monkey.properties +---- + +The above command will start the integration tests and chaos monkey passing the properties file _monkey.properties_. +Here is an example chaos monkey file: + +[source] +---- + +sdm.action1.period=120000 +sdm.action2.period=40000 +move.regions.sleep.time=80000 +move.regions.max.time=1000000 +move.regions.sleep.time=80000 +batch.restart.rs.ratio=0.4f +---- + +[[developing]] +== Developer Guidelines + +=== Codelines + +Most development is done on the master branch, which is named `master` in the Git repository. +Previously, HBase used Subversion, in which the master branch was called `TRUNK`. +Branches exist for minor releases, and important features and bug fixes are often back-ported. + +=== Release Managers + +Each maintained release branch has a release manager, who volunteers to coordinate new features and bug fixes are backported to that release. +The release managers are link:https://hbase.apache.org/team-list.html[committers]. +If you would like your feature or bug fix to be included in a given release, communicate with that release manager. +If this list goes out of date or you can't reach the listed person, reach out to someone else on the list. + +NOTE: End-of-life releases are not included in this list. + +.Release Managers +[cols="1,1", options="header"] +|=== +| Release +| Release Manager +| 0.98 +| Andrew Purtell + +| 1.0 +| Enis Soztutar +|=== + +[[code.standards]] +=== Code Standards + +See <> and <>. + +==== Interface Classifications + +Interfaces are classified both by audience and by stability level. +These labels appear at the head of a class. +The conventions followed by HBase are inherited by its parent project, Hadoop. + +The following interface classifications are commonly used: + +.InterfaceAudience +`@InterfaceAudience.Public`:: + APIs for users and HBase applications. + These APIs will be deprecated through major versions of HBase. + +`@InterfaceAudience.Private`:: + APIs for HBase internals developers. + No guarantees on compatibility or availability in future versions. + Private interfaces do not need an `@InterfaceStability` classification. + +`@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)`:: + APIs for HBase coprocessor writers. + As of HBase 0.92/0.94/0.96/0.98 this api is still unstable. + No guarantees on compatibility with future versions. + +No `@InterfaceAudience` Classification:: + Packages without an `@InterfaceAudience` label are considered private. + Mark your new packages if publicly accessible. + +.Excluding Non-Public Interfaces from API Documentation +[NOTE] +==== +Only interfaces classified `@InterfaceAudience.Public` should be included in API documentation (Javadoc). Committers must add new package excludes `ExcludePackageNames` section of the _pom.xml_ for new packages which do not contain public classes. +==== + +.@InterfaceStability +`@InterfaceStability` is important for packages marked `@InterfaceAudience.Public`. + +`@InterfaceStability.Stable`:: + Public packages marked as stable cannot be changed without a deprecation path or a very good reason. + +`@InterfaceStability.Unstable`:: + Public packages marked as unstable can be changed without a deprecation path. + +`@InterfaceStability.Evolving`:: + Public packages marked as evolving may be changed, but it is discouraged. + +No `@InterfaceStability` Label:: + Public classes with no `@InterfaceStability` label are discouraged, and should be considered implicitly unstable. + +If you are unclear about how to mark packages, ask on the development list. + +[[common.patch.feedback]] +==== Code Formatting Conventions + +Please adhere to the following guidelines so that your patches can be reviewed more quickly. +These guidelines have been developed based upon common feedback on patches from new contributors. + +See the link:http://www.oracle.com/technetwork/java/index-135089.html[Code + Conventions for the Java Programming Language] for more information on coding conventions in Java. + +[[common.patch.feedback.space.invaders]] +===== Space Invaders + +Do not use extra spaces around brackets. +Use the second style, rather than the first. + +[source,java] +---- + +if ( foo.equals( bar ) ) { // don't do this +---- + +[source,java] +---- + +if (foo.equals(bar)) { +---- + +[source,java] +---- + +foo = barArray[ i ]; // don't do this +---- + +[source,java] +---- + +foo = barArray[i]; +---- + +[[common.patch.feedback.autogen]] +===== Auto Generated Code + +Auto-generated code in Eclipse often uses bad variable names such as `arg0`. +Use more informative variable names. +Use code like the second example here. + +[source,java] +---- + + public void readFields(DataInput arg0) throws IOException { // don't do this + foo = arg0.readUTF(); // don't do this +---- + +[source,java] +---- + + public void readFields(DataInput di) throws IOException { + foo = di.readUTF(); +---- + +[[common.patch.feedback.longlines]] +===== Long Lines + +Keep lines less than 100 characters. +You can configure your IDE to do this automatically. + +[source,java] +---- + +Bar bar = foo.veryLongMethodWithManyArguments(argument1, argument2, argument3, argument4, argument5, argument6, argument7, argument8, argument9); // don't do this +---- + +[source,java] +---- + +Bar bar = foo.veryLongMethodWithManyArguments( + argument1, argument2, argument3,argument4, argument5, argument6, argument7, argument8, argument9); +---- + +[[common.patch.feedback.trailingspaces]] +===== Trailing Spaces + +Trailing spaces are a common problem. +Be sure there is a line break after the end of your code, and avoid lines with nothing but whitespace. +This makes diffs more meaningful. +You can configure your IDE to help with this. + +[source,java] +---- + +Bar bar = foo.getBar(); <--- imagine there is an extra space(s) after the semicolon. +---- + +[[common.patch.feedback.javadoc]] +===== API Documentation (Javadoc) + +This is also a very common feedback item. +Don't forget Javadoc! + +Javadoc warnings are checked during precommit. +If the precommit tool gives you a '-1', please fix the javadoc issue. +Your patch won't be committed if it adds such warnings. + +[[common.patch.feedback.findbugs]] +===== Findbugs + +`Findbugs` is used to detect common bugs pattern. +It is checked during the precommit build by Apache's Jenkins. +If errors are found, please fix them. +You can run findbugs locally with +mvn + findbugs:findbugs+, which will generate the `findbugs` files locally. +Sometimes, you may have to write code smarter than `findbugs`. +You can annotate your code to tell `findbugs` you know what you're doing, by annotating your class with the following annotation: + +[source,java] +---- +@edu.umd.cs.findbugs.annotations.SuppressWarnings( +value="HE_EQUALS_USE_HASHCODE", +justification="I know what I'm doing") +---- + +It is important to use the Apache-licensed version of the annotations. + +[[common.patch.feedback.javadoc.defaults]] +===== Javadoc - Useless Defaults + +Don't just leave the @param arguments the way your IDE generated them.: + +[source,java] +---- + + /** + * + * @param bar <---- don't do this!!!! + * @return <---- or this!!!! + */ + public Foo getFoo(Bar bar); +---- + +Either add something descriptive to the @`param` and @`return` lines, or just remove them. +The preference is to add something descriptive and useful. + +[[common.patch.feedback.onething]] +===== One Thing At A Time, Folks + +If you submit a patch for one thing, don't do auto-reformatting or unrelated reformatting of code on a completely different area of code. + +Likewise, don't add unrelated cleanup or refactorings outside the scope of your Jira. + +[[common.patch.feedback.tests]] +===== Ambigious Unit Tests + +Make sure that you're clear about what you are testing in your unit tests and why. + +[[common.patch.feedback.writable]] +===== Implementing Writable + +.Applies pre-0.96 only +[NOTE] +==== +In 0.96, HBase moved to protocol buffers (protobufs). The below section on Writables applies to 0.94.x and previous, not to 0.96 and beyond. +==== + +Every class returned by RegionServers must implement the `Writable` interface. +If you are creating a new class that needs to implement this interface, do not forget the default constructor. + +[[design.invariants]] +=== Invariants + +We don't have many but what we have we list below. +All are subject to challenge of course but until then, please hold to the rules of the road. + +[[design.invariants.zk.data]] +==== No permanent state in ZooKeeper + +ZooKeeper state should transient (treat it like memory). If ZooKeeper state is deleted, hbase should be able to recover and essentially be in the same state. + +* .ExceptionsThere are currently a few exceptions that we need to fix around whether a table is enabled or disabled. +* Replication data is currently stored only in ZooKeeper. + Deleting ZooKeeper data related to replication may cause replication to be disabled. + Do not delete the replication tree, _/hbase/replication/_. ++ +WARNING: Replication may be disrupted and data loss may occur if you delete the replication tree (_/hbase/replication/_) from ZooKeeper. +Follow progress on this issue at link:https://issues.apache.org/jira/browse/HBASE-10295[HBASE-10295]. + + +[[run.insitu]] +=== Running In-Situ + +If you are developing Apache HBase, frequently it is useful to test your changes against a more-real cluster than what you find in unit tests. +In this case, HBase can be run directly from the source in local-mode. +All you need to do is run: + +[source,bourne] +---- +${HBASE_HOME}/bin/start-hbase.sh +---- + +This will spin up a full local-cluster, just as if you had packaged up HBase and installed it on your machine. + +Keep in mind that you will need to have installed HBase into your local maven repository for the in-situ cluster to work properly. +That is, you will need to run: + +[source,bourne] +---- +mvn clean install -DskipTests +---- + +to ensure that maven can find the correct classpath and dependencies. +Generally, the above command is just a good thing to try running first, if maven is acting oddly. + +[[add.metrics]] +=== Adding Metrics + +After adding a new feature a developer might want to add metrics. +HBase exposes metrics using the Hadoop Metrics 2 system, so adding a new metric involves exposing that metric to the hadoop system. +Unfortunately the API of metrics2 changed from hadoop 1 to hadoop 2. +In order to get around this a set of interfaces and implementations have to be loaded at runtime. +To get an in-depth look at the reasoning and structure of these classes you can read the blog post located link:https://blogs.apache.org/hbase/entry/migration_to_the_new_metrics[here]. +To add a metric to an existing MBean follow the short guide below: + +==== Add Metric name and Function to Hadoop Compat Interface. + +Inside of the source interface the corresponds to where the metrics are generated (eg MetricsMasterSource for things coming from HMaster) create new static strings for metric name and description. +Then add a new method that will be called to add new reading. + +==== Add the Implementation to Both Hadoop 1 and Hadoop 2 Compat modules. + +Inside of the implementation of the source (eg. +MetricsMasterSourceImpl in the above example) create a new histogram, counter, gauge, or stat in the init method. +Then in the method that was added to the interface wire up the parameter passed in to the histogram. + +Now add tests that make sure the data is correctly exported to the metrics 2 system. +For this the MetricsAssertHelper is provided. + +[[git.best.practices]] +=== Git Best Practices + +Use the correct method to create patches.:: + See <>. +Avoid git merges.:: + Use `git pull --rebase` or `git fetch` followed by `git rebase`. +Do not use `git push --force`.:: + If the push does not work, fix the problem or ask for help. + +Please contribute to this document if you think of other Git best practices. + +==== `rebase_all_git_branches.sh` + +The _dev-support/rebase_all_git_branches.sh_ script is provided to help keep your Git repository clean. +Use the `-h` parameter to get usage instructions. +The script automatically refreshes your tracking branches, attempts an automatic rebase of each local branch against its remote branch, and gives you the option to delete any branch which represents a closed `HBASE-` JIRA. +The script has one optional configuration option, the location of your Git directory. +You can set a default by editing the script. +Otherwise, you can pass the git directory manually by using the `-d` parameter, followed by an absolute or relative directory name, or even '.' for the current working directory. +The script checks the directory for sub-directory called _.git/_, before proceeding. + +[[submitting.patches]] +=== Submitting Patches + +HBase moved to GIT from SVN. +Until we develop our own documentation for how to contribute patches in our new GIT context, caveat the fact that we have a different branching model and that we don't currently do the merge practice described in the following, the link:http://accumulo.apache.org/git.html[accumulo doc + on how to contribute and develop] after our move to GIT is worth a read. +See also <>. + +If you are new to submitting patches to open source or new to submitting patches to Apache, start by reading the link:http://commons.apache.org/patches.html[On Contributing + Patches] page from link:http://commons.apache.org/[Apache + Commons Project]. +It provides a nice overview that applies equally to the Apache HBase Project. + +[[submitting.patches.create]] +==== Create Patch + +The script _dev-support/make_patch.sh_ has been provided to help you adhere to patch-creation guidelines. +The script has the following syntax: + +---- +$ make_patch.sh [-a] [-p ] +---- + +. If you do not pass a `patch_dir`, the script defaults to _~/patches/_. + If the `patch_dir` does not exist, it is created. +. By default, if an existing patch exists with the JIRA ID, the version of the new patch is incremented (_HBASE-XXXX-v3.patch_). If the `-a` option is passed, the version is not incremented, but the suffix `-addendum` is added (_HBASE-XXXX-v2-addendum.patch_). A second addendum to a given version is not supported. +. Detects whether you have more than one local commit on your branch. + If you do, the script offers you the chance to run +git rebase + -i+ to squash the changes into a single commit so that it can use +git format-patch+. + If you decline, the script uses +git diff+ instead. + The patch is saved in a configurable directory and is ready to be attached to your JIRA. + +* .Patching WorkflowAlways patch against the master branch first, even if you want to patch in another branch. + HBase committers always apply patches first to the master branch, and backport if necessary. +* Submit one single patch for a fix. + If necessary, squash local commits to merge local commits into a single one first. + See this link:http://stackoverflow.com/questions/5308816/how-to-use-git-merge-squash[Stack Overflow question] for more information about squashing commits. +* The patch should have the JIRA ID in the name. + If you are generating from a branch, include the target branch in the filename. + A common naming scheme for patches is: ++ +---- +HBASE-XXXX.patch +---- ++ +---- +HBASE-XXXX-0.90.patch # to denote that the patch is against branch 0.90 +---- ++ +---- +HBASE-XXXX-v3.patch # to denote that this is the third version of the patch +---- + +* To submit a patch, first create it using one of the methods in <>. + Next, attach the patch to the JIRA (one patch for the whole fix), using the dialog. + Next, click the btn:[Patch + Available] button, which triggers the Hudson job which checks the patch for validity. ++ +Please understand that not every patch may get committed, and that feedback will likely be provided on the patch. + +* If your patch is longer than a single screen, also attach a Review Board to the case. + See <>. +* If you need to revise your patch, leave the previous patch file(s) attached to the JIRA, and upload the new one, following the naming conventions in <>. + Cancel the Patch Available flag and then re-trigger it, by toggling the btn:[Patch Available] button in JIRA. + JIRA sorts attached files by the time they were attached, and has no problem with multiple attachments with the same name. + However, at times it is easier to refer to different version of a patch if you add `-vX`, where the [replaceable]_X_ is the version (starting with 2). +* If you need to submit your patch against multiple branches, rather than just master, name each version of the patch with the branch it is for, following the naming conventions in <>. + +.Methods to Create PatchesEclipse:: + Select the menu item. + +Git:: + `git format-patch` is preferred because it preserves commit messages. + Use `git rebase -i` first, to combine (squash) smaller commits into a single larger one. + +Subversion:: + +Make sure you review <> and <> for code style. +If your patch was generated incorrectly or your code does not adhere to the code formatting guidelines, you may be asked to redo some work. + +[[submitting.patches.tests]] +==== Unit Tests + +Yes, please. +Please try to include unit tests with every code patch (and especially new classes and large changes). Make sure unit tests pass locally before submitting the patch. + +Also, see <>. + +If you are creating a new unit test class, notice how other unit test classes have classification/sizing annotations at the top and a static method on the end. +Be sure to include these in any new unit test files you generate. +See <> for more on how the annotations work. + +==== Integration Tests + +Significant new features should provide an integration test in addition to unit tests, suitable for exercising the new feature at different points in its configuration space. + +==== ReviewBoard + +Patches larger than one screen, or patches that will be tricky to review, should go through link:http://reviews.apache.org[ReviewBoard]. + +.Procedure: Use ReviewBoard +. Register for an account if you don't already have one. + It does not use the credentials from link:http://issues.apache.org[issues.apache.org]. + Log in. +. Click [label]#New Review Request#. +. Choose the `hbase-git` repository. + Click Choose File to select the diff and optionally a parent diff. + Click btn:[Create + Review Request]. +. Fill in the fields as required. + At the minimum, fill in the [label]#Summary# and choose `hbase` as the [label]#Review Group#. + If you fill in the [label]#Bugs# field, the review board links back to the relevant JIRA. + The more fields you fill in, the better. + Click btn:[Publish] to make your review request public. + An email will be sent to everyone in the `hbase` group, to review the patch. +. Back in your JIRA, click , and paste in the URL of your ReviewBoard request. + This attaches the ReviewBoard to the JIRA, for easy access. +. To cancel the request, click . + +For more information on how to use ReviewBoard, see link:http://www.reviewboard.org/docs/manual/1.5/[the ReviewBoard + documentation]. + +==== Guide for HBase Committers + +===== New committers + +New committers are encouraged to first read Apache's generic committer documentation: + +* link:http://www.apache.org/dev/new-committers-guide.html[Apache New Committer Guide] +* link:http://www.apache.org/dev/committers.html[Apache Committer FAQ] + +===== Review + +HBase committers should, as often as possible, attempt to review patches submitted by others. +Ideally every submitted patch will get reviewed by a committer _within a few days_. +If a committer reviews a patch they have not authored, and believe it to be of sufficient quality, then they can commit the patch, otherwise the patch should be cancelled with a clear explanation for why it was rejected. + +The list of submitted patches is in the link:https://issues.apache.org/jira/secure/IssueNavigator.jspa?mode=hide&requestId=12312392[HBase Review Queue], which is ordered by time of last modification. +Committers should scan the list from top to bottom, looking for patches that they feel qualified to review and possibly commit. + +For non-trivial changes, it is required to get another committer to review your own patches before commit. +Use the btn:[Submit Patch] button in JIRA, just like other contributors, and then wait for a `+1` response from another committer before committing. + +===== Reject + +Patches which do not adhere to the guidelines in link:https://wiki.apache.org/hadoop/Hbase/HowToCommit/hadoop/Hbase/HowToContribute#[HowToContribute] and to the link:https://wiki.apache.org/hadoop/Hbase/HowToCommit/hadoop/CodeReviewChecklist#[code review checklist] should be rejected. +Committers should always be polite to contributors and try to instruct and encourage them to contribute better patches. +If a committer wishes to improve an unacceptable patch, then it should first be rejected, and a new patch should be attached by the committer for review. + +[[committing.patches]] +===== Commit + +Committers commit patches to the Apache HBase GIT repository. + +.Before you commit!!!! +[NOTE] +==== +Make sure your local configuration is correct, especially your identity and email. +Examine the output of the +$ git config + --list+ command and be sure it is correct. +See this GitHub article, link:https://help.github.com/articles/set-up-git[Set Up Git] if you need pointers. +==== + +When you commit a patch, please: + +. Include the Jira issue id in the commit message, along with a short description of the change and the name of the contributor if it is not you. + Be sure to get the issue ID right, as this causes Jira to link to the change in Git (use the issue's "All" tab to see these). +. Commit the patch to a new branch based off master or other intended branch. + It's a good idea to call this branch by the JIRA ID. + Then check out the relevant target branch where you want to commit, make sure your local branch has all remote changes, by doing a +git pull --rebase+ or another similar command, cherry-pick the change into each relevant branch (such as master), and do +git push + +. ++ +WARNING: If you do not have all remote changes, the push will fail. +If the push fails for any reason, fix the problem or ask for help. +Do not do a +git push --force+. ++ +Before you can commit a patch, you need to determine how the patch was created. +The instructions and preferences around the way to create patches have changed, and there will be a transition periond. ++ +* .Determine How a Patch Was CreatedIf the first few lines of the patch look like the headers of an email, with a From, Date, and Subject, it was created using +git format-patch+. + This is the preference, because you can reuse the submitter's commit message. + If the commit message is not appropriate, you can still use the commit, then run the command +git + rebase -i origin/master+, and squash and reword as appropriate. +* If the first line of the patch looks similar to the following, it was created using +git diff+ without `--no-prefix`. + This is acceptable too. + Notice the `a` and `b` in front of the file names. + This is the indication that the patch was not created with `--no-prefix`. ++ +---- +diff --git a/src/main/docbkx/developer.xml b/src/main/docbkx/developer.xml +---- + +* If the first line of the patch looks similar to the following (without the `a` and `b`), the patch was created with +git diff --no-prefix+ and you need to add `-p0` to the +git apply+ command below. ++ +---- +diff --git src/main/docbkx/developer.xml src/main/docbkx/developer.xml +---- + ++ +.Example of Committing a Patch +==== +One thing you will notice with these examples is that there are a lot of +git pull+ commands. +The only command that actually writes anything to the remote repository is +git push+, and you need to make absolutely sure you have the correct versions of everything and don't have any conflicts before pushing. +The extra +git + pull+ commands are usually redundant, but better safe than sorry. + +The first example shows how to apply a patch that was generated with +git format-patch+ and apply it to the `master` and `branch-1` branches. + +The directive to use +git format-patch+ rather than +git diff+, and not to use `--no-prefix`, is a new one. +See the second example for how to apply a patch created with +git + diff+, and educate the person who created the patch. + +---- +$ git checkout -b HBASE-XXXX +$ git am ~/Downloads/HBASE-XXXX-v2.patch +$ git checkout master +$ git pull --rebase +$ git cherry-pick +# Resolve conflicts if necessary or ask the submitter to do it +$ git pull --rebase # Better safe than sorry +$ git push origin master +$ git checkout branch-1 +$ git pull --rebase +$ git cherry-pick +# Resolve conflicts if necessary +$ git pull --rebase # Better safe than sorry +$ git push origin branch-1 +$ git branch -D HBASE-XXXX +---- + +This example shows how to commit a patch that was created using +git diff+ without `--no-prefix`. +If the patch was created with `--no-prefix`, add `-p0` to the +git apply+ command. + +---- +$ git apply ~/Downloads/HBASE-XXXX-v2.patch +$ git commit -m "HBASE-XXXX Really Good Code Fix (Joe Schmo)" -a # This extra step is needed for patches created with 'git diff' +$ git checkout master +$ git pull --rebase +$ git cherry-pick +# Resolve conflicts if necessary or ask the submitter to do it +$ git pull --rebase # Better safe than sorry +$ git push origin master +$ git checkout branch-1 +$ git pull --rebase +$ git cherry-pick +# Resolve conflicts if necessary or ask the submitter to do it +$ git pull --rebase # Better safe than sorry +$ git push origin branch-1 +$ git branch -D HBASE-XXXX +---- +==== + +. Resolve the issue as fixed, thanking the contributor. + Always set the "Fix Version" at this point, but please only set a single fix version for each branch where the change was committed, the earliest release in that branch in which the change will appear. + +====== Commit Message Format + +The commit message should contain the JIRA ID and a description of what the patch does. +The preferred commit message format is: + +---- + () +---- + +---- +HBASE-12345 Fix All The Things (jane@example.com) +---- + +If the contributor used +git format-patch+ to generate the patch, their commit message is in their patch and you can use that, but be sure the JIRA ID is at the front of the commit message, even if the contributor left it out. + +[[committer.amending.author]] +====== Add Amending-Author when a conflict cherrypick backporting + +We've established the practice of committing to trunk and then cherry picking back to branches whenever possible. +When there is a minor conflict we can fix it up and just proceed with the commit. +The resulting commit retains the original author. +When the amending author is different from the original committer, add notice of this at the end of the commit message as: `Amending-Author: Author + ` See discussion at link:http://search-hadoop.com/m/DHED4wHGYS[HBase, mail # dev + - [DISCUSSION] Best practice when amending commits cherry picked + from master to branch]. + +[[committer.tests]] +====== Committers are responsible for making sure commits do not break thebuild or tests + +If a committer commits a patch, it is their responsibility to make sure it passes the test suite. +It is helpful if contributors keep an eye out that their patch does not break the hbase build and/or tests, but ultimately, a contributor cannot be expected to be aware of all the particular vagaries and interconnections that occur in a project like HBase. +A committer should. + +[[git.patch.flow]] +====== Patching Etiquette + +In the thread link:http://search-hadoop.com/m/DHED4EiwOz[HBase, mail # dev - ANNOUNCEMENT: Git Migration In Progress (WAS => + Re: Git Migration)], it was agreed on the following patch flow + +. Develop and commit the patch against trunk/master first. +. Try to cherry-pick the patch when backporting if possible. +. If this does not work, manually commit the patch to the branch. + +====== Merge Commits + +Avoid merge commits, as they create problems in the git history. + +====== Committing Documentation + +See <>. + +==== Dialog + +Committers should hang out in the #hbase room on irc.freenode.net for real-time discussions. +However any substantive discussion (as with any off-list project-related discussion) should be re-iterated in Jira or on the developer list. + +==== Do not edit JIRA comments + +Misspellings and/or bad grammar is preferable to the disruption a JIRA comment edit causes: See the discussion at link:http://search-hadoop.com/?q=%5BReopened%5D+%28HBASE-451%29+Remove+HTableDescriptor+from+HRegionInfo&fc_project=HBase[Re:(HBASE-451) Remove HTableDescriptor from HRegionInfo] + +ifdef::backend-docbook[] +[index] +== Index +// Generated automatically by the DocBook toolchain. +endif::backend-docbook[] diff --git a/src/main/asciidoc/_chapters/hbase_apis.adoc b/src/main/asciidoc/_chapters/hbase_apis.adoc new file mode 100644 index 0000000..6d2777b --- /dev/null +++ b/src/main/asciidoc/_chapters/hbase_apis.adoc @@ -0,0 +1,135 @@ +//// +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//// + +[[hbase_apis]] += Apache HBase APIs +:doctype: book +:numbered: +:toc: left +:icons: font +:experimental: + +This chapter provides information about performing operations using HBase native APIs. +This information is not exhaustive, and provides a quick reference in addition to the link:http://hbase.apache.org/apidocs/index.html[User API Reference]. +The examples here are not comprehensive or complete, and should be used for purposes of illustration only. + +Apache HBase also works with multiple external APIs. +See <> for more information. + +== Examples + +.Create, modify and delete a Table Using Java +==== + +[source,java] +---- +package com.example.hbase.admin; + +package util; + +import java.io.IOException; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hbase.HBaseConfiguration; +import org.apache.hadoop.hbase.HColumnDescriptor; +import org.apache.hadoop.hbase.HConstants; +import org.apache.hadoop.hbase.HTableDescriptor; +import org.apache.hadoop.hbase.TableName; +import org.apache.hadoop.hbase.client.Admin; +import org.apache.hadoop.hbase.client.Connection; +import org.apache.hadoop.hbase.client.ConnectionFactory; +import org.apache.hadoop.hbase.io.compress.Compression.Algorithm; + +public class Example { + + private static final String TABLE_NAME = "MY_TABLE_NAME_TOO"; + private static final String CF_DEFAULT = "DEFAULT_COLUMN_FAMILY"; + + public static void createOrOverwrite(Admin admin, HTableDescriptor table) throws IOException { + if (admin.tableExists(table.getTableName())) { + admin.disableTable(table.getTableName()); + admin.deleteTable(table.getTableName()); + } + admin.createTable(table); + } + + public static void createSchemaTables(Configuration config) throws IOException { + try (Connection connection = ConnectionFactory.createConnection(config); + Admin admin = connection.getAdmin()) { + + HTableDescriptor table = new HTableDescriptor(TableName.valueOf(TABLE_NAME)); + table.addFamily(new HColumnDescriptor(CF_DEFAULT).setCompressionType(Algorithm.SNAPPY)); + + System.out.print("Creating table. "); + createOrOverwrite(admin, table); + System.out.println(" Done."); + } + } + + public static void modifySchema (Configuration config) throws IOException { + try (Connection connection = ConnectionFactory.createConnection(config); + Admin admin = connection.getAdmin()) { + + TableName tableName = TableName.valueOf(TABLE_NAME); + if (admin.tableExists(tableName)) { + System.out.println("Table does not exist."); + System.exit(-1); + } + + HTableDescriptor table = new HTableDescriptor(tableName); + + // Update existing table + HColumnDescriptor newColumn = new HColumnDescriptor("NEWCF"); + newColumn.setCompactionCompressionType(Algorithm.GZ); + newColumn.setMaxVersions(HConstants.ALL_VERSIONS); + admin.addColumn(tableName, newColumn); + + // Update existing column family + HColumnDescriptor existingColumn = new HColumnDescriptor(CF_DEFAULT); + existingColumn.setCompactionCompressionType(Algorithm.GZ); + existingColumn.setMaxVersions(HConstants.ALL_VERSIONS); + table.modifyFamily(existingColumn); + admin.modifyTable(tableName, table); + + // Disable an existing table + admin.disableTable(tableName); + + // Delete an existing column family + admin.deleteColumn(tableName, CF_DEFAULT.getBytes("UTF-8")); + + // Delete a table (Need to be disabled first) + admin.deleteTable(tableName); + } + } + + public static void main(String... args) throws IOException { + Configuration config = HBaseConfiguration.create(); + + //Add any necessary configuration files (hbase-site.xml, core-site.xml) + config.addResource(new Path(System.getenv("HBASE_CONF_DIR"), "hbase-site.xml")); + config.addResource(new Path(System.getenv("HADOOP_CONF_DIR"), "core-site.xml")); + createSchemaTables(config); + modifySchema(config); + } +} +---- +==== diff --git a/src/main/asciidoc/_chapters/mapreduce.adoc b/src/main/asciidoc/_chapters/mapreduce.adoc new file mode 100644 index 0000000..2a42af2 --- /dev/null +++ b/src/main/asciidoc/_chapters/mapreduce.adoc @@ -0,0 +1,596 @@ +//// +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//// + +[[mapreduce]] += HBase and MapReduce +:doctype: book +:numbered: +:toc: left +:icons: font +:experimental: + +Apache MapReduce is a software framework used to analyze large amounts of data, and is the framework used most often with link:http://hadoop.apache.org/[Apache Hadoop]. +MapReduce itself is out of the scope of this document. +A good place to get started with MapReduce is http://hadoop.apache.org/docs/r2.6.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html. +MapReduce version 2 (MR2)is now part of link:http://hadoop.apache.org/docs/r2.3.0/hadoop-yarn/hadoop-yarn-site/[YARN]. + +This chapter discusses specific configuration steps you need to take to use MapReduce on data within HBase. +In addition, it discusses other interactions and issues between HBase and MapReduce jobs. + +.`mapred` and `mapreduce` +[NOTE] +==== +There are two mapreduce packages in HBase as in MapReduce itself: _org.apache.hadoop.hbase.mapred_ and _org.apache.hadoop.hbase.mapreduce_. +The former does old-style API and the latter the new style. +The latter has more facility though you can usually find an equivalent in the older package. +Pick the package that goes with your MapReduce deploy. +When in doubt or starting over, pick the _org.apache.hadoop.hbase.mapreduce_. +In the notes below, we refer to o.a.h.h.mapreduce but replace with the o.a.h.h.mapred if that is what you are using. +==== + +[[hbase.mapreduce.classpath]] +== HBase, MapReduce, and the CLASSPATH + +By default, MapReduce jobs deployed to a MapReduce cluster do not have access to either the HBase configuration under `$HBASE_CONF_DIR` or the HBase classes. + +To give the MapReduce jobs the access they need, you could add _hbase-site.xml_ to _$HADOOP_HOME/conf_ and add HBase jars to the _$HADOOP_HOME/lib_ directory. +You would then need to copy these changes across your cluster. Or you can edit _$HADOOP_HOME/conf/hadoop-env.sh_ and add them to the `HADOOP_CLASSPATH` variable. +However, this approach is not recommended because it will pollute your Hadoop install with HBase references. +It also requires you to restart the Hadoop cluster before Hadoop can use the HBase data. + +The recommended approach is to let HBase add its dependency jars itself and use `HADOOP_CLASSPATH` or `-libjars`. + +Since HBase 0.90.x, HBase adds its dependency JARs to the job configuration itself. +The dependencies only need to be available on the local `CLASSPATH`. +The following example runs the bundled HBase link:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/RowCounter.html[RowCounter] MapReduce job against a table named `usertable`. +If you have not set the environment variables expected in the command (the parts prefixed by a `$` sign and surrounded by curly braces), you can use the actual system paths instead. +Be sure to use the correct version of the HBase JAR for your system. +The backticks (``` symbols) cause ths shell to execute the sub-commands, setting the output of `hbase classpath` (the command to dump HBase CLASSPATH) to `HADOOP_CLASSPATH`. +This example assumes you use a BASH-compatible shell. + +[source,bash] +---- +$ HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase classpath` ${HADOOP_HOME}/bin/hadoop jar ${HBASE_HOME}/lib/hbase-server-VERSION.jar rowcounter usertable +---- + +When the command runs, internally, the HBase JAR finds the dependencies it needs for ZooKeeper, Guava, and its other dependencies on the passed `HADOOP_CLASSPATH` and adds the JARs to the MapReduce job configuration. +See the source at `TableMapReduceUtil#addDependencyJars(org.apache.hadoop.mapreduce.Job)` for how this is done. + +The command `hbase mapredcp` can also help you dump the CLASSPATH entries required by MapReduce, which are the same jars `TableMapReduceUtil#addDependencyJars` would add. +You can add them together with HBase conf directory to `HADOOP_CLASSPATH`. +For jobs that do not package their dependencies or call `TableMapReduceUtil#addDependencyJars`, the following command structure is necessary: + +[source,bash] +---- +$ HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp`:${HBASE_HOME}/conf hadoop jar MyApp.jar MyJobMainClass -libjars $(${HBASE_HOME}/bin/hbase mapredcp | tr ':' ',') ... +---- + +[NOTE] +==== +The example may not work if you are running HBase from its build directory rather than an installed location. +You may see an error like the following: + +---- +java.lang.RuntimeException: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.mapreduce.RowCounter$RowCounterMapper +---- + +If this occurs, try modifying the command as follows, so that it uses the HBase JARs from the _target/_ directory within the build environment. + +[source,bash] +---- +$ HADOOP_CLASSPATH=${HBASE_BUILD_HOME}/hbase-server/target/hbase-server-VERSION-SNAPSHOT.jar:`${HBASE_BUILD_HOME}/bin/hbase classpath` ${HADOOP_HOME}/bin/hadoop jar ${HBASE_BUILD_HOME}/hbase-server/target/hbase-server-VERSION-SNAPSHOT.jar rowcounter usertable +---- +==== + +.Notice to MapReduce users of HBase between 0.96.1 and 0.98.4 +[CAUTION] +==== +Some MapReduce jobs that use HBase fail to launch. +The symptom is an exception similar to the following: + +---- +Exception in thread "main" java.lang.IllegalAccessError: class + com.google.protobuf.ZeroCopyLiteralByteString cannot access its superclass + com.google.protobuf.LiteralByteString + at java.lang.ClassLoader.defineClass1(Native Method) + at java.lang.ClassLoader.defineClass(ClassLoader.java:792) + at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) + at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) + at java.net.URLClassLoader.access$100(URLClassLoader.java:71) + at java.net.URLClassLoader$1.run(URLClassLoader.java:361) + at java.net.URLClassLoader$1.run(URLClassLoader.java:355) + at java.security.AccessController.doPrivileged(Native Method) + at java.net.URLClassLoader.findClass(URLClassLoader.java:354) + at java.lang.ClassLoader.loadClass(ClassLoader.java:424) + at java.lang.ClassLoader.loadClass(ClassLoader.java:357) + at + org.apache.hadoop.hbase.protobuf.ProtobufUtil.toScan(ProtobufUtil.java:818) + at + org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.convertScanToString(TableMapReduceUtil.java:433) + at + org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initTableMapperJob(TableMapReduceUtil.java:186) + at + org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initTableMapperJob(TableMapReduceUtil.java:147) + at + org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initTableMapperJob(TableMapReduceUtil.java:270) + at + org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.initTableMapperJob(TableMapReduceUtil.java:100) +... +---- + +This is caused by an optimization introduced in link:https://issues.apache.org/jira/browse/HBASE-9867[HBASE-9867] that inadvertently introduced a classloader dependency. + +This affects both jobs using the `-libjars` option and "fat jar," those which package their runtime dependencies in a nested `lib` folder. + +In order to satisfy the new classloader requirements, `hbase-protocol.jar` must be included in Hadoop's classpath. +See <> for current recommendations for resolving classpath errors. +The following is included for historical purposes. + +This can be resolved system-wide by including a reference to the `hbase-protocol.jar` in Hadoop's lib directory, via a symlink or by copying the jar into the new location. + +This can also be achieved on a per-job launch basis by including it in the `HADOOP_CLASSPATH` environment variable at job submission time. +When launching jobs that package their dependencies, all three of the following job launching commands satisfy this requirement: + +[source,bash] +---- +$ HADOOP_CLASSPATH=/path/to/hbase-protocol.jar:/path/to/hbase/conf hadoop jar MyJob.jar MyJobMainClass +$ HADOOP_CLASSPATH=$(hbase mapredcp):/path/to/hbase/conf hadoop jar MyJob.jar MyJobMainClass +$ HADOOP_CLASSPATH=$(hbase classpath) hadoop jar MyJob.jar MyJobMainClass +---- + +For jars that do not package their dependencies, the following command structure is necessary: + +[source,bash] +---- +$ HADOOP_CLASSPATH=$(hbase mapredcp):/etc/hbase/conf hadoop jar MyApp.jar MyJobMainClass -libjars $(hbase mapredcp | tr ':' ',') ... +---- + +See also link:https://issues.apache.org/jira/browse/HBASE-10304[HBASE-10304] for further discussion of this issue. +==== + +== MapReduce Scan Caching + +TableMapReduceUtil now restores the option to set scanner caching (the number of rows which are cached before returning the result to the client) on the Scan object that is passed in. +This functionality was lost due to a bug in HBase 0.95 (link:https://issues.apache.org/jira/browse/HBASE-11558[HBASE-11558]), which is fixed for HBase 0.98.5 and 0.96.3. +The priority order for choosing the scanner caching is as follows: + +. Caching settings which are set on the scan object. +. Caching settings which are specified via the configuration option `hbase.client.scanner.caching`, which can either be set manually in _hbase-site.xml_ or via the helper method `TableMapReduceUtil.setScannerCaching()`. +. The default value `HConstants.DEFAULT_HBASE_CLIENT_SCANNER_CACHING`, which is set to `100`. + +Optimizing the caching settings is a balance between the time the client waits for a result and the number of sets of results the client needs to receive. +If the caching setting is too large, the client could end up waiting for a long time or the request could even time out. +If the setting is too small, the scan needs to return results in several pieces. +If you think of the scan as a shovel, a bigger cache setting is analogous to a bigger shovel, and a smaller cache setting is equivalent to more shoveling in order to fill the bucket. + +The list of priorities mentioned above allows you to set a reasonable default, and override it for specific operations. + +See the API documentation for link:https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Scan.html[Scan] for more details. + +== Bundled HBase MapReduce Jobs + +The HBase JAR also serves as a Driver for some bundled MapReduce jobs. +To learn about the bundled MapReduce jobs, run the following command. + +[source,bash] +---- +$ ${HADOOP_HOME}/bin/hadoop jar ${HBASE_HOME}/hbase-server-VERSION.jar +An example program must be given as the first argument. +Valid program names are: + copytable: Export a table from local cluster to peer cluster + completebulkload: Complete a bulk data load. + export: Write table data to HDFS. + import: Import data written by Export. + importtsv: Import data in TSV format. + rowcounter: Count rows in HBase table +---- + +Each of the valid program names are bundled MapReduce jobs. +To run one of the jobs, model your command after the following example. + +[source,bash] +---- +$ ${HADOOP_HOME}/bin/hadoop jar ${HBASE_HOME}/hbase-server-VERSION.jar rowcounter myTable +---- + +== HBase as a MapReduce Job Data Source and Data Sink + +HBase can be used as a data source, link:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormat.html[TableInputFormat], and data sink, link:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html[TableOutputFormat] or link:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/MultiTableOutputFormat.html[MultiTableOutputFormat], for MapReduce jobs. +Writing MapReduce jobs that read or write HBase, it is advisable to subclass link:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/TableMapper.html[TableMapper] and/or link:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/TableReducer.html[TableReducer]. +See the do-nothing pass-through classes link:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/IdentityTableMapper.html[IdentityTableMapper] and link:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/IdentityTableReducer.html[IdentityTableReducer] for basic usage. +For a more involved example, see link:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/RowCounter.html[RowCounter] or review the `org.apache.hadoop.hbase.mapreduce.TestTableMapReduce` unit test. + +If you run MapReduce jobs that use HBase as source or sink, need to specify source and sink table and column names in your configuration. + +When you read from HBase, the `TableInputFormat` requests the list of regions from HBase and makes a map, which is either a `map-per-region` or `mapreduce.job.maps` map, whichever is smaller. +If your job only has two maps, raise `mapreduce.job.maps` to a number greater than the number of regions. +Maps will run on the adjacent TaskTracker/NodeManager if you are running a TaskTracer/NodeManager and RegionServer per node. +When writing to HBase, it may make sense to avoid the Reduce step and write back into HBase from within your map. +This approach works when your job does not need the sort and collation that MapReduce does on the map-emitted data. +On insert, HBase 'sorts' so there is no point double-sorting (and shuffling data around your MapReduce cluster) unless you need to. +If you do not need the Reduce, your map might emit counts of records processed for reporting at the end of the job, or set the number of Reduces to zero and use TableOutputFormat. +If running the Reduce step makes sense in your case, you should typically use multiple reducers so that load is spread across the HBase cluster. + +A new HBase partitioner, the link:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/HRegionPartitioner.html[HRegionPartitioner], can run as many reducers the number of existing regions. +The HRegionPartitioner is suitable when your table is large and your upload will not greatly alter the number of existing regions upon completion. +Otherwise use the default partitioner. + +== Writing HFiles Directly During Bulk Import + +If you are importing into a new table, you can bypass the HBase API and write your content directly to the filesystem, formatted into HBase data files (HFiles). Your import will run faster, perhaps an order of magnitude faster. +For more on how this mechanism works, see <>. + +== RowCounter Example + +The included link:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/RowCounter.html[RowCounter] MapReduce job uses `TableInputFormat` and does a count of all rows in the specified table. +To run it, use the following command: + +[source,bash] +---- +$ ./bin/hadoop jar hbase-X.X.X.jar +---- + +This will invoke the HBase MapReduce Driver class. +Select `rowcounter` from the choice of jobs offered. +This will print rowcounter usage advice to standard output. +Specify the tablename, column to count, and output directory. +If you have classpath errors, see <>. + +[[splitter]] +== Map-Task Splitting + +[[splitter.default]] +=== The Default HBase MapReduce Splitter + +When link:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormat.html[TableInputFormat] is used to source an HBase table in a MapReduce job, its splitter will make a map task for each region of the table. +Thus, if there are 100 regions in the table, there will be 100 map-tasks for the job - regardless of how many column families are selected in the Scan. + +[[splitter.custom]] +=== Custom Splitters + +For those interested in implementing custom splitters, see the method `getSplits` in link:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.html[TableInputFormatBase]. +That is where the logic for map-task assignment resides. + +[[mapreduce.example]] +== HBase MapReduce Examples + +[[mapreduce.example.read]] +=== HBase MapReduce Read Example + +The following is an example of using HBase as a MapReduce source in read-only manner. +Specifically, there is a Mapper instance but no Reducer, and nothing is being emitted from the Mapper. +There job would be defined as follows... + +[source,java] +---- +Configuration config = HBaseConfiguration.create(); +Job job = new Job(config, "ExampleRead"); +job.setJarByClass(MyReadJob.class); // class that contains mapper + +Scan scan = new Scan(); +scan.setCaching(500); // 1 is the default in Scan, which will be bad for MapReduce jobs +scan.setCacheBlocks(false); // don't set to true for MR jobs +// set other scan attrs +... + +TableMapReduceUtil.initTableMapperJob( + tableName, // input HBase table name + scan, // Scan instance to control CF and attribute selection + MyMapper.class, // mapper + null, // mapper output key + null, // mapper output value + job); +job.setOutputFormatClass(NullOutputFormat.class); // because we aren't emitting anything from mapper + +boolean b = job.waitForCompletion(true); +if (!b) { + throw new IOException("error with job!"); +} +---- + +...and the mapper instance would extend link:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/TableMapper.html[TableMapper]... + +[source,java] +---- +public static class MyMapper extends TableMapper { + + public void map(ImmutableBytesWritable row, Result value, Context context) throws InterruptedException, IOException { + // process data for the row from the Result instance. + } +} +---- + +[[mapreduce.example.readwrite]] +=== HBase MapReduce Read/Write Example + +The following is an example of using HBase both as a source and as a sink with MapReduce. +This example will simply copy data from one table to another. + +[source,java] +---- +Configuration config = HBaseConfiguration.create(); +Job job = new Job(config,"ExampleReadWrite"); +job.setJarByClass(MyReadWriteJob.class); // class that contains mapper + +Scan scan = new Scan(); +scan.setCaching(500); // 1 is the default in Scan, which will be bad for MapReduce jobs +scan.setCacheBlocks(false); // don't set to true for MR jobs +// set other scan attrs + +TableMapReduceUtil.initTableMapperJob( + sourceTable, // input table + scan, // Scan instance to control CF and attribute selection + MyMapper.class, // mapper class + null, // mapper output key + null, // mapper output value + job); +TableMapReduceUtil.initTableReducerJob( + targetTable, // output table + null, // reducer class + job); +job.setNumReduceTasks(0); + +boolean b = job.waitForCompletion(true); +if (!b) { + throw new IOException("error with job!"); +} +---- + +An explanation is required of what `TableMapReduceUtil` is doing, especially with the reducer. link:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html[TableOutputFormat] is being used as the outputFormat class, and several parameters are being set on the config (e.g., `TableOutputFormat.OUTPUT_TABLE`), as well as setting the reducer output key to `ImmutableBytesWritable` and reducer value to `Writable`. +These could be set by the programmer on the job and conf, but `TableMapReduceUtil` tries to make things easier. + +The following is the example mapper, which will create a `Put` and matching the input `Result` and emit it. +Note: this is what the CopyTable utility does. + +[source,java] +---- +public static class MyMapper extends TableMapper { + + public void map(ImmutableBytesWritable row, Result value, Context context) throws IOException, InterruptedException { + // this example is just copying the data from the source table... + context.write(row, resultToPut(row,value)); + } + + private static Put resultToPut(ImmutableBytesWritable key, Result result) throws IOException { + Put put = new Put(key.get()); + for (KeyValue kv : result.raw()) { + put.add(kv); + } + return put; + } +} +---- + +There isn't actually a reducer step, so `TableOutputFormat` takes care of sending the `Put` to the target table. + +This is just an example, developers could choose not to use `TableOutputFormat` and connect to the target table themselves. + +[[mapreduce.example.readwrite.multi]] +=== HBase MapReduce Read/Write Example With Multi-Table Output + +TODO: example for `MultiTableOutputFormat`. + +[[mapreduce.example.summary]] +=== HBase MapReduce Summary to HBase Example + +The following example uses HBase as a MapReduce source and sink with a summarization step. +This example will count the number of distinct instances of a value in a table and write those summarized counts in another table. + +[source,java] +---- +Configuration config = HBaseConfiguration.create(); +Job job = new Job(config,"ExampleSummary"); +job.setJarByClass(MySummaryJob.class); // class that contains mapper and reducer + +Scan scan = new Scan(); +scan.setCaching(500); // 1 is the default in Scan, which will be bad for MapReduce jobs +scan.setCacheBlocks(false); // don't set to true for MR jobs +// set other scan attrs + +TableMapReduceUtil.initTableMapperJob( + sourceTable, // input table + scan, // Scan instance to control CF and attribute selection + MyMapper.class, // mapper class + Text.class, // mapper output key + IntWritable.class, // mapper output value + job); +TableMapReduceUtil.initTableReducerJob( + targetTable, // output table + MyTableReducer.class, // reducer class + job); +job.setNumReduceTasks(1); // at least one, adjust as required + +boolean b = job.waitForCompletion(true); +if (!b) { + throw new IOException("error with job!"); +} +---- + +In this example mapper a column with a String-value is chosen as the value to summarize upon. +This value is used as the key to emit from the mapper, and an `IntWritable` represents an instance counter. + +[source,java] +---- +public static class MyMapper extends TableMapper { + public static final byte[] CF = "cf".getBytes(); + public static final byte[] ATTR1 = "attr1".getBytes(); + + private final IntWritable ONE = new IntWritable(1); + private Text text = new Text(); + + public void map(ImmutableBytesWritable row, Result value, Context context) throws IOException, InterruptedException { + String val = new String(value.getValue(CF, ATTR1)); + text.set(val); // we can only emit Writables... + context.write(text, ONE); + } +} +---- + +In the reducer, the "ones" are counted (just like any other MR example that does this), and then emits a `Put`. + +[source,java] +---- +public static class MyTableReducer extends TableReducer { + public static final byte[] CF = "cf".getBytes(); + public static final byte[] COUNT = "count".getBytes(); + + public void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException { + int i = 0; + for (IntWritable val : values) { + i += val.get(); + } + Put put = new Put(Bytes.toBytes(key.toString())); + put.add(CF, COUNT, Bytes.toBytes(i)); + + context.write(null, put); + } +} +---- + +[[mapreduce.example.summary.file]] +=== HBase MapReduce Summary to File Example + +This very similar to the summary example above, with exception that this is using HBase as a MapReduce source but HDFS as the sink. +The differences are in the job setup and in the reducer. +The mapper remains the same. + +[source,java] +---- +Configuration config = HBaseConfiguration.create(); +Job job = new Job(config,"ExampleSummaryToFile"); +job.setJarByClass(MySummaryFileJob.class); // class that contains mapper and reducer + +Scan scan = new Scan(); +scan.setCaching(500); // 1 is the default in Scan, which will be bad for MapReduce jobs +scan.setCacheBlocks(false); // don't set to true for MR jobs +// set other scan attrs + +TableMapReduceUtil.initTableMapperJob( + sourceTable, // input table + scan, // Scan instance to control CF and attribute selection + MyMapper.class, // mapper class + Text.class, // mapper output key + IntWritable.class, // mapper output value + job); +job.setReducerClass(MyReducer.class); // reducer class +job.setNumReduceTasks(1); // at least one, adjust as required +FileOutputFormat.setOutputPath(job, new Path("/tmp/mr/mySummaryFile")); // adjust directories as required + +boolean b = job.waitForCompletion(true); +if (!b) { + throw new IOException("error with job!"); +} +---- + +As stated above, the previous Mapper can run unchanged with this example. +As for the Reducer, it is a "generic" Reducer instead of extending TableMapper and emitting Puts. + +[source,java] +---- +public static class MyReducer extends Reducer { + + public void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException { + int i = 0; + for (IntWritable val : values) { + i += val.get(); + } + context.write(key, new IntWritable(i)); + } +} +---- + +[[mapreduce.example.summary.noreducer]] +=== HBase MapReduce Summary to HBase Without Reducer + +It is also possible to perform summaries without a reducer - if you use HBase as the reducer. + +An HBase target table would need to exist for the job summary. +The Table method `incrementColumnValue` would be used to atomically increment values. +From a performance perspective, it might make sense to keep a Map of values with their values to be incremented for each map-task, and make one update per key at during the `cleanup` method of the mapper. +However, your mileage may vary depending on the number of rows to be processed and unique keys. + +In the end, the summary results are in HBase. + +[[mapreduce.example.summary.rdbms]] +=== HBase MapReduce Summary to RDBMS + +Sometimes it is more appropriate to generate summaries to an RDBMS. +For these cases, it is possible to generate summaries directly to an RDBMS via a custom reducer. +The `setup` method can connect to an RDBMS (the connection information can be passed via custom parameters in the context) and the cleanup method can close the connection. + +It is critical to understand that number of reducers for the job affects the summarization implementation, and you'll have to design this into your reducer. +Specifically, whether it is designed to run as a singleton (one reducer) or multiple reducers. +Neither is right or wrong, it depends on your use-case. +Recognize that the more reducers that are assigned to the job, the more simultaneous connections to the RDBMS will be created - this will scale, but only to a point. + +[source,java] +---- +public static class MyRdbmsReducer extends Reducer { + + private Connection c = null; + + public void setup(Context context) { + // create DB connection... + } + + public void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException { + // do summarization + // in this example the keys are Text, but this is just an example + } + + public void cleanup(Context context) { + // close db connection + } + +} +---- + +In the end, the summary results are written to your RDBMS table/s. + +[[mapreduce.htable.access]] +== Accessing Other HBase Tables in a MapReduce Job + +Although the framework currently allows one HBase table as input to a MapReduce job, other HBase tables can be accessed as lookup tables, etc., in a MapReduce job via creating an Table instance in the setup method of the Mapper. +[source,java] +---- +public class MyMapper extends TableMapper { + private Table myOtherTable; + + public void setup(Context context) { + // In here create a Connection to the cluster and save it or use the Connection + // from the existing table + myOtherTable = connection.getTable("myOtherTable"); + } + + public void map(ImmutableBytesWritable row, Result value, Context context) throws IOException, InterruptedException { + // process Result... + // use 'myOtherTable' for lookups + } +---- + +[[mapreduce.specex]] +== Speculative Execution + +It is generally advisable to turn off speculative execution for MapReduce jobs that use HBase as a source. +This can either be done on a per-Job basis through properties, on on the entire cluster. +Especially for longer running jobs, speculative execution will create duplicate map-tasks which will double-write your data to HBase; this is probably not what you want. + +See <> for more information. diff --git a/src/main/site/asciidoc/acid-semantics.adoc b/src/main/site/asciidoc/acid-semantics.adoc new file mode 100644 index 0000000..2df559a --- /dev/null +++ b/src/main/site/asciidoc/acid-semantics.adoc @@ -0,0 +1,114 @@ +//// + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +//// + += Apache HBase (TM) ACID Properties + +== About this Document + +Apache HBase (TM) is not an ACID compliant database. However, it does guarantee certain specific properties. + +This specification enumerates the ACID properties of HBase. + +== Definitions + +For the sake of common vocabulary, we define the following terms: +Atomicity:: + An operation is atomic if it either completes entirely or not at all. + +Consistency:: + All actions cause the table to transition from one valid state directly to another (eg a row will not disappear during an update, etc). + +Isolation:: + an operation is isolated if it appears to complete independently of any other concurrent transaction. + +Durability:: + Any update that reports "successful" to the client will not be lost. + +Visibility:: + An update is considered visible if any subsequent read will see the update as having been committed. + + +The terms _must_ and _may_ are used as specified by link:[RFC 2119]. + +In short, the word "must" implies that, if some case exists where the statement is not true, it is a bug. The word _may_ implies that, even if the guarantee is provided in a current release, users should not rely on it. + +== APIs to Consider +- Read APIs +* get +* scan +- Write APIs +* put +* batch put +* delete +- Combination (read-modify-write) APIs +* incrementColumnValue +* checkAndPut + +== Guarantees Provided + +.Atomicity +. All mutations are atomic within a row. Any put will either wholely succeed or wholely fail.footnoteref[Puts will either wholely succeed or wholely fail, provided that they are actually sent to the RegionServer. If the writebuffer is used, Puts will not be sent until the writebuffer is filled or it is explicitly flushed.] +.. An operation that returns a _success_ code has completely succeeded. +.. An operation that returns a _failure_ code has completely failed. +.. An operation that times out may have succeeded and may have failed. However, it will not have partially succeeded or failed. +. This is true even if the mutation crosses multiple column families within a row. +. APIs that mutate several rows will _not_ be atomic across the multiple rows. For example, a multiput that operates on rows 'a','b', and 'c' may return having mutated some but not all of the rows. In such cases, these APIs will return a list of success codes, each of which may be succeeded, failed, or timed out as described above. +. The checkAndPut API happens atomically like the typical _compareAndSet (CAS)_ operation found in many hardware architectures. +. The order of mutations is seen to happen in a well-defined order for each row, with no interleaving. For example, if one writer issues the mutation `a=1,b=1,c=1` and another writer issues the mutation `a=2,b=2,c=`, the row must either be `a=1,b=1,c=1` or `a=2,b=2,c=2` and must *not* be something like `a=1,b=2,c=1`. + +NOTE:This is not true _across rows_ for multirow batch mutations. + +== Consistency and Isolation +. All rows returned via any access API will consist of a complete row that existed at some point in the table's history. +. This is true across column families - i.e a get of a full row that occurs concurrent with some mutations 1,2,3,4,5 will return a complete row that existed at some point in time between mutation i and i+1 for some i between 1 and 5. +. The state of a row will only move forward through the history of edits to it. + +== Consistency of Scans +A scan is *not* a consistent view of a table. Scans do *not* exhibit _snapshot isolation_. + +Rather, scans have the following properties: +. Any row returned by the scan will be a consistent view (i.e. that version of the complete row existed at some point in time)footnoteref[consistency,A consistent view is not guaranteed intra-row scanning -- i.e. fetching a portion of a row in one RPC then going back to fetch another portion of the row in a subsequent RPC. Intra-row scanning happens when you set a limit on how many values to return per Scan#next (See link:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Scan.html#setBatch(int)"[Scan#setBatch(int)]).] +. A scan will always reflect a view of the data _at least as new as_ the beginning of the scan. This satisfies the visibility guarantees enumerated below. +.. For example, if client A writes data X and then communicates via a side channel to client B, any scans started by client B will contain data at least as new as X. +.. A scan _must_ reflect all mutations committed prior to the construction of the scanner, and _may_ reflect some mutations committed subsequent to the construction of the scanner. +.. Scans must include _all_ data written prior to the scan (except in the case where data is subsequently mutated, in which case it _may_ reflect the mutation) + +Those familiar with relational databases will recognize this isolation level as "read committed". + +NOTE: The guarantees listed above regarding scanner consistency are referring to "transaction commit time", not the "timestamp" field of each cell. That is to say, a scanner started at time _t_ may see edits with a timestamp value greater than _t_, if those edits were committed with a "forward dated" timestamp before the scanner was constructed. + +== Visibility + +. When a client receives a "success" response for any mutation, that mutation is immediately visible to both that client and any client with whom it later communicates through side channels.footnoteref[consistency] +. A row must never exhibit so-called "time-travel" properties. That is to say, if a series of mutations moves a row sequentially through a series of states, any sequence of concurrent reads will return a subsequence of those states. + +For example, if a row's cells are mutated using the `incrementColumnValue` API, a client must never see the value of any cell decrease. + +This is true regardless of which read API is used to read back the mutation. +. Any version of a cell that has been returned to a read operation is guaranteed to be durably stored. + +== Durability +. All visible data is also durable data. That is to say, a read will never return data that has not been made durable on disk.footnoteref[durability,In the context of Apache HBase, _durably on disk_; implies an `hflush()` call on the transaction log. This does not actually imply an `fsync()` to magnetic media, but rather just that the data has been written to the OS cache on all replicas of the log. In the case of a full datacenter power loss, it is possible that the edits are not truly durable.] +. Any operation that returns a "success" code (eg does not throw an exception) will be made durable.footnoteref[durability] +. Any operation that returns a "failure" code will not be made durable (subject to the Atomicity guarantees above). +. All reasonable failure scenarios will not affect any of the guarantees of this document. + +== Tunability + +All of the above guarantees must be possible within Apache HBase. For users who would like to trade off some guarantees for performance, HBase may offer several tuning options. For example: + +* Visibility may be tuned on a per-read basis to allow stale reads or time travel. +* Durability may be tuned to only flush data to disk on a periodic basis. + +== More Information + +For more information, see the link:book.html#client[client architecture] and link:book.html#datamodel[data model] sections in the Apache HBase Reference Guide. diff --git a/src/main/site/asciidoc/bulk-loads.adoc b/src/main/site/asciidoc/bulk-loads.adoc new file mode 100644 index 0000000..4dc463d --- /dev/null +++ b/src/main/site/asciidoc/bulk-loads.adoc @@ -0,0 +1,19 @@ +//// + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +//// + += Bulk Loads in Apache HBase (TM) + +This page has been retired. The contents have been moved to the link:book.html#arch.bulk.load[Bulk Loading] section in the Reference Guide. + diff --git a/src/main/site/asciidoc/cygwin.adoc b/src/main/site/asciidoc/cygwin.adoc new file mode 100644 index 0000000..bbb4b34 --- /dev/null +++ b/src/main/site/asciidoc/cygwin.adoc @@ -0,0 +1,193 @@ +//// + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +//// + + +== Installing Apache HBase (TM) on Windows using Cygwin + +== Introduction + +link:http://hbase.apache.org[Apache HBase (TM)] is a distributed, column-oriented store, modeled after Google's link:http://research.google.com/archive/bigtable.html[BigTable]. Apache HBase is built on top of link:http://hadoop.apache.org[Hadoop] for its link:http://hadoop.apache.org/mapreduce[MapReduce] link:http://hadoop.apache.org/hdfs[distributed file system] implementations. All these projects are open-source and part of the link:http://www.apache.org[Apache Software Foundation]. + +== Purpose + +This document explains the *intricacies* of running Apache HBase on Windows using Cygwin* as an all-in-one single-node installation for testing and development. The HBase link:http://hbase.apache.org/apidocs/overview-summary.html#overview_description[Overview] and link:book.html#getting_started[QuickStart] guides on the other hand go a long way in explaning how to setup link:http://hadoop.apache.org/hbase[HBase] in more complex deployment scenarios. + +== Installation + +For running Apache HBase on Windows, 3 technologies are required: +* Java +* Cygwin +* SSH + +The following paragraphs detail the installation of each of the aforementioned technologies. + +=== Java + +HBase depends on the link:http://java.sun.com/javase/6/[Java Platform, Standard Edition, 6 Release]. So the target system has to be provided with at least the Java Runtime Environment (JRE); however if the system will also be used for development, the Jave Development Kit (JDK) is preferred. You can download the latest versions for both from link:http://java.sun.com/javase/downloads/index.jsp[Sun's download page]. Installation is a simple GUI wizard that guides you through the process. + +=== Cygwin + +Cygwin is probably the oddest technology in this solution stack. It provides a dynamic link library that emulates most of a *nix environment on Windows. On top of that a whole bunch of the most common *nix tools are supplied. Combined, the DLL with the tools form a very *nix-alike environment on Windows. + +For installation, Cygwin provides the link:http://cygwin.com/setup.exe[`setup.exe` utility] that tracks the versions of all installed components on the target system and provides the mechanism for installing or updating everything from the mirror sites of Cygwin. + +To support installation, the `setup.exe` utility uses 2 directories on the target system. The *Root* directory for Cygwin (defaults to _C:\cygwin)_ which will become _/_ within the eventual Cygwin installation; and the *Local Package* directory (e.g. _C:\cygsetup_ that is the cache where `setup.exe`stores the packages before they are installed. The cache must not be the same folder as the Cygwin root. + +Perform following steps to install Cygwin, which are elaboratly detailed in the link:http://cygwin.com/cygwin-ug-net/setup-net.html[2nd chapter] of the link:http://cygwin.com/cygwin-ug-net/cygwin-ug-net.html[Cygwin User's Guide]. + +. Make sure you have `Administrator` privileges on the target system. +. Choose and create you Root and *Local Package* directories. A good suggestion is to use `C:\cygwin\root` and `C:\cygwin\setup` folders. +. Download the `setup.exe` utility and save it to the *Local Package* directory. Run the `setup.exe` utility. +.. Choose the `Install from Internet` option. +.. Choose your *Root* and *Local Package* folders. +.. Select an appropriate mirror. +.. Don't select any additional packages yet, as we only want to install Cygwin for now. +.. Wait for download and install. +.. Finish the installation. +. Optionally, you can now also add a shortcut to your Start menu pointing to the `setup.exe` utility in the *Local Package *folder. +. Add `CYGWIN_HOME` system-wide environment variable that points to your *Root* directory. +. Add `%CYGWIN_HOME%\bin` to the end of your `PATH` environment variable. +. Reboot the sytem after making changes to the environment variables otherwise the OS will not be able to find the Cygwin utilities. +. Test your installation by running your freshly created shortcuts or the `Cygwin.bat` command in the *Root* folder. You should end up in a terminal window that is running a link:http://www.gnu.org/software/bash/manual/bashref.html[Bash shell]. Test the shell by issuing following commands: +.. `cd /` should take you to thr *Root* directory in Cygwin. +.. The `LS` commands that should list all files and folders in the current directory. +.. Use the `exit` command to end the terminal. +. When needed, to *uninstall* Cygwin you can simply delete the *Root* and *Local Package* directory, and the *shortcuts* that were created during installation. + +=== SSH + +HBase (and Hadoop) rely on link:http://nl.wikipedia.org/wiki/Secure_Shell[*SSH*] for interprocess/-node *communication* and launching* remote commands*. SSH will be provisioned on the target system via Cygwin, which supports running Cygwin programs as *Windows services*! + +. Rerun the `*setup.exe*`* utility*. +. Leave all parameters as is, skipping through the wizard using the `Next` button until the `Select Packages` panel is shown. +. Maximize the window and click the `View` button to toggle to the list view, which is ordered alfabetically on `Package`, making it easier to find the packages we'll need. +. Select the following packages by clicking the status word (normally `Skip`) so it's marked for installation. Use the `Next `button to download and install the packages. +.. `OpenSSH` +.. `tcp_wrappers` +.. `diffutils` +.. `zlib` +. Wait for the install to complete and finish the installation. + +=== HBase + +Download the *latest release* of Apache HBase from link:http://www.apache.org/dyn/closer.cgi/hbase/. As the Apache HBase distributable is just a zipped archive, installation is as simple as unpacking the archive so it ends up in its final *installation* directory. Notice that HBase has to be installed in Cygwin and a good directory suggestion is to use `/usr/local/` (or [`*Root* directory]\usr\local` in Windows slang). You should end up with a `/usr/local/hbase-_versi` installation in Cygwin. + +This finishes installation. We go on with the configuration. + +== Configuration + +There are 3 parts left to configure: *Java, SSH and HBase* itself. Following paragraphs explain eacht topic in detail. + +=== Java + +One important thing to remember in shell scripting in general (i.e. *nix and Windows) is that managing, manipulating and assembling path names that contains spaces can be very hard, due to the need to escape and quote those characters and strings. So we try to stay away from spaces in path names. *nix environments can help us out here very easily by using *symbolic links*. + +. Create a link in `/usr/local` to the Java home directory by using the following command and substituting the name of your chosen Java environment: + +---- +LN -s /cygdrive/c/Program\ Files/Java/*_jre name_*/usr/local/*_jre name_* +---- +. Test your java installation by changing directories to your Java folder `CD /usr/local/_jre name_` and issueing the command `./bin/java -version`. This should output your version of the chosen JRE. + +=== SSH + +Configuring *SSH *is quite elaborate, but primarily a question of launching it by default as a* Windows service*. + +. On Windows Vista and above make sure you run the Cygwin shell with *elevated privileges*, by right-clicking on the shortcut an using `Run as Administrator`. +. First of all, we have to make sure the *rights on some crucial files* are correct. Use the commands underneath. You can verify all rights by using the `LS -L` command on the different files. Also, notice the auto-completion feature in the shell using `TAB` is extremely handy in these situations. +.. `chmod +r /etc/passwd` to make the passwords file readable for all +.. `chmod u+w /etc/passwd` to make the passwords file writable for the owner +.. `chmod +r /etc/group` to make the groups file readable for all +.. `chmod u+w /etc/group` to make the groups file writable for the owner +.. `chmod 755 /var` to make the var folder writable to owner and readable and executable to all +. Edit the */etc/hosts.allow* file using your favorite editor (why not VI in the shell!) and make sure the following two lines are in there before the `PARANOID` line: + +---- +ALL : localhost 127.0.0.1/32 : allow +ALL : [::1]/128 : allow +---- +. Next we have to *configure SSH* by using the script `ssh-host-config`. +.. If this script asks to overwrite an existing `/etc/ssh_config`, answer `yes`. +.. If this script asks to overwrite an existing `/etc/sshd_config`, answer `yes`. +.. If this script asks to use privilege separation, answer `yes`. +.. If this script asks to install `sshd` as a service, answer `yes`. Make sure you started your shell as Adminstrator! +.. If this script asks for the CYGWIN value, just `enter` as the default is `ntsec`. +.. If this script asks to create the `sshd` account, answer `yes`. +.. If this script asks to use a different user name as service account, answer `no` as the default will suffice. +.. If this script asks to create the `cyg_server` account, answer `yes`. Enter a password for the account. +. *Start the SSH service* using `net start sshd` or `cygrunsrv --start sshd`. Notice that `cygrunsrv` is the utility that make the process run as a Windows service. Confirm that you see a message stating that `the CYGWIN sshd service was started succesfully.` +. Harmonize Windows and Cygwin* user account* by using the commands: + +---- +mkpasswd -cl > /etc/passwd +mkgroup --local > /etc/group +---- +. Test *the installation of SSH: +.. Open a new Cygwin terminal. +.. Use the command `whoami` to verify your userID. +.. Issue an `ssh localhost` to connect to the system itself. +.. Answer `yes` when presented with the server's fingerprint. +.. Issue your password when prompted. +.. Test a few commands in the remote session +.. The `exit` command should take you back to your first shell in Cygwin. +. `Exit` should terminate the Cygwin shell. + +=== HBase + +If all previous configurations are working properly, we just need some tinkering at the *HBase config* files to properly resolve on Windows/Cygwin. All files and paths referenced here start from the HBase `[*installation* directory]` as working directory. + +. HBase uses the `./conf/*hbase-env.sh*` to configure its dependencies on the runtime environment. Copy and uncomment following lines just underneath their original, change them to fit your environemnt. They should read something like: + +---- +export JAVA_HOME=/usr/local/_jre name_ +export HBASE_IDENT_STRING=$HOSTNAME +---- +. HBase uses the _./conf/`*hbase-default.xml*`_ file for configuration. Some properties do not resolve to existing directories because the JVM runs on Windows. This is the major issue to keep in mind when working with Cygwin: within the shell all paths are *nix-alike, hence relative to the root `/`. However, every parameter that is to be consumed within the windows processes themself, need to be Windows settings, hence `C:\`-alike. Change following propeties in the configuration file, adjusting paths where necessary to conform with your own installation: +.. `hbase.rootdir` must read e.g. `file:///C:/cygwin/root/tmp/hbase/data` +.. `hbase.tmp.dir` must read `C:/cygwin/root/tmp/hbase/tmp` +.. `hbase.zookeeper.quorum` must read `127.0.0.1` because for some reason `localhost` doesn't seem to resolve properly on Cygwin. +. Make sure the configured `hbase.rootdir` and `hbase.tmp.dir` *directories exist* and have the proper* rights* set up e.g. by issuing a `chmod 777` on them. + +== Testing + +This should conclude the installation and configuration of Apache HBase on Windows using Cygwin. So it's time *to test it*. + +. Start a Cygwin* terminal*, if you haven't already. +. Change directory to HBase *installation* using `CD /usr/local/hbase-_version_`, preferably using auto-completion. +. *Start HBase* using the command `./bin/start-hbase.sh` +.. When prompted to accept the SSH fingerprint, answer `yes`. +.. When prompted, provide your password. Maybe multiple times. +.. When the command completes, the HBase server should have started. +.. However, to be absolutely certain, check the logs in the `./logs` directory for any exceptions. +. Next we *start the HBase shell* using the command `./bin/hbase shell` +. We run some simple *test commands* +.. Create a simple table using command `create 'test', 'data'` +.. Verify the table exists using the command `list` +.. Insert data into the table using e.g. + +---- +put 'test', 'row1', 'data:1', 'value1' +put 'test', 'row2', 'data:2', 'value2' +put 'test', 'row3', 'data:3', 'value3' +---- +.. List all rows in the table using the command `scan 'test'` that should list all the rows previously inserted. Notice how 3 new columns where added without changing the schema! +.. Finally we get rid of the table by issuing `disable 'test'` followed by `drop 'test'` and verified by `list` which should give an empty listing. +. *Leave the shell* by `exit` +. To *stop the HBase server* issue the `./bin/stop-hbase.sh` command. And wait for it to complete!!! Killing the process might corrupt your data on disk. +. In case of *problems*, +.. Verify the HBase logs in the `./logs` directory. +.. Try to fix the problem +.. Get help on the forums or IRC (`#hbase@freenode.net`). People are very active and keen to help out! +.. Stop and retest the server. + +== Conclusion + +Now your *HBase *server is running, *start coding* and build that next killer app on this particular, but scalable datastore! + diff --git a/src/main/site/asciidoc/export_control.adoc b/src/main/site/asciidoc/export_control.adoc new file mode 100644 index 0000000..4a4b2ae --- /dev/null +++ b/src/main/site/asciidoc/export_control.adoc @@ -0,0 +1,40 @@ +//// + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +//// + + += Export Control + +This distribution uses or includes cryptographic software. The country in +which you currently reside may have restrictions on the import, possession, +use, and/or re-export to another country, of encryption software. BEFORE +using any encryption software, please check your country's laws, regulations +and policies concerning the import, possession, or use, and re-export of +encryption software, to see if this is permitted. See the +link:http://www.wassenaar.org/[Wassenaar Arrangement] for more +information. + +The U.S. Government Department of Commerce, Bureau of Industry and Security +(BIS), has classified this software as Export Commodity Control Number (ECCN) +5D002.C.1, which includes information security software using or performing +cryptographic functions with asymmetric algorithms. The form and manner of this +Apache Software Foundation distribution makes it eligible for export under the +License Exception ENC Technology Software Unrestricted (TSU) exception (see the +BIS Export Administration Regulations, Section 740.13) for both object code and +source code. + +Apache HBase uses the built-in java cryptography libraries. See Oracle's +information regarding +link:http://www.oracle.com/us/products/export/export-regulations-345813.html[Java cryptographic export regulations] +for more details. \ No newline at end of file diff --git a/src/main/site/asciidoc/index.adoc b/src/main/site/asciidoc/index.adoc new file mode 100644 index 0000000..ac50fc8 --- /dev/null +++ b/src/main/site/asciidoc/index.adoc @@ -0,0 +1,71 @@ +//// + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +//// + += Apache HBase™ Home + +.Welcome to Apache HBase(TM) +link:http://www.apache.org/[Apache HBase(TM)] is the link:http://hadoop.apache.org[Hadoop] database, a distributed, scalable, big data store. + +.When Would I Use Apache HBase? +Use Apache HBase when you need random, realtime read/write access to your Big Data. + +This project's goal is the hosting of very large tables -- billions of rows X millions of columns -- atop clusters of commodity hardware. + +Apache HBase is an open-source, distributed, versioned, non-relational database modeled after Google's link:http://research.google.com/archive/bigtable.html[Bigtable: A Distributed Storage System for Structured Data] by Chang et al. + +Just as Bigtable leverages the distributed data storage provided by the Google File System, Apache HBase provides Bigtable-like capabilities on top of Hadoop and HDFS. + +.Features +- Linear and modular scalability. +- Strictly consistent reads and writes. +- Automatic and configurable sharding of tables +- Automatic failover support between RegionServers. +- Convenient base classes for backing Hadoop MapReduce jobs with Apache HBase tables. +- Easy to use Java API for client access. +- Block cache and Bloom Filters for real-time queries. +- Query predicate push down via server side Filters +- Thrift gateway and a REST-ful Web service that supports XML, Protobuf, and binary data encoding options +- Extensible jruby-based (JIRB) shell +- Support for exporting metrics via the Hadoop metrics subsystem to files or Ganglia; or via JMX + +.Where Can I Get More Information? +See the link:book.html#arch.overview[Architecture Overview], the link:book.html#faq[FAQ] and the other documentation links at the top! + +.Export Control +The HBase distribution includes cryptographic software. See the link:export_control.html[export control notice]. + +== News +Feb 17, 2015:: link:http://www.meetup.com/hbaseusergroup/events/219260093/[HBase meetup around Strata+Hadoop World] in San Jose + +January 15th, 2015:: link:http://www.meetup.com/hbaseusergroup/events/218744798/[HBase meetup @ AppDynamics] in San Francisco + +November 20th, 2014:: link:http://www.meetup.com/hbaseusergroup/events/205219992/[HBase meetup @ WANdisco] in San Ramon + +October 27th, 2014:: link:http://www.meetup.com/hbaseusergroup/events/207386102/[HBase Meetup @ Apple] in Cupertino + +October 15th, 2014:: link:http://www.meetup.com/HBase-NYC/events/207655552[HBase Meetup @ Google] on the night before Strata/HW in NYC + +September 25th, 2014:: link:http://www.meetup.com/hbaseusergroup/events/203173692/[HBase Meetup @ Continuuity] in Palo Alto + +August 28th, 2014:: link:http://www.meetup.com/hbaseusergroup/events/197773762/[HBase Meetup @ Sift Science] in San Francisco + +July 17th, 2014:: link:http://www.meetup.com/hbaseusergroup/events/190994082/[HBase Meetup @ HP] in Sunnyvale + +June 5th, 2014:: link:http://www.meetup.com/Hadoop-Summit-Community-San-Jose/events/179081342/[HBase BOF at Hadoop Summit], San Jose Convention Center + +May 5th, 2014:: link:http://www.hbasecon.com[HBaseCon2014] at the Hilton San Francisco on Union Square + +March 12th, 2014:: link:http://www.meetup.com/hbaseusergroup/events/160757912/[HBase Meetup @ Ancestry.com] in San Francisco + +View link:old_news.html[Old News] diff --git a/src/main/site/asciidoc/metrics.adoc b/src/main/site/asciidoc/metrics.adoc new file mode 100644 index 0000000..91b26af --- /dev/null +++ b/src/main/site/asciidoc/metrics.adoc @@ -0,0 +1,97 @@ +//// + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +//// + += Apache HBase (TM) Metrics + +== Introduction +Apache HBase (TM) emits Hadoop link:http://hadoop.apache.org/core/docs/current/api/org/apache/hadoop/metrics/package-summary.html[metrics]. + +== Setup + +First read up on Hadoop link:http://hadoop.apache.org/core/docs/current/api/org/apache/hadoop/metrics/package-summary.html[metrics]. + +If you are using ganglia, the link:http://wiki.apache.org/hadoop/GangliaMetrics[GangliaMetrics] wiki page is useful read. + +To have HBase emit metrics, edit `$HBASE_HOME/conf/hadoop-metrics.properties` and enable metric 'contexts' per plugin. As of this writing, hadoop supports *file* and *ganglia* plugins. Yes, the hbase metrics files is named hadoop-metrics rather than _hbase-metrics_ because currently at least the hadoop metrics system has the properties filename hardcoded. Per metrics _context_, comment out the NullContext and enable one or more plugins instead. + +If you enable the _hbase_ context, on regionservers you'll see total requests since last +metric emission, count of regions and storefiles as well as a count of memstore size. +On the master, you'll see a count of the cluster's requests. + +Enabling the _rpc_ context is good if you are interested in seeing +metrics on each hbase rpc method invocation (counts and time taken). + +The _jvm_ context is useful for long-term stats on running hbase jvms -- memory used, thread counts, etc. As of this writing, if more than one jvm is running emitting metrics, at least in ganglia, the stats are aggregated rather than reported per instance. + +== Using with JMX + +In addition to the standard output contexts supported by the Hadoop +metrics package, you can also export HBase metrics via Java Management +Extensions (JMX). This will allow viewing HBase stats in JConsole or +any other JMX client. + +=== Enable HBase stats collection + +To enable JMX support in HBase, first edit `$HBASE_HOME/conf/hadoop-metrics.properties` to support metrics refreshing. (If you've running 0.94.1 and above, or have already configured `hadoop-metrics.properties` for another output context, you can skip this step). +[source,bash] +---- +# Configuration of the "hbase" context for null +hbase.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread +hbase.period=60 + +# Configuration of the "jvm" context for null +jvm.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread +jvm.period=60 + +# Configuration of the "rpc" context for null +rpc.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread +rpc.period=60 +---- + +=== Setup JMX Remote Access + +For remote access, you will need to configure JMX remote passwords and access profiles. Create the files: +`$HBASE_HOME/conf/jmxremote.passwd` (set permissions + to 600):: + +---- +monitorRole monitorpass +controlRole controlpass +---- + +`$HBASE_HOME/conf/jmxremote.access`:: + +---- +monitorRole readonly +controlRole readwrite +---- + +=== Configure JMX in HBase startup + +Finally, edit the `$HBASE_HOME/conf/hbase-env.sh` script to add JMX support: +[source,bash] +---- +HBASE_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false" +HBASE_JMX_OPTS="$HBASE_JMX_OPTS -Dcom.sun.management.jmxremote.password.file=$HBASE_HOME/conf/jmxremote.passwd" +HBASE_JMX_OPTS="$HBASE_JMX_OPTS -Dcom.sun.management.jmxremote.access.file=$HBASE_HOME/conf/jmxremote.access" + +export HBASE_MASTER_OPTS="$HBASE_JMX_OPTS -Dcom.sun.management.jmxremote.port=10101" +export HBASE_REGIONSERVER_OPTS="$HBASE_JMX_OPTS -Dcom.sun.management.jmxremote.port=10102" +---- + +After restarting the processes you want to monitor, you should now be able to run JConsole (included with the JDK since JDK 5.0) to view the statistics via JMX. HBase MBeans are exported under the *`hadoop`* domain in JMX. + + +== Understanding HBase Metrics + +For more information on understanding HBase metrics, see the link:book.html#hbase_metrics[metrics section] in the Apache HBase Reference Guide. + diff --git a/src/main/site/asciidoc/old_news.adoc b/src/main/site/asciidoc/old_news.adoc new file mode 100644 index 0000000..36ff510 --- /dev/null +++ b/src/main/site/asciidoc/old_news.adoc @@ -0,0 +1,117 @@ +//// + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +//// + += Old Apache HBase (TM) News + +February 10th, 2014:: link:http://www.meetup.com/hbaseusergroup/events/163139322/[HBase Meetup @ Continuuity] in Palo Alto + +January 30th, 2014:: link:http://www.meetup.com/hbaseusergroup/events/158491762/[HBase Meetup @ Apple] in Cupertino + +January 30th, 2014:: link:http://www.meetup.com/Los-Angeles-HBase-User-group/events/160560282/[Los Angeles HBase User Group] in El Segundo + +October 24th, 2013:: link:http://www.meetup.com/hbaseusergroup/events/140759692/[HBase User] and link:http://www.meetup.com/hackathon/events/144366512/[Developer] Meetup at HortonWorksin Palo Alto + +September 26, 2013:: link:http://www.meetup.com/hbaseusergroup/events/135862292/[HBase Meetup at Arista Networks] in San Francisco + +August 20th, 2013:: link:http://www.meetup.com/hbaseusergroup/events/120534362/[HBase Meetup at Flurry] in San Francisco + +July 16th, 2013:: link:http://www.meetup.com/hbaseusergroup/events/119929152/[HBase Meetup at Twitter] in San Francisco + +June 25th, 2013:: link:http://www.meetup.com/hbaseusergroup/events/119154442/[Hadoop Summit Meetup].at San Jose Convention Center + +June 14th, 2013:: link:http://kijicon.eventbrite.com/[KijiCon: Building Big Data Apps] in San Francisco. + +June 13th, 2013:: link:http://www.hbasecon.com/[HBaseCon2013] in San Francisco. Submit an Abstract! + +June 12th, 2013:: link:http://www.meetup.com/hackathon/events/123403802/[HBaseConHackAthon] at the Cloudera office in San Francisco. + +April 11th, 2013:: link:http://www.meetup.com/hbaseusergroup/events/103587852/[HBase Meetup at AdRoll] in San Francisco + +February 28th, 2013:: link:http://www.meetup.com/hbaseusergroup/events/96584102/[HBase Meetup at Intel Mission Campus] + +February 19th, 2013:: link:http://www.meetup.com/hackathon/events/103633042/[Developers PowWow] at HortonWorks' new digs + +January 23rd, 2013:: link:http://www.meetup.com/hbaseusergroup/events/91381312/[HBase Meetup at WibiData World HQ!] + +December 4th, 2012:: link:http://www.meetup.com/hackathon/events/90536432/[0.96 Bug Squashing and Testing Hackathon] at Cloudera, SF. + +October 29th, 2012:: link:http://www.meetup.com/hbaseusergroup/events/82791572/[HBase User Group Meetup] at Wize Commerce in San Mateo. + +October 25th, 2012:: link:http://www.meetup.com/HBase-NYC/events/81728932/[Strata/Hadoop World HBase Meetup.] in NYC + +September 11th, 2012:: link:http://www.meetup.com/hbaseusergroup/events/80621872/[Contributor's Pow-Wow at HortonWorks HQ.] + +August 8th, 2012:: link:http://www.apache.org/dyn/closer.cgi/hbase/[Apache HBase 0.94.1 is available for download] + +June 15th, 2012:: link:http://www.meetup.com/hbaseusergroup/events/59829652/[Birds-of-a-feather] in San Jose, day after:: link:http://hadoopsummit.org[Hadoop Summit] + +May 23rd, 2012:: link:http://www.meetup.com/hackathon/events/58953522/[HackConAthon] in Palo Alto + +May 22nd, 2012:: link:http://www.hbasecon.com[HBaseCon2012] in San Francisco + +March 27th, 2012:: link:http://www.meetup.com/hbaseusergroup/events/56021562/[Meetup @ StumbleUpon] in San Francisco + +January 19th, 2012:: link:http://www.meetup.com/hbaseusergroup/events/46702842/[Meetup @ EBay] + +January 23rd, 2012:: Apache HBase 0.92.0 released. link:http://www.apache.org/dyn/closer.cgi/hbase/[Download it!] + +December 23rd, 2011:: Apache HBase 0.90.5 released. link:http://www.apache.org/dyn/closer.cgi/hbase/[Download it!] + +November 29th, 2011:: link:http://www.meetup.com/hackathon/events/41025972/[Developer Pow-Wow in SF] at Salesforce HQ + +November 7th, 2011:: link:http://www.meetup.com/hbaseusergroup/events/35682812/[HBase Meetup in NYC (6PM)] at the AppNexus office + +August 22nd, 2011:: link:http://www.meetup.com/hbaseusergroup/events/28518471/[HBase Hackathon (11AM) and Meetup (6PM)] at FB in PA + +June 30th, 2011:: link:http://www.meetup.com/hbaseusergroup/events/20572251/[HBase Contributor Day], the day after the:: link:http://developer.yahoo.com/events/hadoopsummit2011/[Hadoop Summit] hosted by Y! + +June 8th, 2011:: link:http://berlinbuzzwords.de/wiki/hbase-workshop-and-hackathon[HBase Hackathon] in Berlin to coincide with:: link:http://berlinbuzzwords.de/[Berlin Buzzwords] + +May 19th, 2011: Apache HBase 0.90.3 released. link:http://www.apache.org/dyn/closer.cgi/hbase/[Download it!] + +April 12th, 2011: Apache HBase 0.90.2 released. link:http://www.apache.org/dyn/closer.cgi/hbase/[Download it!] + +March 21st, 2011:: link:http://www.meetup.com/hackathon/events/16770852/[HBase 0.92 Hackathon at StumbleUpon, SF] +February 22nd, 2011:: link:http://www.meetup.com/hbaseusergroup/events/16492913/[HUG12: February HBase User Group at StumbleUpon SF] +December 13th, 2010:: link:http://www.meetup.com/hackathon/calendar/15597555/[HBase Hackathon: Coprocessor Edition] +November 19th, 2010:: link:http://huguk.org/[Hadoop HUG in London] is all about Apache HBase +November 15-19th, 2010:: link:http://www.devoxx.com/display/Devoxx2K10/Home[Devoxx] features HBase Training and multiple HBase presentations + +October 12th, 2010:: HBase-related presentations by core contributors and users at:: link:http://www.cloudera.com/company/press-center/hadoop-world-nyc/[Hadoop World 2010] + +October 11th, 2010:: link:http://www.meetup.com/hbaseusergroup/calendar/14606174/[HUG-NYC: HBase User Group NYC Edition] (Night before Hadoop World) +June 30th, 2010:: link:http://www.meetup.com/hbaseusergroup/calendar/13562846/[Apache HBase Contributor Workshop] (Day after Hadoop Summit) +May 10th, 2010:: Apache HBase graduates from Hadoop sub-project to Apache Top Level Project + +April 19, 2010:: Signup for link:http://www.meetup.com/hbaseusergroup/calendar/12689490/[HBase User Group Meeting, HUG10] hosted by Trend Micro + +March 10th, 2010:: link:http://www.meetup.com/hbaseusergroup/calendar/12689351/[HBase User Group Meeting, HUG9] hosted by Mozilla + +January 27th, 2010:: Sign up for the link:http://www.meetup.com/hbaseusergroup/calendar/12241393/[HBase User Group Meeting, HUG8], at StumbleUpon in SF + +September 8th, 2010:: Apache HBase 0.20.0 is faster, stronger, slimmer, and sweeter tasting than any previous Apache HBase release. Get it off the link:http://www.apache.org/dyn/closer.cgi/hbase/[Releases] page. + +November 2-6th, 2009:: link:http://dev.us.apachecon.com/c/acus2009/[ApacheCon] in Oakland. The Apache Foundation will be celebrating its 10th anniversary in beautiful Oakland by the Bay. Lots of good talks and meetups including an HBase presentation by a couple of the lads. + +October 2nd, 2009:: HBase at Hadoop World in NYC. A few of us will be talking on Practical HBase out east at link:http://www.cloudera.com/hadoop-world-nyc[Hadoop World: NYC]. + +August 7th-9th, 2009:: HUG7 and HBase Hackathon at StumbleUpon in SF: Sign up for the:: link:http://www.meetup.com/hbaseusergroup/calendar/10950511/[HBase User Group Meeting, HUG7] or for the link:http://www.meetup.com/hackathon/calendar/10951718/[Hackathon] or for both (all are welcome!). + +June, 2009:: HBase at HadoopSummit2009 and at NOSQL: See the link:http://wiki.apache.org/hadoop/HBase/HBasePresentations[presentations] + +March 3rd, 2009 :: HUG6 -- link:http://www.meetup.com/hbaseusergroup/calendar/9764004/[HBase User Group 6] + +January 30th, 2009:: LA Hbackathon: link:http://www.meetup.com/hbasela/calendar/9450876/[HBase January Hackathon Los Angeles] at link:http://streamy.com[Streamy] in Manhattan Beach + diff --git a/src/main/site/asciidoc/pseudo-distributed.adoc b/src/main/site/asciidoc/pseudo-distributed.adoc new file mode 100644 index 0000000..1eef753 --- /dev/null +++ b/src/main/site/asciidoc/pseudo-distributed.adoc @@ -0,0 +1,19 @@ +//// + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +//// + + += Running Apache HBase (TM) in pseudo-distributed mode +This page has been retired. The contents have been moved to the link:book.html#distributed[Distributed Operation: Pseudo- and Fully-distributed modes] section in the Reference Guide. + diff --git a/src/main/site/asciidoc/replication.adoc b/src/main/site/asciidoc/replication.adoc new file mode 100644 index 0000000..0f41839 --- /dev/null +++ b/src/main/site/asciidoc/replication.adoc @@ -0,0 +1,18 @@ +//// + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +//// + += Apache HBase (TM) Replication + +This information has been moved to link:book.html#cluster_replication"[the Cluster Replication] section of the link:book.html[Apache HBase Reference Guide]. \ No newline at end of file diff --git a/src/main/site/asciidoc/resources.adoc b/src/main/site/asciidoc/resources.adoc new file mode 100644 index 0000000..55af99e --- /dev/null +++ b/src/main/site/asciidoc/resources.adoc @@ -0,0 +1,22 @@ +//// + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +//// += Other Apache HBase (TM) Resources + +== Books +HBase: The Definitive Guide:: link:http://shop.oreilly.com/product/0636920014348.do[HBase: The Definitive Guide, _Random Access to Your Planet-Size Data_] by Lars George. Publisher: O'Reilly Media, Released: August 2011, Pages: 556. + +HBase In Action:: link:http://www.manning.com/dimidukkhurana[HBase In Action] By Nick Dimiduk and Amandeep Khurana. Publisher: Manning, MEAP Began: January 2012, Softbound print: Fall 2012, Pages: 350. + +HBase Administration Cookbook:: link:http://www.packtpub.com/hbase-administration-for-optimum-database-performance-cookbook/book[HBase Administration Cookbook] by Yifeng Jiang. Publisher: PACKT Publishing, Release: Expected August 2012, Pages: 335. + diff --git a/src/main/site/asciidoc/sponsors.adoc b/src/main/site/asciidoc/sponsors.adoc new file mode 100644 index 0000000..56046d8 --- /dev/null +++ b/src/main/site/asciidoc/sponsors.adoc @@ -0,0 +1,30 @@ +//// + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +//// + += Apache HBase(TM) Sponsors + +First off, thanks to link:http://www.apache.org/foundation/thanks.html[all who sponsor] our parent, the Apache Software Foundation. + +The below companies have been gracious enough to provide their commerical tool offerings free of charge to the Apache HBase(TM) project. + +* The crew at link:http://www.ej-technologies.com/[ej-technologies] have been letting us use link:http://www.ej-technologies.com/products/jprofiler/overview.html[JProfiler] for years now. + +* The lads at link:http://headwaysoftware.com/[headway software] have given us a license for link:http://headwaysoftware.com/products/?code=Restructure101[Restructure101] so we can untangle our interdependency mess. + +* link:http://www.yourkit.com[YourKit] allows us to use their link:http://www.yourkit.com/overview/index.jsp[Java Profiler]. +* Some of us use link:http://www.jetbrains.com/idea[IntelliJ IDEA] thanks to link:http://www.jetbrains.com/[JetBrains]. + +== Sponsoring the Apache Software Foundation"> +To contribute to the Apache Software Foundation, a good idea in our opinion, see the link:http://www.apache.org/foundation/sponsorship.html[ASF Sponsorship] page. + diff --git a/src/main/site/resources/.htaccess b/src/main/site/resources/.htaccess new file mode 100644 index 0000000..20bf651 --- /dev/null +++ b/src/main/site/resources/.htaccess @@ -0,0 +1,8 @@ + +# Redirect replication URL to the right section of the book +# Rule added 2015-1-12 -- can be removed in 6 months +Redirect permanent /replication.html /book.html#_cluster_replication + +# Redirect old page-per-chapter book sections to new single file. +RedirectMatch permanent ^/book/(.*)\.html$ /book.html#$1 +RedirectMatch permanent ^/book/$ /book.html diff --git a/src/main/site/resources/book/.empty b/src/main/site/resources/book/.empty new file mode 100644 index 0000000..5513814 --- /dev/null +++ b/src/main/site/resources/book/.empty @@ -0,0 +1 @@ +# This directory is here so that we can have rewrite rules in our .htaccess to maintain old links. Otherwise we fall under some top-level niceness redirects because we have a file named book.html. diff --git a/src/main/site/resources/css/site.css b/src/main/site/resources/css/site.css index f26d03c..17f0ff0 100644 --- a/src/main/site/resources/css/site.css +++ b/src/main/site/resources/css/site.css @@ -72,8 +72,10 @@ h4 { #banner { background: none; + padding: 10px; } +/* #banner img { padding: 10px; margin: auto; @@ -82,6 +84,7 @@ h4 { float: center; height:; } + */ #breadcrumbs { background-image: url(); diff --git a/src/main/site/resources/images/hbase_logo_with_orca.png b/src/main/site/resources/images/hbase_logo_with_orca.png new file mode 100644 index 0000000000000000000000000000000000000000..7ed60e227c6c3319993c18a2956eb6007413953a GIT binary patch literal 11618 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 literal 0 HcmV?d00001 diff --git a/src/main/site/resources/images/hbase_logo_with_orca.xcf b/src/main/site/resources/images/hbase_logo_with_orca.xcf new file mode 100644 index 0000000000000000000000000000000000000000..8d88da2ac9f0ba3d098d60367b93b820e210f776 GIT binary patch literal 84265 zcmeFa2VfOd+BbgY*7V+cA%qqZ2ni*GCRGrngGwg}9R&mxB{T&Q6{$)WL_ttcloomu z1*uX(uOYqN+&XjT{D03}aB<&V_g%kz-|xTs-N4*Az0WyMKRKhuy%O{K@a&lEQDd_h zW9nz{a|sXq`Qi}-{P^Q>Y4<&2^x!W5j|Pt$o}kBWN*9Rq5qSILpxC5QfIm0K6oiH(`j`B*Hm@{l>OiIHP$-`M%E|sF@N7dSzn*@%FyAX#^=N|dQukx-}qaBkHeB)8$W7t%&76hM`lf;{1dXX zCuL3kt$~#LzXmx%exH@b;qjj^m$3u8p7<~}PX?aG(es6&lO|`4i0L-;jjV~3M)f$M z4sRNGj>qM(n=-gQcH_lp0w@jr(F8qlyFcajc*^bhl-nC_l>4MQrhh8#$)u|h_V`cL z-r@MI@u*8R0v%h7XDyyBzmHd)L-B|3;2o0BSooKWMW*1H!B~uyu|^jeYh1-x+nbDa z%f>T>vA(w%n~1@hjYYUx!uEbh_VNS zQUXn=7roqKG)hr^p-NFggc9naq!j#RC3l#T+cR7#J}{iJ=_8fCdc`_&1%*(c&M|7P zp^i}tREARR=&fg{8cFPdNsmJp>t zmq;B;Ww}1=cTXKAbHEw+NvEIYOqSqPaZAUd4Qt3m?C`Y3*Q}W_tV{Fe!w=J! z+mKa#$@z??VK~7AmAcg})_~O@osoYVqgScbOwFXoE1cD3285b;^$4B71SMEVzr~Vp zv|${XHxvvoYg~)TWwW1p>0B|Vw_gB zk%!&mBlSojs(U{PVSI%@^S}g6qRJ)yFp+s;rS0de4sFjbYRDU>q_*%Ae1#t>^?3GkP44Y_yUPoE%-n5qGAQ6K1F%a)}b0lfJZ(B zhI4FIf?l(spTEc;*_?09tpp_ z{e30#SRHvf-Baq8y8>plcfR*H;lcWpQD}eH(J&VjDhjOAeR%DB1mXn2-s%qOl=!Je zh_nhSA^AF0Bk`@l0C%MrG%1!kF;`1o?`xdJz$-oIuYupDIYYgUMyq~K0>tc(%08hC z$Q}-;SW;oYqM3!W>Y09srwVO#Fln4cFZh0{M`OFZOvHV)dASAQKD6n7*#$69kJo34_YaELh2Xw1(uXeo?#KIF#odv?@{&ftYO%Q2dw$fcHGA>FSgnj- zswZIZ)%czyZDd1y6OwaS1AIs#8?ppeA4&AIW*I+{gzXCBKMwV$E6bQK^MT7m zk^G|&fUv2oMk3Gg0lrM7VvQ+|^TIjx)M&5J2;Yx$t8i`=+__aaw+iQ0;e;xjP=yn! z_!mGGx$FyO5_G;XDVa@UT>yj_RKCf5XK&c^)6q|#^I|EiO7O{;_WhMIvnbmuw=`tQ z%%Vw}cCgSY1F(|hU)lqiunJz!tSykZj!X7qnS@<<_sgr~E?hFMi3WBddcSnk!do&$I`<7FgHByWEpY;txqmY{nidc`a+g$m{*;J(;{! z^L>F3i0aIp7VgERhdElp4}7N=b8jwP?IDmaX`4uK^3iniY5H8EIO*Hk!X#RkPg^c`I|>3A1p|zQujGR58tsd{Ijb`9nO6D?*l3}phkS}~u4f&*fjerk`LdJfXytWW0U2+ym~9s0$q_Dr}(vQPQ0uTHpkt z&;TO=Z~2>UcT^bY7#R3M-mfN~{9{Xsi(X~nLFoHP7hoS!lU)+| zOsk`TTSzW1UE{%Aw4Vk#7lk>VSItAXR5~w|e08?k;S;5k&+9=SmQ<~d^Dr(}Z%9!C zdY9aD9>8mpAAQ_F13+JjT5jeM+*Y`_xsRIA0#)-vJc?UNei&2N$DQyU$)(?Q9?ffP zH`c#3s#8L!kCu=`$!k(6kKt9arSj1)o0h!Zt99K#PeNy<@P#!zftw^-dH%_*b0_r! zOfRa__e#7T+GHrrCy3uO>lRPuh)^}&YF1p57X~qfyJEzWw}^1LAXlx~_jw}@wAv+Y z-c1=!EwgIEyKN|xd1J0&HqXp?$E$b~p6jV1_#Wg1{3_0-OnOjQ1w5n~v$h}j+V-=A zlV~VWGBfEsgBv_IY2$Gd2m@*gYryQlJp^VJRN96EW~{q`2+$Ien5+WQVhPC{KJSOC z1y51~xd=$e9J>6l4QNwSU{J0;se?bchG?bgRAv-ZUMGi-xwU9|S^B5_9D>rrXEAd8coqU>B^Ly3B(crHaenz58OT z`T?{VdUK;#k$-GUZjbuDYHS{U+$h`1E^eLHIo?CSw;jYyw&I^xk8K@}@}gJ>H_4`Z zN8azA=%vCJo5=Kzm6YN@TJ>C^aWw&M4ixvXPl;0@W!jTO%Hn&R#f3L@1Zy1*6{un$ zk8#$TesVo${YO<|7PMaB5s|?fd~Fs%>lqjm=Lw1df;~bL!!>I92nD@=t>^$Ra$8g` z{-Kc|QMQ0n?-f}G^wJhMhFwDIJBX?(&nS!$2fa!mKY)_(c+hj%ntvkDmzhBShz|16 zdIhpv_Blu_f8kXm2bkmq9*QhbCTy>xXHHiWlA{TJdCMuJNmu_;1*m1Ihgf`%xJ2hPtgX~0r{<%q6U>bW%5U8N)lLKW5Q0GH+@ zQya4ZT)46-CC$ckVpV|ZiBhV+;19aE3)qEN_yZ39gn+h~xh>nDsnkRdHp=MC!MaLv z0jR`g6a*@*%+I$$U&0?#SXY4P3&{ezc9H@D5vzpr%H^Q*6Fu0>QS%33fV%*Zsf1@x zgz9no&%KCk0g1vW(JsCs0x?<;{Z(~9VHX~k{%t+lC7H#-zpus6c`d6_31RCoZS>zX z(-j9Mm>b8@FNzd|N|kzygYHz}C73h*A-i{+#_SZ{ms= z)vW$8F6H>5<`{)gzPmo07!;&4x%aBRgjq!WM98-d0hB7JEP^U@F5l4@2!@Ss0s8`} zYmi!6nw=^dd0^L(x5Mn^Ts(D5`3yr@0q z5FJqomaw;ZUOII_AdbkE2&FMKtlsB*A<94mDiF=430kH@B9p4=ex8e|C+vr|#ZhKa}$iaxzocN#5n=KvI*L5y<5=GZr84129+?ZTSpkcuF{>(S_|6hLkbpF1(=~qoiUnMZRKS}N zeK!@!5C>_@Y#tf!oil=$5dumw=xP4Q6gKpGWYY5>W>E*W8`#=kAlV^(!&w)Jj}ZVW zN$@l8{CNLxKQ|(-sDqwcUtkAA!=D*FTFg07E_3U;S`d6fjyFycw}M1=f?nEDYzIkK zI@?(b*xu&-%(@2>m=h>i9Xt7q6^)S!$9MoMvZ`aU_EpK?MnK$19iMyM&b44Zd=yHM zvfz>W-VNd@K#)aUd-^pQEf>Yji4HU+q~Dfe(EL%g5If@*bwQL*w9yitqf4A}#ss22 z8Y{VOxN zV#=Qoqt++S`qc(8VXp+6Wvy(cPp z!;Msc#dc-!@V9=k@Nfi5{;%GnFvHPFeU{#^gRBoCx~9!RJJ>(LQEo!yLhF)0YTMK%QJ8S`MUk|3v)FKMAoSoTi)~{9`%XO$Z z@k<-HQx@}q;m<9&Y3FeWl(b#WQJ7)ZpzbR%d+`+JGqnsuX086Ae~+)q!4g1F;%4G= zSxYwc?yWgmUf3bl%pFZOS9vFT?+UH26JrQf1M?xn zjSwKIbCB;If71dL7^(PN?0ZpZ@@a7V0X=iJJUc%m!ly6b#ziyz0Gjq69vmb*@o^ zHaHkFcG~JRk?q$ya+xTX;Me&mhlH7datVF|E>`nB$YoLo4c$YfRb$J?xHFSBZlsk% zwd%S519nC(?G+mA9$IP+c6zt?DTS_SvHhub8GiAFT~tfLO!MhA`+N2 z{m+n_7)N5`4RB&M1?Kyz;t~W=)9*f~JzFJoJOqx0+yJQP0h-oa%>;TicF5Eb?Vvue zZ#70kt8>xoK>7ipibV79qhe*Mka{gUzA#|e=&XUgUTB@32!Uf2^2D+SpmngMVRP4f zf4!>4YLi5(wW{FE_O;qB_<&I`%&;GmeOSnwOg3R!-RT19{Uc>#%JKt!m2ZhM0 z610({Zz4{SCB#gKpnqt%NxV3vfj3nJF-!j1TQQ&s6zapw+F=DW=5`j#WIHVy2}h5`YZV0=(HGJffi?!>(0>W% z3uq`p)K~mAV>Sn!3zP<1A?;RfXqP4R057ImBSG9SukGF8*}kLSKTv^AxZ*T?9z6_dQJSZ0f9kd#nDLD#+AdCAzYK({?v7+%c@FSVv zGSM&!D$s-6r%|*Sry`>DApN_r8Xd$W`_*wr6|_63m1XoPlKFyxWHTAc%n~+Sl)#Hi zkFDwvsYR8vS_Kxo5?llcvjut+sDo4}h{8|{NUP<}rim>)03{}JtNG#1@#&rb=IU~*?cUDewOv71sL!pItLys2 z>HzdLK!)n`pLPo(eUpa3gDX$YN_B@q4ol%ysqnjOXyoZxV{WtNFK*|JqcxRV<+8j{ zacZFcX$ZctG}9fB3NW^cZ~H>$57-s(;Zu_n0XP8}u}XKArs)~b5wYZp?*70>B-8P1 zU~YEl*T<+EbaNzGvRTv?(I!D^tsytd=AuhK?fLwZ<*Mc8^}7!LaAMwnAmj$qtzGZ-NeT1RsR0G3Sp^i@)GnR@wObE( z>zgZO78&FMlU#Fk-N0mj2pjn_qe|yf_xY)xUnsYO=3q6QTRH$RTPPr3uY~UJBDS|I?Gjh z--Nb9=6t#D?EO-UWVdr!kOljF$x>B#{m7R0hG#^1LigV#y5szlg`8V1yaqK@S5~8P zjcD5M^>rt11H-&cCwl?lj_CYWuKExG{H^E*k{Ce62-An0kM#?}2dqFM zEg=iZNmMBOi~5G|&csIlQ9C^dJi8rpFlM$zWFZX=W-Dn6lUV z2!TiyzP$x-*^!QrH~-~ILR(}WP$ZzG*7OUg%!HIuH;73P?y6D^LYihsZdL2%a=C_z z6C$7?2~jM8WmcG!1`)qnorTP0XpmZv+*UtM5S`Ci0hOfc3XbkgD%xwljLd?{R_Cq^ z1PxqV!KxYv;Rvcx^7%{|j3y8Qfnbhc(~ahGC5?nisJ)Gv3Bg|C#`}OQG}r6eDjv#?9)uDKYIO%R#*Sqt@_WyEV%7zf$b6SLR2`+|%}6s+YF_%-f9X{(!Wl7V zvm8|jqLpuspn5=#RH;=hpd?w#frVQ6)uyBn=mH!^@_J9imjnes#>@J;(CQR48F#3R zXdpx&BXR3!E%qUh8>xjQQG zd!M>x2yMHx2+1H+lA}X5s3Nv|NG&q>cK(jSd1ZGri3B4=ua!Iz{Wf4J2T!}kf!dcg zLRsj)`dJ{az@s^wp{cEMQ+;%nvl7A`p8)zBCz{X9d516j+(s+B1kP_zMF6)s3ngY*sX z>&}cA(z}Mser>cbTmaU@BfY&KB?)CEb6#g1^r4`pRI|Pj$$>#ZsqmdJ#UV=P2K&M& z1N4y02fFDXU=JlD!^R{yNWJLoKaPx2wZd*f**4FG;c+s+I%0<5aQ=hlP$h}J%u z9)Pl}g1+9H=Sg=;wC!!JK_hH|Sx2i0{FI8{2}L_apDvp!;1%u1U`YZZhp~XG!5(tS z{GyyvmAxB+P}|C(X@MHhJw<)SCQ|AW<>MVR0E{h`J9%$44~8@(2*sHw3By?e(ZCo? zW3^nkJGUhuZ>Gz{nM|5t`&+325~#UBD&9SzE^I#OTW=?wF{xmp4bVWw1M9q=Vqgf`Ts>tn1({#4oNuoMc>G zi%xZR=ywl^kAFet3&4Tmzs3NvNN1KujGMZG4}s0^Dgcf-B(E>=3$X;tak&c?sKg=p zi7WsK4^gnl3wtPLOZcb2+rWjfF@7TxI1j))KF5QAIzSvZk}+CT<0u*%suAWOC^;7O zcpU@}n<4d~h9H6?k!dc;f+BxG8zn8O`d*QL=A$)AUbL*W(v%fJc-i?l#dE*C^7_Hi zSo;z;kYxO&b_DBDQx}0H&!H+$;BKTiXyq$|NJdjnu?gpk;;-9Hm+oW?&d2GwZ6XmSf{G3di>zo1-!msSneAZzN@!-r3wy-`q9 zYPMNXP{~1lCJo_!WAiRPfG(Bk{@J|ks9EF}`VgR4<6XZ+`_7$PH%qPMkK}03x4dvu zH&@KCnW{(ERM-#{wiA|p!MlyUv}(0RqtfWyv3DriGGIQO-|)fAcb9IxOm<%&oee;l zHzFh{mz`Ed#<@0~Yty+lo%^P9-~4CxO)2ordmt}BGC|+tCkd{mkZo!Dg#m;vxMDwo zimr;MLjr2ZMH172M7^fvcP4-gX-ta#uo!Sf6GRTZNW`>MsQNaC!j29u$?x@tpyoA3 zP-|$PlS>MFw*;iWMu3j`{~{|cDQ=Y!5Jw8cHu{_);j0uT)mm8%kR}-bQMXehKb8!s zp_wIsjNoYWtq4a$$SL)^4Dbq$z;`Mgjz&93As)wtZa_W&HaLRbtAYdPkdXR=U2#b+ zFXjWfYk=0hUFL8^Ei=IZG?lZzdWm=zW{U>Zr4c@*#{9G>GIIvnxqY;ZtjU)B5w zsDb2Yb?ULB^%F<)!w5mH*wvJnvX6bFI7C(EA=yz!(DWk3A*!2vVMOzBM50liId>Is zQ>r)%uc&GNql`JOmdr+zvAW>Km4h2*Jx38j{E8ZiDBZJS;er`s2fxs)c5E09e%Af2X}7Uws}U+p|9g;FZ1n30))1*`xg)G+n0Cr%DrNo)F$s1(@&N`bA#K} zb`|EULLJm;%Idur?iN>6R#p_=zfPtU)b3#oI=%Sn%-OSNOc>k?=!a3Iarg1{^>)*$ zahP+U93t_6fsR0^10*VmfP}_?5(Ln%bZ#EL!J)x^9-$gLAh|T-%`@AE1p=nGsaRnD)#xh-h$Pe?Z=gVrHtRt# zgJ41p=vn|O1ZIa&PaFX#tkzq15C`bVNJKUOmwYvgMcXW`zjM%6-I+C?aogNr1Pf|w z*PD=5kw_>7f<}ceLs}yi<|2BR5v7i7rSW5)C=Iy608rX|9BOQ^wh+gx?MaS=!X&;u z006xior^ulQ5donpyEuV5_L1s9ONrOz%+LTECS#sq$q48cKHYe{7{RM>Ay!ZZ)Snk z8!v34LXfQo+AD!qf(`-~xz8V_BNW!jNN~m#SOS15z}Fi9>!DPT6YHHM$rH%P0C(Zm zg98FF8)z2MC%ZtM%|-)eMJ7nHLC|AUTPRI~WQg2~4X`j8>){wiHALHNR*Pgd+kTzf z!4GprGBOxhP-InLS%5yt20fx7hG^ie-7AMTz_imMK=(l{1t1zk6v)Q62~)YcY*=PA z3BaIOL4Yh`@bK;6GN}YZqlJgJ%pZ^v1m$1>9T($h03hjuMFhDQEFv@>@}be^IiH7c zBUTrJ$aWx6LIud`EaC;d!BK#U7E{M`?As?E&2vZ5$e#EepX-J=ql$&h|K(jtX^Na4ShZ)>1}>19dqejn>kwBKG3 zgfx;%<0bIcOovrOfpt8`54A@klS<#`@K4*OwItcs5{ToEyMo?uQx>F=V50F`crY8# zCDZu@`nZvB4WM-lsj9&`Ofo9urcr>f1tA*5Xwo&qcLXm{gTWclceu{4vqGdZiX5mi z#?v!fnF*|Z>W@iKg^x!a>>T1yU>ScU5FeF+zBacE;t;SJOhC<#XcM1T8}%u8CS@fe za{L4^JQ%x!k4aJ4I{X|h`6#lefP@|$4|5B?53>zR(~=93TG+2Z43Zc%9!OXR|wa zV=1VFGL(%rsw1BnwG_m5*v?Z{wiSgMfZT(3cywelYNLySMQPDeou_Yf%c1XXAtMrY zLp7F;3dS=|?wQ^`7TS<{9}GCyDi}_s-R{vzEqhN{wdb@E$w2_HGgBc3Tg|JiU(FoR zA_OQR^J>_Cjk2I=5HQB!ZHKd2Lw^^e{BTf&HN-nJKX8;2A4+-Yg^8Lq%{*#qMLgB49biP{RyH(Si-! zSoHPeXA%Ou-5`#RT-Y7V9!b4t?l^IQy02u@gSi(0lPbKTl8l8K4f{6b_NwcpM-DX( z9v82`u$YG3#>~%qR4F2lBE{&&ELpql+Xf~Bm+_|wz|IxTI4n%WbN z8NvS5VZ1RUVXSKHYn?&4Lg%zW$)iqUJX|OO990dPXwxKipS%r$O3Q$v>yjpH|G5}V zRYWNPrPO-~(2)k*AY^Jprx)$naHlfaLZYJ_C#dW^L7gY4^8|ICpw1K2d4f7mQ0EEi z#6g`ns1pZu;-F3()QN-sui>D%Y&);En=8u-?%laxSY9KNaCDj7aP!FedDAD2$r(F! z_9uHT-8Vwxx7d1j|Hs2KYX$mvdANIc`9(GDJ^J%|keN1154VnP9tM#L7b3N}HCzn! zW2;<#;LXM!AnVvQBY7=u6|XI7AE?+eRn=Y!m1Udp!01{!5Qjv4>inC~YqlA8KkrL2 z(_+#}80d`!p=3{Y5;B*(#@|J}Xx#an2Z%^g`cBe~7H#{wDPFJ156CNDALWBsQPVC@ ziLPD_ij^PH%omqYy#2?ndW!cOeT5{srP67E7b}>#8WC z-U{vwr=GT=xzeN2?jSB%G`>kgH{BD_BkAYXYEWs7D%aq~edp}B4t+fY%6pPQPOFB* zc0m1SCoDU7qY^{vLJGv;Xyd_jBHVyJ?pv$Xun&H?Tw*4LbxAhggZg;ot+5eq9%1q6 zz2Excgy^V3TgN1TL(66yC%Wlt?kB3!MP;}G}$gM8{9Om(I?eZ zk!VFbAvS%zUvO?IG~tc%g)vb&LE9K?3U_X?-rv7**F&QGSj%TeJ$uLqX?CM!eUhhl zbf;C&33laWa@FD2nntF5^bni{`NsjZU;G+r%+|cuMonCLq7vP#k?ybWhKui1jh2(F ztj&BRr+y2hvB))rkBZS>H)uzmdMlaqVMSfqs$wJ(ZI>6cf>OHGUixi++~Wgnab5Z+ z(ADR1`S)0RHp``tGF?H!vuTn)ye%S!EJD-WR<%DnmV|U|>blclp8$Fa)|;!Jg*F4M z7pOu<9IT=xX}h<5bX_f$sLi*_@(VRQ2CKCA;FL5^S~uFbmv@k9Uem1~W^@Q3%?D8x z)L{*#(QGX~y(YU!kQQN9*T{CW@*ZHcYh+vbol~E`-nBODpZS0?sdf#^$XRw28q$8e z(r$&c`SCAj4((XmTLYSt7i_0#ed~6}UUcBDkwg6wb5JE2OY;wWK7YbXZR-SkJXXMT zV`YMiUwrfa)4n`;8`LYg{Nm@?7^!MY;rVSJPVL_!A;i-K@*aXGE7EubC$`Udcf-M} z#bzkuR^Qr@+q0f0$XW*3TyS#Lgsw@UUOE*BulH0MkBB#hMl89wbLI2_%_6~V(Sj~! zs@j{C=&I5~;$Ou|RXVSTlpX`8e6V5f(O>Tun`l|9d9_&c;M9(_Q=V%S?FX_acmVu? z<;ExNBYcRxpw@bZrF6}nxpw#Y8%5P-=pd_kh22(JaOKqARqqUKTQ9~JY7QQ($b5Ti zc71oSqXd0O<6cvj{c!$4g@tTdl-e!Esz*2TfBNpT={emq8%0trzU=baoQzO+HM9Vl zy*&Si%f+C;bJc=n|d*RZd%Zl1KEv4KVNh>bM%VC*UKSWBURiu zzGd0#IsGzI8$<>9d+N2Iy@s=bxWtU!Z>&9W-)NU*Q^BdtZ}e;)AL8w*2Zuw5XQj(F z9m_9)4vAQO@7Rh_ZEATVSAAAl15FBu243AUZ&=GHs5vAvgDe?~&TN|5vq7M%8gxYS z(XH=|eJ0LZ3kfe<(>Pzuh{Mc)(27(P1U8s{h-G5Od`3e+5%ll?lFJujXM(s(%pDnz z;73btPM|+}jh@cB9x3tAX|0i}#k#~cEpX@^~YJS?W>li5e7uF7IRm%-TQHZ)n&V^Y< ztU8P&I0eEzyfv+6`~=p-)={0BHH@njpW1rB(i&d=!;~&$1rYk};V-;(22%%WtRJfe zKPO@KEzZm4HiIUUo)!7ke__3aS8toz5?mpynCMPRw`9;KCkO^G0=)Ykg;x*CPl_@ChLH6cl_IYxur_%QKR3<0H70o@ldMOxM@)c+ui6 zDgM|4s-f64g02lE7Oq%NT+wl(Z7tl2h< z=KxO-m@#oMqLG7PJdsMGUt|fNxi>n@`J?#}Xfz3!5d%chw|);_u4Q|BvZkkmLX*Vp zxi4=~=oo)+@{p=6$a=1q&3VLkyLO{PuMEE%!=( z8;UF7WSw08d~FiwM4niTBwCIAN#Ak?*je|H5MyxT&^s?Rhxi`&8{VjqbT`1ZBZdbU zQcd5wOY2#J4}^Y7Uw!S93D1PNV8r1ifjv|U<`YV$H&{NHK$AM=*~zWv5c|-B$;9QT zDgElhF|Fzc`e1*@hE%0>^YV{wF?_*x1HXt=O6g!r*inR<-@b5Y`;w`Hy0vYZk{BBw z6&W5D8XgrDTQ51iW%ry}U+npXrVf20jv5$m#G_L4f~tEru3tH|W5dRkE0-?$cb7OICEY6L^xv@AQ7AM5wgjoI! zAeLNqkjoEXAV3svyhjG#Y^D>hB$R`UQX`rx9^Scqr`QBs%M)@&gCPVL&XakCEnUw(PepniP^ zPg{Sozyfg;oB8PYS_BxvL{|`hPU#XA!Q4w|y==OO~R z%+^b5vYG_?rGiXTZMnR#Q)Fc4*}Lvkf#jp&k7UtUdM)q6oL+sWZah;0d_pqZ+O=TL z4v>Co#QU2E#f5cz@5fS-ye*X~u56qBQui09e{;10*4d>hAf>n!#du^&qo5|QAAv0b zA0i-}`D)hi0i)mh_Hv~J1B#}iP2EG|2Yqwj22YjUTy%chyqx|c=55|}U?)gUCfoU$ zjRRUPx@5wr0QoPyxMj}7K^k`a1bt2Rn~T~8 zHO&3R1QMDkRbJnN=9!EqCnkhExBfm+YV6Q@a>e~c4>xuXi5+*`09$@Wd&QBd4FfYi z$QNPduSP2U`GfXhiCMeK=uV;RMruf#;b>lN5Vmr(|3ldy1 zuimp{(u=K<5>xvxKUG0lj2WrVyf7s9)4Y5m>;szmEIxAOZlwvtg)}Z*LY7btZ7L#a?#& z!#*(70b67G;3hBTezxaIxmg715A#xW>+q_*b2^3V0q0lh{9>E*%U!hf=c@(P7SLe4 zcm?cWn9FXT%Uko#(9GDTK&AZHC0y4M+MrXvR~M|=eB{E#i}`notE-BOiXYs(eDT7` z9bc}RKCD~QxIhpDNObZx$U)wrv2`-LcI(z>_@r4gCQqC+a$wJHUE4KEi1BxYBwPZ} z+)ACBm!F@PrE`GsEn`u6G3sb!;tP!}LJ zqF?9v`51r8OGUtUVAl<4`Jp<1hRs`bz=XMkQ4(&wzh!2x6kIwCLk&q2 z30HywR?*BZetPN^YKzJo^x+AJ+o@n-6$G!FC+BwqU7ALKm4d`^W^6j4`BYPIoAIBM zKtH%292bG%hj7P72gkrZDhA{BuKtP8B}7`iU$coD%h5pvMGJGJM74*;*5>Aqd*SkK zsyU$1;5B5v5BinV7lBvi&2Qxg+#GRYb zQ^^oBbPw(I8Km`)27X-V^^irhoqVDKANEz zR6L}E5Z!St`l#F-6r6n#OA-`YJJMS;>2vb#prj`$16qwc@l-}_Kr)Hr%8wk)fE^8e zzhh(}f&BFi!H0_=nBPclM&)K* z;)nbm<7YvMgMC64)b9YwrV=2A?B4Pln2kjFxGRdL+3eEfZRNrfB(4!O-f6GhL}JL` zHf9#Ls4nmQ1Rv~)Mzx)gcNP6r#ypjoKd%PSj7Am;9aTu8gySCe3L1Iph*(6i=>AQ5 z;!`qpK%acqX-9!@hI(-!a(1ye^b*=`Glv<^peA3PxY!#ErEwaPZZ!T97-}n;n<>Kq7zh6Ih!k~8PDfQxGqN8K$ zHEP)IwdB`bpS(4wbE7!iSxQz5 z%b}D~tMvTCXNizAg#}(4f+I)_Qj8 zCc4T2{3w8#F0s9ro+u{EbVk{9_rRiIZEE{yVN|+8?Oi|Xi%V59Q+YQYw)`An04BTX z(T}UfWJI`-nJ~|KeV6>|)nvl98wSEEO}0lruASH+4#pVkz&3vT%ddWW2dE_YTBfU8 zCv^bRn2b6IZg;H|CKeuD@?rzrH4H8xY&uro*#26ZNEfJcnvJ)PEF9FxPfbAlvLTs~ zU@XI0N2D8FA1DQ*+W-PT8k`zH*L<2QZ|s@dyAJrG=`gGrb2Zib26%&;31c?J8@thsZ7@eDJzUX5ivfZ`M8l~WsE+QJwc2if z*)Nn@j0+UxvV9YhT>-A+P6T_|iFwcX05n(QR))f3^E$(53lITrsm}lU&5mI(PsuC= zCl^;_$$vuxd7m`Ly9w(?PIcXPVeA(P`t#u z>0ZTVpG`lUumM2b0rLsUha&`<&yOAEzw1~65fV!51JNDDp&jbLc5Lb%zaj)Rq-?8t zNN=A3A5X&STl5vvrhdmWWFK$?X8ZR_TNh#A};#UTeF&Uyku*5C6 zmJgQ-64R0t+}!2>aWOztjV`(4AJuoDu__ab`q0K-BCfH9Fn-n*I<*nZ45a7^-_wqm zo%BJlz^VKc@M=Xn)C0I$1glAUy_(j6>Y|zW2R?XM7jzTqr9#?GB~8gLm@Hym9S`u85Fvru7cg%)aF2;PWF=vUxHqzl z+g3INQXadAcSnOD^@Sd*)kA@aLdlHRoWTlY-ml~X$A>Th+S2k2jchQhyoRyk)w2_D zPswwz90>-m)ItQScW*hWEXSVF6z;3@K3FJZ)pla9MraA6_rtVEJ2 z7|i=Hx>pZ4CM4=qY#mt(G}}=JpA|@GJ;dlbq3^M1mADr29w7UOUYGePNP{4|EUku_ z9|S2{%P|gh&_%v9*CaL}wZ+)S;?qZQi-GsikdfLfi^HIk0yYYrPiUftGLqi&K@5na zLS*w;;`k#RO2&gRD)EZln)1#_3$d%FFwIC|*v!wtBnE23Wi2ZAZ^=BONkV0Nl;!3| zgUaTh`E&y$2H^uOh+F7>2ATzfPzb8Tn(@MCc86mZ08Uy5>kefJY!S!qLAEscd>tC% zMhzjWji>;1S5;ekD}AvEzL48d3Oh0H){!`5#xUzY$5g~Ax|Mu>_)I>{6|xuTwxAxY zjHPl1=&|}NrRo~y(4n9#r2!w00$rG~Z*awFCTKkq`Fui_Y1XiM;!n`jV?L1%y7Ihu zT@xbM#OL2>iK&Gea6DPNMUOpaW5B~Owy2O7?;jC{Rao0oJ&1n*9c0bKAEq^=#Saa7 zRS?vU$@nKEe7Jb&jToAWyUh-yvzYC?6OwdJ!9;}%m;^JIUhFmn@hyX6p%M*=ytI!oXN=F&x{TyY{8%XFnz|<~ zOC!}vtLyXEX-T-UQW&bb&+}i3fQBZH)R=KsG2%2_mz%TXJGUURF~gxiEuHBHbDo$L z-7`AB0l~rRbjh9=*l=3$mwo80{{m-F^kb&YgV|3~X{3Q+R@qpS#R$=)< ztSnH*(k>d&6v$j+^PfdDQH&)n_~75gv-Er0f>`n%$2GTx$y7em=AisLNN-8mrVt%z z^WcUTS;!YKPU63kwlT~x_3v_fxTJ{hI9g+l{RU<*j@oXcFL3BtrI|rb`cORUCpKgH zg)|t*RBc}uj1>5$J5if#ZnLRD8dA+QA-tOZ`py?qT{J;DrddqWVK8!gKP*v|D&!L) zD;gVJMS8w@@`OWJ^zuzqWabw;2%1^LX+M+d?xfCCny{Z752Y$G$X zbaxL(eiy)Ak;Q-uOZkoF%saT{+1C?XYAwJiPOYrQaKZK$=0}M6N}-*0D&rN2@WKv- z+O^r}&9@9yLRI;>F~LmTuW#@V{NBxn25fX_uFX`H+*2RSr7g!)hMz zR3)o2%La!;CtYV~Loi%i8Z zB2M#3SEv~H>JTIqB2xP;AO&my4Hm{M)u#6X@j*%0>8afCBgg>D8RU^G(P+RQc4ihq z@T8fysNH-sR@^6q0@YYe*zY$*VuV-<*&~p0kvWhV%{aM^HiD=oeY*lH@OXB`nNnad zWc=W0Jbjc6E-39I`950W{NuK9ZkQ57{Ma=GDB}jdltdI}Q{o{?M;F{+nQ_zJ*)P=r zxU4j#BB&jt`bzn=bd<*u@ZDouazbfND9s6_DWdyMD9s6_(JAMI(wtD56G{W*Zw5kH|`eDDP;f zq5xgP*|#Y`%I~9RuzIXcc;^n8N{}jN5{yu1{CseDEN_;#YU@#-q5HHhMt+5-7??eoZ-xAb#ck{=MgUp`HSGo-??9*`K2 zf~VdgpKVPve4?t>!gBJS%mkwYC1-*QgX?AP4{-rEQS^NA4B6t4j2{J)R~7Y65qa&q z8zQk)9a^`|*L3-ebh$gpELc5W{@|JHD-=-nrVj!vaVzi4$yi7R&_&C-Xwb@;$!F*V z>G*Tqj!Iy{-RgU?El~0R zrZO~KtXP_)!)z34!+Wm2iOcHBZPlMPpK>2Jdu)Au-T4}@2yF7*rR{t$w+}R-o!&bI zIc?L?PtQsD*{!!)xOsV^1P98Y8W8CE$Biz%sr0VW_b19zDe&_m{ul_ zy~pM6AsSJ4+yMyIz(j~G|NTaKNT^%&wR_JyN`mMGu9QI$bzExnXmuM`@V71cxSq=|;2KScs#pFrGX=uzkssGoe%NqoAuk$FR();yly@## zC`-lG&K_VMS%mQ3OV6TK2oT$@F76%Fl^g3t%`GqdWWy{JKpujeD^w1q;l&fk7 zt}F2X6EXdrv(VQ-Ci|mpBjQND#}Ko)reaQ`1r_|nGsI}Ld9?ggF`6$LzGKjJt3x?#c#eyjr8_l+FAY6hh>V!A1II?U^CGi4j{8^Huz30lD=s* z@d3a3k{cK%HdXB8%QVbl!TefeNx}XLS=+GIoSxMT0ypl=py_yA&L7hKN7?W}7~(~B z%)5^$y>#srANWmJBXY^sUSV`!rXli!D#J&u)|%u!uslPF8!juQ#I`-HG^h=(+wV7b z2Y<+*A8=Vd*k#fKextu0?G&{wzomvsWy|Xzp%vfh^aL%Y(V%YhrTO8+en0V&v2@X) z=-nS*782eZ<3SykuT73tLzKXvi+}yLW&e^3yb_-Q_*?4mH?gIH{b}7)7YU7qWl)S# zxq5qOFlW`Ct>=7w&1Nb$^XlpTm=96c3rl=b#&&(|Td7~tLc z_y4}c@ZheQioBCe2DnARcjQgVV}R8HHM@4Osmi( zjaKXRPd4WlUtLg_O!$cE`d`o>i}usqF(%A?~@tfBH3D1eDlhcdlfb=-(Gd- z_9zdHD~t$03_|VRK94SNkj$IvBZ~xSIDE{|7xLg{!@7Rk4WBop`z=KwbVdc0e4z)e zdFTkq;5G5;^H(91bouOc1J=9IcKrGJ>n-=^*3%+~r07L*NVHOW;XH9m|Cn*`1K-7R;ksmJa7@zdq z^YPk%j_rf6W}^En+;ezUUw@{39!ieYzkc;b*Scg=MX~i1x5Pwwr5!2AYqosZ7MBNk%~mpHqNzMzQR|*0;Jgh{Qt1TGRwjD?^LzCo(C??Hn(Nga`tC zGsz#_R7}jsw$k%ESHIdm2KHjeV1oOg+e(I3lwol_6_0z)wDu$ojy|(@i??@OuY|A(S(SOX=Z!Q7w=r#(v&vV0r61a^!ijAZ z{F)3|u=x}z`hh!cFZf|{lB-ISc|;ke+rzPMLA>kG?;lNDVlTdhiF&M$q2Vo{^7PMy z9%A-jFKAHMJVF!0>5jNuZJR%QNVNh9=sK&vc2HIz05y;ZK@_c@lB(0YN5^9v!B`Z0 zCtxkzXieNmsrEj_u(iS)wP2DeH$M{uDFtwlM_2M|EtNENj*?gn3|Sn41ujIne#Wo0 zQeu)I@c}a$bjLt7w~y2lyEc_yS0e3c9D;boR-(=rT9Y!3_svHnEydb%h~OExh41wN zA6hqY4+K|mrAA-6G|G5}zwLpvet?e<=rM_Oj;tbogP64>=fT3D(Nhg^J_zuj;P=5q zMGVAx;-UA0q{QUM4Ppos>>0Nqln7BAGyf1mB7)#H2G=n_o)5B+eMwRy0C(LsMoUo8 z8tPg7U8J^Sz-4DUan+T&XC?Tykd@?z({Y}?M+#47ekKFvaUk-BTg3`{u_*9p(@8?e zwsX=(l(Qc`HJ9$98mQ+yR%e2(6B2ZA&WLkHoZrYFeM&`;FGbjZA@3~S zS@Vp$y6HY;`@IRZv;;_xy2W;!^5s=J`^|F2##C+c_e%6doR+v6PjF8dzN1vx){AC` zq~PKJ98#w{k`S`!k-3I$2e8VAGt=@Y!hSRZQotgxK{|7ccgJ=A3E;1NS1N5rJ|nNe zQ}fMYvK%DYHrJs*A$Bf|+}TSXk-a&|v@{gkj!l*H0q_-IY2`D0Aw7&s0%pPwwCu_N z9X2807_;x-;E|-gY1m>!RqX|&`YTyB#9@aK)fs!0MwU$XgHW+4U>3xG#h6dW744XsM>HC}Dl|nW3H#;kJ3b@ZR7Mk_Hw$f;^yi z%ie{l9>+hNT%X|?jfehTz>}u9AQpson8U4FgZCvo*vpys$YDb#WepxXA!kCvNmFtt z1yptczhTS7Lx&-`DJi676*pcuM*rf5mi%ww?oYWro^pFW<%Y;2DMI4LtAR`4rD) zJbUo`geM;lG&=!txIfSAGe%~IX4`VIv$KX_vg8@raoO@n073Go>{{7!4w+;dnq8Y* z{z#maok&hURzF*w0SHkZon4Ot;L6FapY6+%vgHv#65LS8h@cVj$ZVHvIST>u@N7M0 zf%&(rY#n7mSdPPmYLzfb=b9Z(;reXY{G(Ke`)7S9BFh!|le6{CF8;^NqD_@PW$|}; zL3y^_Yi9KD#KMqNIfbwdAz9Z2VZGXY55dN&y}ScftUd57Y;oEx&(oS!?In{C#(G$^ z@+6r3w4c{tx!OHSd0j5QOe=RBj3dZr$+d^q=W+y=p-3T#5I-LzKwl507IwI$bA6xM-U8-EMi{4Wl>GB0eNyy>YrU;$zy zHq>1Au}mJ3?VDYn`Tv8*HQRMWeaH9KtZff*APcUYPQosV=EX zX1G7cfsE4r4_$_vE;k=HC)d3Vrq!O+2d8Xcwmqj0P^MtodlOhlwmb#|!BE<6<5^gC zEj-xL<5+lhyz=;tz<%qJokmlgg@!2`E!syLZQA2qnZl9kF9A7#FdUnB4vS@)Z1)`O z@vp*3r8-;l$7AD@XWO-UMi&Akab5Yti9|jQ;`ZYan66-MzwD3s3V~mP2@B=&B;{qV z3Bsg>art$}>jqvvsrF_cz*dkPMe}or7F2(7y-BXAaYRh%+&*VPY0uJJAEUqlLaI4;ooa`8^ zxFNLZj?T%Br&R|iVKhMrBWcIYR-lB@wBhDt*UiRjt|!L9YU}{&WPX< zuJF;h??R!p=6-VmP{^X~lE4GR(E-H?nhyU*&FJut%%{WOfc=r#wLj6}UlvJg@m)In50f&RJ;+Fh ze`h-KXVBrlk6fq8C4yjR_aTC-{gYO7_&1wog9p)#>3g|Kt8twppc4gbq<~S5fL;`^ zoC5kg0(w)xvVTFq89L*?eNt!xp6foH*@tHXBa_EvtFrOR$yR4Kqn9STDZRAWAQcgO z{rIKq>wv(A;oEm5z`8MgfUeo(vyaRsFMWA-mPJm=DCInHKNbAXISIvZHuQgBL~D&8 zWL!UnG<%ydd-FR$`|%!b1vQ{4v-cw+0n8*dAr>!;Bnv-c>0kx)q?5yw4)Sf}dKOb{ zcd0>~y<$8~dlHwUao|BawPP=;)i_VVz z!w1Jt)`+kXShKmR!T*;tOYeTRCoe2do`-fvae2?5c}cTgNJ|Y%l@lKKr?=xoL;nIC zU)~d!J{!j>oq7LmuTg(#b)uv3fBgat$=%uS|L5krcAhRzewWsHXL3y>mx4U+BG+(i zE%M6$XT$dS2Ka&&@s}~E{o82#T^F6O6A8X{&xUFItUvwIXRAjj1t_GsCco`Sf8@#< zr5g1|l{#DYUq|o1HD(!k?s*v49+24ib1y8RZK zsK58hh3$slJ^C3e_o+t@QaF*r|MugO9g#!i@;^&%|DVqXR)n%G0kIn4aOJ9=XL8m(#7E$Fw`f8;vx^6>SL-LXLYJ!G%{$X8PjJ$v$iO{K7l6o%FRi3`BR>1;p+ z9}$@GKgaC)S2NH4WO<37>OKV^g9E89xrPIi$AQ%BrteKTnf8{p;2X*5PS>9pgX;3w za_lf|VGaNB>yP=D;9ZXT6THjEJg>j`QpleQxoHGJ8Gd_p;0*88?G0lAaJu}}`>Ciu zbo%cFxd``kIZFE5zP#URLA_5Z{M*jIZpIV;AC~|7y7wtnpe1?Ku0QhqqsBbd#3$`| z`u(>%`}@Z10R-Y`$ZxKujsTav|94jaK@L~}fx)_9eDDDdUvQ8v=pXt3Y6R2J{+9S( z84&QK1y2h7=K=z$VS!JT@xKt@7{@1d{#T#NUxxI5&>4(@qB%+b-Afnre|MF+d-!>v zS#BOW53DOUhtKnW+2{4U`u_XA-?#c-<8yz~7Qkbkv{?VG1JY@7Jw1N^(s}%8;gYX> zU3~ww!X^I=5tVvRfE}ERNd)Z7q=SoR$f`&)#_ZWE-Tmshof*2iY!Wq3BeALWr! zs9H>gK&1*;%wbR&O^?Jni7^4MbAb;+)fQ%jWO92lg%;NQb$JP)Vr!s4C0gT{ZiGFa|} zcNT(GoSqa$s~8OGm*UCdSQ})WVc8!&N)3@k`*%`mB!El>>*Ywr2T%}K(ARtq1)Bm$ zG1#bI4jn0oZUfc`DG-#;>CvEFrx9qU(J{%f*Ny}$$RF5(pJV~9p}=mcvZA;S5MSM? z9n$KU;gQnqdo0!AkVjXstakIRxKM9k=ZZwNM$_{3s*08i!IT8WlL@#h7noA1Bom)O zE=Xo|t;&+yRxE z`=0N0dSTXQsK7|-gI%tkne$e9^vva1Z%sZznptny z>mhpE_ttr6all)z%Xc`Nybfoxa=Ri~x+BYXxSV>V%F;SHZ`7mZvPQ-vr2qAKSU5hy ztVav^G09@V+38Gtg46#n_wmV2rIH*jcbrY}AOotU)ho#X6x>JTtFKi>%bqTGM9ZD?Ft66Q4Ji;VDffJrZ^dVvVHdT6X>sX; z9qu~Km|e~W`F|M`)9wZrl5#gHv+HbeX}pxXh1-qll5NhI+nyXzr#e!rn{}6_vbxMt z$5S50y_j&dUJBw{mXOPsvzh*!#^7spdQ>LOX*wV`C8=y;$ zqZLJ9agmB9dqD|CWddC$&+j%kP0mY>{_=ZuUB$jDOAdseyqoP+qE|}tTiRIVsp6;M!{0ov)&5?IZ-5JbG@^^Y zPr_>@JSgtf+&j#a*gyrl5#c@J9#H@N4{?7b*-ylMPO>kHd$(lA#oZ*?--)|g!)S{x z_#VkVBiXoQt&&|M*;ggoP%pcm%~-+{tu;b)vRWDM)J>AY$UY|7{u)`kQ)+#GB63?Q4_bLQbfrZq>;2(zexJvKV_k!LeoTx>dg$_51+u=0qYZ61$>0V(4`Th)H z{=D|M*tw9^z8qIml-Y%ylIao_H!Lr;jl06Ob zBGV<)nA_(zq$4-oz$cV0VorDS&F^IXU+V5~mbyEgB`$j8U=nQ-=`doFm`x<}Bmi&d zlcyUjeX>AnK@3YDj{~q@AwG!t5%DLs>%QTV$4P`wenh|X&nnd0xYx!U!C(bW8#E|f z|1(0wVTlrd`BOxV!xA|D8~Uy^EV1P0e~Z|1SU$hnFwU+#Z_-acGj2cq{-e=$(p~w~^+O-sS!Nh0Z<{E6>T8d4buN;jp4D|x@xl_Rw z3E&E5Sz}LsU6ajJur;w(3&9vBsYePEyH$4dVRlZ!Gcd`NmI->r+Izf1nA4eRN`|+k z4$Bp1AycYxhu&#g*pyO9QM1~sDNfg3=x|-?R#GUUCoWo30kL86R@TpU(Iw7yRjW#< z{o3GkTB+3Ud47XTx=xSA%K2VShT$sNQ!BivUyaq}4ajt&u{``BS?_$$bB4W)vrbal zNaiKBBW=`+h1q51Z1 zclv2ku)dlH7V|PAMX7Q$!E#xNSt(sv5XkJLg{mnt-DXc)n3At1)9Wg|eayscu9i)% zS(gW+!&9-PPF7XuGS>6DeTjC+V)ebX-sv<()Rt;UHKe;;TEb1aIay4!M2EY=jkMWd z*p+q%^g1i;4!Sf&8iNaeRNB43#qLkJL$WfuvAe>QtLA8P*SlQ~c2;857$;-j-6WZr zNt<;O%zg=I7a3w^s*Jf&ms%t3Zk1rEvn@7>vNHctovAd|6S=W>I@K^{VPVhFFsdu< zV1Yl_UJ`Ujpv*LkE@P*Yl-@;|v4n1Usgog(DCL!*PLxSRGU2#N4`*o%H*O4AD!Z+Q z`0iTQn&YEa>{+%4C+w+XOu~2GG_h7qPJ3V%1m z4vDTnm*Fc;2wC@w5!oTjek?oW-}N!Iu;GXdkw4W4_~!Bk+{nHxfYc*0L_Vn2yjF(D z6FszJ*!q|(k!#eXZR7}GzjRG8i%arNtkcsli+?0ZOAYtJLv{5;bzi=NBhL{ykt)K*-Yb%<%55AOy$YW9^TWq=Q;24%-GM(6DeLiF|fRM zW;f;pkc-`XWOVTeFGil67@Dvu!2j4;r^=jhE_`(8(Rww^1(&ih7OuVqb`-i2$j0n` zSe1RT=2Eg<#f11ar(XsJ`2+UPT8N{VZz7H=7^)r%S5qyusi{Xz7vSiZ<0#)W=y)EL zO^yYt>@t^HF3{00r;TcgdnH9ET0O~?pBX)yn~B~W_liBy8gxha+aH_~nTTE<_m&yn zQJx0!w;Y`sVz|ECM09Dak4JgOiayHh++8L4=R^$S{jEWSo{^N|x+-W?_;bkKQ`14d z=|NWQydkVXYMzl)6(Wi=`W(V`zB=%`V+VyAuY%4zRVw#%YIVxo&M!_3D^IB5-g#74KxZ2MunNsQm#V{ME|Ok6zsJ{WZm_o2 zflh{+tH;nSXbS8lZfM@xQin5*y*zin1wy?l;+b~|yrdNnRo#g9&4xs)#h;xFleSng zuy6+mZe=NvRC5+%cTP}`Cw=MaV^E8x-&eODn_M!fZk=zwRE{aYbqh)IEsjmz`R0`3 znQD=a3E*)72zW@sTK9VZD(yksX8=6<_{!3rHTmaQ;;4J@3n%dSkMzR6>>pzMDZ?D3IHr97=J3*AnTsU7z5uG6t*u} zSWHfDw5Vz;vstZc7biw=N^voY77Pnh3M!ux0fOiJ*u z6=_kAsJBi$!qa7kP9iJT$WW9)2y4r_PFB&6vlnZ0R!Y70Ox&l)7kyU6l}=KePM&F2 zaHuXnIri5HfHM{pMO1BB1V`!w%XLxHY;sWqN9qJ11d|p@av(?=FA>n8l7_7ctm%^! z{ihK3pG4rR^H?`Z1X+5{RNS4a5^y!uTK8Dbs+Ev!KaoeXS=xf*#X|A$ln|rSbcTG> z9S;6qi+-%)&H6p+RZZmxQa2chB+WjNn7yjzfVWW`^%H_maqKjof%$xO0z2);r#E@g zvbe}50E7MN<`#3=uWmjNL;41Yw6qifm%UQ#Kpb!>f`G;u@H}s+Pn2V}k|O_d;v+4y zCtP5s!Y(svT4g2{FNwE|Qy3|R*sGpK&@JO7IjtZ}ODWE>v$2zhR0fno?@QFdlj#*6 zb*PhBzIquEq5Uy0i>trr_)C;Frxv5WIZuPyo^vdcZSWW2tClO@hN3P~DjU*}J zWfO(X3i@IVCW7V4QCkE--yDH8O_G0^R9)>J^qy?oj>+lz-qWX8+iGTy_RqzgBFUY# z9${T4kyunMaiY~i-Cil{D}1L`L@+}&LmR<9>Q}(~V)xoVIlL)I)6Wv%TR&*Ngza;w zu7Gh(X)uE+efF2IQ^D;v5R%eP*98)oCg1?6V4g&xrpZJ6X&c41P(;_=3cPQt-a!Z# zNQPDdQQH)Zs+d$CTp)%;hUiltsl|+nRR`6owH@vIh7VL;dYJ%%39Im8%bLgAbao1_@bM+S|+Xn0KH2^o(rfhi7pYFUdfAndt*MuNMY5GO zGNOz(lqAg52pK$gKZsBPz?GX{qXBd}dRWo4{}oq~Qj)Tb|G~L}@7LcaN%!LEa~viclnb!rNHqD&Pk zSp%=T5F_TB-mXq?8K;fBtH1J@N%>7?e{r)~tQ%I`Dp8m$cNH z8YtP7(VqiLyQ93Tn=kno2(9+46P@*`++>p(pN6Yq94QJKW|qe+w?CFKgxJn3W_3)) z79vwuAqJV*E-q$KP6uXNvUt&zn4FHp+r2P16=a~A&2~t8!W1<8oc?h?ScH9DVjN>lIv=8Am8)~dUpgeN&vh0DFbxMcI3K^sdtK!wt)bY{zl| zxHlo>&iDG96WLrg%RA-{Z!uB6UBEo*fTXAq=)E43{NHMh6?rwJJ)tvyz*hZWWtHW`vJ1(to zVdDc@M~-XlaYcm-o4zX`);QM)ca((A8rLf0!xb)Uxt-N1LNHzZ4-3;Z&JYp~KFnGd zmX+E1M}+?xXMq>?eMetb9cL6NrEiY3YsI+6k=NW`9unKb_uQ_!Px1ZZpv+EeyYAa1 zzUM|F=Nxypz4h7;9Oyb=^=BZFctHs|8kruPwhO~=uRQe&fEz5QC!-x||jbV*VJ(01}t#SoO+b0 ze##*eAk-^loKqKQPvYL7#o5I%dtcptwodZrRa5o^+V3lQ9*8#bFgIwco?8g(t++Fp z@8nQp_B%|U#n)OqjJj~Y7Vf0C0@^BcgY7OAg4^htgTe7aF*rQUqV`?~&z786_^spu z*uq#m%IG|*WISwZ6bIs@jes<^Z`T=gX^>ldCp-yGocO?bg(j5&P2$|a{eT*?Uavk> zU@oB%=_v6up~;HePMc4J)0x;2RmWKoi@`Du*aU@#!2z=$P3$ML8_O+~++Q`?p&Fo0 z)ks870H_vqN+JLkJ;sZA7$yw++@|N2|8I*3>J-6gqR^+bG^H;ogRknrgaC2fBVB4^ z3;aC!ru$-?FRGMPjw%_SHB^trwtl>)5@+N;iM45CJ`yU5?_r1h256I4wef))fTvMu zw3*V*PZ<}bWO}>UW02NP)eHox#E!D{d?Ml5a zdQDr%sZ~KW*@a9Mqn>iFKuoFBe7lg!C{-s=DiaruqBbd25|k<;gfqLHsp{s2YFGc% ziB2Y|Qi?)d&IRrXV9iqN8bo-gq*WXZcW*%N_z<4@V+!Flm}sVPa2b4|NtZ2$f7_s+ zfi}4j2}`fy-eY(Gx>X%*%p?+q+CXQ!HuDz=!&Q0;6*3|ldS@Be0uL-Z8l4{~UH_>^ zf#hQ54uJ>%lFaf4P;i)fOrC&niIn|ONzW7aJK}bWyF}cp#F=m4_2RZl_BwHwin~PI zUU3#|^?7mqy3OEIy7p6zj27X>?@Rn|)aAVCXhxR)C*$h<9%Kg(>KSFjAA5u=AUxPl z1@GoL->){|ONiDsG1eHR+`&FSQqp59P!hT`ClI;}FGrW?7VuQc!AbM@Yc!CQ!~3_P zb9_0+u5Y6e)|E@Y`1lGnRr$m(zP=AnlruPa{1YF%d|Qi+Cd8|sd05aH1p+O?69$Fd z1uYV}^`hZ>78J@;z1Xn7n9o#26vfJ&Ma-NUa;MiFPB+X8qZ8wKRO)o^T`A9)zS|bZ z==IFQXz-UlapTa9c5nE_0?wScYv`^;dH!11(&e}8zD51278P?Ue74BSF5fh?FhHFI z?9*RhotSTW$f-bJPL=YC(vNHB59;NrusVxGmU;Q6hv&d#Yy~qHJF~FDGz%IvPrn#| zN(%@75qkWgIXIVk)XV=%>c;50_<`C{1}AB0_7r+5Yg{pr6lk#i6A*8qy(VkOXlIez}V}iUNfQ1&DTtu zcI^!lZsvv*XGFP2x?P6;r^0wPgx^RNtzuL>*P;A{sR$KCJf3?G0B=yyj+ke#-dqy#Kle%G0Oca_*e^sEkA4pX=4&6;o{mA&n-CGWmdP0zxCSs0oIG+J)!;h1!F5c7 z>qZT(D8d*5b;nI5+)B8MFq6O%j(b|E zgv$xcx&-==u!J?fi}lMwPu@bg@iYiYDWI%&nuOFpHdmLCxd($v?qi1WRN$5_GHkW4Dx5ZMtEDP7K}xU zJ%l5K3W86mTqZ-|r-WsM?+8CD)#?|eioR5;?Tbpa8%!8MxRfxCa2??$!k?Au_!5D( zbbO!iIbnrT-CtI!4|AdqSgub~LJLA6p#!0ZQhjHD?#3#0jv`!0xQuX>Qs>TBYQSfN z<%I7E>y;WrITwsq>LQ*U#bmtfT*7&Tk%TJ*HIDZ% zj`uK*_b@(Rsq5z`bu;a`nfBaFdv2!8=}}7E&a-!%MHoaFPPl|X`|hOdy9x;H3Eh>t zhq3yrn-HzkL$j57jP>vs@8>ZP^?YMTE|Tp2`?!E8}W6AzB&Nf2)i;Ol8bksEkK8DC3DIl`)sR^PVTX zu8fxtE928ImGRS4%2>aI@DYLduNw(F2nUq0X}dDE)F@+X0iiviJE1ROAYm9`6k!Zu zBH>ZOGs@WewK5J}Nf@t;qttiwWx`^@2ZS#OE0uBl&&oJ?l`_hk5b_Ca30(=j3H=G@ z6D}rDPC4b2-$1xU8C4Gw=ttFj!YhQg2p^o^lu`4eGCb7hqrE=b>!ZCs+Uuje zKHBS}y*}FOdqNo&V_`8C);okx2(;Z=O;|_ROxQ&@L?}~+eW`M(Bg*B6jMR)DOV#mA)1g#Ximr>e4<>jhry?F2#*ow z5nf~wtJ3&0hZ1Gks+V%x#VSOH9xBuhhVClN4u);b{hMMc`d&{;*S#9kI z0gpJ~2%wX)df1Ty<~yJg&{0|E+ED`D0CZ5M+pD29!j2|teGF)?tSCE1z-R}o0JKw9 zg55~KWCyGTv{hDfJ66DL4%h-{qpUnTPQd*R*b699R(m^Mz~c@$257CU61%a0=N(W5 zXr-)yc7lMn0ENm7@oQ*ZWG51}J_8geE80#HFxCOz09q<5$xaqs_tUV_R=$0W~t0VnQ1bUWTwc>kT>7l&QTe5mTF zPEtj7f@){Ssg8Dx>S9N#?sk|evE8b-Z7I7n($*E2FZEWSUE6=+sZPv~5ZixXc7f{3 zvhZ)eGedQvR{zgal2m)D_J1=jMzx`S|7RmZRV${h-@jy_Dxf9)>KA&dJeuP_{zQ9~ zO`H7t?$3v+&anMk|C|PO*24C$ot&te(nSBt(a|s&Ep7iNBSN6z3vIve&HfPQMYg|k zK{4DxJKKNs(YCMv9c}-fzvV#mb+P@MXEcMM=x+Oeysj~bti<*$yF60ay=2?d1WoM`yySd7@o6v;hy7B5@H&UJLDAmml zSH(8V$Tn1I$X&X8bC`?a^4Z?k&t_e@ZGXkH-BdTK^B;bwNOh)8|E_yls18)@-#D#_ zYD?|@H51}gYZVW* zQejGRZ2yLvQdBC<^sm0U5$q7d^~ImU7_Qc~-+X5cLnieiN=qD{{+7Y4ig+DI7sk}j98kTtupOQ zm2Ib~JiDnXuv2J2B6Y`8Z6l=%ivj2OY?&R!%Ejz>YoO{*$^I&4M;Fkm|M=tWRY&Sz zcI2scROH`!TXR)JZOo1YRY;Zo6{Dk6zKqSs%#Iw88MEVD)q)l}U!@SHSGJwy{c(v60!K$L7NeT#U^h?G^vA`v!ZFgg@Am1TE+4p_Jil#-f#l z>x67QylG5InV3$<(u-Oab_T;PL+^wPJ#l67X0hO9(K{hczZ!Wx*-UDg*f}5rK?qK0 zs$ZMDx;!SlOnN7zYJ?$3qb09YUaJ$5^`el4Q3x^-gyMum{n}fDTm->5p|NUX2SdD` z5;85?f_wx4IRUJ;AFP(Etd4dQ0Z%#L1RzIQz3rv~UUEP+AX{03?Pdbr0klwNn5m)l zC%ZXO>kB}ZvKrZG0V44Gd1*9meg`F?pZU^iFBrB`PZYkg)2OI_@DXW`ZAmCXClmilFpDz^f zIv_!B@&ei9TM76O&{$cKc54BbJ75_gUN-q60oOX?$8d6J>=;5e|E{}RAUW!3`+uF*#4e2mYa4w* z6+P?l&+m6Rp?QR+5&UzeT}~!mdpnleqR+I;f#s;c|2-(UL{QRKmxhCqLO{Xqfr7ip zK3Dr{UuT~yo7=_N=MFwl=mm;Pp4g2aey5LOvTtm9xO#56zx}a{KbAP4FH^Iu9ED)@$$pXR3nk@Ku zgqz`FqZ6#GH#)(}dZRn~NLy#4+s&S>$%0L{fNq2=_~F`khb$1RtcOdma+>UO9%hT) z=VZ3%eeUo>t(|>tC$mM91;0*9b;yG6$HzHj!IzhWGhChJMGiF>FE+Z`SNb{|UD@2u z&PI3e0lU;)YL~|Jt>5Sxk_Knm=o*p+!HrHAP^dSz-~N*6?EEq%^v*B4vflY+N_3FT z&3t>Xv$@HX(3{(dCp$Wun@kD4xou-g=#Bs98i~rLt08&{slZ)pJ+EWd*q_fx=ytN?{2M znblc-&ZRIjwM2e|C`DLn%zQ91?Lnnn(SAlgHu2%+MH7)=(-66grx z5aiJbl26D!Cq!ywB4l$H@SET`CxmOVP)NgWkkdj^J0Vo#K*57OAQ@#jIl-+-?hysnf}1s| zzv9X$WaMDLkB7U#fNZnAH_mmo*~{1t-hP2LwNWH;U+mO^3hO*&S`+HJfXupPA zZNpvPVJIWOvsBPL!t6=zXol@q7RfmB}`s8HsZK|Yx}1_V-gDdE4#*UP)60<%{dReD<&59ppM zBcuCzZs!E{@XBCM`?Zygt6|p*nNAIFl;nk;dZSyG>y)nd?2#E5U4}xs-mCd3qdlNo z$|<9LPRGWl7I;?Mm{V``E?`%0*oNYq-?t&dIJFJkGfrv4fRbjXw4r~u)~1>vXOD9#SyMrH7gw=V9=IMxKCvJ>g+;7c}aRf>M;Ulm5kGbWuwz);k) zTRKyx)|tUgWj@!<-=yF5ChpX>_HF(9-sJyo{`SZ|W&XAiBm=u|W~6z@QlRKP8F{ieLo>#jyVyQEWrLKgjP34D$R4_*?6Z z2D&D=U&RLZtM;etSIo1-U`m%@%DI6(u1PSZM=)hzASErhxptGyRW`lA-kKiVTe}2u zx`Sn82g~RYNC^+7v<#;73Zz5_Q;LEqeFG_R!ITccl(PdVNx_t^!Ib`il%~Oy;$TX! z7wN%XbPtdSMvz3v2zH}uppcMYAvwW9iUTPT!IXkv%4ywb6HGZP@JxL0nU2AfAf=NW zOz9R(33j7dFr_4z5~Or8g53yGI(6O140fYipyJSAA-TGc6o}X%<6+Rrp1jm`icAz zv%c6}<+sq%w2>#$&zin?lN1?-0K7^+G4K1slo$@ZN1tMOU?~rvmLc9Ce+0OX{7Idz za`HzKuXe}e4x1_EqnarsIXtz;ltmk*_$Z__Qe4ZC53M{{Yoe?n?utx1>y{;3D`-wM zQsgQlG@-+|XLR*35GhaCReS8uzx!grvg7+sB5^uu*}kgP?@St9oQO3~vWo8acMrFZ zEV-*~i_j364Um@xlPCQRAA+&k+I3I1Ys54$RGG{bH(RjF?GEj=0r^^0`O4v<4shv7 zRqJ93L@|>MW!`Hcx2vjndo;0>W0{mZ zk@6S`p7Cf(`D>!g7E2{#m`q~Ym!kYek1FnXSw!3-L!(;}UNWg=g%M3$O4N;P&p=dS zCVCyo<}gR3`GFQ`nqgZU*l&*mZ#@o7Q~s#?Eq!6;zox~UX19&NW|SS--;s1q14vx0 z;i9Qrq%c}dl`m8cKfwHhaOl%hzt+ zvG?GyvhuRy2e*B@=&yfj)0h|DOdWD^^%!x(%=z!G*s$}^$;#?lkI!%TD}A2ILmS?{ zgB)>yn2Ni9Q>5~p?@iac5;NeWhZd#U)&8;# z3&-dkiuuXYO`NCaoF`8s1hChy9L*6#h}_CBc;q@(rSl4yRGX%wp8ZSjKD!x$Cns97>-}jx zL`b2dX7%Huro^Iv6c+x+)g+phmIYuoaStZf4!K-cu&vDa{-r*eZL z&1oo5`5i;r{)`N1Ks+KMmwVsT;P@$j?>IqL=qC7OF zM+-OaxW?H($^E@Nh56o4oOPN^=bxJR4TK|S{m;UYJ_tv?`lmEllFwunX+f3rWOYMma!L>Wkwoa9SvGlpEa8B_Ig_SeIQpRWUf{p0!4GQh{~H?op!Qy1PRN1X$NPKD#i;|Mm`~!~~hzw!xGjpWQf^@}Jcx1hq*2CmIDL zGzr0ObPjefD4|IWrqoGjPE(Aa2!kF$5`-#DYq(kj#Rb7`oURNDifI0kGOWk{4+KqG zLeu7S!G&X2PkXaAfW_-JLDCq|$U2EN=}L#qw8J_RuTKcQa-?!3r> zAEg3Y+U9|&D3XEiws+v<7+}6_u4#)t75JA}APQDrUzffxKWYpUmSEDHX12LK zTSIFbyjC;Y`kMnV0)x6Xchf_GbCVo6Dh$|!F&~Ly8~87ryUq9Q0IHD2a zg=%+Po3RUiJ^=^P2&>3yBfM#!+dkM;ZDRVFr-c)RqaOe6h}Y8bYGfV#X1u+v(vJ~n zF3DQdvE~S(5s8ba;{r$25sz6CqKl+%*T25;B!x?ysxyboTy_9SM`MY)V_T12u>K@W zQe))0)kbJ?@wE4LQgwnv$vkxSibE8wqdN13GBPKyT{Os?DAD@NI!fj-3v}j0_LFKO zEVbt?y5uB@x}tMOJoL?B`jmvZ6GbIoe}R~A2f5hOa>iwMde)l)LNNW60LE?6kPfI z#tIX;3^8|Hy9uvv;|*nE|3$4SB{M$QU1K>>sddgudG|WCzSc}swN4Xttywx6kv`a| zRYzUXd86j8lldx9>S=q;t6M5f#5alh(UM!JCm59muQ)_KI<>yR60L7=w#4choDFf& zpusv?-{5Q!Ai30=el0jMQ$E+yBIHKhRykLw*AH@~rOaZ`ki%#oaZ+>imEktkkAZut z`Esr>gcFou7O&P3j|j_p9o5%f1UG6BBEe)zaH)H_N<=%$DF^kAj~of2swE-w1D)c5 zF<1GYI@coYPCLeRV|hZ+fG(KnVLT^7N1A(mwNBG@8-{te6AdxU_&dp$0Omqu{)&Et zNWjw{7M;F6j{47WStd9Gs_zFP7i8Td>`eIcQY z1#dt49^#Beh^g+=S68O?kX`z@zMX2Nm#WE#^nC{t2@+elve8;|fWLOp?VkTzo)s|=f z7k8cA6j_xMt={?eR4oORXpLF5_0_A}AW+QGvC56lUs-^tO~>j)ZCO}eYZ2Ik=L_ZO zL~Hkb_LsAoATM*G)jO8l&^ZB7l|(6a%PUujoU(SI#ne>3KE%BdmPDIMdbJDtkL>fhCQ&lMSEAbM!oeFH@d?L3Gk-#b&rX(BRKEu*Y!zMivAta4MsuF1gu zPeWNyKg^q78rzC>Af*IFyby5CyR6y$!7U{sKy{+tL(69llEyjH;KWZ)UX-n;flRIP zU*^|O5fQGkyqpOWEH*F;MXnqu)|sOs@zuiCtU6`_P3alMs=vSgZ`sSnd<8;kAYJM8 ze=lF_^Lv925pJC#gcTWA1NjIBA3-UumJ}DAF6a`eu1ItOHdCFoL?;pty5)N|EhfLod1e^?NocE zfxnZl_5X)9Q~!iuS?rY>Ov`^xLRMY(#`Qba@B4QWTF!=+ay0tCXGUmXMo0zz{>bPY z39Z;`A%%A&v|_7;%r&SjDE@cWTZ7534FrEL&;FfM_xJMb(+mVlvKyKZrsvp8M~RT# zBdW`YDAfCY>)j!=8XCl9bHc9XzPyDUBKG8V|v2qMn7ml#g(Do*dP&D!n48_l6B>s;K#s8807f1Uz%_$0k z68RY<79APg<+n$kRuT0~6@c}O0BmPu#)|2TK(U+=_>bk1btc09O}V5SdjiMS{6A%H z9<(zT7_>DP7_>DP_{a9<;eWBCp=*P3$^ZAPzUrjWr&)c~Nu&Q+t1p>lqTdE;A#S}f zxez^AkwX|UX(875g(|AIB6oCOA-(^YVrjJ0Mvac0^+~$~!|MB++dXWr`FU>?mzZ_^ zHXG9w&T8AWul2>}jyn{~{VHqE{f%ISLJR}@|8lI3-Z@vqXdIPsaRk7Bv6>2vbvFFa$b=lnSSm6hv;AN&7~4fyY+8pwQ6Y@@VJ!>7+%y6JG0 z&*T8n3Bw(cnA>L@d3KkHZ2_343?r?k?S|es_Y27-rcy;b>JE>~=zjS91f5u{7ebBn*%=OE2Vgl5H)fCch*JJ!@VYDHXVKAcXyu zXGuN=RTI~%I>5#Yhc7YTa~XyU^qydw)qfKq(^cIf;-jPg1TFOFF~I$L8L<|17y(z@_I? z40C9EOEJZNG=U680VkJz2d^YUE3QOntNYNBNbNUCL}*Y;4)B_lkMW*jZQs5jG}u#kF^s6v8307~6|bfy*Mf zd|ls_OY4meBJEnwJ4|s3ZbQV}J&tymjFrSZFE*j; zk}bkE_u-;M8&pZG_K_4;4GUH$70}HNB$_PVb#2G%j^5_F;@+`Ss+$gtw8^%WPA}Nhw>Yyr)-`5H^M+Wv{Jke3% zL4?*J6q4#(?8ydC`XxWE6vTECQ-w}Uw`gajiZ0u5;qJizyWsl4rS3#6;z*^n>^K_< zN&}H#j*iv|B6SqG-pHqZ5<#RyYh2O!moNCWLc|>sizyuQ;${SdI);>Q;vx}C<|5f? zAm!81dMTfd){7-`wG69HGA=T#29i@9t z5ZTgh)Ub&<4}b4zkU`>UL~+e5yHHEGV^yFS@X z=^Y?pu!n7wb=K6E)*Ykv4mKtdp|P30Cq4J=elm2lE8GzYIeo92yK+w@<#)6zqnorD za^tfrc2_c^JK0qk-7mfCmDPL1x~;Qa-FN)MAN+hkwuvrw&D42cZ#!PYQ(f)am%iOy z?q%!gW_#D|mq&ZpzGGtiR*a&J`z5jumm0m10UCxkBtpfmXB8xhU^K)X^+aH`uxP{G z>JGg=5IVD@G2jgAQl*!c%kYToGI6DjnSw|SAGqKp9cNGF2Ij6qi6*gC_(RgxXrZ{s zUT4}Ou}_6$Gt|IiNY7KSTNNa-USAs_K5DwgxpsNMC6QvtDS8F)L#S)2SL+qnOWb~y zxkW1uu**TTipXzF87hcmPO=0HuSH^yuwg{`MDGCslrFpUBw^H>?WNkGQBz4EK|h5j_IW~VRQt@ zb>^9lc-eb+)!#1=shWtQtNrC0UmD+DEIhoL@*Vr(sY?nP@lG5I z$I9(XZY~kot3<0T&!JThU6d!uj`3v0mN#!KP7QZVD|Pb2BMV|FT$^S3E4D7VrC)lK zTSrMgvS!}ZoyGK0>^-Z@s@+Rxk7y}ok4=bITE4PPi)Wmj6~m2GSldd=b9l{yNxd@U zMhXmWrCGgq<=lxq)8$4oH!3WDU|~Rb|DALpwIC{NVK$7d$m{+Sm(m;DB7g zEc1D)%MS0}w)xk!%inw9F-`QFPX3dJcK*5sv?tlTeouAzaXA!XnSLLZ*&G*yi||)( zKMHcIP8>9~bm3Opt_3l&M52?Uawjib^3@?>8D!-Mo=)k~@1jQz)$FUnIKP_NE(^^F zXOUE+#?QavFY}k4q_HPi6tb2z2?Oeq^rpG(`#ryT$6+tHO_qnBks@VKKTa;B_Ug#QoX*#8u*<8l0f>Q`A_+Gd zEO^p*HvRJXYqy^SyTDi(C?o|_3)acKVCvjeCqXZTv<7s+t!6!kO?|IipSrLp1~lS{ zPU}A9jcSf^2o5ng5+ZmuLWK`}%g>PzA@M@lBrbUa3OS1+1$rT02nMhS-tbH5 zGJ2}oi14rw$vN}p_LEMy64tOmkp6wCi65Z z@N}U%uwvNl^arbhU<@?!`0Y+p~!FFg17-)_8eXmNw(V_?7&Wp9_+8>oEKFF$erD|bz}Gmm-U-ddHL~!JJzpwcfp*%f@&S8S|(2n+>>D$<}Qk44ehL3T%!Xu>ve0O z@k=G&E()w$Y40v@>MfAv>r@*CLfc96^ipN%ZCLppwNAK_Rje!3!-B3*_jV7> zSA#?RvP9TElSeK1@n9`jgtf$W=t&#<>d!~K(1EChC7wHJ$*;$JAQbp!i5E@(V9N=U zUc@-@&VTuAdznR#Me$8}A-(SZYOgRL__dJ={82+hXD@nQD2mh@H$Vd=gR5LF(dTF0 zwNH~WWQC3>9KHAiu7jGAw@MaQWZF41f2ajv=#wvkGCWNO-um_dQ`^aCEMTw<3-9=1 z4`w!{9HjTltU)*(m=_4A>t8>@=~Lb`Yx0yA%aiTYv4$_R5zCjmMe0a{*Vv;lEip#6 zBG}@C^>1<3O_vSmoY$;zl$yDBOyxa%z{TI(N|k}Y|qAT zKX`u5v?~X8NRM~QO^5k5tiw$3@*}%`S^4gB_l!HIZI+(3LL9_8i87hiefI1f<77rA zIbCUj1VZZcR-f4Y<3|gbl0&-ZHwiR18M(a0GtOP0*cDIIEp z%ietS)^X>RNU5@^H-%)==B$L%7|y3GTt#P zLD^BAGGCv0^|@^`lN;$F=kVY^sWWVt@ArcE|JUOGd!K}E#GDQNp)?d-*Sk*@o$-R3GRL z;$r<%s-7fk4bHuk?RhVSyoW+<`)%?LQjn|4ev!~ispFCzN4(1FpyU}=vJU^O*Vq4z zyMds`SAqWtcLPDMuMJ%d{E>^ne{@Kpi}Kbv;|bcF|7T6->zo^$>Wt^#G@VZmDzE;p zP3P;p8~h*nXgJNe!M~!d)2AL8;lfsd^97xo!}xO}B1f2T4jeS%NG-Z6KL>IJ6tP1h zNq$&Vu7^cq)!hcYHQes>f{ExOMBp8^xna8Sl%Chx<4@T39-IajB&w;;FW{39hIky9 zmn{B*J*%qr_EQTiZMz z7t_dWw8AEY<1f{R9+anrmo>;(WY^4YCafjYVM7obcw(cj914sMjzs zyQgv($kPC)7udCxvtWp+SR&p4s+V$O#fkBZ>cg|h<5mD+yPtdF-GuSL-6M$sp36`FM(b?QO&xIp8ei0$G8)Q-j6$xO}mbH_|whDFvbs;JFbY7j+a09`F4FiIUJ^3oGr8& zdH=^-PkKcNSRk$w5?T$r>+OxlktHK^(Zc22!MDHp^HB;BUj>yoTj+D+D?j0EL7W%l z%OiMOn7jIb2!mq~B#M6q@wTu_+d`}yDR6}+cfQ*3o)E_&0R-Ifg%{1% z-WKBRYzlD4v>5Q`C7Z>6g51ELLX#eop8rwKAT+jH5D$qfy!fGI`w(!;Nda-s(C^l_ zx0I7V0qcK996wK=S9PU^LCq2shA4r_jK1nY#8lOL=foi>Qpm=`*>-V9TK(zyGJ`|htZQZF zial?YRrx@3BV4Ztyx6_Ut=jbyndlg7BVmouIbBy`kz4arJ1t%cg_K7Y)29M4dDX6a zS>}9-2Be0!h0KlcftBy}mr7V46iQY@g|CDi^jaq$PQq`4^0~u6Md(El!yCp_N%|2@ zr5izmSRJcN%EckW!VZ!*SH%b zKu*b*%}PNvFQXwg$ijiqn<2IEn4Yy$qi7pMqsxVjaY&1Oyg%Pt?Sxe}nlcrUkJ10o zr;%*O+Z9JSPXk{|m-tIX8AJ;Vb$KOeo|RWL5{04*p_QB}vP6($hP};+m$I@YnKB9( zYU{Qlj>owAyc5jjvfpmQRReERzSu)i>8KZ!J9Yu{-oNU+Xx^2Gz>wvGJB_wK<0_=u zv#Kq(F(u#`myxb&m@T0ydF~EYssGS)aV29Ic>Hi6~P!ilOeDI16 zvkLiqI0Y2FUjtI8sC=!bG?3Sa*e?V3>NHi=hS8*i%eR3K%o!=%KxrTcpkUmk#acip zrueO%J4_AU^%LdeEi!N!bRsZDphB|5bp2EijrjromIOQIgE~UMrxc{3Z$Cnkr}C8~ z@z#;Y@PbyjFRg9%P9O1v{VPh*g|`b*m9`6*6XR*v+VC9#4S=DC|P56 z$7uv^A#gh3E8qOa4c(HcD@S8&LH0qX5iYh$&%tH0hKSX7HoXXO(7)q1B2-ii>lcjH z1}&MS*6j!4JR;n22r*52g3OTdj7n~a*9mq93p|VA^C4}FD=$nxib06>JmFz#p#)j? z%qTHvZ(i4^SpokO(G*;{<<;?R#ocF9k^_yxRK!8Q4a|O1wdqIQE+uv&c*)S7AG95C ziacJ|E>Zc#H&DPNIZxL$jHer8EE3enB%anZ$FMn|p=o?t)5M6rPGb{ydeZ`)H5?UA ztUMkW95QJdZYb)#X++E8p%}>o2937i)1uyqMU*rSt!Hm6W*omAIM%55+Yu?Hixzb1 z(-_alxTOabMndw1IgQKchF|Up%s0N%v`-d#?b@2raiD!ccR1-k`Fg;6 z72_YuLF=j?ui|q%Y!wWb5S>*Yry`F8sRoG5@|D*JN@U?O-jb!juJApZOCC+Dx}Z&4 z+7;U;kSv)(LP58v6!L8E@kiQ|3H0W6v=kALh?U--M{BYdg|FTsmklka{?F+x&dbFBGB_ijirO{2> z4!Qo}cYoSjE^SKUL?YNWJT9}x<@db2Vw=vHf~AG-Q^7gcKKjx61G@F8=oQ4+FgCsO zMYk?kwq09}G)42EbGAI|>N!h(*jpjCBF#`vI61L{oVRrI5ve^5b1Iso8Lm1*$8=Q^us|IPA~8V(mxlLwY`YkuB2sf_ zUh&#~h}iDRA3c0I1Z9cxb(wq67HeTwlZ#)1OJ~JFm^SB*HcaiMsczg93V}+s$YES4 ze947Q7z_bcz)!43&W`pah z?Xwca`XL;d1ACh2T$aD}6jK9E(i>iXCKiTmqXjueDcD*VQJWQNAQ; zJ!D<;#}4U=tf;cC)iWnypjG3v_3M`%rKGp|xG33A+$!$MpNYq7-VSTfD}VH} z${UkewrzJTz6j-*G+derneYpIZ>n4yF&D1|ZQ%Vc`7gU+Z85tF8@mQlFjM)no+v{P znobEm)#%3kAS^gJ5jd%yU--3&mY$R71qvP@N*Qt-nX1FD`Bgg&5HmCy4jzPpQFQ`dDIo-9=u3hy6$F!s5kq0~;L~67M?z z-`bM=7YQ(Qx@wu>8@3R0qDu1gbKDM0>B&jA(a@Cps z-f|F8QAgzobA_b*&Cdqbo`nOkBn`iGJqxs>97!e?J-(7P+K%B2Q-~zkvj_gdT5T_w zR2V`bD+co##e-*{E9jz)@C)~H3y09IP;zu!k>U7Abl zL=s*Ow{>{KdvnG*tqa4kRJmo=9^3N8$>n0=G69R!gK^~;Zn1cLD zbW4+2iT&5d4_#G~E>Cn-)!UXnF}}FDsw9GWNQn;lPA@|?jI;{P?5pK@VABqUhQ~}h*d{{aDEe+K z!hivA4xqhlRUlypJm-M!fOfWZ1Y87o*a2+-ZEb5eNDJ^+2V?`<*w#i&b^y~I&;(Fq zTWipU0VX;i9?;shz6Lb{E^|Nxpp|WXfP?{XKA_MxA%6r~uW9QGs~@1i=0mti0_HiO zE1;##7jlyY{M`Yq0Qt7H6KoE+%K=#c9E1IW%pGvE1LVVuI0gF-GiJaw4u}Qd8*C}N z24EB*8^Sb9L+f4kmu%Y_0%#%MWNj|sWe4;DWO2w3Sq9)~2Xq492kZdC48R-*6aX@8 zYdazhz?}}@nq9?OkBk~H)dBL6d(H}ftFi=K<$xGKDfmZ+fZ;>%r3WWM{p4uDWT~Gx z{|WDe|LEI-{~Paw^^36s+;VV{)_>*ck51lZD)Tw{Kxup*0c_JD=A59KgqPW6)&+#yQ|y0N>J0f?EJgb-;Q6 zpVZAjN&~pl0owt5QnvuU127wKx&vj@;`&e`#5$Ouh3&1GCzq*QR{wn-6X9ZUtuWqT@4Muw#Dnjxbv2gWnK^ zC+V9nB+kcXMEyoP@YnZB4lP17LGvS3vn4QYe(wx7_YAj3)MEMXNv@v<^IWY~H4gej zDq6^?5N;rEcK7tljq01o;elx}F5W5)U2_fySC~&}>C>z^|MAJqNx|L(IdZ-nt<<#$zg;WuJ@;wR2Kve-Xn`+zenXw9)!ax? z#SaFfkotTXdAu9O3#W)9bh~<YJ58fiLjeMDU}=KpsI`@x%5$o{I6t$Yd=3rSXoivq}pYhDTQf-JV&<)-Z`Y` zBU)VZWgE^ziwHxqc^}||2GTh3F(z3{-l3#Q|Au@O#Wy@;=%mV{*U2{ue}GiEJo zedMctozHzqJ467TVjnv`Nu(9L6seW|6wM=($NIimxR%MApM<~d%rKY;z=yul|tpn`xuJsC*(bTnj=DWowkwlx$@BnrBa_2 z4Y221ihf9@QSE1a5W28BC9!g4V=AOm$$$2;P1N{*%VBVl*5g^! z_WmRTL*vZ*5AtBmCw+N|A`z0rnkCq;yNuXTG^KWT5wDRMDW=ags}mVVb@@7}Yad?( zmzj}7!jbi8;?$ts7Sm@Hi%z=YSWA1B1qd}7#G9wf|nZ{)op?S8hpImtUs{JvXz_5|&>x*nGq5`A`Z~gVMK3)4? z_cSxuDfV4)j@cNt9!~%J*Gexg=}hW!om_Y1TZ?%r_pDlQ%kUnZ&Lw%5q}QL4jzePP ztK744-VK8~cOEc#?(*FgWT-zk9fzoj(OU7$Yai3YId^jZ zj-7|zv|yE-6=nfQ6ZJW5QAdgTclYwSllpfqzVNmeS8H9d&LfA!wJ**Xq~=bZ0bP2I zy6g2d`$Z>hOD6oUUO9igxKxb})-`EhkF&14cgfF(L=j`a|4~~~w;SL7jR9$psign- z2S51bh+`@znZld*|Jzpwna)x5C6x@k?#ZQF1IBY?az(bd@bMpxqXLO^`cAtCmJFQq z^s=2O#~?PvduLSMrO$1^U+nL)EY}|@3e#DlTVA0(l17|bijyT=XNf5o{o*FP1B9O` zON7qSsMWZa#lvXWnX*Jm7I$o$YhK%mR{@bKIzyr@maSwb3joU~ZRCge<6qT!_( zzm%T0ezXS@Q;}JoRt(f8c{rs%YlV1DMag=4o<@?V-W`H*raZCa5g!Sc&Hn`-36e#Q zqXq`pX>lA`_PX@w(QlAs)!voQOm5JncrxtM8D#8iv*zIU3#JT`H{=x1nDqU@be7za zb+64hzgJyy0?7x0$t>axZ{7W;euF0m9!@0nU?A0xxaa+QFYkXI%R;}{BoYtl#Elgm z5ps>~Kj_*g_1CMQqZ8C&@&2&z*Ar!k=OzsuF!sSOcFMu|6q1fGWiEMk?SUQ3=iPYG z1>BO+tSeeZny>`fzwPkh8N z)NHEnhc)SS{UeV||I-E6{QZ-y*m#P8O9INskodx(*Gw2SeB7)LHjC+Jb6$R#Dze$Ob3|q-*y{6tdq`gXFziDEvNtrxnQ50ohtcefA&{@Zi)_FbT=d4Szi^>|K-^WDL=CrUX@ zZs%c#C%TiaJ2fTs?Ko!>=QgBKs7e^Vm1iox>qM~>0u>@YVQS$9jF8*6vlhxK-jfro z&;*!g0Q0m0DRyQJk5%56En6^6hRSLw{Eq52pZlJwoABW%6sVXS@V z(pNJN|0?1To{PA)m)3}1 zMOy0lMkrNI*C<~HA)!iOFQi9e8VxZgx4J`ba|TS?#*5nlk-Xv-mUl*Omr)vdJBkbp zj6`t%EeLuW4XTqS~L#}`NE5}^Iu^HOEa^asZ8_@59DbFky zyCZFmq%qGkQ!eN?;Icn2T*-dq*d00B_vAsn292MC-oDNpN!O?`_>(BqWy5G#W3NGz zpI){@tNyWclA;4O-Vj*xtphtnpuz=Ch1@+ueMR>1(`##EpODUtAJntHsQuvv*~4o?8Fq2G6q7@j#aGQ%^63>|uYetT-&ZzTF( zN2+x?jIo5U<1LULGnZnU&b# z;aa;IDy+1T1u`d2#aNEuFX-93JPce4x;~<^^zQl=`-j;7K)tLXTaoqLOQ40W%OW{89JT`ksFkS zI9UFNkz+HX4yw^Z%ecA2ijq70>HNEIzvac5Pb_}u;SXkBcgK|OeTTwQVX&=V1}a_Z zb*nw?vS&>G==%-cy*@?`_Z_zEp0=mLwh!(k{|-1hvEst84kj?H+XeH!*vgT96B#W3 zEz65dEM`euC;yiQ!W_IER(t8;v;<_Mo7E+j@R1$ zT2iT-8a$9Zv?S9!$d*UluB`Ff;D)K6WJ<6tH`SPaavWygBga*U6TFOz&-9w|Zo;h= z<{{YQ(01>Z@u5*hRhEe5mDDiO40SB`z8$ofk*BAWEIxW7NT~?z$}99S%uYQ9&(-Sk zD(<6^GGTbXwiUuF_HsYltg6vG4UFo%mCgy#9h3VV^;a(DJjjgB+gsmm3d?= zsiiS>G8~l0yE3f=E6Xg6Tx7egSkqZ!@!_JE7C!UHy|+&pKjzBFE4^bUPP=Co^3i>cHPGSRWclFLXJ*fsIQEKB!v^&3 z(zdW=WJ_;hyB_BZhVj}R$c96J4<*<5O9qRth}j3 zp)KFOud{HVJ0;G^Azoo38G=JPebwSeIGav#z*&R{9m2%~$yZZ$aLcMUAG&cQCP+cA z30W9j!h+Qt-}CEok}fLFPYpO`Ku#n(x2J6Hy3bykGv&hKyp$Mi>y!`aa14A}acI+5 zFWfW!{O%-(jYJ`I1pEQU39H_iGjULd78przyS0Ma*WO(oo;tj1Rsv`7g~mCFy~3uY z&*E4nFF9HaG1{qeo?JBR>V9GwL7on(a?O&5rw&6GFZL6iRJG)G>?69U8YdqQc2%B0 z76=us%9nF_BxnngUSMw%q^N@{ zblh3KnCcLK8n;THd|4_1VA-t^i7w+`2WGEAM2 z5{gL3?*Zw!tYe@>a3|~f#J)pcPwJZ0B!bcqHPa3$jKEh8K_leyf)~l_@*hFM2m)C1 z_>|!Vn!d%jR!li+sni79m@YHiZ(&J}8(izpQ;c*LysC;AOAk^1_u>^y^dD@*E}e4B2fFjFxFM6aVG&M>JR5Ch`7zb-Y@5gXl3he-;b=444-;k| zTiAsxOaQr+=Z7d?)SrVgD#|PX7gwzOa|<@JD6`NnZ|A3x;`1=dECOMlc%h%X)kbD3 zf30nPH=0>z#t`v%Yi#?wk&Q|tvE9?|MR+A_u7=gku0C?StfCT3?cC^KANyv_&%bWo zw)^nOz-^u=vJd|Kv1b;(wCKYXYn`-8d4PR`lLY(D8!_sNu@h&^dU^pFR<7H+hevgR z7T!a4XSB%8FKkyb_~OgQOq?-$-s>N&T>ITP^VdQL&Rp6893PNo$!>S#qR+YijMm;&y@3wuOVOk4`y&WDbfK5O3VAFtlB|3sA( zlLFHzYJ!8o?{5yiWa90QF8XTSj>CNSl_C;hiT9(;5dY}u`R)5$bp5^0z5C7P11IIH zv~mv!lL%XgBRQU76ANO(+QdaIrn%BOGX!x3!<9fM%i zFpltOY-(QD!K0_mS@{09V)jk3QCJPg7kxPpl_8Cu@#x!YcAtVOJh{HHTdDLlYlY+CZy7z@oe)vsWk%yx7J4QlyY+A=5*Zk$__kM6p#@%QU zk7J^onAQI5%WiviX~4W(T*OjNXjJ3otZZ&_lH)pl2@GID!roh#ZBW;o00wD+n6!=wo_;3{Zh1Ftk z0T!r&;?xq0T6Cf@NOdeUt(;9bWuiZf(z+5u03L-$5mZ)%77bRJC~Kq_8&$b4%H~!7 zqpg&AL4+w-wXz3LkV3h%-OCjun5>Ng@EcZ!{6#>Adf<7Ei9+3ak1=Wu-RePplWm1x zGf60KC3ICoZ74*;(GkX(R@6&Uc5aO9q0ZSh$$*7nc3i%R|;j?(M8sqXP2^4xm z)Tk^-xy2A-SyH{K=HW%$%Tu4!|BQU~n8=~4j`EQru6c$ekJn;Uvwq`NW5y^kYP6pZ zG?xzWvFy2$mYXv-Dh^i+sIg}dwdFFixToSLcp%tv*yfDTflasZA6#f;6u%L?#qFFm z*R)CfoUb~cceE}!i?+N4n|}1Ca$7^^MFS#QA2-KdoMJ5NetqN3g{p|*ar&Q}DApOh z8pG;)r_}VE)3_KkO;){?<{YsWGhF7c(tDe$Ya7@|g7q=P02hzWn6jD|2PG)*gDR0&(Yt55_wPe}c$Gae#pI zT_FBs&4#NyY6i(vXJOLD92Uqfc54{ty*09fa0J_8eX0wGewyw830?r<$AywzOD8!% zf^DD@{{mkeoVIaqHjVbttYD zhG_0!#li2N>eDDuScYf9dOTmYX5*wE?r(uca%r|Wg9+rPhYlL7dQ$L@~X`@WiJ z97W?5;oTH)X8l`3&EUjA%Cpz24Hf&oe&ot*Iw;Nx7*8!4YS2JOwby&a{{PmdOx#BQ z!!L^srTV8RMfx>h<*xo^vPf6|>a*Ne|LU<%RR8L-Q&j&lFs`cp)nP%e{t3ZLzjPM! z>R%dWUDdx-?7pghDHw)T|7u}5R{c|`k?LO(CTP{aM6A;EOTcuk`WKH;TlFsvtGDW3 zEM{@lzZmT18rtEXSkp*uBx!)0C)%XpFD(<7v=0f&bvIlp$s#A|Mp7T6Y}Qwjx1FRt z2?h(tS%pcaIZ1Ppx^{RkPM{=@IY|~th8_N!1)bzxCn2URofTfo_C_+&NfJqF+uNaAF_d$E$4PSS=X)(#)W%ADj`CuvL)Bm3P;l}vP!`Xte^-|bjq zZ7OUUTXKu4KMF;IB-;G`p9mjQGmGNRn_cne%{n>iRnNvmfKUur4h})Yj6vHV^&pw)Bxgu4 z2E7b5HpyHkDJQ`g^lHZ#bg?l84Pka_j6w%G)}Y@z)}Zl@8R%_Jvf8l*O@p<CkLjpP7&!MW9kw9d}giIP93jN*03a=!=YYgU8$!I6pK+?zx z*M*!XdB{orA<47Cc)uxm%1I8Aly-H2 zzlo4a$vp-(A;KkQHaIsHt4eZm{9_9%0x)G4s-{4B4>I5eZ;7w1curKkI2N6KjL=I? zZxI$;ZRkW(7&^pX@U@|nlVBlW1mJV+&?}kj|DYUtvqT8Aw*yBW;jTG)5hNOpE(B$< zVH~tZJ3DYH&ja!@eT+b?9EYF*Ex9< z!HILy+V<~EqxFzTL=8Xku&#?UOLFHhir!crR#La>`|keZs?xmQhMLB-ZJA*<{74|Iqf zLdQF2tzotGV1dx?mYKh5afVAzZhGxA-|sKeNklw=R-bM!^0RtlvzF0e)O&wm5y1j~ zK9ZGAftl(tap^9F0x_CQ0be;VRyI3^fswjlx`DAGw2+=wioY>~7;f z*mN41pPVNvBjOu$8uRYjV@OKnT`4Px3x~h?o3XXfh04gpyuQ!;=YW8%1jP?>R^3a+ zEZ8b^u4u>)A!oH3H0>vaf{4+1WJ2!Mk9_`5G52F2Rg_;yTc^A-K?3=}6`j_4@QW)B z$(TbIsGw2r$G+I10^^`}^!}ILwP4F>9uR7`(*rO4dQ4h%T>xq;>xv1Vn|Dfpa55cs z$LtNKyyA2XUYG&@IwAuSUEm$Fsyi)-RgNa7x4(V%M)iS-Moz5q-p{O1tn#X8GZF%ckUpO05EM~e8=cG-$_SKCyzTh}$5g73;Ru*i1#P&F+(M@y6a6#7 zd|0->&>tdumeRiS@D1zu>!11wuenBPhmWA2e^kaCkZ4=%RwA4 zSFFBv#6bGmX|WP>Mm(};Ky4P z3Z*%MJoCwQy=%_;0)lquBP^7yQo}A|-d%H46EvSqm@D!1FCA57tki-lhwNHI*VDef+9;o8nD<^zvVDj1^!qx?S>l;}~ zkVj(hnQ>f* ztd#FJrFp-{zuK)O2>TH_GO1C|2_OG;mahqe2D}~`cDrZ(M!hWv0THn*X0z5E*Q;Vq z0?OW?84fHT<|MTm_nP8B>;V^%+vEO)240UyFJ13?--M1~3%vd9)h238N8303C(|7m znK%m|MkZz*!^lL-7dvY?wVZEj61S273XpLw>vDvCX3pWR&15k%6Cs^$Rcm0h4$CH< z2_Z8k6VXXKrcOgH&HW;z=CTyf*1>aDJ! zYRK>MORSFm2cYwW2Yx6C+3w0<8JAljg=c26#a_4BhiwCPEa;kaUAt)c&<~H=VSm8u z^Loqu5foA!>B^jZCgAf0z5bxT(htYsZ;A1UW!>-t>_?bWmk)JSfP*|56>E9wy?q*k z4v*U(wIlKH|`&?+;J^mzrBdeH~;{~mU{|>v|J}TvE9#^@@{yd}H zgP6hZ_WF~#8bTDxw7PgUj=LzBf}Q}Eg@{PE#aQjuW9l5^tL4u{`HAtxW$Wz;M`PuP>2vfz`)Yfmvnc>cy~^HiZ4WVY0uT<_zlB=pkX->-SdpeX+hY z|J3*=u&Y2%Dc@wle3UtMKn{fYKl&7E)bk7Ya4@&7(ZSzd4Y*OGaBous%yFKM9pyn` zm81U58qGQj!Wn73Pwe=4&g2_wlklRJL{0suvKveBr6edKuiANphQjJvA= z1EL|5c#|dHMR8=2A z1rppdTjt+$xv4u7AqB&SJabA<69%UNtN#pXMc5zEIj}>>IMEe}_Yyl9Cni8Mb_Q}p z;R`WlT!6Z9Q^Q#ou#PqUBJ8fq1>gbXAOruw(TQ7fBoJNe3(>ReQVEwV%tZK zV4$KBa~_Z14=R+;D{VHqb~{vfv|#x;l~l0Cc*1@!Pq0Y%{L%j7KAawcVULfGDB#1SYR{W(d40BP5$~nG zfZyY(@MDC)ViEEuuu7dFpNs=A8Vgr`-azVcdIH_6-;Ifs*TMgZV*K`7G+0k0}cmg5zkuecl%TPECZ~|0aw85@!Q95 zpjByBqMwy4#b1nh1Ug#})(7@xKsKUyE{ptRuHaUHzAgQbHvoCf?+Rcr6~tZ&Gqazr z)tjYR4gEzSKh4k@U1^`b4C+f_YA(~;TFJ3H_~$0s=f!Zjfxpn_p-~|$=}Tr`X6%xy zvSVL>KD}ba&5%AaBhlps{^Cj+K+`_&NY^mcl8~5l6>~BA-3G!Q#xgc4ma7f@5e$jF zo*rak8@s!7E7R}t`rJY2<9jJK9EER2rr*OZV^_F$A^f-M`#n5`g-D@Xpq1T^E!wYL zIjP4eU=-#Jx}S(OrydU@;J5#{n0Z>CiR8vM?DiN=rpCQ&$A>S#v?x*rS$;no2LSFNqKMkr+_ zIu-}@?VV?i?)`f$_E`((&wk_O=`TDx^~tARm{Db+uy*Ud<7Z1ND!sA@u50i3{rk`6 z$VhAWtwXQx-?vxKD|=kkt6!DL!i@Jn|8f1+UHgs|3Pvo$-u}vzaW^ZbPk!^JjdHTH z8f4bb%*w8^VCZ+tJx{(iXW^0+e;O?}3d7O?-7aiyOtrApii^YI`dCbCY+RK=Lr#8& z9s`Ds96$8~!IVMaq}$%Sda1@5D>5P;+M^Ife^Ofg+@>urx@Po@FaH$5NBq%vOhH*} zYO~@Lqfd=bNJ`JSc<^JN8r}`oK{vs*btzzXLPqQBp8fF{6Us0ttT7pv-1GT%gt1TyW&D0;{*ddn25T0G``e2Jl;4~yT!~+DXy6fn- zR~@BB8lYYmNJ{T3ZbL^{W0i;vI+5Qwg682A7$hNOTzGIS;U z)J6Cwpo3utVMpQlmWC3AKExH*><|8g{DF7>hIrdJFKg*9mFcsUT=$x%SDY$C3fh7? zh)@*;RSBw9{cEQmD}#k^N#~=+mQFdY=VRLnV8RV{nn=y;Yd$Puf#x%ckyK9YhJ8`{ za_?J*i6vpt!?uUdn73g!!UPI2RLr1IDs$@fnE&D)v9mLe2}TlOW-U zc1SbRhp$Hx5d3>|Q?hy^qV+CXyuu>h#rncEV;F-;?T_WWNm00B^Mi3_;S&g_y05lS z_2^b@&{~1hZ$E=HqmZ3%%bf(}(Eb_;or7vDgIS=QtfjgdymCne?eag?QU$6mHBEt| z>(F0RkC!et;-ZEL2q0McRSzEW<1b52o{wa|uM5k-V|tOxW@C~{#qM=C0l6O=jY2Pv z9_Kc^cEreC8i%s-cQfdM81if5&k`e}X@dD!(`huN?1x+B$HB&6#lW``9w&i4oj_0> z`Kw*jQ&}!)Amk?&si%(Y+bKRST&}=7XO8UoYc-L)uv~%6^Lr~xPVQO%-6!u&n>22O zLu&de3Xkpkd)4Q!PZ=|;U)PJ;I;1AnnEN)ZSTct=K;7H7YMPhR2z}xy$6|Edmv28g z{+527TI4j$ZPu!NH<(~!Z+Z%A(3uYpy|P2gCfN;gT6F3=Y|JD$<`V!+o!%=$(ZO9> zX4k8q)wJ#9gYSFsy-&Wy8s!)ci^YdFd@&PK(frKXwHxGj>OXQ4W>A0aIfAXp5o#Dv4fiT%^!OTFy+Ds<**9hv-+cFM|5wInVz26yfe7Wi&t&KOv)H> z<){c#!>jl7yD%#~wO%!(^GVs2$^QuZ+p0PSU)CfeB|WFZ!22EiX0MF2^3+E68K;i? z`e|vIm`6?ftQx_&F=oEtLv8-jl%GcVorg?vz&0secje)+X5J%1&K3UJm*DvebyJwU zG#^)%@mIH`WEozaL+@ zs46#wwW`NCS%x9;IvG0}W*KXZ*x*P-u#*`*o!mtW%LPG2@%oRZ!?9_<{4|8^8&PnXjS&a@6An5S2zmG4lmsXTGW9@wqwI z_PFP%kuSbI>Y=CmUwU~yA2==0Q(06XV(>7~w#$x{pR%z@#Ld8qVdmED$3Gi8>c)J& z2JLLDUvdP|yF{_;xGVSm{^bj8S@s}l-L#$M)wR-bX_NPV13_Up+Mlv{`{2&}$JW2k>FY z9gX>t#9=W}$PM@}Aw{(1OYU{w%oQhDl6=8EUq0S1muntLE#gIJ()|)^DC(ikw3qNd z-tr|~GWyNcXZ4hC>!L}$usFmx3p8VmC>6V0Zhq`9Dx#LFEP9ONYNl=VeK(xF9 zAgg8QivA&tN5D~e1VrvCIp4ljR;*x`gacbQ{Q93SaR`W9Sa_bLYqcq>0;s~P&z||* zl>5irJ|beosga}ZdSu3X3qD$cRqRd-W~)qE>%pgn{Mfw@yT11ooiDj4>Y{>+JNF!P z+Z|)?o$}Iq3o(&3rmZwgIFtX%?D z+&@2m_>$8#*b+xp>^8*ziGw>fty=N*$L~#>Ja*WCUcIgzI*y0Wf5RvVA1cor-1=L! zA#rqQr(rAzVtMNL!QFrU_VxT%Cf_lr?=`)z9XjTbmyH#$V_z%n2x0;P@D+%mVrb)t zSGh-lExqpYV#TZcYR>Zy-7%!^Raf>IGP?TNGGj-J3s4xA4>B>Ghg_ip3SD_>|DP+D z&Ux{{Tl)66{EFV@k>%@lU|(yDef3Btzx@jOS9D_EU%xDVeah$|y{~ZczV^|IP5aEA z#9-&x`|+>v5*u*$@5>jw{D{fcqtDR0pMLktHPr)5E``GkcpXO%CtHsm*Ia-5q;p-& zbajP~IU*{YL6qmlem$?L89;1AtKC%OEwbR1DPxCS*SGJ$oA1&HBfEA22AUw5-z<3b z(YtOQ*thR>H;7Y;ofdx4PJZk1&3+Hx85aLi zcGbGI5TPfLaBte2)wpmI7#E2?({2Nc zRJ#UVNp?7%>*cujTFK9HnG5E{bsb=C2)CuA;p`u-~Fp8wH2n;5Rog0CH(aKhd9BK=`5 zN{yEkCa{CH0q$IP!XWrUaO-L@RCQ#$b@v{ctL{|c$zfq%$d5X@79g#-`qFjh?qG1t zt@x?M*taH!Qzdz(LU~3@)evcgOO+8Yez8;JWyLs9!TQ{ReI*%A$B|86WveuHjo8}Y`y6i#( zGz}tx8Y-ojFZxYc_T+}AT}AAdXq|+Byr&i^(>F# z0;EQ=->KfR^;5b-pSY}JhJY0R$@(CkRY6o%ROovMP%RC^6(D<tpsGTzGY=6&D4i%^Mq< zlW&GGU=Ur_KWUfI8J8{53TA4h>-hjAP<32V?Trt%fnZf6!vhw~od-MMhKcK&Od zimZ(1_R#=2hB0gCJ3Iv$4UM85D%m`$4lYxWrQ!nc%9Yx;f-noro%DfI*H)5$?UjGx zCgxSoYdNRgzHnG#Xyn%O6<0Ds{#N)%sR{g-uM`DzdUDelp5D& z;|0r`@qUyLBX=#W5>TVj8hmKSPGf&M0|mgxiJ#gw9B4IZ^-)so(YG%ryS4~Ails*$ zwR&SKvDwWl4v8HIRj>`{n=O$i8Skqu|Lwsn6<%VxTAc>cf)FRDFZZfBJIRu0m+Bq0 zo;#hy8wARK97k|u;6wPH63o(wtRqqqki<6ct_!l(oPrf%N+CF9zA(j0ejG+16BUfJ zgh3o5J~1!qk8C>mvr@7}^_jcE2esLhd_9toS8ze}zJv~}*U_xtQP$1RpMqH` zwDRv?wyTt{&}&zI-5+U*nJ$qfd|eElnzkfBxUyoX!pz5;fc3-8@m2%QswoQPp%YH<^wUkQESNE%%C+cAio zXsd|T0wGQ;jwd{p+WwtYP&dILP1S9M^nhWF60C@{2Nxgbvq7kFcK4FW13K_d=rZ`; zQm%U$PV@r1)Vu4iU*=uY^O}qEhClsxIf_4|qIUT{ySyB&9}(Li{tI{i@W$9H(UD>A zC8T|{ZlE#^@04TUmsN<-xouqh%+L-E1m%nis~$wo@XPxX2DGgwdkJ*ZqHilsZ29Wt z(LI_QSaNJK%(bJxFMM>!B@Q$<0Z61>1AgiK`>ttOS184bif9yWYi8elMdMWYyT+mv zbQERp-PJuWnQ=GaYpPXnxydX?31|aBj~0SewN@?>RUn#70aCm@)&Z1GLJ_F?Py|k| zf}KuA4`}LJJ8v?u+j^r~|5gL)h5j$A0ki(QRdvw%{a33pQ1Y2pZ8_Jfx~Tbd>FDnZ z9vS4csve3y)6g|@?z^Ui!3?jDEwZ_^`n~bp8>I@9I}=Ofb4o>eMp3ddYOWZSp<>{i z%VVwxnBmCbDp@xFtHEgso<@T+^4eZ;;{(&@ErV$> z0y(&I)3}<}rvPuj>ZaCTcI_RHy|r}pHiv-~KlWcQQj5GbFEV4{_Z#3$6a=$XSOIOZe~CN~&sZ-DVxDU+ZKkhy-$`QWF6EsGjJFD%G^M(+zUSG%u!I zT6+idiqo%a&V2<5h{>E*bRFynCab(V;}qWmfi2{}BLTe18LW8c0n?O8Ge2LuyZQ}d zDgO+7RoR&%QrAl?SOtV1TjlLpx0%|cK{-`!M3;KxGz=nv;&=SY2*4f<51%< zuFD#wq0V44s;3b2q(h@{a_Ow6 z#trP+rg2s_;&6=weX7Tz81GYJy-!l%ylM9hJ`b3Id9`ozj~~4<>Gm6X_Zj-&`47S3 z2Rvn`4{cxl`RkJj8`G>BvLVSjTTygu=ep$!Uw`4ncb3*v15M|zGfb$G|dRjW4bby^i!6|d&(p+8ms$o^FoNLMb#M{~OH)Jcg+1RIBvfj2m{ zZ{xRfo*p}}YimWfQQ2r;#6f_(Bg+60)S_ojSB=e@FWz}<#5L{dP7@^u1YaXHb0O-B zK!#y7BkGm;Gaek;gE0d&f-(XA<#Xio6*mNzaXR2=OjfDW`*+H3;KcO62^AUHDY?13 zUGCGB<;4Yi)_?!$>=$`=pf8d^tddQ};a3+f$7Ox@-U9~@?A`e%BR6I2&_2~~>$38! zW4GM>#A|aFeE8`XUw!e(f_HiT@^;O#t6s2)RnY(XVYiPNGkV;858gX^_>DYT-#~IG zJ{qtG;RfKGWLN#5FdG1rl2!F<2q;PpxF>nxoKS8!_uNm{a>A(yI>5QnfiQJ~pyXt8 z3`;9PMJS##Sl2KR0A5Z-{D$Jl4KWH4tYeoLAn`%4Mgi;s=&M9-L+U1lD;W?3GjNh& z(0a58ig{stAcwIi@xw|aaDa7*gchJ3LX^WiGKF{`B2)-vk7WeXGz>+MZD3#mlUymr z(+3j)VH^!7eAL z9f%p82a80zsY-}F*pI+x*-(my4*v7e56?XMFIkSW8)&3*rk zwS`P(9-)(H3wF?m7U(r`ei*v!+AwR{T~}V6m7ah+Or)m-7m)x7NwZy@0aiqYDV9 zwAtVRG4^FAmQLv?P3b9dAZnaMZptiD-yGmvttRj{mi7uC9CrvN~qct+-q-59u9zTpEC?cY0-Lu!FijM=tIDxDZE;$T}V30XNjuGL* zjt1U=;n}4OQCHR`zjR%c>oVq#JVZ)1cpx={0zI6F`__vh!NeGm>|$Dw_8~l@V07%9 zA}OF?`jVRYA7!nlVRc;f+N8AV+N4*nX4enM@7t?sN6gb8;bUB}0uSMp)MCjNco_r) zdaVd+TXIax_MIo*_4e1F`POZ(_$O>11-1*|7_Yr|uR2vRv?#{uU>D#OV$*mS;E?p> zK7F2hSH6bgNKfhx<4-A+L6mPRs?`l z5U_zDiLK;|M!&TazDvXDOKm!A%9^uU7i7%rwQ6NN@^L{So;HC;|3hmY)%B@S7!5~# z4#b!2b)~CxMa4xE@mN|pu0#k%3H*=fp?B`9p4xcvIFD&vIkPQH|p(b+qLq4x3&QpSM;tv~kA1^AG5|HQ8kkv+nFl@xs zQHE$|&zvqee&lfUVb_t0V<%4^a}Z)AJ(iUA6l=F|#0*%NOw#^Xx8~Os-z|?`Uis~J zD}G&z{WWDK8%5C$Q)XFF!J)mocl;&fu!ZyIy!pz@)1P}{^2CV~%>T)cKR1I10B#8X zEn)}r4i&v?`=(!(eY$AgyVD&TwHvPO-?!%#T{?H})JgxlbibxAjGZgITWm$8sbZ&U zSTy&|XCE3f^41##D<*Tb+??zN^)u>3*KuV8>ov@Vrbb4nhXi-F_aD`=K$VQV`G%ey zFKF4k$vML{S6nDICOR%U7z4^!B#-Tvma5bsoPGD%Jk>MYRMV_cgW7yB38Hl)Bhp;^ zw9jEDT2XXj|F*RT3~lUfD!qkMc)W?@%^FhAI-=H>o;|i_^U5#gIw)uD@=bB3G%c^$ z*3mLrx^4Z6Pv3s}zT5hDabVC)AzFtTTPJs{`|i`ZuRU?sjaOgNA}7NEHq)(qt8mdP zkBq(Lx+^Yf)*#)X#pSY6dgpar+cnRtpO%P#h-Di`s)M60r}>tK0OMKY?0OF{7` zhZ9dOG7N}POKd%51nb{03=%3f81@HqF?wZ>WV+d*L}6daLKGS+nbK4RM8l z8AVpG9!OSDK$vSHuGAAC7zQyf^;DJ&{eU=c4Q!$v_f|7@n7h_g3$cPe3 zAPHJ87!@oQIb*ZD>Munqhf6K+L+(M7VXBK%`Bca*-?MeWHygg$;3>gVLGoul0r0Y- z0tunRBK`#5b#mG5ts^t6*e0pjy~d7z=EpOqPODT`s22I+Lub`k(TZF9raP2}_F$_t z3ImDW6JGmb2fe^6CIq9&47cG!4HY`vo&5;&1w)8yS3ts-+_LR}cXzXT({aIAll^o6 zQW0X~X%$SN+GW^~v=d^S7Ms~T`>}m`0D3>lJbg$gY=`8Rx4Yi#*fQo3T=rS~Wk*yy1PcfTvn5hxN(3bu*u7$!p z7!VlESxj*x_T-<-&2v`D&A*w686*6((7`XB8{Ay`vv7r}!P%&hw^D;13UvP9SdeKG zj~2q`-@W*W0eOfML+DWFe0wq`$c97Gc*9Gn=yBP|E4CY)^Ya2XNx!OGNA80OV?~Z0N)HtM2V=ww%;wA z7UL0?Y88?xxl`Y3AN%#l=^{p6yiuBRec2n+M|w*%FWKGD*R^k)_}cgTnN+Y!fnaj5 z62MT~bLhKUn@AK|$(lk}8QKrK>$EnVhrP9%CZ@1*pjX?mpmzpDyP2ReFVugD+O2XT zV6=Mq6drjD6JLaMV?IboiKvTXn8vVYFpzQA;g@i0W2MqK~ZJRWQ}dHMD;2&G_zT!BI=#Y9F+jA!?>E@YD!*#X#NxEU2a zDB4+b=4jNV&;G-#VnKuF;-6Lz79QK)HzA!-1e1a6<_knwBx-eHa%aSx)#a$GR-MaV-cZc?NxS6{5X2eF9X$S4Jsy|D6?*oMS&xsr zn1`9L5c&e^jj#&p^?Btl%9i?=g%8acdL4V;xHQNMU*O2LU*`4X%Rda2Y8vZm%Y4AS zK+YU=asW(M@7{^n2bJ+Xl)c|Eu@(@&W-v83G}1tvuhc#uj#=HpY-nh^&we`k0_bOT zp{tZp)S{Q#;?b37;YP*j(|PdDLV6Dt%xuQH9#!=!Sc4Yd=`A|RjRMMxYXw4uTxRjZ z1Qfy5MN?5TBiO(gT={T9z;ysy$l#yDAqAb4MF&vdU$ zge_O%m2(PhzYk-TV99K3Nu)M*CR{M`+TSpWEj+!bC)~0wYDlb%`~H?&mV4Dh_`aKB zq^3<62s07<=PvQbFlp)s{OUcM#x{f!FmHRY9o#pgA)5x`58$DFFF7WP5pw1)Uvf1J z9gHZRV`pE^r7D2}{B~!ZNO?3Kn_AoM21(S-14sDt@$!$OXhv-0|1CAHQAp`G<4g zdG+ZBZtK_CAjz8I>RUTqQR(e&ef7J)4obRKUUCL1`@rt)fBv!Z%MWHu7}38vvk;{! zT(J#%KKbq5!b-M9R|q=M>+!fN%8JjPIIwNavUyectE6eQ5dwwcAaOrQa`&0Mhyp9h+nE->6G zf%CGt&)#uW%gmH`EJ{l72lFCZT$Pk_oocKyiE?d3K^dU7u_&% z_6k5KtIQ0I4vL(`M>c=`=HwB*8E6Fg@pbZhjCywN`Q~(K2zEjN_t|~xm(P8M?=wlu zM@+4(_Ps|48?)L@Q2Y^w9KMP(hyGsS%pjJAI5Z0kIIJcnz zD;86rwIovDmyTY_d1m<^d#be^D7k4$<$!BC1BGmO1gL*LHhp;pGSjHD1aA5I60E)T zs??MsbG28Wn>cplEkpWrX$Nyr*YTp!V^T?(+S+s*eE;-$yv||c%#&&ttp9cSXN%^| znl@?dZA1EWy|8&sHJtIer_inSV+fSIu*n4GEI5Ofk*OYuj`5 z^v{eXyJoP=hay6Mia9DThWYv1neqL)w9U`UOiwZ*X!C-pITsJSZ+aCPsJcWfY5{Bm zt^tR(uUYoN^oe6`8F*!f<_%J%_CWa!C6G|3Deq^1LXBm5nt5t_)y!VA{FAver`~b@`?1@)=bOm&44n(ZsrXv;TU>eP z^u=qduu37O#J5Dj-p4w&hOn-M$My~)<|H^ICiR#%NmW7dw&07<^wl$YUaEOFOu1Azy#1# z<$xBExV9Qpx9hbdCrqCOIPdqr?>ttdbyls=YJ>yFl2`8^)Fr>Ze1Ta#YBy(l`hxE_ z;`b`)mc&59?!D`g*FOGf%l=bUs}FC1Gs*5XOI~~E#x9_3i;Fh<*<_J&a8{embQh@a zh25?n_tbmU7Otjl+&=&r|6=BS{Vy{3-%Qnv{Hs{Owp49*Nh$RjU)1yFhh~`d=}d)2 z)~Ryunvb3x-M^y%zWEeWa@iwQ-HynZ#I%Mja5G_*`gX(qv$)1PkCdI*x?bExTr8&%$Wt`Azb$z3mTt|gMj#eM#i#0ZMm;{~$A1dS zP>r~-81$7L|Lfbg9=hIYY`$;3!v$B3dj69&yHUzX-GP5<;ekJvOt+fS?gHAKn%(}| zdtd#0o%3PR=!#RjRw6HvJ|Mn!lgkD@IP**GJ@ghMT6zS3H9V}Mlj<6WmmmK&i>XVC zHrDw@mCDC5>e+eU|9MOySFraL0lqrA}LzHODi$kM%!z~&HQ#-0r6Il zy_9NSNX@mM8%7EGUSq(Y6i-OiQ`~>7}$2>z?K0>1W#yDYtgw{vE`MhH3EVCo07r#$^+$dn~A0rxr~~z+&F_F zC5WZtPK{=+lSr<`u{&T(fK*K8FK1Wod$k>?N zJ=`zB)fvxQ+g{R`4~cT}6iz43dVzZY(ZYZR?TWVvu}JyC%}tDqNZNt@MO2_N7{JMU zRR@v1xQQcLkByCZFn}B|7XAPpv1c^Xh7hR{5v~5>Y6ASw=FV0lM++625ri2^fVs9$ zkBX%LLngaId5WN$goF7OIR)e92RRKb9%((t^+fSv_Oa`Y3!t0VamB~GE;tD1ofs&G zhq3ou8-qz2Zvp#FkD=^{iA;zPI2$xuFc2Fkm-NfO_98M-EXeYpJ;zv=6hYeg&=caE z9Ec1Q`#pG>hwVcHd2K_zqv4H0yz)NT5Xeyi+BSqR#WE%a7{jx+HJ_q7B2xkz&?pK} zCm#F01Z^W>LV&@5iKD-0{nrv=khcMULJ1!zTi&CDzmRnyp5=U)-jD)`ecAwKLWrq! zY&2BSP&Zo@cAio9!W-f%uKmu3;czfeUN$u;PSZ{CWu=C&Qjd@q0e~z0`meD8rJ-I1 z8J^7t!5b0S&P-9^8YExEqP3H|+M<70=1>l3t(@*o{AHGf9u5@*jJI70m5J zqZg(VjtyWh;VUtvG7cA?lyoBb>4W0F;oCw!+xuO*3wu@34;hAajGixQIO`b<#Zlpc zRKPdzI;9J1AE69c!@o7>N?E_kX^CdHv2$;MrDwzD6#_v3FM@L8=b0%rj zAxVBQnYMRyw3wuHJ;hX-D4;ySIo?uHr!hOWIxIw>Mu-BxJv&)Lph%>pye|ETB_wJy znoBqujkx~jFF`--t_b=Iu4Yn`O)rCX4e2Ra%vvKZ7Lz0SVbP!U-!!5%JNyanZbWZs zGCG%9m(R_}n6$X)lRK$}ECO|3{Da3?SeSnORb?cG7krIz%R6AwX}Dj^=f&o7vnVP$ z?NQ?XUu2t#%v>k0hoG2U-(>cUivj%R(-9LDCD9sbEnT{AUWbYq=&AvWA z2+>&4^~~0!;YX1d*q^gen(O*52>%w1q57tQ#wSgX4aGf=;MC{7kXA^U%Rr@B6(BX( zC3mT(G!xv{ZVvl=AF5N;v^0b@d_^9A`1EM}k>!ns)G~Ht0k{hnTT(7cJS-PA4_429 zx4rK=3UNFU%dR^RvTtIl%5hLEAUhv&W)EXwA0I94HxvmvN__A~AGg0C@`Nto^%jAU z5~&Vr<(8fnWP-!)#WFZC_m`d&W)*xbcsP}nvWx${9xbQ}ty`p4tDKQ#L$&NUeTEG` zVjuY;EX$KH5eYkxMVi|f$h`46Es?1wb~Ub>R-)#wMD$tyXdH^?6tjC-nUfnUXmy5F zl+c&5kaYRIhc04FWEm@;6lT9x0;_fk!Cr$m#A@fo|5l{dJ*J(3Ij<71dhb%}yPrI?`(LKf{0 zzsr@7xn5$taU_hHdMs$4>;pkis1DUA#*AgjU7M_`TUjSZrl_9{7h_$pu;PqV3R+B{ zT6W&cq|>qHPwtHJxstWhOZiA&+-rOAnVX?Rsz2nje6;4~DS7$)+>;^|jtt5G=f^AB z5sTW~jI!Ox!HkWuCRmuI1Vth~`0P=|vn4jJ&^WQ(NZrkKJiB)c(8$md$=PVJ4-Z{Y zsK7~wDi5!CwoeWY=(sLHikp~nf}IW&|NX)3ZBu!x7^2e5s0u;{ZehrM_`An@g3rwj z_r*6%t_mUtk~PTMTjt(*aUHr3R4@o+BDXow=$Zgb?LNA4`oN|FrUoGlLb%)5x2i(e z2{b!Ux^waU2B(@ZVFDEEeEamJPT)J;7UZ@ATWxM9HtcY&Vh4e{3dK5_hb2?E>TU&p z#oI!7-8Gokx*egq$5jQA!;i8C0y|b4P*P6Uv9o?N*bu`0u6fqEo85KH+rJ(ZmPFq9 zkH(otv%8Fb>sNyvmWzd0^`i)#DK{~zGq@B6?+nNxDqV8_WkT&{Kw_NxT?CM(Hs?r6 zdvf)R0gV)STEiYq4ik#<-E%pDrT;7%W8kyX1%ad-3TQdDDn~Z{Z=Rz+KHWQ)GTLXE zSVKZ)J3mhrGM+%u-}A?Gs2%OPy+>7mqR6UTbdhNdxfr{jpVK6nJ;?+%LSR&r%Ym0` zsCY}oTR#}lx>n>y;u~FmNluCu0U^5y9`3F=e+a29%RU`)ANpoew|cP(s5E2DRW0F3 zc|)eH`u>XhKm1!ELmMJ^@t^r)=HO;YipccK+(&M#ijib8CO7W$#pP21K&~i?jR4kIzEqBD#RD zS^vosgD%WWVn2(?5Uiz8Dl=K1_$=o_TA!pOf+#LbAinfUomA?0O4gVDhd z_gF9zg!$WUd=5?4+24tZF#P`l$GPr;xHR0d0avmOpARbhgQuR z*DWtKDYNqfi-Ca>JPI46R-a@|zjC6>j=!>bMxFfY1t)4=GH4bd=k}4cb06;Cra|_l zqvviu3wc|gZg-Z2WQFCbIJV)FCvIrpD8JWZ-yDGMt&c%m)qg?oN}dwl;s z>)CErrkB6jjyx9&`BLMg@ZSA54S)Uz0h89VD-#=DJoMSGcL|o1`{o7bOup;MB|FQQ zg#?C=PN>)J#%U`I&Z#l6Cm!|u7he2mi<*bMe{6Jo-HS%N;UFW{axD3OUp(iN-%s%Q z5UxHWAttdwr_r;V_?IS%METJT%fDWy&Z}#ecF0bNPj=P;A)lHIWrsJd+H^#pL55w5 zsGx4GRF*(O-_qn17CC>(;T^k9D0_xoqS>C4o}PF4-OfZ$fyeZgoH|*|46JJxGt2Mn z(IT^Mlb(|uxYt_pVD-BzB^BWQ>0K)+;gUw#7YuQxwnTr@#3@=z5i?r_TzNsuZsX=| z68;TH=$f@m1q{$v&Y3j0Tc_(D|9Y<)+lD8L^)YN*I%Dj01IE9%UWhntAZw8vl$iYQ zKR)iBm%ay9N1<li~m#wtpOU=ZU+>JL>8+SfAHB_P-nUBXS*|x zlDOFsF!er1R3rrMoV}+_-Xk!;61ZdIo-r1`U8KFEXB|@lbUux8S+}l-q z;)V9q7!&+zsU-UTe|r8g;WX7rI@nr0qKJfTv(aEabzGKtoz&og*I3+`A2k!?`vdy z!h8-rVqGGvK|WMU@P81Su6idpRxr3|YZOO75CMRA6#WyL{1~W~Z_S|(MlABKAP6y7 zSV-m2@Gp)9&S3y0Laz$OGg7t!I5xKvh$q@s5LrdJWUl5E8cF04bo4Wv5naO7r2rt% zc%rrbK+1&(>uz&^YfF3yrg%h~U~^q!j^wU*6R+J4NK;nKhd|vz)pmjt=e3jv#|g4@7h8c57C=d8zn6Oib4cRbt^i60`6wp zt7^zaI;AAFh4(V2)w^*dr^IlsDXP6rYl>^bt?BbV3bg`89R_jS`Z7YI1G=7kK7aLo&~`9BU$68(z}96DcS)t|0R z*=|+8uFO~cx-h4!f1UX@s(%i!z5}xF0PZ`$`yH8|)xR2m{x|^p1={cYE(Y9JzYd`O zR{t&n61e(@cNXyK&hJ7Zb?Ns%MHl%$cR$Mx|6}EWf*F3uN$Qd`w8I;yhh(&qsMZE{ zc%^0Ha||WP#Ihj9q~T?jiPO=KgvcBo%LM57$Vs}B)U(4S2trBTb&?JwMCK^4On{CV zPSS#e$Q=7&s7Ri0k{l8ub8Lh8A$h<_>W~nb;|~PJB%_=J)OQ8u_z9kfWC%$b1}@Pi zC9a5x)6s{7$Q*9W^GFstNmmjga}+U`NZxjm_9R5+IL>4wndT(TNr=p`7ZEebqj2a7 zW};s-(IBdSQG|=A{-KZOnnbXBqS*$Xuy7BwIR91 zN#aN%ZGu{KQZj%f0(%LqR}psjQx-Ck9wgW`m9or{%yyDXNJ920Er<3i=5H(hh7W4J zd`f@vELA@h3R=IKFfU2xg?~vtFDy(gaNeD8F*PA%Qo(Ys4lR>*UdWkrAls`$(bPUK zJWU-?1B@BTyG~L<0&HM+*h!L)oWw&yFpqw=iRrP7B*%meF+n|s!c-H~ zVnnLH++`S{+WLsU6zc7rq=)65>Rm%G}Q*ON3R2 zfY7O@Rgy%vNShSrjKD&U!#gxu8efC^z!k_t5q1e@3n`3$G5CqlUEJ1rX!{VzNGxM1 zTj$=nvPhBy(WRhk-jaJI7nXc3&klW5kFt#nmp{548jh|Bf{)gKF>Hs9w@0Nz`f`Fv zS(viBy~u#?eIF3MIY^k%4^)dTcs4~t; zm&H2ieF>!OXl0$9o$Wt)PCBzTX??EWZ}v9-wq6qQ}^Xk!6&k zS+fg1N|!{qfUC9LttC&SuXG2l@^GAFcXYOM?w*4U81e)1t0eFJDV##h=dwe3Pv4?$ zjHJf8c4%KO)d6Ucx#! zv1eO%HJ>)U2gmp^!uV9p<%;q?-{|Y3D&AA%zBvXkwT7%@%IeG-1 zg`;$&4cEuneFwIJR{oeot2 zICSnd5i?dE<#t`xi1Q<6=={9G>*+MIR_l@Twv|wJJ>kW=V(N99^vxk2u5aLDlbQ{h z`MaD01t05nMc3(g-xAn};hbn1ynYB7Al&hikeJZF(9?Z$q#54lMrMVh77E|b1Jf`ZmL)yuEd2$|E!HxJiHm9)-uX*m*lhkTXBjOtkdTVnLwd&Lpk=Xp^x!dtMZDP)n zT8>z>3t^QxqYdLs8=4Sb_q;YZr+S$+r)YyYtH2>5B0`XG3F&?UDMg^+(N+`pYa#IAQbEUZL%|iwST&=^qaa5M>-Ct+;LW=N zRQ2L7Lw-iLR?7jONWSEiS_g;Wze~oKC)sz^Z2qjtp$Op?IqaaYa96U3}3j?7h$dorpsmZ z-yZTtdTaY4@J5)Oe3K#+&M^L_6y#N85(qPc(P27m$-x^pm!^U0yC& zey^{C~xE%W@IpRRTq9Y=GmEKBW z^jG?Qf@SgtwtqIU3;Ih&N^1D5r3k0Iv3TP9i3uN|2aBcm)fVdzBQ(~oPFtb3?R_Z zpv0H#tTJaAT1qA((=p0NCA`;J-`=&4U6+B)yxfnGj!DjiR+>FsZ@M3(zf!214DdHtbhr*yccL7Loe9It1(jJid2WkIIJx)kupZ5$R*ylck7K~ke> zAE>U1vaM&SS$KuIOij3qtK&^p5isn7Xn|?7dV~R_yNxc%3=kqjGK-=CMINI(GV)`J z%Ox7h00dtl;NY`i6rAxG7a(1fp@sU$kRMH1y&wP>9fcZT1IO`PL*=p>R{;#4L2T0N zg@;~vX*h8#(43f;u<|f&hzCuZqB1%?{_}3T%=Q-B;iqb0t1Eq_Yz2rY4&^J;$Fm6o zzBv^LRr)LOIq(J!UMr=pZ0oZq2B1Kq^}K-Lg0IZu;Vbd_JoXdP6gRaBc#%kJIGzNa zfY;4@t*B%)?U8W^EDF$ScPkH+`b#R9NhX+$+un8|&4+DLC!V@-t?kC~wIWzi;q&@S zJof%!vN&jFokHRMc}a+c!(Z<9czorkz>i#!2+4CII+h?R>%E@RP?675?k;wF!bMB3 z#y|`k9(q%*Tr{fbk2a5Cv{;6Zjr;iMT&Gv+$&^d-SEhj`@^J`NJpb=3vpu-MhwPI5 z-#iWC7rx%=9UpRAEB8b4skb7nq7HLT{j+}0SF<0xtd2|w7;%8_`CTI| zh%?4!Rv^DsYF%AnqKSgbl$`)wR{Qxw!02*`aRN+BqpU7uts%vXMivEFDroY{3n(Jz zGn+4;2O=WM3;{{wQK2)2^;NdG6>fTCt<+nAnaA@Mg)l|Z2&N%3qGaK zqTA$2Lj`6K%q9VpC8ZFB1f9IPC#u6&Sbnh|x%>(E7wN%<7(^H_DRQYWAF|99Mb5_${t0tEPpBNbsR$p; zunIDvjztr}yt(E&(RvY0|uTPBsd?1-K zj?z9~u%gTxs0eYJ*-`cN(%(E^oZR~xyNo=Fal*zJAP-&TQfL~6npw|^!;*91%STZj zk}Cq&BhAGqvH|9(3B^B*Q}ikkweH%Axk;He*szy87`0)kPDR|KKl?1I2!|?tHUVCe zeVNz<$=p#Nc63zZS%rbHqB`Nz#7zQ>6H#aNYd5t@WzZUmRSNsh{<-k(&I(#>SSNy1 zFMF(aV;LS~!QEg>aBAJ_LtCejKN}WBrU!)g?oywRKS$>ZU_O0dGsVEpfmxxhGn?Lb ztQr(B9ZB)tuO?rq0P6~`DX^nKd5xj_7vhSCS?7Oi} zL+(S%CK$=MIYn+>CCgXHJu;tKkiZ&7 zMw_dMy(f27gl}PfdATajeBB9E?pr+WLMM*8U=(Y7_POf`RqX!o_ExA4GGu1Nf}DWY zj^md<$+^F4;qVqon#)8R)5A&W4H_G#dE*#gRmP%`Ey*LuEV9V;KBvXSSKTnm@zTdh z-f76*Psg;C3PdWW6J(4}uG6sT1zq~xdhb(jEc(Vc(+g-{FX=h_&4exr2G7J~QXF+! zo!hEouOW9%oc{jOpEvHTak7_k(|2mk%Qv)0GfoYM$nBsd2moOCgU`S7(egE0_n#=N zcDb)@?+TXgTr#;&tNN))iPZ+_0wb6-YhFwc8G!EUqrHp?xS=d1CXIZ%i3Ca`;GtpCC|!Du4hPTqA!vDr~#Gf8Zv+ z@I1tWYFvRP!VUrx=;*%PyZ+@T5GL{#Uep2zaGmFXptuY2WdM!Bq#f{BgC_Ps7gb^! z8A9J!uGbW6@w(EthTD9vjX7*+$AYlQj^S!@*@Wd#2Pt{FL zu2m<0z_i~A40CXTsP#L)eRWLFw(`~j2QxM`|Av=Vi+yT_ZA`_1?_a#RV{V#3M~bM7 zPR{Lq|A$+}O*JLnfdA}J!)Recs`Rj!AyIHcrs64ryJdn00*1R|A&JnH=<#sc-?2aq248gkATL~_?&!EJsB_Og( zwd|EKR}%OPHK&1tJG^eu<2PO^=*KE7NUEN7Z?9JMWC9~^L(^ga-9~i-evpsRLRDQA ze$9k;0Dw?yxIu#y7~MILG;lb{$O{l)g7|CIaF8u!{%{Ue&cTCJ>^IrU{0ld(nJ!{! zvuou!V7PcBii#9caeB|%#TXno&~FIb)J%WHnf-q(eeHpPRaGS-5iF)J&mP#g?5&3f zR~ZW7x*!V>U+J+wm%lsZ=5Ea$L!(+&T_R%<^2z7j8O2Ij4})49NB2Fz@~vYms9((C zID=e%_R^hsEaY|l1Pl!Bz0*Rz1y~;2;4?6t9mTfFIGX?#F@iJl``r~#h%}^ae57@RU>pKk zpmD4v;j=F{g>I&8`VT!&&)N+=0*%hI$Z#Qj>sB`0mD6CAdW z=ViEzqj1dSM18|`+di;zd_Bj8kt~uz%kTgtzn+6d!`Aq4Y_E3&##MOWlLtD9_)w{$ zGsF$S0^wNA`>R5k#~pS7?<<<7{bTEiFS+HXCvIpYfGQD4z`^olP!uOtepp0v(J6`i zVuzzH>ht{(484k40@Q0vIPqC#3!-Uw)$8qJq5l<3EkZ*9v6|QY;ct)e%|>8NN5=qc z3;K~uJm6_4F0ugdL6cosS))g<*$ntq9LizQwFUuJyK021h@pkFPiX$&JI4rf7UmyO z-$j|pG?Xnc#YFg#SUt7Py-PtQtA#y(_+#jnO5O@mec;{qp1jldh*lqKIgXk$UpDA(4%9P_GBzNG%0iF{n}r!&Ybb@ zUo!q;VuR9NsOw0mKVAlPOUF-n(jWNs!6xc!Ovp73ye8etLADiawJyYp7^wL5KJ=iP zmmrsj?&C1q3T1snAJe2mqhZeA`xq3O6b(+Y1~n4R%`~2_^lifyXg&d6l5_- zSkefD8l57aXR(5k3PwHIQ58hO5i(@zWFAejLP>X%&HZy@$&};cV<2^y=(L5WpuSZk z)+JfX)u>~`^pHG8l}jVwhH}?iaY(M5GUb|u`;{tS_DF8YRHYa)zz0V%wZfOFKE)+R za?h$;M^G1L0;((Eo0KVZ{c*fHD*bP&LJElFgK~ykCG#rLEi0+Zy&#r}iuG_T#ke6} z6^AcXLlS@~*5#n9;WjdQeOL1h@Hy61BLG)u*mLHGTYk7jBSg96i?&{*UEa^|DN)zd z262LKvDv+=aB1+`_KHgtXAm4S?snKuPTz7mmf95D%8Kv(J;wcT1T2bQH>EgygW#lR zu%`t#jfkZm&PFwThq+mamA6Np3vX*iMG-|+-IVeHGbZ>^H$z3c*tWN`i9?E5_+3lTBCaQ|6MrO&OY~Lg5Qq~V@;E||c@`yiG_V-t7UBt_SnTO%N|E$0h$nFW8eHQtq zRwI1|!CFropeIXrKH7+ijlzVRM2z(CzILGSL6wf2M(}Q_!+$4hneW@4WHq}A`$L-c zJ7PP0(u%1l{x+VtH7}f^3IB_{_l&QiYU8zM@AQO(5CWm35E4@9oq!+$0@9_3A_#~G z77%G-!-^CY>BvYKVtB-8DkV~`%e}V;>k-+Frq!Q+OST`^@kyx!EHxrJwcx2_N9cum zFNxWJ^_IS42=YnNtWt_}-}tf@&nb>5x*Upl3fW7)PGCtOdXvGgKJx;}yxuJ;Q5gaj zK~@yZ^J_Ef$d@1%np$mPT^E*+Qd*Wr_)WKmFvJ!@l3sd`El0j1O_YR`S@VS(v{NcI zxGxCjZg;?+a~}Gy&TaryI(5r}h40b#h$r{hS&arn!~sZoaG$_M2|qXYrH>n{B1JMl zYJ*+&%!r2;-(nXqIAdM1ZeY#v{*p=P_LmZ;G+1OTveR&qc-n7t`!zH$dVKmND#Cj_ zN)`ztnD(ex)p}5db1z{8r|U+W3FuWS(@S{zMARXYKD{D+5(*J9$WH1uL(h+;mQYyY_^hVp3wsLlWfN7QWC zZt%3Pemk9qJtsT_Hq`RDgp-V_ozlAR^B?|r_^R?-6%GO>hj|eULz|S{ap1%`tM^_g zP$ap8Gh^o|x=xhKy2*`!pq~EGnm=eV-Up1;MJp6o0WuZH{df`>yf@hcbr1N>OJo&TJLr<5RY zqQ9#QJStFYxhM8-S-xP}$cLLJ?Uxv#CK4&W;i_>)9vzJ=m^g)6CS=jO->YAL#S=_*Xt*(p-h=hi>1u z{^Kdby0&hboz=Km^A>G7>rtD&`C;4NRC7hKw)@w8IB9UF#;K`Utt150n29s>5KXYb zg*5lF0&@Rp;p9hivKpp{pYwD)z*nvZ$xk9x31}V+(>~oLo1`V=04FP2s`~roWE5Lfv`9y!d3dB6IOKQF3HiKUJSVy>4 zh#m%C3YPKC!lTQc@6xbNa>vmhs3?01ZXv^8grVT3ncY+3k{=lV`Ob5B3h_7#^JOO< zDnqmCBogL+&($(9hQ`pB#2A9suhV?gXSzYRge8K3{cKo9Y+{eu+m#h~Q`jHpo!xJD zPpFYPf4KiR45tFbXEgkSubK;oT|5wz;{!r}urtu!G>M)Ts&ul7o> zmz*;iOcC8HDcWCfW$$-5e54_RiHu3^^4!wHccjUI2q=h_y>e>r?1YAG#1vaEAC!*m zpHAo|amVqoM_kZ#%F2K5N)0gIUfZ32R?h6-yg^cSH;`;9>WK8)-+i(}l5$azAP#|1 zDZOT_I&w!cDe!0O-J@&Ye5_qcd`jEF_bRI9clK*mSHcR2D@{<1^xo4}{+lNz-~l3` zvE`lEyx^H`*-8IXRk+`ks)8oq=3@-5(WvK)wa4?NJ1UR8C>Nvm!EOJyqA^taAt=qp zkeXS2XRSG+J~z@4B?wSeWF;nMJyeO4A;ZZQZw!ga=rjHMLuv=U=hK4CKYeJ}c94R` zQ0N^-P6$bz)??C={mStvNV(Kt&%Y5*ne_OC%#QaVclhCXOv(s;;@1^!V?pf4B0<>w z_2fP+QsNW&g7+{xuo^PqZl9>!$W*vuX$wM#>xWjoHM&RB#Cm#T6j%ThW2IBsrlS?J zI-f1)&hc%FXANzimXIh-S@QddYlTqLB*nq3(r}+cz5p>x@zo=n=1=U`HkD>PH1^%^ ze*GKLmQyP1epCJ+B|@_locm+tobeAgO{$;L`jMw*ehTT$*>%spUjgjMQt>#-Zk^u! z-D{6OkkufOc%;MNvdau~sw2*C6(|RMrBWpNWjBv)`RwH(oiY>Z#Ak}`LA4Qtot-Cd zDEycpmbjqiTt0+kWKf$1wPI1Xlya~FLNNBd<-Z-jrCk1kL=;G{Kg23?pMEf{Hd0~4 zyMnIs$kVfz|CL)LvpE^zX?ApC>qdLxlVl!WBNLKE#Lc;vH5Ba|sLQ`ZODU7}5ykli2(RXpiPf zh%d|CNz7s4swh8|+=2Dqgf;dqe}J;k^aKbKDgNZ3Cl1{0q&Y5M;T$B)(A3h#B;its zt-`%G>N#?{_6>$ahQLC%h~zw8GYJy3kXk*~3YZt%jPv6Z5v~Bb5KOQac)@3G(Fw;j zVvtM1M(B$Kez@J&6z5pdT6At=PK5Sdi<&{CpCBBn^4}JDkVg#O;F5*S66nQ1V|eBg za#?o{qlKc1lomo~kpPBgk;KWgxV~wCfI%q5Kn)Wm`iQLlQ4qcZIV=1km{KwUveLgq z%^n2J7uxfuV(Hw%YzA8XZ=g<*`->!{<;Oy`mwC^PL3khmIw3&G+CXy$xBu`igG~5g z+kzI-Q=Q3`u?DtbIS9=1?Mu#syg-Xc09%jFFNn9{e(Qy|Q-ot( z6)tYfL;A}ADzEH@SU8)?|G;)k)HeJhZl{5MlWk)!SO=Wis5uZDYJhi&wqts%pb3$u zh)4u`Yn$ip7h*LBAB$9qX3~W$&HgUhM)}lCM^y_@YDQOxl2EiEF<*q9!2Pv>_vUjm zPJB4*lq=$7&kkeT}lu_*Mx+M0Y^tkAlq@0oO z{jfi`P-tL9=T=H&6A3t+(QU$~J5Gbl!p5H}8Fk5Q_l&seH4?xq`F8J>3IbW*|0@Ij z)@sxRc$0r`neiSM!uq~&zt!tC>o-M^P%4S;|7lEzC*N6n7}%7G`tFH`r7`IbJ^RV_ zDq_8=Ezv}dr!9Lfm&lP;(TS?y!|7e0rY$!G$)&Or7nIPL*u(KH2TfaC(HO}n=r9sC zL=8=Yj!%8CvEuC4seHkek?P2y|DNbqKM_)0JA{L}k3ESx;3 zZF23JgpMX~a|L0O;V<}p-sHg$LN()3+CTb|3fU|Jn&~eZ+qZohp{Ns@_j&%q4GPD~ zhX$v(S#sUj*m@aVo_YtaMuF@I9a=j!E-|aq&}m=oIHfZ)IGoi@ZQ1>asf#upzA6wn zXbDUm20Z)L*FPV+s53(?{FccJR`2}pa)F|8TlsAp_Umv=J{-Cnxp_LaQ#-#)-uv(^ z6O7*3!JtQS?L-7IX=#q%S%IYujalF^CJCGo;gd2X0yDkP@w7&k)*U z;h{TLJkSVo9NGV?L$~ed-joQJmo!nB*r`Q_uq+;BXFikf1rkdoF^mh8+NBCwk!5|J<>o zqfF79aZfBiUf{sOHBECRKK;X~QV4SF^JVw)q)yAjF90)t86!`ZRd%GsnQSwN6&~5_ zRUQkT;Kz0&cW$kDBF7zOvu~$)YEL;0^@;~v(wkQRYQaAw`$K$1C~|gyTgu9TWB^}5 z1Td|{mkseDC*wm$_$^Ti*m?i;v(1x%VW?1l0!a7{ zlThHBs`oK7%ydZlYh}9*hU{px$;8>2g~W=ZpDoxE+Ve1-&y+)3+NIT`$Kec^zSBq+T_{PS0E%Sb}wA;1aVK1cZqiEt5E z#X||92v}K$-vvg+%I6VW>dNRK?s8b+QEO(IG4q zLZ-l&^Rf{hL;zP-EV7FC9Wvu<>ga$ekO4?ps$S1~c|_0Fjq2&zUMP)_`(E$=dGWh1 z411_W!#K3LA^}Z+5UI#bz@|UefBwe!K@T)(pyKWDx*k4O@|q}6cXE&Xw)*3lWA3$^ z*Kv4o@fu*h;+yCG-unH5`>{Pm93P{%+)k*fGxzl@O2t`X=U+Uyu>xqY5;PKuL-j@&dL2aY9*!xMvc~`rfQaaS zKB0sy5;x}x$iMr)ZWQN;K!WOf=e@yEy5#?TiVrThoK*=qEhJo$%6Lk=jrALGTIQF3 zHegR2ANVs9D3pH*b;}#CqmZ+M;GM;%)jsSl&)uT(y3N;ie<(i5A`9C4g?JpJM>pTt z_w}Y)K%)D`>)P~t$IAAQm0;nNnXT9lTt{|bAf|oI>l(SgNXQ?hc~QSYrWVc=RUhw z9KcWQ(SdqG8y(^YMs#D<#oMlkPskB%)Y_iq7rdP@&CL%|3?YS5cxc=Bh0-F731Eai zAFs|^kD>7?ez-v=n@TP4c~6|@3WI3^{$cNik0g)a#!V2-5L*Y$K4A5aasy;&N|(%yp3kJ-q@``cI42_ z`)7%6w$@g2ocLktgJQCV>-nZP`ZkJU^0d>O?>w3vL&Mr@uHnsUp+fASx!S~qGFBZl zcl~e%B1iK?aKR0f47h$8wAq23wb@wX^T$qYIypl0A>`n&421s)^Lu8%B8py!!&o?? zFgV;V#kY%djB`p6Mvd6TJ+AKrtVq6$U8zDDLoh!rEhBc%cW3vnci?c|8_{ zrSKt9GGm`0H*W#Jewg}HYM)Rr2OdU&C^HzbH< z0K-{F?#wf#G-w~P$B7@?BvoEre!A}trK|P%xS!)Q|Tw!gx2M}B<a$D}nF?Y7C8qPnY^E5ud7v_U z5lO%JZvV=(eN&J z>DKl^6b*wxJ0!BT_V!Kx8Map%;MF!T=(u#fs5U8{;Y7HrJJvPQwtPfwG78}@dL1tR zw^5`C(%R=!hs|7<{V*8eCZ5@Rc7N$lk4QgnQK&2_TCUZa4twbIdHQ4QM9;)_#r_I) z%H)UezxZtz(Ce7)fovX(8MzWx6#2`s81rw6l6_3;Urtr_LosxPuER%|O~!ckj=g{D-jjr|IU3;?uBbhK<(Rq_d}*jIb6DN#-)dRYC@_|JD;P}1TIm|OKI zXUzP~C-Uv^_vx^-JOT@8=$q?L6pHL54X_HqW~<$Jz?+*+6-uf`O7)BOq4D5%emYqo zQixQbD$p6!YC8C>A5SQiM~WzsjiI%g40>bjzjs9m(om_D143i7`^{Yap8#Vu6ukr} ziZSWEXKg$yHml;JXF=PNG3fp6m&$q2Kor`>kl5x=e!N@3w~6nd#TZtn?U)MHoT$J- zSqra^22WQ_i;}zwcTM1tM6IqXy(`d@#1T>+BtB4qmLzVJ@<1uh#Zyn5FnIvd*SuW{ z8m=yUyTuS(tJRn<_9~^BIDir*pnlGT#fR=F|Iqp*2#84RGHJ!JB9!yuKS~ji$vt1& zoGS=L;%;g&1Vv{J`|yuzI;@l60*BOY^YoVr#jF;Lq%|NszSDC$hLd==Qe>4nza~P0 zidOBuER15>70I(QV`ywjc1FXDhhOU23|%YtDdXEru=JFK)SE@a}nr zpz7)U-~0WB%~^VS<%ABIohuN|Lis#*8LNgprmsC!;_}*W?Ru|YlV*eG|0#f5p?pm| zX{zygmmguMfpj~y^0`h~9Vakw%+wI(#|>p8(Rt#ML$^gENnp%93x+hy?)CZ>1$7n7 zoVu=pbFiNG-<0nM>{R*r4KH<0Yw^Tqhs66en3>7of^m*;_qzjXg>yuqo<&dHq*0ft zKjLjH%8Oc}o5HT5LX;^c&IV|I3PgE5<$=^DLl+*90s$29a@OY>0zzvfw;Oy*J zC{SwOrm3B$Y*giPkonwb^v;VNN4=)KpZjoAg}75JEG*!6qx#)6qgzH(iqB&WO9m&W z_!%-(tDV+)8tTzGFs*@!$O?R_z3g<&eV-H8?UZy(7`5Hy+5-_-3g2{LZUoC5V-^XNJ!R3RO1Y>JlL%3H9$fZvkJQ-O%|?HFyaa<` z02VtpNb5ImuS`{N!i-Y$y^z^}t5=3Zz9iy&)T=LcPmK-dBmscMoh>cA|A3M#RwCs7*l1)jg-^s9-$o%1ZDOY?twqXABMU# z!=Q>=yHFtkL8(`eut$o9Px$r~++b5WQRK4XmIdvQ&ZB7Yjx*HU%u~YNgh4F6;o{(n zqEuL4qt?vKojBb>hiUcxP_OJlZ$r6%r|!gI7e_~9AMtv|2b#8EUfk#;cQs{<0$1`2 ztIaW7V&y^GQqD~IWsLb#{X*Gk_*neE!LucLsP+g?Yl>75>D?(FV_+&k8GrFJMkK1x zO#x4;8?kCeS=YN1rG|K@%P<6lomO{7gOposF*g+!v7YgK(PZ@b5M<~W$=l)vr!Ic* zl99ilJ?an!Vi|%>{tR=~IjzLGqU!UGv{8U~*-Lt(q3#`SiK1)3w7BMv{1$IA$jUGI z=@OepK@mZl8Km`gadXLacv%D@sH+VMD)uOUVZ%mSe*ck|c{(}(jj<#|Nu zEIvg}W3(35=N$C5Lo>Yi-ol9uU=QquUTq9L&{AkQ5%rSXBlQyhRSRtU6A8<-PI(xK+VQ<} z`|Sq+5hoFDkuu8|BEAM$HP5jBJWvL9tLhaX`psoD#6)cM#0n=`igU$QPHGoeQ_*sX0F%#R1~wm;Kff8Qg5Ue^f0H0X6F7Ay2Rxzo|>lv7-)+=>`!hLQ&9xA#Ov zsp1-_ybRSqR(c9njJmq5YE+6i9abf-^g*m>l)9~IR6}?r)u_kQfYg&a8g+5qgysUN zr<@x>7~Vch;T7t)uEIkf^=|+-l&l;jO=rFz(^w!9@sqi~^Xj&$9s!f7sz>hbt0zfr ztLo8j@6{tPHa5?_dJ^TfYLL}!RXrlTsTyRtyKj&MMyFzs<@@Nju7dsZ_&#zAcn|1; zUk^(~>Zk6!mh&seh~!T0sPxLFNo_-MaAEZW$o|3WieYjqPs_@AKH?c@>eP zgz7E#I!Z3?`R<;>R;*Th{nwe@va;IuRiUDE8?i9bxo|Q9v`HeidV^vQ}vD8LbLSCAcLZ3tBpM#NV2)S zqF?H9fm8Vpp*EN2^h*sc2nqKg*XA-(zl3oC`EWZzZY~44z!*UI$kn%AM?mbZ5D?9x z;r4&4{%tQ}@B%R^S|mvfzQ$yL&Isn>#*QwMQX$2vr-bsuZ49m7T3!T1WoD`u;Mzo} z7hy>c=r6L7RYS=D(6$x980N~cl!LRnvad{&C{y6n||M%&bV)` zXWq94vhG_O*%j+WUpH0jsL8$cRkh}tL0wk@nl^_(uLL=50n<FhM0aV){#L~f4tH4&H6gymztWdp<+>d@9LKuTw*j|6POw_k7Rmmt$P2X})@} zid1Pl zWK6k&jM+vmzjHwt9)T*D%V;i4X};3`oA`~D{gyG{4~oxq76p}trBdv-N`M&pS$U(7EvMh z|6GgYUw%dr5O<9zHnK?Ic^}3jn;+g6LNGXq0;&2<>?nCLi#p_m^P@-+lv6S?z%9P zff>@%R4{yus(TLS0*Qbm<5I)#ypRoVrvJ8krV{i^R2iv4E+4Oj8bn#33Vmz_WSC4e zRLpdfAc`$_x@%#gMiZamI9*+b!46d3&c-nNw2?Yk={TbCLjXiJc0u|dh=~w(KxhjD z_6j`<)e~C^hH!+aUEnA^q6df&t7KA2U?Wr`j*;|GINl(U){;xtMyWfRMAy(NLALw+ zD;O-gfIl-D97<4TLNKBTX;ERp_|gpubp8^K9k1A7mFuz{=`6-tGVngps9+(>%UDTT znxKWj^oA-XUb;q`lz%gohEz-LK4i^il38t|a&HrPhIhY=TX~#?yq|CSs6X_B9jiXG$y`=yEhqK)+)jf0gg*#_6xjV=Byi=W zE>me)nWe0>yx5AXRGGcZBuTG$*DHh~(RB%f{`gOKAV5qOo5@^UYPXb{icAKR!R#}^ zi`%!hU^s=LHX80|)f;x0^ix6Jl>)yDs0Kj)0edR?J*MGid*HZ9;411=q)K8UAO|7~yC*=>t@#@3CcdZxXejLd-= z2UH$n59_W)AI^9vt8=z74!DE{QCUq=AL9%uK_p^6b=|&upKZ_H^5Zwng_!>MIa+Ln z(8NdPDF90a{%5R~K4R%f0nSY0j3EehOsf|*3Y1~Gx(%t{?X6w65p1g4fXMXWUmgV$ zh+6@n3#!$A%BD-8AZExdv{0XU3RgtkD&$Co;h4c;B#CpT{UXSbnd8)AnyNcNbo{@&yD#5;Wr99hiSGFS*PQzsOV6r6Fe^JMV3mmJ z)vY9+t`I^qWX$w_%ZREmQ=_6}!*Z)|Oeg8GUN!y!K$Cu~Wb$&$HdDL9G|)Ei@ZEV?om56==Ij`H`$XaATDECPFS1E zXeD8vX7Gv-F#<0)^~GxuAv?ee;ui6R5dg~6=%a&hhLSkUTMnF}LvU=wLGsdBl_aQk zry0KrXln=-7H+4Fw}F;2b9r&zt!tMrUcg5Z7f85KTR`>3V|29FAOLq<=7JknE?vyM zaN+#y?)$O&mMCZ|9bcNqj#PY#^ykSN5!0^xkXJUYhj$vrms2KB&*b-5$(onU#`IHx3Po zjNpI|c3u?^)&PI8$8vrDnvY(6ZZz@BAMV_tZL8)@4NV=H4eQs7Z_tS3=n7+7j{aO% zNgDk(!PU92Z`0zruTPuw^w3@pKF}#Ar(?$st(&*%)O#?d9%n?8C>l&b_6XQaNShn4#B&r5m$T9h;P^1_>!bI<;_ck9Nr zYgQXp8`cE*Q120#^zfhpCi8{>a^7oELcTOH>Y9|O5!?=yN!J9TVhj-m#6q=2KvIi zMqgbCAQ&1Q-?;m@dF%EZ&&3PWtb9BT-bi0P;LA`YMkll$_~HlO{7~s8Y6b+-=?ZZn z$+RPMku*pX+V&nkeg^KQ>$j<>#Mkc@6ch#&8VWr5x343<0h$Wkh{CoSHfjQXsYD+B z^^g4r4h9}{AK1I=S5A3aqF}QUQZkx#l<2|}roA(7{sO}S$A=3R%>UrcX<9Nn_<}4t-3PMYJrAKc#5wIYs372n);V zJN7%R0Td3T3m!W>Bm@7+TZ=KGNzP02kDM=aI+-Xwg-O8KK&Ksq>7?CKWLb2B{-eIx zcF|QPP=+2mDLuqf=j^yjC!u<1sQ7lpXOH{fm+QBYp}9@!a4$16Sq%Yq=_xf*9|<|( zw7{sgqc;6jXhLOa0?N~Dx7y3BR)Tj^@>$w11|4Fs!QmR#V$|Xzx7Z@et(I~#0E}Q^ zSt%R{M#{dz`6s2Sc#lE7ru=^1Y4tnHY+x-i>73LS*`T342V&-Ia`p8K$1|3x8*|u zmqL>`s;m-9=AhJavo+Xi zvs=t2yA)4qr^O*{ptpAv9U!!T7B>1XtIK4!xXLY-yAG2zlqF|phSHQC9TZ?@24XBnT4Q4`Q2i?fK2XE5f|K%qtGpr)m4yyG#;aLJD2b(AuC zNLg(*lf_%gLz~qEilyyVK2@ntiX$Xa%YKKvRAsjonIzkdatkAFX0Xi;hs9~Ocs(Yp z3G;Sso$ypneYNh2WbgyE(9DGwvBb96%>@L23btG}+Z-mB39oDuuoOj@5EULj_`$3F z661wzijYsnpIpjoj=65Jm0E2kpf$|p}HDgJTsi#aJlVe||?1;|-C zsU}pZA#U6jhl3?&wU?OeW#yJo3lwXa+3EHdomu_TW1KgN0@Nv2y3os}G4Qri+OqJREI4!gLT8hhdMe-F5Kut5@ddfxOB{msv~8 z%%v8ytf`W6I~ZTL|9-QhG?HwFLqZwD0YTyWlQ%x?tIuE#<67rU-ai z<#v0i#pHGQj{Y>dgP=@dbcd#mkINMngyuK`6FPphGXFLLYD3xaLaV9VTEsFo!GM&2 zKUTbRNne66!KCqR6}v#iumM`N?6F@9@Dv8}A^rjry|l6d$}MGZJtbxPRy@~1zA#Ei z{5#-4#R^rlq|Vx{7i`J5p=&5KmzD96iajOv^7DH>o6)(UEMn}dnG3Q;O)#whIB6NZ z*8F8w28v>-bKd5*_0zbeIOpvBM8GRhdB{*&|k+gn25vv1jL-Q-(GX z=pXgb`Ru|`z+>`6M!msv8_(KAjhWFv{A*?Ms*{LcKA9C}i5DKI)o%ULssazp4rZ8Y zX~ec*-n50N zxx}&H$4_2)dPvWl?D&`n4nST4K5U4=3t!;@ir)c15}Az>V+my}=Eo8t8~Zcy(l5Ds zSbSu1((2ZVs}oE3OnJ}w8&Zw601%@k@6?X3rV+%nc4SyYjo2EZfs@!7D8~cCYShJh zOUDrS`-gX)dJsSfL@dG8s#n7$LY%lrX0#Gr86q#bUV1A`Lv@71-QT=Cpml>9p)3)D zJs>z#`Ye_s3aUCVBrF0Li#kcEna#Tl9*gD;=L|==QmH+Zomh)TG6})+!Tb3Z*`yYs zHY01qC8ne|Zr!#2@TVrs`gj>zhYrti{?Bh`4r!ZGziutjvXL2AX4&YBcLO0mBSB%! zY~Hcg;1OeAeB=(t@D#>i0_|xnz)R@EXS-+Bjj36i!C|Wr1|SH#;_#^0`VBK% zcIp4b_-XHd{_W~bI}e{cf9YmH8D?Mj3AsSMIr8(T(}s3vShHG0WOS71;f&f<%vU0! zV(K=`Zr6R#$ceAa`)19SJx9-6xN^IQBL!lf#cJ>ssA+NhwT1ja^yT3BH)BzZV6efRFTo-I@A;+sa; zcZSz^Lk1}tFV?PupM8DN@}G7eIeqbZUWwU;Ap>~>d`9oTZl|T_#+m&9*o^JpAtSz4 zjcTFfu0*pOXqg+{J5m{C)05p-I>t>OG|I7Nz+&E}cJpbnn*nt5$qH zf7*!dEmG^%h>VJfjj0}0qgMUoj1~{{8#Cj><-hDdaq*_gOlJ?uGA=K;aq;Z2eOuSB z`1bQT(_4vStnm356StF`iR7|b7x`}Dca(WJXX6AzB0!);z^IHVQl*~FT(SdF2 zmVY&O#)PMy7~CtTS!Q}xW@>z`nzifJiL0NI)uKa>!DA-B{n@Ht$qi-^a5=QPvgX|5 z`+ixrVCIBTLwk2@mf0vdo?RxQZhT^5QlloVTDR@e?}=w#n!Rw@kGuW>pjQBo?#ql5 z+SVVwnJXx=Y+sTyJWOpInN3@@@7jOF(-U5tHGlEypLYIz`f?=@lF@gYZBu#j9snn4 z=J?^gJAgD>v9&4EO3QoVsc|p7GWW~nKm54;z=;c2ZWV&wD>WN@H&mZX^RAwf+~VIT z8zX46`lc766)pXK^@go`{ylx+GV4H}l5|%Gc`CSZ;n<$d%PRaLYggB|F=4e%ox5=9 z`rTrE{;PRdkwf~p=BxK#eyYL^Py88W^D!gc6s}dD@CLTgs;?padS+P9_F00Ht2Pys zJs#r68-0L-G1+db&HLs>1r?<_ks2QxsVA+C22|33IpyGR$(NmZ-4X>BCF7)aW>|xSUZ=r0$B=k{uLgTF7Gd zG)Ik(a>3TK5c&cWg=kXUfee8H<(;H}rU=iRQCN)cyHmxv5Tv|ttk0mjLUEH&oCLga zSikjGl@*x95kjyG<-;Q(OBIFW4nYD>Qd8pNTcLdcQzwvyUYrVXN-AlUoeJ@;2!T++ zSG?CE78*isxFxsA3sk%W;gA_5)Q<@1bq?Da)Aa4LC4MH9({2P~-C>b%9W^i$Q!H5l z8!z1s(SmCYeCy8wzr${En;iCF!kSbhyB(;7a3Tr$o{&0W{4<&TR zb%#^PEupCmAz6=q_S>Ceg#Pex9;??x3-8+N%PmFaSh_hK773C8 zZwZg6Qh7ZB@LuS0*Q?!k@;Aq>`OSX#XX0{{I~{=zggE8)2z!9TX!imN8370E+EjRl z;0Y3W!Rmy~wiA{k#8KUDbFk|Rgsulf`FuL>jt-K}jKw8g>(WKd6LuKfHlOqKbf&=7Kdh+QFuD05Hg4g@8W^ z+Z$;2z=e{e3`{?#8KHsI;kJ1!UXlmd4c1T+UbpGtQa}i_xd{}&Hv#?6?zVXy0BqhN zWeCv0s?6(Fr^^K24dZ7+MB(sCSO?HE%N+l1m_Mi+OnC_62oNmo4kINSY&VEA21RFf}rS<4}F(5az^?w_%r)~`8{{>n@eHrx(tPE*xaa`~`XE*KHU-Fe_5#B*i1C3Jx)bl{0-!jB2pm zXghDlX4`5v!OKg)6tCG|Tz2NybORq{AYgYU%S44Zd68taHXgV3K4Ep{Fy`rX7s`oB3xo)Vgy{Q44;J=pJzh8fa1}8 z_s+f@Z;yH`GX?FH%x3-&=qq^35QX9gi3p1g zNLm0NO)J1i2-fOm4Vts;{9V8IhhL`kf4F*m-t&K&rjig&L9&2+z+Na#SG$vd@(S#9 zXzk2l&n@4@f&-H@hQi2dgie+{*5IT7DFgP40WfGcxe0<2X0w4=46fU$|3^#n^X#x$ zn7YB7UXhWcv9cA3zzyCNH!MMmmg0CRyO|j`_x2s%`f&gGVlqbh%Qa(!@L%jTd;)hkckyal*)15EUo6lK9$L`v;mgQhQhean%3{sQzs zhPbi^S`MBv^~WuTO7dBGbg&74R+n$0&jtKrc1SyzCg^at!<2X7uVt@4*)^*!T!Qc@ z62zS2xa{uv0~Ov*Q!1ow@#fk<#wFl?^A?=c)L8TSOBvz5-I(@rr?u$SI z)Q%9Ar4~wS#T7ctkgxkTell}3j>>US;+Y+X9Tq4A0%A~lH}@Z*P6ZMGga`RPb+Dw8 zGavW`hq?In#bbYM`26)}`ghRr1V~U1HK4(F2m00qxWlarM|Q6N=KV>E7t_%Q09ghW zPLVlwbMc+47fv1i?T621KmT~IwrTZiMTblKlClqJ4|iyq z-k?s62tcu!FQ9vnAXzJ1^67iio*6DIYhs-kuqqV2zydZTGYd+F4c)BJ_X}>Dj`wjnYFw>}SMYG}>+G2x2|}dXq{<~#NLV=3dYz>7mYw?yePX1F7_qE^A=8mCVU{KF3Dp|X z#>FQ$%52)^!M=}=pYg#L-!9i9NaS9vmM#&vt{ppXCPih&r-#J;T;+*6dqYm!T5&h(KE=}tYhz?Bc6I@@~d+`S+Zj7Prn~L zk$XL_RK%US635^R@*jtktzHeC20f}#JE37Cz3U?+OvYE=t@z=m-}W9kb^hYj+l8=YEA2XzRXX z_eP{b^%Ow+Ail{$1Sg9bUQLN?RxO7l9=+y=4Z4cyM*h8#kS@uZJmVD)PHA0v(e10b zXJFHQSd2Jl%#)DH+2?aFt8v$P(8@eU?*-|QskHFUwM!Syojknrr!~vIoI68_c{0<4 zh!)-f)ZO=A@^ege}uWKM>DB*v60}kgf!H&q})_ zu#}Qh$q;N?x9qEr-g^1j(IbZs=-N6vy&)W#&fzeRTpF9A&ujGl2P83M3i-;5?%ud^ z@xpn@x?YB2=CdP*_UqQZX=ZwA5-V5LC{r*<`$zvoC>cr$ZeNo;Cl3F)ZPO2{RxBf% z8jX(4(o+)a)`WWuXUVH02_457y>;i$ojSUI=jOGmRxDq<@ST}2jvGCS0fga{(GcEG z$zE8x)iu=LC4+mmwlhkgWn=#)@)jH_j^ZG{BIlx%3jGA1yhE z42Idkoiu|p&UKYgO2m7DazkI~{`ajM@#4nVoMVlll0Td}I?OL8)KaYL0-uOzV}v&J zf<|mF-}X!|mV@~XgaG7lh`jAMEMxl@~fM; zABGUv&}){c7$t5y>MTDI6aA}tWBnr3j;JH?mGAcTZRFp6 zH;*7GeWFzULqFB_t2LEFNW|q5YEEhhH1=Cp3I$`wrr#;dBwfAaCN2r2O2Of& zT?l9^HfD^AXksDXk|*tii}E2Zv^s1+$)jj+y9vdS=U^C}*LJ?tjxOM8E+3M9$mqL* zgXSZuu7S+b#@0y8t#TI%cbEUx-Orv)!E6onh)|XxNdASE4KfT^jqMfgNp_DFW<-46 z?YaA(9~LS$e#L^)DbNJ+O&QO|lg}c#H`s4F;c~sMiw8a(oCO^wnpjvv(IA8(=7$@O z>#-6@esMSkmCRp!d*kN=TU2L)2vn9dGgxzkYt_@=KWKw0vR_*|y?=vPJ{s0eP=P{1 zN{66X(H^Hy+W_5{;4cfW405REmy{x|+Y}d?Fm~;2@zlO0)=<4=))^ez^{Guakn9UgINy%JrNJ@7 z=iIoh(~1C5kWL245fsyU^77mw>{a1Ph`LaJ+@}X`V`%D#>@aZYc9R8o8sC0@XHh@Q z4toO!U`Xk(nn}%iPF%G03_k7%Xl){bzPS7I@g2bmDW`Q2v5mTp|8)0NakUMR*N)Q5 zd%k(Tv;I0LJSI73-PEG8kl%M-7!Jah{T_aKZ9 zMR0ud=Y=mk(zGs;n_@Z@6c(M(yyvJHpZ@gEb#ZhTxsVBJGw=ML-_07qr1rm@5UkOTAx@&HI(q zQWyUfDT4g;{!L%Z8u6ggG*FXB_zlK8bSI*EZLs0{Jvm_}VZZjCxSFpEEQKg1qX23x zpFd^zgW2_}D?F7@?Iyhn4kNOf*pW!LmaN?-VZhK)D{*51=bjBgHp-2eqx*J9uUlR5 z0O8tEB=&WZ(wgcq#u$vMz+jA^WCCmqc*rS3q4H}9!nFXSdl zpF$GqdM>@E8$X%#?C{>g?dXz4;tuJOQJL6xp}MRxAgXsmM8zbvGbE_ud2jIEr8lrG zmrp^*>D{TLNEd<5HTZ5S>H|swzGe5OZ|Ccc4ESYd8vNe`-axmFR#y=Dgi~Y01x^+V9+IS-3>M2Fa zYe}t}8O6Y%Y~{ChZyQk!8w4JjRDHao zMy0oEC=dmH-|lI>yESAS=!+aTLWz(@Mg>zxo9pztAKvH@q_%egwy0N(t|1#5f}m6z zXS_VJiN5*c!pb2nBiyT2U=!|B$c0Z`Wt^bTlys z&)zJ?0*KYs(C-m!`2Z}^C?Hn$-_bKZTJ`(Cm-6)O2a8Do;tFO%tk|JD4jBLDSDW_T zQ^$yA96@iGc2nQ+YbQ7F_V^UyR8;AEWXaXWuv1b5hu5f=-l4B*haP27H?i|!LtaD7 ziULFQjeYdAd5bHp?3Ch1*oP=wPYee1aQb2KNTrpXs;h!AL1Pk%gUjWL1L&TW9UWK3 zcsH=%z_A&^maRMh=a~zVQbJUUtzD;nR4kkrd+FtyxATxAI}o$7A+X>LhAWa3gFE)> z9A%X^bHR5%Zr}OW;nP=c=NFfmELKDnvZdcrZ4{2TS*O0ECcX0J`zQ=|?)&HXne!J} z*mP71f_<-@l-0UZ*M|o^HTjLXi@t_MRWb#|`G-Zu)UH!MIjil1y$1|~^Tm5XhzcYO zA>olV>%=!mNy})A;a-3N3;Q6QRgS_%O_*+^O|v6r<6ZTdh~ZOc6QHh06l4+MVk5gV zkvY|3Mv&x^O+rlhB#>?-lsIG%bC+pF03dN&hvXAaZo~jaHE~6tPa)7SLgYZCDjP2_ z5`+}Pi(6kZ;%fkSkL((p0v4wpvrI;m zI8QZg+o#4fN)D)>Xsnm4C8kC;ZCShPgUK(AnzH)spZ_{!zHTQxT#O%NdB54=FS+e6 zK9+lB-Pl_8@X+SF4F7M~;#R07VIiug^~Wa-_?aGA3uH zVz0~Ov=r0gs~1ivO>>Ahz!%~V_l0;xs3ziQ#Yg9!`e)B?KdoMT^$t=B?2!%VD_}2} z=SDAuLjB{OFTn$a^A51wR_4lAbsl=_+NGb&d2RBz;XnWJPg1JB>gy?p%^Gn$fM zwo8f%i;9Yi3-8{%ab37>HP2ChyMQipTh_L+_81bCbAe;++M!;llNbnEF7}fhom*A9~To9(YD*b z$48C|7RvCmC?bv9z2h_bvr9xqvg$Iua z3lXk8rfvg7T>?c_ry41);oEK4E)j6&9HXrtjfuVO@0 zDkfM!SFp$;w49MUEQ@AnTO8+h!`ded**qvacd{igri0z`B0+pPd_*-lO8^n7Z=-6vVL1wOst^g!=H_d;yV6XrTQ5^I>6Y zaRh4(ueczE6e82XL()<>592%xwwcp-Q97?Yjn%eH2X8>I5H-GX@#um7=l?i}@#OSq z77Iy~F`og)O?&B39F#;vAlQV)AS~ZX3!jnwnS}Bb$u!R#U*TaSG8wdmA}&BXV*42z z0#cAlq=W3=@i>qcpT+%2cVLpEKnoePjmhhFk7ZI~$4bo-Dngrfg{OtyEy95_?sSM{ z*kCbn0GZL=3nRG|H$H6gSc{MB@)P-+7tS{j+EXQ>r(ok_m(Y>&IMeU3ww8kid4d)& z2tALPAa6YOEo0QoRQ5uyNS7qeDi7P!0840Z9JkCq3A@gM^A&PH+K2y*eJ7Fmh}TZC zMI9?m}m*r;`Y5rt0JUX0V!&${_@T+{8T{xV+x`{36jq7fZxgdHR(+omJrR zxzTpJl!ztXl}8t%u%~J(va`)Cc<1=14ud4;uU6iqlx|w^h4DLHNY;3H_ird<`47*>eLe!s zdfonlmpNkP-RFEB`6T5073VD?%;ip%&&@mUED(Q~uqE z=cjal|DXyC;W?9EoZMEF7)&#Amc1f{a>IOsAP~~R$u36oq{?yRK(@m_;*}`PhO|Km zL#a;3M?66IBVUmc)N7-WT+W#?5hX$<9E!Zc?Li(-C4Mxm;4xoVWOUTg2oTY=(l#L` z*u3F*Xcx1U^t4)N9iGFC(cpx{?p@^hudy3=8c@rhHQUdcrztn)4bht zd1C$u!&C(+szrUk$~7O?^`T^JvrFzTG~*|;!Kh6wBt2r40Xz^{p*QsyE8hxkf`sSP z($@(3_3aMy(ok!go$bPTVMdQOFP~vI@z_qf{R8~7wLjDm1t0+nT<{M-DhP{71TulR zuo45P7xb!KfaTI29P^G~63b%%G15|~w+ca;CmL`s2 zF)hX{Ryc!%Y!#gH1IvIH=M@fSiM`$tyfyM5`KyE(msj}fjr#V4#C8K4RqC%m8`p?Y zggaiR>07Si?q>9x@deA>U5Pr*OJhXJppOq0uwNJu777T=hhsY`_;JaJBjv;&&YQ$4 z6APSjKx7_oqfk$%(hwT|@H@N3tFX)NpRB`)^La(CJ&83@jstD+7N%|u$qm!KKscw-rJ4g;)1Eh zq=e2LUNk5rGAycoivd%Y?zyZIM2M%SS%$mRU3%i%(JkxO&vqob*`tp-6SMu&Y z&sIV}2{7ZC-xt3=ZrH$~W96+OGy(TtnY6t1+V1|l{{7M2nx!^KX{_D`)#^B7>kYg| z1E6D^g~wLS7|_2=gV>J>yWxJ zv6aITdcOJdv5Oav?f7hb$9P#Tjgce-#Wa2F?PVL+FM0bZJzzjn!9k5{)@SUC6QAtW zyq-vgnz6?Qgw;%L+PXzXLX51zFwk|*ct7mONrQF4}5&T@>%-2SzY zTJZA&1?<^zQ-x*G;HK|b56?^$hzHiINGUkVVW9$|*9dl83DQ}Y+lA8ld6DTEwXIA! zzQRP7F2n($`Sv|VI4(J$4PjD-q9C-`F-QHP%X9c#9u$lIjfjY7&!ZNqb{>k8M0_f< z=gm0KmWAS@QjF?>rsr3SwFTn6S?=-LT)w=nLc(e>65HisLo`?zrufgiFJ?}LFdBg} z4o-;UK0vE6h-jdMaOPYybQ9SMyRyH-s@t*h%hy)m$Ib4y%OP(X=x54-- znF@Sg;_oDmCPIfm+hC;y^d9ajTEgUg<WK7G<-*wj z%_yG{iAkFsWr!P54?7%^$K!lXxglxG$>Xp;$soW~8nryWro`5PzG?QBi&bp1`%rbd z$z!qje~zVb%w55mzPhU#11e0f78rtUAYU$a+8M7OsubV?r^`zgv)fbV?Mzv;XBl~% zrM;M9Lcin6AQIuQ9tS*FOd`h+{jvl;r7g$kGOQ*tT-bP;I@lXLIG=|ZxXqU-@ z#MU=m$i4t=B01ci=g9%F8;Xw#hK$&aavEuJ!3mLV`0dwQAv9dgVlO!#|+Kp^3r^R+K zK_-KibXSso2|WR{E*j%NFlarbG~mj`fDljJ?(41SQ-k&eYl;qF*2<)8;3{UIQIBKO z?BB+>rx%3aAURTJ2boD>3lrnX%?M#l7}^!e4uLJU{tD{@%tR-tdc*ekUD>WcTvyF-Jbxe_ zq+>7mU0FQCM959BbkEDOxU|UAEL!TWEj*c#DoQ;*i>nk+kzGlAJwxzIyf?UOyWE)L zx&W;#afm@L-_L2886w_w)m#xS0|Sq^f@K!%y5p5O#5c9ds`I-D)paFNb|@@3Tv!7$ zRY)pnBVFQnB~R$F*>BtX%9BHvTb6`sxGS-98C=Lyf(RRqJi|r?+RRD`r=b|BUSm2V z33NKl@34D@WbY^#&!pGNsT`pSyODub8_?k^%U@VVA9+Jvmt>Y8U&MI8e|!SN!Z@d$ z`8R{E`fnYW^Zdj?vySk|3Y66cVnz5ycw&rMCD^?P8y)-MdyzJ>0~L2e1JBwqXfyqP zH`27v9}MG*^I!ZcXZfnkL{=*1!i32d$WdXKX_TXsc8ig<=h_P*g%CbVD}ON0f8>#H zSVG2$F*RxjQ{KJdC*%hrRS|PKJYvQzM~R3&odAn_{l`XhQ1_8|bp`W6u9-S2Pn(ZY-yBnC0 z(yrGhziv6?aNqIxi>&@D#i!QHY>8Z)&8HwxOJ3<3hve^L3lmp5BKj^+tYkcn%K4U( z8r@~|!+odrerP~aypn*xg$n2T;vMJHjMNwc9H0tg1Vjc&jb0|S0i74SA!T4R44R8f ze5_nG?X<^_*^oB0)NS>s&nD6tX(vzuV$UNr%BY=}^2jXzF$SCnWBvZ}2e}J4K!61) zT0WBG6m(xWaJDu6^YO z*IdOdPjQKALj(jI^j!wUhy^rWu4p%m;Q}5+@HY8ZeLX2(!fmFVWrNFIrTAvUq&z8D z8rWl#`|K315lo)ePye>#*F%dyyP_a{0!WxRit%W5)Bw`zw;&+``v-9L343`|2 zkhU?uL<%NIpip(6R2M-DvSH`#q0(y+LEacBk3=T3a`$P;8o!Dx? zi*uK4`MUxSoxEZub7kLmFv{_fBD4%k=>9q|>K?(aACjH&fWnyf`$cxqr2DwJ>(Iao ze5x=IQ9cOLLnRO#QJ=TyOsUhT&RP z4>0zzdd<7>ja>wwSCRD7dQMopl^{Ihr#<)4_a!Q6bCC80E#0(Y_AM9m#a4&$A7mUL zK+LEo)*XR$N`tdAN2o~di&lSAS|K(sJPyMhUw*HP1bi3RHkjxvL2-Sr|HpP|>aL|X z6=oEv5bob&T_Z_1NycHe*C4@%XTK`*@?XHn0kad_Rl#$`AG3{6s>#6Wgqh@U= za}k&Rov8ylb-VbfFPZ6rt)@$gR;dk5h-NJn6kj-n$VKk@@{MyY%t{-0*SjUE<|q}8 z>Wr;zl^r}`Xjxy4r$?>s&AsA1vzW!J?8+)d< zky3*=#xrm2rllk?;H@paxhSLXCP^V93DxL`m2*hWm!<|*qOqGuNuy^om^`kd>t>G3 z>VDyD*rsHHqXRB3%1BbTOfvS+sG=z{Y}{2pymVFX^np`Z%2yot>P?#7wM|Q9Q=d!- z5?^~fj?(w14epXV!Bu^D+XwS+AJwaEG?pV&uPrXOf~XL@$y0y)>!<&klXYJCkLzB2 zaNHT4W5Z-V5IdKHYT!vkCwJ|hWw#V{9q`SHzh8e&P8+F@pI-;#u!MM$Pf#j8V??)J zi|@R!Z-*FJ<)ra?gW~dUmMjkH_4ev^?cgrjEg{_~vqf|sEuW9%7??URtAH59jEM|- zjV8*M;jS;+Fl%&=Hj+GwWvwl$n}l3ya98hq{klRK-rbA}L8+b~jfUHKXw8G?Qsr!; zN+7f;Wcz4nsQ7N-I6)KrL*sj1K9^h;?z(+%-)W(VX(}g3gRAVzdFm&4PshTm7JOaq zYN*-wA$K|iI26}8@0_cj{G^ms)5#yuXZ(x~#sR^G+V&bTY3d`3KiS8Z>8wQY z-y$j+Gj-9`(0hA8pIW62xboo_SFZke(|(d7dm36Lcj}s*(=ENx;3tXbGPcn8>=Cyu z_~({Ad-vcXivOFZ*U*c`Pr7De6YoiRY-?kSAXd2--@oLm62eVXmK`iPc%rW1>gn@d zdi{;p7S7OVC>vc@F$wq<3y{cmeaFsNwe=XrbX2os%Qrt9ta^FPw>x(4*|lZ;+lyy% zm3H=5POGqCSh`sEU^^1qdElfuAM8AVU9X>eSAEsq&sMy(Zs*oR72;@Bsk2u;Hf1ud zy104rTuhXS2*|qr03nFNqvAW|jkO;2>CM8rY~~kQ3#b%t z;xRns>hYIdc+S9retml7_Rb$P{NjmIXT7mb0mdF@*{<(*m!I7E>g2-i{UmVoS8}n0 zO2ERO3cS2{-edPnx$Wi~uD@~0{ZGt)_1z7-j_@A5pqqQv|8vv96FXm>n3EWf<*g_Q zzgIO^R{mdn^zN#a%a^Tqcg=?Hc9xXaNVaK~sXu-3#%rJKKfe3T>vCI#VtuWRqbAWTVWz> z9`jsxgK$>yBSkbcp;Z&?7G*tYyW+`fqiP`2ySCC|P5;f@my7da`vd~fM1FTe8os`cAR zFwUhx=6XT2KYMyYZd_!$zdTBCKew}d>+%D~2)$VH_3|ff8h_1@@ioj>x1CzgJ`3sWiFZQXNRbtm?&oj19#ZFoRHWVb6`-j0ne zaQPiG<~{fHeOC-jk8hcjd&#spPqN=7Av!{Ae^iQXG3Ua2qvF`U&8z2JRVd)Oe^`g} zVe>A$9$figI;kEFYmTlU%SNn*9%IGUD4XZFro}Qcc=xt+$WD^5k1j_vZQJI%M zz3~|6ya~G!|0P%za%*64sNTn9#X>c}XtpEagr2 zqOLZi2zSWHA2`ptAmSO5`NQ7e3gISY&vuZ-A0duAyg|H>I{NkwH)>ZFr$M+^0D+lD z?o1}8pu6)5CsA)f3RH-6Bfhe`>T?Y1Y+vxPxCq z4eMpQ1J{Vl!g&sE;TTvMp%0gf<-depx&g=txQ(jvfx=8#&bn*99*IolBqD2QVCo!7 zR`XtsxFcTh6c)~`{t=t)c0e5H#K0fLj584xSNy z4vA&~t|Af9Di?L2HeySrY*PXacjWY1zV1V^A~c3n2r5Z!h=_)Ni8vkuM)@@yuQ$IP z%X&|ZGoVxSn=%wVQS-U9g7;+eYw@YcH4a1(JO1*xAv*=|u=`Q*@6MCekYt_HK!F@Q z;6mtACSkRK{^MMjWVz+d1v&S-h|UFaiL*-iJ!Hn?CCP%2-Uq6+8SR&gU`emAYV5wn z>vR&C*zOE*`nf9VT-BAHy84RZR?4DB%6O<6NB|LyK86idvV;^jlGy|o1Iws)hB|Fn zT-D<$UUsKUmt-Rs2wCt1Pu9mG$VW&+0|NS;5KnamSEw_<0eEBwIa<(GROr%?f-<;m z=U2dbs|d&^mJl&t0JeJ_&M;>Pp|o6OQ^RGg%y%lHx#w0FQ(x5rwLA|nrg$CrrgQ6X zde2)NK|!ic)a%Ek)FzA;MR6T})J42AN<}z`$MhJvCiKnf1A@{w2$!sBxIjwcWV*<# zaE4RPX?GkLB`ZjLtyu>TJH*^m^O7vvso^z}tTqU*Y+hQV!)5MgeNG%*$zx=Ub#TAB zpVC18XkY3+`Zt=ObX5)J&cUD*`fW-gQ-(nJeC}FzHO(fKQTW>`6oCVbmuPlnj<>PQ zKn|691xUsofB!yqx%DdX8lj)AHmO3iV~3LgZLjh!z=J>rmO$WiE)Td4r4NNJq9QEuUm{}2q3o)Ybj%{URlMa!A*01su^9I;ix21Gk5>af6Y;eUP%?YRo^ zOzL=lqlju$FM^*_wZQo%VFI0g&Q`>B!_|;H)N66nl(5U7F%+!W)mESzKVt^q6{wrj z5$7Q2K)pFDoVP8jG*;Dy6g)YK+EerX&Kft-9Gs4Lhs4l3I$UCT1&NB?W)nQ4p_?8I z&LMnmUa+-zhkPw{wI9-B>VAY(n6-QJT#ksX7%*^uLml4}#hlfylW?Kis9c#0rks4j z1B<`Df17H;7t%8c+^V+5?m2;H86&fSm)L^a2yj9@oyNI9aR>$RbPbj%HH1cZUN8_j z4YV&gGucsvjYkNdfaDVII8^Nr`1fS}q4Nadl90mzM8cr=Wy78$;?t^Huav9+`K=?c zhPTrEAew5)*rgY_XPqEf!w+D`BIW$*0Ntx=YO3oSPEO>(tOl@K6}E)wM${S?U$xVb ze?UoI}f8G;o*hQ1U?7w2co7ggM1=1RH9iR+=ZL z5X4hy8&EYcy|{?j;2{`e0*$DIAZr*DKLGx6n>G%DQPv%{Ih;Z+(TVC3Hj`Gt}=8oa+g|gZJ=U5ZW0VP3$TaR9j|pb zZk5l}FfROzFd8(;`-M7zfSDCk#E@Wa5J4zPUIKVE zuhZWC-mhu_W_gi;jSncbSGuce^7%ITkKrGcG4ZWZ7tu6`TtQueeGlTT);VkJ_t5nX zfMLRysv~kI&t3DA8@nqpyb7YEJg~+|ggx^qTf&cmmXnt;APB6i=@3Lq*ApG_wFp(LtUiT)c3}e z7n)@BdA8h*ubQxp0M&hE^lk+K#qA@+3Qw~uxs0csl$616;K2UHE4P&?&fu@E@n?+F zYvwp%g?uBz;?xz=7&6<+6KiY*4}Y*>M-9o&3Bch`%|h&6;UJ!2!TwU?zxArrQ@)qmD>VoZ6a5d_*VG`GfX^~9(*o33+lm4v<$sY6Yd;76m6UGrt z`Qvq;ikj0jH;xUZd#M-`1Xi*199QxPTugXqWRI~=ZK^~GK*-Kuf|NAu;)BM0+HBbS zKp**d+|){HNnypRBo4lCHb!8~@CBO=)H>j5wM;8=wS5P+lm1-o@>cw?>dx*wP$GrO z|JqheJz5^j+xI@k#FbNG@$Nsr+87Z#f_ahu0cOPM# zN;G8?!>His)P9#fuypfbNv|ozJq|2)=1wYXCqN0pv&TwlM9r%F10xcsJGKY|Fj#T%~5S3CidEQze4c3?Hg4$A+m-+(MJa&&*|2%b3XE;C$#8ydqeAS!} zc9ct2Vks{MT536|MoA5-Vv?aPySZO1??7LW-1qWFR*?T#T|ka6xnL6OR~h0pN1UWc zJ-Ys}5$#DJ7AX%1PwX-J-lgBE0Te7b!D>oaFZYU5E<)A2@ECPhZ+~S{PD@%O7uZ5$ zvqnx^@~z5>9Bdxqf&>4YIXWXsGzc3ppCL=yhxZOj!pbCy;^ffH9Pzi;Hy@D%vZ^=$ z#9c$$x8QaHMPd!L>6yQFX+d*{LB^P9)pht?uYN5Fh(id}=qlg*;`RN-m`g=W_tfrL zeoH?YZ#vU*tBk+g@yceF#1uZ_u^;;4Syt+y{*OrrdfK^e=5X?!v67M-x9mLZuI0)& zE?6Q!)|P%YcYM#*K`K5y?{(V?S7eL9j7r!X-Q|KA|J*N;(SvaxY^d4)(W4_fMd+yQ zjInp76vk5rmCBg}%D$lJ!FVM$RPK1=ru_Jkx(1D-OXYZOlRtU>I+bc!N;;2zKKsHh z0|jLEsK@JZE`iorvlfzb_b_V85c3%3L@TBa>Z6mep2{l6EhT&JfSX_2A~EiRF>7~~ zf3xV?p65UQxx9t?W9uG0Taw1bDwDyq5!2t_ryEp8u;KMj_Z&1;Kf3a}c^7tMG{nh* zn$*qn$T%xO?1^K^o9$OHNn;i@+ZT_K1bmWtno#-!Z+h_?>GxpN#Wect{$ronMEV0y z?XH){XGHkp?kAa{I}N4FB~^4V*8R?-lSfZ}T84zu^ddBKLBwd*{6`OBkG9$APzR%@b?9czMe~ zk*Nc2`NuY~Sqvto{ow-#j*^F$X{lt@ZOUd(l?n)H+4;Oj)*MtfJ0TJPnrZ}ixtA)H zAol`T&Aay1AH^yRYN~p}DQUEe$&WbI*u_PI` zZ6OJHSHD0iUbzcuXmK#ZW{m_G51lI?VKUtw5Rp3co_F_SABL*qNTmchvsdi@REZIX4mFZ(~%(lO;_JiOrq-+Ad`aS>G*I@Fn$gMA}93HcRvTOy>pN^k#qS*h(ht5-cSX-IbJDOXyILc5M#q|$VlKYp@k z+7*pXxT-k^=9&5yHoHKCx)(YB3u$8|)`aa2QsAxm64) zp^dSFjth_NdG!*p9~5tOUogqWlFEr!Bnp-FJtU%a);OOjs0z~9w0OUawuJXoK`Vtn z@y>$7TBct-|2rAQrW(PSTl>l%EV^d<; zkoIB!R;`Lq@u?&V6Z7-&Mzd71Lu#$Aa0TU?PQ(oDzrFa;8%Gyqwo^){P_pBYUIlAR zk2&(@S(2cdXxxIahw}Yv*ZHyoTR&Smd&<~hg1w4F9Aq5w59@UCv)@;d0J-1jTV^l& ze0%Bf8i|pjE)?e_<#NAq)$h!@i-SsAmi^pTrlOLqOQr&qT;d{`~9#repqacCH;5j{PV8*+mo+<^wl=p<9*(_ zp}_DwvZCbc6?5*m?92?MHG@@QhLAY$UddTg9Auc@y{OOKk62-&mkqJ0mu`HzFv6X_ypr|9J+milyd1iA80bECAEB-gK6WWfbB0ukKM}kMu{Y?X>|?NK!;j!r_PwkE{OgeeN1wo_ zfE7`I+X&yGlB{{c=RsMuPf^5^EuLk-TM65t2<|pd*c)n3MDr(HI4B4jVUU=*m&!x# z6ZAc29uco41S6#Pz<|I|Ib=QKPfSjtZSUlWz%QT(!He}SuB`&H1mL2QD>q`jMXCUs z?P?C)VtFL)bG)Q$IVRziEU-k7y}k+`3bB0w*%1^gPfjbujH5tfh@6&%6ptnmwNbdA zV^$)xuN5WLo+s}JKNbfJkR?iyFByjiA+6AGi#S?fG$^SS6uUs?gnXl3q#HlHD_kPG z(AhxUZ``DWC-y%7`vqwcHhy#NT6&|JKk>dm^L}m$7v~v{MtKO_++OnDw83qetNIxB z`V*U8}FN#O-l_M{D^x323iLC9( zJ%&zOKNZvx+ius<&mKWo@yENvpU^Rt-!Hs0ow9NS2D4}BwYf30v8Nn*orgXu9+FI1 zIpnD)H!rw6OS+&3jzpB+ziMj#1RAamS#fOm`*|YZ_rQP8fta`G@(g5aIil>|W!I}a z=g6Vl`QCwYsXlBt{^cxnX%4X4 zLDC+dh^3A^NK)!X`lxp2ijX)(wBqH0t@}}O> zV>pOOyAHm8cYhIB^`Yy?+6RZU;l=1fgw&ZTyKwd?Z$MwpzC<&PaDsYEFgp`mU2pMb zI^h=d7H4)Lw4mN%%?$D+XAq{LYva}mhZt*%!Cl7MTH;J&ZP8{np$7F9Wp*c#p57wO z99%i|*23&T$iW^YeC^q|g`2tfbLuV3?1d4!-a^gZgsIS5h}nl=gnA1$^YHQ1Taek8 z&e2<-*^jr_k3oQKtZ%cK1&Gd)#`H{Iw$koaw$dnezl`nzxMF{N7L4M+Vk+wWf|)f?CYC%QH)!%b1po77CUMB$ zG}!|og-&PYc*vug9D;x__COSXJfq1;2vcg2k{7%$Yhs6ZjI$9eJjP1?dILq^h+E}S zr`>+T-{DpPC`m6}OO;TKL`~krY!_y@6L1=lyt?iV50v28iy}2^w&aZ^#X{fbYw%8u zGu(sUs3$W;0@|;U?-8-2jo}Wxd>w&F+8OSa*KQ_#M|;DabmuN|MszaVogVrL|MGOh z-TleqgcRv&xbt7AMfKXvaG$lT0aL{8hCASb4+y{3({P86|D0uaZ^PZ{hVNNS^)=kd zckgBa!VKH_(L<)>T<)PdvpDR&#QeEeWlK zhYFt*UMO!%_?qx7;Y-4QikK3u?5Y2kspsjFL?K8q+=VYm+_esd`|K5NGeJ5$@WOxU z4v)BEqwet7o44u?Z+FjLIy}d4cbRzvrE#v|&YfS0Sl-8QpYf`L1qZ1$MYwRE^R}$m zTq;9|2ocr6m#i^Wz;?B~;)lo%`PM=TS&JXSx}MSOhnlFIGp!%wo;9s{58>Fis^B=W z-_TPbo;Xggy`ZG2916@S}I*J$d3( zq)>KU1%T`5+fShJ!|b54@*Zg*X--`$25={daiop;MWn9^dfIfL=f_9oRw}8K}^Nyx{O)iy1 zBdy?BY8LcCRW0iC`a9L>pPVnYA3!vL0)_n#l3@vfssY9m!9OPT8)AAlCG&fR>70q# zIwlAxI9Lc8{v+<|L+@o^Coom+VBkV04+@en0; zx?$TO^hUDhZ1}jdn4I%W)`$ybXo?~UzeFabTJJp)v(yM7;v`GRy6?M+{!9V~$dT*z zV0jF6W;JTxf~%n@yj0MxG2)rQZJ6O4&!eoO0kU7eiDji!HP3YH#2xc1!#jJ~FL&Y~r&b!HWXM1%-xBnI0X z-z$ z5?fKy8mYirI(nFOt-w$u402-K{KkD3_7F$$z*fC)T)xllVLi@Z^gm|B3v0X(+kJo+ zaug9S^5~Wo501`?!BiwVXY!KWbsm%}#}t6615!#w-`TjkTmxQ2uE8j9`Lwe;w7|+Q z>&n+iD~pDrtmy?)pIo`ARO!)zFtT)(fBW){MQy?Yqq<%754k;dpS30=-?)NbMFfllMV2M-Ku*P>PK4XUAug6G+S zEv1&&{Q(ZEb^6%MnAW-1FO%*_7L+h7Hhs`_3l#DnWLA0X``^C3AThqTzK?>BgQ8OV zU$=OZfEKBPrY=)xf1rsHd)o^WdZrJ)=fi_euaPPs zcU1bQnQJhH=6d|AG29;9d(=#E$~W3`Iw-c+#DywCfjDP#`&nboo&3DG`x_lFLYGcw;u&7H;qmbfT2ynwa`q?VP(``|6js^(f*0fNXi6Bs0pPHlrs8Vc9W)4=IUqFnA4H+P4ec%Rj`9?R`1u|0GhIpts>v+maVaBK5B%O@CWU05W!A^+5}1x% zW+AulKqkdL0#R}XcJF7LwO1Xe+qwe>dN~q@GC5`3!91nC%fNj;=0HUQgDDze->V~; zS~1t?zek_b55DvuN8rZ7rj5{RWOkDZQSVld`wm3(NZ85&`8t>c{aEXO{!(1rC~sE# zlBUNnzLFV>>6OYP>|vj5d8+-ROF57SxQ%CPWml3_rV3iDY&6}*$UQQXahbnyQzg4% zP#F89Ok>=@ICF#S$(?SjW)F8fBk5TdmVP$3F?5sc__+h7JJxqomHhRQ4@m=*jRRP=zb(X?+ zC}R|Cv!axKEi9pmA^h$3z#Co;1?g}FjoFocS zUC^y)r23X>yH_hXSWp7Au=v1YJW&4nhss}Dq_WQsj1>X|CIbHg(_vO0FdLhn=(~mBf7~Lox4t4azqRkgAm51`>x2ap z5AdDHvQC8it|;=IXoQJ_eJ6Y{ab^eW3I!9>FsuHmmf)`%sEtVLqYJjqOZMHtLRo#d zY;1ml?}UXCH&(xu@5FDS#J`GiH=@M<3CfMZu7WBHSgjN`Zhi_36F`i?prAM3pW+tx zs<)szgcl!6SGq$}2FrMe% z%Vr(>sQR=7!j%t0J_H%;GMHt+wl=z&@vMw3kT1nZ0SQZ1N)u6vi1I@e8y3hXiU?6Q zNE-nVjcTKHpR<}{Qu)m>skVJj!=&2fS{MXgP**B6zXYX=;z^WC^3Iw==>eY@#R2zePSv2`$b7?T;f8reU9-NZiR|9kbk*B2 zy_%zt@u#7XZTb{gEmh@{dpEmZwXJ=>=05~=mgZZ}7a%nAXFzBZyb++Y_31$9X@l;! zfY9nDK&XD<78I(%PU@iW&?c3tiRy7$9sc#ew>J)anJNABs27eI$awdCz49Ky2dLTZ zbe+lRDE#Rf@- zC4)?j2{nj*R>_5L_8pdh4LLiExx;)IFl|(Oarg*0n=n*A7l2+(vKhlu9TSC7y5} zy(O#JLuQZ;sER~gq_-rc=o4jMr$&{$sOBw|yiiLe-v!x*Iq`H^pi$%cyEVqyTC9jA zC6tz*{(sdNNBHV*X^gvA4f|hdj74Jf327p%=-wRclmB{HwTbqfur%JkDlw*8S6KD8 zB;H1e@#hk6=bs5SO4#`Yf#-AqNaj9EFcxm9 zF*Q|-{*uJhR4w{T5>r#PXmRM;Usk8p{`QQBcCOiMlyll_^nY8VNvn3|^K)u!|_ibI)dgYIi4Q=Kjc3-@d)Q#F-?E%St?GF77- zj8$84pwF_cL4`y|oU$_SAWr@H!e>lw^Vu=}Ukjf+W&}r8T}jbWzuP1Q@h_+DX}qtxF3PU=E4tfjjwdwr;h zynC6lWZ4^U$d_L1_un%M6KJttbEd8MDqeV~Vi@ z7VF7<^1HSnTppv_)h0{1gwkvNp=e%;FfN?*wVA|P${l~(cC3av8}9b^AHdKk!*FN* zy$lWEz@1Kek+U{eDMoRK0q-`k=X)wCYDMyKABQ@_LNeLQcxQ8rl zKwXEL(sus)=n+Y{6*hJ~DODm3cg*$Qku-vcGHveqk#LKx4R_kZ2T3atZ@6>jo**b= zlHo3RvCd3o#p)iqToR;W*B3bYLv7a=G2sjB`qB({>l?R_-nEP2ZaZxc8Lcu6clwOO zM32fg+&!PEAZiSK*8dfU?z6wF6n{4C`hqV0*bD&mbhnuJCAwcc7UFK%W)#~P#SwoD zrBi(oGQf1F+`A8RQc}faJbo1QAJI^HJzIq~l3p0_nv-4#LosmfDlgrDJ!$Y?KhgH2 zG8&XUY5eWmwLPhfhE7PY?#x+bSYIX^?mR|=GH)EjXlTRooYAma+mp&@h?9w0Ib;-v zul;@de#O76rV%4xOHCv6kE&`c6^&3!O(WD&(+IWHG(!I!RgI;lX{xIEEu4iH-Ke6; z5*8*F<7yiFBL?F>6-{jZzcv^rI=(_Fuo&nf&%&cC4ApTz)B7FvQIP93iGlPblP>mN zka3!XK~Oxuk8u%%5UU`^9u&qxy>DVX1{nhBZF*}l41g@wq#vZ0={=5d5#&itvLU$d zl;T_tnXXAk2;MzAaZrOy)g%$p!}M;(NgQ&GCee@_)B71NbC5BbghINT-qqM6LC%9@ zn;!Cj3H2_)LmM&((#`Z%<53NHPLn)Hmgz0SE(tPAlPpN4=`F!U8gjoT?IB%F?{-|F zA-8K14fs>?~c<;wIy=)oa5ROx!>YiQ&}Ppd9wkIh3U6#)caVvVEP?4ZoN`H z#h^0!1U~%dg3iqlmJs3dhUtN4iy{}Ey&LldEalT4If#J-mh!^0m8Ep_c($G$Q;PR%OL^hB%2K{JJXcxD5BP_Z?qYWI8xGHv*)jN1X2&y_ z9sirCkpEg9z|6Q-&5Ti#zt%Hj0?b{_jP36)VP*`)j{xT01I4sr?%C2`gO=3OU(Afc z+||q|%w5flEw9-yY$T1ar#fpjH!k@8$SXiO~{B*(u9nd)-p2&Fk;lqC?iJA zj57JEnNeP(k|xp~Ii#hDoVh2pG*S2xv1+8hhArpiGr(H>I@Dr$f>=;XaSJ35H%-Uv z{v$mbMqD9gG0cYY^3`l8FJH+7Vs@`&f?Qs{k_qJHtCq{l?<~$0^77SWC@)`4hH8&De z0pwXtdOWSJ#Hk!IQIi&s zR8kaU=n1(Pl45#1L5h0cA~ryZ>HQ0&9l^8-B>;Iv6Uh$W*7R0j-3gheNl!>JsRE5u zAu}{dhmi1hkI`PpG)>Tbpsnz3F**pjQIpn?MAN$gvrNbYO(X?Vg6aJTb4$o*NIX&d z0~GZxH_|xt4uiy*-a7J9L0;6P01|6@Pr%Glz13krslZ!=7 zajjs!${9?YxYQKa8Rn~;!E*3lQWAmqFDZ#&82(Gj8B7?dat0Gds-`$$q-u&2|0N|6 z2qP7dCzrMIC(7N`a&r}Gxw#6p++2nJUN_f22AXL(!sqbUM}~SEhI)+1zFmb}uL*)3 zl|uH-6f#beFi5n>z6gaP`)1*q<{>7dQ14O#W3P7{*tKYIQmlrtKz`pbfwitH!=huS`7)1S> U&)@03{d1vb`u00R+spp{11{1xg#Z8m literal 0 HcmV?d00001 diff --git a/src/main/site/resources/images/region_split_process.png b/src/main/site/resources/images/region_split_process.png new file mode 100644 index 0000000000000000000000000000000000000000..27176173c852d512e0213f97a782d28222d2b11f GIT binary patch literal 338255 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%0A%{#s9|1FwTDk)NA~v)}M=r=nS_^ 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�!`Day|biPK3!Hm(3@xqBS;9-@UJH|0a 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 uAE!33dl5?}~sQoeW4fUHv(8dk7KD2pykF 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 j;0oLn40yKVYit`tt4*W>|3uYp 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
e-LiCtDwpXx-UYaW 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�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 - + + lt.velykis.maven.skins + reflow-maven-skin + 1.1.1 + + + + bootswatch-spacelab + + Apache HBase Project + ^Documentation + 0.94 Documentation|ASF + + + Apache HBase images/hbase_logo.png http://hbase.apache.org/ - - - + + Apache HBase Orca + images/hbasecon2015.30percent.png + http://hbasecon.com/ + @@ -47,35 +63,31 @@ - - - + + + + + - - - - - - - - - - - + + + + + + + + + - - - + + + - - - + + + - - org.apache.maven.skins - maven-stylus-skin - diff --git a/src/main/site/xdoc/index.xml b/src/main/site/xdoc/index.xml index 964d887..d7e1e4e 100644 --- a/src/main/site/xdoc/index.xml +++ b/src/main/site/xdoc/index.xml @@ -17,17 +17,21 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd"> - Apache HBase™ Home + Apache HBase™ Home -
-

Apache HBase™ is the Hadoop database, a distributed, scalable, big data store. +

+

Apache HBase™ is the Hadoop database, a distributed, scalable, big data store. +

+

Download Apache HBase™

+

+ Click here to download Apache HBase™.

When Would I Use Apache HBase?

- Use Apache HBase when you need random, realtime read/write access to your Big Data. + Use Apache HBase™ when you need random, realtime read/write access to your Big Data. This project's goal is the hosting of very large tables -- billions of rows X millions of columns -- atop clusters of commodity hardware. Apache HBase is an open-source, distributed, versioned, non-relational database modeled after Google's Bigtable: A Distributed Storage System for Structured Data by Chang et al. Just as Bigtable leverages the distributed data storage provided by the Google File System, Apache HBase provides Bigtable-like capabilities on top of Hadoop and HDFS. @@ -68,6 +72,14 @@ Apache HBase is an open-source, distributed, versioned, non-relational database

+

May 7th, 2015 HBaseCon2015 in San Francisco

+

February 17th, 2015 HBase meetup around Strata+Hadoop World in San Jose

+

January 15th, 2015 HBase meetup @ AppDynamics in San Francisco

+

November 20th, 2014 HBase meetup @ WANdisco in San Ramon

+

October 27th, 2014 HBase Meetup @ Apple in Cupertino

+

October 15th, 2014 HBase Meetup @ Google on the night before Strata/HW in NYC

+

September 25th, 2014 HBase Meetup @ Continuuity in Palo Alto

+

August 28th, 2014 HBase Meetup @ Sift Science in San Francisco

July 17th, 2014 HBase Meetup @ HP in Sunnyvale

June 5th, 2014 HBase BOF at Hadoop Summit, San Jose Convention Center

May 5th, 2014 HBaseCon2014 at the Hilton San Francisco on Union Square

diff --git a/src/main/site/xdoc/replication.xml b/src/main/site/xdoc/replication.xml index 97aaf51..2633f08 100644 --- a/src/main/site/xdoc/replication.xml +++ b/src/main/site/xdoc/replication.xml @@ -26,520 +26,6 @@ -
-

- The replication feature of Apache HBase (TM) provides a way to copy data between HBase deployments. It - can serve as a disaster recovery solution and can contribute to provide - higher availability at the HBase layer. It can also serve more practically; - for example, as a way to easily copy edits from a web-facing cluster to a "MapReduce" - cluster which will process old and new data and ship back the results - automatically. -

-

- The basic architecture pattern used for Apache HBase replication is (HBase cluster) master-push; - it is much easier to keep track of what’s currently being replicated since - each region server has its own write-ahead-log (aka WAL or HLog), just like - other well known solutions like MySQL master/slave replication where - there’s only one bin log to keep track of. One master cluster can - replicate to any number of slave clusters, and each region server will - participate to replicate their own stream of edits. For more information - on the different properties of master/slave replication and other types - of replication, please consult - How Google Serves Data From Multiple Datacenters. -

-

- The replication is done asynchronously, meaning that the clusters can - be geographically distant, the links between them can be offline for - some time, and rows inserted on the master cluster won’t be - available at the same time on the slave clusters (eventual consistency). -

-

- The replication format used in this design is conceptually the same as - - MySQL’s statement-based replication . Instead of SQL statements, whole - WALEdits (consisting of multiple cell inserts coming from the clients' - Put and Delete) are replicated in order to maintain atomicity. -

-

- The HLogs from each region server are the basis of HBase replication, - and must be kept in HDFS as long as they are needed to replicate data - to any slave cluster. Each RS reads from the oldest log it needs to - replicate and keeps the current position inside ZooKeeper to simplify - failure recovery. That position can be different for every slave - cluster, same for the queue of HLogs to process. -

-

- The clusters participating in replication can be of asymmetric sizes - and the master cluster will do its “best effort” to balance the stream - of replication on the slave clusters by relying on randomization. -

-

- As of version 0.92, Apache HBase supports master/master and cyclic - replication as well as replication to multiple slaves. -

- -
-
-

- The guide on enabling and using cluster replication is contained - in the API documentation shipped with your Apache HBase distribution. -

-

- The most up-to-date documentation is - - available at this address. -

-
-
-

- The following sections describe the life of a single edit going from a - client that communicates with a master cluster all the way to a single - slave cluster. -

-
-

- The client uses an API that sends a Put, Delete or ICV to a region - server. The key values are transformed into a WALEdit by the region - server and is inspected by the replication code that, for each family - that is scoped for replication, adds the scope to the edit. The edit - is appended to the current WAL and is then applied to its MemStore. -

-

- In a separate thread, the edit is read from the log (as part of a batch) - and only the KVs that are replicable are kept (that is, that they are part - of a family scoped GLOBAL in the family's schema, non-catalog so not - hbase:meta or -ROOT-, and did not originate in the target slave cluster - in - case of cyclic replication). -

-

- The edit is then tagged with the master's cluster UUID. - When the buffer is filled, or the reader hits the end of the file, - the buffer is sent to a random region server on the slave cluster. -

-

- Synchronously, the region server that receives the edits reads them - sequentially and separates each of them into buffers, one per table. - Once all edits are read, each buffer is flushed using HTable, the normal - HBase client.The master's cluster UUID is retained in the edits applied at - the slave cluster in order to allow cyclic replication. -

-

- Back in the master cluster's region server, the offset for the current - WAL that's being replicated is registered in ZooKeeper. -

-
-
-

- The edit is inserted in the same way. -

-

- In the separate thread, the region server reads, filters and buffers - the log edits the same way as during normal processing. The slave - region server that's contacted doesn't answer to the RPC, so the master - region server will sleep and retry up to a configured number of times. - If the slave RS still isn't available, the master cluster RS will select a - new subset of RS to replicate to and will retry sending the buffer of - edits. -

-

- In the mean time, the WALs will be rolled and stored in a queue in - ZooKeeper. Logs that are archived by their region server (archiving is - basically moving a log from the region server's logs directory to a - central logs archive directory) will update their paths in the in-memory - queue of the replicating thread. -

-

- When the slave cluster is finally available, the buffer will be applied - the same way as during normal processing. The master cluster RS will then - replicate the backlog of logs. -

-
-
-
-

- This section describes in depth how each of replication's internal - features operate. -

-
-

- HBase replication maintains all of its state in Zookeeper. By default, this state is - contained in the base znode: -

-
-                /hbase/replication
-        
-

- There are two major child znodes in the base replication znode: -

    -
  • Peers znode: /hbase/replication/peers
  • -
  • RS znode: /hbase/replication/rs
  • -
-

-
-

- The peers znode contains a list of all peer replication clusters and the - current replication state of those clusters. It has one child peer znode - for each peer cluster. The peer znode is named with the cluster id provided - by the user in the HBase shell. The value of the peer znode contains - the peers cluster key provided by the user in the HBase Shell. The cluster key - contains a list of zookeeper nodes in the clusters quorum, the client port for the - zookeeper quorum, and the base znode for HBase - (i.e. “zk1.host.com,zk2.host.com,zk3.host.com:2181:/hbase”). -

-
-                /hbase/replication/peers
-                    /1 [Value: zk1.host.com,zk2.host.com,zk3.host.com:2181:/hbase]
-                    /2 [Value: zk5.host.com,zk6.host.com,zk7.host.com:2181:/hbase]
-            
-

- Each of these peer znodes has a child znode that indicates whether or not - replication is enabled on that peer cluster. These peer-state znodes do not - have child znodes and simply contain a boolean value (i.e. ENABLED or DISABLED). - This value is read/maintained by the ReplicationPeer.PeerStateTracker class. -

-
-                /hbase/replication/peers
-                    /1/peer-state [Value: ENABLED]
-                    /2/peer-state [Value: DISABLED]
-            
-
-
-

- The rs znode contains a list of all outstanding HLog files in the cluster - that need to be replicated. The list is divided into a set of queues organized by - region server and the peer cluster the region server is shipping the HLogs to. The - rs znode has one child znode for each region server in the cluster. The child - znode name is simply the regionserver name (a concatenation of the region server’s - hostname, client port and start code). These region servers could either be dead or alive. -

-
-                /hbase/replication/rs
-                    /hostname.example.org,6020,1234
-                    /hostname2.example.org,6020,2856
-            
-

- Within each region server znode, the region server maintains a set of HLog replication - queues. Each region server has one queue for every peer cluster it replicates to. - These queues are represented by child znodes named using the cluster id of the peer - cluster they represent (see the peer znode section). -

-
-                /hbase/replication/rs
-                    /hostname.example.org,6020,1234
-                        /1
-                        /2
-            
-

- Each queue has one child znode for every HLog that still needs to be replicated. - The value of these HLog child znodes is the latest position that has been replicated. - This position is updated every time a HLog entry is replicated. -

-
-                /hbase/replication/rs
-                    /hostname.example.org,6020,1234
-                        /1
-                            23522342.23422 [VALUE: 254]
-                            12340993.22342 [VALUE: 0]
-            
-
-
-
-
-

- All of the base znode names are configurable through parameters: -

- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDefault Value
zookeeper.znode.parent/hbase
zookeeper.znode.replicationreplication
zookeeper.znode.replication.peerspeers
zookeeper.znode.replication.peers.statepeer-state
zookeeper.znode.replication.rsrs
-

- The default replication znode structure looks like the following: -

-
-                /hbase/replication/peers/{peerId}/peer-state
-                /hbase/replication/rs
-            
-
-
-
    -
  • hbase.replication (Default: false) - Controls whether replication is enabled - or disabled for the cluster.
  • -
  • replication.sleep.before.failover (Default: 2000) - The amount of time a failover - worker waits before attempting to replicate a dead region server’s HLog queues.
  • -
  • replication.executor.workers (Default: 1) - The number of dead region servers - one region server should attempt to failover simultaneously.
  • -
-
-
-
-

- When a master cluster RS initiates a replication source to a slave cluster, - it first connects to the slave's ZooKeeper ensemble using the provided - cluster key (that key is composed of the value of hbase.zookeeper.quorum, - zookeeper.znode.parent and hbase.zookeeper.property.clientPort). It - then scans the "rs" directory to discover all the available sinks - (region servers that are accepting incoming streams of edits to replicate) - and will randomly choose a subset of them using a configured - ratio (which has a default value of 10%). For example, if a slave - cluster has 150 machines, 15 will be chosen as potential recipient for - edits that this master cluster RS will be sending. Since this is done by all - master cluster RSs, the probability that all slave RSs are used is very high, - and this method works for clusters of any size. For example, a master cluster - of 10 machines replicating to a slave cluster of 5 machines with a ratio - of 10% means that the master cluster RSs will choose one machine each - at random, thus the chance of overlapping and full usage of the slave - cluster is higher. -

-

- A ZK watcher is placed on the ${zookeeper.znode.parent}/rs node of - the slave cluster by each of the master cluster's region servers. - This watch is used to monitor changes in the composition of the - slave cluster. When nodes are removed from the slave cluster (or - if nodes go down and/or come back up), the master cluster's region - servers will respond by selecting a new pool of slave region servers - to replicate to. -

-
-
-

- Every master cluster RS has its own znode in the replication znodes hierarchy. - It contains one znode per peer cluster (if 5 slave clusters, 5 znodes - are created), and each of these contain a queue - of HLogs to process. Each of these queues will track the HLogs created - by that RS, but they can differ in size. For example, if one slave - cluster becomes unavailable for some time then the HLogs should not be deleted, - thus they need to stay in the queue (while the others are processed). - See the section named "Region server failover" for an example. -

-

- When a source is instantiated, it contains the current HLog that the - region server is writing to. During log rolling, the new file is added - to the queue of each slave cluster's znode just before it's made available. - This ensures that all the sources are aware that a new log exists - before HLog is able to append edits into it, but this operations is - now more expensive. - The queue items are discarded when the replication thread cannot read - more entries from a file (because it reached the end of the last block) - and that there are other files in the queue. - This means that if a source is up-to-date and replicates from the log - that the region server writes to, reading up to the "end" of the - current file won't delete the item in the queue. -

-

- When a log is archived (because it's not used anymore or because there's - too many of them per hbase.regionserver.maxlogs typically because insertion - rate is faster than region flushing), it will notify the source threads that the path - for that log changed. If the a particular source was already done with - it, it will just ignore the message. If it's in the queue, the path - will be updated in memory. If the log is currently being replicated, - the change will be done atomically so that the reader doesn't try to - open the file when it's already moved. Also, moving a file is a NameNode - operation so, if the reader is currently reading the log, it won't - generate any exception. -

-
-
-

- By default, a source will try to read from a log file and ship log - entries as fast as possible to a sink. This is first limited by the - filtering of log entries; only KeyValues that are scoped GLOBAL and - that don't belong to catalog tables will be retained. A second limit - is imposed on the total size of the list of edits to replicate per slave, - which by default is 64MB. This means that a master cluster RS with 3 slaves - will use at most 192MB to store data to replicate. This doesn't account - the data filtered that wasn't garbage collected. -

-

- Once the maximum size of edits was buffered or the reader hits the end - of the log file, the source thread will stop reading and will choose - at random a sink to replicate to (from the list that was generated by - keeping only a subset of slave RSs). It will directly issue a RPC to - the chosen machine and will wait for the method to return. If it's - successful, the source will determine if the current file is emptied - or if it should continue to read from it. If the former, it will delete - the znode in the queue. If the latter, it will register the new offset - in the log's znode. If the RPC threw an exception, the source will retry - 10 times until trying to find a different sink. -

-
-
-

- If replication isn't enabled, the master's logs cleaning thread will - delete old logs using a configured TTL. This doesn't work well with - replication since archived logs passed their TTL may still be in a - queue. Thus, the default behavior is augmented so that if a log is - passed its TTL, the cleaning thread will lookup every queue until it - finds the log (while caching the ones it finds). If it's not found, - the log will be deleted. The next time it has to look for a log, - it will first use its cache. -

-
-
-

- As long as region servers don't fail, keeping track of the logs in ZK - doesn't add any value. Unfortunately, they do fail, so since ZooKeeper - is highly available we can count on it and its semantics to help us - managing the transfer of the queues. -

-

- All the master cluster RSs keep a watcher on every other one of them to be - notified when one dies (just like the master does). When it happens, - they all race to create a znode called "lock" inside the dead RS' znode - that contains its queues. The one that creates it successfully will - proceed by transferring all the queues to its own znode (one by one - since ZK doesn't support the rename operation) and will delete all the - old ones when it's done. The recovered queues' znodes will be named - with the id of the slave cluster appended with the name of the dead - server. -

-

- Once that is done, the master cluster RS will create one new source thread per - copied queue, and each of them will follow the read/filter/ship pattern. - The main difference is that those queues will never have new data since - they don't belong to their new region server, which means that when - the reader hits the end of the last log, the queue's znode will be - deleted and the master cluster RS will close that replication source. -

-

- For example, consider a master cluster with 3 region servers that's - replicating to a single slave with id '2'. The following hierarchy - represents what the znodes layout could be at some point in time. We - can see the RSs' znodes all contain a "peers" znode that contains a - single queue. The znode names in the queues represent the actual file - names on HDFS in the form "address,port.timestamp". -

-
-/hbase/replication/rs/
-                      1.1.1.1,60020,123456780/
-                          2/
-                              1.1.1.1,60020.1234  (Contains a position)
-                              1.1.1.1,60020.1265
-                      1.1.1.2,60020,123456790/
-                          2/
-                              1.1.1.2,60020.1214  (Contains a position)
-                              1.1.1.2,60020.1248
-                              1.1.1.2,60020.1312
-                      1.1.1.3,60020,    123456630/
-                          2/
-                              1.1.1.3,60020.1280  (Contains a position)
-        
-

- Now let's say that 1.1.1.2 loses its ZK session. The survivors will race - to create a lock, and for some reasons 1.1.1.3 wins. It will then start - transferring all the queues to its local peers znode by appending the - name of the dead server. Right before 1.1.1.3 is able to clean up the - old znodes, the layout will look like the following: -

-
-/hbase/replication/rs/
-                      1.1.1.1,60020,123456780/
-                          2/
-                              1.1.1.1,60020.1234  (Contains a position)
-                              1.1.1.1,60020.1265
-                      1.1.1.2,60020,123456790/
-                          lock
-                          2/
-                              1.1.1.2,60020.1214  (Contains a position)
-                              1.1.1.2,60020.1248
-                              1.1.1.2,60020.1312
-                      1.1.1.3,60020,123456630/
-                          2/
-                              1.1.1.3,60020.1280  (Contains a position)
-
-                          2-1.1.1.2,60020,123456790/
-                              1.1.1.2,60020.1214  (Contains a position)
-                              1.1.1.2,60020.1248
-                              1.1.1.2,60020.1312
-        
-

- Some time later, but before 1.1.1.3 is able to finish replicating the - last HLog from 1.1.1.2, let's say that it dies too (also some new logs - were created in the normal queues). The last RS will then try to lock - 1.1.1.3's znode and will begin transferring all the queues. The new - layout will be: -

-
-/hbase/replication/rs/
-                      1.1.1.1,60020,123456780/
-                          2/
-                              1.1.1.1,60020.1378  (Contains a position)
-
-                          2-1.1.1.3,60020,123456630/
-                              1.1.1.3,60020.1325  (Contains a position)
-                              1.1.1.3,60020.1401
-
-                          2-1.1.1.2,60020,123456790-1.1.1.3,60020,123456630/
-                              1.1.1.2,60020.1312  (Contains a position)
-                      1.1.1.3,60020,123456630/
-                          lock
-                          2/
-                              1.1.1.3,60020.1325  (Contains a position)
-                              1.1.1.3,60020.1401
-
-                          2-1.1.1.2,60020,123456790/
-                              1.1.1.2,60020.1312  (Contains a position)
-        
-
-
-
- Following the some useful metrics which can be used to check the replication progress: -
    -
  • source.sizeOfLogQueue: number of HLogs to process (excludes the one which is being - processed) at the Replication source
  • -
  • source.shippedOps: number of mutations shipped
  • -
  • source.logEditsRead: number of mutations read from HLogs at the replication source
  • -
  • source.ageOfLastShippedOp: age of last batch that was shipped by the replication source
  • -
- Please note that the above metrics are at the global level at this regionserver. In 0.95.0 and onwards, these - metrics are also exposed per peer level. -
- -
-
-

- Yes, this is for much later. -

-
-
-

- You can use the HBase-provided utility called CopyTable from the package - org.apache.hadoop.hbase.mapreduce in order to have a discp-like tool to - bulk copy data. -

-
-
-

- Yes, this behavior would help a lot but it's not currently available - in HBase (BatchUpdate had that, but it was lost in the new API). -

-
-
-

- Yes. See HDFS-2757. -

-
-
+

This information has been moved to the Cluster Replication section of the Apache HBase Reference Guide.

diff --git a/src/main/xslt/configuration_to_asciidoc_chapter.xsl b/src/main/xslt/configuration_to_asciidoc_chapter.xsl new file mode 100644 index 0000000..428d95a --- /dev/null +++ b/src/main/xslt/configuration_to_asciidoc_chapter.xsl @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + +//// +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//// +:doctype: book +:numbered: +:toc: left +:icons: font +:experimental: + +[[hbase_default_configurations]] +=== HBase Default Configuration + +The documentation below is generated using the default hbase configuration file, _hbase-default.xml_, as source. + + + +[[]] +``:: ++ +.Description + ++ +.Default + + `` + + + none + + + + + + diff --git a/src/main/xslt/configuration_to_docbook_section.xsl b/src/main/xslt/configuration_to_docbook_section.xsl deleted file mode 100644 index 57219ab..0000000 --- a/src/main/xslt/configuration_to_docbook_section.xsl +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - -HBase Default Configuration - - -The documentation below is generated using the default hbase configuration file, -hbase-default.xml, as source. - - - - - - - - - - - - - - - Default - - - - - - - - - - - -- 1.9.5 (Apple Git-50.3)