summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick D. Hunt <phunt@apache.org>2008-10-08 18:50:32 +0000
committerPatrick D. Hunt <phunt@apache.org>2008-10-08 18:50:32 +0000
commite04d55aa14c04ce90fdb0b7414c1fbfcbdaeb3a6 (patch)
tree90ad8dd2317274fd849e07423b0e95fe204474e8
parent8d30c6ed4e4e61f38b6eb6650f06a4d33038b1a9 (diff)
downloadzookeeper-e04d55aa14c04ce90fdb0b7414c1fbfcbdaeb3a6.tar.gz
ZOOKEEPER-180. Placeholder sections needed in document for new topics that the umbrella jira discusses
git-svn-id: https://svn.apache.org/repos/asf/hadoop/zookeeper/trunk@702964 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--CHANGES.txt3
-rw-r--r--docs/zookeeperAdmin.html551
-rw-r--r--docs/zookeeperAdmin.pdf1003
-rw-r--r--src/docs/src/documentation/content/xdocs/zookeeperAdmin.xml886
4 files changed, 1446 insertions, 997 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 083d9ebb5..15134db39 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -20,6 +20,9 @@ Backward compatibile changes:
BUGFIXES:
+ ZOOKEEPER-180. Placeholder sections needed in document for new topics that
+ the umbrella jira discusses (robbie via phunt)
+
ZOOKEEPER-179. Programmer's Guide "Basic Operations" section is missing
content (robbie via phunt)
diff --git a/docs/zookeeperAdmin.html b/docs/zookeeperAdmin.html
index 89b095119..c82c2bdb5 100644
--- a/docs/zookeeperAdmin.html
+++ b/docs/zookeeperAdmin.html
@@ -179,6 +179,27 @@ document.write("Last Published: " + document.lastModified);
<a href="#ch_administration">Administration</a>
<ul class="minitoc">
<li>
+<a href="#sc_designing">Designing a ZooKeeper Deployment</a>
+</li>
+<li>
+<a href="#sc_provisioning">Provisioning</a>
+</li>
+<li>
+<a href="#sc_strengthsAndLimitations">Things to Consider: ZooKeeper Strengths and Limitations</a>
+</li>
+<li>
+<a href="#sc_administering">Administering</a>
+</li>
+<li>
+<a href="#sc_monitoring">Monitoring</a>
+</li>
+<li>
+<a href="#sc_logging">Logging</a>
+</li>
+<li>
+<a href="#sc_troubleshooting">Troubleshooting</a>
+</li>
+<li>
<a href="#sc_configuration">Configuration Parameters</a>
<ul class="minitoc">
<li>
@@ -196,10 +217,7 @@ document.write("Last Published: " + document.lastModified);
</ul>
</li>
<li>
-<a href="#sc_zkCommands">Zookeeper Commands: The Four Letter Words</a>
-</li>
-<li>
-<a href="#sc_monitoring">Monitoring</a>
+<a href="#sc_zkCommands">ZooKeeper Commands: The Four Letter Words</a>
</li>
<li>
<a href="#sc_dataFileManagement">Data File Management</a>
@@ -267,17 +285,17 @@ document.write("Last Published: " + document.lastModified);
</ul>
<p>The first two sections assume you are interested in installing
- Zookeeper in a production environment such as a datacenter. The final
- section covers situations in which you are setting up Zookeeper on a
+ ZooKeeper in a production environment such as a datacenter. The final
+ section covers situations in which you are setting up ZooKeeper on a
limited basis - for evaluation, testing, or development - but not in a
production environment.</p>
<a name="N10032"></a><a name="sc_systemReq"></a>
<h3 class="h4">System Requirements</h3>
-<p>Zookeeper runs in Java, release 1.5 or greater, as group of hosts
- called a quorum. Three Zookeeper hosts per quorum is the minimum
- recommended quorum size. At Yahoo!, Zookeeper is usually deployed on
- dedicated RHEL boxes, with dual-core processors, 2GB of RAM, and 80GB
- IDE harddrives.</p>
+<p>ZooKeeper runs in Java, release 1.5 or greater (JDK 5 or greater).
+ It runs as group of hosts called a quorum. Three ZooKeeper hosts per
+ quorum is the minimum recommended quorum size. At Yahoo!, ZooKeeper is
+ usually deployed on dedicated RHEL boxes, with dual-core processors, 2GB
+ of RAM, and 80GB IDE harddrives.</p>
<a name="N1003C"></a><a name="sc_zkMulitServerSetup"></a>
<h3 class="h4">Clustered (Multi-Server) Setup</h3>
<p>For reliable ZooKeeper service, you should deploy ZooKeeper in a
@@ -295,11 +313,12 @@ document.write("Last Published: " + document.lastModified);
<li>
-<p>Install the Java JDK:</p>
+<p>Install the Java JDK. You can use the native packaging system
+ for your system, or download the JDK from:</p>
<p>
-<span class="codefrag computeroutput">$yinst -i jdk-1.6.0.00_3 -br test </span>
+<a href="http://java.sun.com/javase/downloads/index.jsp">http://java.sun.com/javase/downloads/index.jsp</a>
</p>
</li>
@@ -307,22 +326,29 @@ document.write("Last Published: " + document.lastModified);
<li>
-<p>Set the Java heap size. This is very important, to avoid
- swapping, which will seriously degrade Zookeeper performance. To
- determine the correct value, load tests, make sure you are well
- below the usage limit that would cause you to swap. Be conservative
- - use a maximum heap size of 3GB for a 4GB machine.</p>
+<p>Set the Java heap size. This is very important to avoid
+ swapping, which will seriously degrade ZooKeeper performance. To
+ determine the correct value, use load tests, and make sure you are
+ well below the usage limit that would cause you to swap. Be
+ conservative - use a maximum heap size of 3GB for a 4GB
+ machine.</p>
</li>
<li>
-<p>Install the Zookeeper Server Package:</p>
+<p>Install the ZooKeeper Server Package. It can be downloaded
+ from:
+ </p>
<p>
-<span class="codefrag computeroutput">$ yinst install -nostart zookeeper_server </span>
+
+<a href="http://hadoop.apache.org/zookeeper/releases.html">
+ http://hadoop.apache.org/zookeeper/releases.html
+ </a>
+
</p>
</li>
@@ -370,7 +396,7 @@ server.3=zoo3:2888</span>
<li>
<p>If your configuration file is set up, you can start
- Zookeeper:</p>
+ ZooKeeper:</p>
<p>
@@ -406,7 +432,7 @@ server.3=zoo3:2888</span>
<p>In C, you can compile either the single threaded client or
the multithreaded client: or n the c subdirectory in the
- Zookeeper sources. This compiles the single threaded
+ ZooKeeper sources. This compiles the single threaded
client:</p>
@@ -428,8 +454,8 @@ server.3=zoo3:2888</span>
<p>Running either program gives you a shell in which to execute
- simple file-system-like operations. To connect to Zookeeper with the multithreaded
- client, for example, you would run:</p>
+ simple file-system-like operations. To connect to ZooKeeper with the
+ multithreaded client, for example, you would run:</p>
<p>
@@ -439,26 +465,25 @@ server.3=zoo3:2888</span>
</li>
</ol>
-<a name="N100CE"></a><a name="sc_singleAndDevSetup"></a>
+<a name="N100D0"></a><a name="sc_singleAndDevSetup"></a>
<h3 class="h4">Single Server and Developer Setup</h3>
-<p>If you want to setup Zookeeper for development purposes, you will
- probably want to setup a single server instance of Zookeeper, and then
+<p>If you want to setup ZooKeeper for development purposes, you will
+ probably want to setup a single server instance of ZooKeeper, and then
install either the Java or C client-side libraries and bindings on your
development machine.</p>
<p>The steps to setting up a single server instance are the similar
to the above, except the configuration file is simpler. You can find the
- complete instructions in the <a href="zookeeperStarted.html#sc_InstallingSingleMode">Installing
- and Running Zookeeper in SIngle Server Mode</a> section of the
- <a href="zookeeperStarted.html">Zookeeper
- Getting Started Guide</a>.</p>
+ complete instructions in the <a href="zookeeperStarted.html#sc_InstallingSingleMode">Installing and
+ Running ZooKeeper in SIngle Server Mode</a> section of the <a href="zookeeperStarted.html">ZooKeeper Getting Started
+ Guide</a>.</p>
<p>For information on installing the client side libraries, refer to
the <a href="zookeeperProgrammers.html#Bindings">Bindings</a>
- section of the <a href="zookeeperProgrammers.html">Zookeeper
+ section of the <a href="zookeeperProgrammers.html">ZooKeeper
Programmer's Guide</a>.</p>
</div>
-<a name="N100EF"></a><a name="ch_administration"></a>
+<a name="N100F1"></a><a name="ch_administration"></a>
<h2 class="h3">Administration</h2>
<div class="section">
<p>This section contains information about running and maintaining
@@ -468,6 +493,69 @@ server.3=zoo3:2888</span>
<li>
<p>
+<a href="#sc_designing">Designing a ZooKeeper Deployment</a>
+</p>
+
+</li>
+
+
+<li>
+
+<p>
+<a href="#sc_provisioning">Provisioning</a>
+</p>
+
+</li>
+
+
+<li>
+
+<p>
+<a href="#sc_strengthsAndLimitations">Things to Consider: ZooKeeper Strengths and Limitations</a>
+</p>
+
+</li>
+
+
+<li>
+
+<p>
+<a href="#sc_administering">Administering</a>
+</p>
+
+</li>
+
+
+<li>
+
+<p>
+<a href="#sc_monitoring">Monitoring</a>
+</p>
+
+</li>
+
+
+<li>
+
+<p>
+<a href="#sc_logging">Logging</a>
+</p>
+
+</li>
+
+
+<li>
+
+<p>
+<a href="#sc_troubleshooting">Troubleshooting</a>
+</p>
+
+</li>
+
+
+<li>
+
+<p>
<a href="#sc_configuration">Configuration Parameters</a>
</p>
@@ -477,7 +565,7 @@ server.3=zoo3:2888</span>
<li>
<p>
-<a href="#sc_zkCommands">Zookeeper Commands: The Four Letter Words</a>
+<a href="#sc_zkCommands">ZooKeeper Commands: The Four Letter Words</a>
</p>
</li>
@@ -510,370 +598,371 @@ server.3=zoo3:2888</span>
</li>
</ul>
-<a name="N10123"></a><a name="sc_configuration"></a>
+<a name="N1015D"></a><a name="sc_designing"></a>
+<h3 class="h4">Designing a ZooKeeper Deployment</h3>
+<p></p>
+<a name="N10166"></a><a name="sc_provisioning"></a>
+<h3 class="h4">Provisioning</h3>
+<p></p>
+<a name="N1016F"></a><a name="sc_strengthsAndLimitations"></a>
+<h3 class="h4">Things to Consider: ZooKeeper Strengths and Limitations</h3>
+<p></p>
+<a name="N10178"></a><a name="sc_administering"></a>
+<h3 class="h4">Administering</h3>
+<p></p>
+<a name="N10181"></a><a name="sc_monitoring"></a>
+<h3 class="h4">Monitoring</h3>
+<p></p>
+<a name="N1018A"></a><a name="sc_logging"></a>
+<h3 class="h4">Logging</h3>
+<p></p>
+<a name="N10193"></a><a name="sc_troubleshooting"></a>
+<h3 class="h4">Troubleshooting</h3>
+<p></p>
+<a name="N1019C"></a><a name="sc_configuration"></a>
<h3 class="h4">Configuration Parameters</h3>
<p>ZooKeeper's behavior is governed by the ZooKeeper configuration
- file. This file is designed so that the exact same file can be used by
- all the servers that make up a ZooKeeper server assuming the disk
- layouts are the same. If servers use different configuration files,
- care must be taken to ensure that the list of servers in all of the
- different configuration files match.</p>
-<a name="N1012C"></a><a name="sc_minimumConfiguration"></a>
+ file. This file is designed so that the exact same file can be used by
+ all the servers that make up a ZooKeeper server assuming the disk
+ layouts are the same. If servers use different configuration files, care
+ must be taken to ensure that the list of servers in all of the different
+ configuration files match.</p>
+<a name="N101A5"></a><a name="sc_minimumConfiguration"></a>
<h4>Minimum Configuration</h4>
-<p>Here are the minimum configuration keywords that must be
- defined in the configuration file:</p>
+<p>Here are the minimum configuration keywords that must be defined
+ in the configuration file:</p>
<dl>
-
-
+
<dt>
<term>clientPort</term>
</dt>
<dd>
<p>the port to listen for client connections; that is, the
- port that clients attempt to connect to.</p>
+ port that clients attempt to connect to.</p>
</dd>
-
+
<dt>
<term>dataDir</term>
</dt>
<dd>
-<p>the location where Zookeeper will store the in-memory
- database snapshots and, unless specified otherwise, the
- transaction log of updates to the database.</p>
+<p>the location where ZooKeeper will store the in-memory
+ database snapshots and, unless specified otherwise, the
+ transaction log of updates to the database.</p>
<div class="note">
<div class="label">Note</div>
<div class="content">
-
-<p>Be careful where you put the transaction log. A
- dedicated transaction log device is key to consistent good
- performance. Putting the log on a busy device will adversely
- effect performance.</p>
+<p>Be careful where you put the transaction log. A
+ dedicated transaction log device is key to consistent good
+ performance. Putting the log on a busy device will adversely
+ effect performance.</p>
+
</div>
</div>
</dd>
-
-
+
+
<dt>
<term>tickTime</term>
</dt>
<dd>
-<p>the length of a single tick, which is the basic time
- unit used by ZooKeeper, as measured in milliseconds. It is
- used to regulate heartbeats, and timeouts. For example, the
- minimum session timeout will be two ticks.</p>
+<p>the length of a single tick, which is the basic time unit
+ used by ZooKeeper, as measured in milliseconds. It is used to
+ regulate heartbeats, and timeouts. For example, the minimum
+ session timeout will be two ticks.</p>
</dd>
-
-
+
</dl>
-<a name="N10153"></a><a name="sc_advancedConfiguration"></a>
+<a name="N101CC"></a><a name="sc_advancedConfiguration"></a>
<h4>Advanced Configuration</h4>
-<p>The configuration settings in the section are optional. You
- can use them to further fine tune the behaviour of your Zookeeper
- servers. Some can also be set using Java system properties,
- generally of the form <em>zookeeper.keyword</em>. The
- exact system property, when available, is noted below.</p>
+<p>The configuration settings in the section are optional. You can
+ use them to further fine tune the behaviour of your ZooKeeper servers.
+ Some can also be set using Java system properties, generally of the
+ form <em>zookeeper.keyword</em>. The exact system
+ property, when available, is noted below.</p>
<dl>
-
-
+
<dt>
<term>dataLogDir</term>
</dt>
<dd>
<p>(No Java system property)</p>
<p>This option will direct the machine to write the
- transaction log to the <strong>dataLogDir</strong> rather than the <strong>dataDir</strong>. This allows a dedicated log
- device to be used, and helps avoid competition between logging
- and snaphots.</p>
+ transaction log to the <strong>dataLogDir</strong> rather than the <strong>dataDir</strong>. This allows a dedicated log
+ device to be used, and helps avoid competition between logging
+ and snaphots.</p>
<div class="note">
<div class="label">Note</div>
<div class="content">
-
-<p>Having a dedicated log device has a large impact on
- throughput and stable latencies. It is highly recommened to
- dedicate a log device and set <strong>dataLogDir</strong> to point to a directory on
- that device, and then make sure to point <strong>dataDir</strong> to a directory
- <em>not</em> residing on that device.</p>
+<p>Having a dedicated log device has a large impact on
+ throughput and stable latencies. It is highly recommened to
+ dedicate a log device and set <strong>dataLogDir</strong> to point to a directory on
+ that device, and then make sure to point <strong>dataDir</strong> to a directory
+ <em>not</em> residing on that device.</p>
+
</div>
</div>
</dd>
-
-
+
+
<dt>
<term>globalOutstandingLimit</term>
</dt>
<dd>
<p>(Java system property: <strong>zookeeper.globalOutstandingLimit.</strong>)</p>
<p>Clients can submit requests faster than ZooKeeper can
- process them, especially if there are a lot of clients. To
- prevent ZooKeeper from running out of memory due to queued
- requests, ZooKeeper will throttle clients so that there is no
- more than globalOutstandingLimit outstanding requests in the
- system. The default limit is 1,000.</p>
+ process them, especially if there are a lot of clients. To
+ prevent ZooKeeper from running out of memory due to queued
+ requests, ZooKeeper will throttle clients so that there is no
+ more than globalOutstandingLimit outstanding requests in the
+ system. The default limit is 1,000.</p>
</dd>
-
-
+
+
<dt>
<term>preAllocSize</term>
</dt>
<dd>
<p>(Java system property: <strong>zookeeper.preAllocSize</strong>)</p>
<p>To avoid seeks ZooKeeper allocates space in the
- transaction log file in blocks of preAllocSize kilobytes. The
- default block size is 64M. One reason for changing the size of
- the blocks is to reduce the block size if snapshots are taken
- more often. (Also, see <strong>snapCount</strong>).</p>
+ transaction log file in blocks of preAllocSize kilobytes. The
+ default block size is 64M. One reason for changing the size of
+ the blocks is to reduce the block size if snapshots are taken
+ more often. (Also, see <strong>snapCount</strong>).</p>
</dd>
-
+
<dt>
<term>snapCount</term>
</dt>
<dd>
<p>(Java system property: <strong>zookeeper.snapCount</strong>)</p>
<p>Clients can submit requests faster than ZooKeeper can
- process them, especially if there are a lot of clients. To
- prevent ZooKeeper from running out of memory due to queued
- requests, ZooKeeper will throttle clients so that there is no
- more than globalOutstandingLimit outstanding requests in the
- system. The default limit is 1,000.ZooKeeper logs transactions
- to a transaction log. After snapCount transactions are written
- to a log file a snapshot is started and a new transaction log
- file is started. The default snapCount is 10,000.</p>
+ process them, especially if there are a lot of clients. To
+ prevent ZooKeeper from running out of memory due to queued
+ requests, ZooKeeper will throttle clients so that there is no
+ more than globalOutstandingLimit outstanding requests in the
+ system. The default limit is 1,000.ZooKeeper logs transactions
+ to a transaction log. After snapCount transactions are written
+ to a log file a snapshot is started and a new transaction log
+ file is started. The default snapCount is 10,000.</p>
</dd>
-
+
<dt>
<term>traceFile</term>
</dt>
<dd>
<p>(Java system property: <strong>requestTraceFile</strong>)</p>
-<p>If this option is defined, requests will be will logged
- to a trace file named traceFile.year.month.day. Use of this
- option provides useful debugging information, but will impact
- performance. (Note: The system property has no zookeeper
- prefix, and the configuration variable name is different from
- the system property. Yes - it's not consistent, and it's
- annoying.)</p>
+<p>If this option is defined, requests will be will logged to
+ a trace file named traceFile.year.month.day. Use of this option
+ provides useful debugging information, but will impact
+ performance. (Note: The system property has no zookeeper prefix,
+ and the configuration variable name is different from the system
+ property. Yes - it's not consistent, and it's annoying.)</p>
</dd>
-
-
+
</dl>
-<a name="N101B3"></a><a name="sc_clusterOptions"></a>
+<a name="N1022C"></a><a name="sc_clusterOptions"></a>
<h4>Cluster Options</h4>
<p>The options in this section are designed for use in quorums --
- that is, when deploying clusters of servers.</p>
+ that is, when deploying clusters of servers.</p>
<dl>
-
+
<dt>
-<term>electionAlg:</term>
+<term>electionAlg</term>
</dt>
<dd>
<p>(No Java system property)</p>
-<p>Election implementation to use. A value of "0"
- corresponds to the original UDP-based version, "1" corresponds
- to the non-authenticated UDP-based version of fast leader
- election, "2" corresponds to the authenticated UDP-based
- version of fast leader election, and "3" corresponds to
- TCP-based version of fast leader election</p>
+<p>Election implementation to use. A value of "0" corresponds
+ to the original UDP-based version, "1" corresponds to the
+ non-authenticated UDP-based version of fast leader election, "2"
+ corresponds to the authenticated UDP-based version of fast
+ leader election, and "3" corresponds to TCP-based version of
+ fast leader election</p>
</dd>
-
+
<dt>
<term>electionPort</term>
</dt>
<dd>
<p>(No Java system property)</p>
<p>Port used for leader election. It is only used when the
- election algorithm is not "0". When the election algorithm is
- "0" a UDP port with the same port number as the port listed in
- the <strong>server.num</strong> option will be
- used.</p>
+ election algorithm is not "0". When the election algorithm is
+ "0" a UDP port with the same port number as the port listed in
+ the <strong>server.num</strong> option will be
+ used.</p>
</dd>
-
+
<dt>
<term>initLimit</term>
</dt>
<dd>
<p>(No Java system property)</p>
<p>Amount of time, in ticks (see <a href="#id_tickTime">tickTime</a>), to allow followers to
- connect and sync to a leader. Increased this value as needed,
- if the amount of data managed by ZooKeeper is large.</p>
+ connect and sync to a leader. Increased this value as needed, if
+ the amount of data managed by ZooKeeper is large.</p>
</dd>
-
+
<dt>
<term>leaderServes</term>
</dt>
<dd>
<p>(Java system property: zookeeper.<strong>leaderServes</strong>)</p>
-<p>Leader accepts client connections. Default value is
- "yes". The leader machine coordinates updates. For higher
- update throughput at thes slight expense of read throughput
- the leader can be configured to not accept clients and focus
- on coordination. The default to this option is yes, which
- means that a leader will accept client connections.
- </p>
+<p>Leader accepts client connections. Default value is "yes".
+ The leader machine coordinates updates. For higher update
+ throughput at thes slight expense of read throughput the leader
+ can be configured to not accept clients and focus on
+ coordination. The default to this option is yes, which means
+ that a leader will accept client connections.</p>
<div class="note">
<div class="label">Note</div>
<div class="content">
-
-<p>Turning on leader selection is highly recommended when
- you have more than three Zookeeper servers in a
- quorum.</p>
+<p>Turning on leader selection is highly recommended when
+ you have more than three ZooKeeper servers in a quorum.</p>
+
</div>
</div>
</dd>
-
+
<dt>
<term>server.x=[hostname]:nnnn, etc</term>
</dt>
<dd>
<p>(No Java system property)</p>
-<p>servers making up the Zookeeper quorum. When the server
- starts up, it determines which server it is by looking for the
- file <span class="codefrag filename">myid</span> in the data directory. That file contains the
- server number, in ASCII, and it should match <strong>x</strong> in <strong>server.x</strong> in the left hand side of this
- setting.</p>
-<p>The list of servers that make up ZooKeeper servers that
- is used by the clients must match the list of ZooKeeper
- servers that each ZooKeeper server has.</p>
-<p>The port numbers <strong>nnnn</strong>
- in this setting are the <em>electionPort</em>
- numbers of the servers (as opposed to clientPorts).
- If you want to test multiple servers on a single
- machine, the individual choices of electionPort for each
- server can be defined in each server's config files using the
- line electionPort=xxxx to avoid clashes.</p>
+<p>servers making up the ZooKeeper quorum. When the server
+ starts up, it determines which server it is by looking for the
+ file <span class="codefrag filename">myid</span> in the data directory. That file
+ contains the server number, in ASCII, and it should match
+ <strong>x</strong> in <strong>server.x</strong> in the left hand side of this
+ setting.</p>
+<p>The list of servers that make up ZooKeeper servers that is
+ used by the clients must match the list of ZooKeeper servers
+ that each ZooKeeper server has.</p>
+<p>The port numbers <strong>nnnn</strong> in
+ this setting are the <em>electionPort</em> numbers
+ of the servers (as opposed to clientPorts). If you want to test
+ multiple servers on a single machine, the individual choices of
+ electionPort for each server can be defined in each server's
+ config files using the line electionPort=xxxx to avoid
+ clashes.</p>
</dd>
-
+
<dt>
<term>syncLimit</term>
</dt>
<dd>
<p>(No Java system property)</p>
-<p>Amount of time, in ticks (see <a href="#id_tickTime">tickTime</a>), to allow followers to
- sync with ZooKeeper. If followers fall too far behind a
- leader, they will be dropped.</p>
+<p>Amount of time, in ticks (see <a href="#id_tickTime">tickTime</a>), to allow followers to sync
+ with ZooKeeper. If followers fall too far behind a leader, they
+ will be dropped.</p>
</dd>
-
+
</dl>
<p></p>
-<a name="N1021F"></a><a name="Unsafe+Options"></a>
+<a name="N10298"></a><a name="Unsafe+Options"></a>
<h4>Unsafe Options</h4>
-<p>The following options can be useful, but be careful when you
- use them. The risk of each is explained along with the explanation
- of what the variable does.</p>
+<p>The following options can be useful, but be careful when you use
+ them. The risk of each is explained along with the explanation of what
+ the variable does.</p>
<dl>
-
-
+
<dt>
<term>forceSync</term>
</dt>
<dd>
<p>(Java system property: <strong>zookeeper.forceSync</strong>)</p>
-<p>Requires updates to be synced to media of the
- transaction log before finishing processing the update. If
- this option is set to no, ZooKeeper will not require updates
- to be synced to the media.</p>
+<p>Requires updates to be synced to media of the transaction
+ log before finishing processing the update. If this option is
+ set to no, ZooKeeper will not require updates to be synced to
+ the media.</p>
</dd>
-
+
<dt>
<term>jute.maxbuffer:</term>
</dt>
<dd>
<p>(Java system property:<strong>
- jute.maxbuffer</strong>)</p>
+ jute.maxbuffer</strong>)</p>
<p>This option can only be set as a Java system property.
- There is no zookeeper prefix on it. It specifies the maximum
- size of the data that can be stored in a znode. The default is
- 0xfffff, or just under 1M. If this option is changed, the
- system property must be set on all servers and clients
- otherwise problems will arise. This is really a sanity check.
- ZooKeeper is designed to store data on the order of kilobytes
- in size.</p>
+ There is no zookeeper prefix on it. It specifies the maximum
+ size of the data that can be stored in a znode. The default is
+ 0xfffff, or just under 1M. If this option is changed, the system
+ property must be set on all servers and clients otherwise
+ problems will arise. This is really a sanity check. ZooKeeper is
+ designed to store data on the order of kilobytes in size.</p>
</dd>
-
-
+
+
<dt>
<term>skipACL</term>
</dt>
<dd>
<p>(Java system property: <strong>zookeeper.skipACL</strong>)</p>
-<p>Skips ACL checks.
- This results in a boost in throughput, but opens up full
- access to the data tree to everyone.</p>
+<p>Skips ACL checks. This results in a boost in throughput,
+ but opens up full access to the data tree to everyone.</p>
</dd>
-
-
-
+
</dl>
-<a name="N10251"></a><a name="sc_zkCommands"></a>
-<h3 class="h4">Zookeeper Commands: The Four Letter Words</h3>
-<p>Zookeeper responds to a small set of commands. Each command is composed of
- four letters. You issue the commands to Zookeeper via telnet or nc, at
- the client port.</p>
+<a name="N102CA"></a><a name="sc_zkCommands"></a>
+<h3 class="h4">ZooKeeper Commands: The Four Letter Words</h3>
+<p>ZooKeeper responds to a small set of commands. Each command is
+ composed of four letters. You issue the commands to ZooKeeper via telnet
+ or nc, at the client port.</p>
<dl>
-
-
+
<dt>
<term>dump</term>
</dt>
<dd>
<p>Lists the outstanding sessions and ephemeral nodes. This
- only works on the leader.</p>
+ only works on the leader.</p>
</dd>
-
-
+
+
<dt>
<term>kill</term>
</dt>
<dd>
-<p>Shuts down the server. This must be issued from the
- machine the Zookeeper server is running on.</p>
+<p>Shuts down the server. This must be issued from the machine
+ the ZooKeeper server is running on.</p>
</dd>
-
-
+
+
<dt>
<term>ruok</term>
</dt>
<dd>
-<p>Tests if server is running in a non-error state. The
- server will respond with imok if it is running. Otherwise it
- will not respond at all.</p>
+<p>Tests if server is running in a non-error state. The server
+ will respond with imok if it is running. Otherwise it will not
+ respond at all.</p>
</dd>
-
+
<dt>
<term>stat</term>
</dt>
<dd>
<p>Lists statistics about performance and connected
- clients.</p>
+ clients.</p>
</dd>
-
+
</dl>
<p>Here's an example of the <strong>ruok</strong>
- command:</p>
-<p>
-<span class="codefrag computeroutput">$ echo ruok | nc 127.0.0.1 5111
-
-imok</span>
-
-</p>
-<a name="N10286"></a><a name="sc_monitoring"></a>
-<h3 class="h4">Monitoring</h3>
-<p>
-<em>[tbd]</em>
-</p>
-<a name="N10291"></a><a name="sc_dataFileManagement"></a>
+ command:</p>
+<pre class="code">$ echo ruok | nc 127.0.0.1 5111
+imok
+</pre>
+<a name="N102FC"></a><a name="sc_dataFileManagement"></a>
<h3 class="h4">Data File Management</h3>
<p>ZooKeeper stores its data in a data directory and its transaction
log in a transaction log directory. By default these two directories are
@@ -881,7 +970,7 @@ imok</span>
transaction log files in a separate directory than the data files.
Throughput increases and latency decreases when transaction logs reside
on a dedicated log devices.</p>
-<a name="N1029A"></a><a name="The+Data+Directory"></a>
+<a name="N10305"></a><a name="The+Data+Directory"></a>
<h4>The Data Directory</h4>
<p>This directory has two files in it:</p>
<ul>
@@ -927,14 +1016,14 @@ imok</span>
idempotent nature of its updates. By replaying the transaction log
against fuzzy snapshots ZooKeeper gets the state of the system at the
end of the log.</p>
-<a name="N102D6"></a><a name="The+Log+Directory"></a>
+<a name="N10341"></a><a name="The+Log+Directory"></a>
<h4>The Log Directory</h4>
<p>The Log Directory contains the ZooKeeper transaction logs.
Before any update takes place, ZooKeeper ensures that the transaction
that represents the update is written to non-volatile storage. A new
log file is started each time a snapshot is begun. The log file's
suffix is the first zxid written to that log.</p>
-<a name="N102E0"></a><a name="File+Management"></a>
+<a name="N1034B"></a><a name="File+Management"></a>
<h4>File Management</h4>
<p>The format of snapshot and log files does not change between
standalone ZooKeeper servers and different configurations of
@@ -951,7 +1040,7 @@ imok</span>
needs the latest complete fuzzy snapshot and the log files from the
start of that snapshot. The PurgeTxnLog utility implements a simple
retention policy that administrators can use.</p>
-<a name="N102F1"></a><a name="sc_commonProblems"></a>
+<a name="N1035C"></a><a name="sc_commonProblems"></a>
<h3 class="h4">Things to Avoid</h3>
<p>Here are some common problems you can avoid by configuring
ZooKeeper correctly:</p>
@@ -961,7 +1050,7 @@ imok</span>
<term>inconsistent lists of servers</term>
</dt>
<dd>
-<p>The list of Zookeeper servers used by the clients must match
+<p>The list of ZooKeeper servers used by the clients must match
the list of ZooKeeper servers that each ZooKeeper server has.
Things work okay if the client list is a subset of the real list,
but things will really act strange if clients have a list of
@@ -976,7 +1065,7 @@ imok</span>
</dt>
<dd>
<p>The most performance critical part of ZooKeeper is the
- transaction log. Zookeeper syncs transactions to media before it
+ transaction log. ZooKeeper syncs transactions to media before it
returns a response. A dedicated transaction log device is key to
consistent good performance. Putting the log on a busy device will
adversely effect performance. If you only have one storage device,
@@ -991,7 +1080,7 @@ imok</span>
<dd>
<p>You should take special care to set your Java max heap size
correctly. In particular, you should not create a situation in
- which Zookeeper swaps to disk. The disk is death to ZooKeeper.
+ which ZooKeeper swaps to disk. The disk is death to ZooKeeper.
Everything is ordered, so if processing one request swaps the
disk, all other queued requests will probably do the same. the
disk. DON'T SWAP.</p>
@@ -1005,7 +1094,7 @@ imok</span>
</dd>
</dl>
-<a name="N10315"></a><a name="sc_bestPractices"></a>
+<a name="N10380"></a><a name="sc_bestPractices"></a>
<h3 class="h4">Best Practices</h3>
<p>For best results, take note of the following list of good
Zookeeper practices. <em>[tbd...]</em>
diff --git a/docs/zookeeperAdmin.pdf b/docs/zookeeperAdmin.pdf
index 089e41975..666a53046 100644
--- a/docs/zookeeperAdmin.pdf
+++ b/docs/zookeeperAdmin.pdf
@@ -5,10 +5,10 @@
/Producer (FOP 0.20.5) >>
endobj
5 0 obj
-<< /Length 917 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1155 /Filter [ /ASCII85Decode /FlateDecode ]
>>
stream
-Gau`S?#SI?'Rf_Zi,.^G).;sShYOKPg/_ol/5=j0#<*tYRVag=46>?1m+C7!W\\?`SVJ&'0ALV$pAjAZnG4U;KL,gIFb&i9.R7AT@"?H3K@G@.."YllJ?/h0(Z2%d_"j:s'6$S'`,mZXMFuBmd43aG]kUfm]2fXD"T/8QqedStob1%hB5n>Y9`!/_rc0'K>.XH$^+JHLijEseo"''&+sC_TK(Q;J."bC,LNg?LX^cnGA*,%k#ijc(bAYQV87oILEp_^bZIUA>AfQj4N2GWD7-oFPKHXq*JCle.&'R-8M7Lr#2_09La5B]d>kX#iJij@nVMHQ-iXn"p&iL%>RlW*ENTQMdq@!>R$H9';n"UJ'!l0ceW"/qM75/kWaZO7oiM(,tC;gR9qdsj(Q<Ke2\[pthk/?pD\Sen&8VN]BV>l(:-89Vq_g1U__c"u'^X.;BY._%<^2_9`Gq$4Os"i)3-:p]Kk\RZU&4&4iH?'12rY+mYZM%02Dg<Y=_bB5IGI]Zb7`cj0'YEgQ+mZPgZifM8V4Vdn=54M.E@ThB3>i!<*cm]HVcVr0>+[dA?2!HkbP$06A6#%/hRmj#Z9,68Y%6j$J)jf1hI!*/rWc;46qTrfP'IsTjqNao;"bQXCKV$dVD-!hP1uI#I5GD.k:s<q.2RPW*jb<SRHrYOWpjTg3j8,a5O*E1-P,6'h[TW.VOkLf2@nYgaR2a))[El;p%@cdpJM^G?O,'H@l2M^Pt&eZ1s^^@E6]EiM4D^i>-.KR:Gl);G[Khbq03J=[or4$]-_V)@Z8Or24E>iN$)OoENfp:#Ntf,5t7.O9Sd!9mWO/LWV)'ue?BJp@_^_JZ+9I$p,@Y5f-1JHY-h?HrMb:9YPe)lY4_6gH!cM"ej['/5gQP`?)*nD]>>uQfV:n:*V;QMe&*7~>
+Gaua??'!_g'Sc)J/%F?X74DX)O1h$D:8N,'l>A.Qg<O$7$#qN8-H0Mqq=b7V0upV7lq!\c\VRLN^iSGH*-7<<hVSQoKp\NL3?e*74s?kl:diNgU=;Ab6@sh<6!8oU:&g@HZOe(LY0]6G-g(*oH;TrMfk?XdWW$T/MiZV5+g02,./W'dU/BZBYB:o,32N]nrVD#`qkBDUr_@:\ntcu,p<W;UEH"=BXMG1j6N[TSNe/;.pQr%+N+dI73f>_d[&oq]hq)b-gqK6"V8&YG>+6*^?$dPgdVk0ZAfDur%RT#187?Z7Wk,P*<JR/b^#BE*L-%-MZ<)^VlmT63U+kPnG0p"42@D5-)pDV,/Lp5T^Vu7NWC5;5qeV9H"/)0le>&\3#cA`4%7<L8g\',o/$\U!:XdAO>*n\i69P_LFQME(K\gV'dM92@P+KH1-91_c_([r-R$Ddp"0Db#j^%MfKfefUeoClM^S*__-Y_b!E%p"`J7-+33k>B_IBWK_=h@YO>JDrYR):(Z2tr'/P:SU=fV--PBZd&-$NNl0^[:DYqtY_/;04P=a0Q"bk]MfCM#!XY(F>]s`_<hY^YjLo'OW<V,FE!/AW)P(oq"IX19cb1c?AAhmr)dnR']-WH#s)2Zk@MT=3WB$ih<GGm:,;Oh87H%j./"$YVUOjFc>9ufGW%D+7_a(D?W#\n.aq+"WE0l0JYJ01ooFXOr%EoXfP$j0O$j8bgA+#1jG*NEFIcg2;P*Ki@&H)Mun-[LT-t5VW?=hcco'SI3EneD=((6YVEpE$)+^PK>9VP,@AX"f^AM&]cMUD<F,tFj6'!?mF"a)=PCu0Tg6HB@:j1l5bDt+<>e)?J;RtiOPSa9/ZAUj["d.=V-<d$8!sQkep/DZp4CCVJZ)Fde.%7W"15S]298th9:3sfk&k!dF+2)2G_./eKqmR#)@A:1j!gLNLDIq=o]p-m0$YL6<p/Jl3?Uf?50dRA(ePomoQVG?)uqR.7&*&\X*h(n\N&c].R[(mDX'=U&)$$!48NrP*0cg1`8olp]EC$NPX*F6?]uFUAAgMV&Y(Nol2JWB-HBi=;/1b,hQ,Mq7?th!SCTeW:47s2P5*I#$?ddWRsY^h1V)""Es8-PZ)AI6:baY.YC47[%?@9LB^FpB!djS>!5"'Zli~>
endstream
endobj
6 0 obj
@@ -33,6 +33,12 @@ endobj
24 0 R
26 0 R
28 0 R
+30 0 R
+32 0 R
+34 0 R
+36 0 R
+38 0 R
+40 0 R
]
endobj
8 0 obj
@@ -88,7 +94,7 @@ endobj
18 0 obj
<< /Type /Annot
/Subtype /Link
-/Rect [ 108.0 420.541 247.148 408.541 ]
+/Rect [ 108.0 420.541 300.464 408.541 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A 19 0 R
@@ -98,7 +104,7 @@ endobj
20 0 obj
<< /Type /Annot
/Subtype /Link
-/Rect [ 108.0 402.341 349.796 390.341 ]
+/Rect [ 108.0 402.341 184.844 390.341 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A 21 0 R
@@ -108,7 +114,7 @@ endobj
22 0 obj
<< /Type /Annot
/Subtype /Link
-/Rect [ 108.0 384.141 178.172 372.141 ]
+/Rect [ 108.0 384.141 402.824 372.141 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A 23 0 R
@@ -118,7 +124,7 @@ endobj
24 0 obj
<< /Type /Annot
/Subtype /Link
-/Rect [ 108.0 365.941 233.48 353.941 ]
+/Rect [ 108.0 365.941 192.836 353.941 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A 25 0 R
@@ -128,7 +134,7 @@ endobj
26 0 obj
<< /Type /Annot
/Subtype /Link
-/Rect [ 108.0 347.741 202.172 335.741 ]
+/Rect [ 108.0 347.741 178.172 335.741 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A 27 0 R
@@ -138,7 +144,7 @@ endobj
28 0 obj
<< /Type /Annot
/Subtype /Link
-/Rect [ 108.0 329.541 191.156 317.541 ]
+/Rect [ 108.0 329.541 164.168 317.541 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A 29 0 R
@@ -146,29 +152,90 @@ endobj
>>
endobj
30 0 obj
-<< /Length 2431 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 311.341 202.832 299.341 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 31 0 R
+/H /I
+>>
+endobj
+32 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 293.141 247.148 281.141 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 33 0 R
+/H /I
+>>
+endobj
+34 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 274.941 352.46 262.941 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 35 0 R
+/H /I
+>>
+endobj
+36 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 256.741 238.48 244.741 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 37 0 R
+/H /I
+>>
+endobj
+38 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 238.541 207.172 226.541 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 39 0 R
+/H /I
+>>
+endobj
+40 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 220.341 196.156 208.341 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 41 0 R
+/H /I
+>>
+endobj
+42 0 obj
+<< /Length 2551 /Filter [ /ASCII85Decode /FlateDecode ]
>>
stream
-Gat=-8T3?Q'Y`m7YX!cn5f@VrH[CY9fNB+8[=)cTU)9";M)!+L\6*a#IG]!l_bFm-Me:2BDr7$h4fhuI\/MVo6[RIg$uNHtRK<GEjr8:&=Jehe7sde6^Fk=kWNE-Omk:j>+Vl^;:Q%m5DscN$lKuLS/'pobgJps`>.WlVRT34d/`4un_pL6BD-"ETY,#T4,IEc<8u4qbgfipZ50A5W3=h!<V#<_)dXjn:qBS\B,"n=");BtQk`9/KI?a0rX$;;_ir$SJ7$NF.cnj"0Qt"B_NfN*1"o6K(1LAt#)9WFep[$V>7nRXb]_XGOmT*O(_eVFo>V1NrR(@">k?'NjLT;H'qlq4^-J;/["LlT+SMi[FJ&r(ibfNn=8`@sXn1hJKOAfW^VMqH8*F#OMaZKL0N&!"a/>$nI-rk-1d@G>aCO<MX<S#j#me]b+nU8-Z4]bfgM>f@b_7:EokN&ZFV$>5>#%Ijtb(*C"n7LoH<BIcufuK"HAR%XhH_*NH5@2Y!X@eQer?[;1EaL-%?/6dt(:P3+FM5Qc]I4;'AV9%/f%Ja7Ge-hm_N[8uHh!Z[!2@/-?g'4!T+eA"PGL_a`K+eo$lHJg@Q_u00=R5YWESE!S>n&K.EPn\1hL,+)#2HicHrqnlSYg@o!Fhm;^oXf&i(eX'QP\8dV0G#Wa<SYrleklR!#=D=N^.MjG\qDL"M*n#:')0ROoD;G[F/)!j\b8f?@VZl*aHTUJY27`FqB/1!0"!9G$lT.+'+mNp!ieS'X5aI#!47"cMD>6Q;5nroYF<@G,%Db$`b%kVOmLi9><IM6r!qSRH*6a$reG#[+tF0$QXHC#HUf`J\D!"W;SbP\f8TCuB:T@D1foS+EAQ4?$\1EOqPgdp^)%@bS;2PXJ-r2CunAD2fMX&3Km8inD%H.%_Uc5Z;cW8]&'CeDMJK)iX>c;9\1AKHFrb;Y^?+9;cX!(OA#k!'6S_0[Fb?2S39'Rk\l"Yuc:DJ2q*fD)o$75cTOd%[?`K381ZpmZGMdM0NXo>[i+hcO>LMj"Y0`mLn?I%aZig$jm!^iaUSP!iMF<p:p>G0@6$dPWDPgP\si$Od1c$@N"?-+gpB]?*Jf$;u'WL"aNVWrr"!sdO;q=AipV2`&#@.&)$'l^Dr[2#%d'ACbN^;Y9j^Q[VdZ6KU"+[&q'I0>^EVP35%W4-t#Xbhn=C6)_*H0NTV^ma/D8*-NmlD5iA497255R(E'*E[o[>B-]E^`VQGu)Da*,b_AenU?s`<*hkIol/.AlKRHGqjeat7`Dn@T$MLpGQI![^Tb["ML@6-#Ke$X;(>D9%*p['aDfRulk*NN6/#1j_lAAgA\E]9f3a$DcITOegVj?R9CjEjbDi@mP53R1=MT_;?7nW\nUr_so*9gkKhUFfPk>GKraBh66m+r$=LJ6rWuXt1hZ()T0X9_!da&Qr)GW+e:qqST%.7W*Kr2+,rJ"d`,G:r*A7"kmo0b;^`)Y'@b)I'V_!OB?\lKW0]5&"@.JOkLBgTK-%MJUe",Q?Z"UPQE$sR?j/\7KF9/X@BFTd].?B.jaf_2jPFm51q#P8taBHqpbnY'kK9=ZC(!0U48&IkoMkt/j:Sq>DQF=;ZWAC*1f+4iBXALOO%q/8YA4T1@1O,20j#(e7C6C!Hg(5?FV<r1dC+<U;&2A.KG9.!*CiJUnqpCTpWP-8&0/ulp05jpR\[WqGuJds*km#5B)ghd3hoso[gLFG8rD<3eZ3$$@]c%6eSIXn33+)c.:bCA-I/@>[oduXI-G;)/1O\ScbO=o40Wt5aZ7kO+KX=f@i5]+u9@'S]GFTrBsjRq%cV3_t>U^J(pQe1"ElGPn0XlipZ2MF@H?=T@)p"A$:hUa.:YmNdlG=g[:n+qA"d.eGoL\5-9\0k\r6T1!qqLX?RD!K0E_Y!Q1Y>T:TK+JLV2gc<7UE3CA=HJ9obTIJd</H^#L<<j8sHSI?5=HPR49T_uk@#BbeA/BV^55Rg/Vb[l9*d^;!&pnY+UORFq?Wi0\mA=K*$BqX+9oF3g2-.j1!H3)r;=<`iZje@]B>V$_t<sBURm"@O\,-<o[P[U`H(ZPAA_3(c],SnE<[EG*-d'7m4R-dR^X(W&=HW7@L=s8Q"JO8W-JnE)]C2gPhCTO*gS>KNmHa_T<QZ).u2pUOL%Vk":7!\;fKjir$RW5'o.Tmr]DHjF/l&m>.!XHn#CEeo0#IEMJ$_AKXI4q@aVd!9'7A)=0[cYH,7B#,&d!d7PY3rn3"^E+k`AoS,<f$+?>l!,k)23]5o3K%"&Ha"\2g^d__qkT%e@+2-aA<rtoIrF,"3f]6NB3]$,jhC)A.LD02]B7t?->]uU;XL6qq7ENJRtYQ^E.B>aeIV*b%k'>r8NjmUd%_onG6)T'NcI6*$FD-HnVqIYpm?^k!kSL=?V`0Lo_(oIAg]>kfbP:&F-strWA>;nEB~>
+Gat=-968iG&AII3YbsN<0hd0p[ATg\o4hplfU'&7!@AtH#t66BBuU&D?1>BI6!;HW`^>8]m!JJ2kk3csl6^\eJ@Nn\B&u).Q05[Hk;d;op7f>MSf]t:Hfsi*O1]EaBrLbZY5+b&:O?DK0:[N^]+:r$GH7o4X6JNE>$=-58JF0N6ZF!T0o=`-Okb4arNU[N3JWVb>L"QslB*3,RGR=O26p4EX`@:!)lY59QC$g!]\Ee'BBEjn6.FGpbSoa;E]\1;-,^VF%pU<Q1;f%l\O:86*EO44`?A%-:Rs5CDS-.t>b<9MX4]Y4+Z<[(RIf[FZgunIqq-n!4h/N[IaG8+a+Z<YkNL^HmFWF'\'De!5:dqaZg$k@Wq_%"\%t`oO%qF%P=Gg;p&%[P)>,+^:GiLTM1;XKa`WCgMcj\d)C?&Qc8BI+KHt9=$[o<e8,^I%feuN5X^/j@Q_F]E8tIX)2]6?:U6?56%uAF3.#!XkOa[jaTGrTu^\Fo`Wr2FR98N$5(CN!f*&P_/.?8K?[7MFZ`:oQTmNiq<7Y,K'<?KMDL1j;5Z_J[98C[FOf+57Gps*OQek%MJe<kh@0fQZ-<:`kjTBDY%3?Y3Wj5gB_FR'6qW(d[OM/"*53JAh@bmt(-#HXWCS0@,^2bMfRA\4>LTpePpMTMAN1<?Gt9$`FJ;iMDro1*,C_kK/NK/K:o#sNFi[6Yd"h1HLAS<uGWp@t"Ko)oE!5-F4fW7,U(WDG+INagS2;4D)geU'^_,\lsLEnn-HfnA(IiB@+?.TR84VYtM_ZnVk+*tM7[Fb^tUKhZ-Pde&'BQ]JZkAIE>Z`ThQ#Q*Tu%=N+1@eNcB6@_7d<-ddkZ1/qT1Cgp8Ci,P)n\X&5UGZ?VeZfpgG6dO<AE5K'#DVHAmkD%_4R)5N`&fEs-j7jiL>4l3rG_-J,8^S"pakFZgSV,4;^aQB#eRDccm*J(``XXt3#&2,f+@?A8kj2M]?4[3TNftMBA)Q-PYC:>>3HHSh6m2RReO/R,;Z%LS*J>J*]M9i45@qMB=<H0?6S=J5i!dM/O+_Z]D'`g0k&Gn@iVMTE4AC#!!a4f:[3R3H^TA20C;je4h?c'le?k-O]Y.TK-n73$;.+mUKrk#<1/!Y/?nlB9F!s-F?$dPH\2d<CMg\poHi0`$WRsRoA6@4X3/`5B,XJW+b5^QoKic?qJ$PUV5J0+X&/MQP2&PXn3_*VPE5mF8H-2)gnEJbu?W"7hDd4IZa1Oah/-BLNWK>o8+p:%$`cOqc;F9B\khF__Yk[kU2tWLmj<ZE*H@Pkt3L7c<PPHG)cXsqa:]LW,TD]I,+&)uMJkRoo:b#:kT%=*0%Z!>Cf//9i4f9Y%:d!<+cjFuLEtFKsB+MuGpf8MKSoS@,UZn_JW/GI1+Q(YPe(.FW`g9RCnY]t0mQ;+6-k4aaH_l_7Z.[6o0V8?>1T57"+kD@_G[pglm+H"poBOF=O%/D1CP:*SlbgmLZHb$]PmRXN*mbk)m!5<'N&5k*;cYDaUA97'_VPQa9+oqOYLA@RZ#e]a'c,1^PmC@?\FD6e![:!o<n@-Q"067B)!NY+S':9/N6(2>f`"_2TXO&[4\2nSJ$VCW6nRRq:'Q&[aC!q1\q<V.PL&ae#(0J3:r)?>K<&nHS-\dDZ8mq-NSQ09_\h_4.aQYnZ7Ns<!#Z!c$g30t+O!X)cs$UVV1<kB^qUVnC>+FYo'&5U"F)=2)p/Ab[nU5@%`X\,s5!JKNjG1/=@E?X3L$7^*$8in#dYpYr.#rF0rT6dJ1ZMeMh(=k<ah1E'p\rcQ!M_bONP('S]Eq\-P(A*6;JP8'KA]l!&&m9*?dE.KN]3*/7nY1lWjibo/[/slgj-Ydp*VbIFm0\rk9Cl(F7@`*3HA.+rgN<>He^/7dW%X.q.pn1q]0(@9Xs'e7;N5L:8P*ppH_hL,QqHS\i*&QBhptH6HD!UbSG[2GstG[pS,l\*_anBNZL8i2PV%?&:+=h,3r3<.\CU*IbT2q@&*+W\+TCn7JBh<A1noaoR]U,G3LhQ]g2DH:]2"o_J"'h[`j#B^i+MfPuZ.TaCQSIndc*Am49mK9-fu(KrS@'KL3'3jQZ>*82c!'5#dF$BpBOl0`2@&K%%YCsMfVZKsCpm4t8uWM(f)2rala@B*L'#+./R`'VW3RgBLDNBEZJ/-$JD*@P`=_$odn?02MIH:EZl^;W*QZh>0o\=c[#fG7,]DeKn:\liK(,\WI_BHc;U"%(_L%dBAM\tqc8R8fd$"Z%+BrgPnZc\($0H$ha#)>+B.*oN*j2GB\moq'1BI4kD0jKah3`p$B>$1ZbA:]A&,epQGb`+T1]7JCp42b.+UYAU;&O8qoqGS+rITbG>Bld<-%/h)h&3fYW47@Cm":mGRVO?Y5Th:k!:-GP1LgH!j6<BBL/=I6hY$rcMiT45L54<_f)-b]\M/VuQ/Id_l:i'rhmT%d7TP0c/o;,-c$&6oi/8H>3)h9U<)n0IVmY-DT?*HuL!6Z64,f1j7bGIuT^?9o+@lW^WnNa2^q4#`ldZf]8k+L3m:g-rn`Tf$cH=@Pd7r<Hl]@[6~>
endstream
endobj
-31 0 obj
+43 0 obj
<< /Type /Page
/Parent 1 0 R
/MediaBox [ 0 0 612 792 ]
/Resources 3 0 R
-/Contents 30 0 R
-/Annots 32 0 R
+/Contents 42 0 R
+/Annots 44 0 R
>>
endobj
-32 0 obj
+44 0 obj
[
-33 0 R
-34 0 R
-35 0 R
+45 0 R
+46 0 R
+47 0 R
+48 0 R
]
endobj
-33 0 obj
+45 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 108.0 612.466 213.0 600.466 ]
@@ -178,7 +245,7 @@ endobj
/H /I
>>
endobj
-34 0 obj
+46 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 108.0 595.266 257.316 583.266 ]
@@ -188,7 +255,7 @@ endobj
/H /I
>>
endobj
-35 0 obj
+47 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 108.0 578.066 276.636 566.066 ]
@@ -198,68 +265,98 @@ endobj
/H /I
>>
endobj
-36 0 obj
-<< /Length 2181 /Filter [ /ASCII85Decode /FlateDecode ]
+48 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 217.16 335.664 205.16 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (http://java.sun.com/javase/downloads/index.jsp)
+/S /URI >>
+/H /I
+>>
+endobj
+49 0 obj
+<< /Length 2192 /Filter [ /ASCII85Decode /FlateDecode ]
>>
stream
-Gat=-D/\/e&H;*)+VY$I!&Z!!OsL:QLU:iTFW8[Dn&)RDJLo8.)bG-#.^&O38%i"e.\`FA79`^M*I5<\m[g1[05#3iZgT^:Ct7G;Ze.^LZWJd.^OB#ZSd-N-^*BS_RXLX<IeNE7GHldWHF)DNgd]FdJ$=R]W"ogJ>.D;QbalL%I_'X`$b+]-EF_KeoroJ`=f*:b$a-',0]cZemj['kEE?'.5fKSkO0ebWQH/spVkr-BHTm=^DIjp_dt:0>]:F6KnkV>q,A8:#>+@E=?R5J\b)6_`<[*Zb(]*ZVAJFCfElUfD-.%_R\Wu\/bNKkG=rcXa'jI@*NtT['4##=V/E6sm><aU:Pj/;%85aWo0X.)Z6r(/m>8n@q.efGJo"%'0fQNW77d`jAAEj&Ujn+;;Y,`SS:1WoO'/ru'M7DiaH_i*c)5Do`aG%8M35VFP&#'V(VhJ6hjDQS^ng;^eb%$RB%gdL55R?<f[4]0?;&#"*%t0Go:577RUlu\[oBLN@e7Zg+&9o+3J+Ca6Nt!Vj(6@W8.89L,NA2/W-%Tg@H7@-+qD!A"@G+7EdoNn3]#c(sXj6,(cE&hSM]5@N%LrU%H),qQ3A-2@coF'mg76U5MQJZs1uHhKI:I/AI-JIFp#=Bkif@)-!u8blB]2I)(&b"*U2\j/'9V?T;K7R_Qo06@:]eT8Xo<V(_E\=/[QEF9'sH\3!o)(S*[i#TlZ):O=GQBML$g0N?BV>$A7VD;/-]&1^.mVI!7c_:3<-CCJ,SSX`C6$oN%#,j@.AZ]%p"%V\`"%f@qN<':*>VaZ3%br*,piK_+C*dI%RZa#K>Z,*15Ma@nA@h$0k4Oc5uGY(l5iN5bTJ+q([/Zh:VR9V^h0.T%@kdVD."a#R:`9Ki.i.6^2\niBF[n'%UBF9RZS'-MHAse;Jb4P\JR9FW$7Ma:F+VElM))=1hoqfNKJl_k]iUFskh6*tkieJjN)G<g=X?n.ALn@B=7^M=1#V$)='oa=HaTK]ibr6X%qXUTVN4@$$X?jf7uA^%W5W$fZlNjo!3N;b%a7j:,[,!E^-bP\i=e-NaJ^4''*<4&JFTqg9l,ak"sFf3g(DQZri!f!GU>Qr'W?M^-kC!bRdGR^*BTX:@;.#hfSsC#maOHCPLa754Q@hN=oh<oSl_Y+5X5Ca%UqfKsM%;6j)'dM-5Y$@u#-1[qEoaFk948pQQP%StLpeiEmRg;V%SE?abMMQZ1h%-9-iMY&ep+>Up^"9B"g2W[4B\F3k]@p&Se9%Y07P>:6DIUOCR"`Kh=&8YK@XZ7C-k#D^'=BSN?=m5K\($p8N[+3^rI&W\)pO'ABhsUa3q`Wg?alaIZmRLTSkJek0@:`NA=V%P2.mpRqjI]U]9nqA6k^9/e7?Pl2TYLJl4=#50:\U3:)sR0e5+lhN\?72dAScLSnZDh.NY,.-]m3O\5O)!>($n+WI/U(QF0S0U?3M38rBdG-(S)p<2?/*#<;bUI<c8DCS*`4+HU3J#PG8rW*F7"[")LOP<_ZZ!ks".J>kOVQWl^0nmW2cp^]J>F[O*Zh34&;m\*l]C.j9&AMK(0?$UDZ9jd%:17oZqL)7^GXbVV9<hV\r0BPK5cOsqF[`a$'\$&*C4S#!bPnh>m(B4CI(\3*@5pbU7,?/GfCIh\5tf3n^mP7X]8#[`42#<T^l"?N@cJ%g2k1[E?&81p-ph7D8j$u2`r.;H>HFJHN<!?SVIb,\2kS,B[n@-"\!$K%D+%?DsjH*uqZPDtEe%H@>Z5qH%.VR3_e\ofB'55XQ`XBP\uh]Kt.!$FHH%=l&Q\Yke`T'NPDG>gJ:eIcaJE,/bf4i;1!k:&?^YmJGNm*dlSdl'(gK0u_;o=6>E^,L`E?LY(k^\Yd44[;)gW.I]a8"7]`&Wh,e_uE>`2$oY:a&:?5T!A04ie)kS,=eY-Lft::f@62X%?8<A`'(tJ4G-UD2HW2,g;[Qu)RITlpZ2KDWX=nY&om1I#/_o3@Lll[\)PEp:T4,OE'^"PgNB[oJ)+D2*7;3&rO_fhlJTlJ^MWkQ!kTT_KC3N/$CILc<j=Z5X2(L"M1$(ln`b@;99#c1?jV!\&1d$@69g!m4+[IOMnk0sAJRI8;!sC=^):VV789a*!S/KiRKbq?#^/;>D/,=WJ)M>lkcPr[-gu:[X;`i:+P,Pb*AhPu?q_L`[RU,OrW<rj4tQ~>
+Gat=-gQ(#H&:NH>&:ssTJ1N9M<u]eI,Y`ld/Wbnfco+<89=2pE,WZXINr/LG/f'4K;;U@W)cP`)3Lhl]B;cX4X&nVfDcbT5e\=%E9,G-6(l%=Z+1/ed!tlj9&_,K=ICOUnF44F8Fg0nRI,eI?2f;%cN-s6$9#pNj6t1Xn;E-:dK?-&4T6^[!f7AR2P$)^!H:4q.3;qd2O.]<@Y=n&N-T`dOX2SP7A=W*cZ;8mh79no3s#@ciFAKkBd"3T%XjKn0`Dbr,BDkRWKY^"N\3b,/kG)TN/E!:#7.9MZ6XJ--e'3@kBHl\>kF-L*oH_gK;dO<DhM=QT?KoL7<`#TIlQ*%NQU!n>j>P#9U7`B+[5uGNX)am-cPk#o4##=XU>Q86><f-ePj/;%85]u]E+V0TLn&8d[am2GdSRL;XHKXS0UK5cF>7f3$7/>`f;tc,`-#@^.WdaP=X'&:RCHDT,m$&0:Ikj_/,>bEGscP0-[-WM&W0?lZ&6Z\=io`!TXE:i.d\;jn;rMh.M0<klf&Y9j*4aSjD0he18L0YK?T`IYC5S"I<N7,JZ&&3(N1l"fWm!5GeBhDA\+4HNN!I>#ungm95tQlpYj">b>rAHp9L7:dhsG#Q5q;E#=egc4>K+2QU.]U,OetJe<f=+VjBSOWa.`Y?i7Wqpe1k]0FId2Y%$2Y8JH(>I3Oi;8h*T@#ZK?R)G5PTJ$+8B\1j#\RsYJ=^#=s@9OM(Nci\t(\sgW&?Kr)NV9jVnaAWD6<CS<-^g]"jm8X@q!`T^0k5;\@rq3%)%2V_F0W$BPJAnu45?R<Lk(X,V:RUGO3e?(mb6n#nF20M""=Ip+bC.4l*>F:LEaWp#N?uE>-)_3Z4+"WX@N`fJ"%ALaj=eWgm)H?#*O"R>cWdk];]'L!KS.WN@?a":&1,RYgo!%uU=K^WWNY.!bT8m3HElq.10p?T0&mN[q%5>M/str"MALqY>>#*@QkTkMG>]IX+VC+W'N,:HC#jO?T)b]0/Tkpo4Tg]X7Qh!<=5]VUd1$A:[&#]N?&/6l+=i`"<S:'ZpCrYrQD(kNo#S,I,E4GKc=NRJ=B?i6D)V)8!sB,rf"Rb;;8me#Hn&gS12<q,0U;<(49fk2g&a`;W7&`*&aU\BZg0bKfp4p)#9@4Um0p<XnnDGo/r-n[(h3UhaOV=]nKYDWSH?cH+l,646>q-LZW^P\'P*O;JP`R)n>b!ZKN/4KGu`K,:X\^_3WgB``5UbN,4)@fY3@2?j\L8aoQEVF2T7<P!KPr!jZscon+4'0Yk/m"E&aj&S]i>Va?g4ahDH5pfSZ,$F#jj`Ri3i^Z(s2hlL`b/lrsS![FObeWP-pT)?$/1Q5TS5i,ZTq]--p^"m:?qc"1d/6690N`L?Imffq8,>=a4pB2+J]bDhf(a#^F&U)T9!a^(W2fBHTP``DCdUNbp;,$+*l7DUm?K'3-bCQ+'!mbOA`qFPmWWaLljiq$fb?$5P4#(Be_%HM!fjG30<pQUP"HIV5>Tlcc2EjQWNa?)CC]^4j*rYT$Y$F+?W3huS(+%t.*>,ipQWj^6)0`h`eJ_HF&eC2Xq;qug1L!PFZbpp`HfNWl`GKMKJJraS]YqpAKTU9G-`4`u1^=1S>-oFpc(6#eEB,:pJ/2g(H^Z8f7@6]Rm#N>5!e`+n;kC.gqeGMmCNe(dD&X*L"*sf'c]n7>5,R0gfN'CZ5aI-o.?mHQ2b\l6Q(=$ZngaR!)6+YJ$U&Y_X<0^0$R8&-A.[W3_T#)#9@)HI]G2@%)nml6>o*o02U,SpVp"!t>angdRDT]O%YlF5a/d)1EnRMWI.?e!4']*nZWTBI,SFu.Q\.a+)?46^^h9+&bDSBKl?37@WgJlJQeAVoXYXZmXVD@u(3V<&tkDK9(#<BDKFrF3]RHBMF`AGYjQJna)@7p[)lXMM\H!RZ/C#Xbt=<g>6:P`0aIFm#:km^A*^s"sYCcm>LA2[QIPLdbF9JpCJ&+7We#cT:E)G.k]^Fu*YnHaIIP@ZCb(`')7,RTD"jEXcUrnhnN.S'+_f_Fl/UH1C+c7eY$D.#:h;)!CQ:]V6:T/O-U0,&SN1J8h/dIMBBQW%BC%p4G>*lNrIPK49M`>oEiZj[$ap6AeUF@!H%MY:YTdhd5)M?I%BLh[k#BHYt+i-AD)o_9*Wb/82ccp)g#Rk!a>KRd0co7#&g?%Xm!LffE(_>Ono1.]:~>
endstream
endobj
-37 0 obj
+50 0 obj
<< /Type /Page
/Parent 1 0 R
/MediaBox [ 0 0 612 792 ]
/Resources 3 0 R
-/Contents 36 0 R
-/Annots 38 0 R
+/Contents 49 0 R
+/Annots 51 0 R
>>
endobj
-38 0 obj
+51 0 obj
[
-39 0 R
+52 0 R
+53 0 R
]
endobj
-39 0 obj
+52 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 660.8 346.284 648.8 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A << /URI (http://hadoop.apache.org/zookeeper/releases.html)
+/S /URI >>
+/H /I
+>>
+endobj
+53 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 108.0 548.4 231.648 536.4 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
-/A 19 0 R
+/A 33 0 R
/H /I
>>
endobj
-40 0 obj
-<< /Length 2805 /Filter [ /ASCII85Decode /FlateDecode ]
+54 0 obj
+<< /Length 2846 /Filter [ /ASCII85Decode /FlateDecode ]
>>
stream
-Gat=.D3(2H')k)0Je'5G<n_f'Z,,dUb0*L3HP\-C1XbQ+pN0lUh*!.qoDq+cq=dqp$tY'*15[DnB\-1DbN3bE\_l9$r:U'O^Gdu/_V^-<1aHK@a"dM<L&V"=b)f.+"gn[YDLT9EHW>Sn_U.KgDps4lpu;9l'6Z\cr1a9%V3VgS`$#ZZMr9XtJ,)9Q*JYQoeaA\%VeDu@aq=at#lTTW8\Yf8*SgYrcq-Kt*nnF'Hl+(7AN_Lh&HO$*Z$UV[QcG:Vc`2Flp%4c>qs!(QH;^[+N5*,+mH$Io?SDWE,iQjY4-l&^Z@s-4@1s-%V4^!1O,$<_F*3ll^1Lq<4gii4\`m7ba+%+>(Sr\>LC-32qfrn`j..jr\S>+8K26iC3harDooM>,SmT8c)pDqt5Y+JFYs@>#;WB<+?8cY$ma-dTYV>qr4NlGBWmUpc;c>[bW3,%-__9\AL=Dr+n"u0(]jTRG9tj,\Vu376l<H3)dn_qpc1ETn%sb\jF#6F%Bs#aiFY0oT@pUXjW)c;30l$1I4I]BB)t.gU^hA&Q/FGLcRo_>FQ,i5c?KA#c?7'3BbT<c3KiVOYDl:m_1O-_K4=%dG@TShMr-53I2TNg$jEN_2A'mB1</on]5Om=XAJU0`MeH@l@9R6sW4qUTNs<@)RSO`[qC)T_I0a^MQR%Q%+JQ4N/k*QS:*PM&k05@%YrrE-#'YKG)Pl\/0Nr*W_$9bgn!VH/Q?>9X[-hI1pDbAs+9Y*a3+@>mOg>Y=S@`(78@E^B(3]eXJ0P5L0csbI[1$Nd'Y/_*Pbm7a%^&jN<u&s\\-!iWJJ7Z:ePQsA7>Jf:>mFW8PO%Mr&CQ8_Pt@h-^j$P^PdTC%F*1lKJ3i%rWlTm5"TT`U,hcY]8J4n6qq).g7Ciu7<[CdHblNJ"!#\nO_.Q8(9Qc07b>`=dXXRQ+1^?Pl!*H9]MDoK3P)/G%C2]&gPK=)rTZ9H1)n!$42bk"`@5Ece@4=)eVeMKnH5SAhbmEJN[[aB(<&:tcH3W=6!/-I"&7a3071nVlk-/2>lsPISR!p8g7mN[\&9p+[*<i]$[oqN:?_Flj[3iG]BeD"iENM64)hOIi`-/iTMk3%>U;>$`>8U-Ro5/%b<fl\b:@_<-;dLu2ZP/HRJ]7H0@O@#]XBHXo>'dWi*[0jYD:iL9YTd=;/0/)68l.tgA<430ei^9XQdA9Mp^9GX[gkNs>n.=!)i"M:b"hP?$i9sV:"fQsF4ns8p%!7=EsV2!0M2WT\+;qFkOL$Y."AD#A"=?gWkW=skD5luX5rRrk7HF&i"=ol^<V$;7BCoAE'd!G$19hCKbButN%c.BUD^'7hX$05bTVrf2Pd6n^]gCZaKuF$$DE?6/^4A-=`-nH;oDg]M<ibifsFn"f+JJ-!fEoagA\M%CDY1Y!WY*V2$1GcmnO8-'&#X:<\KcU*$QI`dt,3ai0pl2kI]lSE@n-0,%4*,FFa.M1#^kZ>n9Pg%RD7SU]dtJ8<:uaR6TXf=P1h"*XrE3'6n/VP05[%[@2nV-SgI=%KqE!,NdDb0p4GhR.f\Op+o[Bit>d)j3?$*4+a"I2VU<Fh(&;9MR3a<k0;*9*MlUl_emfM;$eLUj0"Q45r\pRCDQ3:g5@ZU*@2<XG?%MUeel)H(A;Q`XY!`,2@#$X!'!:&"M@?N'LZd+]n`;6Wn$T=20/cc!5qIl_UjV_8OW3Zl\p+()B0JL-/lG4)2'6-bF5g(3F!pnMB]M/J2H"fK/q9^e2qJPfrV,l"99Y*:nYbYq+dZ?n*a8ih\I,PCtg!L'&FX?\i0[kJj\2'H!t@dmF#s&T=((_];&*dO4O!M+X.^hkUKs9+f=[d&OgMSF)Urk"kK]l\uIcDE$-:qGC/O'fhiBErKNT#;>#A#%6aem,Mhc$U<a(!r#.>=oB(`jTkd\n/ko?_@]#.W%@Qo.K>gO=L(LTA$1gMdR<Bs8q!,H5itF>P<YV_fRR>"GKY.@@3JA?,\A!6go)0nbJ-7ddmLQtV;h,o^HOC:$?K_p(b%&0]<].!T];&*@#e$mc*[@$[ObeJPq]MaQ@71^^cZKHfrD#5[3/N#`%L!G@;%*U874$*gjnk'@&id'uF>H^Z9#H'),Zcg2>Da1CTd#EjR'cP*_KVq4Gu0RT;f;7cd'lMN5ElL^PWaA^)%3:^aor;2Md9!ODh%J\acGQ9FgC0:VgW=BfiVOBbe9:1Y,l#6;%X%ki1j`:/3TXZ/re18em52%ajr>$)^!*EqgoP6?hu>k]>=GWgGfaG&n@H5BeG+S-+2'g0;o&>4[Xp\W30AGK)*cfinO.ZKJ/=]nSh=4eH]=K)r(kV=_ru=(fTeS6\#tbp3>t.0JpN&6XHP1k$lZdlU@_a6!mW-e&M-=Q@$j0?n\krG+s0SBJi^(UB;6a6]O:K.NGQSj^hb'$?,_1KrP]S9hH)"ifrpaJVr`^b]NV3akmdj^>J)\Q_MM[?e"]!5*P\V\I2_2lm$k"aK=qj]+a&*/lNu@RSCL\*,-%L,T14OGD/7_op"R_NAeko8IuiA=`hr[pl]Q2LW+^\rFEn78AhOO^:Delm'C#YpZ*5!9<-Ts6OT,j`S!V)i.8Wgf<*3S[B]!<b*)LE4USGZJnH8F:1Fp6,"UX*LEseu1:?6I;YMGK<j/bH%b'r0h!Q-pP@M?`W88D$fGK^*FBuq>fb`0",Ci90UB!3,9N'=m3\!cA8+WG5OHL0s&h`[7^n@&c@hIp8J5Oc+3Bu-knZfE7U<Nj%TqKjJ$UZp;%DQ*2+5WNo*Ib`'%dhkVS+^c<X%U"l[K8a(IE_"!3o(6k<aEAnPKA"J#C/\>1]~>
+Gat=.foFfH(4EBid),jI#!*ZBQh$GR&u6lUdTm#5Ana)$2XM,b>96A=9`BJn-'>j7(9<B:"cMM+kA\$@j`_5ZIt,!*mi@8YnGgsCQGc??V1cTgR*Vs-R`)15;5L&.]3k$`>rA9#VPs7H5%YD#nAW<5/np:XpdZNkUrH<Z==-.V3(Epsop;;Ff.o''Y;V0qcXZ"-#ur^-LrgT.;Y!cY8+c9Y5c]^F%bedCH74afTcGV>=U[R&<VPdm3:.4p4mVB9=8k3ED>h?WrN$Ok)1R.>S'/A*T9oo$A&X_&4.=-/0GhUN`DCLT.L#&>J)5I^+6CI+I*YTJIqhUU\aEGMa+'B95I;KqhNd;5gPtNt1#D_(S]b3g5L6SNLBHgIQ&kb$iPuDmnp^E>1Eb+&-?]UY@$0_^Oc!)njJNIP;=5c#s7=I?2Ga/`JDm3d!]j;5mf)13r&I9SW7u\!&U#g$mH_@9,0N@D=QNPVlcJ*9*bTZk"0mp+Ba`Be,LY%KKs%QD1#G).-QQ"2$5P-bqgc^i2u6e*/nY9DHpb-JY2>.=0sC5n[+E:%398VsTL$p%Z$b,9jn8X3qV24E-Y@rXZ*6$h.8RQbJ#W"9^luG^n8O82+Ra^)(%O0\`(+I(%o@kkM#*A@VU<:AW\,6cUW0E7j([=H2l,ZH:XL3GBq3:%&hIghb;%uoNu<1HgN&+/Dcb?\ke;+7]lg`Dh!@!74@,UO1XkcDC$pMnE3!R<0n]lV"F+"ikWFOICe_1sp/FbDm5=s0XTLUN8-*AI?,J3dDl121rp=_ec-Jt3CP_a0d27B=!8o[OOk6Ej9-b8VM.sL$37)5IR;N->(`Xb-i>c>+$H::)8N-Hp;JQPRLtFK1(kRGQ0PO\$@O$+rV"O_.kP_:N#1/)u/X)/;<!XYRDV&7GlV+S?hE+O!%A88Gd:KTq6sstm(b?S0U"1)*[9q+ZSQhU`10=i@lriZ!d#6p`@GZ8bPs@US>F/8j1UaN_-Cgu(H,7<)M%$dqVB/+'&43[6#j4:?.?aVNLAYc%!OcF#0,,BCJ?t$eOjS9)?tY@@F-B[bSoaZM[UE[hCh!_d6800RZ,.B*;`qsa@WFtc<7H1SQV4.#TKe`p6jp=#A!"p!itQa"e.!(T2PJ+cc=COFd]Q42oMW7Y]o`r+"rRh-l*=aM86g\GEXf&^('fHRj.4Af7l/pI39d[END?6S#7ckhFn(X467_;(eu8$\W36E.`p&#mnB,>!0n]rX.+HcsU[o$L:-2B"q--keX8I4leR.XQL_:799"@VUL6*P]L`n9:HV5W1mK>RIe2PB+&:C4FkE<hAAR053l@QM"@rWt@WUGo.bXDRLJ4c3B874]G-*+0]397`8-sP+/Wg%I(6_2]e`NZY8E"u2I?-qQ6CmI.c>TX!nJ.?m!>Y#9^2Gg_[PD-7J8)+RZ:0ro1`:@/Ll8NT4aNTSg)6@ulnK1BBgd,[nUeL4[#iQU,E4HN^Cs-KRiAHu^aupe;@VQ/;6.a))WC."?6%hpt7>r>j!s9]U.H_;5?>GB4kAs7NTS=auA/PKF6NB_?^V)sHB8L2+F-7]VTbGUk@gEZ5Ui7e0^TQ4W%emj9;#]\HC.9-Z4.pa11N5Qfod4;/!RlL#+EQ`$[G83I=iT/->4;GqeDMMJ5$jPX7*O4T=1n35-B(4s#d\,IDNkXt.Ir6X#oH1K+eMWIQPGH&GR,Ic2H4c>_?WtSMY*@EBuX!Y@1A?(-5o7m!5d6jN3A?./<SHVjiM%eeXP5)I/n0;j<E=q5R%5.?]g&mnb%0GM<%uc(]h.?A'8t(#SoZZfTG<ji4<B1MBq(<Ps4T)Vn)aFU&uJ\bBtOj^]5KjRiPj9ln+@Zq(&oS(3g[!j;@t,qZB(jTp)Y3^!75srDFVn-LYkU=*QQa`albQ'3tqIB2kkuN;"n_H8K#R)4o)#Fg]d>6[kE)f?V!aAHE2*%Xm5TUNZ.3/tMkH+f$Pg$`E=pBq4GD-RRWE$`RpP;)mZ$FFPb6qmEH?pUhVd-c3mj[*&ShbDiM8jl?&%<F-^W\pc-PAu0gBAhOGG1ehg@1*IahgQpUD)g33.n2m%P)$-iOOtI+[6_j_c"b.\@3Y11;4&[F%>7Q@kDL?T54Pu%1^p-^)XCIBgXhnquNUmVGcEUWfFpKLU#ehj!%)E#OPGXh=kue:!"'AJIq0dNN6HH-=;ih!m.fpL^VM]m(!qJ7k=%N%^8Fj[b>uHJoR+*n?(d`ofb%*AOKihuF`-uN02G^@_J.35tVA_h+!.lMmIJ%hjXYWC\^Z_P_h7Xu=+lgaV@gF,B0F9>_ja'QFp\1uIY4E6W^EA&rhL,B:jrKk3/N<M3+aa:iO>jN?!s+nMB?U3_#So`4$9;ER&)lDi>#V6j@kmjE/d+(3@[Us>+T_rECD+nX@\"eXq_^V"HbK,r^qA'!T,X3T2E0nn?JBM\Sm\PDNE2=s=92c00NV^.LqXXrKa:?<J_mFR2C=U16usY4Jk3(1KJiHgleCU.fWNp=1jMC<8P*O#:7?;]e@45C+"6Y^k;us.F6ipsnI]l2J*\Cn#QZqnHh?JD]T;8NZ.a+r^1iIap7Bq:`,IQV,S`&-_HudHFNok!H7+.Z2/sX#\d]Xo'/7r]OnP&jR:uU]@&OHbGG;%dKjR&<hVHR-NB+^2k=!<]-6`U\LIE+-KWcgqJb4j1hIi)?gE,u-I\Y=EgqFj;e0R`Z6\0P]R%`m5(*fLo!BO?*U5[-lb%tP#f)mpk`^>o<al8O70(@1^_9$:e6n*nR&Xt_NIoODdWI;g\bf%Ad&]?o],Y@r5s#[dZiU&Y_i90uXf6m%:a4@X`eo]WS<D/:p\fVo8%kW!bSosp/\S^]rmf-3Y=\/~>
endstream
endobj
-41 0 obj
+55 0 obj
<< /Type /Page
/Parent 1 0 R
/MediaBox [ 0 0 612 792 ]
/Resources 3 0 R
-/Contents 40 0 R
-/Annots 42 0 R
+/Contents 54 0 R
+/Annots 56 0 R
>>
endobj
-42 0 obj
+56 0 obj
[
-43 0 R
-44 0 R
-45 0 R
-46 0 R
-47 0 R
-48 0 R
-49 0 R
-50 0 R
-51 0 R
-52 0 R
+57 0 R
+58 0 R
+59 0 R
+60 0 R
+61 0 R
+62 0 R
+63 0 R
+64 0 R
+65 0 R
+66 0 R
+67 0 R
+68 0 R
+69 0 R
+70 0 R
+71 0 R
+72 0 R
+73 0 R
]
endobj
-43 0 obj
+57 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 448.968 548.747 514.632 536.747 ]
@@ -270,10 +367,10 @@ endobj
/H /I
>>
endobj
-44 0 obj
+58 0 obj
<< /Type /Annot
/Subtype /Link
-/Rect [ 90.0 535.547 297.636 523.547 ]
+/Rect [ 90.0 535.547 300.3 523.547 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A << /URI (zookeeperStarted.html#sc_InstallingSingleMode)
@@ -281,10 +378,10 @@ endobj
/H /I
>>
endobj
-45 0 obj
+59 0 obj
<< /Type /Annot
/Subtype /Link
-/Rect [ 368.292 535.547 527.928 523.547 ]
+/Rect [ 370.956 535.547 533.256 523.547 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A << /URI (zookeeperStarted.html)
@@ -292,7 +389,7 @@ endobj
/H /I
>>
endobj
-46 0 obj
+60 0 obj
<< /Type /Annot
/Subtype /Link
/Rect [ 402.636 514.347 445.98 502.347 ]
@@ -303,10 +400,10 @@ endobj
/H /I
>>
endobj
-47 0 obj
+61 0 obj
<< /Type /Annot
/Subtype /Link
-/Rect [ 90.0 501.147 243.456 489.147 ]
+/Rect [ 90.0 501.147 246.12 489.147 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A << /URI (zookeeperProgrammers.html)
@@ -314,377 +411,515 @@ endobj
/H /I
>>
endobj
-48 0 obj
+62 0 obj
<< /Type /Annot
/Subtype /Link
-/Rect [ 108.0 418.413 231.648 406.413 ]
+/Rect [ 108.0 418.413 284.964 406.413 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A 19 0 R
/H /I
>>
endobj
-49 0 obj
+63 0 obj
<< /Type /Annot
/Subtype /Link
-/Rect [ 108.0 401.213 334.296 389.213 ]
+/Rect [ 108.0 401.213 169.344 389.213 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A 21 0 R
/H /I
>>
endobj
-50 0 obj
+64 0 obj
<< /Type /Annot
/Subtype /Link
-/Rect [ 108.0 384.013 217.98 372.013 ]
+/Rect [ 108.0 384.013 387.324 372.013 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 23 0 R
+/H /I
+>>
+endobj
+65 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 366.813 177.336 354.813 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A 25 0 R
/H /I
>>
endobj
-51 0 obj
+66 0 obj
<< /Type /Annot
/Subtype /Link
-/Rect [ 108.0 366.813 186.672 354.813 ]
+/Rect [ 108.0 349.613 162.672 337.613 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A 27 0 R
/H /I
>>
endobj
-52 0 obj
+67 0 obj
<< /Type /Annot
/Subtype /Link
-/Rect [ 108.0 349.613 175.656 337.613 ]
+/Rect [ 108.0 332.413 148.668 320.413 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
/A 29 0 R
/H /I
>>
endobj
-53 0 obj
-<< /Length 2382 /Filter [ /ASCII85Decode /FlateDecode ]
+68 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 315.213 187.332 303.213 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 31 0 R
+/H /I
+>>
+endobj
+69 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 298.013 231.648 286.013 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 33 0 R
+/H /I
+>>
+endobj
+70 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 280.813 336.96 268.813 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 35 0 R
+/H /I
+>>
+endobj
+71 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 263.613 217.98 251.613 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 37 0 R
+/H /I
+>>
+endobj
+72 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 246.413 186.672 234.413 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 39 0 R
+/H /I
+>>
+endobj
+73 0 obj
+<< /Type /Annot
+/Subtype /Link
+/Rect [ 108.0 229.213 175.656 217.213 ]
+/C [ 0 0 0 ]
+/Border [ 0 0 0 ]
+/A 41 0 R
+/H /I
+>>
+endobj
+74 0 obj
+<< /Length 1751 /Filter [ /ASCII85Decode /FlateDecode ]
>>
stream
-Gau0E968iG&AJ$Ckgj:aJI.DPakW&d:7GkL[.0u0H@RD7_Ls0KOHcdCqCZ.7/k&C<S(_AqHn;MJDnh!55MZ2+E:`1GcdqUWp*OgI1Rl_RnD!Q8^L-bR`8!o-XI:_YI_0n(m01!AZ&#1Ln*^,l(\$WsFlUt\%XdjcGJZu'(MrMaZ\NYrf<\q]T$L`!HD+u.M.NATf&,/!PXR8'C!:4d[`Y='FHZ8tH"$4>A9FHV86'EkTte""Kj;\=]p*/MRr:u_pU=\A]^;oF/5\DirHn8-DJ0kHcKbn^[jorZXd6Z!!Hma8kN[4W_nsPIQSEVK@b,4L("-V#l78ZD@4'Rmb[dj0FZ_s2cka@RF'a@Am!:R5qtIS+S(9n,2eO3+lEE?$jMNO:=S5X`_[jhkY)s/C=XRZE</YbQDL@/B0>r.p]DDTFfAnDGbuI<pY`7j"VGJq&#?g,-*mD2khKn\`2Y(7N8aA^0K0QO3@-%PV#T.IgECD+![1f,YgSirNNeOVcp2HhYH1dUJc'^6IN<<O_P`2G=X"p*EoReUiMeuTZZ=6pcoa96#>&$;>>a(LIDQ.e?`\;uom^"s5QX=R7>j$g`OQ(%cd)H&p.q;MG`<n'kTe$PAXbZDopbE7[d.q^4Ri!?2+gV,h;<EXJUF;#Bj\FK6,tL;'<[o`!e??9n]6B=7:TMS2"6Ke.ip6C2K20rob+Fjf*%%E-5,#9)Yo-&#A9&0O9Q7;QcF5dnFM&KP/(kAn;oa-J'Kn!'NP&0O34B[EJ'b`TXudFt5b]8t-1fPcdNaaj(Jt""-T$^!$=SR9!nk$+;&9+0N138d_te&t\kJbPqE#WBD6ZpCaK`b<OugIE"lB%2T['Y<Om+baBm+"[EL2BMIAtM6>,E^,cu2L$[Mr"RmfJ8lDeT(?5$NZ']W8#k(O@V<_F>EZ3"m-&QFeX.OVclACo,a[D2CpC*=-$C.fA@9a-^-,n>@*:eRn59d>LJ`#Fq)7h732[N?BY73+5?e6fLpFM%SBVX+rGrf)L:e3L1Q)/@%i.Sn>%O<ZDD$cl!TMZXJGB:8lsu3J#bYg;ogC-!Cq6_1=]d@?7t)("=BG5FPPG(b([(N2IOQ*W)R#nF#k<ggNl;5Z^5-fieIb'j=UK2Ia3)aOs_1<gg6K_6AlX-'"t?q3^F<;hU,m2YZG+?T\!9BPVs)QY-k5KQCN[K*@>Q8YuP#i79XAJcgR9L&J`L3fsdO-$i+u)g;ULnP5Y!OA<PeM:l8(<Ls;O`G([;M">u"ra+?;h9$1Xr-)@p!j_UB$oiW\5)P?f4Ck/k!"A$bKhfJB;HqSS8U@0fhU'\<qX1I<VM;%mI-G/KR=ncT)LN7CWJO]egiqOP8O1-2>K32sqon:*6k0fK;FU#i/1a-!5c*IoPR&coO,B(j^i>$j2LBh"QEd#-Vo8d(<LnW>O)J"'`OkSt*iC0a#I@?A9l/7[.PskQKdudgdEG]+1aG.a_fdnQs6$rB'eXR-pA3:\PV2IXg!k`N$R^>]E-b:Ur,h4ET*[a[L?!!G9C#+s;"%9QW<g<4XY#VdhP2(\7,^W,:AE3]WeeO'Q.8Y-&_I4Xf;Ftp7ZNgW,4-;0PNeBT7m_;Ves,J0)1Q?$'ieJVCW"42".?Z.(te'F##bil(+)b,@SD^dSc.S<RIQ\F5[3BAF,(g2VGn8pLr80O:]1joFKjJ$UDV&Ya#T:"2JnGn'0:Sq,@>XmEc=RE,`?(L9[6=bfVJ'o-BY-q5k7t#.ITM>1ELk?mQ'SPc])&jL""<bpV;nh%[VgQa`dq]!!SimTZrR[1Uh_gWa%2K!FBg=AO9J3*^q*':<Z$O^V\K(5[7]ppH$jD7<0b\i#DSbm]IdV0@0+p_'@mq+^MT*i8\RX1O=?WB6.JQ<7>hZ.6olVhKb;uQ/Ub@1@jMf,/jd,<dcDsNaH-bYhkNc+o10'a2Ii4X11>ga0R!?*`X;We!W_TRE(>[.I\a;&\Bo`%(6;I0_1r\j2NU:ZJg,:C.F<X7a,+?K6"hp=[r"oSCmYu?PMT)-pSotM=Vo$e!\tDhM(=iXL`LsW#AH/i6DrGdj-:t?PY"D)=':#&kWE/WKGlD/V2))^JMYcX5/t\3BMX5;O?t(*4o0#=XIgoK^OjPjgW$$/qXgm!Q"*;$.A)RMurN>rUoaG.!J&@r?%+h(@E@19''=A.O#k6El=Z`HN@Ef4#uC03!<APc.aL*K:j.T7!8'$*=V'aImP7R/go!%Q?oOo%'a]qh'uGDq!G>U"([h(69_DCjKUCPFnm.!Y'/UC8!\88*/LKu4<H@P#\u8PN`R5kn.o]^p0`GmeHlmg+aiuTpq4?CZ4ck4D<<\lYCIkWl]5XXls!;%mbF9e>Ll;q%#Hi!h-AHVkNH+"LL3\2I/OEW<>gu~>
+Gat=,969,O%)2U?kgo+EL(u"3O6pYfD:6J5PBMB>j1n3mb_[UV,*b"b^<k%)*RSkr9O^XM#iGgS!V"?WoA+T]pP*u?r7u3FTD2_4a7)<&rVL@GqBYQ6iB;"+h;#[=nJ(sS+9)*pnRr3;[_%M`aS>6t]hpCm,boq"Xh?s%!YUZ?hK:NBEja`HVUWes;9Si4WmS*`m>'fSmn3O(`'LcRXY6Od9kj=b&De,E`Fi=H_i9>ehKaTrgE5#e$PJUkagu8R.kF=ab-K]c#eBN2W+@3]&M:NR<5m:EUfher.L)O;j&m*aWd\!.2!V^p7S+NG9Cr@O,V5JY`(83e<L.9_5ff-G]g,/R_C&t2#u6"OFUsbaH_nqH<DgV('!b/07?#14;-?MmN7uCZCPR"6DVt&Of)c$:cB'GJ8=TmjqToIhe%dF5k0[Qf!8F"d,!e8DnX.'uTlb\oHi>9*b%Z^(QKh&KNBeB[n:Kq:0@!Tg^@(Md<l2"+D*M:7V%?grK.R1![\&csJ+cekCa(eJK>g&;8'a"[_.?*])iWG?^=+]NGZ?crC=,3Sd9a;ek)WW\!?HG$m.&^cE5J2)AoP92>s79FWc<aBO3:PB?W:Yl\[B<9'u5TVqSV`[_giZV\D%<t;$=_'][?1f<3S6&Vp279B`uC2H&lHJ!,-I8-@aG,cM#bU7?uBdOZM[6C`M\jV,!cTT<Q.'AF_mOi#(2.)EWV2&VdfQ@[;dm;KoO4^)U)e7aTA>`#jM58hV?f0T6:4d:g_t!e]se\bafF#<7e(j]T!F]Au!m6_#BTfL_##E""=&cG\h^0b3.mkGd>tPE<dO?QQl+.gZg&=04L*]`r><$Spqo1MW49LI$;>\,1itH,%8P5O,\iC.(800Aj:dPIMsc).?*rRP;,d,O0p!kfF>4OM$EbO@&ZcW#"1XDe8f(UbRLd?%]L^q+5OtpK"#kORf`rFfo.hEojTCY%pn8(:B7\j9L^U;E+LR_ht_>9a#st!"J-*)Oqe"R4OgJdg)#YS]$qu^mt+$C>k&IBmHJ!DF75Le4D?TFU'U-3/24<j<cel-5EbT6pCOaCHT7UD<\1YrpA"c9HJpscScApHL@IjPfDrWiAc!L*p/;cG^#!`dL-;a>7=C`MN!EGOC^^s<d(-RJ'QO61o(-s0U3+[rC*,!d>SuPWLu*<k#XSeq"cm8E%kf(0Vfu.(r%*n$JS!)\.Jq?kf!i*0@A20;04C'I?CGgeQ,6<=j[WTN;2?g(>N#u?7U2)jfEKiL_.IHY.;>J/U1pGIAW+A0";t[0"4/0akSU%6d'O+W?+)#1;$Qn.0]j+Sl##*`rk.GB@)NXMBshB1R9DYM<P&e5H*I_qShidc(M`57k.@Z!<FDXmL6Q"DmTcg6N^%q[[6gM<q]b5)a/d.R$R[#*\i$]Yg/'GAIV2irM%pA*bV"epZlh,ZiOsb*1qgAQk$QHCZKXi.`\]G%,cAp'YGNB:Y2`UM(jR>S<1Om;%6rd?38e\BY5+JFgl2YE5&cTlmermjj%3%eiX4UnD%H#ld>m_mk%*#/Y6ujo;`DPX%#$:4TNod?4Eh>L#rqW-_#4-637g=&dQU(0JEU/Bu`D$]B`uNlipOO'6DKjao'Zje.K#(N34(_73kSS>OHbc/6*+(1A;:BKg?>+b^qPGB/'s."E)WWW))^Jd`QSp"=`TqHhAbF%EfJ#HFd?ua'9T;4s"s/YJ7$,H(IM"n]n9%RUVYW#SJ)WHb:2;CNM._*NDAg_7r$%_gh~>
endstream
endobj
-54 0 obj
+75 0 obj
<< /Type /Page
/Parent 1 0 R
/MediaBox [ 0 0 612 792 ]
/Resources 3 0 R
-/Contents 53 0 R
+/Contents 74 0 R
>>
endobj
-55 0 obj
-<< /Length 2027 /Filter [ /ASCII85Decode /FlateDecode ]
+76 0 obj
+<< /Length 2191 /Filter [ /ASCII85Decode /FlateDecode ]
>>
stream
-Gau0EgN)%,&:O:SE;WU\-:S:1Si=]L1[-LU7%$eSpAkmmM.7/p8C4O1oj*`T\=a,^8a>hJ@u.p,cL.90d'"65D\a^m:T1UShmXti93`hQ6hp;+p@!oi`?^8,;[I)^o)$Pps8RW4qBSJ`?X<sIAaj5mS[dK)(Oi;Mh7,Td0G:t2ZRDBZcPGg$\R:tq1Oc7mFBmB`gt(NV0;X+5@OipMTIA<ICOpZZ>J:a117.%YH@m:&MT_HlFKWuN6ES9sQ5:<&9@/PJ;q\_QO0eUqlDKs[J+.M`M9FK(O80S;oenJQEX*)9n[er_1DLdG$9cdrgbm%3aJdJc'a]:AdC)[:)S;OhK^!6hjZ8`D$Z<Yp3H&%kf\gV)aR&FGFP(')Y_d(Hj*3,nM?-U\9>7Me8g>Xp_G^335WFu85?+$d&j^b`G$3>[Kor!S,[OeILO>_e69X<<W3k\lWCH0jZ/GCZkS';;k/!O.E]E&]1^-H9]_H8!ouEeoGR$BE5Oggq4P\IjPiI'o.B#JEHhDpHN$]hB@oMk5V/Ep!,u:eioA!gf2s7M](Bb>D_k*nQ(D95b`DLmGAm+77kLeree9H>[_;>T4*Bl\T5_aYOB-lis8D4^<Ml=*oPlk[dk-Gf2=7`g7p`<!2-]JO(_((\habu,E;8EsAYgq`.8H#3N=f"q1</m+H6)_et\J.k<aP4)<`J9D&5Vs[UpDoD?)LNVnp>SAZn+39hYZ=A3biPm>RafK9\NYnm**l-XaCL;pD<?5>&IAYKej02HGi.^gF.!*&^Z7k1Wq"1u3G\#$IITM3YnX)/f$cViT[OuTP.km@QcoR4qC!tKZ.3%1T$M:4j<6`?1S[JQUHGW?>H5kBkXZlk<N\2s$5P]F(_sPp>MF\j1C1j%Bn7TPM"[ne.IOr\E]M]19o:r-U1g?mUL]e/*35cNQPkkX/3e4_)gW:p[1_)^l&YHf+6\eL8'`pnmn7Nf"LC3L,Y9u#CVF0ON/`8aS\b:B6+&T1Mk<9lE[ao)J]Fj";W(I*Sj;/6E<b-t&l3"LJk99P\D)ebfU^$KliaL_WMJC4Pj_F(I]AD'l`&f-M!smKhZB6MA5.Uu>;g8<Wm)iK]d7SC+XED6T(U$Sl0<5#0d4b6\8n6/J8FNsbEXcYa5<*sY:OL+9A8p*%C`^9_e<VgoIU"YH"HK&[T'mUZgkW4;DQGI9uTi&ms(,hjYZau1sN?8RO@5'F,lXP<lYIg#lhgT^-G<`%gFqX#_pH'SD[_EK0lPS.%*E4P\LHf6Om*Z7jHj/f^n&XNdEpJ:uWW7Y):5h0]-gC9r\kQI*M@I#RZKFM`-8GF=e;GdgBJ>f44\>2?m?%-Z.6N+H11]-=+V.4e^g)[D_-7g`mbCb?2gJ7TE0>6[=4li'pL.iORk([[`4ld=h^aFWJ!@_552i%7iV>JXN>MeK(0*]N;?t-B.@=Ln][eZ<4kfZsBpBk)2NLb6+O5VmS-M.q*lnP!SN*@N$fUV*^E.ifb;#'G!LHK,$$2U9S\-WI'LV=&fFu)C8>*BP/$iWcB4jNl^h@Nup!?]XIGCk(P'!4D_oGP4^:&AkSq_(VG=&Us@^R8Em3I#;gbWo6@X/7at6<:YPrCo7hN9n0T$+h-o4-cEk);XHCVGhGKVaK6INbSpFc(fAc'UCjrb(Bu3Ct/aj4MHMe3ZNF4SfL@V3m:]*LrD[@mt)su>Z5\9r?1:8Whhb9Cu9_(&]:E2)"0@itaH;i,TOn_*CCk>@XUJirRL//*p_"^+d#(N?95d@!7(jOqj1u$epbWk5Efp#.iF`hO5@NI&RaTRYKA+hZ*-9b0jT8(9Y![j]`Te,Hu0lH(>4Y@'ZY^9R9&k'W2VlG3U3BVZC_#0.HOS5f)f/T`KOXSl.+)kElg?Bh$V@P_q-NH6@fQ.[t`6mG3%t#r;D'AJ*\p[;`,\E/\i-uLF!F2W+-hbA4\pqPo[QE[rRguR!9oQCt(=7'?>W3^*qn]1;>f)kgf,n"in+RJis33FVBN'AYQMn(;f'aEGmM`2r2a=*K`9oj8KIh-~>
+Gb!ku>F4)$&:Vs/n/K"&/?1#>\%Z\e/X4Zbh%sIE:i%H*=kcPs8P"=oj'+Wdlm25M#G=6IXrYi%k0qPPDk%USMf0[Q*uEF1_nXf]cmH3_Goln0h>6lL?,n7?^oUdEbJhec(]V,KUBEg[m$2?`"s5t/(3X1u_d@.U4/a`:7Qd/E&#o7!9r]t6<p;42BO'@-Z7(s_L)Zs]V67u"`a0t5E4(qodCmPCd8N>KXZrnB2\;+$N2Vf79nPHZ#=0:;,6;4`E,cug6l*mh\FWU2/%)O#;)U-e^*g.Y/dYY,UVd2#G]X-31E)_pm]\U<LCHj-1)D"Y.SH&/MrB]5cs[H=N(dH<UJLQkr_Ojgqd4K"eecE5.\s<Tg:e3e^oGQ9_]7K/))eS]Ws1lm"?-SmlTm4&=NZWU.:"*`H8YVL0L#;,lQ;qXiq3\Impoat*'`Xdc6Oj%6;NpcJ<$l7r.iHS@OKNdLSD`NCi^$dPtDg9PF;<p;gmeDRE8\Za^I55".5A!dpo5$-acB1:-<F*s.o<d!tT[?LV;!nU]"nDZG7\.+#uS7)O2fP'N',fK#8UDk`*Njmt=<O16Lc,<D:9k6,WETA@f^=\s/'.&)H]E@a]4Xb?_tuk9:\<GcTHRW;I&>SK/(Dm?`:7H)L[S"WSS%7i?GuD*WCi!/2?'mEdj3N)_Jblpc8r,2/EdLZ7.QWg#;oAM18TN-HSplY0.Skq(Y2DNiHAbS774gpN\O945Vk>:)VrTgSa/5fB$%B1&IW,YlV=fKgP;Kou^V1N&X!m=G!D>$CCb2;1G9X%4(MCk*PLSVh$f&JGlJF,[\#AB<_!-<n.Z:9/UX`P<g<T1u-1XXo`?#YS=gV)0]4D6T_=Efl4G7[M.O\N)TW7D`p:"$aK]Vj4HfWS>2#[ME.Z*[Q9K9pF8M/%%r6a'*&on!!n]s1ir'NO@YXSra/9*MqTG='3(n?*J3]ddE$/XIH^-D;]P7jW2_(Es"s@BM*]Rs%,9p:N%I#]3%*:TgAM)3&X=[+`Y,!3,OYY#NG?6]?!(oW?&'E1meiHZrtN@M<B'Ao/fb^7_*ts.rN:I9.(ojUW6?F2,6Y/k\bEHXZ'IcFj1+?lXLP(/nGfLQp=pJ4Yk$YZVg#tQ4e.?kVNI"&PpkITDs"22%h6I[,Ag#)"caH&Md:a-.J'4K+X`e!V#?pgXJMDZ=C=k@Y]$YC6b(5l/J7P:/[W)k&s=\j"d"^g<pNjWHc9(ZH?gI]F/cj*GAqL"+CU'=_tS]P(3f/i(PA7Pa#[%!@P$5$3DL*HiSSK^^C&3\L^]r1uK[Q0+0fGc=5]!-$5lJ,'dO\coG7BdT`!:ntNX8Hl,]5;;>G)kanEo'o[m?^B;sT+Manm,\Q,t2C0CmH8Eu`8a3`MY5L.0'.'stnU`Ld'\0M*B-<%lPq;Fb.fn>d`[2l+M36!N%p27ShOChrC*$MoAYdP<8!u//4rtTR,TW9-q]q0;et=V=]Z>$@U4O[1m`/T#,USP.1fq4W23CsCB%D)^ZZ7NoK5'=[L(n#?.QK*1*9ImGcb85A]<gIbZU901PU/LrU2cS8L<LIqadu1s3>jT(1lWYGACJ*=P)*CW?\E1oagmk2Ij<CKo%Y3(bE]"=Zs7(CN\dMUTMI2('8&<8p#H6eFUt64oKdng(Fb4:5+u>8OpoA5-!_CY"/cJ67UB\OLq,,Eqe'ktFX+sM%HLH-[X.6GWn&N,5!`5k/%5BH5eBq9N2%]#MBf2!GUcM7@(;TZjPKH!6"M-16b&\j]k2,GY2KjlU;qaO:>b**5F8+[Bs0AUC$8*/Fu*?6W.RsU%"rktmHj_L0m#Bab]:7Q.q?@XEAEFQ>.Pb3MgEf>-"F.i#ViF($u43@&Ch''a.)t%d"kGj50po/BMkHE.+&Ni3h2PJb0C>)&*=_oR>-d3QRRWC_4Z"T>,a@eka.DkL?!h\Y)1ABlr+]VA3rHV^Fs=Mp]%^sL-#6>/8Cci@PIh$F):H(*P.P4*B5Od2DHEa3($'jA+eGKos\B6S5h7rI8q,V]rk>i=%i:VADM_!<54Udh<m?PRkWH=,soZB\.FE/3#5&J_!f/98[Rq9NiRFRTDlfo%0Ff;/q1-)TBmUmHlOo:>u0bQ+]mu("0*G"9ZgU$>f!Wc$s29Lf3[7M@?.NU!%76IqJYi8!\0%rYJLQ#CU_'lB\"f_[;<STM:'Me^ArD'ku[~>
endstream
endobj
-56 0 obj
+77 0 obj
<< /Type /Page
/Parent 1 0 R
/MediaBox [ 0 0 612 792 ]
/Resources 3 0 R
-/Contents 55 0 R
+/Contents 76 0 R
>>
endobj
-57 0 obj
-<< /Length 2233 /Filter [ /ASCII85Decode /FlateDecode ]
+78 0 obj
+<< /Length 1920 /Filter [ /ASCII85Decode /FlateDecode ]
>>
stream
-GauHM>E@6&'RnB3Y]qTI_)*s^,Okc@+=NtkUoFR@_lQ"X/Sn4ea.#eQI?/=:)1.k_'f;sc1:GN!gNRP!kF:#*S(6+*[<D'>C)*nng@@?:hAs*$rn+U\63Chb_R`nKZ$QBO#hC/-'KuKf9@omHDJch_F\B/t5AJSgd*T@_G\b@RjOU5a.M5b5B5@)CM#7q6M1E.To,O<s''65D8Q"Xu8p=#JGU*\EP]Es*=^5*j=Y'9b6^hTHl:-`ilUo+V[(SW[^=1#D=siY!Bp#F)BqD>G;KZO"-fH2sottuojSO\hno7YM.jab+]eAJRPj3LAeaq/^F[M5b_nOH;=VkhKQ.ti@8osN9>c%\='n*($jY^.eE);IENh?"-.r3Zt&r$hI]#4c\\]$mjfZZ?]afI?+>i.SE+$*g%eE+t:M*C?ZKQ![=J<2p,N1l@=HN*aJWM>P<H'ZRi\D55=/]u66F<lc27*'&SLp8mrBRu)p*J*$MTp7;F49j/m1p;h9'HCM8[S0REfIbEaKLh,@'gfh_`ZE(D9eb*8'Z=6"XQ@+Q4"SY$EW#f5b27jPllh[[=_W@[m$#l1gkkpGaDGBCcj]T@M=Klf89/QkN:-!>UZ]aDkoV@h[!Iij8Vm2,KW_4/]222Up'L?D7*pYWV%.L"BAU)o,=b4cfIMW+-qaa;Cl_lCD\YUl04N,j9J)tG"7F!&<"BQ-"p6<DaHQ3D8IL+Fb;)g#Y/CAqes*C)]6YPX%jGU=-/(IQG6qm44cU[lb'KE@CE0?H$N[&)Q,.Y-Y.35EU(ZU]J=);A1K#R+(_h,pGTRW[36JKbRb<R8\uSIU&"qEM82URe'E^m+/RN@+<24fMn=?'QE*;aV4G=7\X%QG>XaPs-9D''q%D[]2fHEh]"JJKX!pAbMH^E('D_C6cF"N*)<oY;6i<>i[qq5"$_r[a(p3O>f6NeP@%2"<"8#Q=7_QIs#$NEB']nFsTW#V/NYU-'OB7'`bbLh+"2A`NOHoCBO*%)l1p[^JG`"UCI,]kI-Xl6Uiq1d)6Jt41##sl)Z@LKVF@$K<7,0]Ig0/patU@#qfBMGXF$:7#?>qg+:F)7d)bj,\IWQQJ;G332'K"M_!LK\b,29@XA[C[-8b]?Y"35ljMJ]NnX7eHToAV"*P>2mMH%'lWn2a7ek'T:\Pl:<niC8*]e>0F4sn*^r1-mGgtcN/5c5:*U5"jb0N-O%0:[,M=-W`RT]4bOh@faY]G2f<t#@A,"u1.9F&BF_6?$PgZheW[Cq$\)sKeAs_kBWZN9.n74mD'V`6Yu%1=Tu:"L2/SX;.GHtX.r3uW,8GEi)5sMPA;_B.9r2]qNAG'(DqDX`f[SA=b)^7aY"]"'d4%f$A5g0]N`1`f--N&a89)K2"@cB]nPh/[#)AV*CjREEUkA437[+9Zgp7ME?GAu([(ZOPUIo'fTmJe$-P%/CiR!@2>aOO>XC8fqo8TE$$u?it3&mTK,5iK+O-.dJE*?r0[`A`253A^36>rgKB9c:#&516MU<r?>@d&en=tRs.ZQ,[J4chDf!<pU^L?\&r]s&Q#[5@Pj-Ca[sH!MjTE$hGaZSB4pb=qHn)@;H$a$k=@oZHM](=4dSCTcF8&om7>YW@DJ)LB>6qM%^q3Wim3TFY943fOVZ!sVVqld^=*PMSE2=P1nH)QTR>Gi,O4*,QiU4YtUmK:$.]QK,>^->jkPQkt\f=ml$i=rNVdHo?"Hf2qa;"UUmq3<rkA%6$U@2@Mn95!(.+1j:el\-CFT1\2iTLF-cJ%aJO'HCMo38#&eCa>=M;[aq!_/?!m)9OhRP>(r@U'Yq,P35=WPpr&mIFj9bDFA/#q\^^26L@@b=_+,&=n#(C!1:rn1au%,RiDh)%qjUC$TZ',QT>r.em'N*F#n2;KIn9a/pqsiGhe=`tG1d>pC%$$&>>BN&i@d1XeXle9VnMqPmNGT-!]%kC-9q:,<PQH>SE6's1C5?R^/a/PKB.Q%3BQBMo>VB#^@X3N$kV.Q?S^b4Wr4r5g+ICCT[SH(8fXZ$?U_rCB[bkn;k:2_0c4r%fp4h0$"[PSV,iY*^Zj5bFK%"=(XN8K*89R.;k39hWnTE?6ZL`Vo[Jis^>&\]ZmO#I->mQ4##H$/]e&XJ:2$_VUrdT4!D$h:j5R&oF\1f55js5,[+jl"g`O_uE3YllYF/&('n][RY52b)><LY-\jYipEiT[uq<kDuKTM57,J'JJF*4s*GunZ2g8l6ge#\$"&.OpJ~>
+Gau0Dh/D%+&:aF]+lm2@d'+_eh7#4VJp,&#XY,?Ff`Q(gZ;?C",q>M\fC'tfekqRhZtiO70IcS,mrru']j/3Q/j:qeQ,;GG,-m&Bq7[C>]3b++dW6i,"(mh8=tP2/]`.U@W#lT^*Ii@p=d6ahA[8Pp>;lDS(:D'BWlKp6]@O9lr]3hr[Gq#Z>$%0930WUQ=cqqVl]SZOcdhMrfIY#)>#`'OFtu)Uef-=pWdU^46&(@FrYg]Jf/[<,S(of-n[GoR2qGd$Ltc]1?eDe]r`&/1+h"+5ZrDo.e0UFr?gCBW]W6eEI.FL-&*\)!B[!Q@I!_u1WD@NpV3ohjq1SE%mE/+<+]$5e+q9GUbJiPA7^d',7WpqDe\'BU7Q4m@8OeTnBa`1B1Vn&N'N7Jp%^CAU4:7A\Rq"A+DBn1,puRKVbR'Ji(O<q*%no6l[CBp>5@!gBXp#tgHJ.`4hsgqfni#iiosRg2RsP,"82b]\QI1N`DJ0YHUtYAW@QCkm,(Cli`M?d&0-IVdo/=FqM_1m9VLS+pn4"`nr8K/)fO]=lXB&fu$cGbs,B,gsf4$AJ,VL&K;p)Z]M<qKsa^4J"'M@X"M>81rj2VLh<R3Q5\G.5*"ZfL^,,oX"Z;mHm#*NRR;.[Q_9$!0r>#/qnfH`FcKOMa!fKqJ?BggWPQ>;%N]0H<aC%5pBNTYn:f\(5>SjZo]=/et?pt_5I+o`[e$s_19)=Pt'GeJuM-'Km^95[r0JX76]NL`9IVHK(<;IGGS8l^fQ3Fr5%_EY8[0+h.]K415e&)-H5S=j2R!CNjLXCMt*;Q;m5%ln7p'TBEdJK&ieL1/,X&O6Jp_KB0d7e(f>4VXl]ki69mot`(.m+VuiE<r%J2bYY_QV`H[;Ac+)[\L-A2@r?c&>L`(<mW"fW[sDP4<X!M'V+=U\Q39I?rpZD!Ou!*OF)-i>aAm)c!-MC>O0SEj2Rq%LMN*P[g,Bg8sBj*kB*hHR6qs?THNgN1fnsKZ<Fe8**COuJUrCJo.&?c-#l84fKJ%Lq:JaK9=ZGn_FH&6&KZ=Qq^S-!Gs)8KBD*2u\LL6LD3^&m3]eS,<LEjlF+g)+J%WBunS4qK2ut=6Y@6H;'<BIC=%aa&]]:qd8Y)uod=WU)Nn3Dr:YR,Q(%.e"O.6'=d`)ZOmu.;RX2DYTSaWRN^IBDCC$0f\mBna3oZ[+D]p@:-6fsTcmBD+oj6XKYV*:=(%Y`3d4/=eC@C#7aG*8N*SO;3n"/%K#44CPeRIB<`R+Q2mSp5oN4AR-Loqn,=,Om_rBS&YL]k'!2N5-f9DiF_:hS:f**_7(-)oLMoTJkE1)"!B0:"I8jqZ:t\"qgH1hD?Rh':CS3mgKq[kinu@'$<>rqlY4@.sqJQHn*'%(i7(:c#NVD5AN)AFLnb5J.Ad/]hE&7n.9UanJDW=`;,^UB*Uf;^+.>Uf,.,c6G,#N1jiJV6JfE]CCAqXFo8>uDQQ?K,`3GCp"OLn==f&!Q+=r+gp0N8"kLuqcujblgLY+/'C:hg'#'K;R2%ktr#R`b5j.ShO?1B,R-+gi5U<@4\"2+"BkXZG^_;i-%][3IcZ#:o#6d\[D,(=S(sM'P'P=m0He;1C@n]`d`5WXb,r5kMT88)dCD:P<p2OT8?6N"5GU],-Atu%_F?V]<;fOjX.-)eOL7pdf3F89#,jP4nG(7>T9##Kg6-3&D/C;U0So6B2VO3AG;&Z[$TYi1t/:`=B1Jg=;ZrkhK2JaH<,RSo'/T4koi)CWW>ZGqLhsoH<S].A"9tR*X6IH"n@4&;eCEJ(jINkPN_E\fj_*OAK#SD\hJ2EsCV`P"]$X=4W+aY8eI*W..Zt$HfFfi*!kc-RYE!B_Y2U%r6MV3/4X:CG%\%(/_2-tc/M;B7B]Pcm:_ER,&ro%gu6i1cKnug>CZutJdqI$i5!/+FQEr~>
endstream
endobj
-58 0 obj
+79 0 obj
<< /Type /Page
/Parent 1 0 R
/MediaBox [ 0 0 612 792 ]
/Resources 3 0 R
-/Contents 57 0 R
-/Annots 59 0 R
+/Contents 78 0 R
+/Annots 80 0 R
>>
endobj
-59 0 obj
+80 0 obj
[
-60 0 R
-62 0 R
+81 0 R
]
endobj
-60 0 obj
+81 0 obj
<< /Type /Annot
/Subtype /Link
-/Rect [ 250.992 604.9 294.324 592.9 ]
+/Rect [ 250.992 215.428 294.324 203.428 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
-/A 61 0 R
+/A 82 0 R
/H /I
>>
endobj
-62 0 obj
+83 0 obj
+<< /Length 2347 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gau0E=`<(R&:XAW&Gf908/RK#"6@9]*2F$ifgUJ3I@sZs'cT_DFP,ILqMmsX2:POiD:(D#G:@OQ3PRTPea:>b[hkYiW3_-Vmk,6>\5!lqnCnKMn#lf=,rB4//Y)]rT.dqTmg6X_&so?kYHJ%`13drR]l433(]I9e\oCLb0G:t2F'CUG00]`6MY`%uM@F3(o$'X'D)4E/jAM3o>-"qCRoZPp+nO0$`0PU-g@i>R:<Z@f:AeQSRP,6>D2't2$[rGsa^cjirMiV(a]ed9ro)X]\!502Ld+J_<GB2[?$<?siL/J4pbKO2?FO(>\m8?Z82/o[pB&IejDZ)b/"S4f2X!-.S\Nc!kNRn.Rp'V0Z]MC_i!h>PU3f7Ej]:f\>2WW8r4Q(sdKu4'J4/KF3bGEN*I=VUMm:''eh!CF>mI^dAobl7e0FB,[As'2m+qrlp2XJ&Aoa(Ymh39Ln86ghI,-:pAY),aY-j?/KGbsPj8i>9+8?8":T*&0[`?.qF"XiT6/iR?psea7T=Q;F9:T*Eop?^aUSlq>6Q>^*Yt)H;+JX%kp^H/4Z.$XpY9Pa$7Ore<<^@]<J$eeXWYKF\%?eZ-1ifHh3bn0Z1")`WA5j^+(S@hG5motF!\F]L2!t*2pfFgIgR?]*\fU9L$ej'Y>7a(Y@A-`[D-*(0gt@=&l/[iF[Fa+7Ws?suNtH6(MF*OVL7$"T+S*52&3YM.-r?kr!+(UoJ;s]Er*?;jKr@[GlN^93k%&1cj3O9r]4),af@Sk&9eMqGP"6:H?De;]:N&I0WbG+4Ld0a\n2%jP'G"$tD@U:`CM/5,KZSK$*Vf3Lep%#m1"ko_<YY/:WYGfomdFIaOYC`'nIpOVUkjVP1(<#>.iH@$eUt<-#JV/-1s#@/B\i4tB8iu[-nGriVP4fJ!@bb!?8J7]79Dd7#r@:C+,`;T*dMJ&Pc9`r/dMlJ[PAX(X!U>;ARRnf)O`2lH^UJp":o<;QS`_WVbi<p[n%f5=KC`#O[sK/dL;nPdrK0"2iGLg8r`u4:>D+?EA)'C4N-[<c.DFAUN]15JBcJPWlrf%K!tsm&,<n=DA&'c1c]hBWS$]RJ'[?D"WiXpOt8#Y83_5oa@HqHDH\LD[R^^mTq4`N/%)''H=fOP/U/hORjrqN19k7'd^!TS`ue`C=nVi)TOTZ^S--Fd=]g]e_2/35UnP)h>-mF]f'YL*<VZ!@YO-V8pu`7rNpF_cH>N4c`H3r)ESE0QV.t+I%`%4[0@M0l*]">n'@[=IB$`BEDJ[agDJ\i/'^0/;SoHMJNYn&jQ+Ctc<*K2VLq4XE#pnGjBTkdLZ#bS<B]n1t\$m#7i5Yk[<E6#1X\mOGg%4%T]g,El*\h*Q3KLgXCMngag!BlD.R1ndZ<&mmQj2$!4nD=9KhSbb`5=!hap4>X*47\o9Z`8rdC![VCI0nrAJlGfh(&&M+99\5jlnS9`"S'&e[<R>,r8g"l-d?p_o!8rJk$ASm^H!]@lH&j:bp"M_ja=VcPN4%MID;"F'ifKa?lJUP**s!#lPk19+P3kA30Ib:gLU5VQDDf8tF>ObpO_E)^,ufnC49,>EXZU[>[LmD#q%p&+J^'T&e6>`BiQI3]FYM)6&BtBu7?s.>[ekMd'S0]G^H9o,VNEh2@UMQHaLDLcrIZRn5tUI?tlU#I:``O9Lg"li91hFR\,H/%6ME,[.&6WuB"rJ-5AcUG7O\)gfdi^;5V,E1on"j@#.L`g/1H8/T<L#3`^VO6$;JD"nbdqVs9[Bs=3H1JlZK5\W>T6)j#[[P@tCRHWh+N*-dseuICG:J<m/=]"!l],W9g*`)Bd=WCsJfSUBThBdB*R:qMd0j6/u:Fe,9i8r?K:$\UIRSGmU:K>\7r8kK+=tuT#JBEFF:]0SG4D&tXb5&hgamX4!9@Z%YaVZ>/bGNXb2r\G*\RuJ;\NYisU$p8paZ$-/(+<*J5;j&O$T_$'iob:CZ%0(2?gqYtAf?"AR.gG%5'P?s)D-05VrTa4_Z&0ie69C]LfAE,+Uuo.22C[,N/M_a_`)Im)%U8&fjmRVJW?GVd!=7jDr^sj1J<G*79un4bYn/aX;K)b],""min@<&S&f9edVE]ds2Z`LXTT60<ile=HTla(`-sC/c^u6AZ/AFPh0(=6g"Dbq@#\lK$L!r^:..7T51.l7C8.ZqPaQT<Pnq'8_*qNb<bdD6n%,2%`hgIG_g=UcNIhbu!SRWci^oL7"Mfd/HO_=l3#^KGM=6+;>E%X27a=h(5d_?b_.aIB,Rg3q#K`o.l>'Delfmk"HK]Rn!]mM%Zr?R2KP%p-WW7UtqF5>Va0C9F:TgCk9'<sPN+CY?oO>>B6#/1h^5%p\])*GSl+%N~>
+endstream
+endobj
+84 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 83 0 R
+/Annots 85 0 R
+>>
+endobj
+85 0 obj
+[
+86 0 R
+]
+endobj
+86 0 obj
<< /Type /Annot
/Subtype /Link
-/Rect [ 250.992 193.99 294.324 181.99 ]
+/Rect [ 250.992 332.19 294.324 320.19 ]
/C [ 0 0 0 ]
/Border [ 0 0 0 ]
-/A 61 0 R
+/A 82 0 R
/H /I
>>
endobj
-63 0 obj
-<< /Length 1910 /Filter [ /ASCII85Decode /FlateDecode ]
+87 0 obj
+<< /Length 2047 /Filter [ /ASCII85Decode /FlateDecode ]
>>
stream
-Gau0DhiHMM%"?N0OgeVI<jh%]l!%B!7Cs&cFod>?h1O"='/d5Z9(qAp^OEO'a-=o]*4G9e$R/`JaH,CPb-0BS2s\GlKtlEYs1?7m,Mk29A,$P/me=&DVSnOIV<5sj`G^Z9(H9]@8>:UKr;#)\ku2i4/f%d.bCbkj4RS.VM7ml=Y*OQCXge37m-hnu'rih8?HCANV<UMuBuZ!ga`29P2ReDWD>=l/Cn(6c):REiEFQ]E8E`@IQIKp$CjAIhTr#@:Ar"kg`o!:tgMnLSQG8dP%hhWg'aY+=pg%/\+aH9>@\pr?lp\7ge3^'URjIAsRoa7;AW:3g/^o=-P\;CFglR`:ceeq>V[glH?J9*hI?LBRm0faHIXR=2H!B@`k(P&uN;dkjJ_dX%A90F6YJtRa<R#Z-G]=Lgg_3?Z'oBiX(AqI;*TsYn4@ZZ-7YH@B[Vekf5!/$OV#cF-28Aa$XjA%VC0Tl&_%VfsO%0:%@;"VC(!d&QGGO?37Pea\B"P`U)gij^O-<:/@CB4B!QH!9VOs?a2t9EmfP@%,1_lk,HV7.c5WC*tSI]?UGVbD4<%+q7/+muP:n/&-M,toVqWO7fjH_f*U4i<JW:[g9S39`9qa:()D#q\7h;,G,_=`_E3>>=O'$$'W+\T&AeH8Fk<D6j_g$MBRcR3h9!tPQl7J]WB#D^?=r%KB,@IcC2CmN-#K@Q27Em?LoL%.Lb@E"@rL<P5^VXQa!nfF3/C7^8K=Fk5k)nQb`MbGkb4*p6=%S-eY+5u5;XL4o+.RC$Wj=Jm>V96?L@-5+0D;!R_c68@(,TRHdmY^ECZ%55lIr,XXf?,([_uJg_o2E)/El7LH%ObW!KUcR%kR:aE53nSQ%[P`h]-tSi/_;u?-1Xf3$8*96,H.a=!k1(\.hqsi/[@AO3Wim(&d*c9CCVg9B&g]].52apQ=i9L*e`cK+>\t;:X$?])sOAqIB:$>*@#Fs;J@Y+E;JohWGW2H$,Q/hjkXLr%g-`dRESFU0404A8G8`!r'(XS-$X6n0'a6;k83o8U=hZd#:hjD9@k:)!SF#RKnXLN)`1^5)\2KP+?)pOC_N,8[;%YT\nt^H"i*l:]c:dW=t;>5Y%=%4]fr1QO@WD^,;gWPc2#"+%N0^l'#bX]1U,]_h^*jcq?cX_0:``5JGaf08A/&("`.UR3,&/jC=2=-]P6m'59N`+g:i&,$ppS>@<0(.H3&jC[m\sP\?:.?Inp!Bc4C#aP.:[;S.cXT^9U<GV0$k^!C?Cu]!\(E36HiQC1T+!@+g5;@+bWqVPJDmgP8B[R/JDHKaM<n5)H>>mdji1TQc;I'Fc^lKaM!31R&p*9B3:g+Pou,\]fPFPn4k(CsC_7^.<]0onYi*o21mpeHr4`0b#77?#<8ZYH_CZ=RP6->j](6eh&*/DA'7Ed(Rjhl_-\ROu"L:O$G&sWZ9C=M/s'o!'4OV_?$4nD2Zf`e_[.LZ#O_dl0_XLLdV4Y>#gS=.``kY?/[jYTLYh22MO$gEZ7^'Xd&O;,P_V4+lVG=/4&YU_X'YB7`1X0D?Z^^*]E!$?;jiEoh-e1N,+D/'&pKB2Up23m0<!sRJ8LcLEn@WRl<c@DUJD>,f.D48BXg'gJ'6k_9;^DC!8n/m?_,Fa"^-i(O,@SFto6-fYKA7!14?9k)gU:)[D2[6>9ig%%1n?j%;q82>hoY5+4j*d/IM169cgR.U"/qnpS*<l&1aYXHJr;09oVpX.;^9k^7k8f!BS&a>pETh:pVsq"S/^P3>lF4\2ZW:_uKmp8@aTTLY(Jb8$8CjJ:))Cr<C(;IkjW*PqG?8s:qq089?Q,-*\,64itbK_oOb+10[:HXN&_/QZ:%f>eKr]Q>-ao&)KP=TdWUn[0j84k"'KH5`4GY=JuRG)X;uTKh2(1%2G!-R3g7!:BrOrV~>
+Gau0DgQ(#H&:O:Skb16TTOC7EQ+&$`VF_Hn&d(SWoKeckS$>D^'X_6PrV2C`b8T*/[4'B2FsC2'bab(]F6H]K`LGuKmfdjbnG@Bk]#8`c."]3"fKDG,rIgtQj='/l(;DD,bq>Yd5lCXGrV9a_:_2D6bD"]SEoA*_W1.m%6]XWQi%-DAcR5?W][-#PVp7*%hs*dSBJcd0ENNcrPWla)lMT`pho"%8H0\mCO/=00&p*(dX_+BO*`d,\13HnD?E[*K&pY:o5<h<5\1la:,T,Yp2nU";Q*oaPN8m#f""ADKEO92r?`(k0LA"!%4:WMiI^IlaL!IJG$9:;"Q#b&Mh4ZWB`_-5\%7f/d1(=RbLc9kT%_:'</E\<lk]jd,G!U4peKS'5rY<,4V.EqpkmY>LZitUTBIsrLO>gV]l`WVjb_-TLbf[$CBbT/K7,3m6"![/#g&6;R*(,7+BcFEd.gd7*q@Qm$c@FqUlJZs_-51/qHtS#YQ:r\tL4Rq*`TLmGh'=O[8kCeRdP,gi'M`n(U6G%*',p`RAue(5Qso;qa!ro[cb#Ce)_.4mKG"B>T+qHl&!Qh9A:e;NndWdOdrc5Aa[dP(8GV:7D;c-9f'p)_q5@/!p:4q]GDrm@9<!m2_<&#b41RCc>_tH?]=K5"MY+)#o&O0=Ou+&n\)m;+f,no"l=j,RPP"ktHXl(lPEC.&I#eo4H5DlAo6ohJ,Tc)qJuoW8r@(3>1tH29X9%1^TT9(U8VsL-)kg<<?#T"/UKV!3\--Rock1+X5*rBK(jXDqAifV]N1*)M9h@;eEC%BtZ0BLM<;8`dPZn\ph[E#Y-A!(d$8LdhpIL0lS1(2bZDrF,RMQa.^6:.;rIJ[B=8rJI1=5a&XpJPEknO`O`X?#aH5:4)\e%1E%&pZ2+U)U0$4H41.&m[\b@FaTe+j:RK[lPChcrm[oEACJZG?ZspFZmXG<LQ&-0lT-%\V>]DZ;=nHs5")Mo<36I2\%No^4_7349J).VPQt;0cPX@%Q8b(IUA`l$3==]U/j$ak*8hl<3fgW([$hSI`B\2CTnUh.T',M_tumdm.EPogi,%=N+6oP,/gFFqui5k[(9kn^:n#Nb-R=k0`]ti5u(k/O+"N4$%g1P%[,De#(+J'QS+JkboK&?J5QUT90Dp;T[(%7Ko'qKe7^#'(fkeX>9DmNs(*YWYNAV\.k!S3=&18T6HCOH'falj5J3.1Qmid[p:u"f;5I4"t$-j`g"=T$$iYTMYcm;;o,"a'>N+Si-<dt5NN6EfB>C-89b^QAE?V=H4t43g*ri3@5MR>T_A0mG;mrl#]U+,Ckt7<T8A87\ddR2SmrgE8ZWmSP=qm*O`TTdWQ1hH/D'5lU/,q9&";IfZ@@DJkdLbQ+V&k?Wd8mTdW\%a;A(@6H.GYTG^`8:aBWcN75(kjE'"NeL5no9lGm6*J)%")8$*g/b?s-fMj+#j8Oa9mMD[:L6jdq'ck%6hdP-W@G'sHX7.(Y`Hm?\ZdDo\fchJpZnX2_k_ZQUm7j4^N10D7dU@`QmZ)2E>2%R'el_fA="'<L0I;_Zo4-!hJ0b`4Y>*dN9q;o/O\8a2F(C0I(&`S]q0o=o.._b`e'rF-heJKW;Ls;GhE!=c7e\P-9`r9.QU<.HINkU_KA85Ir*CL62"Tng=o2&h$+^;.aa+-e"9W.XUg/m<]S4qU^A!9oRAp`R]Ra3=6bso.RU:ZcN<^,Je7#<i^%Q%2VFfQR/Yr3#_%oWef4F`-%=IgmSGrN&uD_dfp0f,prF-:$I!6dYe^-(9_Z$j/l=i5(PE<esjgdm@("oA`Bo+7<K?!^o&\!.OVGb,fO`0T%>kacd(Z[8:)GW`b4S:h#HF9&sIW0^9+5oc(FN]ahb(DRb5(*QRR*P9erh:oA^!OW$&W1u(b-`'T)jMH>K,H#Q)-TYs8g=^t]j_*L9j/<Z;1:.2J*F9_=pj;Td,\[rR8H<Y!g=C%B*u&(#qLHUX?U8Z2*(QUd-KF;hLW@6S)WWIgJ!-YbT1\tT$!a/-,U2[ll$:rZo,J#6faSk+^:F\-!r"?p-I*h~>
endstream
endobj
-64 0 obj
+88 0 obj
<< /Type /Page
/Parent 1 0 R
/MediaBox [ 0 0 612 792 ]
/Resources 3 0 R
-/Contents 63 0 R
+/Contents 87 0 R
>>
endobj
-65 0 obj
-<< /Length 2195 /Filter [ /ASCII85Decode /FlateDecode ]
+89 0 obj
+<< /Length 2327 /Filter [ /ASCII85Decode /FlateDecode ]
>>
stream
-Gat=-gQ(#H&:NH>n3_aR5f/E.4X^Zug87;h(0R:qZ[(J$PYFOY'oCX;d#[YJZD=0^g.i5r+PIlWk&BJ,7B`kthHjQ;]qUuJr;Cr,HGnQ+;$?n(iVrXuaC5e#aeffBgT/)l?C_f:(^\QmIsMoK."a1UM_"6=jM='l)$E;r+tqSR=.;u]IM8jYZ$X'-c41dViV!+"*dH5"@fAV-o<[;i(S<Y<^VaLMFP(gLUQi\g@\2-DlH:FdY%@Nq"Hb-rWN+s#raHL5=(6eV4se#noE/bEH%QFV:<fh*JT:AOr)dV'1Bm.(J^F4fOA`HK'f#kbpMKbOP_>81qCpom)7U3WQ<L]%hB"UY?Yu2,,Ri]&EZ$1I\D5.86C<;S+WV'kUi5kNkL9q!!#DH,RK6=X%G,u6]p%(Z54G"Z73u^92?>q'V8;5bSkn@53F((`M'XE=P<l*rPkmb'7^VdG*IoN!a%D=,\Y6E!cHKQYb%3(Yf^f[[613B4\%M-RVPQU`QYLm@9Xip\5SF/:P%[6k;@hU./#6r5$Jq-'#g<e7Q+g=8>9sK8\)OA)ee?QG''Rt`j#bZFiG6OhF53,oG!"6@q9@CaP?VHQg]JW<%F8!ZaDKfA[#nAs5B&$"rgF15kjIf>Fe[hHfA`U8kT)S;d)5L__jSGTG`\^4/P!^^GHL/>];F1^^T80_1Th03>_8,]B"5fPi-m'=o+3&G#W%lYqKIUVaCPS=k6n4?B#]q<-H?mG17Rg<AW]8,Le*u=RA6_(,u)O.1Z+FLUB3tG5%>8N-9s\[0N>hSP-Sc6/_Q\:Nuc:=JYVag%n]!_4R1;198N$W[CBWr4HUj;r-"0X8%krnR@d$i'X1/&M<?;><NWg54+#=>C;\^kelllE<FA1<I>+F$HoC/s=Sh."fC.TA!6'T,F^/G8#$_qL&dI.2=b^Q!f_B/O_U28LPB5sbED4gL6Jmj_^;^htRQ&$>Rf**N60>qPWetK$'LinD;e>C&[ckJS6[h!9BeSY>ku"oV=?4P8.A<M/DgAd\ASbLrOY2Tk5f`Q*r7YZDac0uSYpOIR7\BDqVBYAC7eAPa#Pr^SY@uOS(^'kr9V]ped%9V+;kbtg."fA!dnQ)*GikGL-$#3WpU`%<d:ii<b1)3heCaPT--Z)i?-8PC5bb3b/<%H_)LM2)bu>(EgSiiqB'%Z\/+7F,)][F\*=HKQZIMfAp,E(*8o1eSZHIe51F$TMWi_Ta.0P5V_Ia,%KILr*>85J?b1'lYoNi2rXnP6Ws(t^<-jhU5?snK/lO;[Tk,n'C@Jrl/G89L)OGd.>Q\Qhc9gN/*HnHf\9"_!Z,qRZP6@Caj0ITsH9De/(cImVMk0KPW=NnIo+45P6;I>Bhqo5mJUKYn?BZp:D`,:C7D5c6lE$XDdC\t=I[5C[_aN)9JWV_?$Rm`Af0kW(^W=hS!\I_u0<ek"tPn`!W]<*r,cY$?M9t-e5g??rnO3)`**\bup+2l5,d13I&F[MK`1F>!YA`:mCD'O6'##KA!PUalQ[P^!cnbRs)#D4iI)D3m]f,'-gYZEf^\V.sdUrCF1qZ>s8VoEg-BC\V'?$,7[)X4UMlM*1=IP\IiQ]!6@nbmuk0f*C4?1&N[Y0\;q'r2KVnP3;,$aR!$="mW#[F$L.O6#$VJ,:L4JMpGXNO+&j\Y*%@a3\gmI4cKk:4M#T;efEBTVr?*L!4aoKSq[A5f:YEYEpk:=;uY6*PBq0$4>n?3=&eE_D+-T6(fYZ3]Z3F>$7ml4$pT/r'(I<PP)R>OfWf[-SFcB7SRdMC>*>bp;7UiLC3rb@Dil.*9U@?Xkm`CMH2i%ZKE-J.j)/M94Wo+]JHnGcBOFo<`KPdGjR2o,3(g]@b<Y2,"Cq[G9!XCXYhqKN+t([6pih:2+esFc82lnhFKO.ectl%6bk]oW3(S^nBmg!cArY7G!?JaX6[&.)d:5]h8rmU$MQqU)q.A;*Bo(IUIs"WY6+U9S*SUJSrg0N!e'KW5S@#Z)-L\lj6n?CEPsb2?KRNS+TS4S<UK8gCARAMr\/Yg-[5I>=9F([9]GP$[+i@0fT5BVEF_SAb+o&0ihJ,U*kW%)Pp/l"2rmnu,V0Elo]hBi+\AGJ"5ui)nK#egeNC9\]/tN\mtX#$DHKHm(%](K?6*a$=M/ICpI"8-WmLL\b%^Y3Sa,P=;#M%Q<gN@:E-@#fi_\6$djkFd5PH52g&~>
+Gat=-gQ(#H&:NH>n66PKX,,7g-jh562FoJdMel7`9cpk\D%i%#8#"RS^:ki6[Upf5ecrqp.sjk5*6pQc8A2RKH$=c0jb>A<nFQW+o0%R8a"dK67d]ZR&Pp&m`J[>@*cCtiH1N$Y?JZt9`o4Q,eW&IGoALcqoOGecMplcf^Kpd7N-ieCR.kuJbIblfh/DBDn?XeM4fM%+NNNc;(]Q)TJ$F\B,bE?2;d_^^]p+0bS\q0Fn\C%bhM63f;>%/,4tM$VBHtmuB!6uFPq"'U:6k$eoBI1db<+jB_?Woj0oAbs8*9p+A,u5Mj,!1=p\(9No8%+T/B@f"1?*H_DlHAS</H2s^t5Sk(D>nBjB>UX6oW@kTZ9Z^>WgrlY<Tc"n,WP<^DcaO&I&d&<O.pe_1:PIWFbbT#1@'WZ&,d%j/5RNmTi1E8g5p;')GH,qfQ)90#b!MB]K'dmAnBZ]!)d:A`LU?,<!-S?.lBLDr4A3SsC?[d4=P^jb-+#P0t:8eft_->tuQV'?eWSjr^^TQ#_ZSquj]u'kk.T<*pPK4?6h3k#u!(kMO\M9eCF5Yn?]s$F,igWtBU%9ak5HU.J^c:^DC`dLe(k;;,T!>FhK.7"a%jm8duX<5L&CdV<D8CSETqmP?MH_Bfk&ab0nMa2VV&/h.+_WKiXu\7_`-;HH->SM!JkCWB[qodJ"'_-4)'Hr.#Q1:t-<"`T6p6IehRksTN*E9XKH[2mSk&I=QHAdm');cG(SLs`43`KI[%%8o*T'BT8g#/c7!3.o#>r^N,F]Yd3<VLF*VUV^>u6FRPP<U&mu8j]7\8/&^,b*72NG`7?B;cppG8MC9JU.h&bkIG>3jY*,`=ONa;O(c6old',/B'5P"V^nkIBZg9CiA/@+"q@=Vlu8bJd']/TZF%&s0P8rg?.r)oi(miD@d%!5X-.F_O+rXq<=Qlj2?aL%m<oa/-`ZJQf&>j_E`go@<AAbtFaIjh'=pbkM@e%*[aMG3*&_;(';%eF/>kMfinjcO(i=ke?7q_IU(b+[IAZTATac!>;Wm84eOk7t4.OJt_NFoQ@SGsV;1*4rbf8\ASs3\WD#Uqo*9W>0EsE-9%-c9D?+^_D&;4ASE'!.#r44SI-u3L*6un*69cuSLOf47^\"F-+K7hipPqeYaeg6#ieR.'AAjg\ufXTZp[0qkk3EG7IBQE>si\V1R]G-)("s<ZV$"]\n$(#>t7)R)tXqr]bQmTH^%c,i=)N8_(nkBlg3-N=k#XO2>Va/s=C9&;\,:(FLpE0T-eqg%cA*)=NET-I8St($_6Ok3ba(s*j-2qdN3/&Qs]iA1j>EC&XM@t"&)RM":N@G:"MM9n[HIcD;dKCmL"t)MbQj:/9%;oW73G9Ui48GWOGJ(@^,D_HuF#"Zhn91_GAtW-r@2dR1<]D"F-L;%od!BcK8AJ['i,3jAM(1@YF0TVd6d0)Q/BLAICOl9@Y-"Pt7`.JpF6)fjFcMuh;dUiRJ%+"pol*9]fPa:^*d=/p\@CQO$2G#tH2ZSP?r/LRI(HeFrH["<JKK/OCiKoejTddahfaEL)[4SZ!D8FiEpQ%ap@[^H;g3Fo<EPj_ejFXQ=onfX$%sIi3(q)V`"R(E`d(r\fiP9h^iL`o/9Q78W!bT_'NWK:8`k`I4Bm"?dXn]ON@'g8#A6OC)!&1,-3JHiH;:A=)r#tDMa4U4aE:Fm-npME#9;(2f%M]$`@$]#6da;A<`kf:$TVu=k\e^T4V&0d_>/CbI=P50,EVpX9%^RhVs"VjEt6rpL*s!6bi<cCc5DH)l(nEs\\F939AFXdL`;^t&\e"kpkbH-N@<BkQ\!g_%![,[P)DYnF,k';cbOrgMkAED1$<9T?A.rEEj&<oO_>].=pi+IG=]*<X%q9.%lrjniBVQ\;34DQXgQC$Cj6+?!hN_k+>-\h=d"gEUn$dn^fLX/;&4Je-.$Nq-5>=V]eUN^glboh970@7.tu`g[6U`1laC]P.hnprD#at0@@BW(;EV)](Nk8>aRLb0n_c0l18im(=[g]o@*LAPctFJcDQ$1>][,'j_a6Pc"j'E#HY-r6L9tbHO'Oja/C%NK4bi`O3&G-3>SMLFTCIathl7;a/&5BV.*jD7*eg(:;D0:sU9.O0d3<"Ma*;4d%S>Yk8^*m3iZS(-FoLfW!tH=ZH2B)#a4F,",W]["fYFGNnC:+Iff5Q/:<F-k+q)(@3JR-\kU#l6)Y6fmbjTlY(dXaH&UK/d<d,<LM_p+:=?kDA]fT2.^$5#Xg/i@A54OF<:Yb]niT[k3rPRqA:`MWJe17jihKSXbh!#$m][^$n%I8/>J*>IddBi1SoDHlG_##5(Jr>N~>
endstream
endobj
-66 0 obj
+90 0 obj
<< /Type /Page
/Parent 1 0 R
/MediaBox [ 0 0 612 792 ]
/Resources 3 0 R
-/Contents 65 0 R
+/Contents 89 0 R
>>
endobj
-67 0 obj
-<< /Length 2195 /Filter [ /ASCII85Decode /FlateDecode ]
+91 0 obj
+<< /Length 2327 /Filter [ /ASCII85Decode /FlateDecode ]
>>
stream
-Gat=-acbC:&A?Ckn7K;TK5b1\e(Dc%HT>[!P3%3++UL"OTTJ)jjf_ID'Zk5!cmU?p\-,A+H?oJc2=td/oA/]oT:<XN_V^-<_IpTLVCDEb-iNAc,g9@iA6pLnLR[1=hS&\Lj9I5lA+[Q<pR)hNnC_Ptit'K3n1X:NBB,AUH1%eLn'BT/Mcn-XGdlY9fB^s^/;p.nG$02C)mM<43P=n]p/XE3N/BCQL\YI]lEd#5Pfu$_HbtT8;)m9NebRZuCTS#3Wa4I9q!gSUr^hpZB[GoO="RbuWR^QOV7/#`_)npL%GHOeFC_j6\Nq;Ur[?.hqhhSrgLGo8Q\!KBa\.P'6FC)DLb%7?*4'rW^Yai1lm@s:"m=AIM8&c?87MeZ>;*1F<jtl9i^Qtck%IY'/=[\s+^oaK:iu0Q:?%Ze@9IE$]ksXSL,VSd-uOFG6\``%B+@)&pqGQuA)HrFCcgaYJhtSV@=,T17Xhf73lKbcTKHic'VLG%>%H-Lca(2=%lE0O,Wd'%Mk;&\`2j6mV=5_jni[<T03gfsC;>n:g63BES>9)k#<D-q9t;WK`:DDUm8.p_G"HU)V2q\J6AeST8rZmZn$1_h[1sM_k#pVe"56_r/$1G18h6>XdBqJ8LH\@lh@c#F\_2dN#V`!ZNSJ[dmgHb8#6O2%P&!fb^hj[;F>FK_gZ?,$ma12<3POs^M?(2p6eTdfS5)U%@G`oQ[T6kd.4*O<J%B0o"gi\,Sj]FL22Q,Y,U%.?T;C5'a3T0l$g<Q66t;=jgM;@*+H9N.G7V4)!79Fb.%']&/7SVKpto9g0O9t=&-@<4Z1Ft5P&qE?.]jf?[]WX6?04`DN\WHZ.i>r!X`WQuR#-F)"W:>X5(/X2h2r9/@*Sq,F$Hmh_)ADGhBI`"<U"//7YgT@Q:eU4OH"Eko7]G5r/T6o1/Ol=(.`7m[0P%f_dopueI)HC'Z'*)5lB>/R!O=?&_\9eoU$9PTMeb+;#MVR=5FkjWZ'u[`Ed.=;rR.%:^`G)(l\[=+GT[A0%o!mXS:8l1,4pUcEsm!eAFpoF\IN?#ZIbK,7kU/bT5-=U-`L-<?6#k7-RU*<M+NaSpCW]D/[!=?Og.)_d!mUcIP9&)s!VAR+terOXDrE9GY3+qQXhE@eEld_4q+//'YnnBM8cS`o1th=D-2IJL.-D67Q#NN3[E"#f>;$.u4Ue*c`UCU,Z[d3mW9^#mN4)N!I:2G>Gg%V@GI#75<!aBNBaSb/.rD?k`erp9W/6mff,kn=nH8fE2h''$j$7B<@<Xm`*7:5A!ZboAh%08@Q"Vj]XVA/6X(.Smre3\JP$dn"1],/3itY'qEW;ArkpsbD/uG2qhh'@X<Dr];$s6j!eE.Z>>CB*F<:BW#+shdFF0fS/e4H<Oo7XXbOE&M>Au<7_@Bg.INu3NZNg88g]VFm&'GD8&QpHhN#&]MW.btW1iNINiBk6mUM&XIS0p0F:YK5$'-YRWR%:f(5DNS?I:Q7h:S5Y.IdDbmt9@!-kabG%3;3_&C-rRj%o@Tr@0(_+k7><(efQ.*/%HLV-k$LRDs&c?NI=o=ER]QqQ2"*Vm)TtrVZRLLtYMNmOo!u`T/\?+_c^#S*b<!iPHqkMA^.1".kh"&B&"Mh@1Cb"X4?WkQmO]#7=b8DR_^-#r,m9*//>nhg$6AZgZ?rE+8lW.("#)XYJfXgqsSS>2s9Qd_K[V8n%0&+;Vb_h$2+3a#t][%"a+8gG'd8"7TsI>DEF<bA0sINq6%b4=.O/1gQmCquieH*mS_0n!.k5a]S"P)aEs?E<;rR?P#KujR8j'f\NoCH)l(%9fd=S@qQ4t!,h&$mA&<$f,i^B;0(c0:M$7]fKFp;31W/H^f"r0As)mR+A`[k7(#6j@T(asCYMbu&CKl:o4U+,mmPI]&H-qT$$/UNG8UVC=VCj:5keuH,8l]>J$1qF^9L&8^B%<;YTTki-u=3j:G4R03U,goGjeQ\Xar.6oO?W-j;<2'M_RZ>^l!T'GSqq&+=o(Y%V-G-Z8@6W_Ge9q"[.A/Tc7Uf7@X$9q@*3=)Bm:eUFc.BR.R,#1Pt\\e=HdU!4I+UW;5dncGq.Bk0jAR3>D65l1uqAZT(682?c[hMDXko(gIHg^#&)RTon(M@emdU,Zn*@n)qmZ8Cun]D@]GSXZu'0Gs6EDnXY",5rj$NL)q:LD-RK^,I-))7KSRWA4uFk"ie[%K)~>
+Gat=-9lo&I&A@sBka#c!77`:M`Um]=Z.lW[h*s2k2U)7H+UMYA:^GF.o'<n%^NM'AnmjN$#a1#"ICoCM!P2TC]N\Zh\aX69pq+414Qam(MZs##7a:6@U3Xf]D_\<2Cjkj:`V%mhP)';!rU&2qdEE-ZK@T,$4$M`A5C_6J(^4a7KsOc6qt/<9][T&$;O.+/m"aN/h+Ln2YPIrK='PB5p3F)m5M:&EZ`r>,[1hR6s!m]B&:796DeW'3i,r30D?M_t9>9">AWR:27[t;3)jq(^3NgskHE7h!:aU3K%%3Y7fXN2e=7FbG6,abG^P$-@na9C0e&1sVg(4Y54u`Dm0qhk1f>Toi"ZRjU_l>UuB&X[L34%R1U!Ju-!\\"h%tQQ@jN+8Lo)ha?aL&j[]Lb7Y=fRnr%Jn)Arq>aKm,F\-5Cr*s;MF-cD0TVsBQ@TM,>*?lm*Y$&FFea>='Ms+>5j94X,Y?"3ET1=S4;V8O.TYB[=;sqR'#tt?<JFEWM0?OWjFX^GWG=_b0eMB(-N2@^56M%]O`#XFLYkd+1+fKbkDD`ZJ=H&:uglB#:6]oo2F(q6BB)ogsb+BMHT<(4mG`QZ[(W@hY\oSKH/#?XU7@oYonj'C(3a#Sf^pk^5ar-D&`X4*UpN!7W.N!5^9Rn;cQgA2>Q4U!;?=94Ps@$nTbG!k?WJ@":H,g$Ph(U(,(a)!,q(@fp6dX\nuLO=?-Pi[1Xf?3I2B29fJQr>K4cFRadN'.aj\u/nmNa27?\-PO;[Tn/VI!$Zm!$#n-Wd:].(1,rdg_N6/QhqMD(o<7O-Pq4;):E%u_JOXk>6i0&Dg`<75$(*GSg*Xb>j--rPbf17gK+D%.nIIQ:t?%Qc.Url`j5r^<Q*IeXO@)&mCD/_m.HQsM`>;;s^/X=H&#07$^aO^)Ge2<U^`Gq/YFm7!C[&f!O5IGu=UA'Z\[Db4'fWpRIV_Ck9:,?G.Aij#U\?Q@J@YX0+_'&2GM%`u@Lq-u-M(f>>(18=K;WpYoqjaS)Z"dpg<Y"H&&$)JNAl>8]7M%u%PoC*b.h:LoW2eceMUAAuOXY1B]i0Pc$:_Vf'iOco(9o6rdt]]dfDHV1:,:>3p#pp=Gp+rbEW.,%g_hM,cnBNAgA.]\H4Mn:mK_6??mOi%&\Gp"%m<IR!9o:UnfRVrhM["L9Ns)eQ--1"7mYq\`XiU;<j0Yp+C!Ioi!tX-/'f+`'+M_1,$dSfl6@%Z;Q7?AOo)ndU*MdUb(%RPUoQ@D:Q?m;N;sRHSd^[;j7"CQ*^fSYjs0#KbT8O0K*P*V;utH<$V)su:&e8EV>8MF_O2%JI";Ge/jWugj4^l(PHJ&FpRY8s!IV-u4%jXd*9ZpTWl,3(^?6#S>jV[OO"2fsM6eHepZ#*nre"uq)M$f@(uDqs-)SGAN)8;G7&`H)+l;M?mi^Us;%[uVFF,!;);DWafsnJql3Af)Bq=k\P$#./PntX\3!m17kLT@`__0$+W@*lE:[uJr4Jt"XTj7![AQ%Et:8Z9Kp8O4+Y<0=h-27J[_k7PG[ue"A5XC1##.0js<<i"B6TAlB3Ym+i4/pSqlpS@[&moBo[4oR1)E9Lp0lJ+eLHXFi1\u(,>)d/kBA]\2S*&mL9U(rcGc,h<H2#6uo\!#iI!Dn7QQQ7A\sqR/FhUA(;9`BBKGfS2.)-"BLo!fN1!66$`Hbrh'U]AO(50/?L%EpHn!A3"8-9GN+J>5N!ZN9@I&&Ae&@d-(fOkW1K.(_M-mpt7HXD&>EJ*87NWWHNZr/OF"YLPllQ`6o>2*b&IQPMW(o>kR:,?FuC@7',=2:4jQ8g)VC,6$0^o?DB#7sYo-I.%/Q\$4t=,s8R\RS%S#lsGP@_"@i"_+]90"-REYRSe\dm=dgL;3koC?-^=-gJ'1gg]`Oq*b*s$J=E_<B=g.WehGP)!-LL0(!)b1`I9LRMrPA6)T!6;>1[Vple4!$#qP;p#pq(ejLiC\r-,D5($.p+m$+9eP38iN&<ii7]pRIaP"a4J)S4(.2aa&"&t31V#9Yl_U6XZ:EO+^P(`e!BAbk$l(K`FEBQp[XUBf6B`5j-Wm2(Q%>@D1T\S`.['3CfUlQ5"qkf&gN\&cnI66[*l,?5]+cNWN>gc/-R<?Ldq`HtWba'eB5pqDoq*?c5.ZFOMb`[2_^_%5eOMB0'ZeP?OK?KXek!uiqFt\R`A!\_W32=UGVU(NGFX@FJ1@BP#lO&%ojngG?heOBcH48de6GMm_;8eVd1g>\G=')D?ec&Cem1(TCs+&&-<T&/GERg1^]=?ShFPEr_Wf;;j]!m+N#*)%';5H&?=PM6jib09:3CBc'f1Qu#Oo$4GoaIS~>
endstream
endobj
-68 0 obj
+92 0 obj
<< /Type /Page
/Parent 1 0 R
/MediaBox [ 0 0 612 792 ]
/Resources 3 0 R
-/Contents 67 0 R
+/Contents 91 0 R
>>
endobj
-69 0 obj
-<< /Length 1257 /Filter [ /ASCII85Decode /FlateDecode ]
+93 0 obj
+<< /Length 317 /Filter [ /ASCII85Decode /FlateDecode ]
>>
stream
-GasIggQ(#H&:O:SkUd`]bDNU.IG8VFMl(1"D%%+qRKm"7>Js..6:uFVY:k#SLU*.PiIsbNE98.c*7!S^o5;&5]V3VJs.20+93`hQ6iGmQ]'&NElB*LI3YIt]k)[dI2]ZR&8Us#)rb:]^4^;WDfXSV]X8f+ch7.M86:,2>fp0k'4'naM8k>G\3c<G!hn<YMAultSD(N[+K=B,RBD5^;$*HR+!O`<.mMOl#d<=r+U3A('D35^J@BY2^CIgH9b_q]W[+krZ.5]&SLfPF08q4';p;Ij^Q>qs,b;Ij96ZF:3h9V@3Y*j*Ng(mB=>EME6Adinb8L=Z(TIYS6:F34LV87,":!4G-:_Fa2T6$Ud`r&>_=+D2#'C*eV[EN!teLL^4bJ@LP+jgdfc8E'i>QWfJmfZspoh1nmMY?H@o$ZU33\H1"1'7h#i`Vu)q#MLn'IbGAm3F077De4'<3sll*&n;J$<2mLIjl2m#"_.5$*K<>6?X"a76GY(XTl"Bqr33j&1cE_<W`(hk%O.[hg^!Z1ZjJ-*aZp.m^fI.;so]I2cL.F8XJ<@]uB)G2k@t093oX(LZO0"?kpa#hUI$E/0gKG++Cn1VT!9m9*m.I^*s1XKS4o=/mBH;qh-qA9Z%/dN!u9!PP*`J<n7EsHlSiq]hf%eJH^N,>V$YmB3StO[4Ei_k;a':FhfF]qh19F$E+QIP,5a`0d='WAjWPL/hGealCo1FO`-Me32\eI``6D\VuZQu$(ANMR`b"L=g.sbWoJ=1nMW;JVJci>Q@Kuka\mOY^^?oJP?>mXE*p5Lm!bE;efdP2o+frF/Lo(50[+Pb;tnJ>okekP\G=OF%86RVDl'!g@N2M@!=Rm.$?9CGVcE(s2+,KfhIjou2+,NfG-H[C`oY@N(?fQ$Wg2Bt6EYr;jNoK`#,-K8o4*jVe/LM4&u&9O[&WS+X;a%bGWY?hO\^?h1(tl%XEj8X'H>j"@-@f:aM:[r]DNtR[cieP8qM2O>&eNa+'+akLdI`*<Smu#ENnV'#]r<>j3,qHaq,TM_"@:RS+s7JoOG5R#U,hCI\%2ds+[(8T,RBcfq?b>&4Ik$6I32ha@]cQ#[4HcI&!dNkE]b2:TPMCqi.QoklH5q/=1V[CjqbsMCp6>p`tm>>[GE2^P8Hs6)!^3JP0H*ncM#3#C>_F""3e"Y*"Va7=C<rR%j]^?SA(lnm"+3eu4^`nPE"r44kXnTfJ1Y41ohOD3ac].R@r>6OuX.>9Ors_#cB$R/8!"D%mB~>
+Gaqcq4\rsL&;GE/MVCZ,%\L"9HYf_u#o4)D-k$]-dR\3pS.roV-OHo<lDEaGHU#/`lu">hTEJ=M%OE@Xr=DLlO]r!XmZE/+GD'8m(;c:0NK4IW'j@B_WISNI+02tf]9m^ahR$@&&#UoO$hs_ra>T',N?4BqDo";G"]>fF;(.5A$MM>;6RKBT]&Z`D@%RV(7&/(JT!QjP\WJjU%Ad_L*a56L>,k^a;@79@^rX5.rG/N&o,F`Nhi35b5>C!gU59$9Ag4_Y'.fX>F3^t_k^KfsgMFd,cEjY\29sJWLC$H=G/h8hn_<4dIGQ&J\n"/~>
endstream
endobj
-70 0 obj
+94 0 obj
<< /Type /Page
/Parent 1 0 R
/MediaBox [ 0 0 612 792 ]
/Resources 3 0 R
-/Contents 69 0 R
+/Contents 93 0 R
>>
endobj
-72 0 obj
+96 0 obj
<<
/Title (\376\377\0\61\0\40\0\104\0\145\0\160\0\154\0\157\0\171\0\155\0\145\0\156\0\164)
- /Parent 71 0 R
- /First 73 0 R
- /Last 75 0 R
- /Next 76 0 R
+ /Parent 95 0 R
+ /First 97 0 R
+ /Last 99 0 R
+ /Next 100 0 R
/Count -3
/A 9 0 R
>> endobj
-73 0 obj
+97 0 obj
<<
/Title (\376\377\0\61\0\56\0\61\0\40\0\123\0\171\0\163\0\164\0\145\0\155\0\40\0\122\0\145\0\161\0\165\0\151\0\162\0\145\0\155\0\145\0\156\0\164\0\163)
- /Parent 72 0 R
- /Next 74 0 R
+ /Parent 96 0 R
+ /Next 98 0 R
/A 11 0 R
>> endobj
-74 0 obj
+98 0 obj
<<
/Title (\376\377\0\61\0\56\0\62\0\40\0\103\0\154\0\165\0\163\0\164\0\145\0\162\0\145\0\144\0\40\0\50\0\115\0\165\0\154\0\164\0\151\0\55\0\123\0\145\0\162\0\166\0\145\0\162\0\51\0\40\0\123\0\145\0\164\0\165\0\160)
- /Parent 72 0 R
- /Prev 73 0 R
- /Next 75 0 R
+ /Parent 96 0 R
+ /Prev 97 0 R
+ /Next 99 0 R
/A 13 0 R
>> endobj
-75 0 obj
+99 0 obj
<<
/Title (\376\377\0\61\0\56\0\63\0\40\0\123\0\151\0\156\0\147\0\154\0\145\0\40\0\123\0\145\0\162\0\166\0\145\0\162\0\40\0\141\0\156\0\144\0\40\0\104\0\145\0\166\0\145\0\154\0\157\0\160\0\145\0\162\0\40\0\123\0\145\0\164\0\165\0\160)
- /Parent 72 0 R
- /Prev 74 0 R
+ /Parent 96 0 R
+ /Prev 98 0 R
/A 15 0 R
>> endobj
-76 0 obj
+100 0 obj
<<
/Title (\376\377\0\62\0\40\0\101\0\144\0\155\0\151\0\156\0\151\0\163\0\164\0\162\0\141\0\164\0\151\0\157\0\156)
- /Parent 71 0 R
- /First 77 0 R
- /Last 96 0 R
- /Prev 72 0 R
- /Count -13
+ /Parent 95 0 R
+ /First 101 0 R
+ /Last 126 0 R
+ /Prev 96 0 R
+ /Count -19
/A 17 0 R
>> endobj
-77 0 obj
+101 0 obj
<<
- /Title (\376\377\0\62\0\56\0\61\0\40\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\141\0\164\0\151\0\157\0\156\0\40\0\120\0\141\0\162\0\141\0\155\0\145\0\164\0\145\0\162\0\163)
- /Parent 76 0 R
- /First 79 0 R
- /Last 85 0 R
- /Next 86 0 R
- /Count -4
+ /Title (\376\377\0\62\0\56\0\61\0\40\0\104\0\145\0\163\0\151\0\147\0\156\0\151\0\156\0\147\0\40\0\141\0\40\0\132\0\157\0\157\0\113\0\145\0\145\0\160\0\145\0\162\0\40\0\104\0\145\0\160\0\154\0\157\0\171\0\155\0\145\0\156\0\164)
+ /Parent 100 0 R
+ /Next 102 0 R
/A 19 0 R
>> endobj
-79 0 obj
+102 0 obj
<<
- /Title (\376\377\0\62\0\56\0\61\0\56\0\61\0\40\0\115\0\151\0\156\0\151\0\155\0\165\0\155\0\40\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\141\0\164\0\151\0\157\0\156)
- /Parent 77 0 R
- /Next 81 0 R
- /A 78 0 R
+ /Title (\376\377\0\62\0\56\0\62\0\40\0\120\0\162\0\157\0\166\0\151\0\163\0\151\0\157\0\156\0\151\0\156\0\147)
+ /Parent 100 0 R
+ /Prev 101 0 R
+ /Next 103 0 R
+ /A 21 0 R
>> endobj
-81 0 obj
+103 0 obj
<<
- /Title (\376\377\0\62\0\56\0\61\0\56\0\62\0\40\0\101\0\144\0\166\0\141\0\156\0\143\0\145\0\144\0\40\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\141\0\164\0\151\0\157\0\156)
- /Parent 77 0 R
- /Prev 79 0 R
- /Next 83 0 R
- /A 80 0 R
+ /Title (\376\377\0\62\0\56\0\63\0\40\0\124\0\150\0\151\0\156\0\147\0\163\0\40\0\164\0\157\0\40\0\103\0\157\0\156\0\163\0\151\0\144\0\145\0\162\0\72\0\40\0\132\0\157\0\157\0\113\0\145\0\145\0\160\0\145\0\162\0\40\0\123\0\164\0\162\0\145\0\156\0\147\0\164\0\150\0\163\0\40\0\141\0\156\0\144\0\40\0\114\0\151\0\155\0\151\0\164\0\141\0\164\0\151\0\157\0\156\0\163)
+ /Parent 100 0 R
+ /Prev 102 0 R
+ /Next 104 0 R
+ /A 23 0 R
>> endobj
-83 0 obj
+104 0 obj
<<
- /Title (\376\377\0\62\0\56\0\61\0\56\0\63\0\40\0\103\0\154\0\165\0\163\0\164\0\145\0\162\0\40\0\117\0\160\0\164\0\151\0\157\0\156\0\163)
- /Parent 77 0 R
- /Prev 81 0 R
- /Next 85 0 R
- /A 82 0 R
+ /Title (\376\377\0\62\0\56\0\64\0\40\0\101\0\144\0\155\0\151\0\156\0\151\0\163\0\164\0\145\0\162\0\151\0\156\0\147)
+ /Parent 100 0 R
+ /Prev 103 0 R
+ /Next 105 0 R
+ /A 25 0 R
>> endobj
-85 0 obj
+105 0 obj
<<
- /Title (\376\377\0\62\0\56\0\61\0\56\0\64\0\40\0\125\0\156\0\163\0\141\0\146\0\145\0\40\0\117\0\160\0\164\0\151\0\157\0\156\0\163)
- /Parent 77 0 R
- /Prev 83 0 R
- /A 84 0 R
+ /Title (\376\377\0\62\0\56\0\65\0\40\0\115\0\157\0\156\0\151\0\164\0\157\0\162\0\151\0\156\0\147)
+ /Parent 100 0 R
+ /Prev 104 0 R
+ /Next 106 0 R
+ /A 27 0 R
>> endobj
-86 0 obj
+106 0 obj
<<
- /Title (\376\377\0\62\0\56\0\62\0\40\0\132\0\157\0\157\0\153\0\145\0\145\0\160\0\145\0\162\0\40\0\103\0\157\0\155\0\155\0\141\0\156\0\144\0\163\0\72\0\40\0\124\0\150\0\145\0\40\0\106\0\157\0\165\0\162\0\40\0\114\0\145\0\164\0\164\0\145\0\162\0\40\0\127\0\157\0\162\0\144\0\163)
- /Parent 76 0 R
- /Prev 77 0 R
- /Next 87 0 R
- /A 21 0 R
+ /Title (\376\377\0\62\0\56\0\66\0\40\0\114\0\157\0\147\0\147\0\151\0\156\0\147)
+ /Parent 100 0 R
+ /Prev 105 0 R
+ /Next 107 0 R
+ /A 29 0 R
>> endobj
-87 0 obj
+107 0 obj
<<
- /Title (\376\377\0\62\0\56\0\63\0\40\0\115\0\157\0\156\0\151\0\164\0\157\0\162\0\151\0\156\0\147)
- /Parent 76 0 R
- /Prev 86 0 R
- /Next 88 0 R
- /A 23 0 R
+ /Title (\376\377\0\62\0\56\0\67\0\40\0\124\0\162\0\157\0\165\0\142\0\154\0\145\0\163\0\150\0\157\0\157\0\164\0\151\0\156\0\147)
+ /Parent 100 0 R
+ /Prev 106 0 R
+ /Next 108 0 R
+ /A 31 0 R
>> endobj
-88 0 obj
+108 0 obj
+<<
+ /Title (\376\377\0\62\0\56\0\70\0\40\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\141\0\164\0\151\0\157\0\156\0\40\0\120\0\141\0\162\0\141\0\155\0\145\0\164\0\145\0\162\0\163)
+ /Parent 100 0 R
+ /First 110 0 R
+ /Last 116 0 R
+ /Prev 107 0 R
+ /Next 117 0 R
+ /Count -4
+ /A 33 0 R
+>> endobj
+110 0 obj
+<<
+ /Title (\376\377\0\62\0\56\0\70\0\56\0\61\0\40\0\115\0\151\0\156\0\151\0\155\0\165\0\155\0\40\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\141\0\164\0\151\0\157\0\156)
+ /Parent 108 0 R
+ /Next 112 0 R
+ /A 109 0 R
+>> endobj
+112 0 obj
+<<
+ /Title (\376\377\0\62\0\56\0\70\0\56\0\62\0\40\0\101\0\144\0\166\0\141\0\156\0\143\0\145\0\144\0\40\0\103\0\157\0\156\0\146\0\151\0\147\0\165\0\162\0\141\0\164\0\151\0\157\0\156)
+ /Parent 108 0 R
+ /Prev 110 0 R
+ /Next 114 0 R
+ /A 111 0 R
+>> endobj
+114 0 obj
<<
- /Title (\376\377\0\62\0\56\0\64\0\40\0\104\0\141\0\164\0\141\0\40\0\106\0\151\0\154\0\145\0\40\0\115\0\141\0\156\0\141\0\147\0\145\0\155\0\145\0\156\0\164)
- /Parent 76 0 R
- /First 90 0 R
- /Last 94 0 R
- /Prev 87 0 R
- /Next 95 0 R
+ /Title (\376\377\0\62\0\56\0\70\0\56\0\63\0\40\0\103\0\154\0\165\0\163\0\164\0\145\0\162\0\40\0\117\0\160\0\164\0\151\0\157\0\156\0\163)
+ /Parent 108 0 R
+ /Prev 112 0 R
+ /Next 116 0 R
+ /A 113 0 R
+>> endobj
+116 0 obj
+<<
+ /Title (\376\377\0\62\0\56\0\70\0\56\0\64\0\40\0\125\0\156\0\163\0\141\0\146\0\145\0\40\0\117\0\160\0\164\0\151\0\157\0\156\0\163)
+ /Parent 108 0 R
+ /Prev 114 0 R
+ /A 115 0 R
+>> endobj
+117 0 obj
+<<
+ /Title (\376\377\0\62\0\56\0\71\0\40\0\132\0\157\0\157\0\113\0\145\0\145\0\160\0\145\0\162\0\40\0\103\0\157\0\155\0\155\0\141\0\156\0\144\0\163\0\72\0\40\0\124\0\150\0\145\0\40\0\106\0\157\0\165\0\162\0\40\0\114\0\145\0\164\0\164\0\145\0\162\0\40\0\127\0\157\0\162\0\144\0\163)
+ /Parent 100 0 R
+ /Prev 108 0 R
+ /Next 118 0 R
+ /A 35 0 R
+>> endobj
+118 0 obj
+<<
+ /Title (\376\377\0\62\0\56\0\61\0\60\0\40\0\104\0\141\0\164\0\141\0\40\0\106\0\151\0\154\0\145\0\40\0\115\0\141\0\156\0\141\0\147\0\145\0\155\0\145\0\156\0\164)
+ /Parent 100 0 R
+ /First 120 0 R
+ /Last 124 0 R
+ /Prev 117 0 R
+ /Next 125 0 R
/Count -3
- /A 25 0 R
+ /A 37 0 R
>> endobj
-90 0 obj
+120 0 obj
<<
- /Title (\376\377\0\62\0\56\0\64\0\56\0\61\0\40\0\124\0\150\0\145\0\40\0\104\0\141\0\164\0\141\0\40\0\104\0\151\0\162\0\145\0\143\0\164\0\157\0\162\0\171)
- /Parent 88 0 R
- /Next 92 0 R
- /A 89 0 R
+ /Title (\376\377\0\62\0\56\0\61\0\60\0\56\0\61\0\40\0\124\0\150\0\145\0\40\0\104\0\141\0\164\0\141\0\40\0\104\0\151\0\162\0\145\0\143\0\164\0\157\0\162\0\171)
+ /Parent 118 0 R
+ /Next 122 0 R
+ /A 119 0 R
>> endobj
-92 0 obj
+122 0 obj
<<
- /Title (\376\377\0\62\0\56\0\64\0\56\0\62\0\40\0\124\0\150\0\145\0\40\0\114\0\157\0\147\0\40\0\104\0\151\0\162\0\145\0\143\0\164\0\157\0\162\0\171)
- /Parent 88 0 R
- /Prev 90 0 R
- /Next 94 0 R
- /A 91 0 R
+ /Title (\376\377\0\62\0\56\0\61\0\60\0\56\0\62\0\40\0\124\0\150\0\145\0\40\0\114\0\157\0\147\0\40\0\104\0\151\0\162\0\145\0\143\0\164\0\157\0\162\0\171)
+ /Parent 118 0 R
+ /Prev 120 0 R
+ /Next 124 0 R
+ /A 121 0 R
>> endobj
-94 0 obj
+124 0 obj
<<
- /Title (\376\377\0\62\0\56\0\64\0\56\0\63\0\40\0\106\0\151\0\154\0\145\0\40\0\115\0\141\0\156\0\141\0\147\0\145\0\155\0\145\0\156\0\164)
- /Parent 88 0 R
- /Prev 92 0 R
- /A 93 0 R
+ /Title (\376\377\0\62\0\56\0\61\0\60\0\56\0\63\0\40\0\106\0\151\0\154\0\145\0\40\0\115\0\141\0\156\0\141\0\147\0\145\0\155\0\145\0\156\0\164)
+ /Parent 118 0 R
+ /Prev 122 0 R
+ /A 123 0 R
>> endobj
-95 0 obj
+125 0 obj
<<
- /Title (\376\377\0\62\0\56\0\65\0\40\0\124\0\150\0\151\0\156\0\147\0\163\0\40\0\164\0\157\0\40\0\101\0\166\0\157\0\151\0\144)
- /Parent 76 0 R
- /Prev 88 0 R
- /Next 96 0 R
- /A 27 0 R
+ /Title (\376\377\0\62\0\56\0\61\0\61\0\40\0\124\0\150\0\151\0\156\0\147\0\163\0\40\0\164\0\157\0\40\0\101\0\166\0\157\0\151\0\144)
+ /Parent 100 0 R
+ /Prev 118 0 R
+ /Next 126 0 R
+ /A 39 0 R
>> endobj
-96 0 obj
+126 0 obj
<<
- /Title (\376\377\0\62\0\56\0\66\0\40\0\102\0\145\0\163\0\164\0\40\0\120\0\162\0\141\0\143\0\164\0\151\0\143\0\145\0\163)
- /Parent 76 0 R
- /Prev 95 0 R
- /A 29 0 R
+ /Title (\376\377\0\62\0\56\0\61\0\62\0\40\0\102\0\145\0\163\0\164\0\40\0\120\0\162\0\141\0\143\0\164\0\151\0\143\0\145\0\163)
+ /Parent 100 0 R
+ /Prev 125 0 R
+ /A 41 0 R
>> endobj
-97 0 obj
+127 0 obj
<< /Type /Font
/Subtype /Type1
/Name /F3
/BaseFont /Helvetica-Bold
/Encoding /WinAnsiEncoding >>
endobj
-98 0 obj
+128 0 obj
<< /Type /Font
/Subtype /Type1
/Name /F5
/BaseFont /Times-Roman
/Encoding /WinAnsiEncoding >>
endobj
-99 0 obj
+129 0 obj
<< /Type /Font
/Subtype /Type1
/Name /F6
/BaseFont /Times-Italic
/Encoding /WinAnsiEncoding >>
endobj
-100 0 obj
+130 0 obj
<< /Type /Font
/Subtype /Type1
/Name /F1
/BaseFont /Helvetica
/Encoding /WinAnsiEncoding >>
endobj
-101 0 obj
+131 0 obj
<< /Type /Font
/Subtype /Type1
/Name /F9
/BaseFont /Courier
/Encoding /WinAnsiEncoding >>
endobj
-102 0 obj
+132 0 obj
<< /Type /Font
/Subtype /Type1
/Name /F2
/BaseFont /Helvetica-Oblique
/Encoding /WinAnsiEncoding >>
endobj
-103 0 obj
+133 0 obj
<< /Type /Font
/Subtype /Type1
/Name /F7
@@ -693,252 +928,318 @@ endobj
endobj
1 0 obj
<< /Type /Pages
-/Count 11
-/Kids [6 0 R 31 0 R 37 0 R 41 0 R 54 0 R 56 0 R 58 0 R 64 0 R 66 0 R 68 0 R 70 0 R ] >>
+/Count 12
+/Kids [6 0 R 43 0 R 50 0 R 55 0 R 75 0 R 77 0 R 79 0 R 84 0 R 88 0 R 90 0 R 92 0 R 94 0 R ] >>
endobj
2 0 obj
<< /Type /Catalog
/Pages 1 0 R
- /Outlines 71 0 R
+ /Outlines 95 0 R
/PageMode /UseOutlines
>>
endobj
3 0 obj
<<
-/Font << /F3 97 0 R /F5 98 0 R /F1 100 0 R /F6 99 0 R /F9 101 0 R /F2 102 0 R /F7 103 0 R >>
+/Font << /F3 127 0 R /F5 128 0 R /F1 130 0 R /F6 129 0 R /F9 131 0 R /F2 132 0 R /F7 133 0 R >>
/ProcSet [ /PDF /ImageC /Text ] >>
endobj
9 0 obj
<<
/S /GoTo
-/D [31 0 R /XYZ 85.0 659.0 null]
+/D [43 0 R /XYZ 85.0 659.0 null]
>>
endobj
11 0 obj
<<
/S /GoTo
-/D [31 0 R /XYZ 85.0 488.266 null]
+/D [43 0 R /XYZ 85.0 488.266 null]
>>
endobj
13 0 obj
<<
/S /GoTo
-/D [31 0 R /XYZ 85.0 397.413 null]
+/D [43 0 R /XYZ 85.0 397.413 null]
>>
endobj
15 0 obj
<<
/S /GoTo
-/D [41 0 R /XYZ 85.0 637.8 null]
+/D [55 0 R /XYZ 85.0 637.8 null]
>>
endobj
17 0 obj
<<
/S /GoTo
-/D [41 0 R /XYZ 85.0 478.147 null]
+/D [55 0 R /XYZ 85.0 478.147 null]
>>
endobj
19 0 obj
<<
/S /GoTo
-/D [41 0 R /XYZ 85.0 320.613 null]
+/D [55 0 R /XYZ 85.0 200.213 null]
>>
endobj
21 0 obj
<<
/S /GoTo
-/D [64 0 R /XYZ 85.0 364.5 null]
+/D [55 0 R /XYZ 85.0 162.16 null]
>>
endobj
23 0 obj
<<
/S /GoTo
-/D [66 0 R /XYZ 85.0 616.6 null]
+/D [75 0 R /XYZ 85.0 651.0 null]
>>
endobj
25 0 obj
<<
/S /GoTo
-/D [66 0 R /XYZ 85.0 565.347 null]
+/D [75 0 R /XYZ 85.0 612.947 null]
>>
endobj
27 0 obj
<<
/S /GoTo
-/D [68 0 R /XYZ 85.0 357.856 null]
+/D [75 0 R /XYZ 85.0 574.894 null]
>>
endobj
29 0 obj
<<
/S /GoTo
-/D [70 0 R /XYZ 85.0 497.5 null]
+/D [75 0 R /XYZ 85.0 536.841 null]
>>
endobj
-61 0 obj
+31 0 obj
+<<
+/S /GoTo
+/D [75 0 R /XYZ 85.0 498.788 null]
+>>
+endobj
+33 0 obj
+<<
+/S /GoTo
+/D [75 0 R /XYZ 85.0 460.735 null]
+>>
+endobj
+35 0 obj
+<<
+/S /GoTo
+/D [88 0 R /XYZ 85.0 494.7 null]
+>>
+endobj
+37 0 obj
+<<
+/S /GoTo
+/D [88 0 R /XYZ 85.0 224.127 null]
+>>
+endobj
+39 0 obj
+<<
+/S /GoTo
+/D [92 0 R /XYZ 85.0 563.8 null]
+>>
+endobj
+41 0 obj
+<<
+/S /GoTo
+/D [92 0 R /XYZ 85.0 176.047 null]
+>>
+endobj
+82 0 obj
<<
/S /GoTo
/D [null /XYZ 0.0 0.0 null]
>>
endobj
-71 0 obj
+95 0 obj
<<
- /First 72 0 R
- /Last 76 0 R
+ /First 96 0 R
+ /Last 100 0 R
>> endobj
-78 0 obj
+109 0 obj
<<
/S /GoTo
-/D [41 0 R /XYZ 85.0 229.76 null]
+/D [75 0 R /XYZ 85.0 369.882 null]
>>
endobj
-80 0 obj
+111 0 obj
<<
/S /GoTo
-/D [54 0 R /XYZ 85.0 499.09 null]
+/D [77 0 R /XYZ 85.0 637.8 null]
>>
endobj
-82 0 obj
+113 0 obj
<<
/S /GoTo
-/D [56 0 R /XYZ 85.0 354.4 null]
+/D [79 0 R /XYZ 85.0 489.5 null]
>>
endobj
-84 0 obj
+115 0 obj
<<
/S /GoTo
-/D [58 0 R /XYZ 85.0 149.79 null]
+/D [84 0 R /XYZ 85.0 287.99 null]
>>
endobj
-89 0 obj
+119 0 obj
<<
/S /GoTo
-/D [66 0 R /XYZ 85.0 461.294 null]
+/D [90 0 R /XYZ 85.0 659.0 null]
>>
endobj
-91 0 obj
+121 0 obj
<<
/S /GoTo
-/D [68 0 R /XYZ 85.0 659.0 null]
+/D [90 0 R /XYZ 85.0 341.228 null]
>>
endobj
-93 0 obj
+123 0 obj
<<
/S /GoTo
-/D [68 0 R /XYZ 85.0 569.228 null]
+/D [90 0 R /XYZ 85.0 251.456 null]
>>
endobj
xref
-0 104
+0 134
0000000000 65535 f
-0000034121 00000 n
-0000034250 00000 n
-0000034342 00000 n
+0000039680 00000 n
+0000039816 00000 n
+0000039908 00000 n
0000000015 00000 n
0000000071 00000 n
-0000001079 00000 n
-0000001199 00000 n
-0000001294 00000 n
-0000034491 00000 n
-0000001429 00000 n
-0000034554 00000 n
-0000001564 00000 n
-0000034620 00000 n
-0000001701 00000 n
-0000034686 00000 n
-0000001838 00000 n
-0000034750 00000 n
-0000001975 00000 n
-0000034816 00000 n
-0000002112 00000 n
-0000034882 00000 n
-0000002249 00000 n
-0000034946 00000 n
-0000002386 00000 n
-0000035010 00000 n
-0000002522 00000 n
-0000035076 00000 n
-0000002659 00000 n
-0000035142 00000 n
-0000002796 00000 n
-0000005320 00000 n
-0000005443 00000 n
-0000005484 00000 n
-0000005619 00000 n
-0000005756 00000 n
-0000005893 00000 n
-0000008167 00000 n
-0000008290 00000 n
-0000008317 00000 n
-0000008450 00000 n
-0000011348 00000 n
-0000011471 00000 n
-0000011561 00000 n
-0000011760 00000 n
-0000011956 00000 n
-0000012131 00000 n
-0000012318 00000 n
-0000012494 00000 n
-0000012631 00000 n
-0000012768 00000 n
-0000012904 00000 n
-0000013041 00000 n
-0000013178 00000 n
-0000015653 00000 n
-0000015761 00000 n
-0000017881 00000 n
-0000017989 00000 n
-0000020315 00000 n
-0000020438 00000 n
-0000020472 00000 n
-0000035206 00000 n
-0000020607 00000 n
-0000020744 00000 n
-0000022747 00000 n
-0000022855 00000 n
-0000025143 00000 n
-0000025251 00000 n
-0000027539 00000 n
-0000027647 00000 n
-0000028997 00000 n
-0000035265 00000 n
-0000029105 00000 n
-0000029296 00000 n
-0000029511 00000 n
-0000029802 00000 n
-0000030098 00000 n
-0000030315 00000 n
-0000035316 00000 n
-0000030600 00000 n
-0000035381 00000 n
-0000030837 00000 n
-0000035446 00000 n
-0000031094 00000 n
-0000035510 00000 n
-0000031309 00000 n
-0000031504 00000 n
-0000031860 00000 n
-0000032036 00000 n
-0000035575 00000 n
-0000032310 00000 n
-0000035641 00000 n
-0000032528 00000 n
-0000035705 00000 n
-0000032754 00000 n
-0000032955 00000 n
-0000033159 00000 n
-0000033344 00000 n
-0000033457 00000 n
-0000033567 00000 n
-0000033678 00000 n
-0000033787 00000 n
-0000033894 00000 n
-0000034011 00000 n
+0000001318 00000 n
+0000001438 00000 n
+0000001575 00000 n
+0000040060 00000 n
+0000001710 00000 n
+0000040123 00000 n
+0000001845 00000 n
+0000040189 00000 n
+0000001982 00000 n
+0000040255 00000 n
+0000002119 00000 n
+0000040319 00000 n
+0000002256 00000 n
+0000040385 00000 n
+0000002393 00000 n
+0000040451 00000 n
+0000002530 00000 n
+0000040516 00000 n
+0000002667 00000 n
+0000040580 00000 n
+0000002804 00000 n
+0000040646 00000 n
+0000002941 00000 n
+0000040712 00000 n
+0000003078 00000 n
+0000040778 00000 n
+0000003215 00000 n
+0000040844 00000 n
+0000003352 00000 n
+0000040910 00000 n
+0000003488 00000 n
+0000040974 00000 n
+0000003624 00000 n
+0000041040 00000 n
+0000003761 00000 n
+0000041104 00000 n
+0000003898 00000 n
+0000006542 00000 n
+0000006665 00000 n
+0000006713 00000 n
+0000006848 00000 n
+0000006985 00000 n
+0000007122 00000 n
+0000007318 00000 n
+0000009603 00000 n
+0000009726 00000 n
+0000009760 00000 n
+0000009956 00000 n
+0000010089 00000 n
+0000013028 00000 n
+0000013151 00000 n
+0000013290 00000 n
+0000013489 00000 n
+0000013683 00000 n
+0000013858 00000 n
+0000014045 00000 n
+0000014220 00000 n
+0000014357 00000 n
+0000014494 00000 n
+0000014631 00000 n
+0000014768 00000 n
+0000014905 00000 n
+0000015042 00000 n
+0000015179 00000 n
+0000015316 00000 n
+0000015452 00000 n
+0000015588 00000 n
+0000015725 00000 n
+0000015862 00000 n
+0000017706 00000 n
+0000017814 00000 n
+0000020098 00000 n
+0000020206 00000 n
+0000022219 00000 n
+0000022342 00000 n
+0000022369 00000 n
+0000041170 00000 n
+0000022508 00000 n
+0000024948 00000 n
+0000025071 00000 n
+0000025098 00000 n
+0000025235 00000 n
+0000027375 00000 n
+0000027483 00000 n
+0000029903 00000 n
+0000030011 00000 n
+0000032431 00000 n
+0000032539 00000 n
+0000032948 00000 n
+0000041229 00000 n
+0000033056 00000 n
+0000033248 00000 n
+0000033463 00000 n
+0000033754 00000 n
+0000034050 00000 n
+0000034270 00000 n
+0000034564 00000 n
+0000034756 00000 n
+0000035199 00000 n
+0000035397 00000 n
+0000035577 00000 n
+0000035739 00000 n
+0000035949 00000 n
+0000041281 00000 n
+0000036254 00000 n
+0000041348 00000 n
+0000036495 00000 n
+0000041413 00000 n
+0000036757 00000 n
+0000041478 00000 n
+0000036977 00000 n
+0000037176 00000 n
+0000037536 00000 n
+0000041544 00000 n
+0000037821 00000 n
+0000041609 00000 n
+0000038048 00000 n
+0000041676 00000 n
+0000038284 00000 n
+0000038494 00000 n
+0000038707 00000 n
+0000038900 00000 n
+0000039014 00000 n
+0000039125 00000 n
+0000039237 00000 n
+0000039346 00000 n
+0000039453 00000 n
+0000039570 00000 n
trailer
<<
-/Size 104
+/Size 134
/Root 2 0 R
/Info 4 0 R
>>
startxref
-35771
+41743
%%EOF
diff --git a/src/docs/src/documentation/content/xdocs/zookeeperAdmin.xml b/src/docs/src/documentation/content/xdocs/zookeeperAdmin.xml
index bf3178c9a..ca25529d5 100644
--- a/src/docs/src/documentation/content/xdocs/zookeeperAdmin.xml
+++ b/src/docs/src/documentation/content/xdocs/zookeeperAdmin.xml
@@ -14,7 +14,6 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
<!DOCTYPE article PUBLIC "-//OASIS//DTD Simplified DocBook XML V1.0//EN"
"http://www.oasis-open.org/docbook/xml/simple/1.0/sdocbook.dtd">
<article id="bk_Admin">
@@ -40,8 +39,6 @@
<para>This document contains information about deploying, administering
and mantaining ZooKeeper. It also discusses best practices and common
problems.</para>
-
- <para>$Revision: 1.7 $ $Date: 2008/09/19 05:29:31 $</para>
</abstract>
</articleinfo>
@@ -53,32 +50,32 @@
<itemizedlist>
<listitem>
- <para><xref linkend="sc_systemReq"/></para>
+ <para><xref linkend="sc_systemReq" /></para>
</listitem>
<listitem>
- <para><xref linkend="sc_zkMulitServerSetup"/></para>
+ <para><xref linkend="sc_zkMulitServerSetup" /></para>
</listitem>
<listitem>
- <para><xref linkend="sc_singleAndDevSetup"/></para>
+ <para><xref linkend="sc_singleAndDevSetup" /></para>
</listitem>
</itemizedlist>
<para>The first two sections assume you are interested in installing
- Zookeeper in a production environment such as a datacenter. The final
- section covers situations in which you are setting up Zookeeper on a
+ ZooKeeper in a production environment such as a datacenter. The final
+ section covers situations in which you are setting up ZooKeeper on a
limited basis - for evaluation, testing, or development - but not in a
production environment.</para>
<section id="sc_systemReq">
<title>System Requirements</title>
- <para>Zookeeper runs in Java, release 1.5 or greater, as group of hosts
- called a quorum. Three Zookeeper hosts per quorum is the minimum
- recommended quorum size. At Yahoo!, Zookeeper is usually deployed on
- dedicated RHEL boxes, with dual-core processors, 2GB of RAM, and 80GB
- IDE harddrives.</para>
+ <para>ZooKeeper runs in Java, release 1.5 or greater (JDK 5 or greater).
+ It runs as group of hosts called a quorum. Three ZooKeeper hosts per
+ quorum is the minimum recommended quorum size. At Yahoo!, ZooKeeper is
+ usually deployed on dedicated RHEL boxes, with dual-core processors, 2GB
+ of RAM, and 80GB IDE harddrives.</para>
</section>
<section id="sc_zkMulitServerSetup">
@@ -99,23 +96,32 @@
<orderedlist>
<listitem>
- <para>Install the Java JDK:</para>
+ <para>Install the Java JDK. You can use the native packaging system
+ for your system, or download the JDK from:</para>
- <para><computeroutput>$yinst -i jdk-1.6.0.00_3 -br test </computeroutput></para>
+ <para><ulink
+ url="http://java.sun.com/javase/downloads/index.jsp">http://java.sun.com/javase/downloads/index.jsp</ulink></para>
</listitem>
<listitem>
- <para>Set the Java heap size. This is very important, to avoid
- swapping, which will seriously degrade Zookeeper performance. To
- determine the correct value, load tests, make sure you are well
- below the usage limit that would cause you to swap. Be conservative
- - use a maximum heap size of 3GB for a 4GB machine.</para>
+ <para>Set the Java heap size. This is very important to avoid
+ swapping, which will seriously degrade ZooKeeper performance. To
+ determine the correct value, use load tests, and make sure you are
+ well below the usage limit that would cause you to swap. Be
+ conservative - use a maximum heap size of 3GB for a 4GB
+ machine.</para>
</listitem>
<listitem>
- <para>Install the Zookeeper Server Package:</para>
-
- <para><computeroutput>$ yinst install -nostart zookeeper_server </computeroutput></para>
+ <para>Install the ZooKeeper Server Package. It can be downloaded
+ from:
+ </para>
+
+ <para>
+ <ulink url="http://hadoop.apache.org/zookeeper/releases.html">
+ http://hadoop.apache.org/zookeeper/releases.html
+ </ulink>
+ </para>
</listitem>
<listitem>
@@ -154,7 +160,7 @@ server.3=zoo3:2888</computeroutput></para>
<listitem>
<para>If your configuration file is set up, you can start
- Zookeeper:</para>
+ ZooKeeper:</para>
<para><computeroutput>$ java -cp zookeeper-dev.jar:java/lib/log4j-1.2.15.jar:conf \
org.apache.zookeeper.server.quorum.QuorumPeerMain zoo.cfg</computeroutput></para>
@@ -175,7 +181,7 @@ server.3=zoo3:2888</computeroutput></para>
<listitem>
<para>In C, you can compile either the single threaded client or
the multithreaded client: or n the c subdirectory in the
- Zookeeper sources. This compiles the single threaded
+ ZooKeeper sources. This compiles the single threaded
client:</para>
<para><computeroutput>$ _make cli_st_</computeroutput></para>
@@ -187,8 +193,8 @@ server.3=zoo3:2888</computeroutput></para>
</itemizedlist>
<para>Running either program gives you a shell in which to execute
- simple file-system-like operations. To connect to Zookeeper with the multithreaded
- client, for example, you would run:</para>
+ simple file-system-like operations. To connect to ZooKeeper with the
+ multithreaded client, for example, you would run:</para>
<para><computeroutput>$ cli_mt 127.0.0.1:2181</computeroutput></para>
</listitem>
@@ -198,24 +204,22 @@ server.3=zoo3:2888</computeroutput></para>
<section id="sc_singleAndDevSetup">
<title>Single Server and Developer Setup</title>
- <para>If you want to setup Zookeeper for development purposes, you will
- probably want to setup a single server instance of Zookeeper, and then
+ <para>If you want to setup ZooKeeper for development purposes, you will
+ probably want to setup a single server instance of ZooKeeper, and then
install either the Java or C client-side libraries and bindings on your
development machine.</para>
<para>The steps to setting up a single server instance are the similar
to the above, except the configuration file is simpler. You can find the
complete instructions in the <ulink
- url="zookeeperStarted.html#sc_InstallingSingleMode">Installing
- and Running Zookeeper in SIngle Server Mode</ulink> section of the
- <ulink url="zookeeperStarted.html">Zookeeper
- Getting Started Guide</ulink>.</para>
+ url="zookeeperStarted.html#sc_InstallingSingleMode">Installing and
+ Running ZooKeeper in Single Server Mode</ulink> section of the <ulink
+ url="zookeeperStarted.html">ZooKeeper Getting Started
+ Guide</ulink>.</para>
<para>For information on installing the client side libraries, refer to
- the <ulink
- url="zookeeperProgrammers.html#Bindings">Bindings</ulink>
- section of the <ulink
- url="zookeeperProgrammers.html">Zookeeper
+ the <ulink url="zookeeperProgrammers.html#Bindings">Bindings</ulink>
+ section of the <ulink url="zookeeperProgrammers.html">ZooKeeper
Programmer's Guide</ulink>.</para>
</section>
</section>
@@ -227,428 +231,480 @@ server.3=zoo3:2888</computeroutput></para>
ZooKeeper and covers these topics: </para>
<itemizedlist>
<listitem>
- <para><xref linkend="sc_configuration"/></para>
+ <para><xref linkend="sc_designing" /></para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="sc_provisioning" /></para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="sc_strengthsAndLimitations" /></para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="sc_administering" /></para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="sc_monitoring" /></para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="sc_logging" /></para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="sc_troubleshooting" /></para>
+ </listitem>
+
+ <listitem>
+ <para><xref linkend="sc_configuration" /></para>
</listitem>
<listitem>
- <para><xref linkend="sc_zkCommands"/></para>
+ <para><xref linkend="sc_zkCommands" /></para>
</listitem>
<listitem>
- <para><xref linkend="sc_dataFileManagement"/></para>
+ <para><xref linkend="sc_dataFileManagement" /></para>
</listitem>
<listitem>
- <para><xref linkend="sc_commonProblems"/></para>
+ <para><xref linkend="sc_commonProblems" /></para>
</listitem>
<listitem>
- <para><xref linkend="sc_bestPractices"/></para>
+ <para><xref linkend="sc_bestPractices" /></para>
</listitem>
</itemizedlist>
+ <section id="sc_designing">
+ <title>Designing a ZooKeeper Deployment</title>
+
+ <para></para>
+ </section>
+
+ <section id="sc_provisioning">
+ <title>Provisioning</title>
+
+ <para></para>
+ </section>
+
+ <section id="sc_strengthsAndLimitations">
+ <title>Things to Consider: ZooKeeper Strengths and Limitations</title>
+
+ <para></para>
+ </section>
+
+ <section id="sc_administering">
+ <title>Administering</title>
+
+ <para></para>
+ </section>
+
+ <section id="sc_monitoring">
+ <title>Monitoring</title>
+
+ <para></para>
+ </section>
+
+ <section id="sc_logging">
+ <title>Logging</title>
+
+ <para></para>
+ </section>
+
+ <section id="sc_troubleshooting">
+ <title>Troubleshooting</title>
+
+ <para></para>
+ </section>
+
+ <section id="sc_configuration">
+ <title>Configuration Parameters</title>
+
+ <para>ZooKeeper's behavior is governed by the ZooKeeper configuration
+ file. This file is designed so that the exact same file can be used by
+ all the servers that make up a ZooKeeper server assuming the disk
+ layouts are the same. If servers use different configuration files, care
+ must be taken to ensure that the list of servers in all of the different
+ configuration files match.</para>
+
+ <section id="sc_minimumConfiguration">
+ <title>Minimum Configuration</title>
+
+ <para>Here are the minimum configuration keywords that must be defined
+ in the configuration file:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>clientPort</term>
+
+ <listitem>
+ <para>the port to listen for client connections; that is, the
+ port that clients attempt to connect to.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>dataDir</term>
+
+ <listitem>
+ <para>the location where ZooKeeper will store the in-memory
+ database snapshots and, unless specified otherwise, the
+ transaction log of updates to the database.</para>
+
+ <note>
+ <para>Be careful where you put the transaction log. A
+ dedicated transaction log device is key to consistent good
+ performance. Putting the log on a busy device will adversely
+ effect performance.</para>
+ </note>
+ </listitem>
+ </varlistentry>
- <section id="sc_configuration">
- <title>Configuration Parameters</title>
-
- <para>ZooKeeper's behavior is governed by the ZooKeeper configuration
- file. This file is designed so that the exact same file can be used by
- all the servers that make up a ZooKeeper server assuming the disk
- layouts are the same. If servers use different configuration files,
- care must be taken to ensure that the list of servers in all of the
- different configuration files match.</para>
-
- <section id="sc_minimumConfiguration">
- <title>Minimum Configuration</title>
-
- <para>Here are the minimum configuration keywords that must be
- defined in the configuration file:</para>
-
- <variablelist>
-
- <varlistentry>
- <term>clientPort</term>
-
- <listitem>
- <para>the port to listen for client connections; that is, the
- port that clients attempt to connect to.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>dataDir</term>
-
- <listitem>
- <para>the location where Zookeeper will store the in-memory
- database snapshots and, unless specified otherwise, the
- transaction log of updates to the database.</para>
-
- <note>
- <para>Be careful where you put the transaction log. A
- dedicated transaction log device is key to consistent good
- performance. Putting the log on a busy device will adversely
- effect performance.</para>
- </note>
- </listitem>
- </varlistentry>
-
- <varlistentry id="id_tickTime">
- <term>tickTime</term>
-
- <listitem>
- <para>the length of a single tick, which is the basic time
- unit used by ZooKeeper, as measured in milliseconds. It is
- used to regulate heartbeats, and timeouts. For example, the
- minimum session timeout will be two ticks.</para>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </section>
-
- <section id="sc_advancedConfiguration">
- <title>Advanced Configuration</title>
-
- <para>The configuration settings in the section are optional. You
- can use them to further fine tune the behaviour of your Zookeeper
- servers. Some can also be set using Java system properties,
- generally of the form <emphasis>zookeeper.keyword</emphasis>. The
- exact system property, when available, is noted below.</para>
-
- <variablelist>
-
- <varlistentry>
- <term>dataLogDir</term>
-
- <listitem>
- <para>(No Java system property)</para>
-
- <para>This option will direct the machine to write the
- transaction log to the <emphasis
- role="bold">dataLogDir</emphasis> rather than the <emphasis
- role="bold">dataDir</emphasis>. This allows a dedicated log
- device to be used, and helps avoid competition between logging
- and snaphots.</para>
-
- <note>
- <para>Having a dedicated log device has a large impact on
- throughput and stable latencies. It is highly recommened to
- dedicate a log device and set <emphasis
- role="bold">dataLogDir</emphasis> to point to a directory on
- that device, and then make sure to point <emphasis
- role="bold">dataDir</emphasis> to a directory
- <emphasis>not</emphasis> residing on that device.</para>
- </note>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>globalOutstandingLimit</term>
-
- <listitem>
- <para>(Java system property: <emphasis
- role="bold">zookeeper.globalOutstandingLimit.</emphasis>)</para>
-
- <para>Clients can submit requests faster than ZooKeeper can
- process them, especially if there are a lot of clients. To
- prevent ZooKeeper from running out of memory due to queued
- requests, ZooKeeper will throttle clients so that there is no
- more than globalOutstandingLimit outstanding requests in the
- system. The default limit is 1,000.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>preAllocSize</term>
-
- <listitem>
- <para>(Java system property: <emphasis
- role="bold">zookeeper.preAllocSize</emphasis>)</para>
-
- <para>To avoid seeks ZooKeeper allocates space in the
- transaction log file in blocks of preAllocSize kilobytes. The
- default block size is 64M. One reason for changing the size of
- the blocks is to reduce the block size if snapshots are taken
- more often. (Also, see <emphasis
- role="bold">snapCount</emphasis>).</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>snapCount</term>
-
- <listitem>
- <para>(Java system property: <emphasis
- role="bold">zookeeper.snapCount</emphasis>)</para>
-
- <para>Clients can submit requests faster than ZooKeeper can
- process them, especially if there are a lot of clients. To
- prevent ZooKeeper from running out of memory due to queued
- requests, ZooKeeper will throttle clients so that there is no
- more than globalOutstandingLimit outstanding requests in the
- system. The default limit is 1,000.ZooKeeper logs transactions
- to a transaction log. After snapCount transactions are written
- to a log file a snapshot is started and a new transaction log
- file is started. The default snapCount is 10,000.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>traceFile</term>
-
- <listitem>
- <para>(Java system property: <emphasis
- role="bold">requestTraceFile</emphasis>)</para>
-
- <para>If this option is defined, requests will be will logged
- to a trace file named traceFile.year.month.day. Use of this
- option provides useful debugging information, but will impact
- performance. (Note: The system property has no zookeeper
- prefix, and the configuration variable name is different from
- the system property. Yes - it's not consistent, and it's
- annoying.)</para>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </section>
-
- <section id="sc_clusterOptions">
- <title>Cluster Options</title>
-
- <para>The options in this section are designed for use in quorums --
- that is, when deploying clusters of servers.</para>
-
- <variablelist>
- <varlistentry>
- <term>electionAlg:</term>
-
- <listitem>
- <para>(No Java system property)</para>
-
- <para>Election implementation to use. A value of "0"
- corresponds to the original UDP-based version, "1" corresponds
- to the non-authenticated UDP-based version of fast leader
- election, "2" corresponds to the authenticated UDP-based
- version of fast leader election, and "3" corresponds to
- TCP-based version of fast leader election</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>electionPort</term>
-
- <listitem>
- <para>(No Java system property)</para>
-
- <para>Port used for leader election. It is only used when the
- election algorithm is not "0". When the election algorithm is
- "0" a UDP port with the same port number as the port listed in
- the <emphasis role="bold">server.num</emphasis> option will be
- used.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>initLimit</term>
-
- <listitem>
- <para>(No Java system property)</para>
-
- <para>Amount of time, in ticks (see <ulink
- url="#id_tickTime">tickTime</ulink>), to allow followers to
- connect and sync to a leader. Increased this value as needed,
- if the amount of data managed by ZooKeeper is large.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>leaderServes</term>
-
- <listitem>
- <para>(Java system property: zookeeper.<emphasis
- role="bold">leaderServes</emphasis>)</para>
-
- <para>Leader accepts client connections. Default value is
- "yes". The leader machine coordinates updates. For higher
- update throughput at thes slight expense of read throughput
- the leader can be configured to not accept clients and focus
- on coordination. The default to this option is yes, which
- means that a leader will accept client connections.
- </para>
-
- <note>
- <para>Turning on leader selection is highly recommended when
- you have more than three Zookeeper servers in a
- quorum.</para>
- </note>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>server.x=[hostname]:nnnn, etc</term>
-
- <listitem>
- <para>(No Java system property)</para>
-
- <para>servers making up the Zookeeper quorum. When the server
- starts up, it determines which server it is by looking for the
- file <filename>myid</filename> in the data directory. That file contains the
- server number, in ASCII, and it should match <emphasis
- role="bold">x</emphasis> in <emphasis
- role="bold">server.x</emphasis> in the left hand side of this
- setting.</para>
-
- <para>The list of servers that make up ZooKeeper servers that
- is used by the clients must match the list of ZooKeeper
- servers that each ZooKeeper server has.</para>
-
- <para>The port numbers <emphasis role="bold">nnnn</emphasis>
- in this setting are the <emphasis>electionPort</emphasis>
- numbers of the servers (as opposed to clientPorts).
- If you want to test multiple servers on a single
- machine, the individual choices of electionPort for each
- server can be defined in each server's config files using the
- line electionPort=xxxx to avoid clashes.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>syncLimit</term>
-
- <listitem>
- <para>(No Java system property)</para>
-
- <para>Amount of time, in ticks (see <ulink
- url="#id_tickTime">tickTime</ulink>), to allow followers to
- sync with ZooKeeper. If followers fall too far behind a
- leader, they will be dropped.</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para></para>
- </section>
-
- <section>
- <title>Unsafe Options</title>
-
- <para>The following options can be useful, but be careful when you
- use them. The risk of each is explained along with the explanation
- of what the variable does.</para>
-
- <variablelist>
-
- <varlistentry>
- <term>forceSync</term>
-
- <listitem>
- <para>(Java system property: <emphasis
- role="bold">zookeeper.forceSync</emphasis>)</para>
-
- <para>Requires updates to be synced to media of the
- transaction log before finishing processing the update. If
- this option is set to no, ZooKeeper will not require updates
- to be synced to the media.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>jute.maxbuffer:</term>
-
- <listitem>
- <para>(Java system property:<emphasis role="bold">
- jute.maxbuffer</emphasis>)</para>
-
- <para>This option can only be set as a Java system property.
- There is no zookeeper prefix on it. It specifies the maximum
- size of the data that can be stored in a znode. The default is
- 0xfffff, or just under 1M. If this option is changed, the
- system property must be set on all servers and clients
- otherwise problems will arise. This is really a sanity check.
- ZooKeeper is designed to store data on the order of kilobytes
- in size.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>skipACL</term>
-
- <listitem>
- <para>(Java system property: <emphasis
- role="bold">zookeeper.skipACL</emphasis>)</para>
-
- <para>Skips ACL checks.
- This results in a boost in throughput, but opens up full
- access to the data tree to everyone.</para>
- </listitem>
- </varlistentry>
-
-
- </variablelist>
- </section>
+ <varlistentry id="id_tickTime">
+ <term>tickTime</term>
+
+ <listitem>
+ <para>the length of a single tick, which is the basic time unit
+ used by ZooKeeper, as measured in milliseconds. It is used to
+ regulate heartbeats, and timeouts. For example, the minimum
+ session timeout will be two ticks.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</section>
- <section id="sc_zkCommands">
- <title>Zookeeper Commands: The Four Letter Words</title>
+ <section id="sc_advancedConfiguration">
+ <title>Advanced Configuration</title>
- <para>Zookeeper responds to a small set of commands. Each command is composed of
- four letters. You issue the commands to Zookeeper via telnet or nc, at
- the client port.</para>
+ <para>The configuration settings in the section are optional. You can
+ use them to further fine tune the behaviour of your ZooKeeper servers.
+ Some can also be set using Java system properties, generally of the
+ form <emphasis>zookeeper.keyword</emphasis>. The exact system
+ property, when available, is noted below.</para>
<variablelist>
-
- <varlistentry>
- <term>dump</term>
+ <varlistentry>
+ <term>dataLogDir</term>
<listitem>
- <para>Lists the outstanding sessions and ephemeral nodes. This
- only works on the leader.</para>
+ <para>(No Java system property)</para>
+
+ <para>This option will direct the machine to write the
+ transaction log to the <emphasis
+ role="bold">dataLogDir</emphasis> rather than the <emphasis
+ role="bold">dataDir</emphasis>. This allows a dedicated log
+ device to be used, and helps avoid competition between logging
+ and snaphots.</para>
+
+ <note>
+ <para>Having a dedicated log device has a large impact on
+ throughput and stable latencies. It is highly recommened to
+ dedicate a log device and set <emphasis
+ role="bold">dataLogDir</emphasis> to point to a directory on
+ that device, and then make sure to point <emphasis
+ role="bold">dataDir</emphasis> to a directory
+ <emphasis>not</emphasis> residing on that device.</para>
+ </note>
</listitem>
</varlistentry>
-
- <varlistentry>
- <term>kill</term>
+
+ <varlistentry>
+ <term>globalOutstandingLimit</term>
<listitem>
- <para>Shuts down the server. This must be issued from the
- machine the Zookeeper server is running on.</para>
+ <para>(Java system property: <emphasis
+ role="bold">zookeeper.globalOutstandingLimit.</emphasis>)</para>
+
+ <para>Clients can submit requests faster than ZooKeeper can
+ process them, especially if there are a lot of clients. To
+ prevent ZooKeeper from running out of memory due to queued
+ requests, ZooKeeper will throttle clients so that there is no
+ more than globalOutstandingLimit outstanding requests in the
+ system. The default limit is 1,000.</para>
</listitem>
</varlistentry>
-
+
<varlistentry>
- <term>ruok</term>
+ <term>preAllocSize</term>
<listitem>
- <para>Tests if server is running in a non-error state. The
- server will respond with imok if it is running. Otherwise it
- will not respond at all.</para>
+ <para>(Java system property: <emphasis
+ role="bold">zookeeper.preAllocSize</emphasis>)</para>
+
+ <para>To avoid seeks ZooKeeper allocates space in the
+ transaction log file in blocks of preAllocSize kilobytes. The
+ default block size is 64M. One reason for changing the size of
+ the blocks is to reduce the block size if snapshots are taken
+ more often. (Also, see <emphasis
+ role="bold">snapCount</emphasis>).</para>
</listitem>
</varlistentry>
<varlistentry>
- <term>stat</term>
+ <term>snapCount</term>
<listitem>
- <para>Lists statistics about performance and connected
- clients.</para>
+ <para>(Java system property: <emphasis
+ role="bold">zookeeper.snapCount</emphasis>)</para>
+
+ <para>Clients can submit requests faster than ZooKeeper can
+ process them, especially if there are a lot of clients. To
+ prevent ZooKeeper from running out of memory due to queued
+ requests, ZooKeeper will throttle clients so that there is no
+ more than globalOutstandingLimit outstanding requests in the
+ system. The default limit is 1,000.ZooKeeper logs transactions
+ to a transaction log. After snapCount transactions are written
+ to a log file a snapshot is started and a new transaction log
+ file is started. The default snapCount is 10,000.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>traceFile</term>
+
+ <listitem>
+ <para>(Java system property: <emphasis
+ role="bold">requestTraceFile</emphasis>)</para>
+
+ <para>If this option is defined, requests will be will logged to
+ a trace file named traceFile.year.month.day. Use of this option
+ provides useful debugging information, but will impact
+ performance. (Note: The system property has no zookeeper prefix,
+ and the configuration variable name is different from the system
+ property. Yes - it's not consistent, and it's annoying.)</para>
</listitem>
</varlistentry>
</variablelist>
+ </section>
- <para>Here's an example of the <emphasis role="bold">ruok</emphasis>
- command:</para>
+ <section id="sc_clusterOptions">
+ <title>Cluster Options</title>
- <para><computeroutput>$ echo ruok | nc 127.0.0.1 5111
+ <para>The options in this section are designed for use in quorums --
+ that is, when deploying clusters of servers.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>electionAlg</term>
+
+ <listitem>
+ <para>(No Java system property)</para>
+
+ <para>Election implementation to use. A value of "0" corresponds
+ to the original UDP-based version, "1" corresponds to the
+ non-authenticated UDP-based version of fast leader election, "2"
+ corresponds to the authenticated UDP-based version of fast
+ leader election, and "3" corresponds to TCP-based version of
+ fast leader election</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>electionPort</term>
+
+ <listitem>
+ <para>(No Java system property)</para>
-imok</computeroutput>
- </para>
+ <para>Port used for leader election. It is only used when the
+ election algorithm is not "0". When the election algorithm is
+ "0" a UDP port with the same port number as the port listed in
+ the <emphasis role="bold">server.num</emphasis> option will be
+ used.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>initLimit</term>
+
+ <listitem>
+ <para>(No Java system property)</para>
+
+ <para>Amount of time, in ticks (see <ulink
+ url="#id_tickTime">tickTime</ulink>), to allow followers to
+ connect and sync to a leader. Increased this value as needed, if
+ the amount of data managed by ZooKeeper is large.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>leaderServes</term>
+
+ <listitem>
+ <para>(Java system property: zookeeper.<emphasis
+ role="bold">leaderServes</emphasis>)</para>
+
+ <para>Leader accepts client connections. Default value is "yes".
+ The leader machine coordinates updates. For higher update
+ throughput at thes slight expense of read throughput the leader
+ can be configured to not accept clients and focus on
+ coordination. The default to this option is yes, which means
+ that a leader will accept client connections.</para>
+
+ <note>
+ <para>Turning on leader selection is highly recommended when
+ you have more than three ZooKeeper servers in a quorum.</para>
+ </note>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>server.x=[hostname]:nnnn, etc</term>
+
+ <listitem>
+ <para>(No Java system property)</para>
+
+ <para>servers making up the ZooKeeper quorum. When the server
+ starts up, it determines which server it is by looking for the
+ file <filename>myid</filename> in the data directory. That file
+ contains the server number, in ASCII, and it should match
+ <emphasis role="bold">x</emphasis> in <emphasis
+ role="bold">server.x</emphasis> in the left hand side of this
+ setting.</para>
+
+ <para>The list of servers that make up ZooKeeper servers that is
+ used by the clients must match the list of ZooKeeper servers
+ that each ZooKeeper server has.</para>
+
+ <para>The port numbers <emphasis role="bold">nnnn</emphasis> in
+ this setting are the <emphasis>electionPort</emphasis> numbers
+ of the servers (as opposed to clientPorts). If you want to test
+ multiple servers on a single machine, the individual choices of
+ electionPort for each server can be defined in each server's
+ config files using the line electionPort=xxxx to avoid
+ clashes.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>syncLimit</term>
+
+ <listitem>
+ <para>(No Java system property)</para>
+
+ <para>Amount of time, in ticks (see <ulink
+ url="#id_tickTime">tickTime</ulink>), to allow followers to sync
+ with ZooKeeper. If followers fall too far behind a leader, they
+ will be dropped.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para></para>
</section>
- <section id="sc_monitoring">
- <title>Monitoring</title>
- <para><emphasis>[tbd]</emphasis></para>
+ <section>
+ <title>Unsafe Options</title>
+
+ <para>The following options can be useful, but be careful when you use
+ them. The risk of each is explained along with the explanation of what
+ the variable does.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>forceSync</term>
+
+ <listitem>
+ <para>(Java system property: <emphasis
+ role="bold">zookeeper.forceSync</emphasis>)</para>
+
+ <para>Requires updates to be synced to media of the transaction
+ log before finishing processing the update. If this option is
+ set to no, ZooKeeper will not require updates to be synced to
+ the media.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>jute.maxbuffer:</term>
+
+ <listitem>
+ <para>(Java system property:<emphasis role="bold">
+ jute.maxbuffer</emphasis>)</para>
+
+ <para>This option can only be set as a Java system property.
+ There is no zookeeper prefix on it. It specifies the maximum
+ size of the data that can be stored in a znode. The default is
+ 0xfffff, or just under 1M. If this option is changed, the system
+ property must be set on all servers and clients otherwise
+ problems will arise. This is really a sanity check. ZooKeeper is
+ designed to store data on the order of kilobytes in size.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>skipACL</term>
+
+ <listitem>
+ <para>(Java system property: <emphasis
+ role="bold">zookeeper.skipACL</emphasis>)</para>
+
+ <para>Skips ACL checks. This results in a boost in throughput,
+ but opens up full access to the data tree to everyone.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</section>
+ </section>
+
+ <section id="sc_zkCommands">
+ <title>ZooKeeper Commands: The Four Letter Words</title>
+
+ <para>ZooKeeper responds to a small set of commands. Each command is
+ composed of four letters. You issue the commands to ZooKeeper via telnet
+ or nc, at the client port.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>dump</term>
+
+ <listitem>
+ <para>Lists the outstanding sessions and ephemeral nodes. This
+ only works on the leader.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>kill</term>
+
+ <listitem>
+ <para>Shuts down the server. This must be issued from the machine
+ the ZooKeeper server is running on.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>ruok</term>
+
+ <listitem>
+ <para>Tests if server is running in a non-error state. The server
+ will respond with imok if it is running. Otherwise it will not
+ respond at all.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>stat</term>
+
+ <listitem>
+ <para>Lists statistics about performance and connected
+ clients.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Here's an example of the <emphasis role="bold">ruok</emphasis>
+ command:</para>
+
+ <programlisting>$ echo ruok | nc 127.0.0.1 5111
+imok
+</programlisting>
+
+
+ </section>
<section id="sc_dataFileManagement">
<title>Data File Management</title>
@@ -747,7 +803,7 @@ imok</computeroutput>
<term>inconsistent lists of servers</term>
<listitem>
- <para>The list of Zookeeper servers used by the clients must match
+ <para>The list of ZooKeeper servers used by the clients must match
the list of ZooKeeper servers that each ZooKeeper server has.
Things work okay if the client list is a subset of the real list,
but things will really act strange if clients have a list of
@@ -762,7 +818,7 @@ imok</computeroutput>
<listitem>
<para>The most performance critical part of ZooKeeper is the
- transaction log. Zookeeper syncs transactions to media before it
+ transaction log. ZooKeeper syncs transactions to media before it
returns a response. A dedicated transaction log device is key to
consistent good performance. Putting the log on a busy device will
adversely effect performance. If you only have one storage device,
@@ -777,7 +833,7 @@ imok</computeroutput>
<listitem>
<para>You should take special care to set your Java max heap size
correctly. In particular, you should not create a situation in
- which Zookeeper swaps to disk. The disk is death to ZooKeeper.
+ which ZooKeeper swaps to disk. The disk is death to ZooKeeper.
Everything is ordered, so if processing one request swaps the
disk, all other queued requests will probably do the same. the
disk. DON'T SWAP.</para>